]> xenbits.xensource.com Git - www-xenproject-org.git/commitdiff
Initial commit
authorArnaud Guéras <arnaudgs@gmail.com>
Mon, 16 Sep 2024 04:21:08 +0000 (06:21 +0200)
committerArnaud Guéras <arnaudgs@gmail.com>
Mon, 16 Sep 2024 04:21:08 +0000 (06:21 +0200)
423 files changed:
.gitignore [new file with mode: 0644]
.hugo_build.lock [new file with mode: 0644]
.prettierrc [new file with mode: 0644]
.storybook/assets/img/logo.svg [new file with mode: 0644]
.storybook/components/ColorItem/ColorItem.scss [new file with mode: 0644]
.storybook/components/ColorItem/ColorItem.tsx [new file with mode: 0644]
.storybook/components/ColorItem/index.ts [new file with mode: 0644]
.storybook/components/IconItem/IconItem.scss [new file with mode: 0644]
.storybook/components/IconItem/IconItem.tsx [new file with mode: 0644]
.storybook/components/IconItem/index.ts [new file with mode: 0644]
.storybook/components/IconList/IconList.tsx [new file with mode: 0644]
.storybook/components/IconList/index.ts [new file with mode: 0644]
.storybook/components/ImagesGallery/ImageGallery.scss [new file with mode: 0644]
.storybook/components/ImagesGallery/ImageGallery.tsx [new file with mode: 0644]
.storybook/components/ImagesGallery/index.tsx [new file with mode: 0644]
.storybook/components/MarginGallery/MarginGallery.scss [new file with mode: 0644]
.storybook/components/MarginGallery/MarginGallery.stories.tsx [new file with mode: 0644]
.storybook/components/MarginGallery/MarginGallery.tsx [new file with mode: 0644]
.storybook/components/MarginGallery/index.tsx [new file with mode: 0644]
.storybook/components/ShadowItem/ShadowItem.scss [new file with mode: 0644]
.storybook/components/ShadowItem/ShadowItem.tsx [new file with mode: 0644]
.storybook/components/ShadowItem/index.ts [new file with mode: 0644]
.storybook/components/StoryToggle/StoryToggle.scss [new file with mode: 0644]
.storybook/components/StoryToggle/StoryToggle.tsx [new file with mode: 0644]
.storybook/components/StoryToggle/index.tsx [new file with mode: 0644]
.storybook/main.js [new file with mode: 0644]
.storybook/manager.js [new file with mode: 0644]
.storybook/preview.js [new file with mode: 0644]
.storybook/storybook.scss [new file with mode: 0644]
.vscode/settings.json [new file with mode: 0644]
README.md [new file with mode: 0644]
TODO.md [new file with mode: 0644]
archetypes/default.md [new file with mode: 0644]
assets/data/downloads-latest.json [new file with mode: 0644]
assets/data/downloads.json [new file with mode: 0644]
assets/jsconfig.json [new file with mode: 0644]
base-resources/fonts/fonts/Gotham Bold.otf [new file with mode: 0644]
base-resources/fonts/fonts/Gotham Book.otf [new file with mode: 0644]
base-resources/fonts/fonts/Gotham Medium.otf [new file with mode: 0644]
base-resources/fonts/webfontkit-20240704-041112/generator_config.txt [new file with mode: 0755]
base-resources/fonts/webfontkit-20240704-041112/gotham_bold-demo.html [new file with mode: 0755]
base-resources/fonts/webfontkit-20240704-041112/gotham_bold-webfont.woff [new file with mode: 0755]
base-resources/fonts/webfontkit-20240704-041112/gotham_bold-webfont.woff2 [new file with mode: 0755]
base-resources/fonts/webfontkit-20240704-041112/gotham_book-demo.html [new file with mode: 0755]
base-resources/fonts/webfontkit-20240704-041112/gotham_book-webfont.woff [new file with mode: 0755]
base-resources/fonts/webfontkit-20240704-041112/gotham_book-webfont.woff2 [new file with mode: 0755]
base-resources/fonts/webfontkit-20240704-041112/gotham_medium-demo.html [new file with mode: 0755]
base-resources/fonts/webfontkit-20240704-041112/gotham_medium-webfont.woff [new file with mode: 0755]
base-resources/fonts/webfontkit-20240704-041112/gotham_medium-webfont.woff2 [new file with mode: 0755]
base-resources/fonts/webfontkit-20240704-041112/specimen_files/grid_12-825-55-15.css [new file with mode: 0755]
base-resources/fonts/webfontkit-20240704-041112/specimen_files/specimen_stylesheet.css [new file with mode: 0755]
base-resources/fonts/webfontkit-20240704-041112/stylesheet.css [new file with mode: 0755]
base-resources/readme.md [new file with mode: 0644]
content/404.md [new file with mode: 0644]
content/_index.md [new file with mode: 0644]
content/about/_index.md [new file with mode: 0644]
content/about/become-a-member.md [new file with mode: 0644]
content/about/contact-us.md [new file with mode: 0644]
content/about/governance.md [new file with mode: 0644]
content/about/project-members.md [new file with mode: 0644]
content/about/security-policy.md [new file with mode: 0644]
content/contribute/code-of-conduct.md [new file with mode: 0644]
content/contribute/contribution-guidelines.md [new file with mode: 0644]
content/contribute/get-started.md [new file with mode: 0644]
content/more/xen-server-branding.md [new file with mode: 0644]
content/more/xen-summit-2024.md [new file with mode: 0644]
content/projects/_index.md [new file with mode: 0644]
content/projects/all-projects.md [new file with mode: 0644]
content/projects/embedded-and-automative.md [new file with mode: 0644]
content/projects/hvmi.md [new file with mode: 0644]
content/projects/hypervisor.md [new file with mode: 0644]
content/projects/mirage-os.md [new file with mode: 0644]
content/projects/unikraft.md [new file with mode: 0644]
content/projects/windows-pv-drivers.md [new file with mode: 0644]
content/projects/xapi.md [new file with mode: 0644]
content/projects/xcp-ng.md [new file with mode: 0644]
content/resources/downloads.md [new file with mode: 0644]
content/resources/mailing-lists.md [new file with mode: 0644]
content/resources/matrix.md [new file with mode: 0644]
content/resources/use-cases.md [new file with mode: 0644]
hugo.yaml [new file with mode: 0644]
hugo_stats.json [new file with mode: 0644]
package-lock.json [new file with mode: 0644]
package.json [new file with mode: 0644]
scripts/downloads/Provider.class.js [new file with mode: 0644]
scripts/downloads/getLinks.js [new file with mode: 0644]
scripts/downloads/provider-mirageos.js [new file with mode: 0644]
scripts/downloads/provider-windowpvdrivers.js [new file with mode: 0644]
scripts/downloads/provider-xen.js [new file with mode: 0644]
scripts/storybook-tasks.js [new file with mode: 0644]
scripts/storyscripts.config.js [new file with mode: 0644]
scripts/storytasks/storybook-colors.js [new file with mode: 0644]
scripts/storytasks/storybook-images.js [new file with mode: 0644]
static/favicon.ico [new file with mode: 0644]
static/font-awesomepro/brands.css [new file with mode: 0644]
static/font-awesomepro/fa-brands-400.ttf [new file with mode: 0644]
static/font-awesomepro/fa-brands-400.woff2 [new file with mode: 0644]
static/font-awesomepro/fa-light-300.ttf [new file with mode: 0644]
static/font-awesomepro/fa-light-300.woff2 [new file with mode: 0644]
static/font-awesomepro/fa-regular-400.ttf [new file with mode: 0644]
static/font-awesomepro/fa-regular-400.woff2 [new file with mode: 0644]
static/font-awesomepro/fa-solid-900.ttf [new file with mode: 0644]
static/font-awesomepro/fa-solid-900.woff2 [new file with mode: 0644]
static/font-awesomepro/fontawesome.css [new file with mode: 0644]
static/font-awesomepro/regular.css [new file with mode: 0644]
static/font-awesomepro/solid.css [new file with mode: 0644]
static/fonts/gotham_bold-webfont.woff [new file with mode: 0755]
static/fonts/gotham_bold-webfont.woff2 [new file with mode: 0755]
static/fonts/gotham_book-webfont.woff [new file with mode: 0755]
static/fonts/gotham_book-webfont.woff2 [new file with mode: 0755]
static/fonts/gotham_medium-webfont.woff [new file with mode: 0755]
static/fonts/gotham_medium-webfont.woff2 [new file with mode: 0755]
static/img/figures/cloud.png [new file with mode: 0644]
static/img/figures/small-cloud.png [new file with mode: 0644]
static/img/figures/xen-panda-kungfu.png [new file with mode: 0644]
static/img/figures/xen-panda-winged.png [new file with mode: 0644]
static/img/figures/xen-panda-zen.png [new file with mode: 0644]
static/img/flatline/brainstorming-session.svg [new file with mode: 0644]
static/img/flatline/brainstorming.svg [new file with mode: 0644]
static/img/flatline/coding.svg [new file with mode: 0644]
static/img/flatline/coding2.svg [new file with mode: 0644]
static/img/flatline/data-analysis.svg [new file with mode: 0644]
static/img/flatline/data-analyst.svg [new file with mode: 0644]
static/img/flatline/data-center.svg [new file with mode: 0644]
static/img/flatline/data-hosting.svg [new file with mode: 0644]
static/img/flatline/data-process-with-xen-logo.svg [new file with mode: 0644]
static/img/flatline/data-process.svg [new file with mode: 0644]
static/img/flatline/data-process2.svg [new file with mode: 0644]
static/img/flatline/data_and_settings.svg [new file with mode: 0644]
static/img/flatline/error-404.svg [new file with mode: 0644]
static/img/flatline/handshake.svg [new file with mode: 0644]
static/img/flatline/java.svg [new file with mode: 0644]
static/img/flatline/laptop-cybersecurity.svg [new file with mode: 0644]
static/img/flatline/new-message.svg [new file with mode: 0644]
static/img/flatline/security.svg [new file with mode: 0644]
static/img/flatline/start-up.svg [new file with mode: 0644]
static/img/flatline/team-meeting.svg [new file with mode: 0644]
static/img/flatline/team-work.svg [new file with mode: 0644]
static/img/flatline/timeline.svg [new file with mode: 0644]
static/img/logo-xen.svg [new file with mode: 0644]
static/img/logos/amd-logo.svg [new file with mode: 0644]
static/img/logos/arm-logo.svg [new file with mode: 0644]
static/img/logos/aws-logo.svg [new file with mode: 0644]
static/img/logos/epam-logo.svg [new file with mode: 0644]
static/img/logos/logo-linux-foundation.svg [new file with mode: 0644]
static/img/logos/vates-logo.svg [new file with mode: 0644]
static/img/logos/xenserver-logo.svg [new file with mode: 0644]
static/img/others/governance-xen_projectstages.webp [new file with mode: 0644]
static/img/others/unikraft-architecture.png [new file with mode: 0644]
static/img/others/xcp-ng-badge.webp [new file with mode: 0644]
static/img/others/xcp-ng.png [new file with mode: 0644]
static/img/others/xen-progress-certification.png [new file with mode: 0644]
static/img/others/xen-team-photo-1.png [new file with mode: 0644]
static/img/others/xen-team-photo-2.png [new file with mode: 0644]
static/img/photos/xen-project-2023-group-photo.png [new file with mode: 0644]
static/tmp/news.json [new file with mode: 0644]
stories/Configure.mdx [new file with mode: 0644]
stories/assets/accessibility.png [new file with mode: 0644]
stories/assets/accessibility.svg [new file with mode: 0644]
stories/assets/addon-library.png [new file with mode: 0644]
stories/assets/assets.png [new file with mode: 0644]
stories/assets/avif-test-image.avif [new file with mode: 0644]
stories/assets/context.png [new file with mode: 0644]
stories/assets/discord.svg [new file with mode: 0644]
stories/assets/docs.png [new file with mode: 0644]
stories/assets/figma-plugin.png [new file with mode: 0644]
stories/assets/github.svg [new file with mode: 0644]
stories/assets/share.png [new file with mode: 0644]
stories/assets/styling.png [new file with mode: 0644]
stories/assets/testing.png [new file with mode: 0644]
stories/assets/theming.png [new file with mode: 0644]
stories/assets/tutorials.svg [new file with mode: 0644]
stories/assets/youtube.svg [new file with mode: 0644]
stories/atoms/Colors.mdx [new file with mode: 0644]
stories/atoms/Images.mdx [new file with mode: 0644]
stories/atoms/Spacings.mdx [new file with mode: 0644]
stories/atoms/Typography.mdx [new file with mode: 0644]
stories/json/colors.json [new file with mode: 0644]
stories/json/images.json [new file with mode: 0644]
stories/molecules/Anchor.stories.js [new file with mode: 0644]
stories/molecules/Button.stories.js [new file with mode: 0644]
stories/molecules/ConversationCard.stories.js [new file with mode: 0644]
stories/molecules/ProjectCard.stories.js [new file with mode: 0644]
stories/molecules/Resources.stories.js [new file with mode: 0644]
tests/.gitignore [new file with mode: 0644]
tests/backstop.json [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_404_Page_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_404_Page_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_About_-_Become_a_Member_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_About_-_Become_a_Member_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_About_-_Contact_Us_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_About_-_Contact_Us_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_About_-_Governance_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_About_-_Governance_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_About_-_Security_Policy_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_About_-_Security_Policy_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_About_-_Xen_Project_Members_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_About_-_Xen_Project_Members_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_About_Xen_Project_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_About_Xen_Project_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Code_of_Conduct_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Code_of_Conduct_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Contribution_Guidelines_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Contribution_Guidelines_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Get_Started_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Get_Started_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Home_Page_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Home_Page_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Server_Branding_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Server_Branding_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Summit_2024_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Summit_2024_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_All_Projects_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_All_Projects_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Embedded_and_Automative_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Embedded_and_Automative_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_HVMI_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_HVMI_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Hypervisor_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Hypervisor_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Mirage_OS_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Mirage_OS_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Unikraft_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Unikraft_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Windows_PV_Drivers_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Windows_PV_Drivers_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XAPI_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XAPI_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XCP-ng_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XCP-ng_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Downloads_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Downloads_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Mailing_Lists_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Mailing_Lists_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Matrix_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Matrix_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Use_Cases_0_document_0_desktop.png [new file with mode: 0644]
tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Use_Cases_0_document_1_phone.png [new file with mode: 0644]
tests/backstop_data/engine_scripts/cookies.json [new file with mode: 0644]
tests/backstop_data/engine_scripts/imageStub.jpg [new file with mode: 0644]
tests/backstop_data/engine_scripts/playwright/clickAndHoverHelper.js [new file with mode: 0644]
tests/backstop_data/engine_scripts/playwright/interceptImages.js [new file with mode: 0644]
tests/backstop_data/engine_scripts/playwright/loadCookies.js [new file with mode: 0644]
tests/backstop_data/engine_scripts/playwright/onBefore.js [new file with mode: 0644]
tests/backstop_data/engine_scripts/playwright/onReady.js [new file with mode: 0644]
tests/backstop_data/engine_scripts/playwright/overrideCSS.js [new file with mode: 0644]
tests/backstop_data/engine_scripts/puppet/clickAndHoverHelper.js [new file with mode: 0644]
tests/backstop_data/engine_scripts/puppet/ignoreCSP.js [new file with mode: 0644]
tests/backstop_data/engine_scripts/puppet/interceptImages.js [new file with mode: 0644]
tests/backstop_data/engine_scripts/puppet/loadCookies.js [new file with mode: 0644]
tests/backstop_data/engine_scripts/puppet/onBefore.js [new file with mode: 0644]
tests/backstop_data/engine_scripts/puppet/onReady.js [new file with mode: 0644]
tests/backstop_data/engine_scripts/puppet/overrideCSS.js [new file with mode: 0644]
tests/package-lock.json [new file with mode: 0644]
tests/package.json [new file with mode: 0644]
tests/report.js [new file with mode: 0644]
tests/report/Xen-project 404 Page 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project 404 Page desktop.webp [new file with mode: 0644]
tests/report/Xen-project About - Become a Member 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project About - Become a Member desktop.webp [new file with mode: 0644]
tests/report/Xen-project About - Contact Us 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project About - Contact Us desktop.webp [new file with mode: 0644]
tests/report/Xen-project About - Governance 0 document 1 phone.jpg [new file with mode: 0644]
tests/report/Xen-project About - Governance desktop.jpg [new file with mode: 0644]
tests/report/Xen-project About - Security Policy 0 document 1 phone.jpg [new file with mode: 0644]
tests/report/Xen-project About - Security Policy desktop.webp [new file with mode: 0644]
tests/report/Xen-project About - Xen Project Members 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project About - Xen Project Members desktop.webp [new file with mode: 0644]
tests/report/Xen-project About Xen Project 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project About Xen Project desktop.webp [new file with mode: 0644]
tests/report/Xen-project Contribute - Code of Conduct 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Contribute - Code of Conduct desktop.webp [new file with mode: 0644]
tests/report/Xen-project Contribute - Contribution Guidelines 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Contribute - Contribution Guidelines desktop.webp [new file with mode: 0644]
tests/report/Xen-project Contribute - Get Started 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Contribute - Get Started desktop.webp [new file with mode: 0644]
tests/report/Xen-project Home Page 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Home Page desktop.webp [new file with mode: 0644]
tests/report/Xen-project More - Xen Server Branding 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project More - Xen Server Branding desktop.webp [new file with mode: 0644]
tests/report/Xen-project More - Xen Summit 2024 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project More - Xen Summit 2024 desktop.webp [new file with mode: 0644]
tests/report/Xen-project Projects - All Projects 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Projects - All Projects desktop.webp [new file with mode: 0644]
tests/report/Xen-project Projects - Embedded and Automative 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Projects - Embedded and Automative desktop.webp [new file with mode: 0644]
tests/report/Xen-project Projects - HVMI 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Projects - HVMI desktop.webp [new file with mode: 0644]
tests/report/Xen-project Projects - Hypervisor 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Projects - Hypervisor desktop.webp [new file with mode: 0644]
tests/report/Xen-project Projects - Mirage OS 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Projects - Mirage OS desktop.webp [new file with mode: 0644]
tests/report/Xen-project Projects - Unikraft 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Projects - Unikraft desktop.webp [new file with mode: 0644]
tests/report/Xen-project Projects - Windows PV Drivers 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Projects - Windows PV Drivers desktop.webp [new file with mode: 0644]
tests/report/Xen-project Projects - XAPI 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Projects - XAPI desktop.webp [new file with mode: 0644]
tests/report/Xen-project Projects - XCP-ng 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Projects - XCP-ng desktop.webp [new file with mode: 0644]
tests/report/Xen-project Resources - Downloads 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Resources - Downloads desktop.webp [new file with mode: 0644]
tests/report/Xen-project Resources - Mailing Lists 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Resources - Mailing Lists desktop.webp [new file with mode: 0644]
tests/report/Xen-project Resources - Matrix 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Resources - Matrix desktop.webp [new file with mode: 0644]
tests/report/Xen-project Resources - Use Cases 0 document 1 phone.webp [new file with mode: 0644]
tests/report/Xen-project Resources - Use Cases desktop.webp [new file with mode: 0644]
tests/report/differential_report.txt [new file with mode: 0644]
themes/xen-project/LICENSE [new file with mode: 0644]
themes/xen-project/README.md [new file with mode: 0644]
themes/xen-project/assets/css/backgrounds.scss [new file with mode: 0644]
themes/xen-project/assets/css/base.scss [new file with mode: 0644]
themes/xen-project/assets/css/colors.scss [new file with mode: 0644]
themes/xen-project/assets/css/components/box-members.scss [new file with mode: 0644]
themes/xen-project/assets/css/components/box-resources.scss [new file with mode: 0644]
themes/xen-project/assets/css/components/carousel.scss [new file with mode: 0644]
themes/xen-project/assets/css/components/images-in-circle.scss [new file with mode: 0644]
themes/xen-project/assets/css/components/news-card.scss [new file with mode: 0644]
themes/xen-project/assets/css/components/news-container.scss [new file with mode: 0644]
themes/xen-project/assets/css/content-markdown.scss [new file with mode: 0644]
themes/xen-project/assets/css/fonts.scss [new file with mode: 0644]
themes/xen-project/assets/css/footer.scss [new file with mode: 0644]
themes/xen-project/assets/css/grid.scss [new file with mode: 0644]
themes/xen-project/assets/css/header-mobile.scss [new file with mode: 0644]
themes/xen-project/assets/css/header.scss [new file with mode: 0644]
themes/xen-project/assets/css/layout/aside.scss [new file with mode: 0644]
themes/xen-project/assets/css/layout/page-404.scss [new file with mode: 0644]
themes/xen-project/assets/css/layout/page-single-aside.scss [new file with mode: 0644]
themes/xen-project/assets/css/lists.scss [new file with mode: 0644]
themes/xen-project/assets/css/main.scss [new file with mode: 0644]
themes/xen-project/assets/css/mediaqueries.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/anchor.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/buttons.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/center.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/conversation-card.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/discover-link.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/features-list.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/full-width-image.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/hero-block.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/list-pages.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/media-block.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/project-card.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/slideshare-container.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/vertical-lists.scss [new file with mode: 0644]
themes/xen-project/assets/css/molecules/video-container.scss [new file with mode: 0644]
themes/xen-project/assets/css/socials.scss [new file with mode: 0644]
themes/xen-project/assets/css/spaces.scss [new file with mode: 0644]
themes/xen-project/assets/css/structure.scss [new file with mode: 0644]
themes/xen-project/assets/css/text-align.scss [new file with mode: 0644]
themes/xen-project/assets/css/typography.scss [new file with mode: 0644]
themes/xen-project/assets/css/variables.scss [new file with mode: 0644]
themes/xen-project/assets/js/carousel.js [new file with mode: 0644]
themes/xen-project/assets/js/latest-news.js [new file with mode: 0644]
themes/xen-project/assets/js/main.js [new file with mode: 0644]
themes/xen-project/assets/js/menu.js [new file with mode: 0644]
themes/xen-project/assets/js/mockup/mockup-blend-mode.js [new file with mode: 0644]
themes/xen-project/assets/js/mockup/mockup-hide.js [new file with mode: 0644]
themes/xen-project/assets/js/mockup/mockup-opacity.js [new file with mode: 0644]
themes/xen-project/assets/js/mockup/mockup-position.js [new file with mode: 0644]
themes/xen-project/assets/js/mockup/mockup-style.js [new file with mode: 0644]
themes/xen-project/assets/js/mockup/mockup-toggle-toolbar.js [new file with mode: 0644]
themes/xen-project/assets/js/mockup/mockup-toolbar-scale.js [new file with mode: 0644]
themes/xen-project/assets/js/mockup/mockup-upload.js [new file with mode: 0644]
themes/xen-project/assets/js/mockup/mockup-window-size.js [new file with mode: 0644]
themes/xen-project/assets/js/mockup/mockup.js [new file with mode: 0644]
themes/xen-project/assets/js/utils.js [new file with mode: 0644]
themes/xen-project/layouts/_default/404.html [new file with mode: 0644]
themes/xen-project/layouts/_default/_markup/render-link.html [new file with mode: 0644]
themes/xen-project/layouts/_default/baseof.html [new file with mode: 0644]
themes/xen-project/layouts/_default/content-only.html [new file with mode: 0644]
themes/xen-project/layouts/_default/home.html [new file with mode: 0644]
themes/xen-project/layouts/_default/list.html [new file with mode: 0644]
themes/xen-project/layouts/_default/redirect.html [new file with mode: 0644]
themes/xen-project/layouts/_default/single.html [new file with mode: 0644]
themes/xen-project/layouts/partials/aside.html [new file with mode: 0644]
themes/xen-project/layouts/partials/blocks/logos-circle.html [new file with mode: 0644]
themes/xen-project/layouts/partials/feature-item.html [new file with mode: 0644]
themes/xen-project/layouts/partials/foot.html [new file with mode: 0644]
themes/xen-project/layouts/partials/footer.html [new file with mode: 0644]
themes/xen-project/layouts/partials/head.html [new file with mode: 0644]
themes/xen-project/layouts/partials/head/css.html [new file with mode: 0644]
themes/xen-project/layouts/partials/header.html [new file with mode: 0644]
themes/xen-project/layouts/partials/images-in-circle.html [new file with mode: 0644]
themes/xen-project/layouts/partials/js.html [new file with mode: 0644]
themes/xen-project/layouts/partials/latest-news.html [new file with mode: 0644]
themes/xen-project/layouts/partials/layout/link-item.html [new file with mode: 0644]
themes/xen-project/layouts/partials/media-block.html [new file with mode: 0644]
themes/xen-project/layouts/partials/menu.html [new file with mode: 0644]
themes/xen-project/layouts/partials/menu/walk.html [new file with mode: 0644]
themes/xen-project/layouts/partials/news-card.html [new file with mode: 0644]
themes/xen-project/layouts/partials/project-card.html [new file with mode: 0644]
themes/xen-project/layouts/partials/slideshare.html [new file with mode: 0644]
themes/xen-project/layouts/partials/socials.html [new file with mode: 0644]
themes/xen-project/layouts/partials/terms.html [new file with mode: 0644]
themes/xen-project/layouts/partials/vertical-lists.html [new file with mode: 0644]
themes/xen-project/layouts/partials/video-player.html [new file with mode: 0644]
themes/xen-project/layouts/partials/youtube.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/carousel.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/center.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/col.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/cols.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/container.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/conversation-card.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/features-list.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/full-width-image.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/get-downloads-links.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/getpages.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/html.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/images-in-circle.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/latest-news.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/link.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/list-pages.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/md.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/media-block.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/partial.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/row-from-list.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/row.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/section.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/vertical-lists.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/video-player.html [new file with mode: 0644]
themes/xen-project/layouts/shortcodes/youtube.html [new file with mode: 0644]
themes/xen-project/theme.toml [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..0a4933f
--- /dev/null
@@ -0,0 +1,5 @@
+/public
+/resources
+node_modules
+*storybook.log
+mockups
\ No newline at end of file
diff --git a/.hugo_build.lock b/.hugo_build.lock
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/.prettierrc b/.prettierrc
new file mode 100644 (file)
index 0000000..de0e295
--- /dev/null
@@ -0,0 +1,20 @@
+{
+  "plugins": ["prettier-plugin-go-template"],
+  "overrides": [
+    {
+      "files": ["*.html"],
+      "options": {
+        "parser": "go-template"
+      }
+    },
+    {
+      "files": ["*.md"],
+      "options": {
+        "parser": "none",
+        "proseWrap": "always"
+      }
+    }
+  ],
+  "goTemplateBracketSpacing": true,
+  "printWidth": 120
+}
diff --git a/.storybook/assets/img/logo.svg b/.storybook/assets/img/logo.svg
new file mode 100644 (file)
index 0000000..8e04555
--- /dev/null
@@ -0,0 +1,61 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 166 64" fill="none">
+  <g clip-path="url(#clip0_125_42723)">
+    <path
+      d="M117.049 21.5311C111.908 21.5311 107.752 24.1761 105.561 25.9228L106.19 22.5652H93.4495L88.9616 43.3506H102.279L104.553 31.2559C105.663 29.8406 107.513 28.0209 109.661 28.0209C113.171 28.0209 112.412 30.8217 112.12 33.0325L110.32 43.0291L123.307 43.0556C123.307 43.0556 124.821 35.0875 125.004 34.2124C126.823 25.4886 124.715 21.5344 117.042 21.5344L117.049 21.5311Z"
+      fill="black" />
+    <path
+      d="M88.6766 34.6499C88.6766 34.6499 93.7445 21.4781 75.0705 21.4781C56.3965 21.4781 54.948 34.6499 54.948 34.6499C54.948 34.6499 52.6312 44.2322 70.7252 44.2322C88.8191 44.2322 88.0965 37.1557 88.0965 37.1557H74.7788C74.7788 37.1557 73.7646 39.9565 71.0135 39.9565C68.2625 39.9565 66.5257 38.9257 67.2482 34.6499H88.6733H88.6766ZM73.622 26.2476C78.2524 26.2476 76.8073 30.5234 76.8073 30.5234H68.8458C68.8458 30.5234 68.9917 26.2476 73.6254 26.2476H73.622Z"
+      fill="black" />
+    <path
+      d="M88.6501 45.2564H95.1664C96.121 45.2564 96.9662 45.3757 97.702 45.6143C98.4378 45.853 99.0344 46.201 99.4985 46.6584C99.9592 47.1158 100.274 47.676 100.443 48.3422C100.609 49.0084 100.612 49.7608 100.45 50.6027L100.44 50.6458C100.264 51.544 99.9493 52.3329 99.4918 53.0124C99.0344 53.6918 98.471 54.2652 97.8014 54.7293C97.1319 55.1933 96.3729 55.5413 95.5244 55.77C94.6759 56.002 93.7809 56.1181 92.8396 56.1181H90.7548L89.9096 60.4601H85.6968L88.6534 45.2564H88.6501ZM93.3931 52.8135C94.1455 52.8135 94.772 52.6345 95.2658 52.2798C95.763 51.9219 96.0713 51.438 96.1906 50.8281L96.2005 50.785C96.3265 50.1287 96.2105 49.6315 95.8492 49.2901C95.4879 48.9488 94.9244 48.7764 94.1588 48.7764H92.1833L91.3978 52.8168H93.3964L93.3931 52.8135Z"
+      fill="#85C241" />
+    <path
+      d="M102.356 48.7101H106.505L106.045 51.0767C106.532 50.2812 107.112 49.6448 107.785 49.1642C108.458 48.6869 109.28 48.4682 110.257 48.5112L109.412 52.8566H109.064C107.977 52.8566 107.082 53.1748 106.379 53.8112C105.677 54.4475 105.193 55.4485 104.928 56.8075L104.218 60.4568H100.069L102.352 48.7068L102.356 48.7101Z"
+      fill="#85C241" />
+    <path
+      d="M115.305 60.7418C114.364 60.7418 113.529 60.5827 112.803 60.2645C112.077 59.9463 111.477 59.5088 111.006 58.952C110.536 58.3952 110.211 57.7455 110.039 57.0097C109.863 56.2705 109.856 55.4817 110.022 54.6431L110.032 54.6C110.194 53.7615 110.513 52.9693 110.983 52.2235C111.454 51.4778 112.034 50.8281 112.72 50.268C113.406 49.7111 114.182 49.2703 115.04 48.9422C115.899 48.6173 116.8 48.4516 117.742 48.4516C118.683 48.4516 119.515 48.614 120.241 48.9422C120.967 49.267 121.567 49.7045 122.037 50.2547C122.508 50.8049 122.833 51.4479 123.008 52.1871C123.184 52.9262 123.187 53.7151 123.025 54.5536L123.018 54.5967C122.856 55.4386 122.538 56.2308 122.067 56.9765C121.596 57.7223 121.016 58.3753 120.33 58.9321C119.644 59.4889 118.869 59.9298 118.01 60.2579C117.152 60.5827 116.25 60.7451 115.309 60.7451L115.305 60.7418ZM116.031 57.2251C116.409 57.2251 116.76 57.1555 117.092 57.0196C117.423 56.8837 117.715 56.6981 117.974 56.4595C118.229 56.2241 118.444 55.9457 118.623 55.6308C118.799 55.316 118.922 54.9845 118.991 54.6398L119.001 54.5967C119.071 54.2387 119.074 53.9007 119.014 53.5858C118.951 53.2709 118.832 52.9925 118.653 52.7572C118.474 52.5218 118.249 52.3296 117.97 52.1871C117.695 52.0445 117.374 51.9716 117.012 51.9716C116.651 51.9716 116.283 52.0412 115.952 52.1771C115.62 52.313 115.329 52.5019 115.07 52.7373C114.815 52.9726 114.596 53.251 114.42 53.5659C114.241 53.8808 114.122 54.2122 114.053 54.5569L114.043 54.6C113.973 54.9613 113.97 55.2961 114.029 55.6143C114.092 55.9291 114.212 56.2076 114.391 56.4429C114.57 56.6782 114.795 56.8705 115.073 57.013C115.348 57.1555 115.667 57.2284 116.031 57.2284V57.2251Z"
+      fill="#85C241" />
+    <path
+      d="M122.949 64C122.614 64 122.316 63.9801 122.047 63.947C121.779 63.9105 121.523 63.8773 121.285 63.8475L121.815 61.1097C121.898 61.123 121.987 61.1329 122.084 61.1329H122.355C122.76 61.1329 123.085 61.0302 123.327 60.828C123.568 60.6258 123.738 60.2712 123.837 59.764L125.985 48.7101H130.135L127.954 59.9397C127.811 60.6788 127.592 61.3086 127.304 61.829C127.012 62.3494 126.658 62.7703 126.24 63.0885C125.822 63.4067 125.335 63.6387 124.785 63.7845C124.231 63.9304 123.622 64.0033 122.952 64.0033L122.949 64ZM126.697 44.6068H131.02L130.43 47.6462H126.107L126.697 44.6068Z"
+      fill="#85C241" />
+    <path
+      d="M135.938 60.7418C135.01 60.7418 134.192 60.5927 133.482 60.2977C132.773 60.0027 132.19 59.5884 131.735 59.0613C131.281 58.5343 130.97 57.8913 130.807 57.1389C130.642 56.3865 130.648 55.5546 130.827 54.6431L130.837 54.6C131.003 53.7449 131.305 52.9461 131.739 52.2003C132.173 51.4545 132.71 50.8049 133.346 50.2447C133.983 49.6879 134.695 49.2504 135.481 48.9322C136.266 48.614 137.095 48.4549 137.963 48.4549C138.978 48.4549 139.823 48.6272 140.502 48.9753C141.179 49.3233 141.706 49.7906 142.077 50.3773C142.448 50.964 142.677 51.6435 142.766 52.4191C142.856 53.1947 142.813 54.0167 142.644 54.8851C142.617 55.0143 142.591 55.1535 142.564 55.2994C142.534 55.4452 142.501 55.591 142.458 55.7336H134.596C134.629 56.3865 134.835 56.8704 135.216 57.1886C135.597 57.5068 136.111 57.6659 136.764 57.6659C137.254 57.6659 137.728 57.5731 138.176 57.3842C138.623 57.1953 139.1 56.8937 139.601 56.4727L141.513 58.362C140.807 59.0879 139.995 59.6646 139.08 60.0988C138.162 60.533 137.118 60.7484 135.945 60.7484L135.938 60.7418ZM139.017 53.6189C139.071 52.9693 138.954 52.4489 138.666 52.0644C138.378 51.6799 137.954 51.4877 137.387 51.4877C136.82 51.4877 136.353 51.6799 135.928 52.0644C135.507 52.4489 135.173 52.966 134.931 53.6189H139.014H139.017Z"
+      fill="#85C241" />
+    <path
+      d="M148.925 60.7418C148.043 60.7418 147.254 60.5794 146.565 60.2546C145.875 59.9297 145.312 59.4922 144.878 58.942C144.443 58.3918 144.142 57.7455 143.973 56.9964C143.807 56.2506 143.804 55.4651 143.963 54.6398L143.973 54.5967C144.132 53.7714 144.44 52.9858 144.897 52.2401C145.355 51.4943 145.912 50.8447 146.571 50.2845C147.231 49.7277 147.977 49.2868 148.815 48.9587C149.654 48.6339 150.535 48.4715 151.463 48.4715C152.68 48.4715 153.648 48.7101 154.364 49.1874C155.083 49.6647 155.617 50.3011 155.968 51.0999L152.763 53.1847C152.547 52.7936 152.299 52.4887 152.007 52.2732C151.715 52.0545 151.318 51.9484 150.811 51.9484C150.479 51.9484 150.158 52.018 149.846 52.1539C149.538 52.2931 149.256 52.4787 149.007 52.7174C148.759 52.956 148.547 53.2311 148.368 53.5427C148.192 53.8542 148.069 54.189 147.996 54.5536L147.987 54.5967C147.914 54.9745 147.904 55.3259 147.957 55.6507C148.01 55.9755 148.112 56.2573 148.272 56.4959C148.427 56.7346 148.636 56.9235 148.901 57.0594C149.163 57.1986 149.468 57.2649 149.816 57.2649C150.31 57.2649 150.748 57.1555 151.129 56.9401C151.51 56.7213 151.904 56.4263 152.312 56.0485L154.682 58.0471C153.973 58.8592 153.16 59.5088 152.239 60.0027C151.318 60.4932 150.214 60.7418 148.925 60.7418Z"
+      fill="#85C241" />
+    <path
+      d="M160.313 60.6987C159.06 60.6987 158.146 60.4004 157.562 59.8071C156.979 59.2138 156.823 58.2128 157.098 56.8108L158.026 52.0313H156.637L157.284 48.7068H158.673L159.253 45.7304H163.402L162.822 48.7068H165.56L164.914 52.0313H162.179L161.407 56.0054C161.324 56.4263 161.361 56.7246 161.513 56.9069C161.666 57.0892 161.931 57.1787 162.309 57.1787C162.584 57.1787 162.859 57.1423 163.134 57.0693C163.409 56.9964 163.681 56.9036 163.949 56.7876L163.319 60.0226C162.905 60.2248 162.444 60.3872 161.944 60.5098C161.443 60.6324 160.9 60.6954 160.323 60.6954L160.313 60.6987Z"
+      fill="#85C241" />
+    <path
+      d="M70.2081 13.868H49.0747L37.1027 23.0359L30.1091 13.868H13.1719L26.4101 31.2261L0 51.4579H21.1367L34.2025 41.448L41.8358 51.4579H58.773L44.8951 33.2579L70.2081 13.868Z"
+      fill="black" />
+    <path
+      d="M21.6537 51.0601C18.0078 48.677 15.0678 45.3128 13.2083 41.3387L6.77819 46.264C7.77254 48.1135 8.94588 49.8536 10.275 51.4579H21.1334L21.6504 51.0601H21.6537Z"
+      fill="black" />
+    <path d="M15.7638 17.262C16.6985 16.029 17.7526 14.8921 18.9093 13.868H13.1752L15.7638 17.262Z" fill="black" />
+    <path
+      d="M46.6551 51.4579H58.6537C58.6736 51.4314 58.6968 51.4082 58.7167 51.385L53.7084 44.8189C51.8457 47.4904 49.4426 49.7575 46.6551 51.4579Z"
+      fill="black" />
+    <path
+      d="M34.4643 54.8685C30.056 54.8685 25.9328 53.6488 22.4094 51.5341L21.6438 52.1208L21.4184 52.2931H11.0009C16.7549 58.7531 25.1307 62.8267 34.4643 62.8267C43.798 62.8267 52.1738 58.7531 57.9278 52.2931H45.147C41.9419 53.9371 38.3125 54.8685 34.4643 54.8685Z"
+      fill="#85C241" />
+    <path
+      d="M56.771 24.1595L63.3736 19.1016C62.588 17.2587 61.6334 15.5053 60.5264 13.8646H50.0227C53.1085 16.6024 55.4684 20.1423 56.7744 24.1595H56.771Z"
+      fill="black" />
+    <path
+      d="M11.0075 31.415C11.0075 26.4134 12.5786 21.7797 15.2468 17.9713L12.5057 14.3751L11.4782 13.0294H19.907C23.9076 9.85737 28.9622 7.95815 34.461 7.95815C39.9598 7.95815 45.0178 9.85737 49.0151 13.0294H59.9231C54.2222 5.1375 44.9449 0 34.4643 0C17.1162 0 3.04935 14.0635 3.04935 31.415C3.04935 36.4829 4.25584 41.269 6.39039 45.505L12.857 40.5531C11.6671 37.7457 11.0108 34.6566 11.0108 31.415H11.0075Z"
+      fill="#85C241" />
+    <path
+      d="M62.2566 23.4403C63.0156 23.0259 63.7812 22.6746 64.5436 22.3829C64.2917 21.5443 64.0099 20.719 63.6918 19.9136L57.0263 25.0213C57.2251 25.724 57.3909 26.4399 57.5234 27.1658C58.7531 25.7704 60.3574 24.481 62.2533 23.4436L62.2566 23.4403Z"
+      fill="#85C241" />
+    <path
+      d="M56.0286 40.6293C55.5115 41.8325 54.905 42.9893 54.2023 44.0797L59.2503 50.7021C60.765 48.7565 62.0478 46.622 63.0786 44.3482C60.1021 43.6721 57.6063 42.3197 56.0286 40.6293Z"
+      fill="#85C241" />
+  </g>
+  <defs>
+    <clipPath id="clip0_125_42723">
+      <rect width="165.553" height="64" fill="white" />
+    </clipPath>
+  </defs>
+</svg>
\ No newline at end of file
diff --git a/.storybook/components/ColorItem/ColorItem.scss b/.storybook/components/ColorItem/ColorItem.scss
new file mode 100644 (file)
index 0000000..a324b94
--- /dev/null
@@ -0,0 +1,110 @@
+/** Story color component */
+.story-color-item {
+  margin-bottom: 1rem;
+  display: flex;
+  flex-direction: column;
+}
+
+.story-color-item-title {
+  margin-bottom: 0.5rem;
+}
+
+.story-color-item-subtitle {
+  margin-bottom: 0.5rem;
+  font-size: 0.8rem;
+  color: #666;
+}
+
+.story-color-list {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+  gap: 1rem;
+}
+
+.story-color {
+  display: flex;
+  flex-direction: column;
+  align-items: stretch;
+  justify-content: flex-start;
+  flex: 0 0 calc(20% - 1rem);
+  min-width: 150px;
+  position: relative;
+  cursor: pointer;
+  transition: background-color 0.2s ease-in-out;
+}
+
+.story-color-swatch {
+  min-height: 50px;
+  max-height: 50px;
+  width: 100%;
+  border-radius: 0.2em;
+  border: 1px solid #ccc;
+  flex: 1;
+}
+
+.story-color:hover {
+  background-color: #f5f5f5;
+}
+
+.story-color-name {
+  margin-top: 0.5rem;
+  font-size: 0.8rem;
+  font-weight: bold;
+}
+
+.story-color-variant-value {
+  margin-top: 0.25rem;
+  font-size: 0.8rem;
+  color: #666;
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+  width: 100%;
+}
+
+.story-color-copied {
+  font-size: 0.8rem;
+  color: green;
+  position: absolute;
+  bottom: 0;
+  right: 0;
+  left: 0;
+  width: 100%;
+  background: rgba(255, 255, 255, 0.8);
+  padding: 0.5rem;
+  text-align: center;
+}
+
+.story-color-variable-name {
+  white-space: pre-wrap;
+  font-size: 0.9em;
+}
+
+.mode-container.dark {
+  background-color: #1e1e1e;
+  color: #fff;
+
+  .story-color-swatch {
+    border-color: #3a3b54;
+  }
+  .story-color:hover {
+    background-color: #1e1e1e;
+  }
+
+  .story-color-copied {
+    background: rgb(0, 0, 0) !important;
+    color: #fff;
+  }
+
+  h1,
+  h2 {
+    color: currentColor;
+    border-color: currentColor;
+  }
+
+  span {
+    color: inherit;
+  }
+}
diff --git a/.storybook/components/ColorItem/ColorItem.tsx b/.storybook/components/ColorItem/ColorItem.tsx
new file mode 100644 (file)
index 0000000..f215113
--- /dev/null
@@ -0,0 +1,52 @@
+import React, { useState } from "react";
+import "./ColorItem.scss";
+
+const ColorItem = ({ title, subtitle, colors }) => {
+  return (
+    <div className="story-color-item">
+      <div className="story-color-list">
+        {colors.map(({ name, value, variableName }) => (
+          <OneColor
+            key={`${variableName}`}
+            name={name}
+            value={value}
+            variableName={variableName}
+          />
+        ))}
+      </div>
+    </div>
+  );
+};
+
+const OneColor = ({ name, value, variableName }) => {
+  const [copied, setCopied] = useState("");
+
+  const handleCopy = (variableName) => {
+    navigator.clipboard.writeText(`var(${variableName})`);
+    setCopied(variableName);
+    setTimeout(() => setCopied(""), 2000);
+  };
+
+  return (
+    <div
+      key={`${variableName}`}
+      className="story-color"
+      onClick={() => handleCopy(variableName)}
+    >
+      <div
+        className="story-color-swatch"
+        style={{ backgroundColor: value }}
+      ></div>
+      <span className="story-color-variant-value">
+        <span>{name}</span>
+        <span>{value}</span>
+      </span>
+      <span className="story-color-variable-name">{variableName}</span>
+      {copied === variableName && (
+        <span className="story-color-copied">Copied!</span>
+      )}
+    </div>
+  );
+};
+
+export default ColorItem;
diff --git a/.storybook/components/ColorItem/index.ts b/.storybook/components/ColorItem/index.ts
new file mode 100644 (file)
index 0000000..df8272b
--- /dev/null
@@ -0,0 +1 @@
+export { default } from "./ColorItem";
diff --git a/.storybook/components/IconItem/IconItem.scss b/.storybook/components/IconItem/IconItem.scss
new file mode 100644 (file)
index 0000000..fc8c6b3
--- /dev/null
@@ -0,0 +1,50 @@
+.icon-item {
+  display: flex;
+  flex: 0 1 calc(20% - 10px);
+  align-items: center;
+  margin-bottom: 1rem;
+  min-width: 120px;
+  margin: 0 10px 30px 0;
+  position: relative;
+  cursor: pointer;
+
+  &:hover {
+    background-color: #f5f5f5;
+  }
+
+  .icon {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    width: 3rem;
+    height: 3rem;
+    flex: none;
+    margin-right: 1rem;
+    border-radius: 0.2em;
+    border: 1px solid #ccc;
+
+    i {
+      font-size: 1.5rem;
+    }
+  }
+
+  .icon-name {
+    font-size: 0.8rem;
+    font-weight: bold;
+    color: #333;
+    white-space: pre-wrap;
+    font-family: "Courier New", Courier, monospace;
+  }
+
+  .icon-copied {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    padding: 0.4rem;
+    background: rgba(255, 255, 255, 0.8);
+    color: green;
+    font-size: 0.8em;
+    text-align: center;
+  }
+}
diff --git a/.storybook/components/IconItem/IconItem.tsx b/.storybook/components/IconItem/IconItem.tsx
new file mode 100644 (file)
index 0000000..50e3011
--- /dev/null
@@ -0,0 +1,31 @@
+import React, { FC, useState } from "react";
+import "./IconItem.scss";
+
+interface IconItemProps {
+  icon: string;
+  name: string;
+  prefixOnCopy?: string;
+}
+
+const IconItem: FC<IconItemProps> = ({ icon, name, prefixOnCopy = "" }) => {
+  const [copied, setCopied] = useState(false);
+
+  const handleCopy = () => {
+    const copyString = prefixOnCopy + name;
+    navigator.clipboard.writeText(copyString);
+    setCopied(true);
+    setTimeout(() => setCopied(false), 1000);
+  };
+
+  return (
+    <div className="icon-item" onClick={handleCopy}>
+      <div className="icon">
+        <i className={icon} />
+      </div>
+      <div className="icon-name">{name}</div>
+      {copied && <span className="icon-copied">Copied!</span>}
+    </div>
+  );
+};
+
+export default IconItem;
diff --git a/.storybook/components/IconItem/index.ts b/.storybook/components/IconItem/index.ts
new file mode 100644 (file)
index 0000000..0c80daa
--- /dev/null
@@ -0,0 +1 @@
+export { default } from "./IconItem";
diff --git a/.storybook/components/IconList/IconList.tsx b/.storybook/components/IconList/IconList.tsx
new file mode 100644 (file)
index 0000000..484b66f
--- /dev/null
@@ -0,0 +1,44 @@
+import React, { useState } from "react";
+import IconItem from "../IconItem/IconItem";
+import { IconGallery } from "@storybook/blocks";
+import StoryToggle from "../StoryToggle/StoryToggle";
+
+interface IconListProps {
+  icons: {
+    [gallery: string]: string[];
+  };
+}
+
+const IconList: React.FC<IconListProps> = ({ icons }) => {
+  const [searchTerm, setSearchTerm] = useState("");
+  const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {
+    setSearchTerm(e.target.value);
+  };
+
+  return (
+    <div>
+      <label>Search for an icon</label>
+      <input type="search" placeholder="Search" className="input input--text sb-search-input" onChange={onChange} />
+      <div>
+        {Object.keys(icons).map((gallery, index) => (
+          <div key={gallery} className="story-icon-gallery">
+            <StoryToggle title={gallery} open={true}>
+              <p className="story-icon-description">
+                Usage : <code>{gallery} fa-icon</code>
+              </p>
+              <IconGallery key={index}>
+                {icons[gallery]
+                  .filter((icon) => icon.includes(searchTerm))
+                  .map((icon, index) => (
+                    <IconItem key={index} name={icon} icon={`${gallery} ${icon}`} prefixOnCopy={`${gallery} `} />
+                  ))}
+              </IconGallery>
+            </StoryToggle>
+          </div>
+        ))}
+      </div>
+    </div>
+  );
+};
+
+export default IconList;
diff --git a/.storybook/components/IconList/index.ts b/.storybook/components/IconList/index.ts
new file mode 100644 (file)
index 0000000..a25a4b9
--- /dev/null
@@ -0,0 +1 @@
+export { default } from "./IconList";
diff --git a/.storybook/components/ImagesGallery/ImageGallery.scss b/.storybook/components/ImagesGallery/ImageGallery.scss
new file mode 100644 (file)
index 0000000..6478c49
--- /dev/null
@@ -0,0 +1,69 @@
+.story-toggle {
+  margin-top: 2rem !important;
+
+  &__title {
+    font-size: 2rem;
+    font-weight: 500;
+    color: #333;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    font-size: 2em;
+    font-weight: bold;
+    cursor: pointer;
+    border-bottom: 1px solid currentColor;
+
+    &::after {
+      --size: 12px;
+      content: "";
+      display: block;
+      width: 0;
+      height: 0;
+      border-top: calc(var(--size) / 1.5) solid transparent;
+      border-bottom: calc(var(--size) / 1.5) solid transparent;
+      border-left: calc(var(--size)) solid currentColor;
+      position: relative;
+      transition: transform 0.2s ease-in-out;
+    }
+  }
+  &--open &__title::after {
+    transform: rotate(90deg);
+  }
+
+  &--active {
+    background-color: #e6e6e6;
+
+    &__icon {
+      transform: rotate(180deg);
+    }
+  }
+}
+
+.story-image-gallery_toast {
+  position: fixed;
+  top: 0;
+  left: 50%;
+  transform: translateX(-50%);
+  padding: 1rem;
+  background: rgba(255, 255, 255, 0.8);
+  color: green;
+  background: rgb(133, 240, 133);
+  border: 1px solid green;
+  border-radius: 0.5rem;
+  font-size: 0.8em;
+  text-align: center;
+  opacity: 1;
+  transition: opacity 0.5s ease-in-out;
+
+  &_message {
+    margin-bottom: 0;
+  }
+
+  &--disappear {
+    opacity: 0;
+  }
+
+  &-appear {
+    opacity: 1;
+  }
+}
diff --git a/.storybook/components/ImagesGallery/ImageGallery.tsx b/.storybook/components/ImagesGallery/ImageGallery.tsx
new file mode 100644 (file)
index 0000000..a82a0e6
--- /dev/null
@@ -0,0 +1,130 @@
+import React, { FC } from "react";
+import "./ImageGallery.scss";
+
+type Props = {
+  className?: string;
+  images: any;
+  path: string;
+};
+
+const ImageGallery: FC<Props> = ({ className = "", images, path }) => {
+  const [view, setView] = React.useState("mosaic");
+  const [searchTerm, setSearchTerm] = React.useState("");
+  const [toastClass, setToastClass] = React.useState("");
+
+  const handleViewChange = (view: string) => {
+    setView(view);
+  };
+
+  const handleSearch = (e: React.SyntheticEvent<HTMLInputElement>) => {
+    setSearchTerm((e.target as HTMLInputElement).value);
+  };
+
+  const handleCopy = (path: string) => {
+    navigator.clipboard.writeText(path);
+    showToast();
+  };
+
+  const showToast = () => {
+    setToastClass("story-image-gallery_toast--appear");
+    setTimeout(() => {
+      setToastClass("story-image-gallery_toast--disappear");
+    }, 2000);
+  };
+
+  const handleToastAnimationEnd = (e: React.AnimationEvent<HTMLDivElement>) => {
+    const toast = e.target as HTMLDivElement;
+    if (toast.classList.contains("story-image-gallery_toast--disappear")) {
+      setToastClass("");
+    }
+  };
+
+  const searchTermsArray = searchTerm.split(" ");
+  const imagesFiltered = Object.keys(images).reduce((acc, group) => {
+    acc[group] = images[group].filter((image) =>
+      searchTermsArray.every((searchTerm) =>
+        image.name.toLowerCase().includes(searchTerm.toLowerCase()),
+      ),
+    );
+    if (acc[group].length === 0) delete acc[group];
+    return acc;
+  }, {});
+
+  return (
+    <div className={`${className}`}>
+      {toastClass != "" ? (
+        <div
+          className={`story-image-gallery_toast ${toastClass}`}
+          onAnimationEnd={handleToastAnimationEnd}
+        >
+          <div className="story-image-gallery_toast_message">
+            Copied to clipboard
+          </div>
+        </div>
+      ) : null}
+      <div className="story-image-gallery_toolbar">
+        <input
+          type="search"
+          placeholder="Search"
+          className="input input--text sb-search-input"
+          onChange={handleSearch}
+          onClick={handleSearch}
+        />
+        <button
+          className={`mosaicBtn ${view === "mosaic" ? "active" : ""}`}
+          onClick={() => handleViewChange("mosaic")}
+        >
+          <svg viewBox="0 0 24 24">
+            <path d="M3 3h8v8H3V3zm0 10h8v8H3v-8zM13 3h8v8h-8V3zm0 10h8v8h-8v-8z" />
+          </svg>
+        </button>
+        <button
+          className={`listBtn ${view === "list" ? "active" : ""}`}
+          onClick={() => handleViewChange("list")}
+        >
+          <svg viewBox="0 0 24 24">
+            <path d="M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z" />
+          </svg>
+        </button>
+      </div>
+
+      <div>
+        {Object.keys(imagesFiltered).map((group) => (
+          <div key={group} className={`story-image-gallery ${view}`}>
+            <h2>{group}</h2>
+
+            <div className="story-image-gallery_content">
+              <div className="story-image-gallery_table">
+                <div className="story-image-gallery_tr story-image-gallery_head">
+                  <div className="story-image-gallery_th">Image</div>
+                  <div className="story-image-gallery_th">Name</div>
+                  <div className="story-image-gallery_th">Path</div>
+                </div>
+                {imagesFiltered[group].map((image) => (
+                  <div key={image.name} className="story-image-gallery_tr">
+                    <div className="story-image-gallery_td">
+                      <img src={path + image.path} alt={image.name} />
+                    </div>
+                    <div className="story-image-gallery_td">
+                      <strong>{image.name}</strong>
+                    </div>
+                    <div className="story-image-gallery_td">
+                      {path + image.path}
+                      <input
+                        type="button"
+                        value="Copy"
+                        onClick={() => handleCopy(path + image.path)}
+                      />
+                    </div>
+                  </div>
+                ))}
+              </div>
+            </div>
+          </div>
+        ))}
+      </div>
+    </div>
+  );
+};
+
+export default ImageGallery;
diff --git a/.storybook/components/ImagesGallery/index.tsx b/.storybook/components/ImagesGallery/index.tsx
new file mode 100644 (file)
index 0000000..91303ba
--- /dev/null
@@ -0,0 +1 @@
+export { default } from "./ImageGallery";
diff --git a/.storybook/components/MarginGallery/MarginGallery.scss b/.storybook/components/MarginGallery/MarginGallery.scss
new file mode 100644 (file)
index 0000000..11ae1df
--- /dev/null
@@ -0,0 +1,30 @@
+.margin-gallery {
+  strong {
+    font-weight: bold;
+  }
+  .margin-gallery__visual {
+    display: flex;
+    flex-direction: column;
+    align-items: flex-start;
+    gap: 0.5em;
+  }
+
+  .margin-gallery__visual__item {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+  }
+
+  .margin-gallery__visual__item__label {
+    width: 50px;
+  }
+
+  .margin-gallery__visual__item__content {
+    height: 32px;
+    background: var(--color-purple);
+  }
+
+  .fixed td {
+    white-space: nowrap;
+  }
+}
diff --git a/.storybook/components/MarginGallery/MarginGallery.stories.tsx b/.storybook/components/MarginGallery/MarginGallery.stories.tsx
new file mode 100644 (file)
index 0000000..6ff8a27
--- /dev/null
@@ -0,0 +1,28 @@
+import type { Meta, StoryObj } from "@storybook/react";
+import MarginGallery from "./MarginGallery";
+
+const meta: Meta = {
+  title: "Components/MarginGallery",
+  component: MarginGallery,
+  tags: ["autodocs"],
+  argTypes: {
+    className: { control: "text" },
+    children: { control: "text" },
+  },
+};
+
+export default meta;
+type Story = StoryObj<typeof meta>;
+
+export const Base: Story = {
+  args: {
+    children: "Text",
+  },
+};
+
+export const OtherExample: Story = {
+  name: "Custom name 2",
+  args: {
+    children: "Text",
+  },
+};
diff --git a/.storybook/components/MarginGallery/MarginGallery.tsx b/.storybook/components/MarginGallery/MarginGallery.tsx
new file mode 100644 (file)
index 0000000..e0f0ce1
--- /dev/null
@@ -0,0 +1,89 @@
+import React, { FC } from "react";
+import "./MarginGallery.scss";
+
+type StyleObject = {
+  [key: string]: string | number;
+};
+
+type Props = {
+  className?: string;
+  children?: React.ReactNode;
+  base: number;
+  properties: StyleObject;
+  directions: StyleObject;
+  sizes: StyleObject;
+};
+
+const MarginGallery: FC<Props> = ({ properties, directions, sizes, base, className = "" }) => {
+  const propertiesArray = Object.entries(properties);
+  const directionsArray = Object.entries(directions);
+  const sizesArray = Object.entries(sizes).sort((a, b) => a[1] - b[1]);
+
+  return (
+    <div className={`margin-gallery ${className}`}>
+      <h2>Margins / Paddings / Gap</h2>
+      <table>
+        <tr>
+          <th>gap</th>
+          <td>gap</td>
+        </tr>
+        {propertiesArray.map(([marginKey, marginValue]: any, index) =>
+          directionsArray.map(([directionKey, directionValue]: any, index) => (
+            <tr>
+              <th>.{marginKey + directionKey}</th>
+              <td>
+                {directionValue
+                  .split(" ")
+                  .map((val: string) => marginValue + "-" + val)
+                  .join(", ")}
+              </td>
+            </tr>
+          ))
+        )}
+      </table>
+      <h2>Values</h2>
+      <table>
+        {sizesArray.map(([sizeKey, sizeValue]: any, index) => (
+          <tr>
+            <th>{sizeKey}</th>
+            <td>{sizeValue}px</td>
+          </tr>
+        ))}
+      </table>
+
+      <h2>All classes</h2>
+      <table className="fixed">
+        {sizesArray.map(([sizeKey, sizeValue]: any, index) => (
+          <tr>
+            <>
+              {propertiesArray.map(([marginKey, marginValue]: any, index) => (
+                <>
+                  {directionsArray.map(([directionKey, directionValue]: any, index) => (
+                    <td>{marginKey + directionKey + "-" + sizeKey}</td>
+                  ))}
+                </>
+              ))}
+              <td>gap-{sizeKey}</td>
+              <td>
+                <strong>{sizeValue}px</strong>
+              </td>
+            </>
+          </tr>
+        ))}
+      </table>
+
+      <h2>Visual sizes</h2>
+
+      <div className="margin-gallery__visual">
+        {sizesArray.map(([sizeKey, sizeValue]: any, index) => (
+          <div className="margin-gallery__visual__item">
+            <div className="margin-gallery__visual__item__label">{sizeKey}</div>
+            <div className="margin-gallery__visual__item__content" style={{ width: sizeValue }}></div>
+          </div>
+        ))}
+      </div>
+    </div>
+  );
+};
+
+export default MarginGallery;
diff --git a/.storybook/components/MarginGallery/index.tsx b/.storybook/components/MarginGallery/index.tsx
new file mode 100644 (file)
index 0000000..20e8462
--- /dev/null
@@ -0,0 +1 @@
+export { default } from "./MarginGallery";
diff --git a/.storybook/components/ShadowItem/ShadowItem.scss b/.storybook/components/ShadowItem/ShadowItem.scss
new file mode 100644 (file)
index 0000000..61ff924
--- /dev/null
@@ -0,0 +1,25 @@
+.story-shadow {
+  position: relative;
+  cursor: pointer;
+  flex-basis: 40%;
+
+  code {
+    background: none;
+    display: block;
+    border: 0;
+    margin-top: 1em;
+    font-size: 12px;
+    font-family: monospace;
+  }
+
+  .copied {
+    position: absolute;
+    top: 0;
+    width: 100%;
+    color: var(--color-green);
+  }
+}
+
+.shadow-list {
+  gap: 100px 20px;
+}
diff --git a/.storybook/components/ShadowItem/ShadowItem.tsx b/.storybook/components/ShadowItem/ShadowItem.tsx
new file mode 100644 (file)
index 0000000..e4dc922
--- /dev/null
@@ -0,0 +1,26 @@
+import React, { useState } from "react";
+import "./ShadowItem.scss";
+
+const ShadowItem = ({ shadowClassName }) => {
+  const [copied, setCopied] = useState(false);
+
+  const handleCopy = () => {
+    const valueToCopy = shadowClassName;
+    navigator.clipboard.writeText(valueToCopy);
+    setCopied(true);
+    setTimeout(() => {
+      setCopied(false);
+    }, 1500);
+  };
+
+  const classNames = `story-shadow `;
+
+  return (
+    <div className={`${classNames} story-box-sm story-background ${shadowClassName}`} onClick={handleCopy}>
+      <code>{shadowClassName}</code>
+      {copied && <span className="copied">Copied in clipboard</span>}
+    </div>
+  );
+};
+
+export default ShadowItem;
diff --git a/.storybook/components/ShadowItem/index.ts b/.storybook/components/ShadowItem/index.ts
new file mode 100644 (file)
index 0000000..e8588d2
--- /dev/null
@@ -0,0 +1 @@
+export { default } from "./ShadowItem";
diff --git a/.storybook/components/StoryToggle/StoryToggle.scss b/.storybook/components/StoryToggle/StoryToggle.scss
new file mode 100644 (file)
index 0000000..5958c72
--- /dev/null
@@ -0,0 +1,40 @@
+.story-toggle {
+  margin-top: 2rem !important;
+
+  &__title {
+    font-size: 2rem;
+    font-weight: 500;
+    color: #333;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    font-size: 2em;
+    font-weight: bold;
+    cursor: pointer;
+    border-bottom: 1px solid currentColor;
+
+    &::after {
+      --size: 12px;
+      content: "";
+      display: block;
+      width: 0;
+      height: 0;
+      border-top: calc(var(--size) / 1.5) solid transparent;
+      border-bottom: calc(var(--size) / 1.5) solid transparent;
+      border-left: calc(var(--size)) solid currentColor;
+      position: relative;
+      transition: transform 0.2s ease-in-out;
+    }
+  }
+  &--open &__title::after {
+    transform: rotate(90deg);
+  }
+
+  &--active {
+    background-color: #e6e6e6;
+
+    &__icon {
+      transform: rotate(180deg);
+    }
+  }
+}
diff --git a/.storybook/components/StoryToggle/StoryToggle.tsx b/.storybook/components/StoryToggle/StoryToggle.tsx
new file mode 100644 (file)
index 0000000..6784d7c
--- /dev/null
@@ -0,0 +1,30 @@
+import React, { FC } from "react";
+import "./StoryToggle.scss";
+import { Unstyled } from "@storybook/blocks";
+
+type Props = {
+  className?: string;
+  children?: React.ReactNode;
+  title: string;
+  open?: boolean;
+};
+
+const StoryToggle: FC<Props> = ({ children, className = "", title, open: openProp }) => {
+  const [open, setOpen] = React.useState(openProp);
+
+  const toggle = () => {
+    setOpen(!open);
+  };
+  return (
+    <div className={`story-toggle ${className} ${open ? "story-toggle--open" : ""}`}>
+      <Unstyled>
+        <h2 className="story-toggle__title" onClick={toggle}>
+          {title}
+        </h2>
+      </Unstyled>
+      {open ? <div className="story-toggle__content">{children}</div> : null}
+    </div>
+  );
+};
+
+export default StoryToggle;
diff --git a/.storybook/components/StoryToggle/index.tsx b/.storybook/components/StoryToggle/index.tsx
new file mode 100644 (file)
index 0000000..9cdb606
--- /dev/null
@@ -0,0 +1 @@
+export { default } from "./StoryToggle";
diff --git a/.storybook/main.js b/.storybook/main.js
new file mode 100644 (file)
index 0000000..65d8837
--- /dev/null
@@ -0,0 +1,44 @@
+/** @type { import('@storybook/web-components-vite').StorybookConfig } */
+
+import remarkGfm from "remark-gfm";
+const { mergeConfig } = require("vite");
+const path = require("path");
+
+const config = {
+  stories: [
+    "../stories/**/*.mdx",
+    "../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)",
+  ],
+  addons: [
+    "@storybook/preset-scss",
+    "@storybook/addon-links",
+    "@storybook/addon-essentials",
+    "@chromatic-com/storybook",
+    {
+      name: "@storybook/addon-docs",
+      options: {
+        mdxPluginOptions: {
+          mdxCompileOptions: {
+            remarkPlugins: [remarkGfm],
+          },
+        },
+      },
+    },
+  ],
+  framework: {
+    name: "@storybook/web-components-vite",
+    options: {},
+  },
+  viteFinal: async (config, { configType }) => {
+    return mergeConfig(config, {
+      css: {
+        preprocessorOptions: {
+          scss: {
+            additionalData: `@import "./.storybook/storybook.scss";`, // Exemple d'importation globale
+          },
+        },
+      },
+    });
+  },
+};
+export default config;
diff --git a/.storybook/manager.js b/.storybook/manager.js
new file mode 100644 (file)
index 0000000..0a3d84b
--- /dev/null
@@ -0,0 +1,6 @@
+import { addons } from "@storybook/manager-api";
+import { themes } from "@storybook/theming";
+
+addons.setConfig({
+  theme: themes.light,
+});
diff --git a/.storybook/preview.js b/.storybook/preview.js
new file mode 100644 (file)
index 0000000..08de37a
--- /dev/null
@@ -0,0 +1,20 @@
+import "../public/font-awesomepro/fontawesome.css"; // Adjust the path as needed
+import "../public/font-awesomepro/regular.css";
+import "../public/font-awesomepro/solid.css";
+import "../public/font-awesomepro/brands.css";
+
+import "../themes/xen-project/assets/css/main.scss"; // Adjust the path as needed
+
+/** @type { import('@storybook/web-components').Preview } */
+const preview = {
+  parameters: {
+    controls: {
+      matchers: {
+        color: /(background|color)$/i,
+        date: /Date$/,
+      },
+    },
+  },
+};
+
+export default preview;
diff --git a/.storybook/storybook.scss b/.storybook/storybook.scss
new file mode 100644 (file)
index 0000000..57e3677
--- /dev/null
@@ -0,0 +1,123 @@
+@import "./Components/ColorItem/ColorItem.scss";
+
+h1 {
+  color: #cd840f;
+  border-bottom: 2px solid #d1c8bd;
+}
+
+.spacing-example {
+  display: flex;
+  align-items: center;
+  justify-content: flex-start;
+  margin-bottom: 1rem;
+}
+
+.spacing-example-text {
+  flex-basis: 130px;
+}
+
+.spacing-example-bar {
+  background: lightcoral;
+  height: 50px;
+}
+
+.story-image-gallery_toolbar {
+  display: flex;
+  gap: 0.5rem;
+  margin-bottom: 2rem !important;
+  align-items: center;
+
+  input[type="search"] {
+    padding: 0.5rem;
+  }
+
+  button {
+    width: 30px;
+    height: 30px;
+    cursor: pointer;
+    border-radius: 4px;
+
+    &.active {
+      background-color: rgb(197, 196, 196);
+    }
+  }
+}
+
+.story-image-gallery {
+  margin-top: 2rem !important;
+  .story-image-gallery_td img {
+    width: 100%;
+    border: 1px solid #ccc !important;
+  }
+
+  &.mosaic {
+    --gap: 1rem;
+    .story-image-gallery_table {
+      display: flex;
+      flex-wrap: wrap;
+      justify-content: flex-start;
+      align-items: stretch;
+      gap: var(--gap);
+    }
+    .story-image-gallery_head {
+      display: none !important;
+    }
+
+    .story-image-gallery_tr {
+      flex: 0 0 calc(100% / 3 - var(--gap));
+      display: flex;
+      flex-direction: column;
+
+      .story-image-gallery_td:nth-child(1) {
+        flex: 1;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        padding: 1rem;
+      }
+
+      .story-image-gallery_td {
+        text-wrap: wrap;
+        word-wrap: break-word;
+      }
+    }
+  }
+
+  &.list {
+    .story-image-gallery_table {
+      display: table;
+    }
+    .story-image-gallery_tr {
+      display: table-row;
+    }
+    .story-image-gallery_th  {
+      font-weight: bold;
+    }
+    .story-image-gallery_th,
+    .story-image-gallery_td {
+      display: table-cell;
+      padding: 0.5rem;
+      vertical-align: middle;
+    }
+
+    img {
+      max-width: 300px;
+    }
+  }
+}
+
+.story-row {
+  display: flex;
+  gap: 24px;
+
+  flex-direction: column;
+  flex: 0 auto;
+
+  @media (min-width: 600px) {
+    flex-direction: row;
+    flex: 0 33%;
+  }
+  > * {
+    max-width: 300px;
+  }
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644 (file)
index 0000000..a04d285
--- /dev/null
@@ -0,0 +1,25 @@
+{
+  "workbench.colorCustomizations": {
+    "activityBar.activeBackground": "#2f7c47",
+    "activityBar.background": "#2f7c47",
+    "activityBar.foreground": "#e7e7e7",
+    "activityBar.inactiveForeground": "#e7e7e799",
+    "activityBarBadge.background": "#422c74",
+    "activityBarBadge.foreground": "#e7e7e7",
+    "commandCenter.border": "#e7e7e799",
+    "sash.hoverBorder": "#2f7c47",
+    "statusBar.background": "#215732",
+    "statusBar.foreground": "#e7e7e7",
+    "statusBarItem.hoverBackground": "#2f7c47",
+    "statusBarItem.remoteBackground": "#215732",
+    "statusBarItem.remoteForeground": "#e7e7e7",
+    "titleBar.activeBackground": "#215732",
+    "titleBar.activeForeground": "#e7e7e7",
+    "titleBar.inactiveBackground": "#21573299",
+    "titleBar.inactiveForeground": "#e7e7e799"
+  },
+  "peacock.color": "#215732",
+  "[html]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  }
+}
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..7d54e9e
--- /dev/null
+++ b/README.md
@@ -0,0 +1,30 @@
+# Xen-Project website
+
+## Tools
+
+- [Hugo](https://gohugo.io)
+- [Npm](https://www.npmjs.com)
+- [Sass](https://sass-lang.com)
+
+## Running hugo
+
+How to run hugo:
+
+```bash
+$
+```
+
+## Important urls
+
+[Hugo Documentation](https://gohugo.io/getting-started/directory-structure/)
+[Npm Package Hugo Extended](https://www.npmjs.com/package/hugo-extended)
+[Ghost Migration from Worpress](https://ghost.org/docs/migration/wordpress/)
+[Figma Design](https://www.figma.com/design/36fAO6lf2tvY5G2KwOl6eu/xenproject.org?node-id=125-28209&m=dev)
+
+
+## Other resources
+
+### Edit SVG : 
+ - https://editsvg.online/editor.html (copy past the SVG code and edit, and then copy the code)
+ - https://svgomg.net/ (copy past the SVG code, optimize it, and copy the code)
+  
\ No newline at end of file
diff --git a/TODO.md b/TODO.md
new file mode 100644 (file)
index 0000000..8be9d18
--- /dev/null
+++ b/TODO.md
@@ -0,0 +1,14 @@
+# TODO
+
+- [ ] migrate some px unit to REM or EM
+- [ ] Add all components into storybook and make a doc in storybook
+- [ ] implémenter fantasticons
+- [ ] check all links and icons
+- [ ] Projet card link : use a link instead btn-tertiary
+- [ ] REplace some specified CSS properties by the paragraph or link declared into the Typography css file
+- [ ] hugo as full npm and start via npm
+
+
+# TODO Optimization
+
+- [ ] Optimize images to WebP format
diff --git a/archetypes/default.md b/archetypes/default.md
new file mode 100644 (file)
index 0000000..c6f3fce
--- /dev/null
@@ -0,0 +1,5 @@
++++
+title = '{{ replace .File.ContentBaseName "-" " " | title }}'
+date = {{ .Date }}
+draft = true
++++
diff --git a/assets/data/downloads-latest.json b/assets/data/downloads-latest.json
new file mode 100644 (file)
index 0000000..a4d60eb
--- /dev/null
@@ -0,0 +1,188 @@
+[
+  {
+    "name": "Xen",
+    "key": "xen",
+    "versions": [
+      {
+        "name": "4.19",
+        "subversions": [
+          {
+            "name": "4.19.0",
+            "link": "https://downloads.xenproject.org/release/xen/4.19.0/",
+            "files": [
+              {
+                "name": "xen-4.19.0.tar.gz",
+                "url": "https://downloads.xenproject.org/release/xen//4.19.0/xen-4.19.0.tar.gz"
+              },
+              {
+                "name": "xen-4.19.0.tar.gz.sig",
+                "url": "https://downloads.xenproject.org/release/xen//4.19.0/xen-4.19.0.tar.gz.sig"
+              }
+            ]
+          }
+        ]
+      },
+      {
+        "name": "4.18",
+        "subversions": [
+          {
+            "name": "4.18.3",
+            "link": "https://downloads.xenproject.org/release/xen/4.18.3/",
+            "files": [
+              {
+                "name": "xen-4.18.3.tar.gz",
+                "url": "https://downloads.xenproject.org/release/xen//4.18.3/xen-4.18.3.tar.gz"
+              },
+              {
+                "name": "xen-4.18.3.tar.gz.sig",
+                "url": "https://downloads.xenproject.org/release/xen//4.18.3/xen-4.18.3.tar.gz.sig"
+              }
+            ]
+          },
+          {
+            "name": "4.18.2",
+            "link": "https://downloads.xenproject.org/release/xen/4.18.2/",
+            "files": [
+              {
+                "name": "xen-4.18.2.tar.gz",
+                "url": "https://downloads.xenproject.org/release/xen//4.18.2/xen-4.18.2.tar.gz"
+              },
+              {
+                "name": "xen-4.18.2.tar.gz.sig",
+                "url": "https://downloads.xenproject.org/release/xen//4.18.2/xen-4.18.2.tar.gz.sig"
+              }
+            ]
+          },
+          {
+            "name": "4.18.1",
+            "link": "https://downloads.xenproject.org/release/xen/4.18.1/",
+            "files": [
+              {
+                "name": "xen-4.18.1.tar.gz",
+                "url": "https://downloads.xenproject.org/release/xen//4.18.1/xen-4.18.1.tar.gz"
+              },
+              {
+                "name": "xen-4.18.1.tar.gz.sig",
+                "url": "https://downloads.xenproject.org/release/xen//4.18.1/xen-4.18.1.tar.gz.sig"
+              }
+            ]
+          },
+          {
+            "name": "4.18.0",
+            "link": "https://downloads.xenproject.org/release/xen/4.18.0/",
+            "files": [
+              {
+                "name": "xen-4.18.0.tar.gz",
+                "url": "https://downloads.xenproject.org/release/xen//4.18.0/xen-4.18.0.tar.gz"
+              },
+              {
+                "name": "xen-4.18.0.tar.gz.sig",
+                "url": "https://downloads.xenproject.org/release/xen//4.18.0/xen-4.18.0.tar.gz.sig"
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  {
+    "name": "Windows PV Drivers",
+    "key": "windowspvdrivers",
+    "versions": [
+      {
+        "link": "",
+        "name": "default",
+        "files": [
+          {
+            "name": "xenbus.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xenbus.tar"
+          },
+          {
+            "name": "xencons.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xencons.tar"
+          },
+          {
+            "name": "xenhid.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xenhid.tar"
+          },
+          {
+            "name": "xeniface.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xeniface.tar"
+          },
+          {
+            "name": "xennet.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xennet.tar"
+          },
+          {
+            "name": "xenvbd.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xenvbd.tar"
+          },
+          {
+            "name": "xenvif.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xenvif.tar"
+          },
+          {
+            "name": "xenvkbd.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xenvkbd.tar"
+          }
+        ]
+      }
+    ]
+  },
+  {
+    "name": "Mirage OS",
+    "key": "mirageos",
+    "versions": [
+      {
+        "name": "4.6",
+        "subversions": [
+          {
+            "name": "4.6.1",
+            "link": "https://github.com/mirage/mirage/releases/tag/v4.6.1",
+            "files": [
+              {
+                "name": "mirage-4.6.1.tar.gz",
+                "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.6.1"
+              }
+            ]
+          },
+          {
+            "name": "4.6.0",
+            "link": "https://github.com/mirage/mirage/releases/tag/v4.6.0",
+            "files": [
+              {
+                "name": "mirage-4.6.0.tar.gz",
+                "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.6.0"
+              }
+            ]
+          }
+        ]
+      },
+      {
+        "name": "4.5",
+        "subversions": [
+          {
+            "name": "4.5.1",
+            "link": "https://github.com/mirage/mirage/releases/tag/v4.5.1",
+            "files": [
+              {
+                "name": "mirage-4.5.1.tar.gz",
+                "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.5.1"
+              }
+            ]
+          },
+          {
+            "name": "4.5.0",
+            "link": "https://github.com/mirage/mirage/releases/tag/v4.5.0",
+            "files": [
+              {
+                "name": "mirage-4.5.0.tar.gz",
+                "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.5.0"
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/assets/data/downloads.json b/assets/data/downloads.json
new file mode 100644 (file)
index 0000000..38d91fb
--- /dev/null
@@ -0,0 +1,3572 @@
+[
+  {
+    "name": "Xen",
+    "key": "xen",
+    "versions": [
+      {
+        "name": "3.0.3-0",
+        "link": "https://downloads.xenproject.org/release/xen/3.0.3-0/",
+        "files": [
+          {
+            "name": "bin.tgz/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.3-0/bin.tgz/"
+          },
+          {
+            "name": "iso/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.3-0/iso/"
+          },
+          {
+            "name": "kernel-3.0.3-fc5/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.3-0/kernel-3.0.3-fc5/"
+          },
+          {
+            "name": "kernel-3.0.3-opensuse10x/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.3-0/kernel-3.0.3-opensuse10x/"
+          },
+          {
+            "name": "kernel-3.0.3-rhel4x/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.3-0/kernel-3.0.3-rhel4x/"
+          },
+          {
+            "name": "kernel-3.0.3-sles9x/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.3-0/kernel-3.0.3-sles9x/"
+          },
+          {
+            "name": "kernel-rhel3x/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.3-0/kernel-rhel3x/"
+          },
+          {
+            "name": "kernel-rhel4x/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.3-0/kernel-rhel4x/"
+          },
+          {
+            "name": "kernel-sles9x/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.3-0/kernel-sles9x/"
+          },
+          {
+            "name": "src.tgz/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.3-0/src.tgz/"
+          }
+        ]
+      },
+      {
+        "name": "3.0.4-1",
+        "link": "https://downloads.xenproject.org/release/xen/3.0.4-1/",
+        "files": [
+          {
+            "name": "bin.tgz/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.4-1/bin.tgz/"
+          },
+          {
+            "name": "kernel-3.0.4-fc5/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.4-1/kernel-3.0.4-fc5/"
+          },
+          {
+            "name": "kernel-3.0.4-opensuse10x/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.4-1/kernel-3.0.4-opensuse10x/"
+          },
+          {
+            "name": "kernel-3.0.4-rhel4x/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.4-1/kernel-3.0.4-rhel4x/"
+          },
+          {
+            "name": "kernel-3.0.4-sles9x/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.4-1/kernel-3.0.4-sles9x/"
+          },
+          {
+            "name": "src.tgz/",
+            "url": "https://downloads.xenproject.org/release/xen//3.0.4-1/src.tgz/"
+          }
+        ]
+      },
+      {
+        "name": "3.1.0",
+        "link": "https://downloads.xenproject.org/release/xen/3.1.0/",
+        "files": [
+          {
+            "name": "bin.tgz/",
+            "url": "https://downloads.xenproject.org/release/xen//3.1.0/bin.tgz/"
+          },
+          {
+            "name": "kernel-3.1-opensuse10x/",
+            "url": "https://downloads.xenproject.org/release/xen//3.1.0/kernel-3.1-opensuse10x/"
+          },
+          {
+            "name": "kernel-3.1-rhel4x/",
+            "url": "https://downloads.xenproject.org/release/xen//3.1.0/kernel-3.1-rhel4x/"
+          },
+          {
+            "name": "kernel-3.1-rhel5x/",
+            "url": "https://downloads.xenproject.org/release/xen//3.1.0/kernel-3.1-rhel5x/"
+          },
+          {
+            "name": "src.tgz/",
+            "url": "https://downloads.xenproject.org/release/xen//3.1.0/src.tgz/"
+          }
+        ]
+      },
+      {
+        "name": "3.1.3",
+        "link": "https://downloads.xenproject.org/release/xen/3.1.3/",
+        "files": [
+          {
+            "name": "xen-3.1.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.1.3/xen-3.1.3.tar.gz"
+          }
+        ]
+      },
+      {
+        "name": "3.1.4",
+        "link": "https://downloads.xenproject.org/release/xen/3.1.4/",
+        "files": [
+          {
+            "name": "xen-3.1.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.1.4/xen-3.1.4.tar.gz"
+          }
+        ]
+      },
+      {
+        "name": "3.2.0",
+        "link": "https://downloads.xenproject.org/release/xen/3.2.0/",
+        "files": [
+          {
+            "name": "centos-5.1/",
+            "url": "https://downloads.xenproject.org/release/xen//3.2.0/centos-5.1/"
+          },
+          {
+            "name": "fedora-8/",
+            "url": "https://downloads.xenproject.org/release/xen//3.2.0/fedora-8/"
+          },
+          {
+            "name": "linux-2.6.18-xen-3.2.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.2.0/linux-2.6.18-xen-3.2.0.tar.gz"
+          },
+          {
+            "name": "opensuse-10.3/",
+            "url": "https://downloads.xenproject.org/release/xen//3.2.0/opensuse-10.3/"
+          },
+          {
+            "name": "xen-3.2.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.2.0/xen-3.2.0.tar.gz"
+          }
+        ]
+      },
+      {
+        "name": "3.2.1",
+        "link": "https://downloads.xenproject.org/release/xen/3.2.1/",
+        "files": [
+          {
+            "name": "xen-3.2.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.2.1/xen-3.2.1.tar.gz"
+          }
+        ]
+      },
+      {
+        "name": "3.2.2",
+        "link": "https://downloads.xenproject.org/release/xen/3.2.2/",
+        "files": [
+          {
+            "name": "xen-3.2.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.2.2/xen-3.2.2.tar.gz"
+          }
+        ]
+      },
+      {
+        "name": "3.2.3",
+        "link": "https://downloads.xenproject.org/release/xen/3.2.3/",
+        "files": [
+          {
+            "name": "xen-3.2.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.2.3/xen-3.2.3.tar.gz"
+          }
+        ]
+      },
+      {
+        "name": "3.3.0",
+        "link": "https://downloads.xenproject.org/release/xen/3.3.0/",
+        "files": [
+          {
+            "name": "linux-2.6.18-xen-3.3.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.3.0/linux-2.6.18-xen-3.3.0.tar.gz"
+          },
+          {
+            "name": "xen-3.3.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.3.0/xen-3.3.0.tar.gz"
+          }
+        ]
+      },
+      {
+        "name": "3.3.1",
+        "link": "https://downloads.xenproject.org/release/xen/3.3.1/",
+        "files": [
+          {
+            "name": "xen-3.3.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.3.1/xen-3.3.1.tar.gz"
+          }
+        ]
+      },
+      {
+        "name": "3.3.2",
+        "link": "https://downloads.xenproject.org/release/xen/3.3.2/",
+        "files": [
+          {
+            "name": "xen-3.3.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.3.2/xen-3.3.2.tar.gz"
+          }
+        ]
+      },
+      {
+        "name": "3.4.0",
+        "link": "https://downloads.xenproject.org/release/xen/3.4.0/",
+        "files": [
+          {
+            "name": "linux-2.6.18-xen-3.4.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.4.0/linux-2.6.18-xen-3.4.0.tar.gz"
+          },
+          {
+            "name": "xen-3.4.0-xen.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.4.0/xen-3.4.0-xen.tar.gz"
+          },
+          {
+            "name": "xen-3.4.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.4.0/xen-3.4.0.tar.gz"
+          }
+        ]
+      },
+      {
+        "name": "3.4.1",
+        "link": "https://downloads.xenproject.org/release/xen/3.4.1/",
+        "files": [
+          {
+            "name": "xen-3.4.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.4.1/xen-3.4.1.tar.gz"
+          }
+        ]
+      },
+      {
+        "name": "3.4.2",
+        "link": "https://downloads.xenproject.org/release/xen/3.4.2/",
+        "files": [
+          {
+            "name": "linux-2.6.18-xen-3.4.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.4.2/linux-2.6.18-xen-3.4.2.tar.gz"
+          },
+          {
+            "name": "xen-3.4.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.4.2/xen-3.4.2.tar.gz"
+          }
+        ]
+      },
+      {
+        "name": "3.4.3",
+        "link": "https://downloads.xenproject.org/release/xen/3.4.3/",
+        "files": [
+          {
+            "name": "xen-3.4.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.4.3/xen-3.4.3.tar.gz"
+          },
+          {
+            "name": "xen-3.4.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//3.4.3/xen-3.4.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "3.4.4",
+        "link": "https://downloads.xenproject.org/release/xen/3.4.4/",
+        "files": [
+          {
+            "name": "xen-3.4.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//3.4.4/xen-3.4.4.tar.gz"
+          },
+          {
+            "name": "xen-3.4.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//3.4.4/xen-3.4.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.0.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.0.0/",
+        "files": [
+          {
+            "name": "xen-4.0.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.0.0/xen-4.0.0.tar.gz"
+          },
+          {
+            "name": "xen-4.0.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.0.0/xen-4.0.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.0.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.0.1/",
+        "files": [
+          {
+            "name": "xen-4.0.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.0.1/xen-4.0.1.tar.gz"
+          },
+          {
+            "name": "xen-4.0.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.0.1/xen-4.0.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.0.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.0.2/",
+        "files": [
+          {
+            "name": "xen-4.0.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.0.2/xen-4.0.2.tar.gz"
+          },
+          {
+            "name": "xen-4.0.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.0.2/xen-4.0.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.0.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.0.3/",
+        "files": [
+          {
+            "name": "xen-4.0.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.0.3/xen-4.0.3.tar.gz"
+          },
+          {
+            "name": "xen-4.0.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.0.3/xen-4.0.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.0.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.0.4/",
+        "files": [
+          {
+            "name": "xen-4.0.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.0.4/xen-4.0.4.tar.gz"
+          },
+          {
+            "name": "xen-4.0.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.0.4/xen-4.0.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.1.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.1.0/",
+        "files": [
+          {
+            "name": "xen-4.1.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.1.0/xen-4.1.0.tar.gz"
+          },
+          {
+            "name": "xen-4.1.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.1.0/xen-4.1.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.1.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.1.1/",
+        "files": [
+          {
+            "name": "xen-4.1.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.1.1/xen-4.1.1.tar.gz"
+          },
+          {
+            "name": "xen-4.1.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.1.1/xen-4.1.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.1.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.1.2/",
+        "files": [
+          {
+            "name": "xen-4.1.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.1.2/xen-4.1.2.tar.gz"
+          },
+          {
+            "name": "xen-4.1.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.1.2/xen-4.1.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.1.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.1.3/",
+        "files": [
+          {
+            "name": "xen-4.1.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.1.3/xen-4.1.3.tar.gz"
+          },
+          {
+            "name": "xen-4.1.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.1.3/xen-4.1.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.1.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.1.4/",
+        "files": [
+          {
+            "name": "xen-4.1.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.1.4/xen-4.1.4.tar.gz"
+          },
+          {
+            "name": "xen-4.1.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.1.4/xen-4.1.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.1.5",
+        "link": "https://downloads.xenproject.org/release/xen/4.1.5/",
+        "files": [
+          {
+            "name": "xen-4.1.5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.1.5/xen-4.1.5.tar.gz"
+          },
+          {
+            "name": "xen-4.1.5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.1.5/xen-4.1.5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.2.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.2.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.2.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.0-rc2/xen-4.2.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.2.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.0-rc2/xen-4.2.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.2.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.2.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.2.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.0-rc5/xen-4.2.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.2.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.0-rc5/xen-4.2.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.2.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.2.0/",
+        "files": [
+          {
+            "name": "xen-4.2.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.0/xen-4.2.0.tar.gz"
+          },
+          {
+            "name": "xen-4.2.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.0/xen-4.2.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.2.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.2.1/",
+        "files": [
+          {
+            "name": "xen-4.2.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.1/xen-4.2.1.tar.gz"
+          },
+          {
+            "name": "xen-4.2.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.1/xen-4.2.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.2.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.2.2/",
+        "files": [
+          {
+            "name": "xen-4.2.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.2/xen-4.2.2.tar.gz"
+          },
+          {
+            "name": "xen-4.2.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.2/xen-4.2.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.2.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.2.3/",
+        "files": [
+          {
+            "name": "xen-4.2.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.3/xen-4.2.3.tar.gz"
+          },
+          {
+            "name": "xen-4.2.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.3/xen-4.2.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.2.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.2.4/",
+        "files": [
+          {
+            "name": "xen-4.2.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.4/xen-4.2.4.tar.gz"
+          },
+          {
+            "name": "xen-4.2.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.4/xen-4.2.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.2.5",
+        "link": "https://downloads.xenproject.org/release/xen/4.2.5/",
+        "files": [
+          {
+            "name": "xen-4.2.5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.5/xen-4.2.5.tar.gz"
+          },
+          {
+            "name": "xen-4.2.5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.2.5/xen-4.2.5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.3.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.3.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.3.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0-rc1/xen-4.3.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.3.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0-rc1/xen-4.3.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.3.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.3.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.3.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0-rc2/xen-4.3.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.3.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0-rc2/xen-4.3.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.3.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.3.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.3.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0-rc3/xen-4.3.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.3.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0-rc3/xen-4.3.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.3.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.3.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.3.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0-rc4/xen-4.3.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.3.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0-rc4/xen-4.3.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.3.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.3.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.3.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0-rc5/xen-4.3.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.3.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0-rc5/xen-4.3.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.3.0-rc6",
+        "link": "https://downloads.xenproject.org/release/xen/4.3.0-rc6/",
+        "files": [
+          {
+            "name": "xen-4.3.0-rc6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0-rc6/xen-4.3.0-rc6.tar.gz"
+          },
+          {
+            "name": "xen-4.3.0-rc6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0-rc6/xen-4.3.0-rc6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.3.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.3.0/",
+        "files": [
+          {
+            "name": "xen-4.3.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0/xen-4.3.0.tar.gz"
+          },
+          {
+            "name": "xen-4.3.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.0/xen-4.3.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.3.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.3.1/",
+        "files": [
+          {
+            "name": "xen-4.3.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.1/xen-4.3.1.tar.gz"
+          },
+          {
+            "name": "xen-4.3.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.1/xen-4.3.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.3.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.3.2/",
+        "files": [
+          {
+            "name": "xen-4.3.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.2/xen-4.3.2.tar.gz"
+          },
+          {
+            "name": "xen-4.3.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.2/xen-4.3.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.3.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.3.3/",
+        "files": [
+          {
+            "name": "xen-4.3.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.3/xen-4.3.3.tar.gz"
+          },
+          {
+            "name": "xen-4.3.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.3/xen-4.3.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.3.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.3.4/",
+        "files": [
+          {
+            "name": "xen-4.3.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.4/xen-4.3.4.tar.gz"
+          },
+          {
+            "name": "xen-4.3.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.3.4/xen-4.3.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.4.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.4.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.4.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0-rc1/xen-4.4.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.4.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0-rc1/xen-4.4.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.4.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.4.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.4.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0-rc2/xen-4.4.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.4.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0-rc2/xen-4.4.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.4.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.4.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.4.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0-rc3/xen-4.4.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.4.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0-rc3/xen-4.4.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.4.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.4.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.4.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0-rc4/xen-4.4.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.4.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0-rc4/xen-4.4.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.4.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.4.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.4.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0-rc5/xen-4.4.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.4.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0-rc5/xen-4.4.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.4.0-rc6",
+        "link": "https://downloads.xenproject.org/release/xen/4.4.0-rc6/",
+        "files": [
+          {
+            "name": "xen-4.4.0-rc6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0-rc6/xen-4.4.0-rc6.tar.gz"
+          },
+          {
+            "name": "xen-4.4.0-rc6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0-rc6/xen-4.4.0-rc6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.4.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.4.0/",
+        "files": [
+          {
+            "name": "xen-4.4.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0/xen-4.4.0.tar.gz"
+          },
+          {
+            "name": "xen-4.4.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.0/xen-4.4.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.4.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.4.1/",
+        "files": [
+          {
+            "name": "xen-4.4.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.1/xen-4.4.1.tar.gz"
+          },
+          {
+            "name": "xen-4.4.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.1/xen-4.4.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.4.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.4.2/",
+        "files": [
+          {
+            "name": "xen-4.4.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.2/xen-4.4.2.tar.gz"
+          },
+          {
+            "name": "xen-4.4.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.2/xen-4.4.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.4.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.4.3/",
+        "files": [
+          {
+            "name": "xen-4.4.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.3/xen-4.4.3.tar.gz"
+          },
+          {
+            "name": "xen-4.4.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.3/xen-4.4.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.4.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.4.4/",
+        "files": [
+          {
+            "name": "xen-4.4.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.4/xen-4.4.4.tar.gz"
+          },
+          {
+            "name": "xen-4.4.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.4.4/xen-4.4.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.5.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.5.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.5.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.0-rc1/xen-4.5.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.5.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.0-rc1/xen-4.5.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.5.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.5.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.5.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.0-rc2/xen-4.5.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.5.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.0-rc2/xen-4.5.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.5.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.5.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.5.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.0-rc3/xen-4.5.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.5.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.0-rc3/xen-4.5.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.5.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.5.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.5.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.0-rc4/xen-4.5.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.5.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.0-rc4/xen-4.5.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.5.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.5.0/",
+        "files": [
+          {
+            "name": "xen-4.5.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.0/xen-4.5.0.tar.gz"
+          },
+          {
+            "name": "xen-4.5.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.0/xen-4.5.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.5.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.5.1/",
+        "files": [
+          {
+            "name": "xen-4.5.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.1/xen-4.5.1.tar.gz"
+          },
+          {
+            "name": "xen-4.5.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.1/xen-4.5.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.5.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.5.2/",
+        "files": [
+          {
+            "name": "xen-4.5.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.2/xen-4.5.2.tar.gz"
+          },
+          {
+            "name": "xen-4.5.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.2/xen-4.5.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.5.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.5.3/",
+        "files": [
+          {
+            "name": "xen-4.5.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.3/xen-4.5.3.tar.gz"
+          },
+          {
+            "name": "xen-4.5.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.3/xen-4.5.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.5.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.5.4/",
+        "files": []
+      },
+      {
+        "name": "4.5.5",
+        "link": "https://downloads.xenproject.org/release/xen/4.5.5/",
+        "files": [
+          {
+            "name": "xen-4.5.5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.5/xen-4.5.5.tar.gz"
+          },
+          {
+            "name": "xen-4.5.5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.5.5/xen-4.5.5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.6.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.6.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.6.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.0-rc1/xen-4.6.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.6.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.0-rc1/xen-4.6.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.6.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.6.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.6.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.0-rc2/xen-4.6.0-rc2.tar.gz"
+          }
+        ]
+      },
+      {
+        "name": "4.6.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.6.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.6.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.0-rc3/xen-4.6.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.6.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.0-rc3/xen-4.6.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.6.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.6.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.6.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.0-rc4/xen-4.6.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.6.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.0-rc4/xen-4.6.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.6.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.6.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.6.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.0-rc5/xen-4.6.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.6.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.0-rc5/xen-4.6.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.6.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.6.0/",
+        "files": [
+          {
+            "name": "xen-4.6.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.0/xen-4.6.0.tar.gz"
+          },
+          {
+            "name": "xen-4.6.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.0/xen-4.6.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.6.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.6.1/",
+        "files": [
+          {
+            "name": "xen-4.6.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.1/xen-4.6.1.tar.gz"
+          },
+          {
+            "name": "xen-4.6.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.1/xen-4.6.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.6.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.6.3/",
+        "files": [
+          {
+            "name": "xen-4.6.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.3/xen-4.6.3.tar.gz"
+          },
+          {
+            "name": "xen-4.6.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.3/xen-4.6.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.6.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.6.4/",
+        "files": [
+          {
+            "name": "xen-4.6.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.4/xen-4.6.4.tar.gz"
+          },
+          {
+            "name": "xen-4.6.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.4/xen-4.6.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.6.5",
+        "link": "https://downloads.xenproject.org/release/xen/4.6.5/",
+        "files": [
+          {
+            "name": "xen-4.6.5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.5/xen-4.6.5.tar.gz"
+          },
+          {
+            "name": "xen-4.6.5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.5/xen-4.6.5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.6.6",
+        "link": "https://downloads.xenproject.org/release/xen/4.6.6/",
+        "files": [
+          {
+            "name": "xen-4.6.6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.6/xen-4.6.6.tar.gz"
+          },
+          {
+            "name": "xen-4.6.6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.6.6/xen-4.6.6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.7.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.7.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.7.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0-rc1/xen-4.7.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.7.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0-rc1/xen-4.7.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.7.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.7.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.7.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0-rc2/xen-4.7.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.7.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0-rc2/xen-4.7.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.7.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.7.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.7.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0-rc3/xen-4.7.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.7.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0-rc3/xen-4.7.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.7.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.7.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.7.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0-rc4/xen-4.7.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.7.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0-rc4/xen-4.7.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.7.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.7.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.7.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0-rc5/xen-4.7.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.7.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0-rc5/xen-4.7.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.7.0-rc6",
+        "link": "https://downloads.xenproject.org/release/xen/4.7.0-rc6/",
+        "files": [
+          {
+            "name": "xen-4.7.0-rc6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0-rc6/xen-4.7.0-rc6.tar.gz"
+          },
+          {
+            "name": "xen-4.7.0-rc6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0-rc6/xen-4.7.0-rc6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.7.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.7.0/",
+        "files": [
+          {
+            "name": "xen-4.7.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0/xen-4.7.0.tar.gz"
+          },
+          {
+            "name": "xen-4.7.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.0/xen-4.7.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.7.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.7.1/",
+        "files": [
+          {
+            "name": "xen-4.7.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.1/xen-4.7.1.tar.gz"
+          },
+          {
+            "name": "xen-4.7.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.1/xen-4.7.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.7.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.7.2/",
+        "files": [
+          {
+            "name": "xen-4.7.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.2/xen-4.7.2.tar.gz"
+          },
+          {
+            "name": "xen-4.7.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.2/xen-4.7.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.7.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.7.3/",
+        "files": [
+          {
+            "name": "xen-4.7.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.3/xen-4.7.3.tar.gz"
+          },
+          {
+            "name": "xen-4.7.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.3/xen-4.7.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.7.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.7.4/",
+        "files": [
+          {
+            "name": "xen-4.7.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.4/xen-4.7.4.tar.gz"
+          },
+          {
+            "name": "xen-4.7.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.4/xen-4.7.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.7.5",
+        "link": "https://downloads.xenproject.org/release/xen/4.7.5/",
+        "files": [
+          {
+            "name": "xen-4.7.5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.5/xen-4.7.5.tar.gz"
+          },
+          {
+            "name": "xen-4.7.5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.5/xen-4.7.5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.7.6",
+        "link": "https://downloads.xenproject.org/release/xen/4.7.6/",
+        "files": [
+          {
+            "name": "xen-4.7.6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.6/xen-4.7.6.tar.gz"
+          },
+          {
+            "name": "xen-4.7.6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.7.6/xen-4.7.6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.8.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc1/xen-4.8.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.8.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc1/xen-4.8.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.8.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc2/xen-4.8.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.8.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc2/xen-4.8.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.8.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc3/xen-4.8.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.8.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc3/xen-4.8.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.8.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc4/xen-4.8.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.8.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc4/xen-4.8.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.8.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc5/xen-4.8.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.8.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc5/xen-4.8.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.0-rc6",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.0-rc6/",
+        "files": [
+          {
+            "name": "xen-4.8.0-rc6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc6/xen-4.8.0-rc6.tar.gz"
+          },
+          {
+            "name": "xen-4.8.0-rc6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc6/xen-4.8.0-rc6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.0-rc7",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.0-rc7/",
+        "files": [
+          {
+            "name": "xen-4.8.0-rc7.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc7/xen-4.8.0-rc7.tar.gz"
+          },
+          {
+            "name": "xen-4.8.0-rc7.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc7/xen-4.8.0-rc7.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.0-rc8",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.0-rc8/",
+        "files": [
+          {
+            "name": "xen-4.8.0-rc8.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc8/xen-4.8.0-rc8.tar.gz"
+          },
+          {
+            "name": "xen-4.8.0-rc8.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0-rc8/xen-4.8.0-rc8.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.0/",
+        "files": [
+          {
+            "name": "xen-4.8.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0/xen-4.8.0.tar.gz"
+          },
+          {
+            "name": "xen-4.8.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.0/xen-4.8.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.1/",
+        "files": [
+          {
+            "name": "xen-4.8.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.1/xen-4.8.1.tar.gz"
+          },
+          {
+            "name": "xen-4.8.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.1/xen-4.8.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.2/",
+        "files": [
+          {
+            "name": "xen-4.8.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.2/xen-4.8.2.tar.gz"
+          },
+          {
+            "name": "xen-4.8.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.2/xen-4.8.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.3/",
+        "files": [
+          {
+            "name": "xen-4.8.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.3/xen-4.8.3.tar.gz"
+          },
+          {
+            "name": "xen-4.8.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.3/xen-4.8.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.4/",
+        "files": [
+          {
+            "name": "xen-4.8.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.4/xen-4.8.4.tar.gz"
+          },
+          {
+            "name": "xen-4.8.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.4/xen-4.8.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.8.5",
+        "link": "https://downloads.xenproject.org/release/xen/4.8.5/",
+        "files": [
+          {
+            "name": "xen-4.8.5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.5/xen-4.8.5.tar.gz"
+          },
+          {
+            "name": "xen-4.8.5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.8.5/xen-4.8.5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.9.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.0-rc1/",
+        "files": []
+      },
+      {
+        "name": "4.9.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.9.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc2/xen-4.9.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.9.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc2/xen-4.9.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.9.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.9.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc3/xen-4.9.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.9.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc3/xen-4.9.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.9.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.9.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc4/xen-4.9.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.9.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc4/xen-4.9.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.9.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.9.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc5/xen-4.9.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.9.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc5/xen-4.9.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.9.0-rc6",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.0-rc6/",
+        "files": [
+          {
+            "name": "xen-4.9.0-rc6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc6/xen-4.9.0-rc6.tar.gz"
+          },
+          {
+            "name": "xen-4.9.0-rc6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc6/xen-4.9.0-rc6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.9.0-rc7",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.0-rc7/",
+        "files": [
+          {
+            "name": "xen-4.9.0-rc7.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc7/xen-4.9.0-rc7.tar.gz"
+          },
+          {
+            "name": "xen-4.9.0-rc7.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc7/xen-4.9.0-rc7.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.9.0-rc8",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.0-rc8/",
+        "files": [
+          {
+            "name": "xen-4.9.0-rc8.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc8/xen-4.9.0-rc8.tar.gz"
+          },
+          {
+            "name": "xen-4.9.0-rc8.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc8/xen-4.9.0-rc8.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.9.0-rc9",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.0-rc9/",
+        "files": [
+          {
+            "name": "xen-4.9.0-rc9.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc9/xen-4.9.0-rc9.tar.gz"
+          },
+          {
+            "name": "xen-4.9.0-rc9.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0-rc9/xen-4.9.0-rc9.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.9.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.0/",
+        "files": [
+          {
+            "name": "xen-4.9.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0/xen-4.9.0.tar.gz"
+          },
+          {
+            "name": "xen-4.9.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.0/xen-4.9.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.9.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.1/",
+        "files": [
+          {
+            "name": "xen-4.9.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.1/xen-4.9.1.tar.gz"
+          },
+          {
+            "name": "xen-4.9.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.1/xen-4.9.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.9.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.2/",
+        "files": [
+          {
+            "name": "xen-4.9.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.2/xen-4.9.2.tar.gz"
+          },
+          {
+            "name": "xen-4.9.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.2/xen-4.9.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.9.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.3/",
+        "files": [
+          {
+            "name": "xen-4.9.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.3/xen-4.9.3.tar.gz"
+          },
+          {
+            "name": "xen-4.9.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.3/xen-4.9.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.9.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.9.4/",
+        "files": [
+          {
+            "name": "xen-4.9.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.4/xen-4.9.4.tar.gz"
+          },
+          {
+            "name": "xen-4.9.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.9.4/xen-4.9.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.10.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.10.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.10.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc1/xen-4.10.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.10.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc1/xen-4.10.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.10.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.10.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.10.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc2/xen-4.10.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.10.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc2/xen-4.10.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.10.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.10.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.10.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc3/xen-4.10.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.10.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc3/xen-4.10.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.10.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.10.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.10.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc4/xen-4.10.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.10.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc4/xen-4.10.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.10.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.10.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.10.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc5/xen-4.10.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.10.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc5/xen-4.10.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.10.0-rc6",
+        "link": "https://downloads.xenproject.org/release/xen/4.10.0-rc6/",
+        "files": [
+          {
+            "name": "xen-4.10.0-rc6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc6/xen-4.10.0-rc6.tar.gz"
+          },
+          {
+            "name": "xen-4.10.0-rc6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc6/xen-4.10.0-rc6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.10.0-rc7",
+        "link": "https://downloads.xenproject.org/release/xen/4.10.0-rc7/",
+        "files": [
+          {
+            "name": "xen-4.10.0-rc7.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc7/xen-4.10.0-rc7.tar.gz"
+          },
+          {
+            "name": "xen-4.10.0-rc7.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc7/xen-4.10.0-rc7.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.10.0-rc8",
+        "link": "https://downloads.xenproject.org/release/xen/4.10.0-rc8/",
+        "files": [
+          {
+            "name": "xen-4.10.0-rc8.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc8/xen-4.10.0-rc8.tar.gz"
+          },
+          {
+            "name": "xen-4.10.0-rc8.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0-rc8/xen-4.10.0-rc8.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.10.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.10.0/",
+        "files": [
+          {
+            "name": "xen-4.10.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0/xen-4.10.0.tar.gz"
+          },
+          {
+            "name": "xen-4.10.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.0/xen-4.10.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.10.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.10.1/",
+        "files": [
+          {
+            "name": "xen-4.10.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.1/xen-4.10.1.tar.gz"
+          },
+          {
+            "name": "xen-4.10.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.1/xen-4.10.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.10.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.10.2/",
+        "files": [
+          {
+            "name": "xen-4.10.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.2/xen-4.10.2.tar.gz"
+          },
+          {
+            "name": "xen-4.10.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.2/xen-4.10.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.10.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.10.3/",
+        "files": [
+          {
+            "name": "xen-4.10.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.3/xen-4.10.3.tar.gz"
+          },
+          {
+            "name": "xen-4.10.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.3/xen-4.10.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.10.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.10.4/",
+        "files": [
+          {
+            "name": "xen-4.10.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.4/xen-4.10.4.tar.gz"
+          },
+          {
+            "name": "xen-4.10.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.10.4/xen-4.10.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.11.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.11.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.11.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc1/xen-4.11.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.11.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc1/xen-4.11.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.11.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.11.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.11.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc2/xen-4.11.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.11.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc2/xen-4.11.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.11.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.11.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.11.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc3/xen-4.11.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.11.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc3/xen-4.11.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.11.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.11.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.11.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc4/xen-4.11.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.11.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc4/xen-4.11.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.11.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.11.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.11.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc5/xen-4.11.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.11.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc5/xen-4.11.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.11.0-rc6",
+        "link": "https://downloads.xenproject.org/release/xen/4.11.0-rc6/",
+        "files": [
+          {
+            "name": "xen-4.11.0-rc6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc6/xen-4.11.0-rc6.tar.gz"
+          },
+          {
+            "name": "xen-4.11.0-rc6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc6/xen-4.11.0-rc6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.11.0-rc7",
+        "link": "https://downloads.xenproject.org/release/xen/4.11.0-rc7/",
+        "files": [
+          {
+            "name": "xen-4.11.0-rc7.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc7/xen-4.11.0-rc7.tar.gz"
+          },
+          {
+            "name": "xen-4.11.0-rc7.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0-rc7/xen-4.11.0-rc7.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.11.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.11.0/",
+        "files": [
+          {
+            "name": "xen-4.11.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0/xen-4.11.0.tar.gz"
+          },
+          {
+            "name": "xen-4.11.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.0/xen-4.11.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.11.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.11.1/",
+        "files": [
+          {
+            "name": "xen-4.11.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.1/xen-4.11.1.tar.gz"
+          },
+          {
+            "name": "xen-4.11.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.1/xen-4.11.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.11.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.11.2/",
+        "files": [
+          {
+            "name": "xen-4.11.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.2/xen-4.11.2.tar.gz"
+          },
+          {
+            "name": "xen-4.11.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.2/xen-4.11.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.11.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.11.3/",
+        "files": [
+          {
+            "name": "xen-4.11.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.3/xen-4.11.3.tar.gz"
+          },
+          {
+            "name": "xen-4.11.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.3/xen-4.11.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.11.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.11.4/",
+        "files": [
+          {
+            "name": "xen-4.11.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.4/xen-4.11.4.tar.gz"
+          },
+          {
+            "name": "xen-4.11.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.11.4/xen-4.11.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.12.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.12.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.12.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0-rc1/xen-4.12.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.12.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0-rc1/xen-4.12.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.12.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.12.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.12.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0-rc3/xen-4.12.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.12.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0-rc3/xen-4.12.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.12.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.12.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.12.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0-rc4/xen-4.12.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.12.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0-rc4/xen-4.12.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.12.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.12.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.12.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0-rc5/xen-4.12.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.12.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0-rc5/xen-4.12.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.12.0-rc6",
+        "link": "https://downloads.xenproject.org/release/xen/4.12.0-rc6/",
+        "files": [
+          {
+            "name": "xen-4.12.0-rc6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0-rc6/xen-4.12.0-rc6.tar.gz"
+          },
+          {
+            "name": "xen-4.12.0-rc6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0-rc6/xen-4.12.0-rc6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.12.0-rc7",
+        "link": "https://downloads.xenproject.org/release/xen/4.12.0-rc7/",
+        "files": [
+          {
+            "name": "xen-4.12.0-rc7.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0-rc7/xen-4.12.0-rc7.tar.gz"
+          },
+          {
+            "name": "xen-4.12.0-rc7.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0-rc7/xen-4.12.0-rc7.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.12.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.12.0/",
+        "files": [
+          {
+            "name": "xen-4.12.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0/xen-4.12.0.tar.gz"
+          },
+          {
+            "name": "xen-4.12.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.0/xen-4.12.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.12.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.12.1/",
+        "files": [
+          {
+            "name": "xen-4.12.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.1/xen-4.12.1.tar.gz"
+          },
+          {
+            "name": "xen-4.12.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.1/xen-4.12.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.12.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.12.2/",
+        "files": [
+          {
+            "name": "xen-4.12.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.2/xen-4.12.2.tar.gz"
+          },
+          {
+            "name": "xen-4.12.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.2/xen-4.12.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.12.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.12.3/",
+        "files": [
+          {
+            "name": "xen-4.12.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.3/xen-4.12.3.tar.gz"
+          },
+          {
+            "name": "xen-4.12.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.3/xen-4.12.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.12.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.12.4/",
+        "files": [
+          {
+            "name": "xen-4.12.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.4/xen-4.12.4.tar.gz"
+          },
+          {
+            "name": "xen-4.12.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.12.4/xen-4.12.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.13.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.13.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.13.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.0-rc1/xen-4.13.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.13.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.0-rc1/xen-4.13.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.13.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.13.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.13.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.0-rc2/xen-4.13.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.13.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.0-rc2/xen-4.13.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.13.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.13.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.13.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.0-rc3/xen-4.13.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.13.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.0-rc3/xen-4.13.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.13.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.13.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.13.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.0-rc4/xen-4.13.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.13.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.0-rc4/xen-4.13.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.13.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.13.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.13.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.0-rc5/xen-4.13.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.13.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.0-rc5/xen-4.13.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.13.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.13.0/",
+        "files": [
+          {
+            "name": "xen-4.13.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.0/xen-4.13.0.tar.gz"
+          },
+          {
+            "name": "xen-4.13.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.0/xen-4.13.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.13.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.13.1/",
+        "files": [
+          {
+            "name": "xen-4.13.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.1/xen-4.13.1.tar.gz"
+          },
+          {
+            "name": "xen-4.13.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.1/xen-4.13.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.13.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.13.2/",
+        "files": [
+          {
+            "name": "xen-4.13.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.2/xen-4.13.2.tar.gz"
+          },
+          {
+            "name": "xen-4.13.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.2/xen-4.13.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.13.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.13.3/",
+        "files": [
+          {
+            "name": "xen-4.13.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.3/xen-4.13.3.tar.gz"
+          },
+          {
+            "name": "xen-4.13.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.3/xen-4.13.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.13.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.13.4/",
+        "files": [
+          {
+            "name": "xen-4.13.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.4/xen-4.13.4.tar.gz"
+          },
+          {
+            "name": "xen-4.13.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.4/xen-4.13.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.13.5",
+        "link": "https://downloads.xenproject.org/release/xen/4.13.5/",
+        "files": [
+          {
+            "name": "xen-4.13.5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.5/xen-4.13.5.tar.gz"
+          },
+          {
+            "name": "xen-4.13.5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.13.5/xen-4.13.5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.14.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.14.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.14.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0-rc1/xen-4.14.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.14.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0-rc1/xen-4.14.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.14.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.14.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.14.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0-rc2/xen-4.14.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.14.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0-rc2/xen-4.14.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.14.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.14.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.14.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0-rc3/xen-4.14.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.14.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0-rc3/xen-4.14.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.14.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.14.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.14.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0-rc4/xen-4.14.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.14.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0-rc4/xen-4.14.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.14.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.14.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.14.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0-rc5/xen-4.14.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.14.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0-rc5/xen-4.14.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.14.0-rc6",
+        "link": "https://downloads.xenproject.org/release/xen/4.14.0-rc6/",
+        "files": [
+          {
+            "name": "xen-4.14.0-rc6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0-rc6/xen-4.14.0-rc6.tar.gz"
+          },
+          {
+            "name": "xen-4.14.0-rc6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0-rc6/xen-4.14.0-rc6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.14.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.14.0/",
+        "files": [
+          {
+            "name": "xen-4.14.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0/xen-4.14.0.tar.gz"
+          },
+          {
+            "name": "xen-4.14.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.0/xen-4.14.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.14.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.14.1/",
+        "files": [
+          {
+            "name": "xen-4.14.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.1/xen-4.14.1.tar.gz"
+          },
+          {
+            "name": "xen-4.14.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.1/xen-4.14.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.14.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.14.2/",
+        "files": [
+          {
+            "name": "xen-4.14.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.2/xen-4.14.2.tar.gz"
+          },
+          {
+            "name": "xen-4.14.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.2/xen-4.14.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.14.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.14.3/",
+        "files": [
+          {
+            "name": "xen-4.14.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.3/xen-4.14.3.tar.gz"
+          },
+          {
+            "name": "xen-4.14.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.3/xen-4.14.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.14.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.14.4/",
+        "files": [
+          {
+            "name": "xen-4.14.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.4/xen-4.14.4.tar.gz"
+          },
+          {
+            "name": "xen-4.14.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.4/xen-4.14.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.14.5",
+        "link": "https://downloads.xenproject.org/release/xen/4.14.5/",
+        "files": [
+          {
+            "name": "xen-4.14.5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.5/xen-4.14.5.tar.gz"
+          },
+          {
+            "name": "xen-4.14.5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.5/xen-4.14.5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.14.6",
+        "link": "https://downloads.xenproject.org/release/xen/4.14.6/",
+        "files": [
+          {
+            "name": "xen-4.14.6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.6/xen-4.14.6.tar.gz"
+          },
+          {
+            "name": "xen-4.14.6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.14.6/xen-4.14.6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.15.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.15.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.15.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.0-rc1/xen-4.15.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.15.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.0-rc1/xen-4.15.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.15.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.15.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.15.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.0-rc2/xen-4.15.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.15.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.0-rc2/xen-4.15.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.15.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.15.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.15.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.0-rc3/xen-4.15.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.15.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.0-rc3/xen-4.15.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.15.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.15.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.15.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.0-rc4/xen-4.15.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.15.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.0-rc4/xen-4.15.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.15.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.15.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.15.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.0-rc5/xen-4.15.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.15.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.0-rc5/xen-4.15.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.15.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.15.0/",
+        "files": [
+          {
+            "name": "xen-4.15.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.0/xen-4.15.0.tar.gz"
+          },
+          {
+            "name": "xen-4.15.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.0/xen-4.15.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.15.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.15.1/",
+        "files": [
+          {
+            "name": "xen-4.15.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.1/xen-4.15.1.tar.gz"
+          },
+          {
+            "name": "xen-4.15.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.1/xen-4.15.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.15.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.15.2/",
+        "files": [
+          {
+            "name": "xen-4.15.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.2/xen-4.15.2.tar.gz"
+          },
+          {
+            "name": "xen-4.15.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.2/xen-4.15.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.15.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.15.3/",
+        "files": [
+          {
+            "name": "xen-4.15.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.3/xen-4.15.3.tar.gz"
+          },
+          {
+            "name": "xen-4.15.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.3/xen-4.15.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.15.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.15.4/",
+        "files": [
+          {
+            "name": "xen-4.15.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.4/xen-4.15.4.tar.gz"
+          },
+          {
+            "name": "xen-4.15.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.4/xen-4.15.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.15.5",
+        "link": "https://downloads.xenproject.org/release/xen/4.15.5/",
+        "files": [
+          {
+            "name": "xen-4.15.5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.5/xen-4.15.5.tar.gz"
+          },
+          {
+            "name": "xen-4.15.5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.5/xen-4.15.5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.15.6",
+        "link": "https://downloads.xenproject.org/release/xen/4.15.6/",
+        "files": [
+          {
+            "name": "xen-4.15.6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.6/xen-4.15.6.tar.gz"
+          },
+          {
+            "name": "xen-4.15.6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.6/xen-4.15.6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.15.7",
+        "link": "https://downloads.xenproject.org/release/xen/4.15.7/",
+        "files": [
+          {
+            "name": "xen-4.15.7.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.7/xen-4.15.7.tar.gz"
+          },
+          {
+            "name": "xen-4.15.7.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.15.7/xen-4.15.7.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.16.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.16.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.16.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.0-rc1/xen-4.16.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.16.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.0-rc1/xen-4.16.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.16.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.16.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.16.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.0-rc2/xen-4.16.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.16.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.0-rc2/xen-4.16.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.16.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.16.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.16.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.0-rc3/xen-4.16.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.16.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.0-rc3/xen-4.16.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.16.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.16.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.16.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.0-rc4/xen-4.16.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.16.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.0-rc4/xen-4.16.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.16.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.16.0/",
+        "files": [
+          {
+            "name": "xen-4.16.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.0/xen-4.16.0.tar.gz"
+          },
+          {
+            "name": "xen-4.16.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.0/xen-4.16.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.16.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.16.1/",
+        "files": [
+          {
+            "name": "xen-4.16.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.1/xen-4.16.1.tar.gz"
+          },
+          {
+            "name": "xen-4.16.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.1/xen-4.16.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.16.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.16.2/",
+        "files": [
+          {
+            "name": "xen-4.16.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.2/xen-4.16.2.tar.gz"
+          },
+          {
+            "name": "xen-4.16.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.2/xen-4.16.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.16.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.16.3/",
+        "files": [
+          {
+            "name": "xen-4.16.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.3/xen-4.16.3.tar.gz"
+          },
+          {
+            "name": "xen-4.16.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.3/xen-4.16.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.16.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.16.4/",
+        "files": [
+          {
+            "name": "xen-4.16.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.4/xen-4.16.4.tar.gz"
+          },
+          {
+            "name": "xen-4.16.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.4/xen-4.16.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.16.5",
+        "link": "https://downloads.xenproject.org/release/xen/4.16.5/",
+        "files": [
+          {
+            "name": "xen-4.16.5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.5/xen-4.16.5.tar.gz"
+          },
+          {
+            "name": "xen-4.16.5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.5/xen-4.16.5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.16.6",
+        "link": "https://downloads.xenproject.org/release/xen/4.16.6/",
+        "files": [
+          {
+            "name": "xen-4.16.6.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.6/xen-4.16.6.tar.gz"
+          },
+          {
+            "name": "xen-4.16.6.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.16.6/xen-4.16.6.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.17.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.17.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.17.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.0-rc1/xen-4.17.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.17.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.0-rc1/xen-4.17.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.17.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.17.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.17.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.0-rc2/xen-4.17.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.17.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.0-rc2/xen-4.17.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.17.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.17.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.17.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.0-rc3/xen-4.17.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.17.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.0-rc3/xen-4.17.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.17.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.17.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.17.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.0-rc4/xen-4.17.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.17.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.0-rc4/xen-4.17.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.17.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.17.0/",
+        "files": [
+          {
+            "name": "xen-4.17.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.0/xen-4.17.0.tar.gz"
+          },
+          {
+            "name": "xen-4.17.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.0/xen-4.17.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.17.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.17.1/",
+        "files": [
+          {
+            "name": "xen-4.17.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.1/xen-4.17.1.tar.gz"
+          },
+          {
+            "name": "xen-4.17.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.1/xen-4.17.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.17.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.17.2/",
+        "files": [
+          {
+            "name": "xen-4.17.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.2/xen-4.17.2.tar.gz"
+          },
+          {
+            "name": "xen-4.17.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.2/xen-4.17.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.17.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.17.3/",
+        "files": [
+          {
+            "name": "xen-4.17.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.3/xen-4.17.3.tar.gz"
+          },
+          {
+            "name": "xen-4.17.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.3/xen-4.17.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.17.4",
+        "link": "https://downloads.xenproject.org/release/xen/4.17.4/",
+        "files": [
+          {
+            "name": "xen-4.17.4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.4/xen-4.17.4.tar.gz"
+          },
+          {
+            "name": "xen-4.17.4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.4/xen-4.17.4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.17.5",
+        "link": "https://downloads.xenproject.org/release/xen/4.17.5/",
+        "files": [
+          {
+            "name": "xen-4.17.5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.5/xen-4.17.5.tar.gz"
+          },
+          {
+            "name": "xen-4.17.5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.17.5/xen-4.17.5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.18.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.18.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.18.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.0-rc1/xen-4.18.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.18.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.0-rc1/xen-4.18.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.18.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.18.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.18.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.0-rc2/xen-4.18.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.18.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.0-rc2/xen-4.18.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.18.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.18.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.18.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.0-rc3/xen-4.18.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.18.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.0-rc3/xen-4.18.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.18.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.18.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.18.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.0-rc4/xen-4.18.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.18.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.0-rc4/xen-4.18.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.18.0-rc5",
+        "link": "https://downloads.xenproject.org/release/xen/4.18.0-rc5/",
+        "files": [
+          {
+            "name": "xen-4.18.0-rc5.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.0-rc5/xen-4.18.0-rc5.tar.gz"
+          },
+          {
+            "name": "xen-4.18.0-rc5.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.0-rc5/xen-4.18.0-rc5.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.18.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.18.0/",
+        "files": [
+          {
+            "name": "xen-4.18.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.0/xen-4.18.0.tar.gz"
+          },
+          {
+            "name": "xen-4.18.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.0/xen-4.18.0.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.18.1",
+        "link": "https://downloads.xenproject.org/release/xen/4.18.1/",
+        "files": [
+          {
+            "name": "xen-4.18.1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.1/xen-4.18.1.tar.gz"
+          },
+          {
+            "name": "xen-4.18.1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.1/xen-4.18.1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.18.2",
+        "link": "https://downloads.xenproject.org/release/xen/4.18.2/",
+        "files": [
+          {
+            "name": "xen-4.18.2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.2/xen-4.18.2.tar.gz"
+          },
+          {
+            "name": "xen-4.18.2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.2/xen-4.18.2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.18.3",
+        "link": "https://downloads.xenproject.org/release/xen/4.18.3/",
+        "files": [
+          {
+            "name": "xen-4.18.3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.3/xen-4.18.3.tar.gz"
+          },
+          {
+            "name": "xen-4.18.3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.18.3/xen-4.18.3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.19.0-rc1",
+        "link": "https://downloads.xenproject.org/release/xen/4.19.0-rc1/",
+        "files": [
+          {
+            "name": "xen-4.19.0-rc1.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.19.0-rc1/xen-4.19.0-rc1.tar.gz"
+          },
+          {
+            "name": "xen-4.19.0-rc1.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.19.0-rc1/xen-4.19.0-rc1.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.19.0-rc2",
+        "link": "https://downloads.xenproject.org/release/xen/4.19.0-rc2/",
+        "files": [
+          {
+            "name": "xen-4.19.0-rc2.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.19.0-rc2/xen-4.19.0-rc2.tar.gz"
+          },
+          {
+            "name": "xen-4.19.0-rc2.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.19.0-rc2/xen-4.19.0-rc2.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.19.0-rc3",
+        "link": "https://downloads.xenproject.org/release/xen/4.19.0-rc3/",
+        "files": [
+          {
+            "name": "xen-4.19.0-rc3.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.19.0-rc3/xen-4.19.0-rc3.tar.gz"
+          },
+          {
+            "name": "xen-4.19.0-rc3.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.19.0-rc3/xen-4.19.0-rc3.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.19.0-rc4",
+        "link": "https://downloads.xenproject.org/release/xen/4.19.0-rc4/",
+        "files": [
+          {
+            "name": "xen-4.19.0-rc4.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.19.0-rc4/xen-4.19.0-rc4.tar.gz"
+          },
+          {
+            "name": "xen-4.19.0-rc4.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.19.0-rc4/xen-4.19.0-rc4.tar.gz.sig"
+          }
+        ]
+      },
+      {
+        "name": "4.19.0",
+        "link": "https://downloads.xenproject.org/release/xen/4.19.0/",
+        "files": [
+          {
+            "name": "xen-4.19.0.tar.gz",
+            "url": "https://downloads.xenproject.org/release/xen//4.19.0/xen-4.19.0.tar.gz"
+          },
+          {
+            "name": "xen-4.19.0.tar.gz.sig",
+            "url": "https://downloads.xenproject.org/release/xen//4.19.0/xen-4.19.0.tar.gz.sig"
+          }
+        ]
+      }
+    ]
+  },
+  {
+    "name": "Windows PV Drivers",
+    "key": "windowspvdrivers",
+    "versions": [
+      {
+        "link": "",
+        "name": "default",
+        "files": [
+          {
+            "name": "xenbus.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xenbus.tar"
+          },
+          {
+            "name": "xencons.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xencons.tar"
+          },
+          {
+            "name": "xenhid.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xenhid.tar"
+          },
+          {
+            "name": "xeniface.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xeniface.tar"
+          },
+          {
+            "name": "xennet.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xennet.tar"
+          },
+          {
+            "name": "xenvbd.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xenvbd.tar"
+          },
+          {
+            "name": "xenvif.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xenvif.tar"
+          },
+          {
+            "name": "xenvkbd.tar",
+            "url": "https://xenbits.xenproject.org/pvdrivers/win/xenvkbd.tar"
+          }
+        ]
+      }
+    ]
+  },
+  {
+    "name": "Mirage OS",
+    "key": "mirageos",
+    "versions": [
+      {
+        "name": "3.10.1",
+        "link": "https://github.com/mirage/mirage/releases/tag/v3.10.1",
+        "files": [
+          {
+            "name": "mirage-3.10.1.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v3.10.1"
+          }
+        ]
+      },
+      {
+        "name": "3.10.2",
+        "link": "https://github.com/mirage/mirage/releases/tag/v3.10.2",
+        "files": [
+          {
+            "name": "mirage-3.10.2.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v3.10.2"
+          }
+        ]
+      },
+      {
+        "name": "3.10.3",
+        "link": "https://github.com/mirage/mirage/releases/tag/v3.10.3",
+        "files": [
+          {
+            "name": "mirage-3.10.3.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v3.10.3"
+          }
+        ]
+      },
+      {
+        "name": "3.10.4",
+        "link": "https://github.com/mirage/mirage/releases/tag/v3.10.4",
+        "files": [
+          {
+            "name": "mirage-3.10.4.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v3.10.4"
+          }
+        ]
+      },
+      {
+        "name": "3.10.5",
+        "link": "https://github.com/mirage/mirage/releases/tag/v3.10.5",
+        "files": [
+          {
+            "name": "mirage-3.10.5.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v3.10.5"
+          }
+        ]
+      },
+      {
+        "name": "3.10.6",
+        "link": "https://github.com/mirage/mirage/releases/tag/v3.10.6",
+        "files": [
+          {
+            "name": "mirage-3.10.6.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v3.10.6"
+          }
+        ]
+      },
+      {
+        "name": "3.10.7",
+        "link": "https://github.com/mirage/mirage/releases/tag/v3.10.7",
+        "files": [
+          {
+            "name": "mirage-3.10.7.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v3.10.7"
+          }
+        ]
+      },
+      {
+        "name": "3.10.8",
+        "link": "https://github.com/mirage/mirage/releases/tag/v3.10.8",
+        "files": [
+          {
+            "name": "mirage-3.10.8.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v3.10.8"
+          }
+        ]
+      },
+      {
+        "name": "4.0.0",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.0.0",
+        "files": [
+          {
+            "name": "mirage-4.0.0.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.0.0"
+          }
+        ]
+      },
+      {
+        "name": "4.0.0_beta1",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.0.0_beta1",
+        "files": [
+          {
+            "name": "mirage-4.0.0_beta1.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.0.0_beta1"
+          }
+        ]
+      },
+      {
+        "name": "4.0.0_beta2",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.0.0_beta2",
+        "files": [
+          {
+            "name": "mirage-4.0.0_beta2.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.0.0_beta2"
+          }
+        ]
+      },
+      {
+        "name": "4.0.0_beta3",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.0.0_beta3",
+        "files": [
+          {
+            "name": "mirage-4.0.0_beta3.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.0.0_beta3"
+          }
+        ]
+      },
+      {
+        "name": "4.1.0",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.1.0",
+        "files": [
+          {
+            "name": "mirage-4.1.0.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.1.0"
+          }
+        ]
+      },
+      {
+        "name": "4.1.1",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.1.1",
+        "files": [
+          {
+            "name": "mirage-4.1.1.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.1.1"
+          }
+        ]
+      },
+      {
+        "name": "4.2.0",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.2.0",
+        "files": [
+          {
+            "name": "mirage-4.2.0.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.2.0"
+          }
+        ]
+      },
+      {
+        "name": "4.2.1",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.2.1",
+        "files": [
+          {
+            "name": "mirage-4.2.1.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.2.1"
+          }
+        ]
+      },
+      {
+        "name": "4.3.0",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.3.0",
+        "files": [
+          {
+            "name": "mirage-4.3.0.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.3.0"
+          }
+        ]
+      },
+      {
+        "name": "4.3.1",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.3.1",
+        "files": [
+          {
+            "name": "mirage-4.3.1.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.3.1"
+          }
+        ]
+      },
+      {
+        "name": "4.3.2",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.3.2",
+        "files": [
+          {
+            "name": "mirage-4.3.2.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.3.2"
+          }
+        ]
+      },
+      {
+        "name": "4.3.3",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.3.3",
+        "files": [
+          {
+            "name": "mirage-4.3.3.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.3.3"
+          }
+        ]
+      },
+      {
+        "name": "4.3.4",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.3.4",
+        "files": [
+          {
+            "name": "mirage-4.3.4.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.3.4"
+          }
+        ]
+      },
+      {
+        "name": "4.3.5",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.3.5",
+        "files": [
+          {
+            "name": "mirage-4.3.5.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.3.5"
+          }
+        ]
+      },
+      {
+        "name": "4.3.6",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.3.6",
+        "files": [
+          {
+            "name": "mirage-4.3.6.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.3.6"
+          }
+        ]
+      },
+      {
+        "name": "4.4.0",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.4.0",
+        "files": [
+          {
+            "name": "mirage-4.4.0.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.4.0"
+          }
+        ]
+      },
+      {
+        "name": "4.4.1",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.4.1",
+        "files": [
+          {
+            "name": "mirage-4.4.1.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.4.1"
+          }
+        ]
+      },
+      {
+        "name": "4.4.2",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.4.2",
+        "files": [
+          {
+            "name": "mirage-4.4.2.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.4.2"
+          }
+        ]
+      },
+      {
+        "name": "4.5.0",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.5.0",
+        "files": [
+          {
+            "name": "mirage-4.5.0.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.5.0"
+          }
+        ]
+      },
+      {
+        "name": "4.5.1",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.5.1",
+        "files": [
+          {
+            "name": "mirage-4.5.1.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.5.1"
+          }
+        ]
+      },
+      {
+        "name": "4.6.0",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.6.0",
+        "files": [
+          {
+            "name": "mirage-4.6.0.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.6.0"
+          }
+        ]
+      },
+      {
+        "name": "4.6.1",
+        "link": "https://github.com/mirage/mirage/releases/tag/v4.6.1",
+        "files": [
+          {
+            "name": "mirage-4.6.1.tar.gz",
+            "url": "https://api.github.com/repos/mirage/mirage/tarball/v4.6.1"
+          }
+        ]
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/assets/jsconfig.json b/assets/jsconfig.json
new file mode 100644 (file)
index 0000000..f32bb45
--- /dev/null
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+  "baseUrl": ".",
+  "paths": {
+   "*": [
+    "../themes/xen-project/assets/*"
+   ]
+  }
+ }
+}
\ No newline at end of file
diff --git a/base-resources/fonts/fonts/Gotham Bold.otf b/base-resources/fonts/fonts/Gotham Bold.otf
new file mode 100644 (file)
index 0000000..649fde3
Binary files /dev/null and b/base-resources/fonts/fonts/Gotham Bold.otf differ
diff --git a/base-resources/fonts/fonts/Gotham Book.otf b/base-resources/fonts/fonts/Gotham Book.otf
new file mode 100644 (file)
index 0000000..29b1d3d
Binary files /dev/null and b/base-resources/fonts/fonts/Gotham Book.otf differ
diff --git a/base-resources/fonts/fonts/Gotham Medium.otf b/base-resources/fonts/fonts/Gotham Medium.otf
new file mode 100644 (file)
index 0000000..0fcb6c8
Binary files /dev/null and b/base-resources/fonts/fonts/Gotham Medium.otf differ
diff --git a/base-resources/fonts/webfontkit-20240704-041112/generator_config.txt b/base-resources/fonts/webfontkit-20240704-041112/generator_config.txt
new file mode 100755 (executable)
index 0000000..81e64f6
--- /dev/null
@@ -0,0 +1,5 @@
+# Font Squirrel Font-face Generator Configuration File
+# Upload this file to the generator to recreate the settings
+# you used to create these fonts.
+
+{"mode":"optimal","formats":["woff","woff2"],"tt_instructor":"default","fix_gasp":"xy","fix_vertical_metrics":"Y","metrics_ascent":"","metrics_descent":"","metrics_linegap":"","add_spaces":"Y","add_hyphens":"Y","fallback":"none","fallback_custom":"100","options_subset":"basic","subset_custom":"","subset_custom_range":"","subset_ot_features_list":"","css_stylesheet":"stylesheet.css","filename_suffix":"-webfont","emsquare":"2048","spacing_adjustment":"0"}
\ No newline at end of file
diff --git a/base-resources/fonts/webfontkit-20240704-041112/gotham_bold-demo.html b/base-resources/fonts/webfontkit-20240704-041112/gotham_bold-demo.html
new file mode 100755 (executable)
index 0000000..6804768
--- /dev/null
@@ -0,0 +1,695 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
+    <script type="text/javascript">
+               (function($) {
+                       $.fn.easyTabs = function(option) {
+                               var param = jQuery.extend({ fadeSpeed: 'fast', defaultContent: 1, activeClass: 'active' }, option);
+                               $(this).each(function() {
+                                       var thisId = '#' + this.id;
+                                       if ( param.defaultContent == '' )
+                                       {
+                                               param.defaultContent = 1;
+                                       }
+                                       if ( typeof param.defaultContent == 'number' )
+                                       {
+                                               var defaultTab = $(thisId + ' .tabs li:eq(' + (param.defaultContent - 1) + ') a').attr('href').substr(1);
+                                       }
+                                       else
+                                       {
+                                               var defaultTab = param.defaultContent;
+                                       }
+                                       $(thisId + ' .tabs li a').each(function() {
+                                               var tabToHide = $(this).attr('href').substr(1);
+                                               $('#' + tabToHide).addClass('easytabs-tab-content');
+                                       });
+                                       hideAll();
+                                       changeContent(defaultTab);
+
+                                       function hideAll() {$(thisId + ' .easytabs-tab-content').hide();}
+
+                                       function changeContent(tabId)
+                                       {
+                                               hideAll();
+                                               $(thisId + ' .tabs li').removeClass(param.activeClass);
+                                               $(thisId + ' .tabs li a[href=#' + tabId + ']').closest('li').addClass(param.activeClass);
+                                               if ( param.fadeSpeed != 'none' )
+                                               {
+                                                       $(thisId + ' #' + tabId).fadeIn(param.fadeSpeed);
+                                               }
+                                               else
+                                               {
+                                                       $(thisId + ' #' + tabId).show();
+                                               }
+                                       }
+
+                                       $(thisId + ' .tabs li').click(function() {
+                                               var tabId = $(this).find('a').attr('href').substr(1);
+                                               changeContent(tabId);
+                                               return false;
+                                       });
+                               });
+                       }
+               })(jQuery);
+    </script>
+    <link rel="stylesheet" href="specimen_files/specimen_stylesheet.css" type="text/css" charset="utf-8"/>
+    <link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8"/>
+
+    <style type="text/css">
+                       body {
+                       font-family: 'gothambold';
+                       }
+
+            </style>
+
+    <title>Gotham Bold Regular Specimen</title>
+
+
+    <script type="text/javascript" charset="utf-8">
+               $(document).ready(function() {
+                       $('#container').easyTabs({ defaultContent: 1 });
+               });
+    </script>
+</head>
+
+<body>
+<div id="container">
+    <div id="header">
+               Gotham Bold Regular    </div>
+    <ul class="tabs">
+        <li><a href="#specimen">Specimen</a></li>
+        <li><a href="#layout">Sample Layout</a></li>
+                       <li><a href="#glyphs">Glyphs &amp; Languages</a></li>
+        <li><a href="#installing">Installing Webfonts</a></li>
+
+    </ul>
+
+    <div id="main_content">
+
+
+        <div id="specimen">
+
+            <div class="section">
+                <div class="grid12 firstcol">
+                    <div class="huge">AaBb</div>
+                </div>
+            </div>
+
+            <div class="section">
+                <div class="glyph_range">A&#x200B;B&#x200b;C&#x200b;D&#x200b;E&#x200b;F&#x200b;G&#x200b;H&#x200b;I&#x200b;J&#x200b;K&#x200b;L&#x200b;M&#x200b;N&#x200b;O&#x200b;P&#x200b;Q&#x200b;R&#x200b;S&#x200b;T&#x200b;U&#x200b;V&#x200b;W&#x200b;X&#x200b;Y&#x200b;Z&#x200b;a&#x200b;b&#x200b;c&#x200b;d&#x200b;e&#x200b;f&#x200b;g&#x200b;h&#x200b;i&#x200b;j&#x200b;k&#x200b;l&#x200b;m&#x200b;n&#x200b;o&#x200b;p&#x200b;q&#x200b;r&#x200b;s&#x200b;t&#x200b;u&#x200b;v&#x200b;w&#x200b;x&#x200b;y&#x200b;z&#x200b;1&#x200b;2&#x200b;3&#x200b;4&#x200b;5&#x200b;6&#x200b;7&#x200b;8&#x200b;9&#x200b;0&#x200b;&amp;&#x200b;.&#x200b;,&#x200b;?&#x200b;!&#x200b;&#64;&#x200b;(&#x200b;)&#x200b;#&#x200b;$&#x200b;%&#x200b;*&#x200b;+&#x200b;-&#x200b;=&#x200b;:&#x200b;;</div>
+            </div>
+            <div class="section">
+                <div class="grid12 firstcol">
+                    <table class="sample_table">
+                        <tr>
+                            <td>10</td>
+                            <td class="size10">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>11</td>
+                            <td class="size11">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>12</td>
+                            <td class="size12">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>13</td>
+                            <td class="size13">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>14</td>
+                            <td class="size14">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>16</td>
+                            <td class="size16">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>18</td>
+                            <td class="size18">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>20</td>
+                            <td class="size20">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>24</td>
+                            <td class="size24">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>30</td>
+                            <td class="size30">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>36</td>
+                            <td class="size36">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>48</td>
+                            <td class="size48">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>60</td>
+                            <td class="size60">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>72</td>
+                            <td class="size72">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>90</td>
+                            <td class="size90">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                    </table>
+
+                </div>
+
+            </div>
+
+
+            <div class="section" id="bodycomparison">
+
+
+                <div id="xheight">
+                    <div class="fontbody">&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;body</div>
+                    <div class="arialbody">body</div>
+                    <div class="verdanabody">body</div>
+                    <div class="georgiabody">body</div>
+                </div>
+                <div class="fontbody" style="z-index:1">
+                    body<span>Gotham Bold Regular</span>
+                </div>
+                <div class="arialbody" style="z-index:1">
+                    body<span>Arial</span>
+                </div>
+                <div class="verdanabody" style="z-index:1">
+                    body<span>Verdana</span>
+                </div>
+                <div class="georgiabody" style="z-index:1">
+                    body<span>Georgia</span>
+                </div>
+
+
+            </div>
+
+
+            <div class="section psample psample_row1" id="">
+
+                <div class="grid2 firstcol">
+                    <p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid3">
+                    <p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid3">
+                    <p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid4">
+                    <p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="white_blend"></div>
+
+            </div>
+            <div class="section psample psample_row2" id="">
+                <div class="grid3 firstcol">
+                    <p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid4">
+                    <p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid5">
+                    <p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+
+                <div class="white_blend"></div>
+
+            </div>
+
+            <div class="section psample psample_row3" id="">
+                <div class="grid5 firstcol">
+                    <p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+                <div class="grid7">
+                    <p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+
+                <div class="white_blend"></div>
+
+            </div>
+
+            <div class="section psample psample_row4" id="">
+                <div class="grid12 firstcol">
+                    <p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+                <div class="white_blend"></div>
+
+            </div>
+
+
+            <div class="section psample psample_row1 fullreverse">
+                <div class="grid2 firstcol">
+                    <p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid3">
+                    <p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid3">
+                    <p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid4">
+                    <p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="black_blend"></div>
+
+            </div>
+
+            <div class="section psample psample_row2 fullreverse">
+                <div class="grid3 firstcol">
+                    <p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid4">
+                    <p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid5">
+                    <p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="black_blend"></div>
+
+            </div>
+
+            <div class="section psample fullreverse psample_row3" id="">
+                <div class="grid5 firstcol">
+                    <p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+                <div class="grid7">
+                    <p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+
+                <div class="black_blend"></div>
+
+            </div>
+
+            <div class="section psample fullreverse psample_row4" id="" style="border-bottom: 20px #000 solid;">
+                <div class="grid12 firstcol">
+                    <p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+                <div class="black_blend"></div>
+
+            </div>
+
+
+        </div>
+
+        <div id="layout">
+
+            <div class="section">
+
+                <div class="grid12 firstcol">
+                    <h1>Lorem Ipsum Dolor</h1>
+                    <h2>Etiam porta sem malesuada magna mollis euismod</h2>
+
+                    <p class="byline">By <a href="#link">Aenean Lacinia</a></p>
+                </div>
+            </div>
+            <div class="section">
+                <div class="grid8 firstcol">
+                    <p class="large">Donec sed odio dui. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
+
+
+                    <h3>Pellentesque ornare sem</h3>
+
+                    <p>Maecenas sed diam eget risus varius blandit sit amet non magna. Maecenas faucibus mollis interdum. Donec ullamcorper nulla non metus auctor fringilla. Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam id dolor id nibh ultricies vehicula ut id elit. </p>
+
+                    <p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p>
+
+                    <p>Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed consectetur. </p>
+
+                    <p>Nullam quis risus eget urna mollis ornare vel eu leo. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas sed diam eget risus varius blandit sit amet non magna. Donec ullamcorper nulla non metus auctor fringilla. </p>
+
+                    <h3>Cras mattis consectetur</h3>
+
+                    <p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Aenean lacinia bibendum nulla sed consectetur. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras mattis consectetur purus sit amet fermentum. </p>
+
+                    <p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam quis risus eget urna mollis ornare vel eu leo. Cras mattis consectetur purus sit amet fermentum.</p>
+                </div>
+
+                <div class="grid4 sidebar">
+
+                    <div class="box reverse">
+                        <p class="last">Nullam quis risus eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor fringilla. Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
+                    </div>
+
+                    <p class="caption">Maecenas sed diam eget risus varius.</p>
+
+                    <p>Vestibulum id ligula porta felis euismod semper. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Vestibulum id ligula porta felis euismod semper. Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
+
+
+                    <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Aenean lacinia bibendum nulla sed consectetur. Nullam quis risus eget urna mollis ornare vel eu leo. </p>
+
+                    <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec ullamcorper nulla non metus auctor fringilla. Maecenas faucibus mollis interdum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
+
+                </div>
+            </div>
+
+        </div>
+
+
+               
+
+        <div id="glyphs">
+            <div class="section">
+                <div class="grid12 firstcol">
+
+                    <h1>Language Support</h1>
+                    <p>The subset of Gotham Bold Regular in this kit supports the following languages:<br/>
+
+                                               Albanian, Basque, Breton, Chamorro, Danish, Dutch, English, Faroese, Finnish, French, Frisian, Galician, German, Icelandic, Italian, Malagasy, Norwegian, Portuguese, Spanish, Alsatian, Aragonese, Arapaho, Arrernte, Asturian, Aymara, Bislama, Cebuano, Corsican, Fijian, French_creole, Genoese, Gilbertese, Greenlandic, Haitian_creole, Hiligaynon, Hmong, Hopi, Ibanag, Iloko_ilokano, Indonesian, Interglossa_glosa, Interlingua, Irish_gaelic, Jerriais, Lojban, Lombard, Luxembourgeois, Manx, Mohawk, Norfolk_pitcairnese, Occitan, Oromo, Pangasinan, Papiamento, Piedmontese, Potawatomi, Rhaeto-romance, Romansh, Rotokas, Sami_lule, Samoan, Sardinian, Scots_gaelic, Seychelles_creole, Shona, Sicilian, Somali, Southern_ndebele, Swahili, Swati_swazi, Tagalog_filipino_pilipino, Tetum, Tok_pisin, Uyghur_latinized, Volapuk, Walloon, Warlpiri, Xhosa, Yapese, Zulu, Latinbasic, Ubasic, Demo                    </p>
+                    <h1>Glyph Chart</h1>
+                    <p>The subset of Gotham Bold Regular in this kit includes all the glyphs listed below. Unicode entities are included above each glyph to help you insert individual characters into your layout.</p>
+                    <div id="glyph_chart">
+
+                                                                                                                                                                                               <div><p>&amp;#32;</p>&#32;</div>
+                                                                                                                                                                                               <div><p>&amp;#33;</p>&#33;</div>
+                                                                                                                                                                                               <div><p>&amp;#34;</p>&#34;</div>
+                                                                                                                                                                                               <div><p>&amp;#35;</p>&#35;</div>
+                                                                                                                                                                                               <div><p>&amp;#36;</p>&#36;</div>
+                                                                                                                                                                                               <div><p>&amp;#37;</p>&#37;</div>
+                                                                                                                                                                                               <div><p>&amp;#38;</p>&#38;</div>
+                                                                                                                                                                                               <div><p>&amp;#39;</p>&#39;</div>
+                                                                                                                                                                                               <div><p>&amp;#40;</p>&#40;</div>
+                                                                                                                                                                                               <div><p>&amp;#41;</p>&#41;</div>
+                                                                                                                                                                                               <div><p>&amp;#42;</p>&#42;</div>
+                                                                                                                                                                                               <div><p>&amp;#43;</p>&#43;</div>
+                                                                                                                                                                                               <div><p>&amp;#44;</p>&#44;</div>
+                                                                                                                                                                                               <div><p>&amp;#45;</p>&#45;</div>
+                                                                                                                                                                                               <div><p>&amp;#46;</p>&#46;</div>
+                                                                                                                                                                                               <div><p>&amp;#47;</p>&#47;</div>
+                                                                                                                                                                                               <div><p>&amp;#48;</p>&#48;</div>
+                                                                                                                                                                                               <div><p>&amp;#49;</p>&#49;</div>
+                                                                                                                                                                                               <div><p>&amp;#50;</p>&#50;</div>
+                                                                                                                                                                                               <div><p>&amp;#51;</p>&#51;</div>
+                                                                                                                                                                                               <div><p>&amp;#52;</p>&#52;</div>
+                                                                                                                                                                                               <div><p>&amp;#53;</p>&#53;</div>
+                                                                                                                                                                                               <div><p>&amp;#54;</p>&#54;</div>
+                                                                                                                                                                                               <div><p>&amp;#55;</p>&#55;</div>
+                                                                                                                                                                                               <div><p>&amp;#56;</p>&#56;</div>
+                                                                                                                                                                                               <div><p>&amp;#57;</p>&#57;</div>
+                                                                                                                                                                                               <div><p>&amp;#58;</p>&#58;</div>
+                                                                                                                                                                                               <div><p>&amp;#59;</p>&#59;</div>
+                                                                                                                                                                                               <div><p>&amp;#60;</p>&#60;</div>
+                                                                                                                                                                                               <div><p>&amp;#61;</p>&#61;</div>
+                                                                                                                                                                                               <div><p>&amp;#62;</p>&#62;</div>
+                                                                                                                                                                                               <div><p>&amp;#63;</p>&#63;</div>
+                                                                                                                                                                                               <div><p>&amp;#64;</p>&#64;</div>
+                                                                                                                                                                                               <div><p>&amp;#65;</p>&#65;</div>
+                                                                                                                                                                                               <div><p>&amp;#66;</p>&#66;</div>
+                                                                                                                                                                                               <div><p>&amp;#67;</p>&#67;</div>
+                                                                                                                                                                                               <div><p>&amp;#68;</p>&#68;</div>
+                                                                                                                                                                                               <div><p>&amp;#69;</p>&#69;</div>
+                                                                                                                                                                                               <div><p>&amp;#70;</p>&#70;</div>
+                                                                                                                                                                                               <div><p>&amp;#71;</p>&#71;</div>
+                                                                                                                                                                                               <div><p>&amp;#72;</p>&#72;</div>
+                                                                                                                                                                                               <div><p>&amp;#73;</p>&#73;</div>
+                                                                                                                                                                                               <div><p>&amp;#74;</p>&#74;</div>
+                                                                                                                                                                                               <div><p>&amp;#75;</p>&#75;</div>
+                                                                                                                                                                                               <div><p>&amp;#76;</p>&#76;</div>
+                                                                                                                                                                                               <div><p>&amp;#77;</p>&#77;</div>
+                                                                                                                                                                                               <div><p>&amp;#78;</p>&#78;</div>
+                                                                                                                                                                                               <div><p>&amp;#79;</p>&#79;</div>
+                                                                                                                                                                                               <div><p>&amp;#80;</p>&#80;</div>
+                                                                                                                                                                                               <div><p>&amp;#81;</p>&#81;</div>
+                                                                                                                                                                                               <div><p>&amp;#82;</p>&#82;</div>
+                                                                                                                                                                                               <div><p>&amp;#83;</p>&#83;</div>
+                                                                                                                                                                                               <div><p>&amp;#84;</p>&#84;</div>
+                                                                                                                                                                                               <div><p>&amp;#85;</p>&#85;</div>
+                                                                                                                                                                                               <div><p>&amp;#86;</p>&#86;</div>
+                                                                                                                                                                                               <div><p>&amp;#87;</p>&#87;</div>
+                                                                                                                                                                                               <div><p>&amp;#88;</p>&#88;</div>
+                                                                                                                                                                                               <div><p>&amp;#89;</p>&#89;</div>
+                                                                                                                                                                                               <div><p>&amp;#90;</p>&#90;</div>
+                                                                                                                                                                                               <div><p>&amp;#91;</p>&#91;</div>
+                                                                                                                                                                                               <div><p>&amp;#92;</p>&#92;</div>
+                                                                                                                                                                                               <div><p>&amp;#93;</p>&#93;</div>
+                                                                                                                                                                                               <div><p>&amp;#94;</p>&#94;</div>
+                                                                                                                                                                                               <div><p>&amp;#95;</p>&#95;</div>
+                                                                                                                                                                                               <div><p>&amp;#96;</p>&#96;</div>
+                                                                                                                                                                                               <div><p>&amp;#97;</p>&#97;</div>
+                                                                                                                                                                                               <div><p>&amp;#98;</p>&#98;</div>
+                                                                                                                                                                                               <div><p>&amp;#99;</p>&#99;</div>
+                                                                                                                                                                                               <div><p>&amp;#100;</p>&#100;</div>
+                                                                                                                                                                                               <div><p>&amp;#101;</p>&#101;</div>
+                                                                                                                                                                                               <div><p>&amp;#102;</p>&#102;</div>
+                                                                                                                                                                                               <div><p>&amp;#103;</p>&#103;</div>
+                                                                                                                                                                                               <div><p>&amp;#104;</p>&#104;</div>
+                                                                                                                                                                                               <div><p>&amp;#105;</p>&#105;</div>
+                                                                                                                                                                                               <div><p>&amp;#106;</p>&#106;</div>
+                                                                                                                                                                                               <div><p>&amp;#107;</p>&#107;</div>
+                                                                                                                                                                                               <div><p>&amp;#108;</p>&#108;</div>
+                                                                                                                                                                                               <div><p>&amp;#109;</p>&#109;</div>
+                                                                                                                                                                                               <div><p>&amp;#110;</p>&#110;</div>
+                                                                                                                                                                                               <div><p>&amp;#111;</p>&#111;</div>
+                                                                                                                                                                                               <div><p>&amp;#112;</p>&#112;</div>
+                                                                                                                                                                                               <div><p>&amp;#113;</p>&#113;</div>
+                                                                                                                                                                                               <div><p>&amp;#114;</p>&#114;</div>
+                                                                                                                                                                                               <div><p>&amp;#115;</p>&#115;</div>
+                                                                                                                                                                                               <div><p>&amp;#116;</p>&#116;</div>
+                                                                                                                                                                                               <div><p>&amp;#117;</p>&#117;</div>
+                                                                                                                                                                                               <div><p>&amp;#118;</p>&#118;</div>
+                                                                                                                                                                                               <div><p>&amp;#119;</p>&#119;</div>
+                                                                                                                                                                                               <div><p>&amp;#120;</p>&#120;</div>
+                                                                                                                                                                                               <div><p>&amp;#121;</p>&#121;</div>
+                                                                                                                                                                                               <div><p>&amp;#122;</p>&#122;</div>
+                                                                                                                                                                                               <div><p>&amp;#123;</p>&#123;</div>
+                                                                                                                                                                                               <div><p>&amp;#124;</p>&#124;</div>
+                                                                                                                                                                                               <div><p>&amp;#125;</p>&#125;</div>
+                                                                                                                                                                                               <div><p>&amp;#126;</p>&#126;</div>
+                                                                                                                                                                                               <div><p>&amp;#160;</p>&#160;</div>
+                                                                                                                                                                                               <div><p>&amp;#161;</p>&#161;</div>
+                                                                                                                                                                                               <div><p>&amp;#162;</p>&#162;</div>
+                                                                                                                                                                                               <div><p>&amp;#163;</p>&#163;</div>
+                                                                                                                                                                                               <div><p>&amp;#165;</p>&#165;</div>
+                                                                                                                                                                                               <div><p>&amp;#167;</p>&#167;</div>
+                                                                                                                                                                                               <div><p>&amp;#168;</p>&#168;</div>
+                                                                                                                                                                                               <div><p>&amp;#169;</p>&#169;</div>
+                                                                                                                                                                                               <div><p>&amp;#170;</p>&#170;</div>
+                                                                                                                                                                                               <div><p>&amp;#171;</p>&#171;</div>
+                                                                                                                                                                                               <div><p>&amp;#173;</p>&#173;</div>
+                                                                                                                                                                                               <div><p>&amp;#174;</p>&#174;</div>
+                                                                                                                                                                                               <div><p>&amp;#175;</p>&#175;</div>
+                                                                                                                                                                                               <div><p>&amp;#176;</p>&#176;</div>
+                                                                                                                                                                                               <div><p>&amp;#177;</p>&#177;</div>
+                                                                                                                                                                                               <div><p>&amp;#180;</p>&#180;</div>
+                                                                                                                                                                                               <div><p>&amp;#182;</p>&#182;</div>
+                                                                                                                                                                                               <div><p>&amp;#183;</p>&#183;</div>
+                                                                                                                                                                                               <div><p>&amp;#184;</p>&#184;</div>
+                                                                                                                                                                                               <div><p>&amp;#186;</p>&#186;</div>
+                                                                                                                                                                                               <div><p>&amp;#187;</p>&#187;</div>
+                                                                                                                                                                                               <div><p>&amp;#191;</p>&#191;</div>
+                                                                                                                                                                                               <div><p>&amp;#192;</p>&#192;</div>
+                                                                                                                                                                                               <div><p>&amp;#193;</p>&#193;</div>
+                                                                                                                                                                                               <div><p>&amp;#194;</p>&#194;</div>
+                                                                                                                                                                                               <div><p>&amp;#195;</p>&#195;</div>
+                                                                                                                                                                                               <div><p>&amp;#196;</p>&#196;</div>
+                                                                                                                                                                                               <div><p>&amp;#197;</p>&#197;</div>
+                                                                                                                                                                                               <div><p>&amp;#198;</p>&#198;</div>
+                                                                                                                                                                                               <div><p>&amp;#199;</p>&#199;</div>
+                                                                                                                                                                                               <div><p>&amp;#200;</p>&#200;</div>
+                                                                                                                                                                                               <div><p>&amp;#201;</p>&#201;</div>
+                                                                                                                                                                                               <div><p>&amp;#202;</p>&#202;</div>
+                                                                                                                                                                                               <div><p>&amp;#203;</p>&#203;</div>
+                                                                                                                                                                                               <div><p>&amp;#204;</p>&#204;</div>
+                                                                                                                                                                                               <div><p>&amp;#205;</p>&#205;</div>
+                                                                                                                                                                                               <div><p>&amp;#206;</p>&#206;</div>
+                                                                                                                                                                                               <div><p>&amp;#207;</p>&#207;</div>
+                                                                                                                                                                                               <div><p>&amp;#208;</p>&#208;</div>
+                                                                                                                                                                                               <div><p>&amp;#209;</p>&#209;</div>
+                                                                                                                                                                                               <div><p>&amp;#210;</p>&#210;</div>
+                                                                                                                                                                                               <div><p>&amp;#211;</p>&#211;</div>
+                                                                                                                                                                                               <div><p>&amp;#212;</p>&#212;</div>
+                                                                                                                                                                                               <div><p>&amp;#213;</p>&#213;</div>
+                                                                                                                                                                                               <div><p>&amp;#214;</p>&#214;</div>
+                                                                                                                                                                                               <div><p>&amp;#215;</p>&#215;</div>
+                                                                                                                                                                                               <div><p>&amp;#216;</p>&#216;</div>
+                                                                                                                                                                                               <div><p>&amp;#217;</p>&#217;</div>
+                                                                                                                                                                                               <div><p>&amp;#218;</p>&#218;</div>
+                                                                                                                                                                                               <div><p>&amp;#219;</p>&#219;</div>
+                                                                                                                                                                                               <div><p>&amp;#220;</p>&#220;</div>
+                                                                                                                                                                                               <div><p>&amp;#221;</p>&#221;</div>
+                                                                                                                                                                                               <div><p>&amp;#222;</p>&#222;</div>
+                                                                                                                                                                                               <div><p>&amp;#223;</p>&#223;</div>
+                                                                                                                                                                                               <div><p>&amp;#224;</p>&#224;</div>
+                                                                                                                                                                                               <div><p>&amp;#225;</p>&#225;</div>
+                                                                                                                                                                                               <div><p>&amp;#226;</p>&#226;</div>
+                                                                                                                                                                                               <div><p>&amp;#227;</p>&#227;</div>
+                                                                                                                                                                                               <div><p>&amp;#228;</p>&#228;</div>
+                                                                                                                                                                                               <div><p>&amp;#229;</p>&#229;</div>
+                                                                                                                                                                                               <div><p>&amp;#230;</p>&#230;</div>
+                                                                                                                                                                                               <div><p>&amp;#231;</p>&#231;</div>
+                                                                                                                                                                                               <div><p>&amp;#232;</p>&#232;</div>
+                                                                                                                                                                                               <div><p>&amp;#233;</p>&#233;</div>
+                                                                                                                                                                                               <div><p>&amp;#234;</p>&#234;</div>
+                                                                                                                                                                                               <div><p>&amp;#235;</p>&#235;</div>
+                                                                                                                                                                                               <div><p>&amp;#236;</p>&#236;</div>
+                                                                                                                                                                                               <div><p>&amp;#237;</p>&#237;</div>
+                                                                                                                                                                                               <div><p>&amp;#238;</p>&#238;</div>
+                                                                                                                                                                                               <div><p>&amp;#239;</p>&#239;</div>
+                                                                                                                                                                                               <div><p>&amp;#240;</p>&#240;</div>
+                                                                                                                                                                                               <div><p>&amp;#241;</p>&#241;</div>
+                                                                                                                                                                                               <div><p>&amp;#242;</p>&#242;</div>
+                                                                                                                                                                                               <div><p>&amp;#243;</p>&#243;</div>
+                                                                                                                                                                                               <div><p>&amp;#244;</p>&#244;</div>
+                                                                                                                                                                                               <div><p>&amp;#245;</p>&#245;</div>
+                                                                                                                                                                                               <div><p>&amp;#246;</p>&#246;</div>
+                                                                                                                                                                                               <div><p>&amp;#247;</p>&#247;</div>
+                                                                                                                                                                                               <div><p>&amp;#248;</p>&#248;</div>
+                                                                                                                                                                                               <div><p>&amp;#249;</p>&#249;</div>
+                                                                                                                                                                                               <div><p>&amp;#250;</p>&#250;</div>
+                                                                                                                                                                                               <div><p>&amp;#251;</p>&#251;</div>
+                                                                                                                                                                                               <div><p>&amp;#252;</p>&#252;</div>
+                                                                                                                                                                                               <div><p>&amp;#253;</p>&#253;</div>
+                                                                                                                                                                                               <div><p>&amp;#254;</p>&#254;</div>
+                                                                                                                                                                                               <div><p>&amp;#255;</p>&#255;</div>
+                                                                                                                                                                                               <div><p>&amp;#338;</p>&#338;</div>
+                                                                                                                                                                                               <div><p>&amp;#339;</p>&#339;</div>
+                                                                                                                                                                                               <div><p>&amp;#376;</p>&#376;</div>
+                                                                                                                                                                                               <div><p>&amp;#710;</p>&#710;</div>
+                                                                                                                                                                                               <div><p>&amp;#732;</p>&#732;</div>
+                                                                                                                                                                                               <div><p>&amp;#8192;</p>&#8192;</div>
+                                                                                                                                                                                               <div><p>&amp;#8193;</p>&#8193;</div>
+                                                                                                                                                                                               <div><p>&amp;#8194;</p>&#8194;</div>
+                                                                                                                                                                                               <div><p>&amp;#8195;</p>&#8195;</div>
+                                                                                                                                                                                               <div><p>&amp;#8196;</p>&#8196;</div>
+                                                                                                                                                                                               <div><p>&amp;#8197;</p>&#8197;</div>
+                                                                                                                                                                                               <div><p>&amp;#8198;</p>&#8198;</div>
+                                                                                                                                                                                               <div><p>&amp;#8199;</p>&#8199;</div>
+                                                                                                                                                                                               <div><p>&amp;#8200;</p>&#8200;</div>
+                                                                                                                                                                                               <div><p>&amp;#8201;</p>&#8201;</div>
+                                                                                                                                                                                               <div><p>&amp;#8202;</p>&#8202;</div>
+                                                                                                                                                                                               <div><p>&amp;#8208;</p>&#8208;</div>
+                                                                                                                                                                                               <div><p>&amp;#8209;</p>&#8209;</div>
+                                                                                                                                                                                               <div><p>&amp;#8210;</p>&#8210;</div>
+                                                                                                                                                                                               <div><p>&amp;#8211;</p>&#8211;</div>
+                                                                                                                                                                                               <div><p>&amp;#8212;</p>&#8212;</div>
+                                                                                                                                                                                               <div><p>&amp;#8216;</p>&#8216;</div>
+                                                                                                                                                                                               <div><p>&amp;#8217;</p>&#8217;</div>
+                                                                                                                                                                                               <div><p>&amp;#8218;</p>&#8218;</div>
+                                                                                                                                                                                               <div><p>&amp;#8220;</p>&#8220;</div>
+                                                                                                                                                                                               <div><p>&amp;#8221;</p>&#8221;</div>
+                                                                                                                                                                                               <div><p>&amp;#8222;</p>&#8222;</div>
+                                                                                                                                                                                               <div><p>&amp;#8226;</p>&#8226;</div>
+                                                                                                                                                                                               <div><p>&amp;#8230;</p>&#8230;</div>
+                                                                                                                                                                                               <div><p>&amp;#8239;</p>&#8239;</div>
+                                                                                                                                                                                               <div><p>&amp;#8249;</p>&#8249;</div>
+                                                                                                                                                                                               <div><p>&amp;#8250;</p>&#8250;</div>
+                                                                                                                                                                                               <div><p>&amp;#8287;</p>&#8287;</div>
+                                                                                                                                                                                               <div><p>&amp;#8364;</p>&#8364;</div>
+                                                                                                                                                                                               <div><p>&amp;#8482;</p>&#8482;</div>
+                                                                                                                                                                                               <div><p>&amp;#9724;</p>&#9724;</div>
+                                                                                                                                                                                               <div><p>&amp;#64257;</p>&#64257;</div>
+                                                                                                                                                                                               <div><p>&amp;#64258;</p>&#64258;</div>
+                                                                                                                                                                                               <div><p>&amp;#64259;</p>&#64259;</div>
+                                                                                                                                                                                               <div><p>&amp;#64260;</p>&#64260;</div>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   </div>
+                </div>
+
+
+            </div>
+        </div>
+
+
+        <div id="specs">
+
+        </div>
+
+        <div id="installing">
+            <div class="section">
+                <div class="grid7 firstcol">
+                    <h1>Installing Webfonts</h1>
+
+                    <p>Webfonts are supported by all major browser platforms but not all in the same way. There are currently four different font formats that must be included in order to target all browsers. This includes TTF, WOFF, EOT and SVG.</p>
+
+                    <h2>1. Upload your webfonts</h2>
+                    <p>You must upload your webfont kit to your website. They should be in or near the same directory as your CSS files.</p>
+
+                    <h2>2. Include the webfont stylesheet</h2>
+                    <p>A special CSS @font-face declaration helps the various browsers select the appropriate font it needs without causing you a bunch of headaches. Learn more about this syntax by reading the <a href="https://www.fontspring.com/blog/further-hardening-of-the-bulletproof-syntax">Fontspring blog post</a> about it. The code for it is as follows:</p>
+
+
+                    <code>
+                        @font-face{
+                        font-family: 'MyWebFont';
+                        src: url('WebFont.eot');
+                        src: url('WebFont.eot?#iefix') format('embedded-opentype'),
+                        url('WebFont.woff') format('woff'),
+                        url('WebFont.ttf') format('truetype'),
+                        url('WebFont.svg#webfont') format('svg');
+                        }
+                    </code>
+
+                    <p>We've already gone ahead and generated the code for you. All you have to do is link to the stylesheet in your HTML, like this:</p>
+                    <code>&lt;link rel=&quot;stylesheet&quot; href=&quot;stylesheet.css&quot; type=&quot;text/css&quot; charset=&quot;utf-8&quot; /&gt;</code>
+
+                    <h2>3. Modify your own stylesheet</h2>
+                    <p>To take advantage of your new fonts, you must tell your stylesheet to use them. Look at the original @font-face declaration above and find the property called "font-family." The name linked there will be what you use to reference the font. Prepend that webfont name to the font stack in the "font-family" property, inside the selector you want to change. For example:</p>
+                    <code>p { font-family: 'WebFont', Arial, sans-serif; }</code>
+
+                    <h2>4. Test</h2>
+                    <p>Getting webfonts to work cross-browser <em>can</em> be tricky. Use the information in the sidebar to help you if you find that fonts aren't loading in a particular browser.</p>
+                </div>
+
+                <div class="grid5 sidebar">
+                    <div class="box">
+                        <h2>Troubleshooting<br/>Font-Face Problems</h2>
+                        <p>Having trouble getting your webfonts to load in your new website? Here are some tips to sort out what might be the problem.</p>
+
+                        <h3>Fonts not showing in any browser</h3>
+
+                        <p>This sounds like you need to work on the plumbing. You either did not upload the fonts to the correct directory, or you did not link the fonts properly in the CSS. If you've confirmed that all this is correct and you still have a problem, take a look at your .htaccess file and see if requests are getting intercepted.</p>
+
+                        <h3>Fonts not loading in iPhone or iPad</h3>
+
+                        <p>The most common problem here is that you are serving the fonts from an IIS server. IIS refuses to serve files that have unknown MIME types. If that is the case, you must set the MIME type for SVG to "image/svg+xml" in the server settings. Follow these instructions from Microsoft if you need help.</p>
+
+                        <h3>Fonts not loading in Firefox</h3>
+
+                        <p>The primary reason for this failure? You are still using a version Firefox older than 3.5. So upgrade already! If that isn't it, then you are very likely serving fonts from a different domain. Firefox requires that all font assets be served from the same domain. Lastly it is possible that you need to add WOFF to your list of MIME types (if you are serving via IIS.)</p>
+
+                        <h3>Fonts not loading in IE</h3>
+
+                        <p>Are you looking at Internet Explorer on an actual Windows machine or are you cheating by using a service like Adobe BrowserLab? Many of these screenshot services do not render @font-face for IE. Best to test it on a real machine.</p>
+
+                        <h3>Fonts not loading in IE9</h3>
+
+                        <p>IE9, like Firefox, requires that fonts be served from the same domain as the website. Make sure that is the case.</p>
+                    </div>
+                </div>
+            </div>
+
+        </div>
+
+    </div>
+    <div id="footer">
+        <p>&copy;2010-2017 Font Squirrel. All rights reserved.</p>
+    </div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/base-resources/fonts/webfontkit-20240704-041112/gotham_bold-webfont.woff b/base-resources/fonts/webfontkit-20240704-041112/gotham_bold-webfont.woff
new file mode 100755 (executable)
index 0000000..ad478bf
Binary files /dev/null and b/base-resources/fonts/webfontkit-20240704-041112/gotham_bold-webfont.woff differ
diff --git a/base-resources/fonts/webfontkit-20240704-041112/gotham_bold-webfont.woff2 b/base-resources/fonts/webfontkit-20240704-041112/gotham_bold-webfont.woff2
new file mode 100755 (executable)
index 0000000..9f35dce
Binary files /dev/null and b/base-resources/fonts/webfontkit-20240704-041112/gotham_bold-webfont.woff2 differ
diff --git a/base-resources/fonts/webfontkit-20240704-041112/gotham_book-demo.html b/base-resources/fonts/webfontkit-20240704-041112/gotham_book-demo.html
new file mode 100755 (executable)
index 0000000..a56417c
--- /dev/null
@@ -0,0 +1,695 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
+    <script type="text/javascript">
+               (function($) {
+                       $.fn.easyTabs = function(option) {
+                               var param = jQuery.extend({ fadeSpeed: 'fast', defaultContent: 1, activeClass: 'active' }, option);
+                               $(this).each(function() {
+                                       var thisId = '#' + this.id;
+                                       if ( param.defaultContent == '' )
+                                       {
+                                               param.defaultContent = 1;
+                                       }
+                                       if ( typeof param.defaultContent == 'number' )
+                                       {
+                                               var defaultTab = $(thisId + ' .tabs li:eq(' + (param.defaultContent - 1) + ') a').attr('href').substr(1);
+                                       }
+                                       else
+                                       {
+                                               var defaultTab = param.defaultContent;
+                                       }
+                                       $(thisId + ' .tabs li a').each(function() {
+                                               var tabToHide = $(this).attr('href').substr(1);
+                                               $('#' + tabToHide).addClass('easytabs-tab-content');
+                                       });
+                                       hideAll();
+                                       changeContent(defaultTab);
+
+                                       function hideAll() {$(thisId + ' .easytabs-tab-content').hide();}
+
+                                       function changeContent(tabId)
+                                       {
+                                               hideAll();
+                                               $(thisId + ' .tabs li').removeClass(param.activeClass);
+                                               $(thisId + ' .tabs li a[href=#' + tabId + ']').closest('li').addClass(param.activeClass);
+                                               if ( param.fadeSpeed != 'none' )
+                                               {
+                                                       $(thisId + ' #' + tabId).fadeIn(param.fadeSpeed);
+                                               }
+                                               else
+                                               {
+                                                       $(thisId + ' #' + tabId).show();
+                                               }
+                                       }
+
+                                       $(thisId + ' .tabs li').click(function() {
+                                               var tabId = $(this).find('a').attr('href').substr(1);
+                                               changeContent(tabId);
+                                               return false;
+                                       });
+                               });
+                       }
+               })(jQuery);
+    </script>
+    <link rel="stylesheet" href="specimen_files/specimen_stylesheet.css" type="text/css" charset="utf-8"/>
+    <link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8"/>
+
+    <style type="text/css">
+                       body {
+                       font-family: 'gothambook';
+                       }
+
+            </style>
+
+    <title>Gotham Book Regular Specimen</title>
+
+
+    <script type="text/javascript" charset="utf-8">
+               $(document).ready(function() {
+                       $('#container').easyTabs({ defaultContent: 1 });
+               });
+    </script>
+</head>
+
+<body>
+<div id="container">
+    <div id="header">
+               Gotham Book Regular    </div>
+    <ul class="tabs">
+        <li><a href="#specimen">Specimen</a></li>
+        <li><a href="#layout">Sample Layout</a></li>
+                       <li><a href="#glyphs">Glyphs &amp; Languages</a></li>
+        <li><a href="#installing">Installing Webfonts</a></li>
+
+    </ul>
+
+    <div id="main_content">
+
+
+        <div id="specimen">
+
+            <div class="section">
+                <div class="grid12 firstcol">
+                    <div class="huge">AaBb</div>
+                </div>
+            </div>
+
+            <div class="section">
+                <div class="glyph_range">A&#x200B;B&#x200b;C&#x200b;D&#x200b;E&#x200b;F&#x200b;G&#x200b;H&#x200b;I&#x200b;J&#x200b;K&#x200b;L&#x200b;M&#x200b;N&#x200b;O&#x200b;P&#x200b;Q&#x200b;R&#x200b;S&#x200b;T&#x200b;U&#x200b;V&#x200b;W&#x200b;X&#x200b;Y&#x200b;Z&#x200b;a&#x200b;b&#x200b;c&#x200b;d&#x200b;e&#x200b;f&#x200b;g&#x200b;h&#x200b;i&#x200b;j&#x200b;k&#x200b;l&#x200b;m&#x200b;n&#x200b;o&#x200b;p&#x200b;q&#x200b;r&#x200b;s&#x200b;t&#x200b;u&#x200b;v&#x200b;w&#x200b;x&#x200b;y&#x200b;z&#x200b;1&#x200b;2&#x200b;3&#x200b;4&#x200b;5&#x200b;6&#x200b;7&#x200b;8&#x200b;9&#x200b;0&#x200b;&amp;&#x200b;.&#x200b;,&#x200b;?&#x200b;!&#x200b;&#64;&#x200b;(&#x200b;)&#x200b;#&#x200b;$&#x200b;%&#x200b;*&#x200b;+&#x200b;-&#x200b;=&#x200b;:&#x200b;;</div>
+            </div>
+            <div class="section">
+                <div class="grid12 firstcol">
+                    <table class="sample_table">
+                        <tr>
+                            <td>10</td>
+                            <td class="size10">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>11</td>
+                            <td class="size11">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>12</td>
+                            <td class="size12">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>13</td>
+                            <td class="size13">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>14</td>
+                            <td class="size14">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>16</td>
+                            <td class="size16">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>18</td>
+                            <td class="size18">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>20</td>
+                            <td class="size20">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>24</td>
+                            <td class="size24">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>30</td>
+                            <td class="size30">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>36</td>
+                            <td class="size36">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>48</td>
+                            <td class="size48">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>60</td>
+                            <td class="size60">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>72</td>
+                            <td class="size72">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>90</td>
+                            <td class="size90">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                    </table>
+
+                </div>
+
+            </div>
+
+
+            <div class="section" id="bodycomparison">
+
+
+                <div id="xheight">
+                    <div class="fontbody">&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;body</div>
+                    <div class="arialbody">body</div>
+                    <div class="verdanabody">body</div>
+                    <div class="georgiabody">body</div>
+                </div>
+                <div class="fontbody" style="z-index:1">
+                    body<span>Gotham Book Regular</span>
+                </div>
+                <div class="arialbody" style="z-index:1">
+                    body<span>Arial</span>
+                </div>
+                <div class="verdanabody" style="z-index:1">
+                    body<span>Verdana</span>
+                </div>
+                <div class="georgiabody" style="z-index:1">
+                    body<span>Georgia</span>
+                </div>
+
+
+            </div>
+
+
+            <div class="section psample psample_row1" id="">
+
+                <div class="grid2 firstcol">
+                    <p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid3">
+                    <p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid3">
+                    <p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid4">
+                    <p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="white_blend"></div>
+
+            </div>
+            <div class="section psample psample_row2" id="">
+                <div class="grid3 firstcol">
+                    <p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid4">
+                    <p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid5">
+                    <p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+
+                <div class="white_blend"></div>
+
+            </div>
+
+            <div class="section psample psample_row3" id="">
+                <div class="grid5 firstcol">
+                    <p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+                <div class="grid7">
+                    <p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+
+                <div class="white_blend"></div>
+
+            </div>
+
+            <div class="section psample psample_row4" id="">
+                <div class="grid12 firstcol">
+                    <p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+                <div class="white_blend"></div>
+
+            </div>
+
+
+            <div class="section psample psample_row1 fullreverse">
+                <div class="grid2 firstcol">
+                    <p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid3">
+                    <p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid3">
+                    <p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid4">
+                    <p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="black_blend"></div>
+
+            </div>
+
+            <div class="section psample psample_row2 fullreverse">
+                <div class="grid3 firstcol">
+                    <p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid4">
+                    <p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid5">
+                    <p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="black_blend"></div>
+
+            </div>
+
+            <div class="section psample fullreverse psample_row3" id="">
+                <div class="grid5 firstcol">
+                    <p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+                <div class="grid7">
+                    <p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+
+                <div class="black_blend"></div>
+
+            </div>
+
+            <div class="section psample fullreverse psample_row4" id="" style="border-bottom: 20px #000 solid;">
+                <div class="grid12 firstcol">
+                    <p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+                <div class="black_blend"></div>
+
+            </div>
+
+
+        </div>
+
+        <div id="layout">
+
+            <div class="section">
+
+                <div class="grid12 firstcol">
+                    <h1>Lorem Ipsum Dolor</h1>
+                    <h2>Etiam porta sem malesuada magna mollis euismod</h2>
+
+                    <p class="byline">By <a href="#link">Aenean Lacinia</a></p>
+                </div>
+            </div>
+            <div class="section">
+                <div class="grid8 firstcol">
+                    <p class="large">Donec sed odio dui. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
+
+
+                    <h3>Pellentesque ornare sem</h3>
+
+                    <p>Maecenas sed diam eget risus varius blandit sit amet non magna. Maecenas faucibus mollis interdum. Donec ullamcorper nulla non metus auctor fringilla. Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam id dolor id nibh ultricies vehicula ut id elit. </p>
+
+                    <p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p>
+
+                    <p>Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed consectetur. </p>
+
+                    <p>Nullam quis risus eget urna mollis ornare vel eu leo. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas sed diam eget risus varius blandit sit amet non magna. Donec ullamcorper nulla non metus auctor fringilla. </p>
+
+                    <h3>Cras mattis consectetur</h3>
+
+                    <p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Aenean lacinia bibendum nulla sed consectetur. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras mattis consectetur purus sit amet fermentum. </p>
+
+                    <p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam quis risus eget urna mollis ornare vel eu leo. Cras mattis consectetur purus sit amet fermentum.</p>
+                </div>
+
+                <div class="grid4 sidebar">
+
+                    <div class="box reverse">
+                        <p class="last">Nullam quis risus eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor fringilla. Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
+                    </div>
+
+                    <p class="caption">Maecenas sed diam eget risus varius.</p>
+
+                    <p>Vestibulum id ligula porta felis euismod semper. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Vestibulum id ligula porta felis euismod semper. Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
+
+
+                    <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Aenean lacinia bibendum nulla sed consectetur. Nullam quis risus eget urna mollis ornare vel eu leo. </p>
+
+                    <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec ullamcorper nulla non metus auctor fringilla. Maecenas faucibus mollis interdum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
+
+                </div>
+            </div>
+
+        </div>
+
+
+               
+
+        <div id="glyphs">
+            <div class="section">
+                <div class="grid12 firstcol">
+
+                    <h1>Language Support</h1>
+                    <p>The subset of Gotham Book Regular in this kit supports the following languages:<br/>
+
+                                               Albanian, Basque, Breton, Chamorro, Danish, Dutch, English, Faroese, Finnish, French, Frisian, Galician, German, Icelandic, Italian, Malagasy, Norwegian, Portuguese, Spanish, Alsatian, Aragonese, Arapaho, Arrernte, Asturian, Aymara, Bislama, Cebuano, Corsican, Fijian, French_creole, Genoese, Gilbertese, Greenlandic, Haitian_creole, Hiligaynon, Hmong, Hopi, Ibanag, Iloko_ilokano, Indonesian, Interglossa_glosa, Interlingua, Irish_gaelic, Jerriais, Lojban, Lombard, Luxembourgeois, Manx, Mohawk, Norfolk_pitcairnese, Occitan, Oromo, Pangasinan, Papiamento, Piedmontese, Potawatomi, Rhaeto-romance, Romansh, Rotokas, Sami_lule, Samoan, Sardinian, Scots_gaelic, Seychelles_creole, Shona, Sicilian, Somali, Southern_ndebele, Swahili, Swati_swazi, Tagalog_filipino_pilipino, Tetum, Tok_pisin, Uyghur_latinized, Volapuk, Walloon, Warlpiri, Xhosa, Yapese, Zulu, Latinbasic, Ubasic, Demo                    </p>
+                    <h1>Glyph Chart</h1>
+                    <p>The subset of Gotham Book Regular in this kit includes all the glyphs listed below. Unicode entities are included above each glyph to help you insert individual characters into your layout.</p>
+                    <div id="glyph_chart">
+
+                                                                                                                                                                                               <div><p>&amp;#32;</p>&#32;</div>
+                                                                                                                                                                                               <div><p>&amp;#33;</p>&#33;</div>
+                                                                                                                                                                                               <div><p>&amp;#34;</p>&#34;</div>
+                                                                                                                                                                                               <div><p>&amp;#35;</p>&#35;</div>
+                                                                                                                                                                                               <div><p>&amp;#36;</p>&#36;</div>
+                                                                                                                                                                                               <div><p>&amp;#37;</p>&#37;</div>
+                                                                                                                                                                                               <div><p>&amp;#38;</p>&#38;</div>
+                                                                                                                                                                                               <div><p>&amp;#39;</p>&#39;</div>
+                                                                                                                                                                                               <div><p>&amp;#40;</p>&#40;</div>
+                                                                                                                                                                                               <div><p>&amp;#41;</p>&#41;</div>
+                                                                                                                                                                                               <div><p>&amp;#42;</p>&#42;</div>
+                                                                                                                                                                                               <div><p>&amp;#43;</p>&#43;</div>
+                                                                                                                                                                                               <div><p>&amp;#44;</p>&#44;</div>
+                                                                                                                                                                                               <div><p>&amp;#45;</p>&#45;</div>
+                                                                                                                                                                                               <div><p>&amp;#46;</p>&#46;</div>
+                                                                                                                                                                                               <div><p>&amp;#47;</p>&#47;</div>
+                                                                                                                                                                                               <div><p>&amp;#48;</p>&#48;</div>
+                                                                                                                                                                                               <div><p>&amp;#49;</p>&#49;</div>
+                                                                                                                                                                                               <div><p>&amp;#50;</p>&#50;</div>
+                                                                                                                                                                                               <div><p>&amp;#51;</p>&#51;</div>
+                                                                                                                                                                                               <div><p>&amp;#52;</p>&#52;</div>
+                                                                                                                                                                                               <div><p>&amp;#53;</p>&#53;</div>
+                                                                                                                                                                                               <div><p>&amp;#54;</p>&#54;</div>
+                                                                                                                                                                                               <div><p>&amp;#55;</p>&#55;</div>
+                                                                                                                                                                                               <div><p>&amp;#56;</p>&#56;</div>
+                                                                                                                                                                                               <div><p>&amp;#57;</p>&#57;</div>
+                                                                                                                                                                                               <div><p>&amp;#58;</p>&#58;</div>
+                                                                                                                                                                                               <div><p>&amp;#59;</p>&#59;</div>
+                                                                                                                                                                                               <div><p>&amp;#60;</p>&#60;</div>
+                                                                                                                                                                                               <div><p>&amp;#61;</p>&#61;</div>
+                                                                                                                                                                                               <div><p>&amp;#62;</p>&#62;</div>
+                                                                                                                                                                                               <div><p>&amp;#63;</p>&#63;</div>
+                                                                                                                                                                                               <div><p>&amp;#64;</p>&#64;</div>
+                                                                                                                                                                                               <div><p>&amp;#65;</p>&#65;</div>
+                                                                                                                                                                                               <div><p>&amp;#66;</p>&#66;</div>
+                                                                                                                                                                                               <div><p>&amp;#67;</p>&#67;</div>
+                                                                                                                                                                                               <div><p>&amp;#68;</p>&#68;</div>
+                                                                                                                                                                                               <div><p>&amp;#69;</p>&#69;</div>
+                                                                                                                                                                                               <div><p>&amp;#70;</p>&#70;</div>
+                                                                                                                                                                                               <div><p>&amp;#71;</p>&#71;</div>
+                                                                                                                                                                                               <div><p>&amp;#72;</p>&#72;</div>
+                                                                                                                                                                                               <div><p>&amp;#73;</p>&#73;</div>
+                                                                                                                                                                                               <div><p>&amp;#74;</p>&#74;</div>
+                                                                                                                                                                                               <div><p>&amp;#75;</p>&#75;</div>
+                                                                                                                                                                                               <div><p>&amp;#76;</p>&#76;</div>
+                                                                                                                                                                                               <div><p>&amp;#77;</p>&#77;</div>
+                                                                                                                                                                                               <div><p>&amp;#78;</p>&#78;</div>
+                                                                                                                                                                                               <div><p>&amp;#79;</p>&#79;</div>
+                                                                                                                                                                                               <div><p>&amp;#80;</p>&#80;</div>
+                                                                                                                                                                                               <div><p>&amp;#81;</p>&#81;</div>
+                                                                                                                                                                                               <div><p>&amp;#82;</p>&#82;</div>
+                                                                                                                                                                                               <div><p>&amp;#83;</p>&#83;</div>
+                                                                                                                                                                                               <div><p>&amp;#84;</p>&#84;</div>
+                                                                                                                                                                                               <div><p>&amp;#85;</p>&#85;</div>
+                                                                                                                                                                                               <div><p>&amp;#86;</p>&#86;</div>
+                                                                                                                                                                                               <div><p>&amp;#87;</p>&#87;</div>
+                                                                                                                                                                                               <div><p>&amp;#88;</p>&#88;</div>
+                                                                                                                                                                                               <div><p>&amp;#89;</p>&#89;</div>
+                                                                                                                                                                                               <div><p>&amp;#90;</p>&#90;</div>
+                                                                                                                                                                                               <div><p>&amp;#91;</p>&#91;</div>
+                                                                                                                                                                                               <div><p>&amp;#92;</p>&#92;</div>
+                                                                                                                                                                                               <div><p>&amp;#93;</p>&#93;</div>
+                                                                                                                                                                                               <div><p>&amp;#94;</p>&#94;</div>
+                                                                                                                                                                                               <div><p>&amp;#95;</p>&#95;</div>
+                                                                                                                                                                                               <div><p>&amp;#96;</p>&#96;</div>
+                                                                                                                                                                                               <div><p>&amp;#97;</p>&#97;</div>
+                                                                                                                                                                                               <div><p>&amp;#98;</p>&#98;</div>
+                                                                                                                                                                                               <div><p>&amp;#99;</p>&#99;</div>
+                                                                                                                                                                                               <div><p>&amp;#100;</p>&#100;</div>
+                                                                                                                                                                                               <div><p>&amp;#101;</p>&#101;</div>
+                                                                                                                                                                                               <div><p>&amp;#102;</p>&#102;</div>
+                                                                                                                                                                                               <div><p>&amp;#103;</p>&#103;</div>
+                                                                                                                                                                                               <div><p>&amp;#104;</p>&#104;</div>
+                                                                                                                                                                                               <div><p>&amp;#105;</p>&#105;</div>
+                                                                                                                                                                                               <div><p>&amp;#106;</p>&#106;</div>
+                                                                                                                                                                                               <div><p>&amp;#107;</p>&#107;</div>
+                                                                                                                                                                                               <div><p>&amp;#108;</p>&#108;</div>
+                                                                                                                                                                                               <div><p>&amp;#109;</p>&#109;</div>
+                                                                                                                                                                                               <div><p>&amp;#110;</p>&#110;</div>
+                                                                                                                                                                                               <div><p>&amp;#111;</p>&#111;</div>
+                                                                                                                                                                                               <div><p>&amp;#112;</p>&#112;</div>
+                                                                                                                                                                                               <div><p>&amp;#113;</p>&#113;</div>
+                                                                                                                                                                                               <div><p>&amp;#114;</p>&#114;</div>
+                                                                                                                                                                                               <div><p>&amp;#115;</p>&#115;</div>
+                                                                                                                                                                                               <div><p>&amp;#116;</p>&#116;</div>
+                                                                                                                                                                                               <div><p>&amp;#117;</p>&#117;</div>
+                                                                                                                                                                                               <div><p>&amp;#118;</p>&#118;</div>
+                                                                                                                                                                                               <div><p>&amp;#119;</p>&#119;</div>
+                                                                                                                                                                                               <div><p>&amp;#120;</p>&#120;</div>
+                                                                                                                                                                                               <div><p>&amp;#121;</p>&#121;</div>
+                                                                                                                                                                                               <div><p>&amp;#122;</p>&#122;</div>
+                                                                                                                                                                                               <div><p>&amp;#123;</p>&#123;</div>
+                                                                                                                                                                                               <div><p>&amp;#124;</p>&#124;</div>
+                                                                                                                                                                                               <div><p>&amp;#125;</p>&#125;</div>
+                                                                                                                                                                                               <div><p>&amp;#126;</p>&#126;</div>
+                                                                                                                                                                                               <div><p>&amp;#160;</p>&#160;</div>
+                                                                                                                                                                                               <div><p>&amp;#161;</p>&#161;</div>
+                                                                                                                                                                                               <div><p>&amp;#162;</p>&#162;</div>
+                                                                                                                                                                                               <div><p>&amp;#163;</p>&#163;</div>
+                                                                                                                                                                                               <div><p>&amp;#165;</p>&#165;</div>
+                                                                                                                                                                                               <div><p>&amp;#167;</p>&#167;</div>
+                                                                                                                                                                                               <div><p>&amp;#168;</p>&#168;</div>
+                                                                                                                                                                                               <div><p>&amp;#169;</p>&#169;</div>
+                                                                                                                                                                                               <div><p>&amp;#170;</p>&#170;</div>
+                                                                                                                                                                                               <div><p>&amp;#171;</p>&#171;</div>
+                                                                                                                                                                                               <div><p>&amp;#173;</p>&#173;</div>
+                                                                                                                                                                                               <div><p>&amp;#174;</p>&#174;</div>
+                                                                                                                                                                                               <div><p>&amp;#175;</p>&#175;</div>
+                                                                                                                                                                                               <div><p>&amp;#176;</p>&#176;</div>
+                                                                                                                                                                                               <div><p>&amp;#177;</p>&#177;</div>
+                                                                                                                                                                                               <div><p>&amp;#180;</p>&#180;</div>
+                                                                                                                                                                                               <div><p>&amp;#182;</p>&#182;</div>
+                                                                                                                                                                                               <div><p>&amp;#183;</p>&#183;</div>
+                                                                                                                                                                                               <div><p>&amp;#184;</p>&#184;</div>
+                                                                                                                                                                                               <div><p>&amp;#186;</p>&#186;</div>
+                                                                                                                                                                                               <div><p>&amp;#187;</p>&#187;</div>
+                                                                                                                                                                                               <div><p>&amp;#191;</p>&#191;</div>
+                                                                                                                                                                                               <div><p>&amp;#192;</p>&#192;</div>
+                                                                                                                                                                                               <div><p>&amp;#193;</p>&#193;</div>
+                                                                                                                                                                                               <div><p>&amp;#194;</p>&#194;</div>
+                                                                                                                                                                                               <div><p>&amp;#195;</p>&#195;</div>
+                                                                                                                                                                                               <div><p>&amp;#196;</p>&#196;</div>
+                                                                                                                                                                                               <div><p>&amp;#197;</p>&#197;</div>
+                                                                                                                                                                                               <div><p>&amp;#198;</p>&#198;</div>
+                                                                                                                                                                                               <div><p>&amp;#199;</p>&#199;</div>
+                                                                                                                                                                                               <div><p>&amp;#200;</p>&#200;</div>
+                                                                                                                                                                                               <div><p>&amp;#201;</p>&#201;</div>
+                                                                                                                                                                                               <div><p>&amp;#202;</p>&#202;</div>
+                                                                                                                                                                                               <div><p>&amp;#203;</p>&#203;</div>
+                                                                                                                                                                                               <div><p>&amp;#204;</p>&#204;</div>
+                                                                                                                                                                                               <div><p>&amp;#205;</p>&#205;</div>
+                                                                                                                                                                                               <div><p>&amp;#206;</p>&#206;</div>
+                                                                                                                                                                                               <div><p>&amp;#207;</p>&#207;</div>
+                                                                                                                                                                                               <div><p>&amp;#208;</p>&#208;</div>
+                                                                                                                                                                                               <div><p>&amp;#209;</p>&#209;</div>
+                                                                                                                                                                                               <div><p>&amp;#210;</p>&#210;</div>
+                                                                                                                                                                                               <div><p>&amp;#211;</p>&#211;</div>
+                                                                                                                                                                                               <div><p>&amp;#212;</p>&#212;</div>
+                                                                                                                                                                                               <div><p>&amp;#213;</p>&#213;</div>
+                                                                                                                                                                                               <div><p>&amp;#214;</p>&#214;</div>
+                                                                                                                                                                                               <div><p>&amp;#215;</p>&#215;</div>
+                                                                                                                                                                                               <div><p>&amp;#216;</p>&#216;</div>
+                                                                                                                                                                                               <div><p>&amp;#217;</p>&#217;</div>
+                                                                                                                                                                                               <div><p>&amp;#218;</p>&#218;</div>
+                                                                                                                                                                                               <div><p>&amp;#219;</p>&#219;</div>
+                                                                                                                                                                                               <div><p>&amp;#220;</p>&#220;</div>
+                                                                                                                                                                                               <div><p>&amp;#221;</p>&#221;</div>
+                                                                                                                                                                                               <div><p>&amp;#222;</p>&#222;</div>
+                                                                                                                                                                                               <div><p>&amp;#223;</p>&#223;</div>
+                                                                                                                                                                                               <div><p>&amp;#224;</p>&#224;</div>
+                                                                                                                                                                                               <div><p>&amp;#225;</p>&#225;</div>
+                                                                                                                                                                                               <div><p>&amp;#226;</p>&#226;</div>
+                                                                                                                                                                                               <div><p>&amp;#227;</p>&#227;</div>
+                                                                                                                                                                                               <div><p>&amp;#228;</p>&#228;</div>
+                                                                                                                                                                                               <div><p>&amp;#229;</p>&#229;</div>
+                                                                                                                                                                                               <div><p>&amp;#230;</p>&#230;</div>
+                                                                                                                                                                                               <div><p>&amp;#231;</p>&#231;</div>
+                                                                                                                                                                                               <div><p>&amp;#232;</p>&#232;</div>
+                                                                                                                                                                                               <div><p>&amp;#233;</p>&#233;</div>
+                                                                                                                                                                                               <div><p>&amp;#234;</p>&#234;</div>
+                                                                                                                                                                                               <div><p>&amp;#235;</p>&#235;</div>
+                                                                                                                                                                                               <div><p>&amp;#236;</p>&#236;</div>
+                                                                                                                                                                                               <div><p>&amp;#237;</p>&#237;</div>
+                                                                                                                                                                                               <div><p>&amp;#238;</p>&#238;</div>
+                                                                                                                                                                                               <div><p>&amp;#239;</p>&#239;</div>
+                                                                                                                                                                                               <div><p>&amp;#240;</p>&#240;</div>
+                                                                                                                                                                                               <div><p>&amp;#241;</p>&#241;</div>
+                                                                                                                                                                                               <div><p>&amp;#242;</p>&#242;</div>
+                                                                                                                                                                                               <div><p>&amp;#243;</p>&#243;</div>
+                                                                                                                                                                                               <div><p>&amp;#244;</p>&#244;</div>
+                                                                                                                                                                                               <div><p>&amp;#245;</p>&#245;</div>
+                                                                                                                                                                                               <div><p>&amp;#246;</p>&#246;</div>
+                                                                                                                                                                                               <div><p>&amp;#247;</p>&#247;</div>
+                                                                                                                                                                                               <div><p>&amp;#248;</p>&#248;</div>
+                                                                                                                                                                                               <div><p>&amp;#249;</p>&#249;</div>
+                                                                                                                                                                                               <div><p>&amp;#250;</p>&#250;</div>
+                                                                                                                                                                                               <div><p>&amp;#251;</p>&#251;</div>
+                                                                                                                                                                                               <div><p>&amp;#252;</p>&#252;</div>
+                                                                                                                                                                                               <div><p>&amp;#253;</p>&#253;</div>
+                                                                                                                                                                                               <div><p>&amp;#254;</p>&#254;</div>
+                                                                                                                                                                                               <div><p>&amp;#255;</p>&#255;</div>
+                                                                                                                                                                                               <div><p>&amp;#338;</p>&#338;</div>
+                                                                                                                                                                                               <div><p>&amp;#339;</p>&#339;</div>
+                                                                                                                                                                                               <div><p>&amp;#376;</p>&#376;</div>
+                                                                                                                                                                                               <div><p>&amp;#710;</p>&#710;</div>
+                                                                                                                                                                                               <div><p>&amp;#732;</p>&#732;</div>
+                                                                                                                                                                                               <div><p>&amp;#8192;</p>&#8192;</div>
+                                                                                                                                                                                               <div><p>&amp;#8193;</p>&#8193;</div>
+                                                                                                                                                                                               <div><p>&amp;#8194;</p>&#8194;</div>
+                                                                                                                                                                                               <div><p>&amp;#8195;</p>&#8195;</div>
+                                                                                                                                                                                               <div><p>&amp;#8196;</p>&#8196;</div>
+                                                                                                                                                                                               <div><p>&amp;#8197;</p>&#8197;</div>
+                                                                                                                                                                                               <div><p>&amp;#8198;</p>&#8198;</div>
+                                                                                                                                                                                               <div><p>&amp;#8199;</p>&#8199;</div>
+                                                                                                                                                                                               <div><p>&amp;#8200;</p>&#8200;</div>
+                                                                                                                                                                                               <div><p>&amp;#8201;</p>&#8201;</div>
+                                                                                                                                                                                               <div><p>&amp;#8202;</p>&#8202;</div>
+                                                                                                                                                                                               <div><p>&amp;#8208;</p>&#8208;</div>
+                                                                                                                                                                                               <div><p>&amp;#8209;</p>&#8209;</div>
+                                                                                                                                                                                               <div><p>&amp;#8210;</p>&#8210;</div>
+                                                                                                                                                                                               <div><p>&amp;#8211;</p>&#8211;</div>
+                                                                                                                                                                                               <div><p>&amp;#8212;</p>&#8212;</div>
+                                                                                                                                                                                               <div><p>&amp;#8216;</p>&#8216;</div>
+                                                                                                                                                                                               <div><p>&amp;#8217;</p>&#8217;</div>
+                                                                                                                                                                                               <div><p>&amp;#8218;</p>&#8218;</div>
+                                                                                                                                                                                               <div><p>&amp;#8220;</p>&#8220;</div>
+                                                                                                                                                                                               <div><p>&amp;#8221;</p>&#8221;</div>
+                                                                                                                                                                                               <div><p>&amp;#8222;</p>&#8222;</div>
+                                                                                                                                                                                               <div><p>&amp;#8226;</p>&#8226;</div>
+                                                                                                                                                                                               <div><p>&amp;#8230;</p>&#8230;</div>
+                                                                                                                                                                                               <div><p>&amp;#8239;</p>&#8239;</div>
+                                                                                                                                                                                               <div><p>&amp;#8249;</p>&#8249;</div>
+                                                                                                                                                                                               <div><p>&amp;#8250;</p>&#8250;</div>
+                                                                                                                                                                                               <div><p>&amp;#8287;</p>&#8287;</div>
+                                                                                                                                                                                               <div><p>&amp;#8364;</p>&#8364;</div>
+                                                                                                                                                                                               <div><p>&amp;#8482;</p>&#8482;</div>
+                                                                                                                                                                                               <div><p>&amp;#9724;</p>&#9724;</div>
+                                                                                                                                                                                               <div><p>&amp;#64257;</p>&#64257;</div>
+                                                                                                                                                                                               <div><p>&amp;#64258;</p>&#64258;</div>
+                                                                                                                                                                                               <div><p>&amp;#64259;</p>&#64259;</div>
+                                                                                                                                                                                               <div><p>&amp;#64260;</p>&#64260;</div>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   </div>
+                </div>
+
+
+            </div>
+        </div>
+
+
+        <div id="specs">
+
+        </div>
+
+        <div id="installing">
+            <div class="section">
+                <div class="grid7 firstcol">
+                    <h1>Installing Webfonts</h1>
+
+                    <p>Webfonts are supported by all major browser platforms but not all in the same way. There are currently four different font formats that must be included in order to target all browsers. This includes TTF, WOFF, EOT and SVG.</p>
+
+                    <h2>1. Upload your webfonts</h2>
+                    <p>You must upload your webfont kit to your website. They should be in or near the same directory as your CSS files.</p>
+
+                    <h2>2. Include the webfont stylesheet</h2>
+                    <p>A special CSS @font-face declaration helps the various browsers select the appropriate font it needs without causing you a bunch of headaches. Learn more about this syntax by reading the <a href="https://www.fontspring.com/blog/further-hardening-of-the-bulletproof-syntax">Fontspring blog post</a> about it. The code for it is as follows:</p>
+
+
+                    <code>
+                        @font-face{
+                        font-family: 'MyWebFont';
+                        src: url('WebFont.eot');
+                        src: url('WebFont.eot?#iefix') format('embedded-opentype'),
+                        url('WebFont.woff') format('woff'),
+                        url('WebFont.ttf') format('truetype'),
+                        url('WebFont.svg#webfont') format('svg');
+                        }
+                    </code>
+
+                    <p>We've already gone ahead and generated the code for you. All you have to do is link to the stylesheet in your HTML, like this:</p>
+                    <code>&lt;link rel=&quot;stylesheet&quot; href=&quot;stylesheet.css&quot; type=&quot;text/css&quot; charset=&quot;utf-8&quot; /&gt;</code>
+
+                    <h2>3. Modify your own stylesheet</h2>
+                    <p>To take advantage of your new fonts, you must tell your stylesheet to use them. Look at the original @font-face declaration above and find the property called "font-family." The name linked there will be what you use to reference the font. Prepend that webfont name to the font stack in the "font-family" property, inside the selector you want to change. For example:</p>
+                    <code>p { font-family: 'WebFont', Arial, sans-serif; }</code>
+
+                    <h2>4. Test</h2>
+                    <p>Getting webfonts to work cross-browser <em>can</em> be tricky. Use the information in the sidebar to help you if you find that fonts aren't loading in a particular browser.</p>
+                </div>
+
+                <div class="grid5 sidebar">
+                    <div class="box">
+                        <h2>Troubleshooting<br/>Font-Face Problems</h2>
+                        <p>Having trouble getting your webfonts to load in your new website? Here are some tips to sort out what might be the problem.</p>
+
+                        <h3>Fonts not showing in any browser</h3>
+
+                        <p>This sounds like you need to work on the plumbing. You either did not upload the fonts to the correct directory, or you did not link the fonts properly in the CSS. If you've confirmed that all this is correct and you still have a problem, take a look at your .htaccess file and see if requests are getting intercepted.</p>
+
+                        <h3>Fonts not loading in iPhone or iPad</h3>
+
+                        <p>The most common problem here is that you are serving the fonts from an IIS server. IIS refuses to serve files that have unknown MIME types. If that is the case, you must set the MIME type for SVG to "image/svg+xml" in the server settings. Follow these instructions from Microsoft if you need help.</p>
+
+                        <h3>Fonts not loading in Firefox</h3>
+
+                        <p>The primary reason for this failure? You are still using a version Firefox older than 3.5. So upgrade already! If that isn't it, then you are very likely serving fonts from a different domain. Firefox requires that all font assets be served from the same domain. Lastly it is possible that you need to add WOFF to your list of MIME types (if you are serving via IIS.)</p>
+
+                        <h3>Fonts not loading in IE</h3>
+
+                        <p>Are you looking at Internet Explorer on an actual Windows machine or are you cheating by using a service like Adobe BrowserLab? Many of these screenshot services do not render @font-face for IE. Best to test it on a real machine.</p>
+
+                        <h3>Fonts not loading in IE9</h3>
+
+                        <p>IE9, like Firefox, requires that fonts be served from the same domain as the website. Make sure that is the case.</p>
+                    </div>
+                </div>
+            </div>
+
+        </div>
+
+    </div>
+    <div id="footer">
+        <p>&copy;2010-2017 Font Squirrel. All rights reserved.</p>
+    </div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/base-resources/fonts/webfontkit-20240704-041112/gotham_book-webfont.woff b/base-resources/fonts/webfontkit-20240704-041112/gotham_book-webfont.woff
new file mode 100755 (executable)
index 0000000..8b67e14
Binary files /dev/null and b/base-resources/fonts/webfontkit-20240704-041112/gotham_book-webfont.woff differ
diff --git a/base-resources/fonts/webfontkit-20240704-041112/gotham_book-webfont.woff2 b/base-resources/fonts/webfontkit-20240704-041112/gotham_book-webfont.woff2
new file mode 100755 (executable)
index 0000000..bc30eee
Binary files /dev/null and b/base-resources/fonts/webfontkit-20240704-041112/gotham_book-webfont.woff2 differ
diff --git a/base-resources/fonts/webfontkit-20240704-041112/gotham_medium-demo.html b/base-resources/fonts/webfontkit-20240704-041112/gotham_medium-demo.html
new file mode 100755 (executable)
index 0000000..e3685b4
--- /dev/null
@@ -0,0 +1,695 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
+    <script type="text/javascript">
+               (function($) {
+                       $.fn.easyTabs = function(option) {
+                               var param = jQuery.extend({ fadeSpeed: 'fast', defaultContent: 1, activeClass: 'active' }, option);
+                               $(this).each(function() {
+                                       var thisId = '#' + this.id;
+                                       if ( param.defaultContent == '' )
+                                       {
+                                               param.defaultContent = 1;
+                                       }
+                                       if ( typeof param.defaultContent == 'number' )
+                                       {
+                                               var defaultTab = $(thisId + ' .tabs li:eq(' + (param.defaultContent - 1) + ') a').attr('href').substr(1);
+                                       }
+                                       else
+                                       {
+                                               var defaultTab = param.defaultContent;
+                                       }
+                                       $(thisId + ' .tabs li a').each(function() {
+                                               var tabToHide = $(this).attr('href').substr(1);
+                                               $('#' + tabToHide).addClass('easytabs-tab-content');
+                                       });
+                                       hideAll();
+                                       changeContent(defaultTab);
+
+                                       function hideAll() {$(thisId + ' .easytabs-tab-content').hide();}
+
+                                       function changeContent(tabId)
+                                       {
+                                               hideAll();
+                                               $(thisId + ' .tabs li').removeClass(param.activeClass);
+                                               $(thisId + ' .tabs li a[href=#' + tabId + ']').closest('li').addClass(param.activeClass);
+                                               if ( param.fadeSpeed != 'none' )
+                                               {
+                                                       $(thisId + ' #' + tabId).fadeIn(param.fadeSpeed);
+                                               }
+                                               else
+                                               {
+                                                       $(thisId + ' #' + tabId).show();
+                                               }
+                                       }
+
+                                       $(thisId + ' .tabs li').click(function() {
+                                               var tabId = $(this).find('a').attr('href').substr(1);
+                                               changeContent(tabId);
+                                               return false;
+                                       });
+                               });
+                       }
+               })(jQuery);
+    </script>
+    <link rel="stylesheet" href="specimen_files/specimen_stylesheet.css" type="text/css" charset="utf-8"/>
+    <link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8"/>
+
+    <style type="text/css">
+                       body {
+                       font-family: 'gothammedium';
+                       }
+
+            </style>
+
+    <title>Gotham Medium Regular Specimen</title>
+
+
+    <script type="text/javascript" charset="utf-8">
+               $(document).ready(function() {
+                       $('#container').easyTabs({ defaultContent: 1 });
+               });
+    </script>
+</head>
+
+<body>
+<div id="container">
+    <div id="header">
+               Gotham Medium Regular    </div>
+    <ul class="tabs">
+        <li><a href="#specimen">Specimen</a></li>
+        <li><a href="#layout">Sample Layout</a></li>
+                       <li><a href="#glyphs">Glyphs &amp; Languages</a></li>
+        <li><a href="#installing">Installing Webfonts</a></li>
+
+    </ul>
+
+    <div id="main_content">
+
+
+        <div id="specimen">
+
+            <div class="section">
+                <div class="grid12 firstcol">
+                    <div class="huge">AaBb</div>
+                </div>
+            </div>
+
+            <div class="section">
+                <div class="glyph_range">A&#x200B;B&#x200b;C&#x200b;D&#x200b;E&#x200b;F&#x200b;G&#x200b;H&#x200b;I&#x200b;J&#x200b;K&#x200b;L&#x200b;M&#x200b;N&#x200b;O&#x200b;P&#x200b;Q&#x200b;R&#x200b;S&#x200b;T&#x200b;U&#x200b;V&#x200b;W&#x200b;X&#x200b;Y&#x200b;Z&#x200b;a&#x200b;b&#x200b;c&#x200b;d&#x200b;e&#x200b;f&#x200b;g&#x200b;h&#x200b;i&#x200b;j&#x200b;k&#x200b;l&#x200b;m&#x200b;n&#x200b;o&#x200b;p&#x200b;q&#x200b;r&#x200b;s&#x200b;t&#x200b;u&#x200b;v&#x200b;w&#x200b;x&#x200b;y&#x200b;z&#x200b;1&#x200b;2&#x200b;3&#x200b;4&#x200b;5&#x200b;6&#x200b;7&#x200b;8&#x200b;9&#x200b;0&#x200b;&amp;&#x200b;.&#x200b;,&#x200b;?&#x200b;!&#x200b;&#64;&#x200b;(&#x200b;)&#x200b;#&#x200b;$&#x200b;%&#x200b;*&#x200b;+&#x200b;-&#x200b;=&#x200b;:&#x200b;;</div>
+            </div>
+            <div class="section">
+                <div class="grid12 firstcol">
+                    <table class="sample_table">
+                        <tr>
+                            <td>10</td>
+                            <td class="size10">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>11</td>
+                            <td class="size11">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>12</td>
+                            <td class="size12">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>13</td>
+                            <td class="size13">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>14</td>
+                            <td class="size14">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>16</td>
+                            <td class="size16">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>18</td>
+                            <td class="size18">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>20</td>
+                            <td class="size20">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>24</td>
+                            <td class="size24">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>30</td>
+                            <td class="size30">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>36</td>
+                            <td class="size36">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>48</td>
+                            <td class="size48">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>60</td>
+                            <td class="size60">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>72</td>
+                            <td class="size72">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                        <tr>
+                            <td>90</td>
+                            <td class="size90">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td>
+                        </tr>
+                    </table>
+
+                </div>
+
+            </div>
+
+
+            <div class="section" id="bodycomparison">
+
+
+                <div id="xheight">
+                    <div class="fontbody">&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;body</div>
+                    <div class="arialbody">body</div>
+                    <div class="verdanabody">body</div>
+                    <div class="georgiabody">body</div>
+                </div>
+                <div class="fontbody" style="z-index:1">
+                    body<span>Gotham Medium Regular</span>
+                </div>
+                <div class="arialbody" style="z-index:1">
+                    body<span>Arial</span>
+                </div>
+                <div class="verdanabody" style="z-index:1">
+                    body<span>Verdana</span>
+                </div>
+                <div class="georgiabody" style="z-index:1">
+                    body<span>Georgia</span>
+                </div>
+
+
+            </div>
+
+
+            <div class="section psample psample_row1" id="">
+
+                <div class="grid2 firstcol">
+                    <p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid3">
+                    <p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid3">
+                    <p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid4">
+                    <p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="white_blend"></div>
+
+            </div>
+            <div class="section psample psample_row2" id="">
+                <div class="grid3 firstcol">
+                    <p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid4">
+                    <p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid5">
+                    <p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+
+                <div class="white_blend"></div>
+
+            </div>
+
+            <div class="section psample psample_row3" id="">
+                <div class="grid5 firstcol">
+                    <p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+                <div class="grid7">
+                    <p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+
+                <div class="white_blend"></div>
+
+            </div>
+
+            <div class="section psample psample_row4" id="">
+                <div class="grid12 firstcol">
+                    <p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+                <div class="white_blend"></div>
+
+            </div>
+
+
+            <div class="section psample psample_row1 fullreverse">
+                <div class="grid2 firstcol">
+                    <p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid3">
+                    <p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid3">
+                    <p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid4">
+                    <p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="black_blend"></div>
+
+            </div>
+
+            <div class="section psample psample_row2 fullreverse">
+                <div class="grid3 firstcol">
+                    <p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid4">
+                    <p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="grid5">
+                    <p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+
+                </div>
+                <div class="black_blend"></div>
+
+            </div>
+
+            <div class="section psample fullreverse psample_row3" id="">
+                <div class="grid5 firstcol">
+                    <p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+                <div class="grid7">
+                    <p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+
+                <div class="black_blend"></div>
+
+            </div>
+
+            <div class="section psample fullreverse psample_row4" id="" style="border-bottom: 20px #000 solid;">
+                <div class="grid12 firstcol">
+                    <p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+                </div>
+                <div class="black_blend"></div>
+
+            </div>
+
+
+        </div>
+
+        <div id="layout">
+
+            <div class="section">
+
+                <div class="grid12 firstcol">
+                    <h1>Lorem Ipsum Dolor</h1>
+                    <h2>Etiam porta sem malesuada magna mollis euismod</h2>
+
+                    <p class="byline">By <a href="#link">Aenean Lacinia</a></p>
+                </div>
+            </div>
+            <div class="section">
+                <div class="grid8 firstcol">
+                    <p class="large">Donec sed odio dui. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
+
+
+                    <h3>Pellentesque ornare sem</h3>
+
+                    <p>Maecenas sed diam eget risus varius blandit sit amet non magna. Maecenas faucibus mollis interdum. Donec ullamcorper nulla non metus auctor fringilla. Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam id dolor id nibh ultricies vehicula ut id elit. </p>
+
+                    <p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p>
+
+                    <p>Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed consectetur. </p>
+
+                    <p>Nullam quis risus eget urna mollis ornare vel eu leo. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas sed diam eget risus varius blandit sit amet non magna. Donec ullamcorper nulla non metus auctor fringilla. </p>
+
+                    <h3>Cras mattis consectetur</h3>
+
+                    <p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Aenean lacinia bibendum nulla sed consectetur. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras mattis consectetur purus sit amet fermentum. </p>
+
+                    <p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam quis risus eget urna mollis ornare vel eu leo. Cras mattis consectetur purus sit amet fermentum.</p>
+                </div>
+
+                <div class="grid4 sidebar">
+
+                    <div class="box reverse">
+                        <p class="last">Nullam quis risus eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor fringilla. Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
+                    </div>
+
+                    <p class="caption">Maecenas sed diam eget risus varius.</p>
+
+                    <p>Vestibulum id ligula porta felis euismod semper. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Vestibulum id ligula porta felis euismod semper. Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
+
+
+                    <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Aenean lacinia bibendum nulla sed consectetur. Nullam quis risus eget urna mollis ornare vel eu leo. </p>
+
+                    <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec ullamcorper nulla non metus auctor fringilla. Maecenas faucibus mollis interdum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
+
+                </div>
+            </div>
+
+        </div>
+
+
+               
+
+        <div id="glyphs">
+            <div class="section">
+                <div class="grid12 firstcol">
+
+                    <h1>Language Support</h1>
+                    <p>The subset of Gotham Medium Regular in this kit supports the following languages:<br/>
+
+                                               Albanian, Basque, Breton, Chamorro, Danish, Dutch, English, Faroese, Finnish, French, Frisian, Galician, German, Icelandic, Italian, Malagasy, Norwegian, Portuguese, Spanish, Alsatian, Aragonese, Arapaho, Arrernte, Asturian, Aymara, Bislama, Cebuano, Corsican, Fijian, French_creole, Genoese, Gilbertese, Greenlandic, Haitian_creole, Hiligaynon, Hmong, Hopi, Ibanag, Iloko_ilokano, Indonesian, Interglossa_glosa, Interlingua, Irish_gaelic, Jerriais, Lojban, Lombard, Luxembourgeois, Manx, Mohawk, Norfolk_pitcairnese, Occitan, Oromo, Pangasinan, Papiamento, Piedmontese, Potawatomi, Rhaeto-romance, Romansh, Rotokas, Sami_lule, Samoan, Sardinian, Scots_gaelic, Seychelles_creole, Shona, Sicilian, Somali, Southern_ndebele, Swahili, Swati_swazi, Tagalog_filipino_pilipino, Tetum, Tok_pisin, Uyghur_latinized, Volapuk, Walloon, Warlpiri, Xhosa, Yapese, Zulu, Latinbasic, Ubasic, Demo                    </p>
+                    <h1>Glyph Chart</h1>
+                    <p>The subset of Gotham Medium Regular in this kit includes all the glyphs listed below. Unicode entities are included above each glyph to help you insert individual characters into your layout.</p>
+                    <div id="glyph_chart">
+
+                                                                                                                                                                                               <div><p>&amp;#32;</p>&#32;</div>
+                                                                                                                                                                                               <div><p>&amp;#33;</p>&#33;</div>
+                                                                                                                                                                                               <div><p>&amp;#34;</p>&#34;</div>
+                                                                                                                                                                                               <div><p>&amp;#35;</p>&#35;</div>
+                                                                                                                                                                                               <div><p>&amp;#36;</p>&#36;</div>
+                                                                                                                                                                                               <div><p>&amp;#37;</p>&#37;</div>
+                                                                                                                                                                                               <div><p>&amp;#38;</p>&#38;</div>
+                                                                                                                                                                                               <div><p>&amp;#39;</p>&#39;</div>
+                                                                                                                                                                                               <div><p>&amp;#40;</p>&#40;</div>
+                                                                                                                                                                                               <div><p>&amp;#41;</p>&#41;</div>
+                                                                                                                                                                                               <div><p>&amp;#42;</p>&#42;</div>
+                                                                                                                                                                                               <div><p>&amp;#43;</p>&#43;</div>
+                                                                                                                                                                                               <div><p>&amp;#44;</p>&#44;</div>
+                                                                                                                                                                                               <div><p>&amp;#45;</p>&#45;</div>
+                                                                                                                                                                                               <div><p>&amp;#46;</p>&#46;</div>
+                                                                                                                                                                                               <div><p>&amp;#47;</p>&#47;</div>
+                                                                                                                                                                                               <div><p>&amp;#48;</p>&#48;</div>
+                                                                                                                                                                                               <div><p>&amp;#49;</p>&#49;</div>
+                                                                                                                                                                                               <div><p>&amp;#50;</p>&#50;</div>
+                                                                                                                                                                                               <div><p>&amp;#51;</p>&#51;</div>
+                                                                                                                                                                                               <div><p>&amp;#52;</p>&#52;</div>
+                                                                                                                                                                                               <div><p>&amp;#53;</p>&#53;</div>
+                                                                                                                                                                                               <div><p>&amp;#54;</p>&#54;</div>
+                                                                                                                                                                                               <div><p>&amp;#55;</p>&#55;</div>
+                                                                                                                                                                                               <div><p>&amp;#56;</p>&#56;</div>
+                                                                                                                                                                                               <div><p>&amp;#57;</p>&#57;</div>
+                                                                                                                                                                                               <div><p>&amp;#58;</p>&#58;</div>
+                                                                                                                                                                                               <div><p>&amp;#59;</p>&#59;</div>
+                                                                                                                                                                                               <div><p>&amp;#60;</p>&#60;</div>
+                                                                                                                                                                                               <div><p>&amp;#61;</p>&#61;</div>
+                                                                                                                                                                                               <div><p>&amp;#62;</p>&#62;</div>
+                                                                                                                                                                                               <div><p>&amp;#63;</p>&#63;</div>
+                                                                                                                                                                                               <div><p>&amp;#64;</p>&#64;</div>
+                                                                                                                                                                                               <div><p>&amp;#65;</p>&#65;</div>
+                                                                                                                                                                                               <div><p>&amp;#66;</p>&#66;</div>
+                                                                                                                                                                                               <div><p>&amp;#67;</p>&#67;</div>
+                                                                                                                                                                                               <div><p>&amp;#68;</p>&#68;</div>
+                                                                                                                                                                                               <div><p>&amp;#69;</p>&#69;</div>
+                                                                                                                                                                                               <div><p>&amp;#70;</p>&#70;</div>
+                                                                                                                                                                                               <div><p>&amp;#71;</p>&#71;</div>
+                                                                                                                                                                                               <div><p>&amp;#72;</p>&#72;</div>
+                                                                                                                                                                                               <div><p>&amp;#73;</p>&#73;</div>
+                                                                                                                                                                                               <div><p>&amp;#74;</p>&#74;</div>
+                                                                                                                                                                                               <div><p>&amp;#75;</p>&#75;</div>
+                                                                                                                                                                                               <div><p>&amp;#76;</p>&#76;</div>
+                                                                                                                                                                                               <div><p>&amp;#77;</p>&#77;</div>
+                                                                                                                                                                                               <div><p>&amp;#78;</p>&#78;</div>
+                                                                                                                                                                                               <div><p>&amp;#79;</p>&#79;</div>
+                                                                                                                                                                                               <div><p>&amp;#80;</p>&#80;</div>
+                                                                                                                                                                                               <div><p>&amp;#81;</p>&#81;</div>
+                                                                                                                                                                                               <div><p>&amp;#82;</p>&#82;</div>
+                                                                                                                                                                                               <div><p>&amp;#83;</p>&#83;</div>
+                                                                                                                                                                                               <div><p>&amp;#84;</p>&#84;</div>
+                                                                                                                                                                                               <div><p>&amp;#85;</p>&#85;</div>
+                                                                                                                                                                                               <div><p>&amp;#86;</p>&#86;</div>
+                                                                                                                                                                                               <div><p>&amp;#87;</p>&#87;</div>
+                                                                                                                                                                                               <div><p>&amp;#88;</p>&#88;</div>
+                                                                                                                                                                                               <div><p>&amp;#89;</p>&#89;</div>
+                                                                                                                                                                                               <div><p>&amp;#90;</p>&#90;</div>
+                                                                                                                                                                                               <div><p>&amp;#91;</p>&#91;</div>
+                                                                                                                                                                                               <div><p>&amp;#92;</p>&#92;</div>
+                                                                                                                                                                                               <div><p>&amp;#93;</p>&#93;</div>
+                                                                                                                                                                                               <div><p>&amp;#94;</p>&#94;</div>
+                                                                                                                                                                                               <div><p>&amp;#95;</p>&#95;</div>
+                                                                                                                                                                                               <div><p>&amp;#96;</p>&#96;</div>
+                                                                                                                                                                                               <div><p>&amp;#97;</p>&#97;</div>
+                                                                                                                                                                                               <div><p>&amp;#98;</p>&#98;</div>
+                                                                                                                                                                                               <div><p>&amp;#99;</p>&#99;</div>
+                                                                                                                                                                                               <div><p>&amp;#100;</p>&#100;</div>
+                                                                                                                                                                                               <div><p>&amp;#101;</p>&#101;</div>
+                                                                                                                                                                                               <div><p>&amp;#102;</p>&#102;</div>
+                                                                                                                                                                                               <div><p>&amp;#103;</p>&#103;</div>
+                                                                                                                                                                                               <div><p>&amp;#104;</p>&#104;</div>
+                                                                                                                                                                                               <div><p>&amp;#105;</p>&#105;</div>
+                                                                                                                                                                                               <div><p>&amp;#106;</p>&#106;</div>
+                                                                                                                                                                                               <div><p>&amp;#107;</p>&#107;</div>
+                                                                                                                                                                                               <div><p>&amp;#108;</p>&#108;</div>
+                                                                                                                                                                                               <div><p>&amp;#109;</p>&#109;</div>
+                                                                                                                                                                                               <div><p>&amp;#110;</p>&#110;</div>
+                                                                                                                                                                                               <div><p>&amp;#111;</p>&#111;</div>
+                                                                                                                                                                                               <div><p>&amp;#112;</p>&#112;</div>
+                                                                                                                                                                                               <div><p>&amp;#113;</p>&#113;</div>
+                                                                                                                                                                                               <div><p>&amp;#114;</p>&#114;</div>
+                                                                                                                                                                                               <div><p>&amp;#115;</p>&#115;</div>
+                                                                                                                                                                                               <div><p>&amp;#116;</p>&#116;</div>
+                                                                                                                                                                                               <div><p>&amp;#117;</p>&#117;</div>
+                                                                                                                                                                                               <div><p>&amp;#118;</p>&#118;</div>
+                                                                                                                                                                                               <div><p>&amp;#119;</p>&#119;</div>
+                                                                                                                                                                                               <div><p>&amp;#120;</p>&#120;</div>
+                                                                                                                                                                                               <div><p>&amp;#121;</p>&#121;</div>
+                                                                                                                                                                                               <div><p>&amp;#122;</p>&#122;</div>
+                                                                                                                                                                                               <div><p>&amp;#123;</p>&#123;</div>
+                                                                                                                                                                                               <div><p>&amp;#124;</p>&#124;</div>
+                                                                                                                                                                                               <div><p>&amp;#125;</p>&#125;</div>
+                                                                                                                                                                                               <div><p>&amp;#126;</p>&#126;</div>
+                                                                                                                                                                                               <div><p>&amp;#160;</p>&#160;</div>
+                                                                                                                                                                                               <div><p>&amp;#161;</p>&#161;</div>
+                                                                                                                                                                                               <div><p>&amp;#162;</p>&#162;</div>
+                                                                                                                                                                                               <div><p>&amp;#163;</p>&#163;</div>
+                                                                                                                                                                                               <div><p>&amp;#165;</p>&#165;</div>
+                                                                                                                                                                                               <div><p>&amp;#167;</p>&#167;</div>
+                                                                                                                                                                                               <div><p>&amp;#168;</p>&#168;</div>
+                                                                                                                                                                                               <div><p>&amp;#169;</p>&#169;</div>
+                                                                                                                                                                                               <div><p>&amp;#170;</p>&#170;</div>
+                                                                                                                                                                                               <div><p>&amp;#171;</p>&#171;</div>
+                                                                                                                                                                                               <div><p>&amp;#173;</p>&#173;</div>
+                                                                                                                                                                                               <div><p>&amp;#174;</p>&#174;</div>
+                                                                                                                                                                                               <div><p>&amp;#175;</p>&#175;</div>
+                                                                                                                                                                                               <div><p>&amp;#176;</p>&#176;</div>
+                                                                                                                                                                                               <div><p>&amp;#177;</p>&#177;</div>
+                                                                                                                                                                                               <div><p>&amp;#180;</p>&#180;</div>
+                                                                                                                                                                                               <div><p>&amp;#182;</p>&#182;</div>
+                                                                                                                                                                                               <div><p>&amp;#183;</p>&#183;</div>
+                                                                                                                                                                                               <div><p>&amp;#184;</p>&#184;</div>
+                                                                                                                                                                                               <div><p>&amp;#186;</p>&#186;</div>
+                                                                                                                                                                                               <div><p>&amp;#187;</p>&#187;</div>
+                                                                                                                                                                                               <div><p>&amp;#191;</p>&#191;</div>
+                                                                                                                                                                                               <div><p>&amp;#192;</p>&#192;</div>
+                                                                                                                                                                                               <div><p>&amp;#193;</p>&#193;</div>
+                                                                                                                                                                                               <div><p>&amp;#194;</p>&#194;</div>
+                                                                                                                                                                                               <div><p>&amp;#195;</p>&#195;</div>
+                                                                                                                                                                                               <div><p>&amp;#196;</p>&#196;</div>
+                                                                                                                                                                                               <div><p>&amp;#197;</p>&#197;</div>
+                                                                                                                                                                                               <div><p>&amp;#198;</p>&#198;</div>
+                                                                                                                                                                                               <div><p>&amp;#199;</p>&#199;</div>
+                                                                                                                                                                                               <div><p>&amp;#200;</p>&#200;</div>
+                                                                                                                                                                                               <div><p>&amp;#201;</p>&#201;</div>
+                                                                                                                                                                                               <div><p>&amp;#202;</p>&#202;</div>
+                                                                                                                                                                                               <div><p>&amp;#203;</p>&#203;</div>
+                                                                                                                                                                                               <div><p>&amp;#204;</p>&#204;</div>
+                                                                                                                                                                                               <div><p>&amp;#205;</p>&#205;</div>
+                                                                                                                                                                                               <div><p>&amp;#206;</p>&#206;</div>
+                                                                                                                                                                                               <div><p>&amp;#207;</p>&#207;</div>
+                                                                                                                                                                                               <div><p>&amp;#208;</p>&#208;</div>
+                                                                                                                                                                                               <div><p>&amp;#209;</p>&#209;</div>
+                                                                                                                                                                                               <div><p>&amp;#210;</p>&#210;</div>
+                                                                                                                                                                                               <div><p>&amp;#211;</p>&#211;</div>
+                                                                                                                                                                                               <div><p>&amp;#212;</p>&#212;</div>
+                                                                                                                                                                                               <div><p>&amp;#213;</p>&#213;</div>
+                                                                                                                                                                                               <div><p>&amp;#214;</p>&#214;</div>
+                                                                                                                                                                                               <div><p>&amp;#215;</p>&#215;</div>
+                                                                                                                                                                                               <div><p>&amp;#216;</p>&#216;</div>
+                                                                                                                                                                                               <div><p>&amp;#217;</p>&#217;</div>
+                                                                                                                                                                                               <div><p>&amp;#218;</p>&#218;</div>
+                                                                                                                                                                                               <div><p>&amp;#219;</p>&#219;</div>
+                                                                                                                                                                                               <div><p>&amp;#220;</p>&#220;</div>
+                                                                                                                                                                                               <div><p>&amp;#221;</p>&#221;</div>
+                                                                                                                                                                                               <div><p>&amp;#222;</p>&#222;</div>
+                                                                                                                                                                                               <div><p>&amp;#223;</p>&#223;</div>
+                                                                                                                                                                                               <div><p>&amp;#224;</p>&#224;</div>
+                                                                                                                                                                                               <div><p>&amp;#225;</p>&#225;</div>
+                                                                                                                                                                                               <div><p>&amp;#226;</p>&#226;</div>
+                                                                                                                                                                                               <div><p>&amp;#227;</p>&#227;</div>
+                                                                                                                                                                                               <div><p>&amp;#228;</p>&#228;</div>
+                                                                                                                                                                                               <div><p>&amp;#229;</p>&#229;</div>
+                                                                                                                                                                                               <div><p>&amp;#230;</p>&#230;</div>
+                                                                                                                                                                                               <div><p>&amp;#231;</p>&#231;</div>
+                                                                                                                                                                                               <div><p>&amp;#232;</p>&#232;</div>
+                                                                                                                                                                                               <div><p>&amp;#233;</p>&#233;</div>
+                                                                                                                                                                                               <div><p>&amp;#234;</p>&#234;</div>
+                                                                                                                                                                                               <div><p>&amp;#235;</p>&#235;</div>
+                                                                                                                                                                                               <div><p>&amp;#236;</p>&#236;</div>
+                                                                                                                                                                                               <div><p>&amp;#237;</p>&#237;</div>
+                                                                                                                                                                                               <div><p>&amp;#238;</p>&#238;</div>
+                                                                                                                                                                                               <div><p>&amp;#239;</p>&#239;</div>
+                                                                                                                                                                                               <div><p>&amp;#240;</p>&#240;</div>
+                                                                                                                                                                                               <div><p>&amp;#241;</p>&#241;</div>
+                                                                                                                                                                                               <div><p>&amp;#242;</p>&#242;</div>
+                                                                                                                                                                                               <div><p>&amp;#243;</p>&#243;</div>
+                                                                                                                                                                                               <div><p>&amp;#244;</p>&#244;</div>
+                                                                                                                                                                                               <div><p>&amp;#245;</p>&#245;</div>
+                                                                                                                                                                                               <div><p>&amp;#246;</p>&#246;</div>
+                                                                                                                                                                                               <div><p>&amp;#247;</p>&#247;</div>
+                                                                                                                                                                                               <div><p>&amp;#248;</p>&#248;</div>
+                                                                                                                                                                                               <div><p>&amp;#249;</p>&#249;</div>
+                                                                                                                                                                                               <div><p>&amp;#250;</p>&#250;</div>
+                                                                                                                                                                                               <div><p>&amp;#251;</p>&#251;</div>
+                                                                                                                                                                                               <div><p>&amp;#252;</p>&#252;</div>
+                                                                                                                                                                                               <div><p>&amp;#253;</p>&#253;</div>
+                                                                                                                                                                                               <div><p>&amp;#254;</p>&#254;</div>
+                                                                                                                                                                                               <div><p>&amp;#255;</p>&#255;</div>
+                                                                                                                                                                                               <div><p>&amp;#338;</p>&#338;</div>
+                                                                                                                                                                                               <div><p>&amp;#339;</p>&#339;</div>
+                                                                                                                                                                                               <div><p>&amp;#376;</p>&#376;</div>
+                                                                                                                                                                                               <div><p>&amp;#710;</p>&#710;</div>
+                                                                                                                                                                                               <div><p>&amp;#732;</p>&#732;</div>
+                                                                                                                                                                                               <div><p>&amp;#8192;</p>&#8192;</div>
+                                                                                                                                                                                               <div><p>&amp;#8193;</p>&#8193;</div>
+                                                                                                                                                                                               <div><p>&amp;#8194;</p>&#8194;</div>
+                                                                                                                                                                                               <div><p>&amp;#8195;</p>&#8195;</div>
+                                                                                                                                                                                               <div><p>&amp;#8196;</p>&#8196;</div>
+                                                                                                                                                                                               <div><p>&amp;#8197;</p>&#8197;</div>
+                                                                                                                                                                                               <div><p>&amp;#8198;</p>&#8198;</div>
+                                                                                                                                                                                               <div><p>&amp;#8199;</p>&#8199;</div>
+                                                                                                                                                                                               <div><p>&amp;#8200;</p>&#8200;</div>
+                                                                                                                                                                                               <div><p>&amp;#8201;</p>&#8201;</div>
+                                                                                                                                                                                               <div><p>&amp;#8202;</p>&#8202;</div>
+                                                                                                                                                                                               <div><p>&amp;#8208;</p>&#8208;</div>
+                                                                                                                                                                                               <div><p>&amp;#8209;</p>&#8209;</div>
+                                                                                                                                                                                               <div><p>&amp;#8210;</p>&#8210;</div>
+                                                                                                                                                                                               <div><p>&amp;#8211;</p>&#8211;</div>
+                                                                                                                                                                                               <div><p>&amp;#8212;</p>&#8212;</div>
+                                                                                                                                                                                               <div><p>&amp;#8216;</p>&#8216;</div>
+                                                                                                                                                                                               <div><p>&amp;#8217;</p>&#8217;</div>
+                                                                                                                                                                                               <div><p>&amp;#8218;</p>&#8218;</div>
+                                                                                                                                                                                               <div><p>&amp;#8220;</p>&#8220;</div>
+                                                                                                                                                                                               <div><p>&amp;#8221;</p>&#8221;</div>
+                                                                                                                                                                                               <div><p>&amp;#8222;</p>&#8222;</div>
+                                                                                                                                                                                               <div><p>&amp;#8226;</p>&#8226;</div>
+                                                                                                                                                                                               <div><p>&amp;#8230;</p>&#8230;</div>
+                                                                                                                                                                                               <div><p>&amp;#8239;</p>&#8239;</div>
+                                                                                                                                                                                               <div><p>&amp;#8249;</p>&#8249;</div>
+                                                                                                                                                                                               <div><p>&amp;#8250;</p>&#8250;</div>
+                                                                                                                                                                                               <div><p>&amp;#8287;</p>&#8287;</div>
+                                                                                                                                                                                               <div><p>&amp;#8364;</p>&#8364;</div>
+                                                                                                                                                                                               <div><p>&amp;#8482;</p>&#8482;</div>
+                                                                                                                                                                                               <div><p>&amp;#9724;</p>&#9724;</div>
+                                                                                                                                                                                               <div><p>&amp;#64257;</p>&#64257;</div>
+                                                                                                                                                                                               <div><p>&amp;#64258;</p>&#64258;</div>
+                                                                                                                                                                                               <div><p>&amp;#64259;</p>&#64259;</div>
+                                                                                                                                                                                               <div><p>&amp;#64260;</p>&#64260;</div>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   </div>
+                </div>
+
+
+            </div>
+        </div>
+
+
+        <div id="specs">
+
+        </div>
+
+        <div id="installing">
+            <div class="section">
+                <div class="grid7 firstcol">
+                    <h1>Installing Webfonts</h1>
+
+                    <p>Webfonts are supported by all major browser platforms but not all in the same way. There are currently four different font formats that must be included in order to target all browsers. This includes TTF, WOFF, EOT and SVG.</p>
+
+                    <h2>1. Upload your webfonts</h2>
+                    <p>You must upload your webfont kit to your website. They should be in or near the same directory as your CSS files.</p>
+
+                    <h2>2. Include the webfont stylesheet</h2>
+                    <p>A special CSS @font-face declaration helps the various browsers select the appropriate font it needs without causing you a bunch of headaches. Learn more about this syntax by reading the <a href="https://www.fontspring.com/blog/further-hardening-of-the-bulletproof-syntax">Fontspring blog post</a> about it. The code for it is as follows:</p>
+
+
+                    <code>
+                        @font-face{
+                        font-family: 'MyWebFont';
+                        src: url('WebFont.eot');
+                        src: url('WebFont.eot?#iefix') format('embedded-opentype'),
+                        url('WebFont.woff') format('woff'),
+                        url('WebFont.ttf') format('truetype'),
+                        url('WebFont.svg#webfont') format('svg');
+                        }
+                    </code>
+
+                    <p>We've already gone ahead and generated the code for you. All you have to do is link to the stylesheet in your HTML, like this:</p>
+                    <code>&lt;link rel=&quot;stylesheet&quot; href=&quot;stylesheet.css&quot; type=&quot;text/css&quot; charset=&quot;utf-8&quot; /&gt;</code>
+
+                    <h2>3. Modify your own stylesheet</h2>
+                    <p>To take advantage of your new fonts, you must tell your stylesheet to use them. Look at the original @font-face declaration above and find the property called "font-family." The name linked there will be what you use to reference the font. Prepend that webfont name to the font stack in the "font-family" property, inside the selector you want to change. For example:</p>
+                    <code>p { font-family: 'WebFont', Arial, sans-serif; }</code>
+
+                    <h2>4. Test</h2>
+                    <p>Getting webfonts to work cross-browser <em>can</em> be tricky. Use the information in the sidebar to help you if you find that fonts aren't loading in a particular browser.</p>
+                </div>
+
+                <div class="grid5 sidebar">
+                    <div class="box">
+                        <h2>Troubleshooting<br/>Font-Face Problems</h2>
+                        <p>Having trouble getting your webfonts to load in your new website? Here are some tips to sort out what might be the problem.</p>
+
+                        <h3>Fonts not showing in any browser</h3>
+
+                        <p>This sounds like you need to work on the plumbing. You either did not upload the fonts to the correct directory, or you did not link the fonts properly in the CSS. If you've confirmed that all this is correct and you still have a problem, take a look at your .htaccess file and see if requests are getting intercepted.</p>
+
+                        <h3>Fonts not loading in iPhone or iPad</h3>
+
+                        <p>The most common problem here is that you are serving the fonts from an IIS server. IIS refuses to serve files that have unknown MIME types. If that is the case, you must set the MIME type for SVG to "image/svg+xml" in the server settings. Follow these instructions from Microsoft if you need help.</p>
+
+                        <h3>Fonts not loading in Firefox</h3>
+
+                        <p>The primary reason for this failure? You are still using a version Firefox older than 3.5. So upgrade already! If that isn't it, then you are very likely serving fonts from a different domain. Firefox requires that all font assets be served from the same domain. Lastly it is possible that you need to add WOFF to your list of MIME types (if you are serving via IIS.)</p>
+
+                        <h3>Fonts not loading in IE</h3>
+
+                        <p>Are you looking at Internet Explorer on an actual Windows machine or are you cheating by using a service like Adobe BrowserLab? Many of these screenshot services do not render @font-face for IE. Best to test it on a real machine.</p>
+
+                        <h3>Fonts not loading in IE9</h3>
+
+                        <p>IE9, like Firefox, requires that fonts be served from the same domain as the website. Make sure that is the case.</p>
+                    </div>
+                </div>
+            </div>
+
+        </div>
+
+    </div>
+    <div id="footer">
+        <p>&copy;2010-2017 Font Squirrel. All rights reserved.</p>
+    </div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/base-resources/fonts/webfontkit-20240704-041112/gotham_medium-webfont.woff b/base-resources/fonts/webfontkit-20240704-041112/gotham_medium-webfont.woff
new file mode 100755 (executable)
index 0000000..4c204fd
Binary files /dev/null and b/base-resources/fonts/webfontkit-20240704-041112/gotham_medium-webfont.woff differ
diff --git a/base-resources/fonts/webfontkit-20240704-041112/gotham_medium-webfont.woff2 b/base-resources/fonts/webfontkit-20240704-041112/gotham_medium-webfont.woff2
new file mode 100755 (executable)
index 0000000..e6bee20
Binary files /dev/null and b/base-resources/fonts/webfontkit-20240704-041112/gotham_medium-webfont.woff2 differ
diff --git a/base-resources/fonts/webfontkit-20240704-041112/specimen_files/grid_12-825-55-15.css b/base-resources/fonts/webfontkit-20240704-041112/specimen_files/grid_12-825-55-15.css
new file mode 100755 (executable)
index 0000000..fb66068
--- /dev/null
@@ -0,0 +1,370 @@
+/*Notes about grid:
+Columns:      12
+Grid Width:   825px
+Column Width: 55px
+Gutter Width: 15px
+-------------------------------*/
+
+
+.section {
+       margin-bottom: 18px;
+}
+
+.section:after {
+       content:    '.';
+       display:    block;
+       height:     0;
+       clear:      both;
+       visibility: hidden;
+}
+
+.section {
+       *zoom: 1;
+}
+
+.section .firstcolumn,
+.section .firstcol {
+       margin-left: 0;
+}
+
+
+/* Border on left hand side of a column. */
+.border {
+       padding-left: 7px;
+       margin-left:  7px;
+       border-left:  1px solid #eee;
+}
+
+/* Border with more whitespace, spans one column. */
+.colborder {
+       padding-left: 42px;
+       margin-left:  42px;
+       border-left:  1px solid #eee;
+}
+
+
+/* The Grid Classes */
+.grid1, .grid1_2cols, .grid1_3cols, .grid1_4cols, .grid2, .grid2_3cols, .grid2_4cols, .grid3, .grid3_2cols, .grid3_4cols, .grid4, .grid4_3cols, .grid5, .grid5_2cols, .grid5_3cols, .grid5_4cols, .grid6, .grid6_4cols, .grid7, .grid7_2cols, .grid7_3cols, .grid7_4cols, .grid8, .grid8_3cols, .grid9, .grid9_2cols, .grid9_4cols, .grid10, .grid10_3cols, .grid10_4cols, .grid11, .grid11_2cols, .grid11_3cols, .grid11_4cols, .grid12 {
+       margin-left: 15px;
+       float:       left;
+       display:     inline;
+       overflow:    hidden;
+}
+
+
+.width1, .grid1, .span-1 {
+       width: 55px;
+}
+
+.width1_2cols, .grid1_2cols {
+       width: 20px;
+}
+
+.width1_3cols, .grid1_3cols {
+       width: 8px;
+}
+
+.width1_4cols, .grid1_4cols {
+       width: 2px;
+}
+
+.input_width1 {
+       width: 49px;
+}
+
+.width2, .grid2, .span-2 {
+       width: 125px;
+}
+
+.width2_3cols, .grid2_3cols {
+       width: 31px;
+}
+
+.width2_4cols, .grid2_4cols {
+       width: 20px;
+}
+
+.input_width2 {
+       width: 119px;
+}
+
+.width3, .grid3, .span-3 {
+       width: 195px;
+}
+
+.width3_2cols, .grid3_2cols {
+       width: 90px;
+}
+
+.width3_4cols, .grid3_4cols {
+       width: 37px;
+}
+
+.input_width3 {
+       width: 189px;
+}
+
+.width4, .grid4, .span-4 {
+       width: 265px;
+}
+
+.width4_3cols, .grid4_3cols {
+       width: 78px;
+}
+
+.input_width4 {
+       width: 259px;
+}
+
+.width5, .grid5, .span-5 {
+       width: 335px;
+}
+
+.width5_2cols, .grid5_2cols {
+       width: 160px;
+}
+
+.width5_3cols, .grid5_3cols {
+       width: 101px;
+}
+
+.width5_4cols, .grid5_4cols {
+       width: 72px;
+}
+
+.input_width5 {
+       width: 329px;
+}
+
+.width6, .grid6, .span-6 {
+       width: 405px;
+}
+
+.width6_4cols, .grid6_4cols {
+       width: 90px;
+}
+
+.input_width6 {
+       width: 399px;
+}
+
+.width7, .grid7, .span-7 {
+       width: 475px;
+}
+
+.width7_2cols, .grid7_2cols {
+       width: 230px;
+}
+
+.width7_3cols, .grid7_3cols {
+       width: 148px;
+}
+
+.width7_4cols, .grid7_4cols {
+       width: 107px;
+}
+
+.input_width7 {
+       width: 469px;
+}
+
+.width8, .grid8, .span-8 {
+       width: 545px;
+}
+
+.width8_3cols, .grid8_3cols {
+       width: 171px;
+}
+
+.input_width8 {
+       width: 539px;
+}
+
+.width9, .grid9, .span-9 {
+       width: 615px;
+}
+
+.width9_2cols, .grid9_2cols {
+       width: 300px;
+}
+
+.width9_4cols, .grid9_4cols {
+       width: 142px;
+}
+
+.input_width9 {
+       width: 609px;
+}
+
+.width10, .grid10, .span-10 {
+       width: 685px;
+}
+
+.width10_3cols, .grid10_3cols {
+       width: 218px;
+}
+
+.width10_4cols, .grid10_4cols {
+       width: 160px;
+}
+
+.input_width10 {
+       width: 679px;
+}
+
+.width11, .grid11, .span-11 {
+       width: 755px;
+}
+
+.width11_2cols, .grid11_2cols {
+       width: 370px;
+}
+
+.width11_3cols, .grid11_3cols {
+       width: 241px;
+}
+
+.width11_4cols, .grid11_4cols {
+       width: 177px;
+}
+
+.input_width11 {
+       width: 749px;
+}
+
+.width12, .grid12, .span-12 {
+       width: 825px;
+}
+
+.input_width12 {
+       width: 819px;
+}
+
+/* Subdivided grid spaces */
+.emptycols_left1, .prepend-1 {
+       padding-left: 70px;
+}
+
+.emptycols_right1, .append-1 {
+       padding-right: 70px;
+}
+
+.emptycols_left2, .prepend-2 {
+       padding-left: 140px;
+}
+
+.emptycols_right2, .append-2 {
+       padding-right: 140px;
+}
+
+.emptycols_left3, .prepend-3 {
+       padding-left: 210px;
+}
+
+.emptycols_right3, .append-3 {
+       padding-right: 210px;
+}
+
+.emptycols_left4, .prepend-4 {
+       padding-left: 280px;
+}
+
+.emptycols_right4, .append-4 {
+       padding-right: 280px;
+}
+
+.emptycols_left5, .prepend-5 {
+       padding-left: 350px;
+}
+
+.emptycols_right5, .append-5 {
+       padding-right: 350px;
+}
+
+.emptycols_left6, .prepend-6 {
+       padding-left: 420px;
+}
+
+.emptycols_right6, .append-6 {
+       padding-right: 420px;
+}
+
+.emptycols_left7, .prepend-7 {
+       padding-left: 490px;
+}
+
+.emptycols_right7, .append-7 {
+       padding-right: 490px;
+}
+
+.emptycols_left8, .prepend-8 {
+       padding-left: 560px;
+}
+
+.emptycols_right8, .append-8 {
+       padding-right: 560px;
+}
+
+.emptycols_left9, .prepend-9 {
+       padding-left: 630px;
+}
+
+.emptycols_right9, .append-9 {
+       padding-right: 630px;
+}
+
+.emptycols_left10, .prepend-10 {
+       padding-left: 700px;
+}
+
+.emptycols_right10, .append-10 {
+       padding-right: 700px;
+}
+
+.emptycols_left11, .prepend-11 {
+       padding-left: 770px;
+}
+
+.emptycols_right11, .append-11 {
+       padding-right: 770px;
+}
+
+.pull-1 {
+       margin-left: -70px;
+}
+
+.push-1 {
+       margin-right: -70px;
+       margin-left:  18px;
+       float:        right;
+}
+
+.pull-2 {
+       margin-left: -140px;
+}
+
+.push-2 {
+       margin-right: -140px;
+       margin-left:  18px;
+       float:        right;
+}
+
+.pull-3 {
+       margin-left: -210px;
+}
+
+.push-3 {
+       margin-right: -210px;
+       margin-left:  18px;
+       float:        right;
+}
+
+.pull-4 {
+       margin-left: -280px;
+}
+
+.push-4 {
+       margin-right: -280px;
+       margin-left:  18px;
+       float:        right;
+}
\ No newline at end of file
diff --git a/base-resources/fonts/webfontkit-20240704-041112/specimen_files/specimen_stylesheet.css b/base-resources/fonts/webfontkit-20240704-041112/specimen_files/specimen_stylesheet.css
new file mode 100755 (executable)
index 0000000..cd88462
--- /dev/null
@@ -0,0 +1,502 @@
+@import url('grid_12-825-55-15.css');
+
+/*  
+       CSS Reset by Eric Meyer - Released under Public Domain
+    http://meyerweb.com/eric/tools/css/reset/
+*/
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, font, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center, dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend, table,
+caption, tbody, tfoot, thead, tr, th, td {
+       margin:         0;
+       padding:        0;
+       border:         0;
+       outline:        0;
+       font-size:      100%;
+       vertical-align: baseline;
+       background:     transparent;
+}
+
+body {
+       line-height: 1;
+}
+
+ol, ul {
+       list-style: none;
+}
+
+blockquote, q {
+       quotes: none;
+}
+
+blockquote:before, blockquote:after,
+q:before, q:after {
+       content: '';
+       content: none;
+}
+
+:focus {
+       outline: 0;
+}
+
+ins {
+       text-decoration: none;
+}
+
+del {
+       text-decoration: line-through;
+}
+
+table {
+       border-collapse: collapse;
+       border-spacing:  0;
+}
+
+
+body {
+       color:            #000;
+       background-color: #dcdcdc;
+}
+
+a {
+       text-decoration: none;
+       color:           #1883ba;
+}
+
+h1 {
+       font-size:     32px;
+       font-weight:   normal;
+       font-style:    normal;
+       margin-bottom: 18px;
+}
+
+h2 {
+       font-size: 18px;
+}
+
+#container {
+       width:  865px;
+       margin: 0px auto;
+}
+
+
+#header {
+       padding:          20px;
+       font-size:        36px;
+       background-color: #000;
+       color:            #fff;
+}
+
+#header span {
+       color: #666;
+}
+
+#main_content {
+       background-color: #fff;
+       padding:          60px 20px 20px;
+}
+
+
+#footer p {
+       margin:         0;
+       padding-top:    10px;
+       padding-bottom: 50px;
+       color:          #333;
+       font:           10px Arial, sans-serif;
+}
+
+.tabs {
+       width:            100%;
+       height:           31px;
+       background-color: #444;
+}
+
+.tabs li {
+       float:            left;
+       margin:           0;
+       overflow:         hidden;
+       background-color: #444;
+}
+
+.tabs li a {
+       display:         block;
+       color:           #fff;
+       text-decoration: none;
+       font:            bold 11px/11px 'Arial';
+       text-transform:  uppercase;
+       padding:         10px 15px;
+       border-right:    1px solid #fff;
+}
+
+.tabs li a:hover {
+       background-color: #00b3ff;
+
+}
+
+.tabs li.active a {
+       color:            #000;
+       background-color: #fff;
+}
+
+
+div.huge {
+
+       font-size:      300px;
+       line-height:    1em;
+       padding:        0;
+       letter-spacing: -.02em;
+       overflow:       hidden;
+}
+
+div.glyph_range {
+       font-size:   72px;
+       line-height: 1.1em;
+}
+
+.size10 {
+       font-size: 10px;
+}
+
+.size11 {
+       font-size: 11px;
+}
+
+.size12 {
+       font-size: 12px;
+}
+
+.size13 {
+       font-size: 13px;
+}
+
+.size14 {
+       font-size: 14px;
+}
+
+.size16 {
+       font-size: 16px;
+}
+
+.size18 {
+       font-size: 18px;
+}
+
+.size20 {
+       font-size: 20px;
+}
+
+.size24 {
+       font-size: 24px;
+}
+
+.size30 {
+       font-size: 30px;
+}
+
+.size36 {
+       font-size: 36px;
+}
+
+.size48 {
+       font-size: 48px;
+}
+
+.size60 {
+       font-size: 60px;
+}
+
+.size72 {
+       font-size: 72px;
+}
+
+.size90 {
+       font-size: 90px;
+}
+
+
+.psample_row1 {
+       height: 120px;
+}
+
+.psample_row1 {
+       height: 120px;
+}
+
+.psample_row2 {
+       height: 160px;
+}
+
+.psample_row3 {
+       height: 160px;
+}
+
+.psample_row4 {
+       height: 160px;
+}
+
+.psample {
+       overflow: hidden;
+       position: relative;
+}
+
+.psample p {
+       line-height: 1.3em;
+       display:     block;
+       overflow:    hidden;
+       margin:      0;
+}
+
+.psample span {
+       margin-right: .5em;
+}
+
+.white_blend {
+       width:            100%;
+       height:           61px;
+       background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO1JREFUeNrs3TsKgFAMRUE/eer+NxztxMYuEWQG3ECKwwUF58ycAKixOAGAyAKILAAiCyCyACILgMgCiCyAyAIgsgAiCyCyAIgsgMgCiCwAIgsgsgAiC4DIAogsACIL0CWuZ3UGgLrIhjMA1EV2OAOAJQtgyQLwjOzmDAAiCyCyAIgsQFtkd2cAEFkAkQVAZAHaIns4A4AlC2DJAiCyACILILIAiCzAV5H1dQGAJQsgsgCILIDIAvwisl58AViyAJYsACILILIAIgvAe2T9EhxAZAFEFgCRBeiL7HAGgLrIhjMAWLIAliwAt1OAAQDwygTBulLIlQAAAABJRU5ErkJggg==);
+       position:         absolute;
+       bottom:           0;
+}
+
+.black_blend {
+       width:            100%;
+       height:           61px;
+       background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPJJREFUeNrs3TEKhTAQRVGjibr/9QoxhY2N3Ywo50A28IrLwP9g6b1PAMSYTQAgsgAiC4DIAogsgMgCILIAIgsgsgCILIDIAogsACILILIAIguAyAKILIDIAiCyACILgMgCZCnjLWYAiFGvB0BQZJsZAFyyAC5ZAO6RXc0AILIAIguAyAKkRXYzA4DIAogsACILkBbZ3QwALlkAlywAIgsgsgAiC4DIArwVWf8uAHDJAogsACILILIAv4isH74AXLIALlkARBZAZAFEFoDnyPokOIDIAogsACILkBfZZgaAuMhWMwC4ZAE+p4x3mAEgxinAAJ+XBbPWGkwAAAAAAElFTkSuQmCC);
+       position:         absolute;
+       bottom:           0;
+}
+
+.fullreverse {
+       background:    #000 !important;
+       color:         #fff !important;
+       margin-left:   -20px;
+       padding-left:  20px;
+       margin-right:  -20px;
+       padding-right: 20px;
+       padding:       20px;
+       margin-bottom: 0;
+}
+
+
+.sample_table td {
+       padding-top:    3px;
+       padding-bottom: 5px;
+       padding-left:   5px;
+       vertical-align: middle;
+       line-height:    1.2em;
+}
+
+.sample_table td:first-child {
+       background-color: #eee;
+       text-align:       right;
+       padding-right:    5px;
+       padding-left:     0;
+       padding:          5px;
+       font:             11px/12px 'Courier New', Courier, mono;
+}
+
+code {
+       white-space:      pre;
+       background-color: #eee;
+       display:          block;
+       padding:          10px;
+       margin-bottom:    18px;
+       overflow:         auto;
+}
+
+
+.bottom, .last {
+       margin-bottom:  0 !important;
+       padding-bottom: 0 !important;
+}
+
+.box {
+       padding:       18px;
+       margin-bottom: 18px;
+       background:    #eee;
+}
+
+.reverse, .reversed {
+       background: #000 !important;
+       color:      #fff !important;
+       border:     none !important;
+}
+
+#bodycomparison {
+       position:    relative;
+       overflow:    hidden;
+       font-size:   72px;
+       height:      90px;
+       white-space: nowrap;
+}
+
+#bodycomparison div {
+       font-size:   72px;
+       line-height: 90px;
+       display:     inline;
+       margin:      0 15px 0 0;
+       padding:     0;
+}
+
+#bodycomparison div span {
+       font:     10px Arial;
+       position: absolute;
+       left:     0;
+}
+
+#xheight {
+       float:       none;
+       position:    absolute;
+       color:       #d9f3ff;
+       font-size:   72px;
+       line-height: 90px;
+}
+
+.fontbody {
+       position: relative;
+}
+
+.arialbody {
+       font-family: Arial;
+       position:    relative;
+}
+
+.verdanabody {
+       font-family: Verdana;
+       position:    relative;
+}
+
+.georgiabody {
+       font-family: Georgia;
+       position:    relative;
+}
+
+/* @group Layout page
+ */
+
+#layout h1 {
+       font-size:   36px;
+       line-height: 42px;
+       font-weight: normal;
+       font-style:  normal;
+}
+
+#layout h2 {
+       font-size:   24px;
+       line-height: 23px;
+       font-weight: normal;
+       font-style:  normal;
+}
+
+#layout h3 {
+       font-size:   22px;
+       line-height: 1.4em;
+       margin-top:  1em;
+       font-weight: normal;
+       font-style:  normal;
+}
+
+
+#layout p.byline {
+       font-size:     12px;
+       margin-top:    18px;
+       line-height:   12px;
+       margin-bottom: 0;
+}
+
+#layout p {
+       font-size:     14px;
+       line-height:   21px;
+       margin-bottom: .5em;
+}
+
+#layout p.large {
+       font-size:   18px;
+       line-height: 26px;
+}
+
+#layout .sidebar p {
+       font-size:   12px;
+       line-height: 1.4em;
+}
+
+#layout p.caption {
+       font-size:     10px;
+       margin-top:    -16px;
+       margin-bottom: 18px;
+}
+
+/* @end */
+
+/* @group Glyphs */
+
+#glyph_chart div {
+       background-color: #d9f3ff;
+       color:            black;
+       float:            left;
+       font-size:        36px;
+       height:           1.2em;
+       line-height:      1.2em;
+       margin-bottom:    1px;
+       margin-right:     1px;
+       text-align:       center;
+       width:            1.2em;
+       position:         relative;
+       padding:          .6em .2em .2em;
+}
+
+#glyph_chart div p {
+       position:         absolute;
+       left:             0;
+       top:              0;
+       display:          block;
+       text-align:       center;
+       font:             bold 9px Arial, sans-serif;
+       background-color: #3a768f;
+       width:            100%;
+       color:            #fff;
+       padding:          2px 0;
+}
+
+
+#glyphs h1 {
+       font-family: Arial, sans-serif;
+}
+
+/* @end */
+
+/* @group Installing */
+
+#installing {
+       font: 13px Arial, sans-serif;
+}
+
+#installing p,
+#glyphs p {
+       line-height:   1.2em;
+       margin-bottom: 18px;
+       font:          13px Arial, sans-serif;
+}
+
+
+#installing h3 {
+       font-size:  15px;
+       margin-top: 18px;
+}
+
+/* @end */
+
+#rendering h1 {
+       font-family: Arial, sans-serif;
+}
+
+.render_table td {
+       font:           11px 'Courier New', Courier, mono;
+       vertical-align: middle;
+}
+
+
diff --git a/base-resources/fonts/webfontkit-20240704-041112/stylesheet.css b/base-resources/fonts/webfontkit-20240704-041112/stylesheet.css
new file mode 100755 (executable)
index 0000000..a458d3d
--- /dev/null
@@ -0,0 +1,36 @@
+/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on July 4, 2024 */
+
+
+
+@font-face {
+    font-family: 'gothambold';
+    src: url('gotham_bold-webfont.woff2') format('woff2'),
+         url('gotham_bold-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+
+}
+
+
+
+
+@font-face {
+    font-family: 'gothambook';
+    src: url('gotham_book-webfont.woff2') format('woff2'),
+         url('gotham_book-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+
+}
+
+
+
+
+@font-face {
+    font-family: 'gothammedium';
+    src: url('gotham_medium-webfont.woff2') format('woff2'),
+         url('gotham_medium-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+
+}
\ No newline at end of file
diff --git a/base-resources/readme.md b/base-resources/readme.md
new file mode 100644 (file)
index 0000000..1fcedcf
--- /dev/null
@@ -0,0 +1,4 @@
+This folder contains the originals resources files
+It could be deleted later or moved to another repository.
+
+This folder is just here to save the original files.
diff --git a/content/404.md b/content/404.md
new file mode 100644 (file)
index 0000000..acbd6d0
--- /dev/null
@@ -0,0 +1,7 @@
+---
+title: "404: Page not found"
+layout: "404"
+url: "/404.html"
+bodyClass: "page-404"
+
+---
\ No newline at end of file
diff --git a/content/_index.md b/content/_index.md
new file mode 100644 (file)
index 0000000..6a7ee44
--- /dev/null
@@ -0,0 +1,156 @@
+---
+title: Home
+draft: false
+---
+{{<section >}} 
+  {{<media-block
+    class="hero-block"
+    label="A Linux Foundation Project"
+    title="Bring the power of <a href=\"#\">open virtualization</a> everywhere."
+    titleLevel="1"
+    image="/img/flatline/data-process2.svg"
+    imageAlt="Xen Project Logo"
+    mediaPosition="right"
+    mobileMediaPosition="bottom"
+  >}}
+  {{<md>}}
+  The Xen Project team is a global open source community that develops the Xen
+  Project Hypervisor and its associated subprojects.
+  
+  Our mission is to advance
+  virtualization technology across a wide range of commercial and open-source
+  domains.
+  {{</md>}}
+  {{</media-block>}}
+{{</section>}}
+
+
+{{<html>}}
+<p class="txt-c section-space anchor-placement-bottom">
+  <a href="#" class="anchor"><strong>Discover</strong></a>
+</p>
+{{</html>}}
+
+{{<section background="curve">}}
+  {{<features-list>}}
+  - title: Open-source
+    icon: fas fa-code
+    description: Wide variety of vendors and individuals opens new opportunities for the hypervisor and provides end-users with numerous places to find support.
+  - title: Reliable
+    icon: fas fa-thumbs-up
+    description: Over 10 million people use Xen with an ecosystem of more than 2000 commercially certified partners.
+  - title: Flexible
+    icon: fas fa-cogs
+    description: Architecture enables vendors to create Xen-based products and services for servers, cloud, desktop, embedded, and security-first environments.
+  - title: Support
+    icon: fas fa-headset
+    description: Hypervisor supports multiple guest operating systems and cloud platforms.
+  - title: Secure
+    icon: fas fa-shield-alt
+    description: Minimal attack surface with key security features like KCONFIG and Virtual Machine Introspection.
+  - title: Modular
+    icon: fas fa-puzzle-piece
+    description: Architecture enables a degree of scalability, robustness, and security suitable for large, critical, and extremely secure environments.
+  {{</features-list>}}
+{{</section>}}
+
+
+{{<section container="small">}}
+
+{{<center>}}
+## A virtualization **revolution**
+{{</center>}}
+
+{{<md>}}
+The Xen Project focuses on revolutionizing virtualization by providing a versatile and powerful hypervisor that addresses the evolving needs of diverse industries :
+
+- **Empower Innovation:** Tailored virtualization to drive progress across various domains.
+
+- **Enhance Cloud Ecosystems:** Elevate cloud capabilities with high-performing, reliable virtualization.
+
+- **Secure Critical Systems:** Safeguard data and applications through industry-leading security.
+
+- **Revolutionize Embedded Technologies:** Transform embedded and automotive sectors with mature, safe, secure solutions.
+{{</md>}}
+{{</section>}}
+
+
+
+{{<section container="full">}}
+{{<carousel class="mg-t-lg">}}
+{{<getpages "projects">}}
+{{</carousel>}}
+
+
+
+<p class="mob-mg-v-xl mg-v-xxl txt-c">
+  <a class="btn btn-primary" href="{{ .Site.BaseURL }}/projects">
+    Discover all projects <i class="fas fa-arrow-right"></i>
+  </a>
+</p>
+{{</section>}}
+
+{{<section>}}
+{{<latest-news>}}
+{{</section>}}
+
+
+{{<section background="curve-reverse">}}
+  {{<media-block
+    title="Governed by Xen project **members**"
+    media=`{{<partial "blocks/logos-circle">}}`
+    mediaMobilePosition="top"
+  >}}
+  Board members can propose and vote upon changes to the Xen Project.Members also gain valuable strategic insight into project plans and future scope.
+
+  <p class="mg-t-md">
+    <a href="/xen-project/advisors/" class="btn btn-secondary">Join the advisory board <i class="fas fa-arrow-right"></i></a>
+  </p>
+  {{</media-block>}}
+
+  
+  {{<media-block
+    class="block-space"
+    title="Lead by a **dedicated community**"
+    media="/img/flatline/team-work.svg"
+    mediaPosition="right"
+    mediaMobilePosition="bottom"
+  >}}
+  The Xen community is a dynamic and collaborative ecosystem comprised of developers, researchers, and enthusiasts dedicated to advancing open-source virtualization technology.
+With diverse backgrounds and expertise, members actively contribute to Xen's evolution, fostering innovation, sharing knowledge, and supporting one another through continuous development efforts.
+
+  <p class="mg-t-md">
+    <a href="TODO">Get started <i class="fas fa-arrow-right"></i></a>
+  </p>
+  {{</media-block>}}
+{{</section>}}
+
+
+
+
+{{<section>}}
+  {{<media-block
+    title="About **Xen Project**"
+    media="/img/flatline/data-process.svg"
+    mediaMobilePosition="bottom"
+  >}}
+ The mission of the Xen Project is to advance virtualisation technology across a wide range of commercial and open-source domains.
+
+  <p class="mg-t-md">
+    <a href="TODO">Learn about Xen Project<i class="fas fa-arrow-right"></i></a>
+  </p>
+  {{</media-block>}}
+{{</section>}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/content/about/_index.md b/content/about/_index.md
new file mode 100644 (file)
index 0000000..23d3ed9
--- /dev/null
@@ -0,0 +1,112 @@
+---
+title: About Xen Project
+description: Learn about Xen Project, its mission, history, and the vibrant community behind the leading open source hypervisor. Find out how you can get involved.
+date: 2024-01-14T07:07:07+01:00
+draft: false
+type: page
+layout: single
+menus:
+  main:
+    parent: About
+    weight: 10
+---
+
+{{<section>}}
+{{<media-block
+   title="A global open source community"
+   media="/img/flatline/java.svg"
+>}}
+{{<md>}}
+
+Xen (pronounced /’zɛn/) Project has its origins in the ancient Greek term Xenos (ξένος), which can be used to refer to guest-friends whose relationship is constructed under the ritual of xenia (“guest-friendship”), which in term is a wordplay on the idea of guest operating systems as well as a community of developers and users. Learn about the project’s interesting history here.
+
+The community follows a number of principles, including Openness, Transparency, Meritocracy, and Consensus Decision Making.
+
+Find out more about how the community governs itself.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+{{<full-width-image src="/img/others/xen-team-photo-2.png" alt="Xen Project Team" class="image-ratio-large">}}
+
+
+{{<section>}}
+{{<media-block
+   title="Open-source projects home"
+   media="/img/flatline/data-process-with-xen-logo.svg"
+   mediaPosition="right"
+>}}
+{{<md>}}
+The Xen Project is the home for several virtualization-related open source projects. The community is focused on advancing virtualization in a number of different commercial and open source applications, including server virtualization, Infrastructure as a Services (IaaS), desktop virtualization, security applications, embedded and hardware appliances, and automotive/aviation.
+
+Software hosted on XenProject.org is, and always will be, open source. The code is licensed under the GNU General Public License (GPL2). Our community follows a governance process based on openness, transparency, and meritocracy.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+{{<section>}}
+{{<media-block
+   title="History"
+   media="/img/flatline/timeline.svg"
+>}}
+We recently celebrated 20 years in The Xen Project. The timeline shows key milestones over the years, starting from 2003 to the present day in 2024.
+
+<p class="mg-t-md">
+  <a href="TODO" class="btn btn-secondary">Discover Xen Project history <i class="fas fa-arrow-up-right-from-square"></i></a>
+</p>
+{{</media-block>}}
+{{</section>}}
+
+
+{{<section>}}
+{{<media-block
+   title="Open-source technologies"
+   media="/img/flatline/team-work.svg"
+   mediaPosition="right"
+>}}
+{{<md>}}
+The Xen Project has created a number of open source technologies for specific purposes:
+
+- The Xen Project* Hypervisor is the open source standard for hardware virtualization and the foundation for all solutions hosted on the Xen Project website. It includes a build configuration for Arm that targets embedded and mobile devices on the Arm architecture.
+
+- Drivers for the Xen Project* Hypervisor are delivered with host operating systems such as Linux and BSD distributions. The project maintains Windows drivers, which are developed as part of the Windows PV Drivers project.
+
+- XAPI is a Xen Project toolstack for an enterprise-ready virtualization platforms based on the Xen Hypervisor. XAPI adds further management functionality to Xen and adds many integrations for cloud, storage, and networking solutions. XAPI is used by the Citrix Hypervisor, XCP-ng and Magrana Server.
+
+- The project also hosts a number of Unikernel technologies: Unikernel, which is an SDK to build Unikernel bases; Mirage OS which is a Ocaml based Unikernel.
+
+If you are unsure which technology is right for you, check out our team portals. In addition, read the Xen Overview document to learn about Xen's architecture, components and some of the key choices you will have to make.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+{{<section>}}
+{{<media-block
+   title="A Linux Foundation collaborative project"
+   media="/img/logos/logo-linux-foundation.svg"
+>}}
+{{<md>}}
+Projects under The Linux Foundation are independently funded software projects that harness the power of collaborative development to fuel innovation across industries and ecosystems. By spreading the collaborative DNA of the largest collaborative software development project in history, The Linux Foundation provides the essential collaborative and organizational framework so project hosts can focus on innovation and results. Linux Foundation Collaborative Projects span the enterprise, mobile, and embedded markets and are backed by many of the largest names in computing.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+{{<section>}}
+{{<media-block
+   title="Governed by Xen project members"
+   media=`{{<partial "blocks/logos-circle">}}`
+   mediaPosition="right"
+>}}
+Board members can propose and vote upon changes to the Xen Project. Members also gain valuable strategic insight into project plans and future scope.
+
+<p class="mg-t-md">
+  <a href="TODO" class="btn btn-secondary">Join the advisory board <i class="fas fa-arrow-right"></i></a>
+</p>
+{{</media-block>}}
+{{</section>}}
+
+
+
+{{<section>}}
+{{<latest-news>}}
+{{</section>}}
diff --git a/content/about/become-a-member.md b/content/about/become-a-member.md
new file mode 100644 (file)
index 0000000..b2daa41
--- /dev/null
@@ -0,0 +1,161 @@
+---
+title: Become a member
+description: Join the Xen community and become a member to actively contribute to the advancement of open-source virtualization.
+date: 2024-01-14T07:07:07+01:00
+draft: false
+menus:
+  main:
+    parent: About
+    weight: 30
+---
+
+{{<section>}}
+{{<media-block
+   title="The Xen Project members are companies that are committed to the market and technical success of the Xen Project"
+   media="/img/flatline/brainstorming-session.svg"
+>}}
+{{<md>}}
+The Xen Project members are companies that are committed to the market and technical success of the Xen Project.
+
+The Members are complementary to the role of committers and maintainers, with both working closely together to ensure the overall priorities of the project are aligned.
+
+Committers and maintainers are responsible for the technical development and are the final decision makers on code contributions to the Xen Project.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+{{<section background="curve" class="txt-c">}}
+  {{<md>}} 
+  ## Main responsibilities
+  {{</md>}}
+
+  {{<features-list cols="4">}}
+  - title: Financial oversight
+    icon: fas fa-money-bill-alt
+    description: Budget management and investment decisions on infrastructure and project operations.
+  - title: Membership requirements
+    icon: fas fa-users
+    description: Annual membership fees.
+  - title: Steer the project
+    icon: fas fa-chart-line
+    description: To advance its market and technical success by raising awareness.
+  - title: Global policy decisions
+    icon: fas fa-globe
+    description: Trademarks, compliance requirements, test cases, and infrastructure.
+  {{</features-list>}}
+
+
+{{</section>}}
+
+{{<section>}}
+{{<media-block
+   title="Improve engineering ROI"
+   media="/img/flatline/data-analysis.svg"
+   mediaPosition="right"
+>}}
+{{<md>}}
+The Xen Project is in the process of creating a new common test infrastructure. New test cases for specific hardware and software combinations will lead to higher quality project releases. In addition, a planned focus on a security and hardening framework will enhance the release readiness of the Xen Project.
+
+The Advisory Board helps define test cases and prioritize release requirements, in cooperation with project maintainers, ultimately increasing engineering ROI from the impact of these decisions.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+{{<section>}}
+{{<media-block
+   title="Xen Project Insights"
+   media="/img/flatline/data-analyst.svg"
+>}}
+{{<md>}}
+Board members can propose and vote upon changes to the Xen Project test and validation infrastructure and financial resource allocation.
+
+By being an active Advisory Board participant, regular opportunities for discussions with technical leaders include the chance to share priorities and endorse new strategies. In return, members will gain valuable strategic insight into project plans and future scope.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+{{<section>}}
+{{<media-block
+  title="Increase visibility"
+  media="/img/flatline/handshake.svg"
+  mediaPosition="right"
+>}}
+{{<md>}}
+Board members can influence the marketing strategy and participate in a wide range of activities including press releases, brand visibility on the website, and giveaways at events.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+
+{{<section>}}
+{{<media-block
+  title="Define policies"
+  media="/img/flatline/brainstorming.svg"
+>}}
+{{<md>}}
+Members help define policies, including trademark usage, compliance and certification of Xen derivatives. In addition, membership dues funds project infrastructure, such as hosting and test environments which are essential to the project.
+
+The Board process will help ensure non-technical decisions are collectively determined. As such, the Advisory Board contributes a sustainable, self-directed source of funding for work that will help drive the marketplace and technical success of the Xen Project.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+
+{{<section background="curve-reverse" >}}
+{{<md>}}
+### How to **join?**
+{{</md>}}
+
+{{<vertical-lists cols="3" headerLevel="4">}}
+- title: Step 1
+  text: Review membership benefits and requirements on the Xen Project website.
+- title: Step 2
+  text: Contact the Xen Project team to discuss membership options and fees.
+- title: Step 3
+  text: Complete the membership application and submit payment to join.
+
+{{</vertical-lists>}}
+
+<p class="txt-c mg-t-lg">
+  <a href="TODO" class="btn btn-primary">
+    Apply now
+    <i class="fas fa-arrow-right"></i>
+  </a>
+</p>
+<p class="txt-c">
+  <a href="TODO" class="btn btn-tertiary">
+    Need some help?
+    <i class="fas fa-arrow-right"></i>
+  </a>
+</p>
+
+{{</section>}}
+
+
+{{<section>}}
+{{<media-block
+   title="Governed by Xen project members"
+   media=`{{<partial "blocks/logos-circle">}}`
+>}}
+{{<md>}}
+Board members can propose and vote upon changes to the Xen Project. Members also gain valuable strategic insight into project plans and future scope.
+
+[Join the advisory board](link-to-xen-project-advisory-board)
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+
+{{<section>}}
+{{<media-block
+   title="About Xen Project"
+   media="/img/flatline/data-process.svg"
+   mediaPosition="right"
+>}}
+{{<md>}}
+The mission of the Xen Project is to advance virtualisation technology across a wide range of commercial and open-source domains.
+
+[Learn about Xen Project](link-to-xen-project-information)
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
diff --git a/content/about/contact-us.md b/content/about/contact-us.md
new file mode 100644 (file)
index 0000000..91ec1d8
--- /dev/null
@@ -0,0 +1,23 @@
+---
+title: Contact us
+description: Contact Xen Project for inquiries, support, and collaboration opportunities. Reach out to our team and join the conversation in our community forums.
+date: 2024-01-14T07:07:07+01:00
+draft: false
+menus:
+  main:
+    parent: About
+    weight: 30
+---
+
+{{<section>}}
+
+{{<vertical-lists>}}
+- title: Development
+  text: For development questions, please begin by asking on the mailing lists or Matrix. These are generally the fastest ways to get an answer.
+- title: GDPR
+  text: For GDPR requests, please contact gdpr@xenproject.org.
+- title: Other
+  text: For all other questions, please contact community.manager@xenproject.org.
+{{</vertical-lists>}}
+
+{{</section>}}
\ No newline at end of file
diff --git a/content/about/governance.md b/content/about/governance.md
new file mode 100644 (file)
index 0000000..1b18298
--- /dev/null
@@ -0,0 +1,500 @@
+---
+title: Governance
+description: 
+date: 2024-01-14T07:07:07+01:00
+draft: false
+menus:
+  main:
+    parent: About
+    weight: 40
+---
+
+
+{{<section md="true" container="small content-markdown">}}
+## Goals
+
+The goals of Xen Project Governance are to:
+
+- Create a set of minimum requirements for a sub-project hosted on Xenproject.org
+- Create a lightweight project life cycle that
+  - leads the project to articulate its goals and how to achieve them
+  - encourages desired behaviours (e.g. open development)
+  - provides motivation for the project to succeed
+  - leads to non-viable projects failing quickly
+  - provides opportunities for other community members
+- Avoid bureaucracy, i.e. the life cycle should be as informal as possible
+- Encourage Xen related projects to be hosted on Xenproject.org rather than going elsewhere
+- Set clear expectations to vendors, upstream and downstream projects and community members
+
+## Principles
+
+### Openness
+
+The Xen Project is open to all and provides the same opportunity to all. Everyone participates with the same rules. There are no rules to exclude any potential contributors which include, of course, direct competitors in the marketplace.
+
+### Transparency
+
+Project discussions, minutes, deliberations, project plans, plans for new features, and other artefacts are open, public, and easily accessible.
+
+### Meritocracy
+
+The Xen Project is a meritocracy. The more you contribute the more responsibility you will earn. Leadership roles in Xen are also merit-based and earned by peer acclaim.
+
+### Local Decision Making
+
+The Xen Project consists of a number of sub-projects: each sub-project makes technical and other decisions that solely affect it locally.
+
+## Xen Project Wide Roles
+
+### Sub-projects and Teams
+
+The Xen Project organizes itself into a number of sub-projects, which follow the [Project Governance](#project-governance) (or Project Lifecycle) as outlined in this document. Sub-projects (sometimes simply referred to as projects) are run by individuals and are often referred to as teams to highlight the collaborative nature of development. For example, each sub-project has a [team portal](/developers/teams) on Xenproject.org. Sub-projects own and are responsible for a collection of source repositories and other resources (e.g. test infrastructure, CI infrastructure, …), which we call **sub-project assets** (or team assets) in this document.
+
+Sub-projects can either be **incubation projects** or **mature projects** as outlined in [Basic Project Life Cycle](#basic-project-life-cycle). In line with the meritocratic principle, mature projects have more influence than incubation projects, on [project wide decisions](#project-wide-decision-making).
+
+### Community Manager
+
+The Xen Project has a community manager, whose primary role it is to support the entire Xen Project Community.
+
+### Xen Project Advisory Board
+
+The [Xen Project Advisory Board](/join) consists of members who are committed to steering the project to advance its market and technical success, and who serve as positive ambassadors for the project. The Xen Project Advisory Board manages non-technical aspects of the Xen Project including funding for shared project infrastructure, marketing and events, and managing the Xen Project trademark. The Advisory Board leaves all technical decisions to the open source meritocracy.
+
+### The Linux Foundation
+
+The Xen Project is a [Linux Foundation](/linux-foundation) Collaborative Project. Collaborative Projects are independently funded software projects that harness the power of collaborative development to fuel innovation across industries and ecosystems. By spreading the collaborative DNA of the largest collaborative software development project in history, The Linux Foundation provides the essential collaborative and organizational framework so projects can focus on innovation and results.
+
+### Mentor
+
+Younger projects may have a need for a mentor to help ensure that the project will be successful. Mentors can be maintainers, project leads, advisory board members or other distinguished community members.
+
+### Sponsor
+
+To form a new sub-project or team on Xenproject.org, we require a sponsor to support the creation of the new project. A sponsor can be a member of the project leadership team of a mature project, a member of the advisory board or the community manager. This ensures that a distinguished community member supports the idea behind the project.
+
+## Project Team Roles
+
+Sub-projects or teams are driven by the people who volunteer for the job. This functions well for most cases. This section lists the main roles which projects use. This section lists the default roles, which are based on how the Hypervisor project operates. Sub-projects can deviate from the default, but are required to document deviations from the default and link to it from this [document](#per-sub-project-governance-specialisation). The only exception is that each project is required to have a project leadership team, as without it, the project will not be able to function.
+
+The following table lists how each project uses these roles. Note that **incubation projects** have more flexibility in experimenting with roles that work for them, but need to define specializations before they can **mature**.
+
+| Project             | Mature | Maintainers | Committers | Security Team | Leadership Team                                        |
+| ------------------- | ------ | ----------- | ---------- | ------------- | ------------------------------------------------------ |
+| **Hypervisor**      | YES    | YES         | YES        | YES           | Committers and Release Manager, without a Project Lead |
+| **Windows Drivers** | NO     | YES         | YES        | NO            | Committers, with a Project Lead                        |
+| **XAPI**            | YES    | YES         | YES        | NO            | Committers, with a Project Lead                        |
+
+### Maintainers
+
+Maintainers own one or several components in the sub-projects source tree(s). A maintainer reviews and approves changes that affect their components. It is a maintainer's prime responsibility to review, comment on, co-ordinate and accept patches from other community member's and to maintain the design cohesion of their components. Maintainers are listed in a MAINTAINERS file in the root of each code repository that the project owns.
+
+Larger sub-projects such as the Hypervisor may have special maintainer roles such as a release manager and stable branch maintainers. In addition, larger projects may award different maintainers different levels of influence. Any specialisations and implications are documented in the respective MAINTAINERS file.
+
+### Committers
+
+Committers are Maintainers that are allowed to commit changes into the source code repository. The committer acts on the wishes of the maintainers and applies changes that have been approved by the respective maintainer(s) to the source tree. Due to their status in the community, committers can also act as referees should disagreements amongst maintainers arise. Committers are listed on the sub-project's team portal (e.g. [Hypervisor team portal](/developers/teams/hypervisor)) and/or in the projects MAINTAINERS files.
+
+### Security Response Team (short: Security Team)
+
+Each sub-project may have a security response team, that is responsible for receiving, reviewing, and responding to security incident reports for the sub-projects assets according to its security response process (e.g. [Hypervisor Security Problem Response Process](/developers/security-policy)).
+
+### Project Leadership Team and Project Lead
+
+Sub-projects and teams hosted on Xenproject.org are managed by a Project Leadership Team. The leadership team is made up of distinguished community members, but the exact composition may depend on the sub-project. For example, in the case of the Hypervisor sub-project, all committers and the release manager, are part of the leadership team. The leadership team owns the sub-projects processes, the overall architecture and all assets within the project and makes [sub-project wide decisions](#leadership-team-decisions) on behalf of its community.
+
+A sub-projects leadership team members are listed on the sub-project's team portal (e.g. [Hypervisor team portal](/developers/teams/hypervisor)).
+
+The Leadership Team may elect a Project Lead who is also a member of the Leadership Team. Project Leads are the public figurehead of the project and are responsible for the health of the project. Project Leads can also act as [referees](#conflict-resolution) should the Project Leadership Team become paralysed.
+
+## Making Contributions
+
+Making contributions in Xen follows the conventions as they are known in the Linux Kernel community. In summary contributions are made through patches that are reviewed by the community. Xen does not require community members to sign contribution or committer agreements. We do require contributors to sign contributions using the sign-off feature of the code repository, following the same approach as the Linux Kernel does (see [Developer Certificate Of Origin](http://elinux.org/Developer_Certificate_Of_Origin)).
+
+More information on making contributions can be found in the following documents:
+
+- [Contribution Guidelines](/help/contribution-guidelines)
+- [Review Then Commit Policy](#review-then-commit)
+
+## Decision Making, Conflict Resolution, Role Nominations and Elections
+
+Sub-projects or teams hosted on Xenproject.org are normally auto-governing and driven by the people who volunteer for the job. This functions well for most cases. This section lists the main mechanisms by which projects make decisions. This section lists the default mode of operation, which is based on how the Hypervisor project operates. Sub-projects can deviate from the default, but are required to document deviations from the default and link to it from this [document](#per-sub-project-governance-specialisation). The only exception is that each project is required to adhere to the **Review Then Commit Policy**, **Leadership Team Decisions** and **Conflict Resolution**.
+
+### Review Then Commit
+
+The vast majority of technical decisions within the Xen Project are code related decisions (e.g. patches and design documents), which determine whether a specific change can be accepted into the code base. The default decision making process is a review and commit process, which requires that all changes receive explicit approval from respective code owners (maintainers) before they are committed. The exact workflow and details of this policy between sub-projects may differ and are documented in one or several of the following places: MAINTAINERS/README/CONTRIBUTING files in repositories and/or the sub-project team portal.
+
+### Expressing Agreement and Disagreement
+
+Within the community, we follow the following number notation to explicitly express opinions on proposals, formal or informal votes.
+
+- **+2** : I am happy with this proposal, and I will argue for it
+- **+1** : I am happy with this proposal, but will not argue for it
+- **0** : I have no opinion
+- **\-1** : I am not happy with this proposal, but will not argue against it
+- **\-2** : I am not happy with this proposal, and I will argue against it
+
+A **\-2** should include an alternative proposal or a detailed explanation of the reasons for the negative opinion. A **+2** should include reasons for the positive opinion.
+
+How we tally results and their implications depend on the context in which is is used and are marked with Passed/Failed: in one of the following sections:
+
+- [Lazy Consensus / Lazy Voting](#lazy-consensus--lazy-voting)
+- [Leadership Team Decisions](#leadership-team-decisions)
+- [Project Wide Decision Making](#project-wide-decision-making)
+
+### Lazy Consensus / Lazy Voting
+
+Lazy Consensus is a useful technique to make decisions for specific proposals which are not covered by the Review Then Commit Policy or do not require a more formal decision (see below). Lazy Consensus is extremely useful, when you don't anticipate any objections, or to gauge whether there are objections to a proposal. The concrete process in this section is a mixture between Lazy Consensus and Lazy Voting and is designed to avoid unnecessary multiple stages in decision making.
+
+To make use of it, post something like the following on the project's mailing list (or some other communication channel):
+
+```
+I am assuming we are agreed on X and am going to assume lazy consensus:
+if there are no objections within the next seven days.
+```
+
+You should however ensure that all relevant stake-holders which may object are explicitly CC'ed, such as relevant maintainers or committers, ensure that **lazy consensus** is in the body of your message (this helps set up mail filters) and choose a reasonable time-frame. If it is unclear who the relevant stake-holders are, the project leadership can nominate a group of stake-holders to decide, or may choose to own the decision collectively and resolve it.
+
+Objections by stake-holders should be expressed using the [conventions above](#expressing-agreement-and-disagreement) to make disagreements easily identifiable.
+
+**Passed/Failed:** The proposer of Lazy Consensus decision is assumed to implicitly have an opinion of **+1**, unless otherwise stated.
+
+- Failed: A single **\-2** by a stake-holder whose approval is necessary
+- Failed: A total sum of opinions **<=0**
+- Passed: A total sum of opinions **\>0**
+
+It can only be overturned if the project leadership agrees collectively, that the decision is too important to be settled by lazy consensus / lazy voting. In situations where a proposal is failed, an alternative solution needs to be found, or if a decision is formally challenged, [conflict resolution mechanisms](#conflict-resolution) may need to be used to resolve the situation.
+
+**Further Examples:** A Lazy Consensus decision starts out with the implicit **+1** opinion of the proposer. If there is no explicit response, the proposal passes as the sum is **\>0**.
+
+If there is a single **\-1** without any **+** votes, the proposal fails.
+
+If there are multiple **+1**'s or **+2**'s, more **\-1**'s than positive votes are needed for the proposal to fail. This mechanism, is often also called
+
+**Lazy Voting**.
+
+The process does allow for a proposer to state a starting opinion of **0** or **\-1**. In this case, the Lazy Consensus label does not work for the process, as positive opinions are needed for the proposal to pass. To make use of this mechanism, post something like the following on the project's mailing list (or some other communication channel)
+
+```
+I want to solicit opinions on X and am going to assume lazy voting:
+My starting position is 0, as I feel that at least one other stake-holder
+should agree with the proposal.If there is a majority in favour, without a
+-2 objection within the next seven days, I assume that the proposal holds and
+does not need require further discussion.
+```
+
+Unlike in the lazy consensus case, a single **+1** vote is needed. Otherwise the proposal fails. Otherwise, the counting rules follow the general case.
+
+This can be useful in situations, where the proposer is not quite sure about his/her position, or where the invoker acts on behalf of the community to resolve a discussion which has become stuck. A starting position of **\-1** can be used to verify that a specific approach may be a bad idea: whether this is really useful, has to be verified as we start using this process.
+
+### Informal Votes or Surveys
+
+Generally the Xen Project community tries to achieve consensus on most issues. In situations where several concrete options are possible, community members may organize an informal vote on the different proposals and use the [conventions above](#expressingopinion) to identify the strongest proposal. Once the strongest candidate has been identified, [lazy consensus](#lazyconsensus) could be used to close the discussion. In some situation, a specific survey may need to be created, to help identify gauging consensus on specific issues. For informal votes and surveys, we do not prescribe specific rules, as they are non-binding: it is up to the organizer of an informal vote or survey to interpret the result and explain it to the community. If the vote/survey relates to an area that is owned by the project leadership, the project leadership has to formally confirm the decision.
+
+Note that informal votes amongst a small set of stake-holders that disagree on a position during technical disagreements in code, design reviews and other discussions can be useful. In technical discussions it is not always clear how strong agreement or disagreement on a specific issue is. Using the [conventions above](#expressingopinion), can help differentiate between minor and major disagreements and reduce the time a discussions continues unnecessarily. This is true in particular for cases, where several maintainers may need to agree to a proposal.
+
+When having an informal vote or survey, they creator should consider whether conducting a vote or survey in public, may be divisive and damaging for the community. In such cases, the vote/survey should be conducted anonymously.
+
+### Leadership Team Decisions
+
+Each sub-project has a leadership team, which is typically made up of the most senior and influential developers within the sub-project (e.g. the project’s committers). The project leadership team owns decisions, such as:
+
+- Sub-project wide policy decisions (e.g. policies, procedures and processes whose scope is specific to the sub-projects). This includes deviations from project global governance, where permissible.
+- Decisions related to sub-project assets that are not clearly owned (e.g. unowned code, project wide assets such as test infrastructure, etc.).
+- Decisions related to nominating and confirming leadership roles within the sub-project. This includes [decisions to creating and filling specialised new roles](#elections), such as release managers or similar, including their scope and set of responsibilities.
+- Resolving [conflicts](#conflict) within the sub-project that cannot otherwise be resolved.
+
+Leadership team decisions can be made in private (e.g. a private IRC meeting, on a private mailing list, through a private vote) or on a public mailing list using [decision making conventions](#expressingopinion). If a decision is made in private, the outcome must be summarized in terms of number of votes in favour or against on a public mailing list. Decisions should **not** generally be made in an anonymous vote, unless there is a good reason to do so. For example, if the decision may be divisive and damage the cohesion of the leadership team, an anonymous vote is preferred. In such cases, the leadership team, can ask the community manager, to arrange an anonymous vote on behalf of the leadership team.
+
+Decisions (also called Resolutions) require a **2/3rd** majority amongst active leadership team members in favour of a proposal. The tallying of votes follows the rules outlined below. Note that a minimum of 3 leadership team members is needed for a [leadership team to function](#exceptional-circumstances).
+
+Leadership team decisions normally have to be made actively: in other words each team member has to cast a vote **explicitly** expressing their opinion. The only exception are face-2-face or on-line meetings with a quorum of **2/3rd** of active leadership team members present at the meeting: in such cases a meeting chair is required who calls for decision on a resolution and asks for objections. This allows to conduct meetings more quickly.
+
+**Passed/Failed Resolutions:**
+
+Voting is conducted in line with the following rules:
+
+- Project leadership team members vote for (**+1**) or against (**\-1**) a resolution. There is no differentiation between **+1**/ **+2** and **\-1**/**\-2**: in other words a **+2** is counted as a vote for, a **\-2** as a vote against the resolution. The number of votes for and against a resolution is called **active vote**. **0** votes **are not counted** as an active vote.
+- A **quorum of at least 1/3 of positive votes for a proposal** is required for a resolution to pass. In other words, if the leadership team has 7 members, at least 3 members need to vote for the resolution.
+- The resolution passes, if a 2/3 majority of active votes is in favour of it.
+
+The table below maps the number of leadership team members against the required quorum:
+
+|                                      |     |     |     |     |     |     |     |     |     |
+| ------------------------------------ | --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| **Leadership team members**          | 10  | 9   | 8   | 7   | 6   | 5   | 4   | 3   | 2   |
+| **Positive votes needed for quorum** | 4   | 3   | 3   | 3   | 2   | 2   | 2   | 1   | 1   |
+
+The table below maps active votes against votes needed to pass:
+
+|                                   |     |     |     |     |     |     |     |     |     |
+| --------------------------------- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| **Active Votes (+1 or -1)**       | 10  | 9   | 8   | 7   | 6   | 5   | 4   | 3   | 2   |
+| **Positive votes needed to pass** | 7   | 6   | 6   | 5   | 4   | 4   | 3   | 2   | 2   |
+
+### Conflict Resolution
+
+Sub-projects and teams hosted on Xenproject.org are not democracies but meritocracies. In situations where there is disagreement on issues related to the day-to-day running of the project, the [project leadership team](#leadership) is expected to act as referee and make a decision on behalf of the community. Projects leadership teams can choose to delegate entire classes of conflict resolution issues to community members and/or the project lead (e.g. the project can choose to delegate refereeing on committer disagreements to the project lead; or it could choose a specific committer to always act as referee amongst a group of committers). Any such delegation needs to be approved as normal and has to be documented.
+
+Should a project leadership team become dysfunctional or paralysed, the project leadership team or project lead should work with the community manager or advisory board to find a way forward.
+
+In situations where the entire Xen Project community becomes paralysed the impacted project leadership teams or project leads should work with the community manager or advisory board to find a way forward.
+
+### Elections
+
+#### Maintainer Elections
+
+Developers who have earned the trust of existing maintainers can be promoted to maintainer. A two stage mechanism is used
+
+- Nomination: A maintainer should nominate himself by proposing a patch to the MAINTAINERS file or mailing a nomination to the project’s mailing list. Alternatively another maintainer may nominate a community member. A nomination should explain the contributions of proposed maintainer to the project as well as a scope (set of owned components). Where the case is not obvious, evidence such as specific patches and other evidence supporting the nomination should be cited.
+- Confirmation: Normally, there is no need for a direct election to confirm a new maintainer. Discussion should happen on the mailing list using the normal decision making process. If there is disagreement or doubt, the decision is handled by the project leadership.
+
+#### Committer and other Project Leadership Elections
+
+Developers who have earned the trust of committers in their project can through election be promoted to Committer or Project Leadership (if not covered otherwise). A two stage mechanism is used
+
+- Nomination: Community members should nominate candidates by posting a proposal to _appointments at xenproject dot org_ explaining the candidate’s contributions to the project and thus why they should be elected to become a Committer of the project. The nomination should cite evidence such as patches and other contributions where the case is not obvious. Existing Committers will review all proposals, check whether the nominee would be willing to accept the nomination and publish suitable nominations on the project’s public mailing list for wider community input.
+- Election: A committer will be elected using the decision making process outlined earlier. In other words, the decision is delegated to the [project leadership team](#leadership).
+
+#### Security Response Team Members
+
+Developers who have earned the trust of other security team members can be promoted to be on the security team. Due to the specific needs of the security team, promotions are typically made by the security team itself and confirmed by lazy consensus within the team.
+
+#### Project Lead Elections
+
+Projects which have a project lead, should vote for a project lead in an anonymous vote amongst the project leadership.
+
+### Project Wide Decision Making
+
+Project wide decisions are made through **formal global votes** and are conducted in rare circumstances only, following the principle of [local decision making](#principles). Global votes are only needed, when all sub-projects hosted on Xenproject.org are affected. This is true, only for:
+
+- Specific votes on creating, graduating, completing/archiving of sub-projects as outlined in [project governance](#project-governance).
+- Changes to this document, where sub-projects cannot specialise. In particular the sections: [goals](#goals), [principles](#principles), [project wide decision making](#project-decisions) and [project governance](#project-governance) (and small parts of [Xen Project wide roles](#roles-global), [project team roles](#roles-local) and [decision making](#decisions) that are needed for project governance or **apply to all sub-projects** as stated in those sections).
+- Changes to this document where sub-projects can specialise require at least one mature project other than the Hypervisor project to be impacted significantly by the change. The sections in question, are [project team roles](#roles-local) and [decision making](#decisions). These sections define the **gold standard** of how the original Hypervisor Project operates. In other cases, the Hypervisor project leadership team can agree changes to these sections, as they are essentially reference definitions. Other sub-projects have to be consulted, and have to be given time to adapt to changes.
+- Changes to existing global namespace policies (e.g. [Mailing List Conventions](/help/mailing-list/mailing-list-conventions/)) and creation of new project wide namespace policies.
+- Changes to the boundary of what policies are project local and global decision: e.g. a decision to introduce a global Security Vulnerability Response Process that affects all sub-projects.
+
+Global votes are arranged by the community manager when needed (e.g. for a project review or a global process change). Who exactly has input on a proposal and can vote on it, depends on the type of change as outlined below:
+
+| **Proposal**                                               | **Who reviews?**                                          | **Who votes?**                                                                                                                                                                                         |
+| ---------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| Creating, graduating, completing/archiving of sub-projects | Members of developer mailing lists of qualifying projects | Leadership teams of **mature** sub-projects, with the exception of the project which is being reviewed (e.g. for an archivation review, the leadership team of the project under review, cannot vote). |
+| Global Process Changes                                     | Members of developer mailing lists of qualifying projects | Leadership teams of **mature** sub-projects, within the scope described above.                                                                                                                         |
+
+The community manager first arranges a public review, followed by a timed private vote. Public review and voting should be open for a minimum of a week each. For voting a traceable poll mechanism (e.g. voting form that keeps auditable and tamper proof records) must be used.
+
+Voting is conducted **per project** in line with the following rules:
+
+- Each qualifying project’s vote is counted per project and then aggregated as outlined below.
+- Project leadership team members vote for or against a proposal (there is no differentiation between **\-1**/**\-2** and **+1**/**+2**). A **0** vote is not counted as a valid vote.
+- A **quorum of at least least 1/3 of positive votes** of each project’s leadership team members is required. In other words: if a project’s leadership team does not achieve the quorum, the entire sub-project’s vote is not counted. This avoids situations where only a minority of leadership team members vote, which would skew the overall result. If it becomes clear, that a sub-project is not likely to meet the quorum, the voting deadline can be extended by the community manager.
+
+**Passed/Failed Resolutions:**
+
+- If none of the qualifying projects achieve a quorum, the change cannot hold. In that case, we consider that there is not enough momentum behind a change.
+- For each qualifying project with a quorum, the percentage of votes in favour and against is calculated (e.g. if 5 people voted in favour, 2 against and 1 abstains, the share is 5/7th and 2/7th respectively).
+- Votes in favour are averaged as percentages across all projects (say we have per project figures of 50%, 80%, 70% in favour, then the total vote in favour is 66.67%).
+- If the total vote achieves a 2/3rd majority in favour, the proposal passes. Otherwise it fails.
+
+## Community Decisions with Funding and Legal Implications
+
+In some cases sub-project local and global decisions **may require input** from the [Advisory Board](#roles-ab) and/or the \[Linux Foundation\] (#roles-lf). For example, if a proposal by a project leadership team or a global project decision requires that the project hires a staff member or contractor (e.g. a PR consultant, marketing manager) or requires the funding of new infrastructure (e.g. additional test hardware or services) to implement said proposal, then funding would need to be secured from the Advisory Board or from other sources.
+
+If for example, a community proposal required the Linux Foundation to sign a legal agreement with a 3rd party on behalf of the project/sub-project, then of course a review of such an agreement and a signature by the Linux Foundation would be required.
+
+In such cases, the impacted project leadership team(s) will contact the Community Manager and/or Advisory Board to resolve possible issues.
+
+## Project Governance
+
+### Basic Project Life Cycle
+
+The proposal is to follow a simple basic flow:
+
+{{<center>}}
+![](/img/others/governance-xen_projectstages.webp)
+{{</center>}}
+
+A Xenproject.org hosted project starts with an idea which through the process of project formation will grow into a project proposal. The project proposal will need to satisfy some basic conditions, will be put out for community review and is then put to a vote to all maintainers and project leads of mature sub-projects hosted on Xenproject.org following the usual decision making process.
+
+For agreed project proposals, the Xen Project will provide basic infrastructure and the project can get started. Sub-projects in incubation are working towards a set of goals, will get additional support and marketing opportunities from the Xen Project. However there will also be regular checkpoints to see whether the project is progressing. Should it turn out that a project is not viable any more, it will be archived after an archivation review and vote. For a project to graduate, some basic conditions must be satisfied. If a project in incubation has achieved the point where it believes it is mature enough to graduate, it can request a Graduation community review followed by a vote.
+
+Mature projects are pretty much expected to run themselves. However at some point a mature project will lose momentum and developers. If this is the case the Xen Project community can request an archivation review, which follows the usual pattern.
+
+Archivation reviews have two purposes:
+
+- give somebody in the community an opportunity to step up and continue a project,
+- archive the project outcomes such that they are still available to people who want to use them, but promotion of such projects will cease.
+
+It is also possible to revive archived projects. However these are treated almost like new projects as projects would only be archived if they have become inactive.
+
+### Requesting Reviews, Reviews and Voting
+
+**Requesting Reviews:** Project Proposal and Graduation Reviews are requested by the (prospective) project lead of the project by contacting the community manager providing the necessary documentation. An archivation review can be requested by any maintainer of a mature project or by the Xen Project community manager. The community manager will then publish relevant material on the respective mailing lists.
+
+**Reviews:** These are off-line reviews which are open to all community members by which a proposal is published for review. The purpose of the review is two-fold:
+
+- gather final feedback and input from the community (it is good practice to informally do this before the review),
+- advertise the project with the aim to attract interest, users and contributors.
+
+After a review, the requester of the review may decide to withdraw, request a re-review or progress to a vote by arranging with the community manager.
+
+**Voting:** The community manager arranges a timed private vote as outlined in [Formal Votes](#project-decisions).
+
+### Forming a Project
+
+Requirements for forming a sub-project or team on Xenproject.org:
+
+- A project needs a lead, who is willing to become the project lead of the sub-project
+- A project needs a sponsor, which can be a project lead of a mature project, a member of the Xen Project Advisory Board or the community manager
+- There should be no dissent from other community members who would qualify as sponsor (see “Principle: Consensus Decision Making”)
+- A project needs a mentor, which can be the project sponsor or a maintainer of a mature project
+- A project needs to have a relationship to other sub-projects or teams, i.e. it aims to develop software that has a dependency on other sub-projects or teams hosted on Xenproject.org. If the project needs components in other sub-projects to work, then this should also be stated.
+- A project needs to be large and long-term enough to grant a separate project. For example adding support for a new CPU architecture, adding additional functionality on top of existing projects, etc. Adding a new feature to an existing project should be performed within an existing project.
+- A project will deliver code using a license that is compatible with other sub-projects hosted on Xenproject.org (ideally GPLv2).
+
+The purpose of the project formation phase is to work out what the project is about, get community buy-in and help the future project gain publicity and momentum. The formation phase is driven by the project lead. The project mentor’s role is to advise and support the project lead in getting the project started.
+
+The project proposal is a document that describes and is published on [wiki.xenproject.org](http://wiki.xenproject.org):
+
+- What the project is aiming to achieve (i.e. the project charter and project goals)
+- What components/code and in which code lines (new or components in other projects) the project aims to deliver
+- Key dependencies on other sub-projects or teams hosted on Xenproject.org (if applicable)
+- Lists initial maintainers (if applicable)
+- Lists any interested parties in the project (if applicable)
+- Lists any planned initial code contributions (if applicable)
+- A rough plan on how to get through the Incubation phase
+
+### Project Proposal Review
+
+The review is initiated by the project lead and follows the rules outlined in “Requesting Reviews, Reviews and Voting”.
+
+After a successful review, the following resources will be created for the project:
+
+- A mailing list
+- A codeline
+- A sub-project or team portal on Xenproject.org (in an area separate from mature projects)
+- A wiki page on [wiki.xenproject.org](http://wiki.xenproject.org) (this is expected to be maintained by the project lead)
+
+### Incubating a Project
+
+The purpose of the incubation phase is for a project to show that it is gathering momentum and adheres to the “Principles & Roles” of sub-projects hosted on Xenproject.org. The project mentor will work closely with the project lead and there are at least quarterly informal review meetings with the mentor on how the project is doing. Should a mentor not be able to fulfil his/her role any more, it is the responsibility of the project lead to find another mentor. We advise that the project lead gives at least quarterly updates on the Xen Project blog on how the project is doing.
+
+The Xen Project will provide support to incubating projects. The project lead will work closely with the Xen Project community manager as well as with the project mentor.
+
+### Archiving an Incubating project
+
+The mentor can request for a project to be archived, if the project is not making sufficient progress. See “archivation review”.
+
+### Graduation Review
+
+The review is initiated by the project lead and follows the rules outlined in “Requesting Reviews, Reviews and Voting”. In essence the project lead makes a pitch to the community, why the project should graduate.
+
+A project must fulfil the following requirements before it can graduate:
+
+- It follows the principles of openness, transparency and meritocracy
+- It has delivered at least one functioning release of what it is aiming to deliver
+- It has a public code line which shows active development and has mechanisms to accept patches (and a history of accepting patches)
+- It has a public mailing list that is active (as we get more experience we will add some guidelines)
+- It has a mechanism for users to raise bugs and for developers to work on bugs
+- It has an active developer community (as we get more experience we will add some guidelines). But things to look for are number of maintainers, different organisations involved, number of users, etc.
+- It has a project leadership team that resolves conflicts and participates in cross-project decision making
+- It adheres to the Xen Project governance as outlined in this document, or documents areas where the sub-project differs
+
+Other items to look at during the review (depending on project are):
+
+- It has an up-to-date wiki and a core and group of people maintaining it
+- It publishes regular builds and tests
+- It promotes itself at events and on the blog
+
+### Mature Projects
+
+Mature projects are expected to be run and promote themselves. The project leadership team and/or project lead has significant responsibility in ensuring that this happens. The Xen Project and the community manager will help organize events, provide opportunities for the project to get new contributors and build a community, promote new releases on the blog and to the press, work with project members, etc. However the Xen Project and the community manager will not get involved in the day-to-day running of the project.
+
+At some point during its life cycle a project may lose momentum. In other words developers and users are not interested in the project any more. If this is the case, it may be time to archive the project. If the project has achieved its goals and is thus completed, it may also be time to archive the project.
+
+### Archivation Review
+
+These can happen in a number of situations:
+
+- An incubation project shows clear signs of failing and not progressing
+- A mature project has lost its developer and user base (and there is little or no activity)
+- The project has achieved its goals and/or fulfilled its charter: in other words it has completed
+
+In the first case the review is triggered by the incubation project’s mentor. Failing this the review can be requested by any maintainer of a mature project (including the project’s lead) or by the Xen Project community manager. See “Requesting Reviews, Reviews and Voting”.
+
+The review is essentially a pitch why the project should be archived. The purpose of the review is not necessarily to archive a project, but also to provide a last opportunity for interested parties in the Xen Project community to save the project and step up. The Xen Project community manager will support efforts to save the project, should community members want to step up. There is the special case that a project has been completed: in this case the normal situation would be for the project lead to make the case, why this is so.
+
+### Archived Projects
+
+When a project is archived the following happens:
+
+- The codeline and mailing list will be made read-only and made accessible from an archived projects section on Xenproject.org
+- The project’s wiki pages will be tagged as **archived**. A project may be completed (i.e. it has achieved its goals and/or fulfilled its charter) in which case it is tagged as **completed** and **archived**.
+- The project or team portal on Xenproject.org will be moved into an **Archive** section. We may have a **Completed** section within the **Archive** section.
+
+In cases where the project has delivered code into other sub-projects hosted on Xenproject.org, the code will be
+
+- Deprecated at the point where the project is archived
+- The project which now contains the archived code can (but does not have to) remove the code in a subsequent release (it should however give users sufficient time to adapt)
+
+### Exceptional Circumstances
+
+#### Incubation Projects without Project Lead
+
+Projects which lose their project lead during the incubation phase, and do not have a working project leadership team, are at risk of failing. Should this occur, the project’s maintainer or committer community should nominate a new project lead and follow the election process as outlined in [elections](#elections).
+
+If a project lead leaves during the formation phase, without finding a successor we assume that the project does not have enough momentum and will consider archiving the project.
+
+#### Projects without functional Project Leadership Team
+
+Projects which lose their project leadership team, or whose project leadership team is too small to function, are at risk of failing. A project leadership team should be of sufficient size to manage the project. Should this occur, the project’s maintainer or committer community should nominate new leadership team members and follow the election process as outlined in [elections](#elections).
+
+If the community cannot create a functional leadership team, we assume that the project does not have enough momentum and will consider archiving the project.
+
+#### Incubation projects without Mentor
+
+Should an incubation project lose its mentor, the Xen Project community manager will support the project lead in finding a new mentor.
+
+## Per Sub-Project Governance Specialisation
+
+Add specialisations to this section, as they surface.
+
+## Change History
+
+- **v3.0 December 2016:** Refactored document. Otherwise significant changes to decision making, in the following areas
+  - Added Goal: Local Decision Making
+  - Split roles into project wide and sub-project specific roles
+  - Added new roles: Community Manager, Security Response Team, Leadership Team
+  - Added RTC Policy
+  - Added +2 … -2 scheme for expressing opinions more clearly
+  - Clarified lazy consensus / lazy voting with examples
+  - Added Informal Votes or Surveys
+  - Added Project Team Leadership decisions (majority vote, non-monotonicity)
+  - Clarified and Adapted Conflict Resolution to previous changes
+  - Updated Elections to cover new roles and terminology
+  - Changed Project Wide Decision making (per project, non-monotonicity)
+  - Changed Project Wide Decision making.
+  - Clarified scope of Decision making
+  - Added section on Community Decisions with Funding and Legal Implications
+  - Modified all other sections which have dependencies on changes above
+  - Added Per Sub-Project Governance Specialisation
+- **v2.1 May 2016:** Clarify Committer Elections as per this [discussion](https://lists.xenproject.org/archives/html/xen-devel/2016-05/msg00801.html) and [vote](https://lists.xenproject.org/archives/html/xen-devel/2016-05/msg01614.html)
+- **v2.0 May 2012:** Changes to reflect transition from xen.org to xenproject.org
+  - Added definitions for Sub-projects and Teams, Xen Project Advisory Board and The Linux Foundation.
+  - Removed Xen.org Chairman as Referee of Last Resort and delegated this role to the Xen Project Advisory Board.
+  - Allow Xen Project Advisory Board members to be Mentors.
+  - Clarify scope and eligible votes in Formal Votes; refer to this section from Requesting Reviews, Reviews and Voting rather than duplicating
+  - Rename xen.org to xenproject.org or Xen Project throughout the document (except in the history)
+  - Refer to sub-projects and teams instead of projects where appropriate
+- **[v1.2](index.php?option=com_content&view=archive&year=2013&month=3) May 2012:** Minor changes
+  - Fixed typo and ambiguity in the role of Project Lead.
+  - Added section on Conflict Resolution.
+- **v1.1 Oct 2011:** Minor changes
+  - Clarified the roles of Committer and Maintainer.
+  - Added Making Contributions which contains links to other documentation and highlights that Xen.org required a DCO for contributions since 2005.
+  - **v1.0 Jun 2011:** Initial document approved
+
+## Code of Conduct
+
+The Xen Project is committed to making participation in our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.  Please review the Code of Conduct [here](http://xenbits.xenproject.org/governance/code-of-conduct.html).
+
+{{</section>}}
\ No newline at end of file
diff --git a/content/about/project-members.md b/content/about/project-members.md
new file mode 100644 (file)
index 0000000..c139e4b
--- /dev/null
@@ -0,0 +1,90 @@
+---
+title: Xen Project members
+description: Meet the board members of Xen Project. Learn about their roles, backgrounds, and contributions to the governance and strategic direction of the leading open source hypervisor project.
+date: 2024-01-14T07:07:07+01:00
+draft: false
+menus:
+  main:
+    parent: About
+    weight: 20
+---
+
+{{<section  container="small">}}
+{{<media-block
+   title="AMD"
+   media="/img/logos/amd-logo.svg"
+>}}
+AMD is a leading semiconductor company that designs high-performance computing and graphics solutions. Their products include Ryzen™ processors for consumer and commercial use, EPYC™ processors for data centers, and Radeon™ graphics cards for gaming and professional applications. AMD focuses on delivering exceptional performance and innovation in computing technologies.
+
+<p class="mt-2"><a href="link-to-amd-website">Discover AMD</a></p>
+{{</media-block>}}
+{{</section>}}
+
+{{<section  container="small">}}
+{{<media-block
+   title="ARM"
+   media="/img/logos/arm-logo.svg"
+>}}
+ARM is a global leader in semiconductor IP and processor design, providing technology that powers a vast array of devices, including smartphones, IoT devices, and servers. ARM's architectures, such as Cortex and Neoverse, are known for their efficiency and performance, supporting a wide range of applications from consumer electronics to industrial automation and edge computing.
+
+<p class="mt-2"><a href="link-to-arm-website">Discover ARM</a></p>
+{{</media-block>}}
+{{</section>}}
+
+{{<section  container="small">}}
+{{<media-block
+   title="AWS"
+   media="/img/logos/aws-logo.svg"
+>}}
+AWS, a subsidiary of Amazon, is a leading provider of cloud computing services. It offers a comprehensive suite of products and services, including computing power, storage, and databases, enabling organizations to scale efficiently and innovate rapidly. AWS's cloud solutions support various use cases, from web hosting and application development to big data analytics and machine learning.
+
+<p class="mt-2"><a href="link-to-aws-website">Discover AWS</a></p>
+{{</media-block>}}
+{{</section>}}
+
+{{<section  container="small">}}
+{{<media-block
+   title="Epam"
+   media="/img/logos/epam-logo.svg"
+>}}
+EPAM Systems is a global provider of digital platform engineering and software development services. EPAM helps clients transform their businesses through innovative technology solutions, including software development, digital platform engineering, and consulting services. With a focus on high-quality engineering and deep industry expertise, EPAM partners with organizations to achieve digital transformation.
+
+<p class="mt-2"><a href="link-to-epam-website">Discover Epam</a></p>
+{{</media-block>}}
+{{</section>}}
+
+{{<section  container="small">}}
+{{<media-block
+   title="Vates"
+   media="/img/logos/vates-logo.svg"
+>}}
+Vates is a company specializing in open source virtualization solutions. Their flagship products include Xen Orchestra and XCP-ng, which offer powerful and scalable virtualization platforms for managing and deploying virtualized environments. Vates focuses on providing reliable and flexible virtualization solutions tailored to meet the needs of various organizations.
+
+<p class="mt-2"><a href="link-to-vates-website">Discover Vates</a></p>
+{{</media-block>}}
+{{</section>}}
+
+{{<section  container="small">}}
+{{<media-block
+   title="Xenserver"
+   media="/img/logos/xenserver-logo.svg"
+>}}
+XenServer is a high-performance virtualization platform designed for enterprise environments. It provides robust virtualization capabilities, allowing organizations to efficiently manage and scale their virtual infrastructure. XenServer supports a wide range of use cases, including server consolidation, virtual desktop infrastructure (VDI), and cloud computing, offering advanced features such as live migration, resource pooling, and comprehensive security.
+
+<p class="mt-2"><a href="link-to-xenserver-website">Discover Xenserver</a></p>
+{{</media-block>}}
+{{</section>}}
+
+
+{{<section>}}
+{{<media-block
+   title="Join as a member"
+   media="/img/flatline/brainstorming-session.svg"
+>}}
+Improve engineering ROI, gain project insight and increase visibility among many benefits of joining as a member.
+
+<p class="mg-t-md">
+  <a href="link-to-membership-page" class="btn btn-secondary">Become a member <i class="fas fa-arrow-up-right-from-square"></i></a>
+</p>
+{{</media-block>}}
+{{</section>}}
diff --git a/content/about/security-policy.md b/content/about/security-policy.md
new file mode 100644 (file)
index 0000000..25e8ee9
--- /dev/null
@@ -0,0 +1,336 @@
+---
+title: Security policy
+description: Xen Security Problem Response Process
+date: 2024-01-14T07:07:07+01:00
+draft: false
+layout: single
+menus:
+  main:
+    parent: About
+    weight: 50
+
+asidePosition: before
+aside:
+  - type: resource
+    items:
+      - name: OpenPGP Keys
+        link: /developers/openpgp-keys
+        icon: fa-key
+      - name: Raise a security issue
+        link: /help/mailing-list#security-at
+        icon: fa-key
+      - name: List Applications
+        link: /help/mailing-list#predisclosure-applications
+        icon: fa-key
+  - type: members-list
+    name: Team Members 
+    items:
+      - icon: fa-star
+        name: Andrew Cooper
+      - icon: fa-star
+        name: George Dunlap
+      - icon: fa-star
+        name: Ian Jackson
+      - icon: fa-star
+        name: Jan Beulich
+      - icon: fa-star
+        name: Julien Grall
+      - icon: fa-star
+        name: Jürgen Groß
+      - icon: fa-star
+        name: Stefano Stabellini
+      - icon: fa-star
+        name: Wei Liu
+      - icon: fa-star
+        name: Roger Pau Monné
+  - type: members-list
+    name: Emeritus Team Members
+    items: 
+      - icon: fa-star
+        name: Ian Campbell
+      - icon: fa-star
+        name: Konrad R Wilk
+      - icon: fa-star
+        name: Tim Deegan
+---
+
+{{<section md="true" container="small">}}
+This document has come in effect in December 2011 and will be reviewed periodically: see [Change History](#change-history) for a detailed list of changes.
+
+## Introduction
+
+Computer systems have bugs. Currently recognised best practice for bugs with security implications is to notify significant downstream users in private; leave a reasonable interval for downstreams to respond and prepare updated software packages; then make public disclosure.
+
+We want to encourage people to report bugs they find to us. Therefore we will treat with respect the requests of discoverers, or other vendors, who report problems to us.
+
+## Scope of this process
+
+This process primarily covers the [Xen Hypervisor Project](/developers/teams/xen-hypervisor/). Specific information about features with security support can be found in
+
+1.  [SUPPORT.md](http://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=SUPPORT.md) in the releases’ tar ball and its xen.git tree and on [web pages generated from the SUPPORT.md file](https://xenbits.xen.org/docs/unstable/support-matrix.html)
+2.  For releases that do not contain SUPPORT.md, this information can be found on the [Release Feature wiki page](https://wiki.xenproject.org/wiki/Xen_Project_Release_Features)
+
+Vulnerabilities reported against other Xen Project teams will be handled on a best effort basis by the relevant Project Lead together with the Security Response Team.
+
+## Specific process
+
+1.  We request that anyone who discovers a vulnerability in Xen Project software reports this by email to security (at) xenproject (dot) org. (This also covers the situation where an existing published changeset is retrospectively found to be a security fix)
+2.  Immediately, and in parallel:
+    1.  Those of us on the Hypervisor team who are aware of the problem will notify security@xenproject if disclosure wasn’t made there already.
+    2.  If the vulnerability is not already public, security@xenproject will negotiate with discoverer regarding embargo date and disclosure schedule. See below for detailed discussion.
+3.  Furthermore, also in parallel:
+    
+    1.  security@xenproject will check whether the discoverer, or other people already aware of the problem, have allocated a CVE number. If not, we will acquire a CVE candidate number ourselves, and make sure that everyone who is aware of the problem is also aware of the CVE number.
+    2.  If we think other software systems (for example, competing hypervisor systems) are likely to be affected by the same vulnerability, we will try to make those other projects aware of the problem and include them in the advisory preparation process.
+    
+    (This may rely on the other project(s) having documented and responsive security contact points)
+    
+    3.  We will prepare or check patch(es) which fix the vulnerability. This would ideally include all relevant backports. Patches will be tightly targeted on fixing the specific security vulnerability in the smallest, simplest and most reliable way. Where necessary domain specific experts within the community will be brought in to help with patch preparation.
+    4.  We will determine which systems/configurations/versions are vulnerable, and what the impact of the vulnerability is. Depending on the nature of the vulnerability this may involve sharing information about the vulnerability (in confidence, if the issue is embargoed) with hardware vendors and/or other software projects.
+    5.  We will write a Xen advisory including information from (b)-(f)
+4.  **Advisory pre-release:**This occurs only if the advisory is embargoed (ie, the problem is not already public):As soon as our advisory is available, we will send it, including patches, to members of the Xen security pre-disclosure list. For more information about this list, see below.In the event that we do not have a patch available two working weeks before the disclosure date, we aim to send an advisory that reflects the current state of knowledge to the Xen security pre-disclosure list. An updated advisory will be published as soon as available.
+    
+    At this stage the advisory will be clearly marked with the embargo date.
+    
+5.  **Advisory public release:**At the embargo date we will publish the advisory, and push bugfix changesets to public revision control trees.Public advisories will be posted to xen-devel, xen-users and xen-annnounce and will be added to the [Security Announcements Page](http://xenbits.xen.org/xsa/) (note that Advisories before XSA-26 were published [here](http://wiki.xenproject.org/wiki/Security_Announcements_%28Historical%29)) . Copies will also be sent to the pre-disclosure list.
+6.  **Updates**If new information or better patches become available, or we discover mistakes, we may issue an amended (revision 2 or later) public advisory. This will also be sent to the pre-disclosure list.
+7.  **Post embargo transparency:**During an embargo period the Security Response Team may be required to make potentially controverial decisions in private, since they cannot confer with the community without breaking the embargo. The Security Response Team will attempt to make such decisions following the guidance of this document and where necessary their own best judgement. Following the embargo period any such decisions will be disclosed to the community in the interests of transparency and to help provide guidance should a similar decision be required in the future.
+
+## Embargo and disclosure schedule
+
+If a vulnerability is not already public, we would like to notify significant distributors and operators of Xen so that they can prepare patched software in advance. This will help minimise the degree to which there are Xen users who are vulnerable but can’t get patches.
+
+As discussed, we will negotiate with discoverers about disclosure schedule. Our usual starting point for that negotiation, unless there are reasons to diverge from this, would be:
+
+1.  One working week between notification arriving at security@xenproject and the issue of our own advisory to our predisclosure list. We will use this time to gather information and prepare our advisory, including required patches.
+2.  Two working weeks between issue of our advisory to our predisclosure list and publication.
+
+When a discoverer reports a problem to us and requests longer delays than we would consider ideal, we will honour such a request if reasonable. If a discoverer wants an accelerated disclosure compared to what we would prefer, we naturally do not have the power to insist that a discoverer waits for us to be ready and will honour the date specified by the discoverer.
+
+Naturally, if a vulnerability is being exploited in the wild we will make immediately public release of the advisory and patch(es) and expect others to do likewise.
+
+## Pre-disclosure list
+
+The Xen Project operates a pre-disclosure list. This list contains the email addresses (ideally, role addresses) of the security response teams for significant Xen operators and distributors.
+
+This includes:
+
+-   Public hosting providers;
+-   Large-scale organisational users of Xen;
+-   Vendors of Xen-based systems;
+-   Distributors of operating systems with Xen support.
+
+This includes both corporations and community institutions.
+
+Here “provider”, “vendor”, and “distributor” is meant to include anyone who is making a genuine service, available to the public, whether for a fee or gratis. For projects providing a service for a fee, the rule of thumb of “genuine” is that you are offering services which people are purchasing. For gratis projects, the rule of thumb for “genuine” is measured in terms of the amount of time committed to providing the service. For instance, a software project which has 2-3 active developers, each of whom spend 3-4 hours per week doing development, is very likely to be accepted; whereas a project with a single developer who spends a few hours a month will most likey be rejected.
+
+For organizational users, a rule of thumb is that “large scale” means an installed base of 300,000 or more Xen guests.
+
+The list of entities on the pre-disclosure list is public. (Just the list of projects and organisations, not the actual email addresses.)
+
+If there is an embargo, the pre-disclosure list will receive copies of the advisory and patches, with a clearly marked embargo date, as soon as they are available. The pre-disclosure list will also receive copies of public advisories when they are first issued or updated
+
+### Handling of embargoed information
+
+Organizations on the pre-disclosure list are expected to maintain the confidentiality of the vulnerability up to the embargo date which security@xenproject have agreed with the discoverer, and are committing to ensuring that any members/employees of that organisation who come into contact with confidential information will do so as well..
+
+Specifically, prior to the embargo date, pre-disclosure list members should not make available, even to their own customers and partners:
+
+-   the Xen Project advisory
+-   their own advisory
+-   the impact, scope, set of vulnerable systems or the nature of the vulnerability
+-   revision control commits which are a fix for the problem
+-   patched software (even in binary form)
+
+without prior consultation with security@xenproject.
+
+List members are allowed to make available to their users only the following:
+
+-   The existance of an issue
+-   The assigned XSA number
+-   The planned disclosure date
+
+List members may, if (and only if) the Security Team grants permission, deploy fixed versions during the embargo. Permission for deployment, and any restrictions, will be stated in the embargoed advisory text.
+
+The Security Team will normally permit such deployment, even for systems where VMs are managed or used by non-members of the predisclosure list. The Security Team will impose deployment restrictions only insofar as it is necessary to prevent the exposure of technicalities (for example, differences in behaviour) which present a significant risk of rediscovery of the vulnerability. Such situations are expected to be rare.
+
+Where the list member is a service provider who intends to take disruptive action such as rebooting as part of deploying a fix: the list member’s communications to its users about the service disruption may mention that the disruption is to correct a security issue, and relate it to the public information about the issue (as listed above). This applies whether the deployment occurs during the embargo (with permission – see above) or is planned for after the end of the embargo.
+
+_NOTE:_ Prior v2.2 of this policy (25 June 2014) it was permitted to also make available the allocated CVE number. This is no longer permitted in accordance with MITRE policy.
+
+### Information-sharing amongst predisclosure list members
+
+Predisclosure list members are allowed to share fixes to embargoed issues, analysis, etc., with the security teams of other list members. Technical measures must be taken to prevents non-list-member organisations, or unauthorised staff in list-member organisations, from obtaining the embargoed materials.
+
+The Xen Project provides the mailing list `xen-security-issues-discuss@lists.xenproject<dot>org` for this purpose. List members are encouraged to use it but may share with other list members’ security teams via other channels.
+
+The `-discuss` list’s distribution is identical to that of the primary predisclosure list `xen-security-issues`. Recipient organisations who do not wish to receive all of the traffic on -discuss should use recipient-side email filtering based on the provided `List-Id`.
+
+The `-discuss` list is moderated by the Xen Project Security Team. Announcements of private availability of fixed versions, and technical messages about embargoed advisories, will be approved. Messages dealing with policy matters will be rejected with a reference to the Security Team contact address and/or public Xen mailing lists.
+
+### Predisclosure list membership application process
+
+Organisations who meet the criteria should contact `predisclosure-applications@lists.xenproject<dot>org` (which is a public [mailing list](/help/mailing-list.html#predisclosure-applications)) if they wish to receive pre-disclosure of advisories.
+
+You must include in the e-mail:
+
+-   The name of your organization
+-   Domain name(s) which you use to provide Xen software/services
+-   A brief description of why you fit the criteria
+-   If not all of your products/services use Xen, a list of (some of) your products/services (or categories thereof) which do.
+-   Link(s) to current public web pages, belonging to your organisation, for each of following pieces of information:
+    -   Evidence of your status as a service/software provider:
+    -   If you are a public hosting provider, your public rates or how to get a quote
+    -   If you are a software provider, how your software can be downloaded or purchased
+-   If you are an open-source project, a mailing list archive and/or version control repository, with active development
+-   Evidence of your status as a user/distributor of Xen:
+    -   Statements about, or descriptions of, your eligible production services or released software, from which it is immediately evident that they use Xen.
+-   Information about your handling of security problems:
+    -   Your invitation to members of the public, who discover security problems with your products/services, to report them in confidence to you;
+    -   Specifically, the contact information (email addresses or other contact instructions) which such a member of the public should use.
+
+Blog postings, conference presentations, social media pages, Flash presentations, videos, sites which require registration, anything password-protected, etc., are not acceptable. PDFs of reasonable size are acceptable so long as the URL you provide is of a ordinary HTML page providing a link to the PDF.
+
+If the pages are long and/or PDFs are involved, your email should say which part of the pages and documents are relevant.
+
+-   A statement to the effect that you have read this policy and agree to abide by the terms for inclusion in the list, specifically the requirements to regarding confidentiality during an embargo period
+-   The single (non-personal) email alias you wish added to the predisclosure list.
+
+Your application will be determined by the Xen Project Security Team, and their decision posted to the list. The Security Team has no discretion to accept applications which do not provide all of the information required above.
+
+If you are dissatisfied with the Security Team’s decision you may appeal it via the Xen Project’s governance processes.
+
+Organisations should not request subscription via the mailing list web interface. Any such subscription requests will be rejected and ignored.
+
+A role address (such as security@example.com) should be used for each organisation, rather than one or more individual’s direct email address. This helps to ensure that changes of personnel do not end up effectively dropping an organisation from the list.
+
+### Organizations on the pre-disclosure list:
+
+This is a list of organisations on the pre-disclosure list (not email addresses or internal business groups).
+
+-   1 & 1 Internet AG
+-   AIS, Inc
+-   Alibaba Inc.
+-   All Simple Internet Services
+-   Amazon
+-   BetaForce Networks / LLC DBA vNucleus
+-   BitDefender SRL
+-   BitFolk Ltd
+-   Bromium Inc.
+-   CentOS
+-   ChunkHost
+-   CloudLinux Inc.
+-   CloudVPS
+-   Citrix
+-   Debian
+-   DornerWorks Ltd
+-   drServer.net
+-   eApps Hosting
+-   File Sanctuary
+-   FXVM.net
+-   Gandi.net
+-   Gaiacom, LC
+-   Gentoo Linux
+-   GoGrid.com
+-   Gossamer Threads Inc
+-   HostPapa
+-   Host Europe Group (HEG.com)
+-   Host Virtual Inc.
+-   Huawei Technologies Co. Ltd
+-   Inception Hosting Ltd
+-   Invisible Things Lab
+-   iWeb Technologies Inc.
+-   Jump Networks Ltd
+-   LFCHosting.com
+-   LiquidWeb.com
+-   Locaweb
+-   Mageia
+-   mammoth.net.au
+-   M.D.G. IT PTY LTD
+-   Memset
+-   Namecheap Inc
+-   NFOServers.com
+-   Novell
+-   OnApp.com / SolusVM.com
+-   OnePoundWebHosting Ltd
+-   Openminds BVBA
+-   Oracle
+-   OrionVM.com
+-   Public Access Networks Corp. (Panix.com)
+-   prgmr.com
+-   Qihoo 360 Technology Co. Ltd.
+-   Rackspace
+-   RailsMachine.com
+-   Rimuhosting Ltd
+-   Redhat
+-   SecureAX Pte Ltd
+-   Serversaurus
+-   SiteHost
+-   SoftLayer
+-   Star Lab
+-   Steadfast.net
+-   SSDNodes.com
+-   SuSE
+-   The Cloud Simplified (Xperience Group)
+-   The NetBSD Foundation, LLC
+-   Tranquil Hosting, Inc.
+-   Ubuntu
+-   Wavecon GmbH
+-   Xen Made Easy
+-   Xen Security Response Team
+-   XCP-ng.org
+-   Vollmar.net GmbH
+-   Zynga
+-   Zynstra
+-   ZZ Servers
+
+## Change History
+
+-   **v3.23 Aug 8th 2019:** Added DornerWorks Ltd
+-   **v3.22 Aug 6th 2019:** Remove Linode
+-   **v3.21 Nov 19th 2018:** Added XCP-ng.org
+-   **v3.20 June 14th 2018:** Added Star Lab
+-   **v3.19 May 9th 2018:** Remove Google and Xen 3.4 stable tree maintainer from the predisclosure list
+-   **v3.18 April 27th 2018:** Added reference to SUPPORT.md
+-   **v3.17 July 20th 2017:** Added Zynstra
+-   **v3.16 April 21st 2017:** Added HostPapa
+-   **v3.15 March 21st 2017:** Added CloudVPS (Feb 13) and BitDefender SRL (March 21) to the predisclosure list
+-   **v3.14 Nov 30th 2016:** Added FXVM.net to the predisclosure list
+-   **v3.13 May 12th 2016:** Added Serversaurus (Nov 17), The NetBSD Foundation (Dec 11), LLC and CloudLinux Inc. (May 12) to the predisclosure list
+-   **v3.12 Oct 21st 2015:** Added missing years to release history. Added the following orgs to the predisclosure list: Qihoo 360 Technology Co. Ltd. (Aug 3rd), AIS Inc (Oct 20) and M.D.G. IT PTY LTD (Oct 21)
+-   **v3.11 July 2nd 2015:** Added Huawei Technologies Co. Ltd to the predisclosure list
+-   **v3.10 June 9th 2015:** Added 3rd paragraph to section “4. Advisory pre-release” as per the following [vote](http://lists.xenproject.org/archives/html/xen-devel/2015-06/msg01202.html) to amend the process. Added Sitehost to the predisclosure list
+-   **v3.9 June 2nd 2015:** Added Jump Networks Ltd to predisclosure list and fixed rendering/numbering issue in html leading to duplicate numbering
+-   **v3.8 May 13th 2015:** Removed Intel after list membership review on the basis of 3.d) of this process
+-   **v3.7 May 12th 2015:** “Information-sharing amongst predisclosure list members” is now live; removed statements that this is not so
+-   **v3.6 Apr 15th 2015:** Added Vollmar.net GmbH to the predisclosure list
+-   **v3.5 Mar 19th 2015:** Added Bromium Inc to the predisclosure list
+-   **v3.4 Mar 13th 2015:** Added Wavecon GmbH to the predisclosure list
+-   **v3.3 Mar 10th 2015:** Added Openminds BVBA, Public Access Networks Corp. (Panix.com), BetaForce Networks / LLC DBA vNucleus and Gentoo Linux to the predisclosure list
+-   **v3.2 Mar 4th 2015:** Added Google, Gossamer Threads Inc. and Locaweb to the predisclosure list
+-   **v3.1 Mar 3rd 2015:** Added ChunkHost and Rimuhosting Ltd to the predisclosure list
+-   **v3.0 Feb** 11th **2015 (published March** 2nd **2015):** New predisclosure list application process and information-sharing and -handling rules; and, minor clarifications.
+-   **v2.9 Dec 12th 2014:** Added The Cloud Simplified (Xperience Group)
+-   **v2.8 Nov 3rd 2014:** Added Host Europe Group (HEG.com)
+-   **v2.7 Oct 21st 2014:** Added the following vendors to the pre-disclosure list: OnePoundWebHosting Ltd, File Sanctuary, iWeb Technologies Inc., Memset
+-   **v2.6 Oct 1st 2014:** Added the following vendors to the pre-disclosure list: eApps Hosting, Namecheap Inc, Gaiacom, LC
+-   **v2.5 Sept 30th 2014:** Added the following vendors to the pre-disclosure list: 1 & 1 Internet AG, Alibaba Inc., All Simple Internet Services, BitFolk Ltd, drServer.net, Inception Hosting Ltd, LiquidWeb.com, RailsMachine.com, SecureAX Pte Ltd, Steadfast.net, Tranquil Hosting, Inc, Zynga and ZZ Servers
+-   **v2.4 Sept 29th 2014:** Added the following vendors to the pre-disclosure list: mammoth.net.au, NFOServers.com, LFCHosting.com, OrionVM.com, SoftLayer and SSDnodes.com
+-   **v2.3 Sept 26th 2014:** Added the following vendors to the pre-disclosure list: Host Virtual Inc., Gandi.net, GoGrid.com, OnApp.com / SolusVM.com and prgmr.com
+-   **v2.2 Jun 2014:** In accordance with MITRE’s guidelines it is no longer permissible to share CVE numbers of embargoed issues
+-   **v2.1 Jun 2013:** Added Xen Made Easy
+-   **v2.0 May 2013:** Significant changes to the document
+    -   Expand eligibility of who can join the predisclosure list
+    -   Clarify definitions of who can join the predisclosure list
+    -   Clarify information that needs to be supplied when joining the predisclosure list
+    -   Change e-mail alias to security@xenproject
+-   **v1.6 Apr 2013:** Added Mageia to predisclosure list
+-   **v1.5 Nov 2012:** Added Invisible Things Lab to pre-disclosure list
+-   **v1.4 Oct 2012:** Various minor updates
+-   **v1.3 Sept 2012:** Added CentOS to pre-disclosure list
+-   **v1.2 Apr 2012:** Added pre-disclosure list
+-   **v1.1 Feb 2012:** Added link to Security Announcements wiki page
+-   **v1.0 Dec 2011:** Intial document published after review
+
+
+{{</section>}}
\ No newline at end of file
diff --git a/content/contribute/code-of-conduct.md b/content/contribute/code-of-conduct.md
new file mode 100644 (file)
index 0000000..23decc1
--- /dev/null
@@ -0,0 +1,88 @@
+---
+title: Xen Project Code of Conduct
+date: 2023-11-16T00:00:00+01:00
+draft: false
+menus:
+  main:
+    parent: Contribute
+    weight: 100
+aside: 
+  - type: resource
+    items:
+  - link: https://xenbits.xenproject.org/governance/communication-guide.html
+    name: Communication Guide
+  - link: https://xenbits.xenproject.org/governance/code-review-guide.html
+    name: Code Review Guide
+  - link: https://xenbits.xenproject.org/governance/communication-practice.html
+    name: Communication Best Practice
+  - link: https://xenbits.xenproject.org/governance/resolving-disagreement.html
+    name: Resolving Disagreement
+---
+
+{{<section md="true" container="small content-markdown">}}
+*Last updated: 16th November 2023*
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
+
+## Our Standards
+
+We believe that a Code of Conduct can help create a harassment-free environment, but is not sufficient to create a welcoming environment on its own: guidance on creating a welcoming environment, how to communicate in an effective and friendly way, etc. can be found [here](communication-guide.html).
+
+Examples of behavior that contributes to a positive environment include:
+
+- Using welcoming and inclusive language
+- Demonstrating empathy and kindness towards other people
+- Being respectful of differing opinions, viewpoints, and experiences
+- Keeping the language clean and professional (no swearing)
+- Attempting collaboration before conflict
+- Giving and gracefully accepting constructive feedback
+- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
+- Focusing on what is best not just for us as individuals, but for the overall community
+
+Examples of unacceptable behaviors include:
+
+- Any discriminatory language or behavior concerning areas described in our pledge, such as race, gender, and ethnicity
+- The use of sexualized language or imagery and unwelcome sexual attention or advances
+- Trolling, insulting/derogatory comments, and personal or political attacks
+- Public or private harassment both online and in person
+- Publishing others’ private information, such as a physical or electronic address, without explicit permission
+- Other conduct which could reasonably be considered inappropriate in a professional setting
+- Advocating for, or encouraging, any of the above behavior
+
+## Our Responsibilities
+
+Project leadership team members are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
+
+Project leadership team members have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies within all project spaces of all sub-projects, and it also applies when an individual is representing the project or its community in public spaces. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by the project leadership.
+
+## What to do if you witness or are subject to unacceptable behavior
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to Conduct Team members at [conduct@xenproject.org](mailto:conduct%40xenproject.org). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. Conduct Team members are obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
+
+If you have concerns about any of the members of the conduct@ alias, you are welcome to contact precisely the Conduct Team member(s) of your choice.
+
+Project leadership team members who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.
+
+## Conduct Team members
+
+Conduct Team members are project leadership team members from any sub-project. The current list of Conduct Team members is:
+
+- Roger Pau Monne <roger dot pau at cloud dot com>
+- Stefano Stabellini <sstabellini at kernel dot org>
+
+Conduct Team members are changed by proposing a change to this document, posted on all sub-project lists, followed by a formal global vote as outlined [here](https://xenproject.org/developers/governance/#project-decisions).
+
+## Attribution
+
+This Code of Conduct is adapted from the Contributor Covenant, version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).
+
+For answers to common questions about this code of conduct, see [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq).
+{{</section>}}
\ No newline at end of file
diff --git a/content/contribute/contribution-guidelines.md b/content/contribute/contribution-guidelines.md
new file mode 100644 (file)
index 0000000..55a9911
--- /dev/null
@@ -0,0 +1,55 @@
+---
+title: Contribution guidelines
+description: Please adhere to the following guidelines as you participate in the Xen Project community.
+date: 2024-01-14T07:07:07+01:00
+draft: false
+layout: content-only
+menus:
+  main:
+    parent: Contribute
+    weight: 50
+---
+
+## Introduction
+
+We want to see people contributing to the Xen Project effort, and there are many ways to do so.
+
+Our goal is to maintain an environment of professionalism, respect, and innovation within Xen Project development. 
+Please adhere to our [Code of Conduct](TODO) in the Xen Project community.
+
+## Contributing code
+
+Contributions to the Xen Project are made through patches that are reviewed by the community. We do require contributors to sign contributions using the sign-off feature of the code repository, following the same approach as the Linux Kernel does (see [Developer Certificate Of Origin](TODO)).
+
+Before submitting a patch please read the CONTRIBUTING, COPYING and CODING_STYLE files (found mostly in our git repositories).
+
+* Each Xen Project subproject may have its own submission guidelines. Please check the [team pages](TODO) to learn more.
+
+* Read our [Guide to submitting patches](TODO) via e-mail workflow
+
+* Note that [XAPI](TODO), [Mirage OS](TODO) and [XCP-ng](TODO) follow a [standard Github workflow](TODO).
+
+* Read our [Guide to asking developer questions](TODO)
+
+You can also ask questions on the [xen-devel@lists.xenproject.org](TODO) mailing list or our [Matrix channels](TODO).
+
+## Submitting patches to the Xen Project codebase
+
+Please first check the submission process for the Xen Sub-Project, and send an email to the proper mailing list with [PATCH] as the first word in the subject line. Each patch should perform a single function. Patches sent to the mailing lists should be broken up into several email messages of less than 100KB each, with only one patch per email.
+
+Please include a description of why you want the change made (not just the "what") and why it is important for the team to make this change. Your patch will need to include a [signed-off-by tag](TODO), author's name, and other information.
+
+For details about what to include in your patch, you should start with the [patch submission documentation](TODO).
+
+## Escalation
+
+If you submitted a patch to the xen-devel mailing list or bugzilla and did not receive a response within 5 business days, please send an email to xen-devel and in the first line of that email, include this phrase "Patch escalation: no response for x days".
+
+This is one case where you should "top post" to make sure that the escalation text is read.
+
+## Code security scanning
+
+The Xen Project is registered with the ["Coverity Scan" service](TODO) which applies Coverity's static analyser to the Open Source projects. The tool can and does find flaws in the source code which can include security issues. Currently only the Xen Project Hypervisor (i.e. xen.git) is covered by these scans. Triaging and proposing solutions for the flaws found by Coverity is a useful way in which Community members can contribute to the Xen Project.
+
+Members of the community may request access to the Coverity database. However, Coverity requires that you create an account and apply for Xen Project membership by searching for the Xen Project and then requesting to be added to the project. We typically will approve requests within a few days, but reserve rejecting requests from accounts who never engaged with the project (aka never posted to a mailing list) or which look like spam accounts.
+
diff --git a/content/contribute/get-started.md b/content/contribute/get-started.md
new file mode 100644 (file)
index 0000000..1422773
--- /dev/null
@@ -0,0 +1,88 @@
+---
+title: Get started
+description: Begin your journey with Xen Project. Follow our step-by-step installation and setup guide to deploy Xen hypervisor. Access essential resources, tutorials, and support for a smooth start.
+date: 2024-01-14T07:07:07+01:00
+draft: false
+menu:
+  main:
+    parent: Contribute
+    weight: 10
+---
+
+{{<section>}}
+{{<media-block
+  title="Contributing to Xen: an introduction"
+  media=`https://www.youtube.com/embed/F6TDJnYtcY8`
+>}}
+We've collated some information to help you get started, click here for resources.
+
+<p class="mg-t-md">
+  <a href="http://TODO" class="btn btn-primary">
+    Download support <i class="fas fa-download"></i>
+  </a> 
+</p>
+{{</media-block>}}
+{{</section>}}
+
+{{<section background="curve">}}
+{{<vertical-lists cols="2">}}
+- title: "**Read** documentation"
+  text: >
+    <p><a href="TODO">Access documentation <i class="fas fa-arrow-up-right-from-square"></i></a></p>
+    <p><a href="TODO">How to use documentation <i class="fas fa-arrow-up-from-square"></i></a></p>
+    
+- title: "**Communicate** with others"
+  text: >
+    <p><a href="TODO">Access documentation <i class="fas fa-arrow-up-right-from-square"></i></a></p>
+    <p><a href="TODO">How to use documentation <i class="fas fa-arrow-up-from-square"></i></a></p>
+
+{{</vertical-lists>}}
+{{</section>}}
+
+
+{{<section>}}
+{{<media-block
+  title="Access more resources"
+  media=`/img/flatline/java.svg`
+  mediaPosition="right"
+>}}
+
+<p class="mg-t-md"><a href="https://www.youtube.com/channel/UCGukhVf8pWrUVdse6KR6SRw">Youtube channel<i class="fas fa-arrow-up-right-from-square"></i></a></p>
+<p><a href="/contribute/guidelines">Contribution guidelines<i class="fas fa-up-right-from-square"></i></a></p>
+<p><a href="/contribute/governance">Governance<i class="fas fa-arrow-right"></i></a></p>
+<p><a href="/security">Security policy<i class="fas fa-arrow-right"></i></a></p>
+{{</media-block>}}
+{{</section>}}
+
+
+{{<section >}}
+{{<media-block
+    title="Advised by Xen project **members**"
+    media=`{{<partial "blocks/logos-circle">}}`
+>}}
+  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vulputate maximus tincidunt. Duis ex felis, placerat vitae justo at, mattis elementum tellus. Ut gravida orci elementum, viverra libero non, vulputate quam.
+
+  <p class="mg-t-md">
+    <a href="TODO" class="btn btn-secondary">Meet the advisory board<i class="fas fa-arrow-right"></i></a>
+  </p>
+{{</media-block>}}
+{{</section>}}
+
+
+
+{{<section >}}
+{{<media-block
+    title="Become a member"
+    media="/img/flatline/team-meeting.svg"
+    mediaPosition="right"
+>}}
+By being an active Advisory Board participant, regular opportunities for discussions with technical leaders include the chance to share priorities and endorse new strategies. In return, members will gain valuable strategic insight into project plans and future scope.
+  <p class="mg-t-md">
+    <a href="/security" class="btn btn-secondary">Join the advisory board<i class="fas fa-arrow-right"></i></a>
+  </p>
+{{</media-block>}}
+{{</section>}}
+
+
+
+
diff --git a/content/more/xen-server-branding.md b/content/more/xen-server-branding.md
new file mode 100644 (file)
index 0000000..ed46649
--- /dev/null
@@ -0,0 +1,77 @@
+---
+title: Xen Project branding
+description: Access Xen Project's official branding and logo guidelines. Download logos, learn about proper usage, and maintain brand consistency across all platforms.
+date: 2024-01-14T07:07:07+01:00
+draft: false
+showInFooterOnly: true
+menus:
+  main:
+    parent: More
+    weight: 100
+---
+
+
+
+{{<section >}} 
+  {{<media-block
+    title="Download"
+    image="/img/logo-xen.svg"
+    imageAlt="Xen Project Logo"
+  >}}
+  You can download vector graphics, images and logos.
+  <p class="mg-t-md">
+    <a href="#" class="btn btn-primary">
+      Download branding
+      <i class="fas fa-arrow-up-right-from-square"></i>
+    </a>
+  </p>
+  {{</media-block>}}
+{{</section>}}
+
+
+
+{{<section background="curve">}}
+{{<container type="small">}}
+{{<md>}}
+## Usage
+
+Xen mascots, templates and other images available through this page and are made available under CC BY-NC 3.0. Feel free to use images on your blog, as wallpaper, for fun and the like, but you must link to xenproject.org.
+
+Creative Commons CC BY-NC 3.0 allows you to:
+
+- Share: copy, distribute, and transmit the material
+- Remix: create derivative works of the material
+
+Under these conditions:
+
+
+### Attribution
+
+You can use the images and material without attribution when used in a context that refers to the Xen Project, Xen Project Hypervisor, Xen Project Community, XenProject Sub-Projects, or XenProject.org (e.g. in a blog post or article about the Xen Project, a Xen Project Hackathon, a Xen Project User Group meeting, etc.). Where the context is not clear, attribution must be made to XenProject.org, and images used on merchandise, such as a sticker, must contain the Xen Project logo.
+{{</md>}}
+
+{{<vertical-lists>}}
+- title: Examples of clear context
+  items:
+    - A training course entitled "How to use the Xen Project Hypervisor to build a cloud"
+    - A website "xen_project_hall_of_fame.com" with pictures of famous Xen Project contributors
+    - A monthly journal called "Xen Project User journals" describing how you use the Xen Project Hypervisor
+    - A blog post or article about the Xen Project Hypervisor
+    - As avatar for a social media account with a reference to Xen Project in the profile name or in the profile description
+    - Give-away of a Xen Fu Panda button, sticker, mug, etc. at a Xen Project user group meeting or Hackathon
+- title: Examples of unclear context
+  items:
+    - A freely distributed Xen Project wallpaper or theme
+    - Give-away of a Xen Fu Panda button, sticker, mug, etc. at a kids event
+{{</vertical-lists>}}
+
+{{</container>}}
+{{</section>}}
+
+{{<section md="true" container="small">}}
+
+## Trademark policy
+
+The usage of the Xen Project mark and logo are governed by the Linux Foundation trademark policy. The policy governs the use of the Xen Project mark and logo.
+
+{{</section>}}
\ No newline at end of file
diff --git a/content/more/xen-summit-2024.md b/content/more/xen-summit-2024.md
new file mode 100644 (file)
index 0000000..9a2d986
--- /dev/null
@@ -0,0 +1,55 @@
+---
+title: Xen Summit 2024
+description: Lorem ipsum dolor sit amet.
+date: 2024-01-14T07:07:07+01:00
+draft: false
+showInFooterOnly: true
+menus:
+  main:
+    parent: More
+    weight: 100
+---
+
+
+{{<section container="full">}}
+{{<full-width-image src="/img/photos/xen-project-2023-group-photo.png" alt="Xen Project 2023 group photo" title="Xen Project 2023 group photo">}}
+{{</section>}}
+
+
+{{<section>}}
+{{<media-block
+  title="2024 edition"
+  media=`{{<youtube src="https://www.youtube.com/embed/qZcCCm_PaHs"
+     title="Xen Project Summit 2024"  >}}`
+>}}
+
+We have some thrilling news to share with you all. The highly anticipated talks from this year’s Xen Summit are now live on YouTube! Whether you attended the summit in person or couldn’t make it this time, you can now access all the insightful presentations and discussions online.
+{{</media-block>}}
+{{</section>}}
+
+
+{{<section>}}
+{{<media-block
+  title="Why You Should Watch the Xen Summit Talks"
+  media=`{{<youtube src="https://www.youtube.com/embed/bmbY40fJZsQ" title="Xen Project Summit 2024 Weather Report"  >}}`
+  mediaPosition="right"
+>}}
+
+The Xen Summit gathers experts, developers, and enthusiasts from around the world to discuss the latest advancements and future directions of our Project. This year’s summit featured a fantastic lineup of speakers who shared their knowledge on a wide range of topics.
+
+{{</media-block>}}
+{{</section>}}
+
+{{<section background="curve" class="txt-c">}}
+{{<md>}}
+## Join the **conversation**
+
+Subscribe to our channel and hit the notification bell to stay updated with the latest uploads and Xen Project news.
+{{</md>}}
+
+<p class="mg-t-md">
+  <a href="https://matrix.to/#/#xenproject:matrix.org" class="btn btn-primary">
+    Join Matrix <i class="fas fa-arrow-right"></i>
+  </a>
+</p>
+{{</section>}}
\ No newline at end of file
diff --git a/content/projects/_index.md b/content/projects/_index.md
new file mode 100644 (file)
index 0000000..87eb669
--- /dev/null
@@ -0,0 +1,7 @@
+---
+title: Projects
+url: /projects
+type: redirect
+layout: redirect
+redirect: /projects/all-projects
+---
\ No newline at end of file
diff --git a/content/projects/all-projects.md b/content/projects/all-projects.md
new file mode 100644 (file)
index 0000000..5d1de5b
--- /dev/null
@@ -0,0 +1,69 @@
+---
+title: All projects
+description: Learn about Xen Project, its mission, history, and the vibrant community behind the leading open source hypervisor. Find out how you can get involved.
+date: 2024-01-14T07:07:07+01:00
+draft: false
+exclude_from_list: true
+menus:
+  main:
+    parent: Projects
+    name: All projects
+    weight: 100
+---
+
+{{<section>}}
+  {{<list-pages "projects">}}
+{{</section>}}
+
+{{<section background="curve" class="txt-c">}}
+  {{<md>}}
+  ### Join the **conversation**
+  {{</md>}}
+
+  <p class="mg-t-md">
+    <a href="https://matrix.to/#/#xenproject:matrix.org" class="btn btn-primary mg-r-md">
+      Join Matrix <i class="fas fa-arrow-right"></i>
+    </a>
+
+    <a href="http://TODO" class="btn btn-secondary">
+      Join our mailing lists <i class="fas fa-arrow-right"></i>
+    </a>
+  </p>
+
+{{</section>}}
+
+{{<section>}}
+  {{<media-block
+    title="Lead by a <strong>dedicated community</strong>"
+    image="/img/flatline/team-work.svg"
+  >}}
+  The Xen community is a dynamic and collaborative ecosystem comprised of developers, researchers, and enthusiasts dedicated to advancing open-source virtualization technology.
+  With diverse backgrounds and expertise, members actively contribute to Xen's evolution, fostering innovation, sharing knowledge, and supporting one another through continuous development efforts.
+
+  <p class="mg-t-md">
+    <a href="http://TODO" class="btn btn-secondary">
+     Get started <i class="fas fa-arrow-right"></i>
+    </a>
+  </p>
+{{</media-block>}}
+{{</section>}}
+  
+
+  {{<section>}}
+  {{<media-block
+    title="About **Xen Project**</strong>"
+    image="/img/flatline/data_process.svg"
+    mediaPosition="right"
+  >}}
+The Xen community is a dynamic and collaborative ecosystem comprised of developers, researchers, and enthusiasts dedicated to advancing open-source virtualization technology.
+With diverse backgrounds and expertise, members actively contribute to Xen's evolution, fostering innovation, sharing knowledge, and supporting one another through continuous development efforts.
+Get started
+arrow-right
+  <p class="mg-t-md">
+    <a href="http://TODO" class="btn btn-secondary">
+     Get started <i class="fas fa-arrow-right"></i>
+    </a>
+  </p>
+{{</media-block>}}
+{{</section>}}
+  
\ No newline at end of file
diff --git a/content/projects/embedded-and-automative.md b/content/projects/embedded-and-automative.md
new file mode 100644 (file)
index 0000000..feb70a2
--- /dev/null
@@ -0,0 +1,106 @@
+---
+title: Embedded & Automative
+description: Maturity, isolation, security features, real-time support, fault-tolerance, and a flexible architecture make the Xen Project Hypervisor a perfect match for embedded and automative systems.
+draft: false
+menus:
+  main:
+    parent: Projects
+    weight: 100
+---
+
+
+{{<section>}}
+  {{<media-block
+    title="Embedded systems redefined"
+    image="/img/logos/arm-logo.svg"
+    imageSize="50%"
+    imageAlt="ARM logo"
+  >}}
+{{<md>}}
+At the core of every modern embedded system is software meticulously crafted and seamlessly integrated with hardware, dedicated to fulfilling a specific, vital function. This is where our journey begins.
+
+Since 2011, following the groundbreaking announcement of the Xen port to ARMv7 with Virtualization Extensions, our community has been relentlessly advancing Xen for embedded deployments.
+
+Our focus extends beyond ARMv7 to encompass ARMv8, x86-64, and RISC-V, catering to both embedded and automotive applications. We’re not just part of the evolution; we’re leading it.
+{{</md>}}
+
+<p class="mg-t-md">
+  <a href="TODO" class="btn btn-primary">
+    Read project proposal <i class="fas fa-arrow-right"></i>
+  </a>
+</p>
+
+{{</media-block>}}
+{{</section>}}
+
+{{<section>}}
+  {{<media-block
+    title="What does this mean?"
+    image="/img/flatline/data_and_settings.svg"
+    mediaPosition="right"
+  >}}
+  {{<md>}}
+- Xen revolutionizes embedded systems, enabling fully-featured operating systems like Linux to coexist with smaller and faster RTOSes such as Zephyr.
+- Xen’s ability to allocate hardware resources with precision and support multiple communication paradigms between VMs has made it indispensable in diverse applications, from 5G antennas and industrial robots to medical devices and automobiles.
+- A significant amount of work has been completed in this area since the team started in 2014. Most work has occurred in Linux, Xen, and OP-TEE.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+{{<section background="normal">}}
+  {{<features-list cols="3">}}
+    - title: Real-Time and Cache Coloring
+      icon: fas fa-clock-rotate-left
+      description: Xen excels in handling hard real-time workloads. Our innovative cache coloring technique ensures low and predictable interrupt latencies, with real-time benchmarks as impressive as less than 4 microseconds interrupt latencies on AMD/Xilinx Ultrascale+ under heavy interference.
+    
+    - title: Dom0less and parallel booting
+      icon: fas fa-power-off
+      description: Embrace the efficiency of parallel VM booting with Dom0less Xen. This feature drastically reduces boot times to under a second for an RTOS like Zephyr, bypassing the need for Dom0 (Linux) boot-up. Dom0less also opens the door to fully static configurations, positioning Dom0 as an optional component, not a necessity.
+
+    - title: Cortex-R52 and R82 Support
+      icon: fas fa-handshake
+      description: A collaboration between ARM and AMD/Xilinx is expanding Xen's capabilities to microcontrollers and MMU-less embedded processors. This innovation marks a significant leap for virtualization in embedded systems.
+  {{</features-list>}}
+{{</section>}}
+
+{{<section>}}
+  {{<media-block
+    title="Why Xen Project?"
+    media=`{{<youtube id="uuBhqwbaObE" title="Xen Project's Progress Toward Safety Certification"  >}}`
+  >}}
+
+The Xen Project Hypervisor is uniquely placed to support a new range of use cases, building on top of 14 years of usage within the data center. In particular, its isolation and security features, flexible virtualization mode and architecture, driver disaggregation, and ARM support (only 47K lines of code) make it a perfect fit for embedded applications.
+
+{{</media-block>}}
+{{</section>}}
+   
+
+{{<section>}}
+  {{<media-block
+    title="Functional safety"
+    image="/img/others/xen-progress-certification.png"
+    mediaPosition="right"
+  >}}
+{{<md>}}
+With sponsorships from the likes of AMD, we’re on a mission to align Xen with top safety standards, including ISO 26262 ASIL D and IEC 61508 SIL 3.
+
+Initiatives like the MISRA C course for community members and striving for MISRA C compliance in the Xen upstream codebase underscore our dedication to ensuring Xen’s role in safety-critical environments.
+
+Xen is not just a technology; it’s a vision coming to life, shaping the future of embedded systems, and redefining what’s possible.
+{{</md>}}
+ {{</media-block>}}
+{{</section>}}
+
+{{<section>}}
+  {{<media-block
+    title="Functional safety"
+    image="/img/flatline/coding.svg"
+  >}}
+{{<md>}}
+
+Licenses
+Code will be upstreamed to projects under the license of the respective upstream project. For code that is hosted by the subproject, e.g. for a [QNX base-ports](https://wiki.xenproject.org/wiki/Embedded_and_Automotive/Archived/PV_Drivers/Project_Proposal#QNX_and_other_OSes), an appropriate [OSI approved](https://opensource.org/licenses) license will be used. For PV drivers contributed to the Linux kernel or for Linux user space drivers hosted by the subproject a [dual-use license](https://wiki.xenproject.org/wiki/Embedded_and_Automotive/Archived/PV_Drivers/Project_Proposal#Linux) will be used to enable easy sharing of driver code with FreeBSD and other open source operating systems.
+
+{{</md>}}
+ {{</media-block>}}
+{{</section>}}
\ No newline at end of file
diff --git a/content/projects/hvmi.md b/content/projects/hvmi.md
new file mode 100644 (file)
index 0000000..a97b30a
--- /dev/null
@@ -0,0 +1,48 @@
+---
+title: HVMI
+description: Explore Xen Project's Hypervisor Memory Introspection (HVMI). Learn how HVMI enhances security by providing real-time monitoring and protection for virtualized environments.
+draft: false
+menus:
+  main:
+    parent: Projects
+    weight: 100
+aside: 
+  - type: resource
+    items:
+    - name: "**Github repository**"
+      link: TODO
+    - name: Documentation
+      link: TODO
+---
+
+{{<section>}}
+  {{<media-block
+    title="What is HVMI?"
+    media="https://xenproject.org/wp-content/uploads/sites/79/2020/07/github-hvmi-v2_Kek0TiK6.compressed.mp4"
+  >}}
+HVMI stands for Hypervisor-based Memory Introspection. The technology leverages Virtual Machine Introspection (VMI) APIs in the Xen and KVM hypervisors. By gaining introspection of the raw memory of running guest virtual machines, HVMI can apply security logic to detect and prevent the use of common attack techniques, such as buffer overflows, heap spray, code injection, and so-on.
+{{</media-block>}}
+{{</section>}}
+
+
+
+{{<section>}}
+  {{<media-block
+    title="About us"
+    media="/img/flatline/laptop-cybersecurity.svg"
+    mediaPosition="right"
+  >}}
+
+A research and development team at Bitdefender extended the VMI APIs by working with the Xen Project and KVM Project communities. Bitdefender initially released a commercial solution known as GravityZone Hypervisor Introspection (HVI). The core components of HVI were open-sourced in mid-2020, forming the basis of the HVMI project.
+The primary goal of the HVMI project is to build a community to foster development of new features and use-cases.
+{{</media-block>}}
+{{</section>}}
+
+{{<section>}}
+  {{<media-block
+    title="License"
+    media="/img/flatline/coding2.svg"
+  >}}
+HVMI is licensed under Apache 2.0.
+{{</media-block>}}
+{{</section>}}
\ No newline at end of file
diff --git a/content/projects/hypervisor.md b/content/projects/hypervisor.md
new file mode 100644 (file)
index 0000000..9493013
--- /dev/null
@@ -0,0 +1,149 @@
+---
+title: Hypervisor (x86 & ARM)
+description: Discover Xen Hypervisor, the open-source virtualization platform optimized for both x86 and ARM architectures.
+draft: false
+menus:
+  main:
+    parent: Projects
+    weight: 100
+aside:
+  - type: resource
+    items:
+      - title: Project Management
+        items:
+          - name: "Status: Active"
+            icon: fa-check
+          - name: Features (unstable)
+            link: https://xenbits.xen.org/docs/unstable/SUPPORT.html
+            icon: fa-road
+      - title: Team Processes
+        items:
+          - name: Maintenance
+            link: http://wiki.xenproject.org/wiki/Xen_Maintenance_Releases
+            icon: fa-wrench
+          - name: Security Process
+            link: /about-xen/security-policy/
+            icon: fa-key
+          - name: OpenPGP Keys
+            link: /developers/openpgp-keys
+            icon: fa-key
+      - title: Users
+        items:
+          - name: Downloads
+            link: /xen-project-archives/
+            icon: fa-cube
+          - name: Docs
+            link: https://wiki.xenproject.org/wiki/Main_Page#Xen_Started
+            icon: fa-book
+          - name: xen-users@ mailing list
+            link: /help/mailing-list#general
+            icon: fa-envelope
+          - name: "IRC: #xen"
+            link: /help/irc/
+            icon: fa-comments-o
+          - name: Report a Bug
+            link: http://wiki.xenproject.org/wiki/Reporting_Bugs_against_Xen
+            icon: fa-bug
+          - name: Xen Project Test Days
+            link: http://wiki.xenproject.org/wiki/Xen_Test_Days
+            icon: fa-calendar-check-o
+          - name: Security Announcements
+            link: https://xenbits.xen.org/xsa/
+            icon: fa-bullhorn
+      - title: Developers
+        items:
+          - name: xen-devel@ mailing list
+            link: /help/mailing-list#devel
+            icon: fa-envelope
+          - name: "IRC: #xendevel"
+            link: /help/irc/
+            icon: fa-comments-o
+          - name: Browse Xen.git
+            link: http://xenbits.xenproject.org/gitweb/?p=xen.git;a=summary
+            icon: fa-code-fork
+          - name: Repositories and Branches
+            link: http://wiki.xenproject.org/wiki/Xen_Repositories
+            icon: fa-git
+          - name: Submitting Patches
+            link: http://wiki.xenproject.org/wiki/Submitting_Xen_Patches
+            icon: fa-medkit
+          - name: Docs (API and Test)
+            link: /help/documentation/#xen
+            icon: fa-book
+          - name: Wiki Dev Home
+            link: http://wiki.xenproject.org/wiki/XenDevHome
+            icon: fa-globe
+          - name: Projects for Newbies
+            link: https://wiki.xenproject.org/wiki/Outreach_Program_Projects
+            icon: fa-cube
+      - title: Project Team
+        items:
+          - name: "Release Manager: Henry Wang"
+            icon: fa-briefcase
+          - name: Andy Cooper
+            icon: fa-star
+          - name: George Dunlap
+            icon: fa-star
+          - name: Jan Beulich
+            icon: fa-star
+          - name: Julien Grall
+            icon: fa-star
+          - name: Stefano Stabellini
+            icon: fa-star
+          - name: Wei Liu
+            icon: fa-star
+          - name: Maintainers
+            link: http://xenbits.xenproject.org/gitweb/?p=xen.git;a=blob;f=MAINTAINERS;hb=HEAD
+            icon: fa-wrench
+      - title: Committer Emeritus
+        items:
+          - name: Keir Fraser
+            icon: fa-star
+          - name: Ian Campbell
+            icon: fa-star
+          - name: Tim Deegan
+            icon: fa-star
+          - name: Ian Jackson
+            icon: fa-star
+          - name: Konrad R Wilk
+            icon: fa-star
+---
+
+
+{{<section>}}
+  {{<media-block
+    title="TITLE (TODO)"
+    image="/img/flatline/data-center.svg"
+  >}}
+The Xen Project hypervisor is an open-source type-1 or baremetal hypervisor, which makes it possible to run many instances of an operating system or indeed different operating systems in parallel on a single machine (or host). The Xen Project hypervisor is the only type-1 hypervisor that is available as open source. It is used as the basis for a number of different commercial and open source applications, such as: server virtualization, Infrastructure as a Service (IaaS), desktop virtualization, security applications, embedded and hardware appliances. The Xen Project hypervisor is powering the largest clouds in production today.
+{{</media-block>}}
+{{</section>}}
+
+
+{{<section class="background-normal"  >}}
+  {{<features-list cols="2">}}
+  - title: Fast Start
+    icon: fas fa-power-off
+    description: MirageOS applications takes a few milliseconds to start-up instead of the few minutes that takes traditional OS.
+  - title: Small Binaries
+    icon: fas fa-floppy-disk
+    description: "MirageOS binaries are self-contained: they do not need an additional OS to execute. Despite this, the size of MirageOS binary is usually a few megabytes."
+  - title: Small Footprint
+    icon: fas fa-minimize
+    description: MirageOS applications use a few megabytes of memory, while traditional application and their associated OS waste gigabytes for simple applications.
+  - title: Safe Logic
+    icon: fas fa-code
+    description: MirageOS applications are written in OCaml, an industrial strength programming language supporting functional, imperative and object-oriented styles.
+  {{</features-list>}}
+{{</section>}}
+
+
+
+{{<section>}}
+  {{<media-block
+    title="History"
+    image="/img/flatline/timeline.svg"
+  >}}
+The Xen Project hypervisor is developed by a worldwide community of individuals, researchers and employees of companies and that follow the Xen Project Governance process. The project is supported by the Xen Project Advisory Board made up of project member companies that fund the Xen Project. You can find a contribution breakdowns under Contribution Acknowledgments.
+{{</media-block>}}
+{{</section>}}
diff --git a/content/projects/mirage-os.md b/content/projects/mirage-os.md
new file mode 100644 (file)
index 0000000..e75989c
--- /dev/null
@@ -0,0 +1,74 @@
+---
+title: Mirage OS
+description: MirageOS is a library operating system that constructs unikernels for secure, high-performance, low-energy footprint applications.
+draft: false
+menus:
+  main:
+    parent: Projects
+    weight: 100
+aside:
+  - type: resource
+    items:
+      - name: Label
+        url: TODO
+      - name: Label
+        url: TODO
+---
+
+{{<section>}}
+  {{<media-block
+    title="About us"
+    media="/img/flatline/data_and_settings.svg"
+  >}}
+MirageOS is a library operating system that constructs unikernels for secure, high-performance, low-energy footprint applications across various hypervisor and embedded platforms. It is available as an open-source project created and maintained by the MirageOS Core Team. A unikernel can be customised based on the target architecture by picking the relevant MirageOS libraries and compiling them into a standalone operating system, strictly containing the functionality necessary for the target. This minimises the unikernel’s footprint, increasing the security of the deployed operating system.
+{{</media-block>}}
+{{</section>}}
+
+{{<section md="true">}}
+### Our architecture
+
+The MirageOS architecture can be divided into operating system libraries, typed signatures, and a metaprogramming compiler. The operating system libraries implement various functionalities, ranging from low-level network card drivers to full reimplementations of the TLS protocol, as well as the Git protocol to store versioned data. A set of typed signatures ensures that the OS libraries are consistent and work well in conjunction with each other. Most importantly, MirageOS is also a metaprogramming compiler that can input OCaml source code along with its dependencies, and a deployment target description to generate an executable unikernel, i.e., a specialised binary artefact containing only the code needed to run on the target platform. Overall, MirageOS focuses on providing a small, well-defined, typed interface with the system components of the target architecture.
+{{</section>}}
+
+
+{{<section class="background-normal"  >}}
+  {{<features-list cols="2">}}
+  - title: Small footprint and interface
+    icon: fas fa-memory
+    description: Because it uses a microkernel design, with a small memory footprint and a restricted interface to guests, it is more robust and secure than other hypervisors.
+  - title: Operating system agnostic
+    icon: fas fa-gears
+    description: Most installations run with Linux as the main control stack (aka "domain 0"). But a number of other operating systems can be used instead, including NetBSD and FreeBSD.
+  - title: Driver Isolation
+    icon: fas fa-shield-halved
+    description: The Xen Project hypervisor has the capability to allow the main device driver for a system to run inside of a virtual machine. If the driver crashes, or is compromised, the VM containing the driver can be rebooted and the driver restarted without affecting the rest of the system.
+  - title: Paravirtualization
+    icon: fas fa-window-restore
+    description: Paravirtualization allows guests to avoid extra overhead, by making use of devices and interfaces that have been designed for a virtualized environment. Additionally Xen on x86 also supports fully paravirtulized guests, which can run on hardware that doesn't support virtualization extensions.
+  {{</features-list>}}
+{{</section>}}
+
+
+
+{{<section>}}
+  {{<media-block
+    title="**Development** process"
+    media="/img/flatline/coding.svg"
+    mediaPosition="right"
+  >}}
+Mirage OS follows a standard Github workflow and has its own Developer Portal. All developer-related information such as documentation, development team members, and other information related to the development of Mirage OS can be found there as well.
+{{</media-block>}}
+{{</section>}}
+
+{{<section>}}
+  {{<media-block
+    title="License"
+    media="/img/flatline/coding2.svg"
+  >}}
+{{<md>}}
+  The Mirage codebase is released under the ISC license, with some portions of code released under LGPLv2.
+  
+  Sub-Projects hosted by the Xen Project team typically use GPLv2. In the case of Mirage, it is necessary to use a permissive open source license such as “ISC” because Mirage based microkernels need to be statically linked with applications to form a stand-alone appliance.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
\ No newline at end of file
diff --git a/content/projects/unikraft.md b/content/projects/unikraft.md
new file mode 100644 (file)
index 0000000..2188171
--- /dev/null
@@ -0,0 +1,80 @@
+---
+title: Unikraft
+description: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+draft: false
+menus:
+  main:
+    parent: Projects
+    weight: 100
+aside:
+  - type: resource
+    items:
+      - name: Label
+        link: TODO
+      - name: Label
+        link: TODO
+---
+
+{{<section>}}
+  {{<media-block
+    title="Basic concepts"
+    media="https://www.slideshare.net/slideshow/embed_code/key/hzJl1EbWmxfFUN"
+  >}}
+The high-level goal of Unikraft is to be able to build unikernels targeted at specific applications without requiring the time-consuming, expert work that building such a unikernel requires today. An additional goal (or hope) of Unikraft is that all developers interested in unikernel development would contribute by supplying libraries rather than working on independent projects with different code bases as it is done now.
+{{</media-block>}}
+{{</section>}}
+
+
+
+{{<section>}}
+  {{<media-block
+    title="Unikraft architecture"
+    media="/img/others/unikraft-architecture.png"
+    mediaPosition="right"
+  >}}
+  {{<md>}}
+  The main idea behind Unikraft is depicted in Figure 1 and consists of two basic components:
+  - Library pools
+  - Unikraft build tool
+{{</md>}}
+
+{{</media-block>}}
+{{</section>}}
+
+{{<section>}}
+{{<vertical-lists cols="1">}}
+- title: Library pools
+  text: Library pools would contain libraries that the user of Unikraft can select from to create the unikernel. From the bottom up, library pools are organized into (1) the architecture library tool, containing libraries specific to a computer architecture (e.g., x86_64, ARM32 or MIPS); (2) the platform tool, where target platforms can be Xen, KVM, bare metal (i.e. no virtualization) and user-space Linux; and (3) the main library pool, containing a rich set of functionality to build the unikernel from. This last library includes drivers (both virtual such as netback/netfront and physical such as ixgbe), filesystems, memory allocators, schedulers, network stacks, standard libs (e.g. libc, openssl, etc.), runtimes (e.g. a Python interpreter, debugging and profiling tools). These pools of libraries constitute a code base for creating unikernels. As shown, a library can be relatively large (e.g libc) or quite small (a scheduler), which should allow for a fair amount of customization for the unikernel.
+- title: The Unikraft build tool
+  text: The Unikraft build tool is in charge of compiling the application and the selected libraries together to create a binary for a specific platform and architecture (e.g., Xen on x86_64). The tool is currently inspired by Linux’s kconfig system and consists of a set of Makefiles. It allows users to select libraries, to configure them, and to warn users when library dependencies are not met. In addition, the tool can also simultaneously generate binaries for multiple platforms.
+{{</vertical-lists>}}
+
+
+{{<md>}}
+As an example, imagine a user wanting to generate a network driver domain unikernel. In this case, we would assume the “application” to be the netback driver. To select this application, the user would first run “make menuconfig” from within the netback application folder. The Makefile there would set a variable to indicate what the application is, and would include the main Unikraft Makefiles so that the unikernel can be built (Step 1 in the figure). Using the menu-based system, the user chooses the relevant libraries; for a Xen driver domain, this would include a physical network driver, the netback driver, the libxenplat library and a library from the architecture library pool such as libx86_64arch (Step 2 in the figure). With this in place, the user saves the configuration and types “make” to build the unikernel (Step 3) and “xl create” to run it (Step 4).
+
+A note on the ABI/API exposed to the application: because Unikraft allows for customization of the unikernels, the ABI (or API since there is no kernel) would be custom, that is, defined by the libraries the user selected. Having said that, it would be perfectly possible, for instance, to build POSIX-compliant unikernels with it (e.g. similar to Rump, but in principle with much more specialized OS layers).
+
+Finally, it is worth pointing out that we use the term application loosely: another clear target for Unikraft is the building of runtime-specific unikernels (e.g. a unikernel able to run Python or OCaml scripts as is the case with MirageOS).
+
+## Unikraft and Minios
+The Unikraft project also aims to concentrate the various efforts currently going on in the Xen community regarding minimalistic OSes (essentially different variants of MiniOS). We think that splitting the community across these variants is counter-productive and hope that Unikraft will provide a common place for all or most improvements and customizations of minimalistic OSes. The long-term goal is to replace something like MiniOS with a tool that can automatically build such a minimalistic OS.
+{{</md>}}
+
+{{</section>}}
+
+
+
+
+
+
+{{<section>}}
+  {{<media-block
+    title="License"
+    media="/img/flatline/coding2.svg"
+  >}}
+{{<md>}}
+The main license of the run-time components of Unikraft is a 3-clause BSD license unless there is a good reason not to use it (e.g. we may import 2-clause BSD licensed code from Mini-OS, which we would not anticipate to change). The Makefile system would be licensed under GPL v2 or later as we want to be able to use KConfig functionality from Buildroot/Linux.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
\ No newline at end of file
diff --git a/content/projects/windows-pv-drivers.md b/content/projects/windows-pv-drivers.md
new file mode 100644 (file)
index 0000000..7a5941e
--- /dev/null
@@ -0,0 +1,78 @@
+---
+title: Windows PV Drivers
+description: Windows PV Drivers enhance the performance and efficiency of Windows virtual machines. Access documentation and support for seamless integration.
+draft: false
+menus:
+  main:
+    parent: Projects
+    weight: 100
+aside:
+  - type: resource
+    items:
+      - name: Download
+        link: TODO
+        icon: fas fa-arrow-right
+      - name: Documentation
+        link: https://wiki.xenproject.org/wiki/Category:Windows_PV_Drivers
+---
+
+{{<section>}}
+  {{<media-block
+    title="About Windows PV Drivers"
+    media=`{{<youtube id="3R_IxOlP548" title="Xen Project's Progress Toward Safety Certification"  >}}`
+  >}}
+  {{<md>}}
+Paravirtualization aware (PV) device drivers are an important part of HVM guests running under the Xen Project Hypervisor.
+
+Citrix has provided a set of PV driver for Windows since the inception of XenServer. These drivers have evolved over the years and the full source code has been made available under a BSD license and are available to the community to modify and build upon.
+
+The Windows PV Drivers team at the Xen Project is maintaining and developing these drivers under Xen Project governance.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+{{<section>}}
+{{<md>}}
+## Downloads
+{{</md>}}
+
+{{<cols cols="2">}}
+  {{<col>}}
+    The team plans to perform regular builds of the drivers and aims to test them using the Microsoft HCK. The team further plans to provide logo-signed builds of the drivers in future commercial Xen offerings. The team may also provide logo-signed drivers via Microsoft’s Windows Update mechanism, making them widely available to anyone running Windows under Xen (not just XenServer) without the need to build the drivers themselves. 
+
+    <p class="mg-t-md">
+      <a href="https://xenbits.xen.org/gitweb/?p=pvdrivers/win.git;a=summary" class="btn btn-primary">
+       Download developement builds
+       <i class="fas fa-arrow-up-right-from-square"></i>
+      </a>
+    </p>
+  {{</col>}}
+
+{{<col>}}
+  {{<md>}}
+  Any other organization is also free to do the same by registering a top-level PV device with the Xen Project community (see *Xen PCI device ID registry*) and logo-signing their driver builds.
+Please sign up and follow the [win-pv-devel@mailing list](TODO) for status and development updates.
+  {{</md>}}
+
+    <p class="mg-t-md">
+       <a href="https://wiki.xenproject.org/wiki/Windows_PV_Drivers/Installing" class="btn btn-secondary">
+        Read installation driver wiki
+        <i class="fas fa-arrow-up-right-from-square"></i>
+      </a>
+    </p>
+  {{</col>}}
+{{</cols>}}
+{{</section>}}
+
+
+{{<section>}}
+  {{<media-block
+    title="License"
+    media="/img/flatline/coding2.svg"
+  >}}
+{{<md>}}
+The drivers are available under a [simplified 2-clause BSD license](https://en.wikipedia.org/wiki/BSD_licenses#2-clause_license_.28.22Simplified_BSD_License.22_or_.22FreeBSD_License.22.29). The code can be found in the following repositories on [xenbits.xen.org](https://xenbits.xen.org/gitweb/) in the [pvdrivers/win](https://xenbits.xen.org/gitweb/?a=project_list;pf=pvdrivers/win) folder.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
diff --git a/content/projects/xapi.md b/content/projects/xapi.md
new file mode 100644 (file)
index 0000000..a8c4394
--- /dev/null
@@ -0,0 +1,64 @@
+---
+title: XAPI
+description: The XAPI project is an enterprise ready toolstack for use with the Xen Project hypervisor
+draft: false
+menus:
+  main:
+    parent: Projects
+    weight: 100
+aside:
+  - type: resource
+    items:
+      - name: Label
+        url: TODO
+      - name: Label
+        url: TODO
+---
+
+{{<section>}}
+  {{<media-block
+    title="Enterprise-ready tools"
+    media="/img/flatline/data_and_settings.svg"
+  >}}
+The XAPI project is an enterprise ready toolstack for use with the Xen Project hypervisor. When used with Xen, the XAPI toolstack consolidates server workloads, enables savings in power, cooling, and management costs (contributing to environmentally sustainable computing), increases the ability to adapt to ever-changing IT environments, optimizes the use of existing hardware, and improves the level of IT reliability.
+The XAPI team also develops tooling, agents and libraries that are needed to operate a XAPI-based system.
+{{</media-block>}}
+{{</section>}}
+
+{{<section md="true">}}
+## What is XAPI?
+
+The Xen Project Management API (or XAPI) is:
+
+- A Xen Project Toolstack that exposes the XAPI interface. When we refer to XAPI as a toolstack, we typically include all dependencies and components that are needed for XAPI to operate (e.g. xenopsd).
+- An interface for remotely configuring and controlling virtualized guests running on a Xen-enabled host. XAPI is the core component of XenServer (previously Citrix) and XCP-ng.
+
+XAPI adds additional functionality compared to other Xen Project toolstacks, including:
+
+- Extending the software to cover multiple hosts
+- Enhancing the VM lifecycle, including live snapshots, VM checkpointing, and VM migration
+- Enabling resource pools to include live migration, auto configuration, and disaster recovery
+- Allowing flexible storage and networking including integrated Open vSwitch support and storage XenMotion® live Migration (cross-pool migration, VDI migration)
+- Enabling event tracking, with progress and notification
+- Creating upgrade and patching capabilities
+- Facilitating real-time performance monitoring and alerting
+- Integrations with cloud orchestration stacks
+- Built-in support and templates for Windows and Linux guests
+
+ Management tools are available with XAPI based products and from Xen Orchestra.
+{{</section>}}
+
+
+
+
+{{<section>}}
+  {{<media-block
+    title="License"
+    media="/img/flatline/coding2.svg"
+    mediaposition="right"
+  >}}
+{{<md>}}
+XAPI is licensed under the [Lesser GNU General Public License (LGPL2)](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html).
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
\ No newline at end of file
diff --git a/content/projects/xcp-ng.md b/content/projects/xcp-ng.md
new file mode 100644 (file)
index 0000000..8bd501c
--- /dev/null
@@ -0,0 +1,110 @@
+---
+title: XCP-ng
+description: XCP-ng (Xen Cloud Platform-next generation) is the turnkey distribution of the Xen Project Hypervisor relying mostly on the Xen Hypervisor and then Xen API (XAPI).
+draft: false
+menus:
+  main:
+    parent: Projects
+    weight: 100
+aside: 
+  - type: resource
+    items:
+      - name: Label
+        url: TODO
+      - name: Label
+        url: TODO
+      - title: Installation
+        items: 
+          - name: Documentation
+            url: https://www.youtube.com/watch?v=xJyJdUB7z-A
+          - name: Video tutorial
+            url: TODO
+---
+
+{{<section>}}
+  {{<media-block
+    title="Turnkey **open-source hypervisor**"
+    media="/img/others/xcp-ng-badge.webp"
+  >}}
+  {{<md>}}
+XCP-ng enables an easy way to deploy a VM based infrastructure using Xen as the hypervisor and XAPI to deliver an out of the box, turnkey, solution. XCP-ng satisfies the needs of any sized organization from their thriving community of homelabbers to massive data centers. **XCP-ng is built to run in numerous configurations for any type of production environment.**
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+
+{{<section>}}
+  {{<media-block
+    title="Project’s **history**"
+    media="/img/flatline/timeline.svg"
+    mediaPosition="right"
+  >}}
+  {{<md>}}
+In 2018 XCP-ng was born, following Citrix System’s announcement to remove features from their free version and place them behind paid tiers. XCP-ng was launched with the intentions of revitalizing the original goals of the XCP project, to **provide free and community back version of XenServer.**
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+
+{{<section class="background-normal"  >}}
+  {{<features-list cols="2">}}
+    - title: Long-term support
+      icon: fas fa-expand
+      description: XCP-ng benefits from long-term support with regular updates, ensuring that the platform remains interoperable with both your current and future tools, and providing stable deployments for years to come.
+    - title: Secure Hypervisor
+      icon: fas fa-shield-halved
+      description: Based on the Xen hypervisor, XCP-ng is one of the most secure virtualization platforms. Monthly security updates enhance protection and eliminate vulnerabilities. Only the domain zero can directly communicate with your hardware, significantly reducing attack risks from unprivileged VMs.
+    - title: Innovative
+      icon: fas fa-lightbulb
+      description: With over €15 million in investments, a team of 15 developers, and monthly updates, XCP-ng continually enhances performance, security, and interoperability.
+    - title: Easy to administrate
+      icon: fas fa-window-restore
+      description: Step-by-step guides and active community forums simplify the process of installing, managing VMs, and using XCP-ng.
+  {{</features-list>}}
+{{</section>}}
+
+
+{{<section>}}
+  {{<media-block
+    title="How to **get started?**"
+    media="/img/flatline/start-up.svg"
+  >}}
+  {{<md>}}
+  There are many ways to get started with XCP-ng. There are a number of **video training tutorials** on our youtube channel, **step-by-step written instructions** in our documentation, and a training course for XCP-ng is coming soon.
+  {{</md>}}
+
+<p class="mg-t-md">
+  <a href="TODO">
+    Watch training <i class="fas fa-arrow-up-right-from-square"></i>
+  </a>
+</p>
+
+<p class="mg-t-sm">
+  <a href="TODO">
+    Read step-by-step documentation instructions
+    <i class="fas fa-arrow-up-right-from-square"></i>
+  </a>
+</p>
+{{</media-block>}}
+{{</section>}}
+
+
+
+{{<section>}}
+{{<media-block
+  title="**Development** process"
+  media="/img/flatline/coding.svg"
+  mediaPosition="right"
+>}}
+  {{<md>}}
+  The XCP-ng platform benefits from **15 dedicated employees** and the assistance of contributors like yourself. Within our documentation, you can find more detailed information about our development process, **how you can be involved in future** updates and testing of the platform.
+  Just recently, XCP-ng 8.3 Beta 2 was just released for community testing and feedback.
+  {{</md>}}
+
+  <p class="mg-t-md">
+    <a href="TODO">
+      Read about XCP-ng development process <i class="fas fa-arrow-up-right-from-square"></i>
+    </a>
+  </p>
+{{</media-block>}}
+{{</section>}}
\ No newline at end of file
diff --git a/content/resources/downloads.md b/content/resources/downloads.md
new file mode 100644 (file)
index 0000000..24339ea
--- /dev/null
@@ -0,0 +1,19 @@
+---
+title: Downloads
+description: Find all the relevant resources to download on this page.
+date: 2024-01-14T07:07:07+01:00
+draft: false
+menus:
+  main:
+    parent: Resources
+    weight: 50
+---
+
+<!-- {{<get-downloads-links>}} -->
+
+{{<section>}}
+{{<vertical-lists cols="3" col-class="list-column--sublists">}}
+{{<get-downloads-links>}}
+{{</vertical-lists>}}
+
+{{</section>}} 
\ No newline at end of file
diff --git a/content/resources/mailing-lists.md b/content/resources/mailing-lists.md
new file mode 100644 (file)
index 0000000..415644e
--- /dev/null
@@ -0,0 +1,293 @@
+---
+title: Join mailing lists
+description: Join the Xen mailing list community to stay updated on the latest developments, discussions, and announcements.
+date: 2024-01-14T07:07:07+01:00
+draft: false
+menus:
+  main:
+    parent: Resources
+    weight: 100
+---
+
+{{<section>}}
+  {{<media-block
+    title="What does this mean?"
+    image="/img/flatline/new-message.svg"
+  >}}
+  {{<md>}}
+- Xen revolutionizes embedded systems, enabling fully-featured operating systems like Linux to coexist with smaller and faster RTOSes such as Zephyr.
+- Xen's ability to allocate hardware resources with precision and support multiple communication paradigms between VMs has made it indispensable in diverse applications, from 5G antennas and industrial robots to medical devices and automobiles.
+- A significant amount of work has been completed in this area since the team started in 2014. Most work has occurred in Linux, Xen, and OP-TEE.
+{{</md>}}
+{{</media-block>}}
+{{</section>}}
+
+
+{{<section background="curve" class="txt-c">}}
+  
+  {{<md>}}
+  Consider **searching in archives**, the answer you are looking might already exist!
+  {{</md>}}
+
+  <p class="mg-t-md ">
+    <a href="https://lists.xenproject.org/archives/" class="btn btn-secondary">
+      Check out archives <i class="fas fa-arrow-up-right-from-square"></i>
+    </a>
+    </p>
+{{</section>}}
+
+
+
+{{<section>}}
+{{<md>}}
+## General
+{{</md>}}
+
+{{<row-from-list component="conversation-card" cols="3">}} 
+- label: XEN-ANNOUNCE@
+  tags:
+    - Mailing list
+  content: Announcements related to the project. These may be release announcements, security advisories, announcements related to events. This is a low volume list, with about 1-2 posts per month.
+  actions:
+    - url: "#"
+      text: Info
+    - url: "#" 
+      text: Archives
+
+- label: XEN-USERS@
+  tags:
+    - Mailing list 
+  content: This list is for those using and installing the Xen Project software.
+  actions:
+    - url: "#"
+      text: Info
+    - url: "#"
+      text: Archives
+
+- label: OSSTEST-OUTPUT@
+  tags:
+    - Mailing list
+  content: This is a receive-only list to which detailed test results and reports from the Xen Project Test Lab are sent. This is a very high volume list with 500+ e-mails a day. Only subscribe to it with filters set up. Principal test results are posted to the xen-devel list.
+  actions:
+    - url: "#"
+      text: Info
+    - url: "#"
+      text: Archives
+
+- label: SECURITY@XENPROJECT.ORG
+  tags: 
+    - Mailing list
+  content: This e-mail alias is intended for reporting security vulnerabilities in Xen Project software (this also covers the situation where an existing published codebase is retrospectively found to be a security fix). List membership is restricted to members of the Xen Project Security Response Team and thus invite only and obviously, there is no public archive. For more information on how the Xen Project handles security vulnerabilities, see the Xen Security Problem Response Process.
+  actions:
+    - url: "#"
+      text: Info
+    - url: "#"
+      text: Archives
+
+- label: PRIVATE@
+  tags:
+    - Mailing list
+  content: This list is for maintainers of all Xen teams, and key developers that have been invited by maintainers. This list is intended to be used only when privacy implications or similar prevent usage of a public list. Example usage may be to let other community members know of absences (due to holidays, maternity/ paternity leave, etc.) and to arrange cover. Another example may be to ask other team members for advice on how to respond to a difficult situation in the community. Any conversations that should have been started on a public list, will be forwarded to an appropriate public list. This list is an invite-only list and is not archived. Community members can subscribe, but approval in line with Mailing List Conventions is required.
+  actions:
+    - url: "#"
+      text: Info
+    - url: "#"
+      text: Archives
+
+- label: PUBLICITY@
+  tags:
+    - Mailing list
+  content: This is a list to coordinate content for the Xen Project blog, articles in the open source and Linux press, other media, press activities, to coordinate attendance and submissions for open source and industry events and anything else to promote the Xen Project. The list is open for people in the community who care about promoting the Xen Project. The list is also archived. To join, please email the Community Manager.
+  actions:
+    - url: "#"
+      text: Info 
+    - url: "#"
+      text: Archives
+
+{{</row-from-list>}}
+{{</section>}}
+
+
+
+{{<section>}}
+{{<md>}}
+## Developpers
+
+### Xen Project Hypervisor
+{{</md>}}
+
+{{<row-from-list component="conversation-card" cols="3">}} 
+- label: XEN-DEVEL@
+  tags:
+    - Mailing list
+  content: A discussion list for the Xen Project Hypervisor developer community. Please do not use this list for technical support queries.
+  actions:
+    - url: "#"
+      text: Info
+    - url: "#"
+      text: Archives
+- label: XEN-CHANGELOG@
+  tags:
+    - Mailing list
+  content: This is a receive-only list to which details of changesets to the Xen Hypervisor Git repositories are sent.
+  actions:
+    - url: "#"
+      text: Info
+    - url: "#"
+      text: Archives
+{{</row-from-list>}}
+
+
+{{<row cols="3" class="mg-v-lg">}}
+{{<col>}}
+  {{<md>}}
+  ### Mirage OS
+  {{</md>}}
+  {{<row-from-list component="conversation-card" cols="1">}} 
+  - label: MIRAGEOS-DEVEL@
+    tags:
+      - Mailing list
+    content: A discussion list for the Mirage OS developer community. Note that most development discussion happens on the respective GitHub (via issues, etc. on the respective repositories).
+    actions:
+      - url: "#"
+        text: Info
+      - url: "#"
+        text: Archives
+  {{</row-from-list>}}
+{{</col>}}
+{{<col>}}
+  {{<md>}}
+  ### Unikraft
+  {{</md>}}
+  {{<row-from-list component="conversation-card" cols="1">}} 
+  - label: MINIOS-DEVEL@ (INCLUDES UNIKRAFT DEVELOPMENT) 
+    tags:
+      - Mailing list
+    content: A discussion list for MiniOS and Unikraft development.
+    important: For patches that need to go into hypervisor/mainline please keep an eye on xen-devel. For development discussions that are MiniOS and Unikraft specific, but impact the hypervisor and/or other sub-projects, please CC the relevant mailing list. For Unikraft code submissions please use the prefix [UNIKRAFT PATCH] xxx, whereas for MiniOS use [PATCH xxx].
+    actions:
+      - url: "#"
+        text: Info
+      - url: "#"
+        text: Archives
+  {{</row-from-list>}}
+{{</col>}}
+{{<col>}}
+  {{<md>}}
+  ### XAPI
+  {{</md>}}
+  {{<row-from-list component="conversation-card" cols="1">}} 
+  - label: XEN-API@
+    tags:
+      - Mailing list
+    content: A discussion list for the XAPI project, developing an open-source management layer for Xen-based systems. The list is both for developers and users.
+    note: Note that most technical discussions for the Xen-API project happen on GitHub (via issues, etc. on the respective repositories).
+    actions:
+      - url: "#"
+        text: Info
+      - url: "#"
+        text: Archives
+  {{</row-from-list>}}
+{{</col>}}
+{{</row>}}
+
+
+{{<md>}}
+### XCP-ng
+{{</md>}}
+{{<row-from-list component="conversation-card" cols="3" class="mg-b-lg">}} 
+- label: XCP-NG FORUMS
+  tags:
+    - Forum
+  content: Announcements related to the project. These may be release announcements, security advisories, announcements related to events. This is a low volume list, with about 1-2 posts per month.
+  actions:
+    - url: "#"
+      text: All forums
+    - url: "#"
+      text: Development
+- label: XCP-NG NEWSLETTER
+  tags:
+    - Newsletter
+  content: This list is for those using and installing the Xen Project software.
+  actions:
+    - url: "#"
+      text: Subscribe
+- label: XCP-ng-dev
+  tags:
+    - Forum
+  content: For developer specific questions and those who want to contribute, this channel is for you, based on XCP-ng forum.
+  actions:
+    - url: "#"
+      text: Info
+    - url: "#"
+      text: Archives
+{{</row-from-list>}}
+
+
+{{<md>}}
+### Windows PV Drivers
+{{</md>}}
+{{<row-from-list component="conversation-card" cols="3">}} 
+- label: WIN-PV-DEVEL@
+  tags:
+    - Mailing list
+  content: A discussion list for the Windows PV Drivers developer community.
+  actions:
+    - url: "#"
+      text: Info 
+    - url: "#"
+      text: Archives
+{{</row-from-list>}}
+    
+{{</section>}}
+
+
+
+
+
+{{<section>}}
+{{<md>}}
+## Advisory board
+
+{{</md>}}
+{{<row-from-list component="conversation-card" cols="3">}} 
+- label: PREDISCLOSURE-APPLICATIONS@
+  tags:
+    - Mailing list
+  content: |
+    Organizations who want to become a member of the Xen Project predisclosure list to receive pre-disclosure of security advisories and who meet the criteria outlined in the Xen Security Problem Response Process should become members of this mailing list and submit their application through this mailing list as outlined in Xen Security Problem Response Process.
+    
+    The list is open to all community members who care about security and although pre-disclosure membership applications are evaluated based on strict criteria, all applications are open for review and comment by community members. The list is also archived.
+  actions:
+    - url: "#"
+      text: Info
+    - url: "#"
+      text: Archives
+
+- label: ADVISORY-BOARD@
+  tags:
+    - Mailing list
+  content: A discussion list for members of the Xen Project Advisory Board. The list is invite-only.
+  actions:
+    - url: "#"
+      text: Info
+    - url: "#"
+      text: Archives
+
+{{</row-from-list>}}
+
+{{</section>}}
+
+
+{{<section class="txt-c">}}
+<a href="TODO" class="btn btn-primary">
+  Mailing list Netiquette
+  <i class="fas fa-arrow-up-right-from-square"></i>
+</a>
+
+<a href="TODO" class="btn btn-secondary mg-l-lg">
+  Mailing list moderators
+  <i class="fas fa-arrow-up-right-from-square"></i> 
+</a>
+
+{{</section>}}
\ No newline at end of file
diff --git a/content/resources/matrix.md b/content/resources/matrix.md
new file mode 100644 (file)
index 0000000..6c2040f
--- /dev/null
@@ -0,0 +1,78 @@
+---
+title: Matrix
+description: Engage in real-time discussions and collaboration with the Xen community on Matrix.
+date: 2024-01-14T07:07:07+01:00
+draft: false
+menus:
+  main:
+    parent: Resources
+    weight: 70
+---
+
+
+{{<section>}}
+{{<md>}}
+## Xen Project Matrix
+{{</md>}}
+
+{{<row-from-list component="conversation-card" cols="3">}}  
+- label: XenProject
+  tags:
+    - Matrix
+  content: For general queries and updates about the software. This channel is mainly for users and community members.For developer-specific questions use XenDevel instead.
+  actions:
+    - url: "TODO"
+      text: Join
+
+- label: XenDevel 
+  tags:
+    - Matrix
+  content: For developers - if you have submitted patches to the developer mailing lists or are otherwise active on them, this channel is for you.It's also the best place to ask development-related questions to the Xen Project.
+  actions:
+    - url: "TODO"
+      text: Join
+
+- label: XenSocial
+  tags: 
+    - Matrix
+  content: For community introductions, tech news, and your watercooler chats.
+  actions:
+    - url: "TODO"
+      text: Join
+{{</row-from-list>}}
+{{</section>}}
+
+
+{{<section>}}
+{{<md>}}
+## Projects
+{{</md>}}
+
+{{<row-from-list component="conversation-card" cols="3">}} 
+- label: XCP-ng
+  tags:
+    - Discord
+  content: For general queries and updates about XCP-ng, hosted on Discord.
+  actions:
+    - url: "TODO"
+      text: Join
+
+- label: Mirage
+  tags:
+    - Discord
+  content: For Mirage OS.
+  actions:
+    - url: "TODO"
+      text: Join
+{{</row-from-list>}}
+{{</section>}}
+
+{{<section md="true" container="small">}}
+### Netiquette
+
+Netiquette encourages individuals to be considerate, kind, and mindful of the impact their words and actions can have on others in the online community.
+
+It encompasses aspects like using proper language, avoiding offensive content, respecting privacy, and engaging in constructive discussions while maintaining a positive online environment for everyone.
+
+If you are new and also post on the mailing list, we highly recommend you introduce yourself to the community!
+{{</section>}}
\ No newline at end of file
diff --git a/content/resources/use-cases.md b/content/resources/use-cases.md
new file mode 100644 (file)
index 0000000..04e29f3
--- /dev/null
@@ -0,0 +1,93 @@
+---
+title: Use cases
+description: See how The Xen Project operates in real life
+date: 2024-01-14T07:07:07+01:00
+draft: false
+menus:
+  main:
+    parent: Resources
+    weight: 10
+---
+
+{{<section>}}
+  {{<media-block
+    title="Xen Server case study"
+    media="/img/flatline/data-process.svg"
+  >}}
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vulputate maximus tincidunt. Duis ex felis, placerat vitae justo at, mattis elementum tellus. Ut gravida orci elementum, viverra libero non, vulputate quam.
+  {{</media-block>}}
+{{</section>}}
+
+{{<section>}}
+  {{<media-block
+    title="Amazon case study"
+    mediaPosition="right"
+    media="/img/flatline/data-hosting.svg"
+  >}}
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vulputate maximus tincidunt. Duis ex felis, placerat vitae justo at, mattis elementum tellus. Ut gravida orci elementum, viverra libero non, vulputate quam.
+  {{</media-block>}}
+{{</section>}}
+
+{{<section>}}
+  {{<media-block
+    title="Security"
+    media="/img/flatline/data-process.svg"
+  >}}
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vulputate maximus tincidunt. Duis ex felis, placerat vitae justo at, mattis elementum tellus. Ut gravida orci elementum, viverra libero non, vulputate quam.
+<p class="mg-t-md">
+  <a href="#" class="btn btn-secondary">Read Xen Project Releases Version 4.18 <i class="fas fa-arrow-up-right-from-square"></i></a>
+</p>
+  {{</media-block>}}
+{{</section>}}
+
+
+
+{{<section>}}
+  {{<media-block
+    title="Embedded & Automative"
+    media="/img/flatline/data_and_settings.svg"
+    mediaPosition="right"
+  >}}
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vulputate maximus tincidunt. Duis ex felis, placerat vitae justo at, mattis elementum tellus. Ut gravida orci elementum, viverra libero non, vulputate quam.
+
+<p class="mg-t-md">
+  <a href="#" class="btn btn-secondary">Read Automotive Virtualization by Xen <i class="fas fa-arrow-up-right-from-square"></i></a>
+</p>
+
+  {{</media-block>}}
+{{</section>}}
+
+
+{{<section md="true" background="curve-reverse" container="small">}}
+## Did you know?
+
+There are several virtualization technologies available in the world today. Our Xen Project virtualization and cloud software includes many powerful features that make it an excellent choice for many organizations.
+
+### Supports multiple guest operating systems: Linux, Windows, NetBSD, FreeBSD
+
+A virtualization technology that only supports a few guest operating systems essentially locks the organization into those choices for years to come. With our hypervisor, you have the flexibility to use what you need and add other operating system platforms as your needs dictate. You are in control.
+
+### Supports multiple Cloud platforms: CloudStack, OpenStack
+
+Supports multiple Cloud platforms: CloudStack, OpenStack
+A virtualization technology that only supports one Cloud technology locks you into that technology. With the world of the Cloud moving so quickly, it could be a mistake to commit to one Cloud platform too soon. Our software keeps your choices open as Cloud solutions continue to improve and mature.
+
+### Reliable technology with a solid track record
+
+Conservative estimates show that Xen has an active user base of 10+ million; these are users, not merely hypervisor installations which are an order of magnitude higher. Amazon Web Services alone runs ½ million virtualized Xen Project instances according to a recent study and other cloud providers such as Rackspace and hosting companies use the hypervisor at an extremely large scale. Our software is the basis of successful commercial virtualization products from Citrix, Huawei, Inspur, and Oracle. It is clear that many major industry players regard our software as a safe virtualization platform for even the largest clouds.
+{{</section>}}
+
+
+{{<section container="full">}}
+{{<center class="mg-t-lg">}}
+  ### Projects
+{{</center>}}
+{{<carousel class="mg-t-lg">}}
+  {{<getpages "projects">}}
+{{</carousel>}}
+
+<p class="mg-t-xl txt-c">
+  <a href="/projects/all-projects" class="btn btn-secondary">Discover all projects <i class="fas fa-arrow-right"></i></a>
+</p>
+{{</section>}}
+
diff --git a/hugo.yaml b/hugo.yaml
new file mode 100644 (file)
index 0000000..c39080c
--- /dev/null
+++ b/hugo.yaml
@@ -0,0 +1,44 @@
+baseURL: "https://xen-project.org/"
+languageCode: "en-us"
+title: "Xen Project"
+theme: "xen-project"
+
+module:
+  hugoVersion:
+    extended: true
+    min: "0.116.0"
+
+build:
+  writeStats: true
+
+menus:
+  main:
+    - name: "Projects"
+      pageRef: "/projects"
+      weight: 10
+
+    - name: "Contribute"
+      pageRef: "/contribute"
+      weight: 20
+
+    - name: "Documentation"
+      pageRef: "/documentation"
+      weight: 30
+      url: "https://docs.xen-project.test"
+      params:
+        class: "custom-class"
+        target: "_blank"
+
+    - name: "Resources"
+      pageRef: "/resources"
+      weight: 40
+    - name: "Blog"
+      parent: "Resources"
+      weight: 60
+      url: "https://external-blog.test"
+      params:
+        class: "custom-class"
+        target: "_blank"
+    - name: "About"
+      url: "/about"
+      weight: 50
diff --git a/hugo_stats.json b/hugo_stats.json
new file mode 100644 (file)
index 0000000..2c5384e
--- /dev/null
@@ -0,0 +1,316 @@
+{
+  "htmlElements": {
+    "tags": [
+      "a",
+      "article",
+      "aside",
+      "body",
+      "button",
+      "code",
+      "div",
+      "em",
+      "h1",
+      "h2",
+      "h3",
+      "h4",
+      "head",
+      "header",
+      "html",
+      "i",
+      "iframe",
+      "img",
+      "li",
+      "link",
+      "main",
+      "meta",
+      "nav",
+      "ol",
+      "p",
+      "pre",
+      "script",
+      "section",
+      "source",
+      "span",
+      "strong",
+      "table",
+      "tbody",
+      "td",
+      "th",
+      "thead",
+      "title",
+      "tr",
+      "ul",
+      "video"
+    ],
+    "classes": [
+      "actions",
+      "active",
+      "ancestor",
+      "anchor",
+      "anchor-placement-bottom",
+      "article",
+      "background-curve",
+      "background-curve-reverse",
+      "background-curve-reverse-top",
+      "background-normal",
+      "block-space",
+      "box-members",
+      "box-members__title",
+      "box-resources",
+      "box-resources__title",
+      "btn",
+      "btn-primary",
+      "btn-secondary",
+      "btn-ternary",
+      "btn-tertiary",
+      "carousel",
+      "carousel-button",
+      "carousel-buttons",
+      "carousel-container",
+      "carousel-content",
+      "carousel-item",
+      "col",
+      "cols",
+      "container",
+      "container-full",
+      "container-small",
+      "content",
+      "content-markdown",
+      "conversation-card",
+      "description",
+      "fa",
+      "fa-arrow-left",
+      "fa-arrow-right",
+      "fa-arrow-up-from-square",
+      "fa-arrow-up-right-from-square",
+      "fa-book",
+      "fa-briefcase",
+      "fa-bug",
+      "fa-bullhorn",
+      "fa-calendar-check-o",
+      "fa-chart-line",
+      "fa-check",
+      "fa-clock-rotate-left",
+      "fa-code",
+      "fa-code-fork",
+      "fa-cogs",
+      "fa-comments",
+      "fa-comments-o",
+      "fa-cube",
+      "fa-download",
+      "fa-envelope",
+      "fa-expand",
+      "fa-floppy-disk",
+      "fa-gears",
+      "fa-git",
+      "fa-globe",
+      "fa-handshake",
+      "fa-headset",
+      "fa-key",
+      "fa-lightbulb",
+      "fa-linkedin",
+      "fa-medkit",
+      "fa-memory",
+      "fa-minimize",
+      "fa-money-bill-alt",
+      "fa-power-off",
+      "fa-puzzle-piece",
+      "fa-road",
+      "fa-shield-alt",
+      "fa-shield-halved",
+      "fa-star",
+      "fa-thumbs-up",
+      "fa-twitter",
+      "fa-up-right-from-square",
+      "fa-users",
+      "fa-window-restore",
+      "fa-wrench",
+      "fa-youtube",
+      "fab",
+      "far",
+      "fas",
+      "feature-content",
+      "feature-item",
+      "feature-item__icon",
+      "feature-item__title",
+      "features-list",
+      "features-list--cols-2",
+      "features-list--cols-3",
+      "features-list--cols-4",
+      "footer",
+      "footer-content",
+      "footer__col",
+      "footer__menu",
+      "footer__text",
+      "full-width-image",
+      "header",
+      "header-content",
+      "header-logo",
+      "header-nav",
+      "hero-block",
+      "image-ratio-large",
+      "images-in-circle",
+      "join-button",
+      "label",
+      "latest-news",
+      "latest-news-template",
+      "latest-news_container",
+      "list-column",
+      "list-column--sublists",
+      "list-no-style",
+      "list-pages",
+      "main",
+      "media-block",
+      "media-block--left",
+      "media-block--mobile-bottom",
+      "media-block--right",
+      "media-block__content",
+      "media-block__label",
+      "media-block__media",
+      "media-block__text",
+      "media-block__title",
+      "menu",
+      "menu-toggle",
+      "mg-b-lg",
+      "mg-l-lg",
+      "mg-r-md",
+      "mg-t-lg",
+      "mg-t-md",
+      "mg-t-sm",
+      "mg-t-xl",
+      "mg-v-lg",
+      "mg-v-xxl",
+      "mob-mg-v-xl",
+      "mt-2",
+      "news-container",
+      "next",
+      "p1-book",
+      "page-404",
+      "page-404-content",
+      "page-404__text",
+      "page-aside",
+      "page-content-only",
+      "page-single",
+      "page-top",
+      "prev",
+      "project-card",
+      "project-card__content",
+      "project-card__link",
+      "project-card__title",
+      "row",
+      "section-space",
+      "single-content",
+      "slideshare-container",
+      "socials",
+      "socials-footer",
+      "tag",
+      "tags",
+      "text-center",
+      "title-external-link",
+      "txt-c",
+      "vertical-lists",
+      "video-container",
+      "with-aside",
+      "youtube-video-container"
+    ],
+    "ids": [
+      "a-virtualization-revolution",
+      "advisory-board",
+      "archivation-review",
+      "archived-projects",
+      "archiving-an-incubating-project",
+      "attribution",
+      "basic-project-life-cycle",
+      "change-history",
+      "code-of-conduct",
+      "code-security-scanning",
+      "committer-and-other-project-leadership-elections",
+      "committers",
+      "community-decisions-with-funding-and-legal-implications",
+      "community-manager",
+      "conduct-team-members",
+      "conflict-resolution",
+      "contributing-code",
+      "decision-making-conflict-resolution-role-nominations-and-elections",
+      "developpers",
+      "did-you-know",
+      "downloads",
+      "elections",
+      "embargo-and-disclosure-schedule",
+      "escalation",
+      "exceptional-circumstances",
+      "expressing-agreement-and-disagreement",
+      "forming-a-project",
+      "general",
+      "goals",
+      "graduation-review",
+      "handling-of-embargoed-information",
+      "how-to-join",
+      "incubating-a-project",
+      "incubation-projects-without-mentor",
+      "incubation-projects-without-project-lead",
+      "informal-votes-or-surveys",
+      "information-sharing-amongst-predisclosure-list-members",
+      "introduction",
+      "join-the-conversation",
+      "lazy-consensus--lazy-voting",
+      "leadership-team-decisions",
+      "local-decision-making",
+      "main-responsibilities",
+      "maintainer-elections",
+      "maintainers",
+      "making-contributions",
+      "mature-projects",
+      "mentor",
+      "meritocracy",
+      "mirage-os",
+      "netiquette",
+      "openness",
+      "organizations-on-the-pre-disclosure-list",
+      "our-architecture",
+      "our-pledge",
+      "our-responsibilities",
+      "our-standards",
+      "per-sub-project-governance-specialisation",
+      "pre-disclosure-list",
+      "predisclosure-list-membership-application-process",
+      "principles",
+      "project-governance",
+      "project-lead-elections",
+      "project-leadership-team-and-project-lead",
+      "project-proposal-review",
+      "project-team-roles",
+      "project-wide-decision-making",
+      "projects",
+      "projects-without-functional-project-leadership-team",
+      "reliable-technology-with-a-solid-track-record",
+      "requesting-reviews-reviews-and-voting",
+      "review-then-commit",
+      "scope",
+      "scope-of-this-process",
+      "security-response-team-members",
+      "security-response-team-short-security-team",
+      "specific-process",
+      "sponsor",
+      "sub-projects-and-teams",
+      "submitting-patches-to-the-xen-project-codebase",
+      "supports-multiple-cloud-platforms-cloudstack-openstack",
+      "supports-multiple-guest-operating-systems-linux-windows-netbsd-freebsd",
+      "the-linux-foundation",
+      "trademark-policy",
+      "transparency",
+      "unikraft",
+      "unikraft-and-minios",
+      "usage",
+      "what-is-xapi",
+      "what-to-do-if-you-witness-or-are-subject-to-unacceptable-behavior",
+      "windows-pv-drivers",
+      "xapi",
+      "xcp-ng",
+      "xen-project-advisory-board",
+      "xen-project-hypervisor",
+      "xen-project-matrix",
+      "xen-project-wide-roles"
+    ]
+  }
+}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644 (file)
index 0000000..e9996e9
--- /dev/null
@@ -0,0 +1,11932 @@
+{
+  "name": "xen-project",
+  "version": "1.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "xen-project",
+      "version": "1.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "@storybook/preset-scss": "^1.0.3",
+        "axios": "^1.7.7",
+        "cheerio": "^1.0.0",
+        "functional-lit-element": "^0.2.2",
+        "haunted": "^5.0.0",
+        "remark-gfm": "^4.0.0",
+        "sass": "^1.77.6"
+      },
+      "devDependencies": {
+        "@chromatic-com/storybook": "^1.6.1",
+        "@storybook/addon-essentials": "^8.1.11",
+        "@storybook/addon-links": "^8.1.11",
+        "@storybook/blocks": "^8.1.11",
+        "@storybook/manager-api": "^8.2.1",
+        "@storybook/test": "^8.1.11",
+        "@storybook/theming": "^8.2.1",
+        "@storybook/web-components": "^8.1.11",
+        "@storybook/web-components-vite": "^8.1.11",
+        "lit": "^3.1.4",
+        "prettier": "^3.3.2",
+        "prettier-plugin-go-template": "^0.0.15",
+        "storybook": "^8.1.11",
+        "storybook-addon-sass-postcss": "^0.3.0"
+      }
+    },
+    "node_modules/@adobe/css-tools": {
+      "version": "4.4.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@ampproject/remapping": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.5",
+        "@jridgewell/trace-mapping": "^0.3.24"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@aw-web-design/x-default-browser": {
+      "version": "1.4.126",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "default-browser-id": "3.0.0"
+      },
+      "bin": {
+        "x-default-browser": "bin/x-default-browser.js"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/highlight": "^7.24.7",
+        "picocolors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/compat-data": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/core": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@ampproject/remapping": "^2.2.0",
+        "@babel/code-frame": "^7.24.7",
+        "@babel/generator": "^7.24.7",
+        "@babel/helper-compilation-targets": "^7.24.7",
+        "@babel/helper-module-transforms": "^7.24.7",
+        "@babel/helpers": "^7.24.7",
+        "@babel/parser": "^7.24.7",
+        "@babel/template": "^7.24.7",
+        "@babel/traverse": "^7.24.7",
+        "@babel/types": "^7.24.7",
+        "convert-source-map": "^2.0.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.2.3",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/babel"
+      }
+    },
+    "node_modules/@babel/generator": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.24.7",
+        "@jridgewell/gen-mapping": "^0.3.5",
+        "@jridgewell/trace-mapping": "^0.3.25",
+        "jsesc": "^2.5.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-annotate-as-pure": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/traverse": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.24.7",
+        "@babel/helper-validator-option": "^7.24.7",
+        "browserslist": "^4.22.2",
+        "lru-cache": "^5.1.1",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-create-class-features-plugin": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.24.7",
+        "@babel/helper-environment-visitor": "^7.24.7",
+        "@babel/helper-function-name": "^7.24.7",
+        "@babel/helper-member-expression-to-functions": "^7.24.7",
+        "@babel/helper-optimise-call-expression": "^7.24.7",
+        "@babel/helper-replace-supers": "^7.24.7",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+        "@babel/helper-split-export-declaration": "^7.24.7",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-create-regexp-features-plugin": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.24.7",
+        "regexpu-core": "^5.3.1",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-define-polyfill-provider": {
+      "version": "0.6.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-compilation-targets": "^7.22.6",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "debug": "^4.1.1",
+        "lodash.debounce": "^4.0.8",
+        "resolve": "^1.14.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+      }
+    },
+    "node_modules/@babel/helper-environment-visitor": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-function-name": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/template": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-hoist-variables": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-member-expression-to-functions": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/traverse": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-imports": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/traverse": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-transforms": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.24.7",
+        "@babel/helper-module-imports": "^7.24.7",
+        "@babel/helper-simple-access": "^7.24.7",
+        "@babel/helper-split-export-declaration": "^7.24.7",
+        "@babel/helper-validator-identifier": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-optimise-call-expression": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-plugin-utils": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-remap-async-to-generator": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.24.7",
+        "@babel/helper-environment-visitor": "^7.24.7",
+        "@babel/helper-wrap-function": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-replace-supers": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.24.7",
+        "@babel/helper-member-expression-to-functions": "^7.24.7",
+        "@babel/helper-optimise-call-expression": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-simple-access": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/traverse": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/traverse": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-split-export-declaration": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-string-parser": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-option": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-wrap-function": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-function-name": "^7.24.7",
+        "@babel/template": "^7.24.7",
+        "@babel/traverse": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helpers": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/template": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.24.7",
+        "chalk": "^2.4.2",
+        "js-tokens": "^4.0.0",
+        "picocolors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+        "@babel/plugin-transform-optional-chaining": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.13.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-private-property-in-object": {
+      "version": "7.21.0-placeholder-for-preset-env.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-static-block": {
+      "version": "7.14.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-dynamic-import": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-export-namespace-from": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-flow": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-assertions": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-attributes": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-meta": {
+      "version": "7.10.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-jsx": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-private-property-in-object": {
+      "version": "7.14.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-top-level-await": {
+      "version": "7.14.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-typescript": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+      "version": "7.18.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-arrow-functions": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-async-generator-functions": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/helper-remap-async-to-generator": "^7.24.7",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-async-to-generator": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/helper-remap-async-to-generator": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoping": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-class-properties": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-class-static-block": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.12.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-classes": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.24.7",
+        "@babel/helper-compilation-targets": "^7.24.7",
+        "@babel/helper-environment-visitor": "^7.24.7",
+        "@babel/helper-function-name": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/helper-replace-supers": "^7.24.7",
+        "@babel/helper-split-export-declaration": "^7.24.7",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-computed-properties": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/template": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-destructuring": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-dotall-regex": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-duplicate-keys": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-dynamic-import": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-export-namespace-from": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-flow-strip-types": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/plugin-syntax-flow": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-for-of": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-function-name": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-compilation-targets": "^7.24.7",
+        "@babel/helper-function-name": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-json-strings": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-literals": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-member-expression-literals": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-amd": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-commonjs": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/helper-simple-access": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-systemjs": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-hoist-variables": "^7.24.7",
+        "@babel/helper-module-transforms": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/helper-validator-identifier": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-umd": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-new-target": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-numeric-separator": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-object-rest-spread": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-compilation-targets": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-transform-parameters": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-object-super": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/helper-replace-supers": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-optional-catch-binding": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-optional-chaining": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-parameters": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-private-methods": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-private-property-in-object": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.24.7",
+        "@babel/helper-create-class-features-plugin": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-property-literals": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-regenerator": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "regenerator-transform": "^0.15.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-reserved-words": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-shorthand-properties": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-spread": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-sticky-regex": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-template-literals": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-typeof-symbol": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-typescript": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.24.7",
+        "@babel/helper-create-class-features-plugin": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/plugin-syntax-typescript": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-escapes": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-property-regex": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-regex": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/preset-env": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.24.7",
+        "@babel/helper-compilation-targets": "^7.24.7",
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/helper-validator-option": "^7.24.7",
+        "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7",
+        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7",
+        "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7",
+        "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-class-properties": "^7.12.13",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+        "@babel/plugin-syntax-import-assertions": "^7.24.7",
+        "@babel/plugin-syntax-import-attributes": "^7.24.7",
+        "@babel/plugin-syntax-import-meta": "^7.10.4",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+        "@babel/plugin-syntax-top-level-await": "^7.14.5",
+        "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+        "@babel/plugin-transform-arrow-functions": "^7.24.7",
+        "@babel/plugin-transform-async-generator-functions": "^7.24.7",
+        "@babel/plugin-transform-async-to-generator": "^7.24.7",
+        "@babel/plugin-transform-block-scoped-functions": "^7.24.7",
+        "@babel/plugin-transform-block-scoping": "^7.24.7",
+        "@babel/plugin-transform-class-properties": "^7.24.7",
+        "@babel/plugin-transform-class-static-block": "^7.24.7",
+        "@babel/plugin-transform-classes": "^7.24.7",
+        "@babel/plugin-transform-computed-properties": "^7.24.7",
+        "@babel/plugin-transform-destructuring": "^7.24.7",
+        "@babel/plugin-transform-dotall-regex": "^7.24.7",
+        "@babel/plugin-transform-duplicate-keys": "^7.24.7",
+        "@babel/plugin-transform-dynamic-import": "^7.24.7",
+        "@babel/plugin-transform-exponentiation-operator": "^7.24.7",
+        "@babel/plugin-transform-export-namespace-from": "^7.24.7",
+        "@babel/plugin-transform-for-of": "^7.24.7",
+        "@babel/plugin-transform-function-name": "^7.24.7",
+        "@babel/plugin-transform-json-strings": "^7.24.7",
+        "@babel/plugin-transform-literals": "^7.24.7",
+        "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
+        "@babel/plugin-transform-member-expression-literals": "^7.24.7",
+        "@babel/plugin-transform-modules-amd": "^7.24.7",
+        "@babel/plugin-transform-modules-commonjs": "^7.24.7",
+        "@babel/plugin-transform-modules-systemjs": "^7.24.7",
+        "@babel/plugin-transform-modules-umd": "^7.24.7",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
+        "@babel/plugin-transform-new-target": "^7.24.7",
+        "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
+        "@babel/plugin-transform-numeric-separator": "^7.24.7",
+        "@babel/plugin-transform-object-rest-spread": "^7.24.7",
+        "@babel/plugin-transform-object-super": "^7.24.7",
+        "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
+        "@babel/plugin-transform-optional-chaining": "^7.24.7",
+        "@babel/plugin-transform-parameters": "^7.24.7",
+        "@babel/plugin-transform-private-methods": "^7.24.7",
+        "@babel/plugin-transform-private-property-in-object": "^7.24.7",
+        "@babel/plugin-transform-property-literals": "^7.24.7",
+        "@babel/plugin-transform-regenerator": "^7.24.7",
+        "@babel/plugin-transform-reserved-words": "^7.24.7",
+        "@babel/plugin-transform-shorthand-properties": "^7.24.7",
+        "@babel/plugin-transform-spread": "^7.24.7",
+        "@babel/plugin-transform-sticky-regex": "^7.24.7",
+        "@babel/plugin-transform-template-literals": "^7.24.7",
+        "@babel/plugin-transform-typeof-symbol": "^7.24.7",
+        "@babel/plugin-transform-unicode-escapes": "^7.24.7",
+        "@babel/plugin-transform-unicode-property-regex": "^7.24.7",
+        "@babel/plugin-transform-unicode-regex": "^7.24.7",
+        "@babel/plugin-transform-unicode-sets-regex": "^7.24.7",
+        "@babel/preset-modules": "0.1.6-no-external-plugins",
+        "babel-plugin-polyfill-corejs2": "^0.4.10",
+        "babel-plugin-polyfill-corejs3": "^0.10.4",
+        "babel-plugin-polyfill-regenerator": "^0.6.1",
+        "core-js-compat": "^3.31.0",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/preset-flow": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/helper-validator-option": "^7.24.7",
+        "@babel/plugin-transform-flow-strip-types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/preset-modules": {
+      "version": "0.1.6-no-external-plugins",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/types": "^7.4.4",
+        "esutils": "^2.0.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+      }
+    },
+    "node_modules/@babel/preset-typescript": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7",
+        "@babel/helper-validator-option": "^7.24.7",
+        "@babel/plugin-syntax-jsx": "^7.24.7",
+        "@babel/plugin-transform-modules-commonjs": "^7.24.7",
+        "@babel/plugin-transform-typescript": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/register": {
+      "version": "7.24.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "clone-deep": "^4.0.1",
+        "find-cache-dir": "^2.0.0",
+        "make-dir": "^2.1.0",
+        "pirates": "^4.0.6",
+        "source-map-support": "^0.5.16"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/register/node_modules/find-cache-dir": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "make-dir": "^2.0.0",
+        "pkg-dir": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@babel/register/node_modules/find-up": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@babel/register/node_modules/locate-path": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@babel/register/node_modules/make-dir": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@babel/register/node_modules/p-limit": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@babel/register/node_modules/p-locate": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@babel/register/node_modules/path-exists": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/register/node_modules/pkg-dir": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@babel/register/node_modules/semver": {
+      "version": "5.7.2",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/@babel/regjsgen": {
+      "version": "0.8.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@babel/runtime": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "regenerator-runtime": "^0.14.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/template": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.24.7",
+        "@babel/parser": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.24.7",
+        "@babel/generator": "^7.24.7",
+        "@babel/helper-environment-visitor": "^7.24.7",
+        "@babel/helper-function-name": "^7.24.7",
+        "@babel/helper-hoist-variables": "^7.24.7",
+        "@babel/helper-split-export-declaration": "^7.24.7",
+        "@babel/parser": "^7.24.7",
+        "@babel/types": "^7.24.7",
+        "debug": "^4.3.1",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.24.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-string-parser": "^7.24.7",
+        "@babel/helper-validator-identifier": "^7.24.7",
+        "to-fast-properties": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@chromatic-com/storybook": {
+      "version": "1.6.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "chromatic": "^11.4.0",
+        "filesize": "^10.0.12",
+        "jsonfile": "^6.1.0",
+        "react-confetti": "^6.1.0",
+        "strip-ansi": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=16.0.0",
+        "yarn": ">=1.22.18"
+      }
+    },
+    "node_modules/@colors/colors": {
+      "version": "1.5.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=0.1.90"
+      }
+    },
+    "node_modules/@discoveryjs/json-ext": {
+      "version": "0.5.7",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "react": ">=16.8.0"
+      }
+    },
+    "node_modules/@esbuild/darwin-arm64": {
+      "version": "0.20.2",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@fal-works/esbuild-plugin-global-externals": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@isaacs/cliui": {
+      "version": "8.0.2",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "string-width": "^5.1.2",
+        "string-width-cjs": "npm:string-width@^4.2.0",
+        "strip-ansi": "^7.0.1",
+        "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+        "wrap-ansi": "^8.1.0",
+        "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+      "version": "9.2.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@isaacs/cliui/node_modules/string-width": {
+      "version": "5.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "eastasianwidth": "^0.2.0",
+        "emoji-regex": "^9.2.2",
+        "strip-ansi": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@jest/schemas": {
+      "version": "29.6.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@sinclair/typebox": "^0.27.8"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.5",
+      "license": "MIT",
+      "dependencies": {
+        "@jridgewell/set-array": "^1.2.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.24"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/set-array": {
+      "version": "1.2.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/source-map": {
+      "version": "0.3.6",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.5",
+        "@jridgewell/trace-mapping": "^0.3.25"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "license": "MIT"
+    },
+    "node_modules/@jridgewell/trace-mapping": {
+      "version": "0.3.25",
+      "license": "MIT",
+      "dependencies": {
+        "@jridgewell/resolve-uri": "^3.1.0",
+        "@jridgewell/sourcemap-codec": "^1.4.14"
+      }
+    },
+    "node_modules/@lit-labs/ssr-dom-shim": {
+      "version": "1.2.0",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@lit/reactive-element": {
+      "version": "2.0.4",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@lit-labs/ssr-dom-shim": "^1.2.0"
+      }
+    },
+    "node_modules/@mdx-js/react": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdx": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      },
+      "peerDependencies": {
+        "@types/react": ">=16",
+        "react": ">=16"
+      }
+    },
+    "node_modules/@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@pkgjs/parseargs": {
+      "version": "0.11.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/@radix-ui/primitive": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@radix-ui/react-compose-refs": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/react": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-context": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/react": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-dialog": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@radix-ui/primitive": "1.1.0",
+        "@radix-ui/react-compose-refs": "1.1.0",
+        "@radix-ui/react-context": "1.1.0",
+        "@radix-ui/react-dismissable-layer": "1.1.0",
+        "@radix-ui/react-focus-guards": "1.1.0",
+        "@radix-ui/react-focus-scope": "1.1.0",
+        "@radix-ui/react-id": "1.1.0",
+        "@radix-ui/react-portal": "1.1.1",
+        "@radix-ui/react-presence": "1.1.0",
+        "@radix-ui/react-primitive": "2.0.0",
+        "@radix-ui/react-slot": "1.1.0",
+        "@radix-ui/react-use-controllable-state": "1.1.0",
+        "aria-hidden": "^1.1.1",
+        "react-remove-scroll": "2.5.7"
+      },
+      "peerDependencies": {
+        "@types/react": "*",
+        "@types/react-dom": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+        "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        },
+        "@types/react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-dismissable-layer": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@radix-ui/primitive": "1.1.0",
+        "@radix-ui/react-compose-refs": "1.1.0",
+        "@radix-ui/react-primitive": "2.0.0",
+        "@radix-ui/react-use-callback-ref": "1.1.0",
+        "@radix-ui/react-use-escape-keydown": "1.1.0"
+      },
+      "peerDependencies": {
+        "@types/react": "*",
+        "@types/react-dom": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+        "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        },
+        "@types/react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-focus-guards": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/react": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-focus-scope": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@radix-ui/react-compose-refs": "1.1.0",
+        "@radix-ui/react-primitive": "2.0.0",
+        "@radix-ui/react-use-callback-ref": "1.1.0"
+      },
+      "peerDependencies": {
+        "@types/react": "*",
+        "@types/react-dom": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+        "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        },
+        "@types/react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-id": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@radix-ui/react-use-layout-effect": "1.1.0"
+      },
+      "peerDependencies": {
+        "@types/react": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-portal": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@radix-ui/react-primitive": "2.0.0",
+        "@radix-ui/react-use-layout-effect": "1.1.0"
+      },
+      "peerDependencies": {
+        "@types/react": "*",
+        "@types/react-dom": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+        "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        },
+        "@types/react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-presence": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@radix-ui/react-compose-refs": "1.1.0",
+        "@radix-ui/react-use-layout-effect": "1.1.0"
+      },
+      "peerDependencies": {
+        "@types/react": "*",
+        "@types/react-dom": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+        "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        },
+        "@types/react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-primitive": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@radix-ui/react-slot": "1.1.0"
+      },
+      "peerDependencies": {
+        "@types/react": "*",
+        "@types/react-dom": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+        "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        },
+        "@types/react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-slot": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@radix-ui/react-compose-refs": "1.1.0"
+      },
+      "peerDependencies": {
+        "@types/react": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-use-callback-ref": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/react": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-use-controllable-state": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@radix-ui/react-use-callback-ref": "1.1.0"
+      },
+      "peerDependencies": {
+        "@types/react": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-use-escape-keydown": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@radix-ui/react-use-callback-ref": "1.1.0"
+      },
+      "peerDependencies": {
+        "@types/react": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@radix-ui/react-use-layout-effect": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/react": "*",
+        "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@rollup/rollup-darwin-arm64": {
+      "version": "4.18.0",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "peer": true
+    },
+    "node_modules/@sinclair/typebox": {
+      "version": "0.27.8",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@sindresorhus/merge-streams": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@storybook/addon-actions": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/core-events": "8.1.11",
+        "@storybook/global": "^5.0.0",
+        "@types/uuid": "^9.0.1",
+        "dequal": "^2.0.2",
+        "polished": "^4.2.2",
+        "uuid": "^9.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/addon-backgrounds": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/global": "^5.0.0",
+        "memoizerific": "^1.11.3",
+        "ts-dedent": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/addon-controls": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/blocks": "8.1.11",
+        "dequal": "^2.0.2",
+        "lodash": "^4.17.21",
+        "ts-dedent": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/addon-docs": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.24.4",
+        "@mdx-js/react": "^3.0.0",
+        "@storybook/blocks": "8.1.11",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/components": "8.1.11",
+        "@storybook/csf-plugin": "8.1.11",
+        "@storybook/csf-tools": "8.1.11",
+        "@storybook/global": "^5.0.0",
+        "@storybook/node-logger": "8.1.11",
+        "@storybook/preview-api": "8.1.11",
+        "@storybook/react-dom-shim": "8.1.11",
+        "@storybook/theming": "8.1.11",
+        "@storybook/types": "8.1.11",
+        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+        "fs-extra": "^11.1.0",
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+        "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
+        "rehype-external-links": "^3.0.0",
+        "rehype-slug": "^6.0.0",
+        "ts-dedent": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/addon-docs/node_modules/@storybook/theming": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/global": "^5.0.0",
+        "memoizerific": "^1.11.3"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+        "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
+      },
+      "peerDependenciesMeta": {
+        "react": {
+          "optional": true
+        },
+        "react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@storybook/addon-essentials": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/addon-actions": "8.1.11",
+        "@storybook/addon-backgrounds": "8.1.11",
+        "@storybook/addon-controls": "8.1.11",
+        "@storybook/addon-docs": "8.1.11",
+        "@storybook/addon-highlight": "8.1.11",
+        "@storybook/addon-measure": "8.1.11",
+        "@storybook/addon-outline": "8.1.11",
+        "@storybook/addon-toolbars": "8.1.11",
+        "@storybook/addon-viewport": "8.1.11",
+        "@storybook/core-common": "8.1.11",
+        "@storybook/manager-api": "8.1.11",
+        "@storybook/node-logger": "8.1.11",
+        "@storybook/preview-api": "8.1.11",
+        "ts-dedent": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/addon-essentials/node_modules/@storybook/manager-api": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/channels": "8.1.11",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/core-events": "8.1.11",
+        "@storybook/csf": "^0.1.7",
+        "@storybook/global": "^5.0.0",
+        "@storybook/icons": "^1.2.5",
+        "@storybook/router": "8.1.11",
+        "@storybook/theming": "8.1.11",
+        "@storybook/types": "8.1.11",
+        "dequal": "^2.0.2",
+        "lodash": "^4.17.21",
+        "memoizerific": "^1.11.3",
+        "store2": "^2.14.2",
+        "telejson": "^7.2.0",
+        "ts-dedent": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/addon-essentials/node_modules/@storybook/theming": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/global": "^5.0.0",
+        "memoizerific": "^1.11.3"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+        "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
+      },
+      "peerDependenciesMeta": {
+        "react": {
+          "optional": true
+        },
+        "react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@storybook/addon-highlight": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/global": "^5.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/addon-links": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/csf": "^0.1.7",
+        "@storybook/global": "^5.0.0",
+        "ts-dedent": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
+      },
+      "peerDependenciesMeta": {
+        "react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@storybook/addon-measure": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/global": "^5.0.0",
+        "tiny-invariant": "^1.3.1"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/addon-outline": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/global": "^5.0.0",
+        "ts-dedent": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/addon-toolbars": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/addon-viewport": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "memoizerific": "^1.11.3"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/blocks": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/channels": "8.1.11",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/components": "8.1.11",
+        "@storybook/core-events": "8.1.11",
+        "@storybook/csf": "^0.1.7",
+        "@storybook/docs-tools": "8.1.11",
+        "@storybook/global": "^5.0.0",
+        "@storybook/icons": "^1.2.5",
+        "@storybook/manager-api": "8.1.11",
+        "@storybook/preview-api": "8.1.11",
+        "@storybook/theming": "8.1.11",
+        "@storybook/types": "8.1.11",
+        "@types/lodash": "^4.14.167",
+        "color-convert": "^2.0.1",
+        "dequal": "^2.0.2",
+        "lodash": "^4.17.21",
+        "markdown-to-jsx": "7.3.2",
+        "memoizerific": "^1.11.3",
+        "polished": "^4.2.2",
+        "react-colorful": "^5.1.2",
+        "telejson": "^7.2.0",
+        "tocbot": "^4.20.1",
+        "ts-dedent": "^2.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+        "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
+      },
+      "peerDependenciesMeta": {
+        "react": {
+          "optional": true
+        },
+        "react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@storybook/blocks/node_modules/@storybook/manager-api": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/channels": "8.1.11",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/core-events": "8.1.11",
+        "@storybook/csf": "^0.1.7",
+        "@storybook/global": "^5.0.0",
+        "@storybook/icons": "^1.2.5",
+        "@storybook/router": "8.1.11",
+        "@storybook/theming": "8.1.11",
+        "@storybook/types": "8.1.11",
+        "dequal": "^2.0.2",
+        "lodash": "^4.17.21",
+        "memoizerific": "^1.11.3",
+        "store2": "^2.14.2",
+        "telejson": "^7.2.0",
+        "ts-dedent": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/blocks/node_modules/@storybook/theming": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/global": "^5.0.0",
+        "memoizerific": "^1.11.3"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+        "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
+      },
+      "peerDependenciesMeta": {
+        "react": {
+          "optional": true
+        },
+        "react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@storybook/builder-manager": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@fal-works/esbuild-plugin-global-externals": "^2.1.2",
+        "@storybook/core-common": "8.1.11",
+        "@storybook/manager": "8.1.11",
+        "@storybook/node-logger": "8.1.11",
+        "@types/ejs": "^3.1.1",
+        "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10",
+        "browser-assert": "^1.2.1",
+        "ejs": "^3.1.10",
+        "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0",
+        "esbuild-plugin-alias": "^0.2.1",
+        "express": "^4.17.3",
+        "fs-extra": "^11.1.0",
+        "process": "^0.11.10",
+        "util": "^0.12.4"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/builder-vite": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/channels": "8.1.11",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/core-common": "8.1.11",
+        "@storybook/core-events": "8.1.11",
+        "@storybook/csf-plugin": "8.1.11",
+        "@storybook/node-logger": "8.1.11",
+        "@storybook/preview": "8.1.11",
+        "@storybook/preview-api": "8.1.11",
+        "@storybook/types": "8.1.11",
+        "@types/find-cache-dir": "^3.2.1",
+        "browser-assert": "^1.2.1",
+        "es-module-lexer": "^1.5.0",
+        "express": "^4.17.3",
+        "find-cache-dir": "^3.0.0",
+        "fs-extra": "^11.1.0",
+        "magic-string": "^0.30.0",
+        "ts-dedent": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "@preact/preset-vite": "*",
+        "typescript": ">= 4.3.x",
+        "vite": "^4.0.0 || ^5.0.0",
+        "vite-plugin-glimmerx": "*"
+      },
+      "peerDependenciesMeta": {
+        "@preact/preset-vite": {
+          "optional": true
+        },
+        "typescript": {
+          "optional": true
+        },
+        "vite-plugin-glimmerx": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@storybook/channels": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/core-events": "8.1.11",
+        "@storybook/global": "^5.0.0",
+        "telejson": "^7.2.0",
+        "tiny-invariant": "^1.3.1"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/client-logger": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/global": "^5.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/codemod": {
+      "version": "8.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.24.4",
+        "@babel/preset-env": "^7.24.4",
+        "@babel/types": "^7.24.0",
+        "@storybook/core": "8.2.1",
+        "@storybook/csf": "0.1.11",
+        "@types/cross-spawn": "^6.0.2",
+        "cross-spawn": "^7.0.3",
+        "globby": "^14.0.1",
+        "jscodeshift": "^0.15.1",
+        "lodash": "^4.17.21",
+        "prettier": "^3.1.1",
+        "recast": "^0.23.5",
+        "tiny-invariant": "^1.3.1"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/components": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@radix-ui/react-dialog": "^1.0.5",
+        "@radix-ui/react-slot": "^1.0.2",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/csf": "^0.1.7",
+        "@storybook/global": "^5.0.0",
+        "@storybook/icons": "^1.2.5",
+        "@storybook/theming": "8.1.11",
+        "@storybook/types": "8.1.11",
+        "memoizerific": "^1.11.3",
+        "util-deprecate": "^1.0.2"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+        "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
+      }
+    },
+    "node_modules/@storybook/components/node_modules/@storybook/theming": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/global": "^5.0.0",
+        "memoizerific": "^1.11.3"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+        "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
+      },
+      "peerDependenciesMeta": {
+        "react": {
+          "optional": true
+        },
+        "react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@storybook/core": {
+      "version": "8.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/csf": "0.1.11",
+        "@types/express": "^4.17.21",
+        "@types/node": "^18.0.0",
+        "browser-assert": "^1.2.1",
+        "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0",
+        "esbuild-register": "^3.5.0",
+        "express": "^4.19.2",
+        "process": "^0.11.10",
+        "recast": "^0.23.5",
+        "util": "^0.12.4",
+        "ws": "^8.2.3"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/core-common": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/core-events": "8.1.11",
+        "@storybook/csf-tools": "8.1.11",
+        "@storybook/node-logger": "8.1.11",
+        "@storybook/types": "8.1.11",
+        "@yarnpkg/fslib": "2.10.3",
+        "@yarnpkg/libzip": "2.3.0",
+        "chalk": "^4.1.0",
+        "cross-spawn": "^7.0.3",
+        "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0",
+        "esbuild-register": "^3.5.0",
+        "execa": "^5.0.0",
+        "file-system-cache": "2.3.0",
+        "find-cache-dir": "^3.0.0",
+        "find-up": "^5.0.0",
+        "fs-extra": "^11.1.0",
+        "glob": "^10.0.0",
+        "handlebars": "^4.7.7",
+        "lazy-universal-dotenv": "^4.0.0",
+        "node-fetch": "^2.0.0",
+        "picomatch": "^2.3.0",
+        "pkg-dir": "^5.0.0",
+        "prettier-fallback": "npm:prettier@^3",
+        "pretty-hrtime": "^1.0.3",
+        "resolve-from": "^5.0.0",
+        "semver": "^7.3.7",
+        "tempy": "^3.1.0",
+        "tiny-invariant": "^1.3.1",
+        "ts-dedent": "^2.0.0",
+        "util": "^0.12.4"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "prettier": "^2 || ^3"
+      },
+      "peerDependenciesMeta": {
+        "prettier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@storybook/core-common/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/@storybook/core-common/node_modules/chalk": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/@storybook/core-common/node_modules/has-flag": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@storybook/core-common/node_modules/semver": {
+      "version": "7.6.2",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@storybook/core-common/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@storybook/core-events": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/csf": "^0.1.7",
+        "ts-dedent": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/core-server": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@aw-web-design/x-default-browser": "1.4.126",
+        "@babel/core": "^7.24.4",
+        "@babel/parser": "^7.24.4",
+        "@discoveryjs/json-ext": "^0.5.3",
+        "@storybook/builder-manager": "8.1.11",
+        "@storybook/channels": "8.1.11",
+        "@storybook/core-common": "8.1.11",
+        "@storybook/core-events": "8.1.11",
+        "@storybook/csf": "^0.1.7",
+        "@storybook/csf-tools": "8.1.11",
+        "@storybook/docs-mdx": "3.1.0-next.0",
+        "@storybook/global": "^5.0.0",
+        "@storybook/manager": "8.1.11",
+        "@storybook/manager-api": "8.1.11",
+        "@storybook/node-logger": "8.1.11",
+        "@storybook/preview-api": "8.1.11",
+        "@storybook/telemetry": "8.1.11",
+        "@storybook/types": "8.1.11",
+        "@types/detect-port": "^1.3.0",
+        "@types/diff": "^5.0.9",
+        "@types/node": "^18.0.0",
+        "@types/pretty-hrtime": "^1.0.0",
+        "@types/semver": "^7.3.4",
+        "better-opn": "^3.0.2",
+        "chalk": "^4.1.0",
+        "cli-table3": "^0.6.1",
+        "compression": "^1.7.4",
+        "detect-port": "^1.3.0",
+        "diff": "^5.2.0",
+        "express": "^4.17.3",
+        "fs-extra": "^11.1.0",
+        "globby": "^14.0.1",
+        "lodash": "^4.17.21",
+        "open": "^8.4.0",
+        "pretty-hrtime": "^1.0.3",
+        "prompts": "^2.4.0",
+        "read-pkg-up": "^7.0.1",
+        "semver": "^7.3.7",
+        "telejson": "^7.2.0",
+        "tiny-invariant": "^1.3.1",
+        "ts-dedent": "^2.0.0",
+        "util": "^0.12.4",
+        "util-deprecate": "^1.0.2",
+        "watchpack": "^2.2.0",
+        "ws": "^8.2.3"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/core-server/node_modules/@storybook/manager-api": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/channels": "8.1.11",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/core-events": "8.1.11",
+        "@storybook/csf": "^0.1.7",
+        "@storybook/global": "^5.0.0",
+        "@storybook/icons": "^1.2.5",
+        "@storybook/router": "8.1.11",
+        "@storybook/theming": "8.1.11",
+        "@storybook/types": "8.1.11",
+        "dequal": "^2.0.2",
+        "lodash": "^4.17.21",
+        "memoizerific": "^1.11.3",
+        "store2": "^2.14.2",
+        "telejson": "^7.2.0",
+        "ts-dedent": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/core-server/node_modules/@storybook/theming": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/global": "^5.0.0",
+        "memoizerific": "^1.11.3"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+        "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
+      },
+      "peerDependenciesMeta": {
+        "react": {
+          "optional": true
+        },
+        "react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@storybook/core-server/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/@storybook/core-server/node_modules/chalk": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/@storybook/core-server/node_modules/has-flag": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@storybook/core-server/node_modules/semver": {
+      "version": "7.6.2",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@storybook/core-server/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@storybook/csf": {
+      "version": "0.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "type-fest": "^2.19.0"
+      }
+    },
+    "node_modules/@storybook/csf-plugin": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/csf-tools": "8.1.11",
+        "unplugin": "^1.3.1"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/csf-tools": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/generator": "^7.24.4",
+        "@babel/parser": "^7.24.4",
+        "@babel/traverse": "^7.24.1",
+        "@babel/types": "^7.24.0",
+        "@storybook/csf": "^0.1.7",
+        "@storybook/types": "8.1.11",
+        "fs-extra": "^11.1.0",
+        "recast": "^0.23.5",
+        "ts-dedent": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/docs-mdx": {
+      "version": "3.1.0-next.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@storybook/docs-tools": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/core-common": "8.1.11",
+        "@storybook/core-events": "8.1.11",
+        "@storybook/preview-api": "8.1.11",
+        "@storybook/types": "8.1.11",
+        "@types/doctrine": "^0.0.3",
+        "assert": "^2.1.0",
+        "doctrine": "^3.0.0",
+        "lodash": "^4.17.21"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/global": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@storybook/icons": {
+      "version": "1.2.9",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+        "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+      }
+    },
+    "node_modules/@storybook/instrumenter": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/channels": "8.1.11",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/core-events": "8.1.11",
+        "@storybook/global": "^5.0.0",
+        "@storybook/preview-api": "8.1.11",
+        "@vitest/utils": "^1.3.1",
+        "util": "^0.12.4"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/manager": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/manager-api": {
+      "version": "8.2.1",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "storybook": "^8.2.1"
+      }
+    },
+    "node_modules/@storybook/node-logger": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/preset-scss": {
+      "version": "1.0.3",
+      "license": "MIT",
+      "peerDependencies": {
+        "css-loader": "*",
+        "sass-loader": "*",
+        "style-loader": "*"
+      }
+    },
+    "node_modules/@storybook/preview": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/preview-api": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/channels": "8.1.11",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/core-events": "8.1.11",
+        "@storybook/csf": "^0.1.7",
+        "@storybook/global": "^5.0.0",
+        "@storybook/types": "8.1.11",
+        "@types/qs": "^6.9.5",
+        "dequal": "^2.0.2",
+        "lodash": "^4.17.21",
+        "memoizerific": "^1.11.3",
+        "qs": "^6.10.0",
+        "tiny-invariant": "^1.3.1",
+        "ts-dedent": "^2.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/react-dom-shim": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+        "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
+      }
+    },
+    "node_modules/@storybook/router": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/client-logger": "8.1.11",
+        "memoizerific": "^1.11.3",
+        "qs": "^6.10.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/telemetry": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/core-common": "8.1.11",
+        "@storybook/csf-tools": "8.1.11",
+        "chalk": "^4.1.0",
+        "detect-package-manager": "^2.0.1",
+        "fetch-retry": "^5.0.2",
+        "fs-extra": "^11.1.0",
+        "read-pkg-up": "^7.0.1"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/telemetry/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/@storybook/telemetry/node_modules/chalk": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/@storybook/telemetry/node_modules/has-flag": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@storybook/telemetry/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@storybook/test": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/core-events": "8.1.11",
+        "@storybook/instrumenter": "8.1.11",
+        "@storybook/preview-api": "8.1.11",
+        "@testing-library/dom": "10.1.0",
+        "@testing-library/jest-dom": "6.4.5",
+        "@testing-library/user-event": "14.5.2",
+        "@vitest/expect": "1.6.0",
+        "@vitest/spy": "1.6.0",
+        "util": "^0.12.4"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/theming": {
+      "version": "8.2.1",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "storybook": "^8.2.1"
+      }
+    },
+    "node_modules/@storybook/types": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/channels": "8.1.11",
+        "@types/express": "^4.7.0",
+        "file-system-cache": "2.3.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/web-components": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/docs-tools": "8.1.11",
+        "@storybook/global": "^5.0.0",
+        "@storybook/manager-api": "8.1.11",
+        "@storybook/preview-api": "8.1.11",
+        "@storybook/types": "8.1.11",
+        "tiny-invariant": "^1.3.1",
+        "ts-dedent": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "lit": "^2.0.0 || ^3.0.0"
+      }
+    },
+    "node_modules/@storybook/web-components-vite": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/builder-vite": "8.1.11",
+        "@storybook/core-server": "8.1.11",
+        "@storybook/node-logger": "8.1.11",
+        "@storybook/types": "8.1.11",
+        "@storybook/web-components": "8.1.11",
+        "magic-string": "^0.30.0"
+      },
+      "engines": {
+        "node": ">=18.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/web-components/node_modules/@storybook/manager-api": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/channels": "8.1.11",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/core-events": "8.1.11",
+        "@storybook/csf": "^0.1.7",
+        "@storybook/global": "^5.0.0",
+        "@storybook/icons": "^1.2.5",
+        "@storybook/router": "8.1.11",
+        "@storybook/theming": "8.1.11",
+        "@storybook/types": "8.1.11",
+        "dequal": "^2.0.2",
+        "lodash": "^4.17.21",
+        "memoizerific": "^1.11.3",
+        "store2": "^2.14.2",
+        "telejson": "^7.2.0",
+        "ts-dedent": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/@storybook/web-components/node_modules/@storybook/theming": {
+      "version": "8.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+        "@storybook/client-logger": "8.1.11",
+        "@storybook/global": "^5.0.0",
+        "memoizerific": "^1.11.3"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+        "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
+      },
+      "peerDependenciesMeta": {
+        "react": {
+          "optional": true
+        },
+        "react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@testing-library/dom": {
+      "version": "10.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.10.4",
+        "@babel/runtime": "^7.12.5",
+        "@types/aria-query": "^5.0.1",
+        "aria-query": "5.3.0",
+        "chalk": "^4.1.0",
+        "dom-accessibility-api": "^0.5.9",
+        "lz-string": "^1.5.0",
+        "pretty-format": "^27.0.2"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@testing-library/dom/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/@testing-library/dom/node_modules/chalk": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/@testing-library/dom/node_modules/has-flag": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@testing-library/dom/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@testing-library/jest-dom": {
+      "version": "6.4.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@adobe/css-tools": "^4.3.2",
+        "@babel/runtime": "^7.9.2",
+        "aria-query": "^5.0.0",
+        "chalk": "^3.0.0",
+        "css.escape": "^1.5.1",
+        "dom-accessibility-api": "^0.6.3",
+        "lodash": "^4.17.21",
+        "redent": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=14",
+        "npm": ">=6",
+        "yarn": ">=1"
+      },
+      "peerDependencies": {
+        "@jest/globals": ">= 28",
+        "@types/bun": "latest",
+        "@types/jest": ">= 28",
+        "jest": ">= 28",
+        "vitest": ">= 0.32"
+      },
+      "peerDependenciesMeta": {
+        "@jest/globals": {
+          "optional": true
+        },
+        "@types/bun": {
+          "optional": true
+        },
+        "@types/jest": {
+          "optional": true
+        },
+        "jest": {
+          "optional": true
+        },
+        "vitest": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/@testing-library/jest-dom/node_modules/chalk": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": {
+      "version": "0.6.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@testing-library/jest-dom/node_modules/has-flag": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@testing-library/jest-dom/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@testing-library/user-event": {
+      "version": "14.5.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=12",
+        "npm": ">=6"
+      },
+      "peerDependencies": {
+        "@testing-library/dom": ">=7.21.4"
+      }
+    },
+    "node_modules/@types/aria-query": {
+      "version": "5.0.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/body-parser": {
+      "version": "1.19.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/connect": "*",
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/connect": {
+      "version": "3.4.38",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/cross-spawn": {
+      "version": "6.0.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/debug": {
+      "version": "4.1.12",
+      "license": "MIT",
+      "dependencies": {
+        "@types/ms": "*"
+      }
+    },
+    "node_modules/@types/detect-port": {
+      "version": "1.3.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/diff": {
+      "version": "5.2.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/doctrine": {
+      "version": "0.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/ejs": {
+      "version": "3.1.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/emscripten": {
+      "version": "1.39.13",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/eslint": {
+      "version": "8.56.10",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@types/estree": "*",
+        "@types/json-schema": "*"
+      }
+    },
+    "node_modules/@types/eslint-scope": {
+      "version": "3.7.7",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@types/eslint": "*",
+        "@types/estree": "*"
+      }
+    },
+    "node_modules/@types/estree": {
+      "version": "1.0.5",
+      "license": "MIT"
+    },
+    "node_modules/@types/express": {
+      "version": "4.17.21",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/body-parser": "*",
+        "@types/express-serve-static-core": "^4.17.33",
+        "@types/qs": "*",
+        "@types/serve-static": "*"
+      }
+    },
+    "node_modules/@types/express-serve-static-core": {
+      "version": "4.19.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*",
+        "@types/qs": "*",
+        "@types/range-parser": "*",
+        "@types/send": "*"
+      }
+    },
+    "node_modules/@types/find-cache-dir": {
+      "version": "3.2.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/hast": {
+      "version": "3.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/unist": "*"
+      }
+    },
+    "node_modules/@types/http-errors": {
+      "version": "2.0.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/json-schema": {
+      "version": "7.0.15",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/@types/lodash": {
+      "version": "4.17.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/mdast": {
+      "version": "4.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "@types/unist": "*"
+      }
+    },
+    "node_modules/@types/mdx": {
+      "version": "2.0.13",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/mime": {
+      "version": "1.3.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/ms": {
+      "version": "0.7.34",
+      "license": "MIT"
+    },
+    "node_modules/@types/node": {
+      "version": "18.19.39",
+      "license": "MIT",
+      "dependencies": {
+        "undici-types": "~5.26.4"
+      }
+    },
+    "node_modules/@types/normalize-package-data": {
+      "version": "2.4.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/pretty-hrtime": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/prop-types": {
+      "version": "15.7.12",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/qs": {
+      "version": "6.9.15",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/range-parser": {
+      "version": "1.2.7",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/react": {
+      "version": "18.3.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/prop-types": "*",
+        "csstype": "^3.0.2"
+      }
+    },
+    "node_modules/@types/semver": {
+      "version": "7.5.8",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/send": {
+      "version": "0.17.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/mime": "^1",
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/serve-static": {
+      "version": "1.15.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/http-errors": "*",
+        "@types/node": "*",
+        "@types/send": "*"
+      }
+    },
+    "node_modules/@types/trusted-types": {
+      "version": "2.0.7",
+      "license": "MIT"
+    },
+    "node_modules/@types/unist": {
+      "version": "3.0.2",
+      "license": "MIT"
+    },
+    "node_modules/@types/uuid": {
+      "version": "9.0.8",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@ungap/structured-clone": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/@vitest/expect": {
+      "version": "1.6.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@vitest/spy": "1.6.0",
+        "@vitest/utils": "1.6.0",
+        "chai": "^4.3.10"
+      },
+      "funding": {
+        "url": "https://opencollective.com/vitest"
+      }
+    },
+    "node_modules/@vitest/spy": {
+      "version": "1.6.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "tinyspy": "^2.2.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/vitest"
+      }
+    },
+    "node_modules/@vitest/utils": {
+      "version": "1.6.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "diff-sequences": "^29.6.3",
+        "estree-walker": "^3.0.3",
+        "loupe": "^2.3.7",
+        "pretty-format": "^29.7.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/vitest"
+      }
+    },
+    "node_modules/@vitest/utils/node_modules/ansi-styles": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/@vitest/utils/node_modules/pretty-format": {
+      "version": "29.7.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@jest/schemas": "^29.6.3",
+        "ansi-styles": "^5.0.0",
+        "react-is": "^18.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@vitest/utils/node_modules/react-is": {
+      "version": "18.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@webassemblyjs/ast": {
+      "version": "1.12.1",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/helper-numbers": "1.11.6",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+      }
+    },
+    "node_modules/@webassemblyjs/floating-point-hex-parser": {
+      "version": "1.11.6",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/@webassemblyjs/helper-api-error": {
+      "version": "1.11.6",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/@webassemblyjs/helper-buffer": {
+      "version": "1.12.1",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/@webassemblyjs/helper-numbers": {
+      "version": "1.11.6",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+        "@webassemblyjs/helper-api-error": "1.11.6",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.11.6",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/@webassemblyjs/helper-wasm-section": {
+      "version": "1.12.1",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-buffer": "1.12.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/wasm-gen": "1.12.1"
+      }
+    },
+    "node_modules/@webassemblyjs/ieee754": {
+      "version": "1.11.6",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "node_modules/@webassemblyjs/leb128": {
+      "version": "1.11.6",
+      "license": "Apache-2.0",
+      "peer": true,
+      "dependencies": {
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@webassemblyjs/utf8": {
+      "version": "1.11.6",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/@webassemblyjs/wasm-edit": {
+      "version": "1.12.1",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-buffer": "1.12.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/helper-wasm-section": "1.12.1",
+        "@webassemblyjs/wasm-gen": "1.12.1",
+        "@webassemblyjs/wasm-opt": "1.12.1",
+        "@webassemblyjs/wasm-parser": "1.12.1",
+        "@webassemblyjs/wast-printer": "1.12.1"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-gen": {
+      "version": "1.12.1",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/ieee754": "1.11.6",
+        "@webassemblyjs/leb128": "1.11.6",
+        "@webassemblyjs/utf8": "1.11.6"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-opt": {
+      "version": "1.12.1",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-buffer": "1.12.1",
+        "@webassemblyjs/wasm-gen": "1.12.1",
+        "@webassemblyjs/wasm-parser": "1.12.1"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-parser": {
+      "version": "1.12.1",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@webassemblyjs/helper-api-error": "1.11.6",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+        "@webassemblyjs/ieee754": "1.11.6",
+        "@webassemblyjs/leb128": "1.11.6",
+        "@webassemblyjs/utf8": "1.11.6"
+      }
+    },
+    "node_modules/@webassemblyjs/wast-printer": {
+      "version": "1.12.1",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@webassemblyjs/ast": "1.12.1",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@xtuc/ieee754": {
+      "version": "1.2.0",
+      "license": "BSD-3-Clause",
+      "peer": true
+    },
+    "node_modules/@xtuc/long": {
+      "version": "4.2.2",
+      "license": "Apache-2.0",
+      "peer": true
+    },
+    "node_modules/@yarnpkg/esbuild-plugin-pnp": {
+      "version": "3.0.0-rc.15",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "tslib": "^2.4.0"
+      },
+      "engines": {
+        "node": ">=14.15.0"
+      },
+      "peerDependencies": {
+        "esbuild": ">=0.10.0"
+      }
+    },
+    "node_modules/@yarnpkg/fslib": {
+      "version": "2.10.3",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "@yarnpkg/libzip": "^2.3.0",
+        "tslib": "^1.13.0"
+      },
+      "engines": {
+        "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0"
+      }
+    },
+    "node_modules/@yarnpkg/fslib/node_modules/tslib": {
+      "version": "1.14.1",
+      "dev": true,
+      "license": "0BSD"
+    },
+    "node_modules/@yarnpkg/libzip": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "@types/emscripten": "^1.39.6",
+        "tslib": "^1.13.0"
+      },
+      "engines": {
+        "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0"
+      }
+    },
+    "node_modules/@yarnpkg/libzip/node_modules/tslib": {
+      "version": "1.14.1",
+      "dev": true,
+      "license": "0BSD"
+    },
+    "node_modules/accepts": {
+      "version": "1.3.8",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mime-types": "~2.1.34",
+        "negotiator": "0.6.3"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/acorn": {
+      "version": "8.12.1",
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-import-attributes": {
+      "version": "1.9.5",
+      "license": "MIT",
+      "peer": true,
+      "peerDependencies": {
+        "acorn": "^8"
+      }
+    },
+    "node_modules/address": {
+      "version": "1.2.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "6.12.6",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/ajv-keywords": {
+      "version": "3.5.2",
+      "license": "MIT",
+      "peer": true,
+      "peerDependencies": {
+        "ajv": "^6.9.1"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ansi-styles/node_modules/color-convert": {
+      "version": "1.9.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/ansi-styles/node_modules/color-name": {
+      "version": "1.1.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.3",
+      "license": "ISC",
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/app-root-dir": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/argparse": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "Python-2.0"
+    },
+    "node_modules/aria-hidden": {
+      "version": "1.2.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "tslib": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/aria-query": {
+      "version": "5.3.0",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "dequal": "^2.0.3"
+      }
+    },
+    "node_modules/array-flatten": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/assert": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "is-nan": "^1.3.2",
+        "object-is": "^1.1.5",
+        "object.assign": "^4.1.4",
+        "util": "^0.12.5"
+      }
+    },
+    "node_modules/assertion-error": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/ast-types": {
+      "version": "0.16.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "tslib": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/async": {
+      "version": "3.2.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+      "license": "MIT"
+    },
+    "node_modules/available-typed-arrays": {
+      "version": "1.0.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "possible-typed-array-names": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/axios": {
+      "version": "1.7.7",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
+      "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+      "license": "MIT",
+      "dependencies": {
+        "follow-redirects": "^1.15.6",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
+      }
+    },
+    "node_modules/babel-core": {
+      "version": "7.0.0-bridge.0",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs2": {
+      "version": "0.4.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.22.6",
+        "@babel/helper-define-polyfill-provider": "^0.6.2",
+        "semver": "^6.3.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs3": {
+      "version": "0.10.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.6.1",
+        "core-js-compat": "^3.36.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-regenerator": {
+      "version": "0.6.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.6.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+      }
+    },
+    "node_modules/bail": {
+      "version": "2.0.2",
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/base64-js": {
+      "version": "1.5.1",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/better-opn": {
+      "version": "3.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "open": "^8.0.4"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/big-integer": {
+      "version": "1.6.52",
+      "dev": true,
+      "license": "Unlicense",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/binary-extensions": {
+      "version": "2.3.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/bl": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "buffer": "^5.5.0",
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.4.0"
+      }
+    },
+    "node_modules/body-parser": {
+      "version": "1.20.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bytes": "3.1.2",
+        "content-type": "~1.0.5",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "on-finished": "2.4.1",
+        "qs": "6.11.0",
+        "raw-body": "2.5.2",
+        "type-is": "~1.6.18",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
+    "node_modules/body-parser/node_modules/bytes": {
+      "version": "3.1.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/body-parser/node_modules/debug": {
+      "version": "2.6.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/body-parser/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/body-parser/node_modules/qs": {
+      "version": "6.11.0",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "side-channel": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/boolbase": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+      "license": "ISC"
+    },
+    "node_modules/bplist-parser": {
+      "version": "0.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "big-integer": "^1.6.44"
+      },
+      "engines": {
+        "node": ">= 5.10.0"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "fill-range": "^7.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/browser-assert": {
+      "version": "1.2.1",
+      "dev": true
+    },
+    "node_modules/browserslist": {
+      "version": "4.23.1",
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001629",
+        "electron-to-chromium": "^1.4.796",
+        "node-releases": "^2.0.14",
+        "update-browserslist-db": "^1.0.16"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+      }
+    },
+    "node_modules/buffer": {
+      "version": "5.7.1",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.1.13"
+      }
+    },
+    "node_modules/buffer-from": {
+      "version": "1.1.2",
+      "license": "MIT"
+    },
+    "node_modules/bytes": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.4",
+        "set-function-length": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001640",
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "CC-BY-4.0"
+    },
+    "node_modules/ccount": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/chai": {
+      "version": "4.4.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "assertion-error": "^1.1.0",
+        "check-error": "^1.0.3",
+        "deep-eql": "^4.1.3",
+        "get-func-name": "^2.0.2",
+        "loupe": "^2.3.6",
+        "pathval": "^1.1.1",
+        "type-detect": "^4.0.8"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/chalk": {
+      "version": "2.4.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/character-entities": {
+      "version": "2.0.2",
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/check-error": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "get-func-name": "^2.0.2"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/cheerio": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz",
+      "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==",
+      "license": "MIT",
+      "dependencies": {
+        "cheerio-select": "^2.1.0",
+        "dom-serializer": "^2.0.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.1.0",
+        "encoding-sniffer": "^0.2.0",
+        "htmlparser2": "^9.1.0",
+        "parse5": "^7.1.2",
+        "parse5-htmlparser2-tree-adapter": "^7.0.0",
+        "parse5-parser-stream": "^7.1.2",
+        "undici": "^6.19.5",
+        "whatwg-mimetype": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=18.17"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+      }
+    },
+    "node_modules/cheerio-select": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
+      "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-select": "^5.1.0",
+        "css-what": "^6.1.0",
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/chokidar": {
+      "version": "3.6.0",
+      "license": "MIT",
+      "dependencies": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/chownr": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/chromatic": {
+      "version": "11.5.4",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "chroma": "dist/bin.js",
+        "chromatic": "dist/bin.js",
+        "chromatic-cli": "dist/bin.js"
+      },
+      "peerDependencies": {
+        "@chromatic-com/cypress": "^0.*.* || ^1.0.0",
+        "@chromatic-com/playwright": "^0.*.* || ^1.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@chromatic-com/cypress": {
+          "optional": true
+        },
+        "@chromatic-com/playwright": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/chrome-trace-event": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "peer": true,
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/citty": {
+      "version": "0.1.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "consola": "^3.2.3"
+      }
+    },
+    "node_modules/cli-cursor": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "restore-cursor": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cli-spinners": {
+      "version": "2.9.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/cli-table3": {
+      "version": "0.6.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "string-width": "^4.2.0"
+      },
+      "engines": {
+        "node": "10.* || >= 12.*"
+      },
+      "optionalDependencies": {
+        "@colors/colors": "1.5.0"
+      }
+    },
+    "node_modules/clone": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/clone-deep": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-plain-object": "^2.0.4",
+        "kind-of": "^6.0.2",
+        "shallow-clone": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "license": "MIT",
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/commander": {
+      "version": "6.2.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/commondir": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/compressible": {
+      "version": "2.0.18",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mime-db": ">= 1.43.0 < 2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/compression": {
+      "version": "1.7.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "accepts": "~1.3.5",
+        "bytes": "3.0.0",
+        "compressible": "~2.0.16",
+        "debug": "2.6.9",
+        "on-headers": "~1.0.2",
+        "safe-buffer": "5.1.2",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/compression/node_modules/debug": {
+      "version": "2.6.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/compression/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/confbox": {
+      "version": "0.1.7",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/consola": {
+      "version": "3.2.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "^14.18.0 || >=16.10.0"
+      }
+    },
+    "node_modules/content-disposition": {
+      "version": "0.5.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "5.2.1"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/content-disposition/node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/content-type": {
+      "version": "1.0.5",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/convert-source-map": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/cookie": {
+      "version": "0.6.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie-signature": {
+      "version": "1.0.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/core-js-compat": {
+      "version": "3.37.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.23.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/core-js"
+      }
+    },
+    "node_modules/cosmiconfig": {
+      "version": "9.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "env-paths": "^2.2.1",
+        "import-fresh": "^3.3.0",
+        "js-yaml": "^4.1.0",
+        "parse-json": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/d-fischer"
+      },
+      "peerDependencies": {
+        "typescript": ">=4.9.5"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/cross-spawn": {
+      "version": "7.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/crypto-random-string": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "type-fest": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/crypto-random-string/node_modules/type-fest": {
+      "version": "1.4.0",
+      "dev": true,
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/css-loader": {
+      "version": "7.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "icss-utils": "^5.1.0",
+        "postcss": "^8.4.33",
+        "postcss-modules-extract-imports": "^3.1.0",
+        "postcss-modules-local-by-default": "^4.0.5",
+        "postcss-modules-scope": "^3.2.0",
+        "postcss-modules-values": "^4.0.0",
+        "postcss-value-parser": "^4.2.0",
+        "semver": "^7.5.4"
+      },
+      "engines": {
+        "node": ">= 18.12.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "@rspack/core": "0.x || 1.x",
+        "webpack": "^5.27.0"
+      },
+      "peerDependenciesMeta": {
+        "@rspack/core": {
+          "optional": true
+        },
+        "webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/css-loader/node_modules/semver": {
+      "version": "7.6.2",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/css-select": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+      "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-what": "^6.1.0",
+        "domhandler": "^5.0.2",
+        "domutils": "^3.0.1",
+        "nth-check": "^2.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/css-what": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+      "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">= 6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/css.escape": {
+      "version": "1.5.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/cssesc": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "bin": {
+        "cssesc": "bin/cssesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/csstype": {
+      "version": "3.1.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/debug": {
+      "version": "4.3.5",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/decode-named-character-reference": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "character-entities": "^2.0.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/deep-eql": {
+      "version": "4.1.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "type-detect": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/default-browser-id": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bplist-parser": "^0.2.0",
+        "untildify": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/defaults": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "clone": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/define-data-property": {
+      "version": "1.1.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "gopd": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/define-lazy-prop": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/define-properties": {
+      "version": "1.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "define-data-property": "^1.0.1",
+        "has-property-descriptors": "^1.0.0",
+        "object-keys": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/defu": {
+      "version": "6.1.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/depd": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/dequal": {
+      "version": "2.0.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/destroy": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
+    "node_modules/detect-indent": {
+      "version": "6.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/detect-node-es": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/detect-package-manager": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "execa": "^5.1.1"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/detect-port": {
+      "version": "1.6.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "address": "^1.0.1",
+        "debug": "4"
+      },
+      "bin": {
+        "detect": "bin/detect-port.js",
+        "detect-port": "bin/detect-port.js"
+      },
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/devlop": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "dequal": "^2.0.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/diff": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.3.1"
+      }
+    },
+    "node_modules/diff-sequences": {
+      "version": "29.6.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/doctrine": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/dom-accessibility-api": {
+      "version": "0.5.16",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/dom-serializer": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+      "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+      "license": "MIT",
+      "dependencies": {
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.2",
+        "entities": "^4.2.0"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+      }
+    },
+    "node_modules/domelementtype": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/domhandler": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+      "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "domelementtype": "^2.3.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domhandler?sponsor=1"
+      }
+    },
+    "node_modules/domutils": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+      "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "dom-serializer": "^2.0.0",
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domutils?sponsor=1"
+      }
+    },
+    "node_modules/dotenv": {
+      "version": "16.4.5",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://dotenvx.com"
+      }
+    },
+    "node_modules/dotenv-expand": {
+      "version": "10.0.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/eastasianwidth": {
+      "version": "0.2.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/ee-first": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/ejs": {
+      "version": "3.1.10",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "jake": "^10.8.5"
+      },
+      "bin": {
+        "ejs": "bin/cli.js"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.4.818",
+      "license": "ISC"
+    },
+    "node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/encodeurl": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/encoding-sniffer": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz",
+      "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==",
+      "license": "MIT",
+      "dependencies": {
+        "iconv-lite": "^0.6.3",
+        "whatwg-encoding": "^3.1.1"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
+      }
+    },
+    "node_modules/encoding-sniffer/node_modules/iconv-lite": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/enhanced-resolve": {
+      "version": "5.17.0",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "graceful-fs": "^4.2.4",
+        "tapable": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/entities": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+      "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=0.12"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/env-paths": {
+      "version": "2.2.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/envinfo": {
+      "version": "7.13.0",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "envinfo": "dist/cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/error-ex": {
+      "version": "1.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "node_modules/es-define-property": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "get-intrinsic": "^1.2.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-errors": {
+      "version": "1.3.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-module-lexer": {
+      "version": "1.5.4",
+      "license": "MIT"
+    },
+    "node_modules/esbuild": {
+      "version": "0.20.2",
+      "dev": true,
+      "hasInstallScript": true,
+      "license": "MIT",
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "optionalDependencies": {
+        "@esbuild/aix-ppc64": "0.20.2",
+        "@esbuild/android-arm": "0.20.2",
+        "@esbuild/android-arm64": "0.20.2",
+        "@esbuild/android-x64": "0.20.2",
+        "@esbuild/darwin-arm64": "0.20.2",
+        "@esbuild/darwin-x64": "0.20.2",
+        "@esbuild/freebsd-arm64": "0.20.2",
+        "@esbuild/freebsd-x64": "0.20.2",
+        "@esbuild/linux-arm": "0.20.2",
+        "@esbuild/linux-arm64": "0.20.2",
+        "@esbuild/linux-ia32": "0.20.2",
+        "@esbuild/linux-loong64": "0.20.2",
+        "@esbuild/linux-mips64el": "0.20.2",
+        "@esbuild/linux-ppc64": "0.20.2",
+        "@esbuild/linux-riscv64": "0.20.2",
+        "@esbuild/linux-s390x": "0.20.2",
+        "@esbuild/linux-x64": "0.20.2",
+        "@esbuild/netbsd-x64": "0.20.2",
+        "@esbuild/openbsd-x64": "0.20.2",
+        "@esbuild/sunos-x64": "0.20.2",
+        "@esbuild/win32-arm64": "0.20.2",
+        "@esbuild/win32-ia32": "0.20.2",
+        "@esbuild/win32-x64": "0.20.2"
+      }
+    },
+    "node_modules/esbuild-plugin-alias": {
+      "version": "0.2.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/esbuild-register": {
+      "version": "3.5.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^4.3.4"
+      },
+      "peerDependencies": {
+        "esbuild": ">=0.12 <1"
+      }
+    },
+    "node_modules/escalade": {
+      "version": "3.1.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/eslint-scope": {
+      "version": "5.1.1",
+      "license": "BSD-2-Clause",
+      "peer": true,
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/esrecurse": {
+      "version": "4.3.0",
+      "license": "BSD-2-Clause",
+      "peer": true,
+      "dependencies": {
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esrecurse/node_modules/estraverse": {
+      "version": "5.3.0",
+      "license": "BSD-2-Clause",
+      "peer": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "4.3.0",
+      "license": "BSD-2-Clause",
+      "peer": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estree-walker": {
+      "version": "3.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/estree": "^1.0.0"
+      }
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/etag": {
+      "version": "1.8.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/events": {
+      "version": "3.3.0",
+      "license": "MIT",
+      "peer": true,
+      "engines": {
+        "node": ">=0.8.x"
+      }
+    },
+    "node_modules/execa": {
+      "version": "5.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cross-spawn": "^7.0.3",
+        "get-stream": "^6.0.0",
+        "human-signals": "^2.1.0",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^4.0.1",
+        "onetime": "^5.1.2",
+        "signal-exit": "^3.0.3",
+        "strip-final-newline": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/execa?sponsor=1"
+      }
+    },
+    "node_modules/express": {
+      "version": "4.19.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "accepts": "~1.3.8",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.20.2",
+        "content-disposition": "0.5.4",
+        "content-type": "~1.0.4",
+        "cookie": "0.6.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "1.2.0",
+        "fresh": "0.5.2",
+        "http-errors": "2.0.0",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "2.4.1",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.7",
+        "qs": "6.11.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.2.1",
+        "send": "0.18.0",
+        "serve-static": "1.15.0",
+        "setprototypeof": "1.2.0",
+        "statuses": "2.0.1",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/express/node_modules/debug": {
+      "version": "2.6.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/express/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/express/node_modules/qs": {
+      "version": "6.11.0",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "side-channel": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/express/node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/extend": {
+      "version": "3.0.2",
+      "license": "MIT"
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/fast-glob": {
+      "version": "3.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      },
+      "engines": {
+        "node": ">=8.6.0"
+      }
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/fastq": {
+      "version": "1.17.1",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "node_modules/fd-package-json": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "walk-up-path": "^3.0.1"
+      }
+    },
+    "node_modules/fetch-retry": {
+      "version": "5.0.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/file-system-cache": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "fs-extra": "11.1.1",
+        "ramda": "0.29.0"
+      }
+    },
+    "node_modules/file-system-cache/node_modules/fs-extra": {
+      "version": "11.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=14.14"
+      }
+    },
+    "node_modules/filelist": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "minimatch": "^5.0.1"
+      }
+    },
+    "node_modules/filelist/node_modules/minimatch": {
+      "version": "5.1.6",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/filesize": {
+      "version": "10.1.2",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">= 10.4.0"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/finalhandler": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "2.4.1",
+        "parseurl": "~1.3.3",
+        "statuses": "2.0.1",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/finalhandler/node_modules/debug": {
+      "version": "2.6.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/finalhandler/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/find-cache-dir": {
+      "version": "3.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "make-dir": "^3.0.2",
+        "pkg-dir": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
+      }
+    },
+    "node_modules/find-cache-dir/node_modules/find-up": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/find-cache-dir/node_modules/locate-path": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/find-cache-dir/node_modules/p-limit": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/find-cache-dir/node_modules/p-locate": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/find-cache-dir/node_modules/pkg-dir": {
+      "version": "4.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/find-up": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^6.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/flow-parser": {
+      "version": "0.239.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/follow-redirects": {
+      "version": "1.15.6",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
+      "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/RubenVerborgh"
+        }
+      ],
+      "license": "MIT",
+      "engines": {
+        "node": ">=4.0"
+      },
+      "peerDependenciesMeta": {
+        "debug": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/for-each": {
+      "version": "0.3.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-callable": "^1.1.3"
+      }
+    },
+    "node_modules/foreground-child": {
+      "version": "3.2.1",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "cross-spawn": "^7.0.0",
+        "signal-exit": "^4.0.1"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/foreground-child/node_modules/signal-exit": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "license": "MIT",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/forwarded": {
+      "version": "0.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fresh": {
+      "version": "0.5.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fs-extra": {
+      "version": "11.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=14.14"
+      }
+    },
+    "node_modules/fs-minipass": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "minipass": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/fs-minipass/node_modules/minipass": {
+      "version": "3.3.6",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/fs-minipass/node_modules/yallist": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/functional-lit-element": {
+      "version": "0.2.2",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "lit-element": "^2.2.1"
+      },
+      "peerDependencies": {
+        "lit-element": "2.x"
+      }
+    },
+    "node_modules/functional-lit-element/node_modules/lit-element": {
+      "version": "2.5.1",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "lit-html": "^1.1.1"
+      }
+    },
+    "node_modules/functional-lit-element/node_modules/lit-html": {
+      "version": "1.4.1",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/gensync": {
+      "version": "1.0.0-beta.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/get-func-name": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.2.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "has-proto": "^1.0.1",
+        "has-symbols": "^1.0.3",
+        "hasown": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-nonce": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/get-stream": {
+      "version": "6.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/giget": {
+      "version": "1.2.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "citty": "^0.1.6",
+        "consola": "^3.2.3",
+        "defu": "^6.1.4",
+        "node-fetch-native": "^1.6.3",
+        "nypm": "^0.3.8",
+        "ohash": "^1.1.3",
+        "pathe": "^1.1.2",
+        "tar": "^6.2.0"
+      },
+      "bin": {
+        "giget": "dist/cli.mjs"
+      }
+    },
+    "node_modules/github-slugger": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/glob": {
+      "version": "10.4.3",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "foreground-child": "^3.1.0",
+        "jackspeak": "^3.1.2",
+        "minimatch": "^9.0.4",
+        "minipass": "^7.1.2",
+        "package-json-from-dist": "^1.0.0",
+        "path-scurry": "^1.11.1"
+      },
+      "bin": {
+        "glob": "dist/esm/bin.mjs"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/glob-to-regexp": {
+      "version": "0.4.1",
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/globals": {
+      "version": "11.12.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/globby": {
+      "version": "14.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@sindresorhus/merge-streams": "^2.1.0",
+        "fast-glob": "^3.3.2",
+        "ignore": "^5.2.4",
+        "path-type": "^5.0.0",
+        "slash": "^5.1.0",
+        "unicorn-magic": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/gopd": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "get-intrinsic": "^1.1.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/graceful-fs": {
+      "version": "4.2.11",
+      "license": "ISC"
+    },
+    "node_modules/handlebars": {
+      "version": "4.7.8",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.5",
+        "neo-async": "^2.6.2",
+        "source-map": "^0.6.1",
+        "wordwrap": "^1.0.0"
+      },
+      "bin": {
+        "handlebars": "bin/handlebars"
+      },
+      "engines": {
+        "node": ">=0.4.7"
+      },
+      "optionalDependencies": {
+        "uglify-js": "^3.1.4"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/has-property-descriptors": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "es-define-property": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-proto": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-tostringtag": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-symbols": "^1.0.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/hasown": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "function-bind": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/hast-util-heading-rank": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/hast": "^3.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/hast-util-is-element": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/hast": "^3.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/hast-util-to-string": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/hast": "^3.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/haunted": {
+      "version": "5.0.0",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "lit": "^2.0.0"
+      }
+    },
+    "node_modules/haunted/node_modules/@lit/reactive-element": {
+      "version": "1.6.3",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@lit-labs/ssr-dom-shim": "^1.0.0"
+      }
+    },
+    "node_modules/haunted/node_modules/lit": {
+      "version": "2.8.0",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@lit/reactive-element": "^1.6.0",
+        "lit-element": "^3.3.0",
+        "lit-html": "^2.8.0"
+      }
+    },
+    "node_modules/haunted/node_modules/lit-element": {
+      "version": "3.3.3",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@lit-labs/ssr-dom-shim": "^1.1.0",
+        "@lit/reactive-element": "^1.3.0",
+        "lit-html": "^2.8.0"
+      }
+    },
+    "node_modules/haunted/node_modules/lit-html": {
+      "version": "2.8.0",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@types/trusted-types": "^2.0.2"
+      }
+    },
+    "node_modules/hosted-git-info": {
+      "version": "2.8.9",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/htmlparser2": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz",
+      "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==",
+      "funding": [
+        "https://github.com/fb55/htmlparser2?sponsor=1",
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.1.0",
+        "entities": "^4.5.0"
+      }
+    },
+    "node_modules/http-errors": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "depd": "2.0.0",
+        "inherits": "2.0.4",
+        "setprototypeof": "1.2.0",
+        "statuses": "2.0.1",
+        "toidentifier": "1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/human-signals": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=10.17.0"
+      }
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/icss-utils": {
+      "version": "5.1.0",
+      "license": "ISC",
+      "engines": {
+        "node": "^10 || ^12 || >= 14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/ieee754": {
+      "version": "1.2.1",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/ignore": {
+      "version": "5.3.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/immutable": {
+      "version": "4.3.6",
+      "license": "MIT"
+    },
+    "node_modules/import-fresh": {
+      "version": "3.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/import-fresh/node_modules/resolve-from": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/indent-string": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/invariant": {
+      "version": "2.2.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "loose-envify": "^1.0.0"
+      }
+    },
+    "node_modules/ipaddr.js": {
+      "version": "1.9.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-absolute-url": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-arguments": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-arrayish": {
+      "version": "0.2.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-callable": {
+      "version": "1.2.7",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-core-module": {
+      "version": "2.14.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "hasown": "^2.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-docker": {
+      "version": "2.2.1",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "is-docker": "cli.js"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-generator-function": {
+      "version": "1.0.10",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-interactive": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-nan": {
+      "version": "1.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/is-plain-obj": {
+      "version": "4.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-plain-object": {
+      "version": "2.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-stream": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-typed-array": {
+      "version": "1.1.13",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "which-typed-array": "^1.1.14"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-unicode-supported": {
+      "version": "0.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-wsl": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-docker": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/isobject": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/jackspeak": {
+      "version": "3.4.1",
+      "dev": true,
+      "license": "BlueOak-1.0.0",
+      "dependencies": {
+        "@isaacs/cliui": "^8.0.2"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      },
+      "optionalDependencies": {
+        "@pkgjs/parseargs": "^0.11.0"
+      }
+    },
+    "node_modules/jake": {
+      "version": "10.9.1",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "async": "^3.2.3",
+        "chalk": "^4.0.2",
+        "filelist": "^1.0.4",
+        "minimatch": "^3.1.2"
+      },
+      "bin": {
+        "jake": "bin/cli.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jake/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/jake/node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/jake/node_modules/chalk": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/jake/node_modules/has-flag": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jake/node_modules/minimatch": {
+      "version": "3.1.2",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/jake/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-worker": {
+      "version": "27.5.1",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@types/node": "*",
+        "merge-stream": "^2.0.0",
+        "supports-color": "^8.0.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      }
+    },
+    "node_modules/jest-worker/node_modules/has-flag": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "peer": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-worker/node_modules/supports-color": {
+      "version": "8.1.1",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/supports-color?sponsor=1"
+      }
+    },
+    "node_modules/jiti": {
+      "version": "1.21.6",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "jiti": "bin/jiti.js"
+      }
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/js-yaml": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jscodeshift": {
+      "version": "0.15.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.23.0",
+        "@babel/parser": "^7.23.0",
+        "@babel/plugin-transform-class-properties": "^7.22.5",
+        "@babel/plugin-transform-modules-commonjs": "^7.23.0",
+        "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11",
+        "@babel/plugin-transform-optional-chaining": "^7.23.0",
+        "@babel/plugin-transform-private-methods": "^7.22.5",
+        "@babel/preset-flow": "^7.22.15",
+        "@babel/preset-typescript": "^7.23.0",
+        "@babel/register": "^7.22.15",
+        "babel-core": "^7.0.0-bridge.0",
+        "chalk": "^4.1.2",
+        "flow-parser": "0.*",
+        "graceful-fs": "^4.2.4",
+        "micromatch": "^4.0.4",
+        "neo-async": "^2.5.0",
+        "node-dir": "^0.1.17",
+        "recast": "^0.23.3",
+        "temp": "^0.8.4",
+        "write-file-atomic": "^2.3.0"
+      },
+      "bin": {
+        "jscodeshift": "bin/jscodeshift.js"
+      },
+      "peerDependencies": {
+        "@babel/preset-env": "^7.1.6"
+      },
+      "peerDependenciesMeta": {
+        "@babel/preset-env": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jscodeshift/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/jscodeshift/node_modules/chalk": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/jscodeshift/node_modules/has-flag": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jscodeshift/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jsesc": {
+      "version": "2.5.2",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "jsesc": "bin/jsesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "license": "MIT"
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/json5": {
+      "version": "2.2.3",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/jsonfile": {
+      "version": "6.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "universalify": "^2.0.0"
+      },
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "node_modules/kind-of": {
+      "version": "6.0.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/kleur": {
+      "version": "3.0.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/lazy-universal-dotenv": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "app-root-dir": "^1.0.2",
+        "dotenv": "^16.0.0",
+        "dotenv-expand": "^10.0.0"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
+    "node_modules/leven": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/lines-and-columns": {
+      "version": "1.2.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/lit": {
+      "version": "3.1.4",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@lit/reactive-element": "^2.0.4",
+        "lit-element": "^4.0.4",
+        "lit-html": "^3.1.2"
+      }
+    },
+    "node_modules/lit-element": {
+      "version": "4.0.6",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@lit-labs/ssr-dom-shim": "^1.2.0",
+        "@lit/reactive-element": "^2.0.4",
+        "lit-html": "^3.1.2"
+      }
+    },
+    "node_modules/lit-html": {
+      "version": "3.1.4",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@types/trusted-types": "^2.0.2"
+      }
+    },
+    "node_modules/loader-runner": {
+      "version": "4.3.0",
+      "license": "MIT",
+      "peer": true,
+      "engines": {
+        "node": ">=6.11.5"
+      }
+    },
+    "node_modules/locate-path": {
+      "version": "6.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/lodash.debounce": {
+      "version": "4.0.8",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/log-symbols": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^4.1.0",
+        "is-unicode-supported": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/log-symbols/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/log-symbols/node_modules/chalk": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/log-symbols/node_modules/has-flag": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/log-symbols/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/longest-streak": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/loose-envify": {
+      "version": "1.4.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      },
+      "bin": {
+        "loose-envify": "cli.js"
+      }
+    },
+    "node_modules/loupe": {
+      "version": "2.3.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "get-func-name": "^2.0.1"
+      }
+    },
+    "node_modules/lru-cache": {
+      "version": "5.1.1",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "node_modules/lz-string": {
+      "version": "1.5.0",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "lz-string": "bin/bin.js"
+      }
+    },
+    "node_modules/magic-string": {
+      "version": "0.30.10",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.4.15"
+      }
+    },
+    "node_modules/make-dir": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "semver": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/map-or-similar": {
+      "version": "1.5.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/markdown-table": {
+      "version": "3.0.3",
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/markdown-to-jsx": {
+      "version": "7.3.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 10"
+      },
+      "peerDependencies": {
+        "react": ">= 0.14.0"
+      }
+    },
+    "node_modules/mdast-util-find-and-replace": {
+      "version": "3.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdast": "^4.0.0",
+        "escape-string-regexp": "^5.0.0",
+        "unist-util-is": "^6.0.0",
+        "unist-util-visit-parents": "^6.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
+      "version": "5.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/mdast-util-from-markdown": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdast": "^4.0.0",
+        "@types/unist": "^3.0.0",
+        "decode-named-character-reference": "^1.0.0",
+        "devlop": "^1.0.0",
+        "mdast-util-to-string": "^4.0.0",
+        "micromark": "^4.0.0",
+        "micromark-util-decode-numeric-character-reference": "^2.0.0",
+        "micromark-util-decode-string": "^2.0.0",
+        "micromark-util-normalize-identifier": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0",
+        "unist-util-stringify-position": "^4.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/mdast-util-gfm": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "mdast-util-from-markdown": "^2.0.0",
+        "mdast-util-gfm-autolink-literal": "^2.0.0",
+        "mdast-util-gfm-footnote": "^2.0.0",
+        "mdast-util-gfm-strikethrough": "^2.0.0",
+        "mdast-util-gfm-table": "^2.0.0",
+        "mdast-util-gfm-task-list-item": "^2.0.0",
+        "mdast-util-to-markdown": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/mdast-util-gfm-autolink-literal": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdast": "^4.0.0",
+        "ccount": "^2.0.0",
+        "devlop": "^1.0.0",
+        "mdast-util-find-and-replace": "^3.0.0",
+        "micromark-util-character": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/mdast-util-gfm-footnote": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdast": "^4.0.0",
+        "devlop": "^1.1.0",
+        "mdast-util-from-markdown": "^2.0.0",
+        "mdast-util-to-markdown": "^2.0.0",
+        "micromark-util-normalize-identifier": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/mdast-util-gfm-strikethrough": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdast": "^4.0.0",
+        "mdast-util-from-markdown": "^2.0.0",
+        "mdast-util-to-markdown": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/mdast-util-gfm-table": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdast": "^4.0.0",
+        "devlop": "^1.0.0",
+        "markdown-table": "^3.0.0",
+        "mdast-util-from-markdown": "^2.0.0",
+        "mdast-util-to-markdown": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/mdast-util-gfm-task-list-item": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdast": "^4.0.0",
+        "devlop": "^1.0.0",
+        "mdast-util-from-markdown": "^2.0.0",
+        "mdast-util-to-markdown": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/mdast-util-phrasing": {
+      "version": "4.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdast": "^4.0.0",
+        "unist-util-is": "^6.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/mdast-util-to-markdown": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdast": "^4.0.0",
+        "@types/unist": "^3.0.0",
+        "longest-streak": "^3.0.0",
+        "mdast-util-phrasing": "^4.0.0",
+        "mdast-util-to-string": "^4.0.0",
+        "micromark-util-decode-string": "^2.0.0",
+        "unist-util-visit": "^5.0.0",
+        "zwitch": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/mdast-util-to-string": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdast": "^4.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/media-typer": {
+      "version": "0.3.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/memoizerific": {
+      "version": "1.11.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "map-or-similar": "^1.5.0"
+      }
+    },
+    "node_modules/merge-descriptors": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/merge-stream": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/methods": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/micromark": {
+      "version": "4.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "@types/debug": "^4.0.0",
+        "debug": "^4.0.0",
+        "decode-named-character-reference": "^1.0.0",
+        "devlop": "^1.0.0",
+        "micromark-core-commonmark": "^2.0.0",
+        "micromark-factory-space": "^2.0.0",
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-chunked": "^2.0.0",
+        "micromark-util-combine-extensions": "^2.0.0",
+        "micromark-util-decode-numeric-character-reference": "^2.0.0",
+        "micromark-util-encode": "^2.0.0",
+        "micromark-util-normalize-identifier": "^2.0.0",
+        "micromark-util-resolve-all": "^2.0.0",
+        "micromark-util-sanitize-uri": "^2.0.0",
+        "micromark-util-subtokenize": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-core-commonmark": {
+      "version": "2.0.1",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "decode-named-character-reference": "^1.0.0",
+        "devlop": "^1.0.0",
+        "micromark-factory-destination": "^2.0.0",
+        "micromark-factory-label": "^2.0.0",
+        "micromark-factory-space": "^2.0.0",
+        "micromark-factory-title": "^2.0.0",
+        "micromark-factory-whitespace": "^2.0.0",
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-chunked": "^2.0.0",
+        "micromark-util-classify-character": "^2.0.0",
+        "micromark-util-html-tag-name": "^2.0.0",
+        "micromark-util-normalize-identifier": "^2.0.0",
+        "micromark-util-resolve-all": "^2.0.0",
+        "micromark-util-subtokenize": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-extension-gfm": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "micromark-extension-gfm-autolink-literal": "^2.0.0",
+        "micromark-extension-gfm-footnote": "^2.0.0",
+        "micromark-extension-gfm-strikethrough": "^2.0.0",
+        "micromark-extension-gfm-table": "^2.0.0",
+        "micromark-extension-gfm-tagfilter": "^2.0.0",
+        "micromark-extension-gfm-task-list-item": "^2.0.0",
+        "micromark-util-combine-extensions": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/micromark-extension-gfm-autolink-literal": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-sanitize-uri": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/micromark-extension-gfm-footnote": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "devlop": "^1.0.0",
+        "micromark-core-commonmark": "^2.0.0",
+        "micromark-factory-space": "^2.0.0",
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-normalize-identifier": "^2.0.0",
+        "micromark-util-sanitize-uri": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/micromark-extension-gfm-strikethrough": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "devlop": "^1.0.0",
+        "micromark-util-chunked": "^2.0.0",
+        "micromark-util-classify-character": "^2.0.0",
+        "micromark-util-resolve-all": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/micromark-extension-gfm-table": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "devlop": "^1.0.0",
+        "micromark-factory-space": "^2.0.0",
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/micromark-extension-gfm-tagfilter": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "micromark-util-types": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/micromark-extension-gfm-task-list-item": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "devlop": "^1.0.0",
+        "micromark-factory-space": "^2.0.0",
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/micromark-factory-destination": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-factory-label": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "devlop": "^1.0.0",
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-factory-space": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-factory-title": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "micromark-factory-space": "^2.0.0",
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-factory-whitespace": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "micromark-factory-space": "^2.0.0",
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-util-character": {
+      "version": "2.1.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-util-chunked": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "micromark-util-symbol": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-util-classify-character": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-util-combine-extensions": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "micromark-util-chunked": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-util-decode-numeric-character-reference": {
+      "version": "2.0.1",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "micromark-util-symbol": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-util-decode-string": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "decode-named-character-reference": "^1.0.0",
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-decode-numeric-character-reference": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-util-encode": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/micromark-util-html-tag-name": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/micromark-util-normalize-identifier": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "micromark-util-symbol": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-util-resolve-all": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "micromark-util-types": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-util-sanitize-uri": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "micromark-util-character": "^2.0.0",
+        "micromark-util-encode": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-util-subtokenize": {
+      "version": "2.0.1",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "devlop": "^1.0.0",
+        "micromark-util-chunked": "^2.0.0",
+        "micromark-util-symbol": "^2.0.0",
+        "micromark-util-types": "^2.0.0"
+      }
+    },
+    "node_modules/micromark-util-symbol": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/micromark-util-types": {
+      "version": "2.0.0",
+      "funding": [
+        {
+          "type": "GitHub Sponsors",
+          "url": "https://github.com/sponsors/unifiedjs"
+        },
+        {
+          "type": "OpenCollective",
+          "url": "https://opencollective.com/unified"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "braces": "^3.0.3",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/mime": {
+      "version": "1.6.0",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.52.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.35",
+      "license": "MIT",
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/min-indent": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "9.0.5",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.8",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/minipass": {
+      "version": "7.1.2",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      }
+    },
+    "node_modules/minizlib": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "minipass": "^3.0.0",
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/minizlib/node_modules/minipass": {
+      "version": "3.3.6",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/minizlib/node_modules/yallist": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/mkdirp": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/mlly": {
+      "version": "1.7.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "acorn": "^8.11.3",
+        "pathe": "^1.1.2",
+        "pkg-types": "^1.1.1",
+        "ufo": "^1.5.3"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "license": "MIT"
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.7",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/negotiator": {
+      "version": "0.6.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/neo-async": {
+      "version": "2.6.2",
+      "license": "MIT"
+    },
+    "node_modules/node-dir": {
+      "version": "0.1.17",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "minimatch": "^3.0.2"
+      },
+      "engines": {
+        "node": ">= 0.10.5"
+      }
+    },
+    "node_modules/node-dir/node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/node-dir/node_modules/minimatch": {
+      "version": "3.1.2",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/node-fetch": {
+      "version": "2.7.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "whatwg-url": "^5.0.0"
+      },
+      "engines": {
+        "node": "4.x || >=6.0.0"
+      },
+      "peerDependencies": {
+        "encoding": "^0.1.0"
+      },
+      "peerDependenciesMeta": {
+        "encoding": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/node-fetch-native": {
+      "version": "1.6.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/node-releases": {
+      "version": "2.0.14",
+      "license": "MIT"
+    },
+    "node_modules/normalize-package-data": {
+      "version": "2.5.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "node_modules/normalize-package-data/node_modules/semver": {
+      "version": "5.7.2",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npm-run-path": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/nth-check": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/nth-check?sponsor=1"
+      }
+    },
+    "node_modules/nypm": {
+      "version": "0.3.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "citty": "^0.1.6",
+        "consola": "^3.2.3",
+        "execa": "^8.0.1",
+        "pathe": "^1.1.2",
+        "pkg-types": "^1.1.1",
+        "ufo": "^1.5.3"
+      },
+      "bin": {
+        "nypm": "dist/cli.mjs"
+      },
+      "engines": {
+        "node": "^14.16.0 || >=16.10.0"
+      }
+    },
+    "node_modules/nypm/node_modules/execa": {
+      "version": "8.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cross-spawn": "^7.0.3",
+        "get-stream": "^8.0.1",
+        "human-signals": "^5.0.0",
+        "is-stream": "^3.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^5.1.0",
+        "onetime": "^6.0.0",
+        "signal-exit": "^4.1.0",
+        "strip-final-newline": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=16.17"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/execa?sponsor=1"
+      }
+    },
+    "node_modules/nypm/node_modules/get-stream": {
+      "version": "8.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/nypm/node_modules/human-signals": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=16.17.0"
+      }
+    },
+    "node_modules/nypm/node_modules/is-stream": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/nypm/node_modules/mimic-fn": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/nypm/node_modules/npm-run-path": {
+      "version": "5.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^4.0.0"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/nypm/node_modules/onetime": {
+      "version": "6.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mimic-fn": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/nypm/node_modules/path-key": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/nypm/node_modules/signal-exit": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/nypm/node_modules/strip-final-newline": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/object-inspect": {
+      "version": "1.13.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object-is": {
+      "version": "1.1.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object-keys": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object.assign": {
+      "version": "4.1.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.5",
+        "define-properties": "^1.2.1",
+        "has-symbols": "^1.0.3",
+        "object-keys": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/ohash": {
+      "version": "1.1.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/on-finished": {
+      "version": "2.4.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/on-headers": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/onetime": {
+      "version": "5.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/open": {
+      "version": "8.4.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "define-lazy-prop": "^2.0.0",
+        "is-docker": "^2.1.1",
+        "is-wsl": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/ora": {
+      "version": "5.4.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bl": "^4.1.0",
+        "chalk": "^4.1.0",
+        "cli-cursor": "^3.1.0",
+        "cli-spinners": "^2.5.0",
+        "is-interactive": "^1.0.0",
+        "is-unicode-supported": "^0.1.0",
+        "log-symbols": "^4.1.0",
+        "strip-ansi": "^6.0.0",
+        "wcwidth": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/ora/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/ora/node_modules/chalk": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/ora/node_modules/has-flag": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ora/node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ora/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "yocto-queue": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-try": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/package-json-from-dist": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "BlueOak-1.0.0"
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parse-json": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/parse5": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+      "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+      "license": "MIT",
+      "dependencies": {
+        "entities": "^4.4.0"
+      },
+      "funding": {
+        "url": "https://github.com/inikulin/parse5?sponsor=1"
+      }
+    },
+    "node_modules/parse5-htmlparser2-tree-adapter": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
+      "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
+      "license": "MIT",
+      "dependencies": {
+        "domhandler": "^5.0.2",
+        "parse5": "^7.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/inikulin/parse5?sponsor=1"
+      }
+    },
+    "node_modules/parse5-parser-stream": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
+      "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
+      "license": "MIT",
+      "dependencies": {
+        "parse5": "^7.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/inikulin/parse5?sponsor=1"
+      }
+    },
+    "node_modules/parseurl": {
+      "version": "1.3.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-key": {
+      "version": "3.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.7",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/path-scurry": {
+      "version": "1.11.1",
+      "dev": true,
+      "license": "BlueOak-1.0.0",
+      "dependencies": {
+        "lru-cache": "^10.2.0",
+        "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/path-scurry/node_modules/lru-cache": {
+      "version": "10.3.1",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/path-to-regexp": {
+      "version": "0.1.7",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/path-type": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/pathe": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/pathval": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.1",
+      "license": "ISC"
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/pify": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pirates": {
+      "version": "4.0.6",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/pkg-dir": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/pkg-types": {
+      "version": "1.1.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "confbox": "^0.1.7",
+        "mlly": "^1.7.1",
+        "pathe": "^1.1.2"
+      }
+    },
+    "node_modules/polished": {
+      "version": "4.3.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.17.8"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/possible-typed-array-names": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/postcss": {
+      "version": "8.4.39",
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "nanoid": "^3.3.7",
+        "picocolors": "^1.0.1",
+        "source-map-js": "^1.2.0"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/postcss-loader": {
+      "version": "8.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cosmiconfig": "^9.0.0",
+        "jiti": "^1.20.0",
+        "semver": "^7.5.4"
+      },
+      "engines": {
+        "node": ">= 18.12.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "@rspack/core": "0.x || 1.x",
+        "postcss": "^7.0.0 || ^8.0.1",
+        "webpack": "^5.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@rspack/core": {
+          "optional": true
+        },
+        "webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/postcss-loader/node_modules/semver": {
+      "version": "7.6.2",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/postcss-modules-extract-imports": {
+      "version": "3.1.0",
+      "license": "ISC",
+      "engines": {
+        "node": "^10 || ^12 || >= 14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/postcss-modules-local-by-default": {
+      "version": "4.0.5",
+      "license": "MIT",
+      "dependencies": {
+        "icss-utils": "^5.0.0",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.1.0"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >= 14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/postcss-modules-scope": {
+      "version": "3.2.0",
+      "license": "ISC",
+      "dependencies": {
+        "postcss-selector-parser": "^6.0.4"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >= 14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/postcss-modules-values": {
+      "version": "4.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "icss-utils": "^5.0.0"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >= 14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/postcss-selector-parser": {
+      "version": "6.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-value-parser": {
+      "version": "4.2.0",
+      "license": "MIT"
+    },
+    "node_modules/prettier": {
+      "version": "3.3.2",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "prettier": "bin/prettier.cjs"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/prettier/prettier?sponsor=1"
+      }
+    },
+    "node_modules/prettier-fallback": {
+      "name": "prettier",
+      "version": "3.3.2",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "prettier": "bin/prettier.cjs"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/prettier/prettier?sponsor=1"
+      }
+    },
+    "node_modules/prettier-plugin-go-template": {
+      "version": "0.0.15",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ulid": "^2.3.0"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "peerDependencies": {
+        "prettier": "^3.0.0"
+      }
+    },
+    "node_modules/pretty-format": {
+      "version": "27.5.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^5.0.1",
+        "ansi-styles": "^5.0.0",
+        "react-is": "^17.0.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+      }
+    },
+    "node_modules/pretty-format/node_modules/ansi-styles": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/pretty-hrtime": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/process": {
+      "version": "0.11.10",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/prompts": {
+      "version": "2.4.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kleur": "^3.0.3",
+        "sisteransi": "^1.0.5"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/proxy-addr": {
+      "version": "2.0.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+      "license": "MIT"
+    },
+    "node_modules/punycode": {
+      "version": "2.3.1",
+      "license": "MIT",
+      "peer": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/qs": {
+      "version": "6.12.2",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "side-channel": "^1.0.6"
+      },
+      "engines": {
+        "node": ">=0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/queue-microtask": {
+      "version": "1.2.3",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/ramda": {
+      "version": "0.29.0",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/ramda"
+      }
+    },
+    "node_modules/randombytes": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "node_modules/range-parser": {
+      "version": "1.2.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body": {
+      "version": "2.5.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bytes": "3.1.2",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/raw-body/node_modules/bytes": {
+      "version": "3.1.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/react": {
+      "version": "18.3.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "loose-envify": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/react-colorful": {
+      "version": "5.6.1",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "react": ">=16.8.0",
+        "react-dom": ">=16.8.0"
+      }
+    },
+    "node_modules/react-confetti": {
+      "version": "6.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "tween-functions": "^1.2.0"
+      },
+      "engines": {
+        "node": ">=10.18"
+      },
+      "peerDependencies": {
+        "react": "^16.3.0 || ^17.0.1 || ^18.0.0"
+      }
+    },
+    "node_modules/react-dom": {
+      "version": "18.3.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "loose-envify": "^1.1.0",
+        "scheduler": "^0.23.2"
+      },
+      "peerDependencies": {
+        "react": "^18.3.1"
+      }
+    },
+    "node_modules/react-is": {
+      "version": "17.0.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/react-remove-scroll": {
+      "version": "2.5.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "react-remove-scroll-bar": "^2.3.4",
+        "react-style-singleton": "^2.2.1",
+        "tslib": "^2.1.0",
+        "use-callback-ref": "^1.3.0",
+        "use-sidecar": "^1.1.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/react-remove-scroll-bar": {
+      "version": "2.3.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "react-style-singleton": "^2.2.1",
+        "tslib": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/react-style-singleton": {
+      "version": "2.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "get-nonce": "^1.0.0",
+        "invariant": "^2.2.4",
+        "tslib": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/read-pkg": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/read-pkg-up": {
+      "version": "7.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^4.1.0",
+        "read-pkg": "^5.2.0",
+        "type-fest": "^0.8.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/find-up": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/locate-path": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/p-limit": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/p-locate": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/type-fest": {
+      "version": "0.8.1",
+      "dev": true,
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/read-pkg/node_modules/type-fest": {
+      "version": "0.6.0",
+      "dev": true,
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/readable-stream": {
+      "version": "3.6.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "license": "MIT",
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/recast": {
+      "version": "0.23.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ast-types": "^0.16.1",
+        "esprima": "~4.0.0",
+        "source-map": "~0.6.1",
+        "tiny-invariant": "^1.3.3",
+        "tslib": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/redent": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "indent-string": "^4.0.0",
+        "strip-indent": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/regenerate": {
+      "version": "1.4.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/regenerate-unicode-properties": {
+      "version": "10.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "regenerate": "^1.4.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/regenerator-runtime": {
+      "version": "0.14.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/regenerator-transform": {
+      "version": "0.15.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.8.4"
+      }
+    },
+    "node_modules/regexpu-core": {
+      "version": "5.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/regjsgen": "^0.8.0",
+        "regenerate": "^1.4.2",
+        "regenerate-unicode-properties": "^10.1.0",
+        "regjsparser": "^0.9.1",
+        "unicode-match-property-ecmascript": "^2.0.0",
+        "unicode-match-property-value-ecmascript": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/regjsparser": {
+      "version": "0.9.1",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "jsesc": "~0.5.0"
+      },
+      "bin": {
+        "regjsparser": "bin/parser"
+      }
+    },
+    "node_modules/regjsparser/node_modules/jsesc": {
+      "version": "0.5.0",
+      "dev": true,
+      "bin": {
+        "jsesc": "bin/jsesc"
+      }
+    },
+    "node_modules/rehype-external-links": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/hast": "^3.0.0",
+        "@ungap/structured-clone": "^1.0.0",
+        "hast-util-is-element": "^3.0.0",
+        "is-absolute-url": "^4.0.0",
+        "space-separated-tokens": "^2.0.0",
+        "unist-util-visit": "^5.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/rehype-slug": {
+      "version": "6.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/hast": "^3.0.0",
+        "github-slugger": "^2.0.0",
+        "hast-util-heading-rank": "^3.0.0",
+        "hast-util-to-string": "^3.0.0",
+        "unist-util-visit": "^5.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/remark-gfm": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdast": "^4.0.0",
+        "mdast-util-gfm": "^3.0.0",
+        "micromark-extension-gfm": "^3.0.0",
+        "remark-parse": "^11.0.0",
+        "remark-stringify": "^11.0.0",
+        "unified": "^11.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/remark-parse": {
+      "version": "11.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdast": "^4.0.0",
+        "mdast-util-from-markdown": "^2.0.0",
+        "micromark-util-types": "^2.0.0",
+        "unified": "^11.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/remark-stringify": {
+      "version": "11.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mdast": "^4.0.0",
+        "mdast-util-to-markdown": "^2.0.0",
+        "unified": "^11.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/resolve": {
+      "version": "1.22.8",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-core-module": "^2.13.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      },
+      "bin": {
+        "resolve": "bin/resolve"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/restore-cursor": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "onetime": "^5.1.0",
+        "signal-exit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/reusify": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/rimraf": {
+      "version": "2.6.3",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/rimraf/node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/rimraf/node_modules/glob": {
+      "version": "7.2.3",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/rimraf/node_modules/minimatch": {
+      "version": "3.1.2",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/rollup": {
+      "version": "4.18.0",
+      "dev": true,
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@types/estree": "1.0.5"
+      },
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=18.0.0",
+        "npm": ">=8.0.0"
+      },
+      "optionalDependencies": {
+        "@rollup/rollup-android-arm-eabi": "4.18.0",
+        "@rollup/rollup-android-arm64": "4.18.0",
+        "@rollup/rollup-darwin-arm64": "4.18.0",
+        "@rollup/rollup-darwin-x64": "4.18.0",
+        "@rollup/rollup-linux-arm-gnueabihf": "4.18.0",
+        "@rollup/rollup-linux-arm-musleabihf": "4.18.0",
+        "@rollup/rollup-linux-arm64-gnu": "4.18.0",
+        "@rollup/rollup-linux-arm64-musl": "4.18.0",
+        "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0",
+        "@rollup/rollup-linux-riscv64-gnu": "4.18.0",
+        "@rollup/rollup-linux-s390x-gnu": "4.18.0",
+        "@rollup/rollup-linux-x64-gnu": "4.18.0",
+        "@rollup/rollup-linux-x64-musl": "4.18.0",
+        "@rollup/rollup-win32-arm64-msvc": "4.18.0",
+        "@rollup/rollup-win32-ia32-msvc": "4.18.0",
+        "@rollup/rollup-win32-x64-msvc": "4.18.0",
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/run-parallel": {
+      "version": "1.2.0",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.1.2",
+      "license": "MIT"
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "license": "MIT"
+    },
+    "node_modules/sass": {
+      "version": "1.77.6",
+      "license": "MIT",
+      "dependencies": {
+        "chokidar": ">=3.0.0 <4.0.0",
+        "immutable": "^4.0.0",
+        "source-map-js": ">=0.6.2 <2.0.0"
+      },
+      "bin": {
+        "sass": "sass.js"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
+    "node_modules/sass-loader": {
+      "version": "14.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "neo-async": "^2.6.2"
+      },
+      "engines": {
+        "node": ">= 18.12.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "@rspack/core": "0.x || 1.x",
+        "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
+        "sass": "^1.3.0",
+        "sass-embedded": "*",
+        "webpack": "^5.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@rspack/core": {
+          "optional": true
+        },
+        "node-sass": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "sass-embedded": {
+          "optional": true
+        },
+        "webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/scheduler": {
+      "version": "0.23.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "loose-envify": "^1.1.0"
+      }
+    },
+    "node_modules/schema-utils": {
+      "version": "3.3.0",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@types/json-schema": "^7.0.8",
+        "ajv": "^6.12.5",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      }
+    },
+    "node_modules/semver": {
+      "version": "6.3.1",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/send": {
+      "version": "0.18.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "2.0.0",
+        "mime": "1.6.0",
+        "ms": "2.1.3",
+        "on-finished": "2.4.1",
+        "range-parser": "~1.2.1",
+        "statuses": "2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/send/node_modules/debug": {
+      "version": "2.6.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/send/node_modules/debug/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/send/node_modules/ms": {
+      "version": "2.1.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/serialize-javascript": {
+      "version": "6.0.2",
+      "license": "BSD-3-Clause",
+      "peer": true,
+      "dependencies": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "node_modules/serve-static": {
+      "version": "1.15.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.18.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/set-function-length": {
+      "version": "1.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "define-data-property": "^1.1.4",
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.4",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/setprototypeof": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/shallow-clone": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^6.0.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shebang-command": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/side-channel": {
+      "version": "1.0.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "es-errors": "^1.3.0",
+        "get-intrinsic": "^1.2.4",
+        "object-inspect": "^1.13.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.7",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/sisteransi": {
+      "version": "1.0.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/slash": {
+      "version": "5.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=14.16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/source-map": {
+      "version": "0.6.1",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.2.0",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-support": {
+      "version": "0.5.21",
+      "license": "MIT",
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "node_modules/space-separated-tokens": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/spdx-correct": {
+      "version": "3.2.0",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "node_modules/spdx-exceptions": {
+      "version": "2.5.0",
+      "dev": true,
+      "license": "CC-BY-3.0"
+    },
+    "node_modules/spdx-expression-parse": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "node_modules/spdx-license-ids": {
+      "version": "3.0.18",
+      "dev": true,
+      "license": "CC0-1.0"
+    },
+    "node_modules/statuses": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/store2": {
+      "version": "2.14.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/storybook": {
+      "version": "8.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.24.4",
+        "@babel/types": "^7.24.0",
+        "@storybook/codemod": "8.2.1",
+        "@storybook/core": "8.2.1",
+        "@types/semver": "^7.3.4",
+        "@yarnpkg/fslib": "2.10.3",
+        "@yarnpkg/libzip": "2.3.0",
+        "chalk": "^4.1.0",
+        "commander": "^6.2.1",
+        "cross-spawn": "^7.0.3",
+        "detect-indent": "^6.1.0",
+        "envinfo": "^7.7.3",
+        "execa": "^5.0.0",
+        "fd-package-json": "^1.2.0",
+        "find-up": "^5.0.0",
+        "fs-extra": "^11.1.0",
+        "giget": "^1.0.0",
+        "globby": "^14.0.1",
+        "jscodeshift": "^0.15.1",
+        "leven": "^3.1.0",
+        "ora": "^5.4.1",
+        "prettier": "^3.1.1",
+        "prompts": "^2.4.0",
+        "semver": "^7.3.7",
+        "strip-json-comments": "^3.0.1",
+        "tempy": "^3.1.0",
+        "tiny-invariant": "^1.3.1",
+        "ts-dedent": "^2.0.0"
+      },
+      "bin": {
+        "getstorybook": "bin/index.cjs",
+        "sb": "bin/index.cjs",
+        "storybook": "bin/index.cjs"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      }
+    },
+    "node_modules/storybook-addon-sass-postcss": {
+      "version": "0.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/node-logger": "^8",
+        "css-loader": "^7",
+        "postcss-loader": "^8",
+        "sass-loader": "^14",
+        "style-loader": "^4"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8",
+        "sass": "^1"
+      }
+    },
+    "node_modules/storybook/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/storybook/node_modules/chalk": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/storybook/node_modules/has-flag": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/storybook/node_modules/semver": {
+      "version": "7.6.2",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/storybook/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/string_decoder": {
+      "version": "1.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "~5.2.0"
+      }
+    },
+    "node_modules/string_decoder/node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/string-width": {
+      "version": "4.2.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/string-width-cjs": {
+      "name": "string-width",
+      "version": "4.2.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/string-width-cjs/node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/string-width/node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "7.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+      }
+    },
+    "node_modules/strip-ansi-cjs": {
+      "name": "strip-ansi",
+      "version": "6.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-ansi/node_modules/ansi-regex": {
+      "version": "6.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+      }
+    },
+    "node_modules/strip-final-newline": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/strip-indent": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "min-indent": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/style-loader": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 18.12.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "webpack": "^5.27.0"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "5.5.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/tapable": {
+      "version": "2.2.1",
+      "license": "MIT",
+      "peer": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/tar": {
+      "version": "6.2.1",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "chownr": "^2.0.0",
+        "fs-minipass": "^2.0.0",
+        "minipass": "^5.0.0",
+        "minizlib": "^2.1.1",
+        "mkdirp": "^1.0.3",
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/tar/node_modules/minipass": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/tar/node_modules/yallist": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/telejson": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "memoizerific": "^1.11.3"
+      }
+    },
+    "node_modules/temp": {
+      "version": "0.8.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "rimraf": "~2.6.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/temp-dir": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=14.16"
+      }
+    },
+    "node_modules/tempy": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-stream": "^3.0.0",
+        "temp-dir": "^3.0.0",
+        "type-fest": "^2.12.2",
+        "unique-string": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=14.16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/tempy/node_modules/is-stream": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/terser": {
+      "version": "5.31.1",
+      "license": "BSD-2-Clause",
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/source-map": "^0.3.3",
+        "acorn": "^8.8.2",
+        "commander": "^2.20.0",
+        "source-map-support": "~0.5.20"
+      },
+      "bin": {
+        "terser": "bin/terser"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/terser-webpack-plugin": {
+      "version": "5.3.10",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/trace-mapping": "^0.3.20",
+        "jest-worker": "^27.4.5",
+        "schema-utils": "^3.1.1",
+        "serialize-javascript": "^6.0.1",
+        "terser": "^5.26.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "webpack": "^5.1.0"
+      },
+      "peerDependenciesMeta": {
+        "@swc/core": {
+          "optional": true
+        },
+        "esbuild": {
+          "optional": true
+        },
+        "uglify-js": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/terser/node_modules/commander": {
+      "version": "2.20.3",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/tiny-invariant": {
+      "version": "1.3.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/tinyspy": {
+      "version": "2.2.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/tocbot": {
+      "version": "4.28.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/toidentifier": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/tr46": {
+      "version": "0.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/trough": {
+      "version": "2.2.0",
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/ts-dedent": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.10"
+      }
+    },
+    "node_modules/tslib": {
+      "version": "2.6.3",
+      "dev": true,
+      "license": "0BSD"
+    },
+    "node_modules/tween-functions": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "BSD"
+    },
+    "node_modules/type-detect": {
+      "version": "4.0.8",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/type-fest": {
+      "version": "2.19.0",
+      "dev": true,
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=12.20"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/type-is": {
+      "version": "1.6.18",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/typescript": {
+      "version": "5.5.4",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
+      "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "optional": true,
+      "peer": true,
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=14.17"
+      }
+    },
+    "node_modules/ufo": {
+      "version": "1.5.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/uglify-js": {
+      "version": "3.18.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "optional": true,
+      "bin": {
+        "uglifyjs": "bin/uglifyjs"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/ulid": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "ulid": "bin/cli.js"
+      }
+    },
+    "node_modules/undici": {
+      "version": "6.19.8",
+      "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz",
+      "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18.17"
+      }
+    },
+    "node_modules/undici-types": {
+      "version": "5.26.5",
+      "license": "MIT"
+    },
+    "node_modules/unicode-canonical-property-names-ecmascript": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-match-property-ecmascript": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "unicode-canonical-property-names-ecmascript": "^2.0.0",
+        "unicode-property-aliases-ecmascript": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-match-property-value-ecmascript": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-property-aliases-ecmascript": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicorn-magic": {
+      "version": "0.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/unified": {
+      "version": "11.0.5",
+      "license": "MIT",
+      "dependencies": {
+        "@types/unist": "^3.0.0",
+        "bail": "^2.0.0",
+        "devlop": "^1.0.0",
+        "extend": "^3.0.0",
+        "is-plain-obj": "^4.0.0",
+        "trough": "^2.0.0",
+        "vfile": "^6.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/unique-string": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "crypto-random-string": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/unist-util-is": {
+      "version": "6.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/unist": "^3.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/unist-util-stringify-position": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/unist": "^3.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/unist-util-visit": {
+      "version": "5.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/unist": "^3.0.0",
+        "unist-util-is": "^6.0.0",
+        "unist-util-visit-parents": "^6.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/unist-util-visit-parents": {
+      "version": "6.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "@types/unist": "^3.0.0",
+        "unist-util-is": "^6.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/universalify": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
+    "node_modules/unpipe": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/unplugin": {
+      "version": "1.11.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "acorn": "^8.11.3",
+        "chokidar": "^3.6.0",
+        "webpack-sources": "^3.2.3",
+        "webpack-virtual-modules": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
+    "node_modules/untildify": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/update-browserslist-db": {
+      "version": "1.1.0",
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "escalade": "^3.1.2",
+        "picocolors": "^1.0.1"
+      },
+      "bin": {
+        "update-browserslist-db": "cli.js"
+      },
+      "peerDependencies": {
+        "browserslist": ">= 4.21.0"
+      }
+    },
+    "node_modules/uri-js": {
+      "version": "4.4.1",
+      "license": "BSD-2-Clause",
+      "peer": true,
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/use-callback-ref": {
+      "version": "1.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "tslib": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/use-sidecar": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "detect-node-es": "^1.1.0",
+        "tslib": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/util": {
+      "version": "0.12.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "is-arguments": "^1.0.4",
+        "is-generator-function": "^1.0.7",
+        "is-typed-array": "^1.1.3",
+        "which-typed-array": "^1.1.2"
+      }
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "license": "MIT"
+    },
+    "node_modules/utils-merge": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/uuid": {
+      "version": "9.0.1",
+      "dev": true,
+      "funding": [
+        "https://github.com/sponsors/broofa",
+        "https://github.com/sponsors/ctavan"
+      ],
+      "license": "MIT",
+      "bin": {
+        "uuid": "dist/bin/uuid"
+      }
+    },
+    "node_modules/validate-npm-package-license": {
+      "version": "3.0.4",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "node_modules/vary": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/vfile": {
+      "version": "6.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "@types/unist": "^3.0.0",
+        "unist-util-stringify-position": "^4.0.0",
+        "vfile-message": "^4.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/vfile-message": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/unist": "^3.0.0",
+        "unist-util-stringify-position": "^4.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/unified"
+      }
+    },
+    "node_modules/vite": {
+      "version": "5.3.3",
+      "dev": true,
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "esbuild": "^0.21.3",
+        "postcss": "^8.4.39",
+        "rollup": "^4.13.0"
+      },
+      "bin": {
+        "vite": "bin/vite.js"
+      },
+      "engines": {
+        "node": "^18.0.0 || >=20.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/vitejs/vite?sponsor=1"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.3"
+      },
+      "peerDependencies": {
+        "@types/node": "^18.0.0 || >=20.0.0",
+        "less": "*",
+        "lightningcss": "^1.21.0",
+        "sass": "*",
+        "stylus": "*",
+        "sugarss": "*",
+        "terser": "^5.4.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "less": {
+          "optional": true
+        },
+        "lightningcss": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        },
+        "sugarss": {
+          "optional": true
+        },
+        "terser": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vite/node_modules/@esbuild/darwin-arm64": {
+      "version": "0.21.5",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "peer": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/vite/node_modules/esbuild": {
+      "version": "0.21.5",
+      "dev": true,
+      "hasInstallScript": true,
+      "license": "MIT",
+      "peer": true,
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "optionalDependencies": {
+        "@esbuild/aix-ppc64": "0.21.5",
+        "@esbuild/android-arm": "0.21.5",
+        "@esbuild/android-arm64": "0.21.5",
+        "@esbuild/android-x64": "0.21.5",
+        "@esbuild/darwin-arm64": "0.21.5",
+        "@esbuild/darwin-x64": "0.21.5",
+        "@esbuild/freebsd-arm64": "0.21.5",
+        "@esbuild/freebsd-x64": "0.21.5",
+        "@esbuild/linux-arm": "0.21.5",
+        "@esbuild/linux-arm64": "0.21.5",
+        "@esbuild/linux-ia32": "0.21.5",
+        "@esbuild/linux-loong64": "0.21.5",
+        "@esbuild/linux-mips64el": "0.21.5",
+        "@esbuild/linux-ppc64": "0.21.5",
+        "@esbuild/linux-riscv64": "0.21.5",
+        "@esbuild/linux-s390x": "0.21.5",
+        "@esbuild/linux-x64": "0.21.5",
+        "@esbuild/netbsd-x64": "0.21.5",
+        "@esbuild/openbsd-x64": "0.21.5",
+        "@esbuild/sunos-x64": "0.21.5",
+        "@esbuild/win32-arm64": "0.21.5",
+        "@esbuild/win32-ia32": "0.21.5",
+        "@esbuild/win32-x64": "0.21.5"
+      }
+    },
+    "node_modules/walk-up-path": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/watchpack": {
+      "version": "2.4.1",
+      "license": "MIT",
+      "dependencies": {
+        "glob-to-regexp": "^0.4.1",
+        "graceful-fs": "^4.1.2"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/wcwidth": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "defaults": "^1.0.3"
+      }
+    },
+    "node_modules/webidl-conversions": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/webpack": {
+      "version": "5.92.1",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@types/eslint-scope": "^3.7.3",
+        "@types/estree": "^1.0.5",
+        "@webassemblyjs/ast": "^1.12.1",
+        "@webassemblyjs/wasm-edit": "^1.12.1",
+        "@webassemblyjs/wasm-parser": "^1.12.1",
+        "acorn": "^8.7.1",
+        "acorn-import-attributes": "^1.9.5",
+        "browserslist": "^4.21.10",
+        "chrome-trace-event": "^1.0.2",
+        "enhanced-resolve": "^5.17.0",
+        "es-module-lexer": "^1.2.1",
+        "eslint-scope": "5.1.1",
+        "events": "^3.2.0",
+        "glob-to-regexp": "^0.4.1",
+        "graceful-fs": "^4.2.11",
+        "json-parse-even-better-errors": "^2.3.1",
+        "loader-runner": "^4.2.0",
+        "mime-types": "^2.1.27",
+        "neo-async": "^2.6.2",
+        "schema-utils": "^3.2.0",
+        "tapable": "^2.1.1",
+        "terser-webpack-plugin": "^5.3.10",
+        "watchpack": "^2.4.1",
+        "webpack-sources": "^3.2.3"
+      },
+      "bin": {
+        "webpack": "bin/webpack.js"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependenciesMeta": {
+        "webpack-cli": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/webpack-sources": {
+      "version": "3.2.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/webpack-virtual-modules": {
+      "version": "0.6.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/whatwg-encoding": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
+      "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
+      "license": "MIT",
+      "dependencies": {
+        "iconv-lite": "0.6.3"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/whatwg-encoding/node_modules/iconv-lite": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/whatwg-mimetype": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
+      "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/whatwg-url": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "tr46": "~0.0.3",
+        "webidl-conversions": "^3.0.0"
+      }
+    },
+    "node_modules/which": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/which-typed-array": {
+      "version": "1.1.15",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "available-typed-arrays": "^1.0.7",
+        "call-bind": "^1.0.7",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-tostringtag": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/wordwrap": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/wrap-ansi": {
+      "version": "8.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^6.1.0",
+        "string-width": "^5.0.1",
+        "strip-ansi": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+      }
+    },
+    "node_modules/wrap-ansi-cjs": {
+      "name": "wrap-ansi",
+      "version": "7.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+      }
+    },
+    "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/ansi-styles": {
+      "version": "6.2.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/emoji-regex": {
+      "version": "9.2.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/wrap-ansi/node_modules/string-width": {
+      "version": "5.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "eastasianwidth": "^0.2.0",
+        "emoji-regex": "^9.2.2",
+        "strip-ansi": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/write-file-atomic": {
+      "version": "2.4.3",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "graceful-fs": "^4.1.11",
+        "imurmurhash": "^0.1.4",
+        "signal-exit": "^3.0.2"
+      }
+    },
+    "node_modules/ws": {
+      "version": "8.18.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/yallist": {
+      "version": "3.1.1",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/yocto-queue": {
+      "version": "0.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/zwitch": {
+      "version": "2.0.4",
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    }
+  }
+}
diff --git a/package.json b/package.json
new file mode 100644 (file)
index 0000000..42322b4
--- /dev/null
@@ -0,0 +1,48 @@
+{
+  "name": "xen-project",
+  "version": "1.0.0",
+  "description": "## Tools",
+  "type": "module",
+  "main": "index.js",
+  "scripts": {
+    "hugo": "npx hugo",
+    "build": "npx hugo --minify",
+    "dev": "hugo server -D --debug",
+    "test": "echo \"Error: no test specified\" && exit 1",
+    "storybook": "storybook dev -p 6006",
+    "build-storybook": "storybook build",
+    "storybook-tasks": "node scripts/storybook-tasks.js",
+    "sb-images": "node scripts/storytasks/storybook-images.js"
+  },
+  "author": "",
+  "license": "ISC",
+  "devDependencies": {
+    "@chromatic-com/storybook": "^1.6.1",
+    "@storybook/addon-essentials": "^8.1.11",
+    "@storybook/addon-links": "^8.1.11",
+    "@storybook/blocks": "^8.1.11",
+    "@storybook/manager-api": "^8.2.1",
+    "@storybook/test": "^8.1.11",
+    "@storybook/theming": "^8.2.1",
+    "@storybook/web-components": "^8.1.11",
+    "@storybook/web-components-vite": "^8.1.11",
+    "lit": "^3.1.4",
+    "prettier": "^3.3.2",
+    "prettier-plugin-go-template": "^0.0.15",
+    "storybook": "^8.1.11",
+    "storybook-addon-sass-postcss": "^0.3.0"
+  },
+  "packageManager": "pnpm@7.14.0+sha1.2baf3a7e8a7fc865b349f94fe8f656b24f21449c",
+  "dependencies": {
+    "@storybook/preset-scss": "^1.0.3",
+    "axios": "^1.7.7",
+    "cheerio": "^1.0.0",
+    "functional-lit-element": "^0.2.2",
+    "haunted": "^5.0.0",
+    "remark-gfm": "^4.0.0",
+    "sass": "^1.77.6"
+  },
+  "volta": {
+    "node": "22.7.0"
+  }
+}
diff --git a/scripts/downloads/Provider.class.js b/scripts/downloads/Provider.class.js
new file mode 100644 (file)
index 0000000..bbb294e
--- /dev/null
@@ -0,0 +1,18 @@
+// Base class for a provider
+class Provider {
+  constructor(name, key, baseURL) {
+    this.name = name;
+    this.key = key;
+    this.baseURL = baseURL;
+  }
+
+  async getVersions() {
+    throw new Error("This method should be implemented by subclasses");
+  }
+
+  async getFilesAndFolders(version) {
+    throw new Error("This method should be implemented by subclasses");
+  }
+}
+
+export default Provider;
diff --git a/scripts/downloads/getLinks.js b/scripts/downloads/getLinks.js
new file mode 100644 (file)
index 0000000..92e7d5a
--- /dev/null
@@ -0,0 +1,125 @@
+import XenProvider from "./provider-xen.js";
+import WindowPVDrivers from "./provider-windowpvdrivers.js";
+import MirageOSProvider from "./provider-mirageos.js";
+import fs from "fs/promises";
+
+const params = { logErrors: true };
+const providers = [new XenProvider(), new WindowPVDrivers(), new MirageOSProvider()];
+const OUTPUT_FILE = "assets/data/downloads.json";
+const LATEST_OUTPUT_FILE = "assets/data/downloads-latest.json";
+
+async function getVersions(provider, existingVersionMap) {
+  try {
+    const versions = await provider.getVersions();
+    return versions || [{ link: "", name: "default" }];
+  } catch (e) {
+    console.error(`Error getting versions for ${provider.name}. Using existing versions.`);
+    return Array.from(existingVersionMap);
+  }
+}
+
+async function getDrivers(provider, version, existingVersionMap) {
+  if (!existingVersionMap.has(version.name)) {
+    try {
+      const files = await provider.getFilesAndFolders(version.name);
+      return { ...version, files };
+    } catch (e) {
+      console.error(`Error getting files for ${provider.name} version ${version}. Skipping.`);
+      if (params.logErrors) console.error(e);
+    }
+  }
+  return null;
+}
+
+async function getProviderData(provider, existingVersions = []) {
+  const existingVersionMap = new Map(existingVersions.map((v) => [v.name, v]));
+  const versionsArrayOfObjects = await getVersions(provider, existingVersionMap);
+
+  const newVersions = await Promise.all(
+    versionsArrayOfObjects.map(async (version) => getDrivers(provider, version, existingVersionMap)),
+  );
+
+  const allVersions = [...existingVersions, ...newVersions.filter(Boolean)];
+  allVersions.sort((a, b) => {
+    const compareVersions = (v1, v2) => v1.localeCompare(v2, undefined, { numeric: true, sensitivity: "base" });
+    return compareVersions(a.name.split("-")[0], b.name.split("-")[0]);
+  });
+
+  return { name: provider.name, key: provider.key, versions: allVersions };
+}
+
+function createLatestVersionsData(providerData) {
+  const downloadLatest = [];
+
+  providerData.forEach((provider) => {
+    const defaultVersion = provider.versions.find((version) => version.name === "default");
+    let latestVersions = [];
+
+    if (defaultVersion) {
+      latestVersions = [defaultVersion];
+    } else {
+      const versionGroups = {};
+
+      provider.versions.forEach((version) => {
+        if (!version.name.includes("beta") && !version.name.includes("rc")) {
+          const [major, minor] = version.name.split(".");
+          const groupKey = `${major}.${minor}`;
+
+          if (!versionGroups[groupKey]) {
+            versionGroups[groupKey] = {
+              name: groupKey,
+              subversions: [],
+            };
+          }
+          versionGroups[groupKey].subversions.push(version);
+        }
+      });
+
+      const sortedGroups = Object.keys(versionGroups).sort((a, b) =>
+        b.localeCompare(a, undefined, { numeric: true, sensitivity: "base" }),
+      );
+      const latestTwoGroups = sortedGroups.slice(0, 2);
+
+      latestVersions = latestTwoGroups.map((group) => ({
+        name: versionGroups[group].name,
+        subversions: versionGroups[group].subversions.sort((a, b) =>
+          b.name.localeCompare(a.name, undefined, { numeric: true, sensitivity: "base" }),
+        ),
+      }));
+    }
+
+    downloadLatest.push({
+      name: provider.name,
+      key: provider.key,
+      versions: latestVersions,
+    });
+  });
+
+  return downloadLatest;
+}
+
+async function main() {
+  let existingData = [];
+  try {
+    existingData = JSON.parse(await fs.readFile(OUTPUT_FILE, "utf8"));
+  } catch (error) {
+    console.log("No existing data or invalid JSON format. Starting fresh.");
+  }
+
+  const output = await Promise.all(
+    providers.map(async (provider) => {
+      console.log(`Processing provider ${provider.name}`);
+      const existingProviderData = existingData.find((data) => data.key === provider.key) || {};
+      const newProviderData = await getProviderData(provider, existingProviderData.versions);
+      console.log(`Provider ${provider.name} done`);
+      return newProviderData;
+    }),
+  );
+
+  await fs.writeFile(OUTPUT_FILE, JSON.stringify(output, null, 2));
+
+  const latestVersionsData = createLatestVersionsData(output);
+  await fs.writeFile(LATEST_OUTPUT_FILE, JSON.stringify(latestVersionsData, null, 2));
+}
+
+main().catch(console.error);
diff --git a/scripts/downloads/provider-mirageos.js b/scripts/downloads/provider-mirageos.js
new file mode 100644 (file)
index 0000000..10a5c8e
--- /dev/null
@@ -0,0 +1,49 @@
+import Provider from "./Provider.class.js";
+import axios from "axios";
+
+class MirageOSProvider extends Provider {
+  constructor() {
+    super("Mirage OS", "mirageos", "https://api.github.com/repos/mirage/mirage/releases");
+    this.versionPattern = /^v?\d+\.\d+\.\d+(_beta\d+)?(-rc\d+)?(-\d+)?$/;
+    this.token = "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";
+  }
+
+  async getVersions() {
+    const { data } = await axios.get(this.baseURL, {
+      headers: {
+        Authorization: `token ${this.token}`,
+      },
+    });
+    return data.map(({ tag_name, html_url }) => ({
+      name: tag_name.replace(/^v/, ""),
+      link: html_url,
+    }));
+  }
+
+  isValidVersion(text) {
+    return this.versionPattern.test(text);
+  }
+
+  async getFilesAndFolders(version) {
+    console.log("MirageOS : retrieve files and folders for version", version);
+    const { data } = await axios.get(`${this.baseURL}/tags/v${version}`, {
+      headers: {
+        Authorization: `token ${this.token}`,
+      },
+    });
+    const tarballUrl = data.tarball_url;
+    const { data: tarballData } = await axios.get(tarballUrl, {
+      headers: {
+        Authorization: `token ${this.token}`,
+      },
+      responseType: "arraybuffer",
+    });
+
+    // Process the tarball data to extract files and folders
+    // This part depends on how you want to handle the tarball content
+    // For now, we'll return a placeholder object
+    return [{ name: `mirage-${version}.tar.gz`, url: tarballUrl }];
+  }
+}
+
+export default MirageOSProvider;
diff --git a/scripts/downloads/provider-windowpvdrivers.js b/scripts/downloads/provider-windowpvdrivers.js
new file mode 100644 (file)
index 0000000..60589b2
--- /dev/null
@@ -0,0 +1,35 @@
+import Provider from "./Provider.class.js";
+import axios from "axios";
+
+class WindowsPVDrivers extends Provider {
+  constructor() {
+    super("Windows PV Drivers", "windowspvdrivers", "https://xenbits.xenproject.org/pvdrivers/win/");
+  }
+
+  async getVersions() {
+    return null;
+  }
+
+  async getFilesAndFolders() {
+    const response = await axios.get(this.baseURL);
+    const cheerio = await import("cheerio");
+    const $ = cheerio.load(response.data);
+
+    const items = [];
+    $("a").each((_, element) => {
+      const text = $(element).text().trim();
+      if (text === "Parent Directory") {
+        items.length = 0;
+      } else if (items.length > 0 || text !== "Parent Directory") {
+        items.push({
+          name: text,
+          url: `${this.baseURL}${text}`,
+        });
+      }
+    });
+
+    return items;
+  }
+}
+
+export default WindowsPVDrivers;
diff --git a/scripts/downloads/provider-xen.js b/scripts/downloads/provider-xen.js
new file mode 100644 (file)
index 0000000..73af532
--- /dev/null
@@ -0,0 +1,46 @@
+import Provider from "./Provider.class.js";
+import axios from "axios";
+import * as cheerio from "cheerio";
+
+class XenProvider extends Provider {
+  constructor() {
+    super("Xen", "xen", "https://downloads.xenproject.org/release/xen/");
+    this.versionPattern = /^\d+\.\d+\.\d+(-rc\d+)?(-\d+)?$/;
+  }
+
+  async getVersions() {
+    const { data } = await axios.get(this.baseURL);
+    const $ = cheerio.load(data);
+
+    return $("a")
+      .map((_, element) => ({
+        name: $(element).text().trim().replace(/\//g, ""),
+        link: new URL($(element).attr("href"), this.baseURL).href,
+      }))
+      .get()
+      .filter((item) => this.versionPattern.test(item.name));
+  }
+
+  async getFilesAndFolders(version) {
+    const url = `${this.baseURL}/${version}`;
+    console.log("Xen : retrieve files and folders for version", version);
+    const { data } = await axios.get(url);
+    const $ = cheerio.load(data);
+
+    const items = [];
+    let parentDirReached = false;
+
+    $("a").each((_, element) => {
+      const text = $(element).text().trim();
+      if (text === "Parent Directory") {
+        parentDirReached = true;
+      } else if (parentDirReached) {
+        items.push({ name: text, url: `${url}/${text}` });
+      }
+    });
+
+    return items;
+  }
+}
+
+export default XenProvider;
diff --git a/scripts/storybook-tasks.js b/scripts/storybook-tasks.js
new file mode 100644 (file)
index 0000000..cfbf1d7
--- /dev/null
@@ -0,0 +1,26 @@
+import { spawn } from "child_process";
+import path from "path";
+import fs from "fs";
+
+// eslint-disable-next-line no-undef
+const contextFolder = process.cwd();
+const storyTasksFolder = path.join("./scripts/storytasks");
+const fileNames = fs.readdirSync(storyTasksFolder);
+
+fileNames.forEach(async (fileName) => {
+  const filePath = path.join(storyTasksFolder, fileName);
+  const fileProcess = spawn("node", [filePath], { cwd: contextFolder });
+
+  fileProcess.stdout.on("data", (data) => {
+    console.log(`${fileName} stdout: ${data}`);
+  });
+
+  fileProcess.stderr.on("data", (data) => {
+    console.error(`${fileName} stderr: ${data}`);
+  });
+
+  fileProcess.on("close", (code) => {
+    if (code === 0) console.log(`${fileName} processed`);
+    else console.error(`${fileName} exited with code ${code}`);
+  });
+});
diff --git a/scripts/storyscripts.config.js b/scripts/storyscripts.config.js
new file mode 100644 (file)
index 0000000..437a8f6
--- /dev/null
@@ -0,0 +1,9 @@
+const storyScriptConfig = {
+  iconsPrefix: "fa-",
+  iconsCssFolder: "./lib/assets/styles/fonts/fontawesome-pro",
+  colorVariablesFilePath: "./themes/xen-project/assets/css/colors.scss",
+  scssImportPath: "./lib/assets/styles",
+  storyDestJsonFolder: "./stories/json",
+};
+
+export default storyScriptConfig;
diff --git a/scripts/storytasks/storybook-colors.js b/scripts/storytasks/storybook-colors.js
new file mode 100644 (file)
index 0000000..47261a3
--- /dev/null
@@ -0,0 +1,74 @@
+import fs from "fs";
+import * as sass from "sass";
+import storyScriptConfig from "../storyscripts.config.js";
+
+
+const main = async () => {
+  const { colorVariablesFilePath, storyDestJsonFolder } = storyScriptConfig;
+  const filePath = colorVariablesFilePath;
+  const fileExportPath = `${storyDestJsonFolder}/colors.json`;
+
+  const result = await sass.compile(filePath);
+  const css = result.css.toString();
+
+  // get all
+
+  const json = getColors(css);
+  try {
+    fs.mkdirSync(storyDestJsonFolder, { recursive: true });
+  } catch (e) {
+    console.error(e);
+  }
+  fs.writeFileSync(fileExportPath, JSON.stringify(json, null, 2));
+};
+
+const groups = ["action", "brand"];
+
+const getColors = (css) => {
+  const regex = /--color-(.+?)\s*:\s*(#.+);/g;
+  let match;
+  const colors = [];
+
+  while ((match = regex.exec(css)) !== null) {
+    const [, colorName, value] = match;
+    const variableName = match[0].split(":")[0].trim();
+    const split = colorName.split("-");
+    let group;
+    if (groups.includes(split[0])) {
+      group = split[0];
+      split.splice(0, 1);
+    } else {
+      group = "default";
+    }
+
+    colors.push({
+      group,
+      name: colorName,
+      variableName,
+      value,
+    });
+  }
+
+  // sort colors by group
+  const colorGroups = {};
+  colors.forEach((color) => {
+    if (!colorGroups[color.group]) colorGroups[color.group] = [];
+    colorGroups[color.group].push(color);
+  });
+
+  const groupsAsArray = Object.keys(colorGroups).map((key) => ({
+    name: key,
+    colors: colorGroups[key],
+  }));
+
+  // sort groups by name, default first
+
+  groupsAsArray.sort((a, b) => {
+    if (a.name === "default") return -1;
+    if (b.name === "default") return 1;
+    return a.name.localeCompare(b.name);
+  });
+
+  return groupsAsArray;
+};
+main();
diff --git a/scripts/storytasks/storybook-images.js b/scripts/storytasks/storybook-images.js
new file mode 100644 (file)
index 0000000..6a0b060
--- /dev/null
@@ -0,0 +1,39 @@
+import fs from "fs";
+import path from "path";
+import storyScriptConfig from "../storyscripts.config.js";
+
+const { storyDestJsonFolder } = storyScriptConfig;
+const rootDir = "static/img";
+const imageGroupsFilePath = "images.json";
+const fileExportPath = `${storyDestJsonFolder}/${imageGroupsFilePath}`;
+const filesExtensions = [".png", ".jpg", ".jpeg", ".gif", ".svg", ".webp", ".avif"];
+function getImagesFromDirectory(dir) {
+  let results = {};
+  const files = fs.readdirSync(dir);
+
+  files.forEach((file) => {
+    const filePath = path.join(dir, file);
+    const stat = fs.statSync(filePath);
+    if (stat.isDirectory()) {
+      results = {
+        ...results,
+        ...getImagesFromDirectory(filePath),
+      };
+    } else if (filesExtensions.includes(path.extname(file).toLowerCase())) {
+      const relativePath = path.relative(rootDir, filePath);
+      if (!results[path.dirname(relativePath)]) {
+        results[path.dirname(relativePath)] = [];
+      }
+      results[path.dirname(relativePath)].push({
+        name: file,
+        path: "/" + relativePath.replace(/\\/g, "/"),
+      });
+    }
+  });
+
+  return results;
+}
+
+const imageGroups = getImagesFromDirectory(rootDir);
+fs.writeFileSync(fileExportPath, JSON.stringify(imageGroups, null, 2));
+console.log("JSON file has been saved.");
diff --git a/static/favicon.ico b/static/favicon.ico
new file mode 100644 (file)
index 0000000..67f8b77
Binary files /dev/null and b/static/favicon.ico differ
diff --git a/static/font-awesomepro/brands.css b/static/font-awesomepro/brands.css
new file mode 100644 (file)
index 0000000..0762d74
--- /dev/null
@@ -0,0 +1,2021 @@
+/*!
+ * Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license (Commercial License)
+ * Copyright 2022 Fonticons, Inc.
+ */
+:root,
+:host {
+  --fa-style-family-brands: "Font Awesome 6 Brands";
+  --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";
+}
+
+@font-face {
+  font-family: "Font Awesome 6 Brands";
+  font-style: normal;
+  font-weight: 400;
+  font-display: block;
+  src:
+    url("./fa-brands-400.woff2") format("woff2"),
+    url("./fa-brands-400.ttf") format("truetype");
+}
+
+.fab,
+.fa-brands {
+  font-weight: 400;
+}
+
+.fa-monero:before {
+  content: "\f3d0";
+}
+
+.fa-hooli:before {
+  content: "\f427";
+}
+
+.fa-yelp:before {
+  content: "\f1e9";
+}
+
+.fa-cc-visa:before {
+  content: "\f1f0";
+}
+
+.fa-lastfm:before {
+  content: "\f202";
+}
+
+.fa-shopware:before {
+  content: "\f5b5";
+}
+
+.fa-creative-commons-nc:before {
+  content: "\f4e8";
+}
+
+.fa-aws:before {
+  content: "\f375";
+}
+
+.fa-redhat:before {
+  content: "\f7bc";
+}
+
+.fa-yoast:before {
+  content: "\f2b1";
+}
+
+.fa-cloudflare:before {
+  content: "\e07d";
+}
+
+.fa-ups:before {
+  content: "\f7e0";
+}
+
+.fa-wpexplorer:before {
+  content: "\f2de";
+}
+
+.fa-dyalog:before {
+  content: "\f399";
+}
+
+.fa-bity:before {
+  content: "\f37a";
+}
+
+.fa-stackpath:before {
+  content: "\f842";
+}
+
+.fa-buysellads:before {
+  content: "\f20d";
+}
+
+.fa-first-order:before {
+  content: "\f2b0";
+}
+
+.fa-modx:before {
+  content: "\f285";
+}
+
+.fa-guilded:before {
+  content: "\e07e";
+}
+
+.fa-vnv:before {
+  content: "\f40b";
+}
+
+.fa-square-js:before {
+  content: "\f3b9";
+}
+
+.fa-js-square:before {
+  content: "\f3b9";
+}
+
+.fa-microsoft:before {
+  content: "\f3ca";
+}
+
+.fa-qq:before {
+  content: "\f1d6";
+}
+
+.fa-orcid:before {
+  content: "\f8d2";
+}
+
+.fa-java:before {
+  content: "\f4e4";
+}
+
+.fa-invision:before {
+  content: "\f7b0";
+}
+
+.fa-creative-commons-pd-alt:before {
+  content: "\f4ed";
+}
+
+.fa-centercode:before {
+  content: "\f380";
+}
+
+.fa-glide-g:before {
+  content: "\f2a6";
+}
+
+.fa-drupal:before {
+  content: "\f1a9";
+}
+
+.fa-hire-a-helper:before {
+  content: "\f3b0";
+}
+
+.fa-creative-commons-by:before {
+  content: "\f4e7";
+}
+
+.fa-unity:before {
+  content: "\e049";
+}
+
+.fa-whmcs:before {
+  content: "\f40d";
+}
+
+.fa-rocketchat:before {
+  content: "\f3e8";
+}
+
+.fa-vk:before {
+  content: "\f189";
+}
+
+.fa-untappd:before {
+  content: "\f405";
+}
+
+.fa-mailchimp:before {
+  content: "\f59e";
+}
+
+.fa-css3-alt:before {
+  content: "\f38b";
+}
+
+.fa-square-reddit:before {
+  content: "\f1a2";
+}
+
+.fa-reddit-square:before {
+  content: "\f1a2";
+}
+
+.fa-vimeo-v:before {
+  content: "\f27d";
+}
+
+.fa-contao:before {
+  content: "\f26d";
+}
+
+.fa-square-font-awesome:before {
+  content: "\e5ad";
+}
+
+.fa-deskpro:before {
+  content: "\f38f";
+}
+
+.fa-sistrix:before {
+  content: "\f3ee";
+}
+
+.fa-square-instagram:before {
+  content: "\e055";
+}
+
+.fa-instagram-square:before {
+  content: "\e055";
+}
+
+.fa-battle-net:before {
+  content: "\f835";
+}
+
+.fa-the-red-yeti:before {
+  content: "\f69d";
+}
+
+.fa-square-hacker-news:before {
+  content: "\f3af";
+}
+
+.fa-hacker-news-square:before {
+  content: "\f3af";
+}
+
+.fa-edge:before {
+  content: "\f282";
+}
+
+.fa-napster:before {
+  content: "\f3d2";
+}
+
+.fa-square-snapchat:before {
+  content: "\f2ad";
+}
+
+.fa-snapchat-square:before {
+  content: "\f2ad";
+}
+
+.fa-google-plus-g:before {
+  content: "\f0d5";
+}
+
+.fa-artstation:before {
+  content: "\f77a";
+}
+
+.fa-markdown:before {
+  content: "\f60f";
+}
+
+.fa-sourcetree:before {
+  content: "\f7d3";
+}
+
+.fa-google-plus:before {
+  content: "\f2b3";
+}
+
+.fa-diaspora:before {
+  content: "\f791";
+}
+
+.fa-foursquare:before {
+  content: "\f180";
+}
+
+.fa-stack-overflow:before {
+  content: "\f16c";
+}
+
+.fa-github-alt:before {
+  content: "\f113";
+}
+
+.fa-phoenix-squadron:before {
+  content: "\f511";
+}
+
+.fa-pagelines:before {
+  content: "\f18c";
+}
+
+.fa-algolia:before {
+  content: "\f36c";
+}
+
+.fa-red-river:before {
+  content: "\f3e3";
+}
+
+.fa-creative-commons-sa:before {
+  content: "\f4ef";
+}
+
+.fa-safari:before {
+  content: "\f267";
+}
+
+.fa-google:before {
+  content: "\f1a0";
+}
+
+.fa-square-font-awesome-stroke:before {
+  content: "\f35c";
+}
+
+.fa-font-awesome-alt:before {
+  content: "\f35c";
+}
+
+.fa-atlassian:before {
+  content: "\f77b";
+}
+
+.fa-linkedin-in:before {
+  content: "\f0e1";
+}
+
+.fa-digital-ocean:before {
+  content: "\f391";
+}
+
+.fa-nimblr:before {
+  content: "\f5a8";
+}
+
+.fa-chromecast:before {
+  content: "\f838";
+}
+
+.fa-evernote:before {
+  content: "\f839";
+}
+
+.fa-hacker-news:before {
+  content: "\f1d4";
+}
+
+.fa-creative-commons-sampling:before {
+  content: "\f4f0";
+}
+
+.fa-adversal:before {
+  content: "\f36a";
+}
+
+.fa-creative-commons:before {
+  content: "\f25e";
+}
+
+.fa-watchman-monitoring:before {
+  content: "\e087";
+}
+
+.fa-fonticons:before {
+  content: "\f280";
+}
+
+.fa-weixin:before {
+  content: "\f1d7";
+}
+
+.fa-shirtsinbulk:before {
+  content: "\f214";
+}
+
+.fa-codepen:before {
+  content: "\f1cb";
+}
+
+.fa-git-alt:before {
+  content: "\f841";
+}
+
+.fa-lyft:before {
+  content: "\f3c3";
+}
+
+.fa-rev:before {
+  content: "\f5b2";
+}
+
+.fa-windows:before {
+  content: "\f17a";
+}
+
+.fa-wizards-of-the-coast:before {
+  content: "\f730";
+}
+
+.fa-square-viadeo:before {
+  content: "\f2aa";
+}
+
+.fa-viadeo-square:before {
+  content: "\f2aa";
+}
+
+.fa-meetup:before {
+  content: "\f2e0";
+}
+
+.fa-centos:before {
+  content: "\f789";
+}
+
+.fa-adn:before {
+  content: "\f170";
+}
+
+.fa-cloudsmith:before {
+  content: "\f384";
+}
+
+.fa-pied-piper-alt:before {
+  content: "\f1a8";
+}
+
+.fa-square-dribbble:before {
+  content: "\f397";
+}
+
+.fa-dribbble-square:before {
+  content: "\f397";
+}
+
+.fa-codiepie:before {
+  content: "\f284";
+}
+
+.fa-node:before {
+  content: "\f419";
+}
+
+.fa-mix:before {
+  content: "\f3cb";
+}
+
+.fa-steam:before {
+  content: "\f1b6";
+}
+
+.fa-cc-apple-pay:before {
+  content: "\f416";
+}
+
+.fa-scribd:before {
+  content: "\f28a";
+}
+
+.fa-openid:before {
+  content: "\f19b";
+}
+
+.fa-instalod:before {
+  content: "\e081";
+}
+
+.fa-expeditedssl:before {
+  content: "\f23e";
+}
+
+.fa-sellcast:before {
+  content: "\f2da";
+}
+
+.fa-square-twitter:before {
+  content: "\f081";
+}
+
+.fa-twitter-square:before {
+  content: "\f081";
+}
+
+.fa-r-project:before {
+  content: "\f4f7";
+}
+
+.fa-delicious:before {
+  content: "\f1a5";
+}
+
+.fa-freebsd:before {
+  content: "\f3a4";
+}
+
+.fa-vuejs:before {
+  content: "\f41f";
+}
+
+.fa-accusoft:before {
+  content: "\f369";
+}
+
+.fa-ioxhost:before {
+  content: "\f208";
+}
+
+.fa-fonticons-fi:before {
+  content: "\f3a2";
+}
+
+.fa-app-store:before {
+  content: "\f36f";
+}
+
+.fa-cc-mastercard:before {
+  content: "\f1f1";
+}
+
+.fa-itunes-note:before {
+  content: "\f3b5";
+}
+
+.fa-golang:before {
+  content: "\e40f";
+}
+
+.fa-kickstarter:before {
+  content: "\f3bb";
+}
+
+.fa-grav:before {
+  content: "\f2d6";
+}
+
+.fa-weibo:before {
+  content: "\f18a";
+}
+
+.fa-uncharted:before {
+  content: "\e084";
+}
+
+.fa-firstdraft:before {
+  content: "\f3a1";
+}
+
+.fa-square-youtube:before {
+  content: "\f431";
+}
+
+.fa-youtube-square:before {
+  content: "\f431";
+}
+
+.fa-wikipedia-w:before {
+  content: "\f266";
+}
+
+.fa-wpressr:before {
+  content: "\f3e4";
+}
+
+.fa-rendact:before {
+  content: "\f3e4";
+}
+
+.fa-angellist:before {
+  content: "\f209";
+}
+
+.fa-galactic-republic:before {
+  content: "\f50c";
+}
+
+.fa-nfc-directional:before {
+  content: "\e530";
+}
+
+.fa-skype:before {
+  content: "\f17e";
+}
+
+.fa-joget:before {
+  content: "\f3b7";
+}
+
+.fa-fedora:before {
+  content: "\f798";
+}
+
+.fa-stripe-s:before {
+  content: "\f42a";
+}
+
+.fa-meta:before {
+  content: "\e49b";
+}
+
+.fa-laravel:before {
+  content: "\f3bd";
+}
+
+.fa-hotjar:before {
+  content: "\f3b1";
+}
+
+.fa-bluetooth-b:before {
+  content: "\f294";
+}
+
+.fa-sticker-mule:before {
+  content: "\f3f7";
+}
+
+.fa-creative-commons-zero:before {
+  content: "\f4f3";
+}
+
+.fa-hips:before {
+  content: "\f452";
+}
+
+.fa-behance:before {
+  content: "\f1b4";
+}
+
+.fa-reddit:before {
+  content: "\f1a1";
+}
+
+.fa-discord:before {
+  content: "\f392";
+}
+
+.fa-chrome:before {
+  content: "\f268";
+}
+
+.fa-app-store-ios:before {
+  content: "\f370";
+}
+
+.fa-cc-discover:before {
+  content: "\f1f2";
+}
+
+.fa-wpbeginner:before {
+  content: "\f297";
+}
+
+.fa-confluence:before {
+  content: "\f78d";
+}
+
+.fa-mdb:before {
+  content: "\f8ca";
+}
+
+.fa-dochub:before {
+  content: "\f394";
+}
+
+.fa-accessible-icon:before {
+  content: "\f368";
+}
+
+.fa-ebay:before {
+  content: "\f4f4";
+}
+
+.fa-amazon:before {
+  content: "\f270";
+}
+
+.fa-unsplash:before {
+  content: "\e07c";
+}
+
+.fa-yarn:before {
+  content: "\f7e3";
+}
+
+.fa-square-steam:before {
+  content: "\f1b7";
+}
+
+.fa-steam-square:before {
+  content: "\f1b7";
+}
+
+.fa-500px:before {
+  content: "\f26e";
+}
+
+.fa-square-vimeo:before {
+  content: "\f194";
+}
+
+.fa-vimeo-square:before {
+  content: "\f194";
+}
+
+.fa-asymmetrik:before {
+  content: "\f372";
+}
+
+.fa-font-awesome:before {
+  content: "\f2b4";
+}
+
+.fa-font-awesome-flag:before {
+  content: "\f2b4";
+}
+
+.fa-font-awesome-logo-full:before {
+  content: "\f2b4";
+}
+
+.fa-gratipay:before {
+  content: "\f184";
+}
+
+.fa-apple:before {
+  content: "\f179";
+}
+
+.fa-hive:before {
+  content: "\e07f";
+}
+
+.fa-gitkraken:before {
+  content: "\f3a6";
+}
+
+.fa-keybase:before {
+  content: "\f4f5";
+}
+
+.fa-apple-pay:before {
+  content: "\f415";
+}
+
+.fa-padlet:before {
+  content: "\e4a0";
+}
+
+.fa-amazon-pay:before {
+  content: "\f42c";
+}
+
+.fa-square-github:before {
+  content: "\f092";
+}
+
+.fa-github-square:before {
+  content: "\f092";
+}
+
+.fa-stumbleupon:before {
+  content: "\f1a4";
+}
+
+.fa-fedex:before {
+  content: "\f797";
+}
+
+.fa-phoenix-framework:before {
+  content: "\f3dc";
+}
+
+.fa-shopify:before {
+  content: "\e057";
+}
+
+.fa-neos:before {
+  content: "\f612";
+}
+
+.fa-hackerrank:before {
+  content: "\f5f7";
+}
+
+.fa-researchgate:before {
+  content: "\f4f8";
+}
+
+.fa-swift:before {
+  content: "\f8e1";
+}
+
+.fa-angular:before {
+  content: "\f420";
+}
+
+.fa-speakap:before {
+  content: "\f3f3";
+}
+
+.fa-angrycreative:before {
+  content: "\f36e";
+}
+
+.fa-y-combinator:before {
+  content: "\f23b";
+}
+
+.fa-empire:before {
+  content: "\f1d1";
+}
+
+.fa-envira:before {
+  content: "\f299";
+}
+
+.fa-square-gitlab:before {
+  content: "\e5ae";
+}
+
+.fa-gitlab-square:before {
+  content: "\e5ae";
+}
+
+.fa-studiovinari:before {
+  content: "\f3f8";
+}
+
+.fa-pied-piper:before {
+  content: "\f2ae";
+}
+
+.fa-wordpress:before {
+  content: "\f19a";
+}
+
+.fa-product-hunt:before {
+  content: "\f288";
+}
+
+.fa-firefox:before {
+  content: "\f269";
+}
+
+.fa-linode:before {
+  content: "\f2b8";
+}
+
+.fa-goodreads:before {
+  content: "\f3a8";
+}
+
+.fa-square-odnoklassniki:before {
+  content: "\f264";
+}
+
+.fa-odnoklassniki-square:before {
+  content: "\f264";
+}
+
+.fa-jsfiddle:before {
+  content: "\f1cc";
+}
+
+.fa-sith:before {
+  content: "\f512";
+}
+
+.fa-themeisle:before {
+  content: "\f2b2";
+}
+
+.fa-page4:before {
+  content: "\f3d7";
+}
+
+.fa-hashnode:before {
+  content: "\e499";
+}
+
+.fa-react:before {
+  content: "\f41b";
+}
+
+.fa-cc-paypal:before {
+  content: "\f1f4";
+}
+
+.fa-squarespace:before {
+  content: "\f5be";
+}
+
+.fa-cc-stripe:before {
+  content: "\f1f5";
+}
+
+.fa-creative-commons-share:before {
+  content: "\f4f2";
+}
+
+.fa-bitcoin:before {
+  content: "\f379";
+}
+
+.fa-keycdn:before {
+  content: "\f3ba";
+}
+
+.fa-opera:before {
+  content: "\f26a";
+}
+
+.fa-itch-io:before {
+  content: "\f83a";
+}
+
+.fa-umbraco:before {
+  content: "\f8e8";
+}
+
+.fa-galactic-senate:before {
+  content: "\f50d";
+}
+
+.fa-ubuntu:before {
+  content: "\f7df";
+}
+
+.fa-draft2digital:before {
+  content: "\f396";
+}
+
+.fa-stripe:before {
+  content: "\f429";
+}
+
+.fa-houzz:before {
+  content: "\f27c";
+}
+
+.fa-gg:before {
+  content: "\f260";
+}
+
+.fa-dhl:before {
+  content: "\f790";
+}
+
+.fa-square-pinterest:before {
+  content: "\f0d3";
+}
+
+.fa-pinterest-square:before {
+  content: "\f0d3";
+}
+
+.fa-xing:before {
+  content: "\f168";
+}
+
+.fa-blackberry:before {
+  content: "\f37b";
+}
+
+.fa-creative-commons-pd:before {
+  content: "\f4ec";
+}
+
+.fa-playstation:before {
+  content: "\f3df";
+}
+
+.fa-quinscape:before {
+  content: "\f459";
+}
+
+.fa-less:before {
+  content: "\f41d";
+}
+
+.fa-blogger-b:before {
+  content: "\f37d";
+}
+
+.fa-opencart:before {
+  content: "\f23d";
+}
+
+.fa-vine:before {
+  content: "\f1ca";
+}
+
+.fa-paypal:before {
+  content: "\f1ed";
+}
+
+.fa-gitlab:before {
+  content: "\f296";
+}
+
+.fa-typo3:before {
+  content: "\f42b";
+}
+
+.fa-reddit-alien:before {
+  content: "\f281";
+}
+
+.fa-yahoo:before {
+  content: "\f19e";
+}
+
+.fa-dailymotion:before {
+  content: "\e052";
+}
+
+.fa-affiliatetheme:before {
+  content: "\f36b";
+}
+
+.fa-pied-piper-pp:before {
+  content: "\f1a7";
+}
+
+.fa-bootstrap:before {
+  content: "\f836";
+}
+
+.fa-odnoklassniki:before {
+  content: "\f263";
+}
+
+.fa-nfc-symbol:before {
+  content: "\e531";
+}
+
+.fa-ethereum:before {
+  content: "\f42e";
+}
+
+.fa-speaker-deck:before {
+  content: "\f83c";
+}
+
+.fa-creative-commons-nc-eu:before {
+  content: "\f4e9";
+}
+
+.fa-patreon:before {
+  content: "\f3d9";
+}
+
+.fa-avianex:before {
+  content: "\f374";
+}
+
+.fa-ello:before {
+  content: "\f5f1";
+}
+
+.fa-gofore:before {
+  content: "\f3a7";
+}
+
+.fa-bimobject:before {
+  content: "\f378";
+}
+
+.fa-facebook-f:before {
+  content: "\f39e";
+}
+
+.fa-square-google-plus:before {
+  content: "\f0d4";
+}
+
+.fa-google-plus-square:before {
+  content: "\f0d4";
+}
+
+.fa-mandalorian:before {
+  content: "\f50f";
+}
+
+.fa-first-order-alt:before {
+  content: "\f50a";
+}
+
+.fa-osi:before {
+  content: "\f41a";
+}
+
+.fa-google-wallet:before {
+  content: "\f1ee";
+}
+
+.fa-d-and-d-beyond:before {
+  content: "\f6ca";
+}
+
+.fa-periscope:before {
+  content: "\f3da";
+}
+
+.fa-fulcrum:before {
+  content: "\f50b";
+}
+
+.fa-cloudscale:before {
+  content: "\f383";
+}
+
+.fa-forumbee:before {
+  content: "\f211";
+}
+
+.fa-mizuni:before {
+  content: "\f3cc";
+}
+
+.fa-schlix:before {
+  content: "\f3ea";
+}
+
+.fa-square-xing:before {
+  content: "\f169";
+}
+
+.fa-xing-square:before {
+  content: "\f169";
+}
+
+.fa-bandcamp:before {
+  content: "\f2d5";
+}
+
+.fa-wpforms:before {
+  content: "\f298";
+}
+
+.fa-cloudversify:before {
+  content: "\f385";
+}
+
+.fa-usps:before {
+  content: "\f7e1";
+}
+
+.fa-megaport:before {
+  content: "\f5a3";
+}
+
+.fa-magento:before {
+  content: "\f3c4";
+}
+
+.fa-spotify:before {
+  content: "\f1bc";
+}
+
+.fa-optin-monster:before {
+  content: "\f23c";
+}
+
+.fa-fly:before {
+  content: "\f417";
+}
+
+.fa-aviato:before {
+  content: "\f421";
+}
+
+.fa-itunes:before {
+  content: "\f3b4";
+}
+
+.fa-cuttlefish:before {
+  content: "\f38c";
+}
+
+.fa-blogger:before {
+  content: "\f37c";
+}
+
+.fa-flickr:before {
+  content: "\f16e";
+}
+
+.fa-viber:before {
+  content: "\f409";
+}
+
+.fa-soundcloud:before {
+  content: "\f1be";
+}
+
+.fa-digg:before {
+  content: "\f1a6";
+}
+
+.fa-tencent-weibo:before {
+  content: "\f1d5";
+}
+
+.fa-symfony:before {
+  content: "\f83d";
+}
+
+.fa-maxcdn:before {
+  content: "\f136";
+}
+
+.fa-etsy:before {
+  content: "\f2d7";
+}
+
+.fa-facebook-messenger:before {
+  content: "\f39f";
+}
+
+.fa-audible:before {
+  content: "\f373";
+}
+
+.fa-think-peaks:before {
+  content: "\f731";
+}
+
+.fa-bilibili:before {
+  content: "\e3d9";
+}
+
+.fa-erlang:before {
+  content: "\f39d";
+}
+
+.fa-cotton-bureau:before {
+  content: "\f89e";
+}
+
+.fa-dashcube:before {
+  content: "\f210";
+}
+
+.fa-42-group:before {
+  content: "\e080";
+}
+
+.fa-innosoft:before {
+  content: "\e080";
+}
+
+.fa-stack-exchange:before {
+  content: "\f18d";
+}
+
+.fa-elementor:before {
+  content: "\f430";
+}
+
+.fa-square-pied-piper:before {
+  content: "\e01e";
+}
+
+.fa-pied-piper-square:before {
+  content: "\e01e";
+}
+
+.fa-creative-commons-nd:before {
+  content: "\f4eb";
+}
+
+.fa-palfed:before {
+  content: "\f3d8";
+}
+
+.fa-superpowers:before {
+  content: "\f2dd";
+}
+
+.fa-resolving:before {
+  content: "\f3e7";
+}
+
+.fa-xbox:before {
+  content: "\f412";
+}
+
+.fa-searchengin:before {
+  content: "\f3eb";
+}
+
+.fa-tiktok:before {
+  content: "\e07b";
+}
+
+.fa-square-facebook:before {
+  content: "\f082";
+}
+
+.fa-facebook-square:before {
+  content: "\f082";
+}
+
+.fa-renren:before {
+  content: "\f18b";
+}
+
+.fa-linux:before {
+  content: "\f17c";
+}
+
+.fa-glide:before {
+  content: "\f2a5";
+}
+
+.fa-linkedin:before {
+  content: "\f08c";
+}
+
+.fa-hubspot:before {
+  content: "\f3b2";
+}
+
+.fa-deploydog:before {
+  content: "\f38e";
+}
+
+.fa-twitch:before {
+  content: "\f1e8";
+}
+
+.fa-ravelry:before {
+  content: "\f2d9";
+}
+
+.fa-mixer:before {
+  content: "\e056";
+}
+
+.fa-square-lastfm:before {
+  content: "\f203";
+}
+
+.fa-lastfm-square:before {
+  content: "\f203";
+}
+
+.fa-vimeo:before {
+  content: "\f40a";
+}
+
+.fa-mendeley:before {
+  content: "\f7b3";
+}
+
+.fa-uniregistry:before {
+  content: "\f404";
+}
+
+.fa-figma:before {
+  content: "\f799";
+}
+
+.fa-creative-commons-remix:before {
+  content: "\f4ee";
+}
+
+.fa-cc-amazon-pay:before {
+  content: "\f42d";
+}
+
+.fa-dropbox:before {
+  content: "\f16b";
+}
+
+.fa-instagram:before {
+  content: "\f16d";
+}
+
+.fa-cmplid:before {
+  content: "\e360";
+}
+
+.fa-facebook:before {
+  content: "\f09a";
+}
+
+.fa-gripfire:before {
+  content: "\f3ac";
+}
+
+.fa-jedi-order:before {
+  content: "\f50e";
+}
+
+.fa-uikit:before {
+  content: "\f403";
+}
+
+.fa-fort-awesome-alt:before {
+  content: "\f3a3";
+}
+
+.fa-phabricator:before {
+  content: "\f3db";
+}
+
+.fa-ussunnah:before {
+  content: "\f407";
+}
+
+.fa-earlybirds:before {
+  content: "\f39a";
+}
+
+.fa-trade-federation:before {
+  content: "\f513";
+}
+
+.fa-autoprefixer:before {
+  content: "\f41c";
+}
+
+.fa-whatsapp:before {
+  content: "\f232";
+}
+
+.fa-slideshare:before {
+  content: "\f1e7";
+}
+
+.fa-google-play:before {
+  content: "\f3ab";
+}
+
+.fa-viadeo:before {
+  content: "\f2a9";
+}
+
+.fa-line:before {
+  content: "\f3c0";
+}
+
+.fa-google-drive:before {
+  content: "\f3aa";
+}
+
+.fa-servicestack:before {
+  content: "\f3ec";
+}
+
+.fa-simplybuilt:before {
+  content: "\f215";
+}
+
+.fa-bitbucket:before {
+  content: "\f171";
+}
+
+.fa-imdb:before {
+  content: "\f2d8";
+}
+
+.fa-deezer:before {
+  content: "\e077";
+}
+
+.fa-raspberry-pi:before {
+  content: "\f7bb";
+}
+
+.fa-jira:before {
+  content: "\f7b1";
+}
+
+.fa-docker:before {
+  content: "\f395";
+}
+
+.fa-screenpal:before {
+  content: "\e570";
+}
+
+.fa-bluetooth:before {
+  content: "\f293";
+}
+
+.fa-gitter:before {
+  content: "\f426";
+}
+
+.fa-d-and-d:before {
+  content: "\f38d";
+}
+
+.fa-microblog:before {
+  content: "\e01a";
+}
+
+.fa-cc-diners-club:before {
+  content: "\f24c";
+}
+
+.fa-gg-circle:before {
+  content: "\f261";
+}
+
+.fa-pied-piper-hat:before {
+  content: "\f4e5";
+}
+
+.fa-kickstarter-k:before {
+  content: "\f3bc";
+}
+
+.fa-yandex:before {
+  content: "\f413";
+}
+
+.fa-readme:before {
+  content: "\f4d5";
+}
+
+.fa-html5:before {
+  content: "\f13b";
+}
+
+.fa-sellsy:before {
+  content: "\f213";
+}
+
+.fa-sass:before {
+  content: "\f41e";
+}
+
+.fa-wirsindhandwerk:before {
+  content: "\e2d0";
+}
+
+.fa-wsh:before {
+  content: "\e2d0";
+}
+
+.fa-buromobelexperte:before {
+  content: "\f37f";
+}
+
+.fa-salesforce:before {
+  content: "\f83b";
+}
+
+.fa-octopus-deploy:before {
+  content: "\e082";
+}
+
+.fa-medapps:before {
+  content: "\f3c6";
+}
+
+.fa-ns8:before {
+  content: "\f3d5";
+}
+
+.fa-pinterest-p:before {
+  content: "\f231";
+}
+
+.fa-apper:before {
+  content: "\f371";
+}
+
+.fa-fort-awesome:before {
+  content: "\f286";
+}
+
+.fa-waze:before {
+  content: "\f83f";
+}
+
+.fa-cc-jcb:before {
+  content: "\f24b";
+}
+
+.fa-snapchat:before {
+  content: "\f2ab";
+}
+
+.fa-snapchat-ghost:before {
+  content: "\f2ab";
+}
+
+.fa-fantasy-flight-games:before {
+  content: "\f6dc";
+}
+
+.fa-rust:before {
+  content: "\e07a";
+}
+
+.fa-wix:before {
+  content: "\f5cf";
+}
+
+.fa-square-behance:before {
+  content: "\f1b5";
+}
+
+.fa-behance-square:before {
+  content: "\f1b5";
+}
+
+.fa-supple:before {
+  content: "\f3f9";
+}
+
+.fa-rebel:before {
+  content: "\f1d0";
+}
+
+.fa-css3:before {
+  content: "\f13c";
+}
+
+.fa-staylinked:before {
+  content: "\f3f5";
+}
+
+.fa-kaggle:before {
+  content: "\f5fa";
+}
+
+.fa-space-awesome:before {
+  content: "\e5ac";
+}
+
+.fa-deviantart:before {
+  content: "\f1bd";
+}
+
+.fa-cpanel:before {
+  content: "\f388";
+}
+
+.fa-goodreads-g:before {
+  content: "\f3a9";
+}
+
+.fa-square-git:before {
+  content: "\f1d2";
+}
+
+.fa-git-square:before {
+  content: "\f1d2";
+}
+
+.fa-square-tumblr:before {
+  content: "\f174";
+}
+
+.fa-tumblr-square:before {
+  content: "\f174";
+}
+
+.fa-trello:before {
+  content: "\f181";
+}
+
+.fa-creative-commons-nc-jp:before {
+  content: "\f4ea";
+}
+
+.fa-get-pocket:before {
+  content: "\f265";
+}
+
+.fa-perbyte:before {
+  content: "\e083";
+}
+
+.fa-grunt:before {
+  content: "\f3ad";
+}
+
+.fa-weebly:before {
+  content: "\f5cc";
+}
+
+.fa-connectdevelop:before {
+  content: "\f20e";
+}
+
+.fa-leanpub:before {
+  content: "\f212";
+}
+
+.fa-black-tie:before {
+  content: "\f27e";
+}
+
+.fa-themeco:before {
+  content: "\f5c6";
+}
+
+.fa-python:before {
+  content: "\f3e2";
+}
+
+.fa-android:before {
+  content: "\f17b";
+}
+
+.fa-bots:before {
+  content: "\e340";
+}
+
+.fa-free-code-camp:before {
+  content: "\f2c5";
+}
+
+.fa-hornbill:before {
+  content: "\f592";
+}
+
+.fa-js:before {
+  content: "\f3b8";
+}
+
+.fa-ideal:before {
+  content: "\e013";
+}
+
+.fa-git:before {
+  content: "\f1d3";
+}
+
+.fa-dev:before {
+  content: "\f6cc";
+}
+
+.fa-sketch:before {
+  content: "\f7c6";
+}
+
+.fa-yandex-international:before {
+  content: "\f414";
+}
+
+.fa-cc-amex:before {
+  content: "\f1f3";
+}
+
+.fa-uber:before {
+  content: "\f402";
+}
+
+.fa-github:before {
+  content: "\f09b";
+}
+
+.fa-php:before {
+  content: "\f457";
+}
+
+.fa-alipay:before {
+  content: "\f642";
+}
+
+.fa-youtube:before {
+  content: "\f167";
+}
+
+.fa-skyatlas:before {
+  content: "\f216";
+}
+
+.fa-firefox-browser:before {
+  content: "\e007";
+}
+
+.fa-replyd:before {
+  content: "\f3e6";
+}
+
+.fa-suse:before {
+  content: "\f7d6";
+}
+
+.fa-jenkins:before {
+  content: "\f3b6";
+}
+
+.fa-twitter:before {
+  content: "\f099";
+}
+
+.fa-rockrms:before {
+  content: "\f3e9";
+}
+
+.fa-pinterest:before {
+  content: "\f0d2";
+}
+
+.fa-buffer:before {
+  content: "\f837";
+}
+
+.fa-npm:before {
+  content: "\f3d4";
+}
+
+.fa-yammer:before {
+  content: "\f840";
+}
+
+.fa-btc:before {
+  content: "\f15a";
+}
+
+.fa-dribbble:before {
+  content: "\f17d";
+}
+
+.fa-stumbleupon-circle:before {
+  content: "\f1a3";
+}
+
+.fa-internet-explorer:before {
+  content: "\f26b";
+}
+
+.fa-telegram:before {
+  content: "\f2c6";
+}
+
+.fa-telegram-plane:before {
+  content: "\f2c6";
+}
+
+.fa-old-republic:before {
+  content: "\f510";
+}
+
+.fa-square-whatsapp:before {
+  content: "\f40c";
+}
+
+.fa-whatsapp-square:before {
+  content: "\f40c";
+}
+
+.fa-node-js:before {
+  content: "\f3d3";
+}
+
+.fa-edge-legacy:before {
+  content: "\e078";
+}
+
+.fa-slack:before {
+  content: "\f198";
+}
+
+.fa-slack-hash:before {
+  content: "\f198";
+}
+
+.fa-medrt:before {
+  content: "\f3c8";
+}
+
+.fa-usb:before {
+  content: "\f287";
+}
+
+.fa-tumblr:before {
+  content: "\f173";
+}
+
+.fa-vaadin:before {
+  content: "\f408";
+}
+
+.fa-quora:before {
+  content: "\f2c4";
+}
+
+.fa-reacteurope:before {
+  content: "\f75d";
+}
+
+.fa-medium:before {
+  content: "\f23a";
+}
+
+.fa-medium-m:before {
+  content: "\f23a";
+}
+
+.fa-amilia:before {
+  content: "\f36d";
+}
+
+.fa-mixcloud:before {
+  content: "\f289";
+}
+
+.fa-flipboard:before {
+  content: "\f44d";
+}
+
+.fa-viacoin:before {
+  content: "\f237";
+}
+
+.fa-critical-role:before {
+  content: "\f6c9";
+}
+
+.fa-sitrox:before {
+  content: "\e44a";
+}
+
+.fa-discourse:before {
+  content: "\f393";
+}
+
+.fa-joomla:before {
+  content: "\f1aa";
+}
+
+.fa-mastodon:before {
+  content: "\f4f6";
+}
+
+.fa-airbnb:before {
+  content: "\f834";
+}
+
+.fa-wolf-pack-battalion:before {
+  content: "\f514";
+}
+
+.fa-buy-n-large:before {
+  content: "\f8a6";
+}
+
+.fa-gulp:before {
+  content: "\f3ae";
+}
+
+.fa-creative-commons-sampling-plus:before {
+  content: "\f4f1";
+}
+
+.fa-strava:before {
+  content: "\f428";
+}
+
+.fa-ember:before {
+  content: "\f423";
+}
+
+.fa-canadian-maple-leaf:before {
+  content: "\f785";
+}
+
+.fa-teamspeak:before {
+  content: "\f4f9";
+}
+
+.fa-pushed:before {
+  content: "\f3e1";
+}
+
+.fa-wordpress-simple:before {
+  content: "\f411";
+}
+
+.fa-nutritionix:before {
+  content: "\f3d6";
+}
+
+.fa-wodu:before {
+  content: "\e088";
+}
+
+.fa-google-pay:before {
+  content: "\e079";
+}
+
+.fa-intercom:before {
+  content: "\f7af";
+}
+
+.fa-zhihu:before {
+  content: "\f63f";
+}
+
+.fa-korvue:before {
+  content: "\f42f";
+}
+
+.fa-pix:before {
+  content: "\e43a";
+}
+
+.fa-steam-symbol:before {
+  content: "\f3f6";
+}
diff --git a/static/font-awesomepro/fa-brands-400.ttf b/static/font-awesomepro/fa-brands-400.ttf
new file mode 100644 (file)
index 0000000..771ce18
Binary files /dev/null and b/static/font-awesomepro/fa-brands-400.ttf differ
diff --git a/static/font-awesomepro/fa-brands-400.woff2 b/static/font-awesomepro/fa-brands-400.woff2
new file mode 100644 (file)
index 0000000..d43f463
Binary files /dev/null and b/static/font-awesomepro/fa-brands-400.woff2 differ
diff --git a/static/font-awesomepro/fa-light-300.ttf b/static/font-awesomepro/fa-light-300.ttf
new file mode 100644 (file)
index 0000000..9dc5e05
Binary files /dev/null and b/static/font-awesomepro/fa-light-300.ttf differ
diff --git a/static/font-awesomepro/fa-light-300.woff2 b/static/font-awesomepro/fa-light-300.woff2
new file mode 100644 (file)
index 0000000..87c35e2
Binary files /dev/null and b/static/font-awesomepro/fa-light-300.woff2 differ
diff --git a/static/font-awesomepro/fa-regular-400.ttf b/static/font-awesomepro/fa-regular-400.ttf
new file mode 100644 (file)
index 0000000..94dc3ac
Binary files /dev/null and b/static/font-awesomepro/fa-regular-400.ttf differ
diff --git a/static/font-awesomepro/fa-regular-400.woff2 b/static/font-awesomepro/fa-regular-400.woff2
new file mode 100644 (file)
index 0000000..199cca3
Binary files /dev/null and b/static/font-awesomepro/fa-regular-400.woff2 differ
diff --git a/static/font-awesomepro/fa-solid-900.ttf b/static/font-awesomepro/fa-solid-900.ttf
new file mode 100644 (file)
index 0000000..311d212
Binary files /dev/null and b/static/font-awesomepro/fa-solid-900.ttf differ
diff --git a/static/font-awesomepro/fa-solid-900.woff2 b/static/font-awesomepro/fa-solid-900.woff2
new file mode 100644 (file)
index 0000000..d5bc7d9
Binary files /dev/null and b/static/font-awesomepro/fa-solid-900.woff2 differ
diff --git a/static/font-awesomepro/fontawesome.css b/static/font-awesomepro/fontawesome.css
new file mode 100644 (file)
index 0000000..fe095af
--- /dev/null
@@ -0,0 +1,12880 @@
+/*!
+ * Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license (Commercial License)
+ * Copyright 2022 Fonticons, Inc.
+ */
+.fa {
+  font-family: var(--fa-style-family, "Font Awesome 6 Pro");
+  font-weight: var(--fa-style, 900); }
+
+.fa,
+.fa-classic,
+.fa-sharp,
+.fas,
+.fa-solid,
+.far,
+.fa-regular,
+.fal,
+.fa-light,
+.fat,
+.fa-thin,
+.fad,
+.fa-duotone,
+.fass,
+.fa-sharp-solid,
+.fab,
+.fa-brands {
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-font-smoothing: antialiased;
+  display: var(--fa-display, inline-block);
+  font-style: normal;
+  font-variant: normal;
+  line-height: 1;
+  text-rendering: auto; }
+
+.fas,
+.fa-classic,
+.fa-solid,
+.far,
+.fa-regular,
+.fal,
+.fa-light,
+.fat,
+.fa-thin {
+  font-family: 'Font Awesome 6 Pro'; }
+
+.fab,
+.fa-brands {
+  font-family: 'Font Awesome 6 Brands'; }
+
+.fad,
+.fa-classic.fa-duotone,
+.fa-duotone {
+  font-family: 'Font Awesome 6 Duotone'; }
+
+.fass,
+.fa-sharp {
+  font-family: 'Font Awesome 6 Sharp';
+  font-weight: 900; }
+
+.fa-1x {
+  font-size: 1em; }
+
+.fa-2x {
+  font-size: 2em; }
+
+.fa-3x {
+  font-size: 3em; }
+
+.fa-4x {
+  font-size: 4em; }
+
+.fa-5x {
+  font-size: 5em; }
+
+.fa-6x {
+  font-size: 6em; }
+
+.fa-7x {
+  font-size: 7em; }
+
+.fa-8x {
+  font-size: 8em; }
+
+.fa-9x {
+  font-size: 9em; }
+
+.fa-10x {
+  font-size: 10em; }
+
+.fa-2xs {
+  font-size: 0.625em;
+  line-height: 0.1em;
+  vertical-align: 0.225em; }
+
+.fa-xs {
+  font-size: 0.75em;
+  line-height: 0.08333em;
+  vertical-align: 0.125em; }
+
+.fa-sm {
+  font-size: 0.875em;
+  line-height: 0.07143em;
+  vertical-align: 0.05357em; }
+
+.fa-lg {
+  font-size: 1.25em;
+  line-height: 0.05em;
+  vertical-align: -0.075em; }
+
+.fa-xl {
+  font-size: 1.5em;
+  line-height: 0.04167em;
+  vertical-align: -0.125em; }
+
+.fa-2xl {
+  font-size: 2em;
+  line-height: 0.03125em;
+  vertical-align: -0.1875em; }
+
+.fa-fw {
+  text-align: center;
+  width: 1.25em; }
+
+.fa-ul {
+  list-style-type: none;
+  margin-left: var(--fa-li-margin, 2.5em);
+  padding-left: 0; }
+  .fa-ul > li {
+    position: relative; }
+
+.fa-li {
+  left: calc(var(--fa-li-width, 2em) * -1);
+  position: absolute;
+  text-align: center;
+  width: var(--fa-li-width, 2em);
+  line-height: inherit; }
+
+.fa-border {
+  border-color: var(--fa-border-color, #eee);
+  border-radius: var(--fa-border-radius, 0.1em);
+  border-style: var(--fa-border-style, solid);
+  border-width: var(--fa-border-width, 0.08em);
+  padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }
+
+.fa-pull-left {
+  float: left;
+  margin-right: var(--fa-pull-margin, 0.3em); }
+
+.fa-pull-right {
+  float: right;
+  margin-left: var(--fa-pull-margin, 0.3em); }
+
+.fa-beat {
+  -webkit-animation-name: fa-beat;
+          animation-name: fa-beat;
+  -webkit-animation-delay: var(--fa-animation-delay, 0s);
+          animation-delay: var(--fa-animation-delay, 0s);
+  -webkit-animation-direction: var(--fa-animation-direction, normal);
+          animation-direction: var(--fa-animation-direction, normal);
+  -webkit-animation-duration: var(--fa-animation-duration, 1s);
+          animation-duration: var(--fa-animation-duration, 1s);
+  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+  -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
+          animation-timing-function: var(--fa-animation-timing, ease-in-out); }
+
+.fa-bounce {
+  -webkit-animation-name: fa-bounce;
+          animation-name: fa-bounce;
+  -webkit-animation-delay: var(--fa-animation-delay, 0s);
+          animation-delay: var(--fa-animation-delay, 0s);
+  -webkit-animation-direction: var(--fa-animation-direction, normal);
+          animation-direction: var(--fa-animation-direction, normal);
+  -webkit-animation-duration: var(--fa-animation-duration, 1s);
+          animation-duration: var(--fa-animation-duration, 1s);
+  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
+          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }
+
+.fa-fade {
+  -webkit-animation-name: fa-fade;
+          animation-name: fa-fade;
+  -webkit-animation-delay: var(--fa-animation-delay, 0s);
+          animation-delay: var(--fa-animation-delay, 0s);
+  -webkit-animation-direction: var(--fa-animation-direction, normal);
+          animation-direction: var(--fa-animation-direction, normal);
+  -webkit-animation-duration: var(--fa-animation-duration, 1s);
+          animation-duration: var(--fa-animation-duration, 1s);
+  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
+          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
+
+.fa-beat-fade {
+  -webkit-animation-name: fa-beat-fade;
+          animation-name: fa-beat-fade;
+  -webkit-animation-delay: var(--fa-animation-delay, 0s);
+          animation-delay: var(--fa-animation-delay, 0s);
+  -webkit-animation-direction: var(--fa-animation-direction, normal);
+          animation-direction: var(--fa-animation-direction, normal);
+  -webkit-animation-duration: var(--fa-animation-duration, 1s);
+          animation-duration: var(--fa-animation-duration, 1s);
+  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
+          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
+
+.fa-flip {
+  -webkit-animation-name: fa-flip;
+          animation-name: fa-flip;
+  -webkit-animation-delay: var(--fa-animation-delay, 0s);
+          animation-delay: var(--fa-animation-delay, 0s);
+  -webkit-animation-direction: var(--fa-animation-direction, normal);
+          animation-direction: var(--fa-animation-direction, normal);
+  -webkit-animation-duration: var(--fa-animation-duration, 1s);
+          animation-duration: var(--fa-animation-duration, 1s);
+  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+  -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
+          animation-timing-function: var(--fa-animation-timing, ease-in-out); }
+
+.fa-shake {
+  -webkit-animation-name: fa-shake;
+          animation-name: fa-shake;
+  -webkit-animation-delay: var(--fa-animation-delay, 0s);
+          animation-delay: var(--fa-animation-delay, 0s);
+  -webkit-animation-direction: var(--fa-animation-direction, normal);
+          animation-direction: var(--fa-animation-direction, normal);
+  -webkit-animation-duration: var(--fa-animation-duration, 1s);
+          animation-duration: var(--fa-animation-duration, 1s);
+  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+  -webkit-animation-timing-function: var(--fa-animation-timing, linear);
+          animation-timing-function: var(--fa-animation-timing, linear); }
+
+.fa-spin {
+  -webkit-animation-name: fa-spin;
+          animation-name: fa-spin;
+  -webkit-animation-delay: var(--fa-animation-delay, 0s);
+          animation-delay: var(--fa-animation-delay, 0s);
+  -webkit-animation-direction: var(--fa-animation-direction, normal);
+          animation-direction: var(--fa-animation-direction, normal);
+  -webkit-animation-duration: var(--fa-animation-duration, 2s);
+          animation-duration: var(--fa-animation-duration, 2s);
+  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+  -webkit-animation-timing-function: var(--fa-animation-timing, linear);
+          animation-timing-function: var(--fa-animation-timing, linear); }
+
+.fa-spin-reverse {
+  --fa-animation-direction: reverse; }
+
+.fa-pulse,
+.fa-spin-pulse {
+  -webkit-animation-name: fa-spin;
+          animation-name: fa-spin;
+  -webkit-animation-direction: var(--fa-animation-direction, normal);
+          animation-direction: var(--fa-animation-direction, normal);
+  -webkit-animation-duration: var(--fa-animation-duration, 1s);
+          animation-duration: var(--fa-animation-duration, 1s);
+  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+  -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
+          animation-timing-function: var(--fa-animation-timing, steps(8)); }
+
+@media (prefers-reduced-motion: reduce) {
+  .fa-beat,
+  .fa-bounce,
+  .fa-fade,
+  .fa-beat-fade,
+  .fa-flip,
+  .fa-pulse,
+  .fa-shake,
+  .fa-spin,
+  .fa-spin-pulse {
+    -webkit-animation-delay: -1ms;
+            animation-delay: -1ms;
+    -webkit-animation-duration: 1ms;
+            animation-duration: 1ms;
+    -webkit-animation-iteration-count: 1;
+            animation-iteration-count: 1;
+    transition-delay: 0s;
+    transition-duration: 0s; } }
+
+@-webkit-keyframes fa-beat {
+  0%, 90% {
+    -webkit-transform: scale(1);
+            transform: scale(1); }
+  45% {
+    -webkit-transform: scale(var(--fa-beat-scale, 1.25));
+            transform: scale(var(--fa-beat-scale, 1.25)); } }
+
+@keyframes fa-beat {
+  0%, 90% {
+    -webkit-transform: scale(1);
+            transform: scale(1); }
+  45% {
+    -webkit-transform: scale(var(--fa-beat-scale, 1.25));
+            transform: scale(var(--fa-beat-scale, 1.25)); } }
+
+@-webkit-keyframes fa-bounce {
+  0% {
+    -webkit-transform: scale(1, 1) translateY(0);
+            transform: scale(1, 1) translateY(0); }
+  10% {
+    -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
+            transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
+  30% {
+    -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
+            transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
+  50% {
+    -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
+            transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
+  57% {
+    -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
+            transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
+  64% {
+    -webkit-transform: scale(1, 1) translateY(0);
+            transform: scale(1, 1) translateY(0); }
+  100% {
+    -webkit-transform: scale(1, 1) translateY(0);
+            transform: scale(1, 1) translateY(0); } }
+
+@keyframes fa-bounce {
+  0% {
+    -webkit-transform: scale(1, 1) translateY(0);
+            transform: scale(1, 1) translateY(0); }
+  10% {
+    -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
+            transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
+  30% {
+    -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
+            transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
+  50% {
+    -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
+            transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
+  57% {
+    -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
+            transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
+  64% {
+    -webkit-transform: scale(1, 1) translateY(0);
+            transform: scale(1, 1) translateY(0); }
+  100% {
+    -webkit-transform: scale(1, 1) translateY(0);
+            transform: scale(1, 1) translateY(0); } }
+
+@-webkit-keyframes fa-fade {
+  50% {
+    opacity: var(--fa-fade-opacity, 0.4); } }
+
+@keyframes fa-fade {
+  50% {
+    opacity: var(--fa-fade-opacity, 0.4); } }
+
+@-webkit-keyframes fa-beat-fade {
+  0%, 100% {
+    opacity: var(--fa-beat-fade-opacity, 0.4);
+    -webkit-transform: scale(1);
+            transform: scale(1); }
+  50% {
+    opacity: 1;
+    -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
+            transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
+
+@keyframes fa-beat-fade {
+  0%, 100% {
+    opacity: var(--fa-beat-fade-opacity, 0.4);
+    -webkit-transform: scale(1);
+            transform: scale(1); }
+  50% {
+    opacity: 1;
+    -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
+            transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
+
+@-webkit-keyframes fa-flip {
+  50% {
+    -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
+            transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
+
+@keyframes fa-flip {
+  50% {
+    -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
+            transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
+
+@-webkit-keyframes fa-shake {
+  0% {
+    -webkit-transform: rotate(-15deg);
+            transform: rotate(-15deg); }
+  4% {
+    -webkit-transform: rotate(15deg);
+            transform: rotate(15deg); }
+  8%, 24% {
+    -webkit-transform: rotate(-18deg);
+            transform: rotate(-18deg); }
+  12%, 28% {
+    -webkit-transform: rotate(18deg);
+            transform: rotate(18deg); }
+  16% {
+    -webkit-transform: rotate(-22deg);
+            transform: rotate(-22deg); }
+  20% {
+    -webkit-transform: rotate(22deg);
+            transform: rotate(22deg); }
+  32% {
+    -webkit-transform: rotate(-12deg);
+            transform: rotate(-12deg); }
+  36% {
+    -webkit-transform: rotate(12deg);
+            transform: rotate(12deg); }
+  40%, 100% {
+    -webkit-transform: rotate(0deg);
+            transform: rotate(0deg); } }
+
+@keyframes fa-shake {
+  0% {
+    -webkit-transform: rotate(-15deg);
+            transform: rotate(-15deg); }
+  4% {
+    -webkit-transform: rotate(15deg);
+            transform: rotate(15deg); }
+  8%, 24% {
+    -webkit-transform: rotate(-18deg);
+            transform: rotate(-18deg); }
+  12%, 28% {
+    -webkit-transform: rotate(18deg);
+            transform: rotate(18deg); }
+  16% {
+    -webkit-transform: rotate(-22deg);
+            transform: rotate(-22deg); }
+  20% {
+    -webkit-transform: rotate(22deg);
+            transform: rotate(22deg); }
+  32% {
+    -webkit-transform: rotate(-12deg);
+            transform: rotate(-12deg); }
+  36% {
+    -webkit-transform: rotate(12deg);
+            transform: rotate(12deg); }
+  40%, 100% {
+    -webkit-transform: rotate(0deg);
+            transform: rotate(0deg); } }
+
+@-webkit-keyframes fa-spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+            transform: rotate(0deg); }
+  100% {
+    -webkit-transform: rotate(360deg);
+            transform: rotate(360deg); } }
+
+@keyframes fa-spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+            transform: rotate(0deg); }
+  100% {
+    -webkit-transform: rotate(360deg);
+            transform: rotate(360deg); } }
+
+.fa-rotate-90 {
+  -webkit-transform: rotate(90deg);
+          transform: rotate(90deg); }
+
+.fa-rotate-180 {
+  -webkit-transform: rotate(180deg);
+          transform: rotate(180deg); }
+
+.fa-rotate-270 {
+  -webkit-transform: rotate(270deg);
+          transform: rotate(270deg); }
+
+.fa-flip-horizontal {
+  -webkit-transform: scale(-1, 1);
+          transform: scale(-1, 1); }
+
+.fa-flip-vertical {
+  -webkit-transform: scale(1, -1);
+          transform: scale(1, -1); }
+
+.fa-flip-both,
+.fa-flip-horizontal.fa-flip-vertical {
+  -webkit-transform: scale(-1, -1);
+          transform: scale(-1, -1); }
+
+.fa-rotate-by {
+  -webkit-transform: rotate(var(--fa-rotate-angle, none));
+          transform: rotate(var(--fa-rotate-angle, none)); }
+
+.fa-stack {
+  display: inline-block;
+  height: 2em;
+  line-height: 2em;
+  position: relative;
+  vertical-align: middle;
+  width: 2.5em; }
+
+.fa-stack-1x,
+.fa-stack-2x {
+  left: 0;
+  position: absolute;
+  text-align: center;
+  width: 100%;
+  z-index: var(--fa-stack-z-index, auto); }
+
+.fa-stack-1x {
+  line-height: inherit; }
+
+.fa-stack-2x {
+  font-size: 2em; }
+
+.fa-inverse {
+  color: var(--fa-inverse, #fff); }
+
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+readers do not read off random characters that represent icons */
+.fa-0::before {
+  content: "\30"; }
+
+.fa-1::before {
+  content: "\31"; }
+
+.fa-2::before {
+  content: "\32"; }
+
+.fa-3::before {
+  content: "\33"; }
+
+.fa-4::before {
+  content: "\34"; }
+
+.fa-5::before {
+  content: "\35"; }
+
+.fa-6::before {
+  content: "\36"; }
+
+.fa-7::before {
+  content: "\37"; }
+
+.fa-8::before {
+  content: "\38"; }
+
+.fa-9::before {
+  content: "\39"; }
+
+.fa-fill-drip::before {
+  content: "\f576"; }
+
+.fa-arrows-to-circle::before {
+  content: "\e4bd"; }
+
+.fa-circle-chevron-right::before {
+  content: "\f138"; }
+
+.fa-chevron-circle-right::before {
+  content: "\f138"; }
+
+.fa-wagon-covered::before {
+  content: "\f8ee"; }
+
+.fa-line-height::before {
+  content: "\f871"; }
+
+.fa-bagel::before {
+  content: "\e3d7"; }
+
+.fa-transporter-7::before {
+  content: "\e2a8"; }
+
+.fa-at::before {
+  content: "\40"; }
+
+.fa-rectangles-mixed::before {
+  content: "\e323"; }
+
+.fa-phone-arrow-up-right::before {
+  content: "\e224"; }
+
+.fa-phone-arrow-up::before {
+  content: "\e224"; }
+
+.fa-phone-outgoing::before {
+  content: "\e224"; }
+
+.fa-trash-can::before {
+  content: "\f2ed"; }
+
+.fa-trash-alt::before {
+  content: "\f2ed"; }
+
+.fa-circle-l::before {
+  content: "\e114"; }
+
+.fa-head-side-goggles::before {
+  content: "\f6ea"; }
+
+.fa-head-vr::before {
+  content: "\f6ea"; }
+
+.fa-text-height::before {
+  content: "\f034"; }
+
+.fa-user-xmark::before {
+  content: "\f235"; }
+
+.fa-user-times::before {
+  content: "\f235"; }
+
+.fa-face-hand-yawn::before {
+  content: "\e379"; }
+
+.fa-gauge-simple-min::before {
+  content: "\f62d"; }
+
+.fa-tachometer-slowest::before {
+  content: "\f62d"; }
+
+.fa-stethoscope::before {
+  content: "\f0f1"; }
+
+.fa-coffin::before {
+  content: "\f6c6"; }
+
+.fa-message::before {
+  content: "\f27a"; }
+
+.fa-comment-alt::before {
+  content: "\f27a"; }
+
+.fa-salad::before {
+  content: "\f81e"; }
+
+.fa-bowl-salad::before {
+  content: "\f81e"; }
+
+.fa-info::before {
+  content: "\f129"; }
+
+.fa-robot-astromech::before {
+  content: "\e2d2"; }
+
+.fa-ring-diamond::before {
+  content: "\e5ab"; }
+
+.fa-fondue-pot::before {
+  content: "\e40d"; }
+
+.fa-theta::before {
+  content: "\f69e"; }
+
+.fa-face-hand-peeking::before {
+  content: "\e481"; }
+
+.fa-square-user::before {
+  content: "\e283"; }
+
+.fa-down-left-and-up-right-to-center::before {
+  content: "\f422"; }
+
+.fa-compress-alt::before {
+  content: "\f422"; }
+
+.fa-explosion::before {
+  content: "\e4e9"; }
+
+.fa-file-lines::before {
+  content: "\f15c"; }
+
+.fa-file-alt::before {
+  content: "\f15c"; }
+
+.fa-file-text::before {
+  content: "\f15c"; }
+
+.fa-wave-square::before {
+  content: "\f83e"; }
+
+.fa-ring::before {
+  content: "\f70b"; }
+
+.fa-building-un::before {
+  content: "\e4d9"; }
+
+.fa-dice-three::before {
+  content: "\f527"; }
+
+.fa-tire-pressure-warning::before {
+  content: "\f633"; }
+
+.fa-wifi-fair::before {
+  content: "\f6ab"; }
+
+.fa-wifi-2::before {
+  content: "\f6ab"; }
+
+.fa-calendar-days::before {
+  content: "\f073"; }
+
+.fa-calendar-alt::before {
+  content: "\f073"; }
+
+.fa-mp3-player::before {
+  content: "\f8ce"; }
+
+.fa-anchor-circle-check::before {
+  content: "\e4aa"; }
+
+.fa-tally-4::before {
+  content: "\e297"; }
+
+.fa-rectangle-history::before {
+  content: "\e4a2"; }
+
+.fa-building-circle-arrow-right::before {
+  content: "\e4d1"; }
+
+.fa-volleyball::before {
+  content: "\f45f"; }
+
+.fa-volleyball-ball::before {
+  content: "\f45f"; }
+
+.fa-sun-haze::before {
+  content: "\f765"; }
+
+.fa-text-size::before {
+  content: "\f894"; }
+
+.fa-ufo::before {
+  content: "\e047"; }
+
+.fa-fork::before {
+  content: "\f2e3"; }
+
+.fa-utensil-fork::before {
+  content: "\f2e3"; }
+
+.fa-arrows-up-to-line::before {
+  content: "\e4c2"; }
+
+.fa-mobile-signal::before {
+  content: "\e1ef"; }
+
+.fa-barcode-scan::before {
+  content: "\f465"; }
+
+.fa-sort-down::before {
+  content: "\f0dd"; }
+
+.fa-sort-desc::before {
+  content: "\f0dd"; }
+
+.fa-folder-arrow-down::before {
+  content: "\e053"; }
+
+.fa-folder-download::before {
+  content: "\e053"; }
+
+.fa-circle-minus::before {
+  content: "\f056"; }
+
+.fa-minus-circle::before {
+  content: "\f056"; }
+
+.fa-face-icicles::before {
+  content: "\e37c"; }
+
+.fa-shovel::before {
+  content: "\f713"; }
+
+.fa-door-open::before {
+  content: "\f52b"; }
+
+.fa-films::before {
+  content: "\e17a"; }
+
+.fa-right-from-bracket::before {
+  content: "\f2f5"; }
+
+.fa-sign-out-alt::before {
+  content: "\f2f5"; }
+
+.fa-face-glasses::before {
+  content: "\e377"; }
+
+.fa-nfc::before {
+  content: "\e1f7"; }
+
+.fa-atom::before {
+  content: "\f5d2"; }
+
+.fa-soap::before {
+  content: "\e06e"; }
+
+.fa-icons::before {
+  content: "\f86d"; }
+
+.fa-heart-music-camera-bolt::before {
+  content: "\f86d"; }
+
+.fa-microphone-lines-slash::before {
+  content: "\f539"; }
+
+.fa-microphone-alt-slash::before {
+  content: "\f539"; }
+
+.fa-closed-captioning-slash::before {
+  content: "\e135"; }
+
+.fa-calculator-simple::before {
+  content: "\f64c"; }
+
+.fa-calculator-alt::before {
+  content: "\f64c"; }
+
+.fa-bridge-circle-check::before {
+  content: "\e4c9"; }
+
+.fa-sliders-up::before {
+  content: "\f3f1"; }
+
+.fa-sliders-v::before {
+  content: "\f3f1"; }
+
+.fa-location-minus::before {
+  content: "\f609"; }
+
+.fa-map-marker-minus::before {
+  content: "\f609"; }
+
+.fa-pump-medical::before {
+  content: "\e06a"; }
+
+.fa-fingerprint::before {
+  content: "\f577"; }
+
+.fa-ski-boot::before {
+  content: "\e3cc"; }
+
+.fa-standard-definition::before {
+  content: "\e28a"; }
+
+.fa-rectangle-sd::before {
+  content: "\e28a"; }
+
+.fa-h1::before {
+  content: "\f313"; }
+
+.fa-hand-point-right::before {
+  content: "\f0a4"; }
+
+.fa-magnifying-glass-location::before {
+  content: "\f689"; }
+
+.fa-search-location::before {
+  content: "\f689"; }
+
+.fa-message-bot::before {
+  content: "\e3b8"; }
+
+.fa-forward-step::before {
+  content: "\f051"; }
+
+.fa-step-forward::before {
+  content: "\f051"; }
+
+.fa-face-smile-beam::before {
+  content: "\f5b8"; }
+
+.fa-smile-beam::before {
+  content: "\f5b8"; }
+
+.fa-light-ceiling::before {
+  content: "\e016"; }
+
+.fa-message-exclamation::before {
+  content: "\f4a5"; }
+
+.fa-comment-alt-exclamation::before {
+  content: "\f4a5"; }
+
+.fa-bowl-scoop::before {
+  content: "\e3de"; }
+
+.fa-bowl-shaved-ice::before {
+  content: "\e3de"; }
+
+.fa-square-x::before {
+  content: "\e286"; }
+
+.fa-utility-pole-double::before {
+  content: "\e2c4"; }
+
+.fa-flag-checkered::before {
+  content: "\f11e"; }
+
+.fa-chevrons-up::before {
+  content: "\f325"; }
+
+.fa-chevron-double-up::before {
+  content: "\f325"; }
+
+.fa-football::before {
+  content: "\f44e"; }
+
+.fa-football-ball::before {
+  content: "\f44e"; }
+
+.fa-user-vneck::before {
+  content: "\e461"; }
+
+.fa-school-circle-exclamation::before {
+  content: "\e56c"; }
+
+.fa-crop::before {
+  content: "\f125"; }
+
+.fa-angles-down::before {
+  content: "\f103"; }
+
+.fa-angle-double-down::before {
+  content: "\f103"; }
+
+.fa-users-rectangle::before {
+  content: "\e594"; }
+
+.fa-people-roof::before {
+  content: "\e537"; }
+
+.fa-square-arrow-right::before {
+  content: "\f33b"; }
+
+.fa-arrow-square-right::before {
+  content: "\f33b"; }
+
+.fa-location-plus::before {
+  content: "\f60a"; }
+
+.fa-map-marker-plus::before {
+  content: "\f60a"; }
+
+.fa-lightbulb-exclamation-on::before {
+  content: "\e1ca"; }
+
+.fa-people-line::before {
+  content: "\e534"; }
+
+.fa-beer-mug-empty::before {
+  content: "\f0fc"; }
+
+.fa-beer::before {
+  content: "\f0fc"; }
+
+.fa-crate-empty::before {
+  content: "\e151"; }
+
+.fa-diagram-predecessor::before {
+  content: "\e477"; }
+
+.fa-transporter::before {
+  content: "\e042"; }
+
+.fa-calendar-circle-user::before {
+  content: "\e471"; }
+
+.fa-arrow-up-long::before {
+  content: "\f176"; }
+
+.fa-long-arrow-up::before {
+  content: "\f176"; }
+
+.fa-person-carry-box::before {
+  content: "\f4cf"; }
+
+.fa-person-carry::before {
+  content: "\f4cf"; }
+
+.fa-fire-flame-simple::before {
+  content: "\f46a"; }
+
+.fa-burn::before {
+  content: "\f46a"; }
+
+.fa-person::before {
+  content: "\f183"; }
+
+.fa-male::before {
+  content: "\f183"; }
+
+.fa-laptop::before {
+  content: "\f109"; }
+
+.fa-file-csv::before {
+  content: "\f6dd"; }
+
+.fa-menorah::before {
+  content: "\f676"; }
+
+.fa-union::before {
+  content: "\f6a2"; }
+
+.fa-chevrons-left::before {
+  content: "\f323"; }
+
+.fa-chevron-double-left::before {
+  content: "\f323"; }
+
+.fa-circle-heart::before {
+  content: "\f4c7"; }
+
+.fa-heart-circle::before {
+  content: "\f4c7"; }
+
+.fa-truck-plane::before {
+  content: "\e58f"; }
+
+.fa-record-vinyl::before {
+  content: "\f8d9"; }
+
+.fa-bring-forward::before {
+  content: "\f856"; }
+
+.fa-square-p::before {
+  content: "\e279"; }
+
+.fa-face-grin-stars::before {
+  content: "\f587"; }
+
+.fa-grin-stars::before {
+  content: "\f587"; }
+
+.fa-sigma::before {
+  content: "\f68b"; }
+
+.fa-camera-movie::before {
+  content: "\f8a9"; }
+
+.fa-bong::before {
+  content: "\f55c"; }
+
+.fa-clarinet::before {
+  content: "\f8ad"; }
+
+.fa-truck-flatbed::before {
+  content: "\e2b6"; }
+
+.fa-spaghetti-monster-flying::before {
+  content: "\f67b"; }
+
+.fa-pastafarianism::before {
+  content: "\f67b"; }
+
+.fa-arrow-down-up-across-line::before {
+  content: "\e4af"; }
+
+.fa-leaf-heart::before {
+  content: "\f4cb"; }
+
+.fa-house-building::before {
+  content: "\e1b1"; }
+
+.fa-cheese-swiss::before {
+  content: "\f7f0"; }
+
+.fa-spoon::before {
+  content: "\f2e5"; }
+
+.fa-utensil-spoon::before {
+  content: "\f2e5"; }
+
+.fa-jar-wheat::before {
+  content: "\e517"; }
+
+.fa-envelopes-bulk::before {
+  content: "\f674"; }
+
+.fa-mail-bulk::before {
+  content: "\f674"; }
+
+.fa-file-circle-exclamation::before {
+  content: "\e4eb"; }
+
+.fa-bow-arrow::before {
+  content: "\f6b9"; }
+
+.fa-cart-xmark::before {
+  content: "\e0dd"; }
+
+.fa-hexagon-xmark::before {
+  content: "\f2ee"; }
+
+.fa-times-hexagon::before {
+  content: "\f2ee"; }
+
+.fa-xmark-hexagon::before {
+  content: "\f2ee"; }
+
+.fa-circle-h::before {
+  content: "\f47e"; }
+
+.fa-hospital-symbol::before {
+  content: "\f47e"; }
+
+.fa-merge::before {
+  content: "\e526"; }
+
+.fa-pager::before {
+  content: "\f815"; }
+
+.fa-cart-minus::before {
+  content: "\e0db"; }
+
+.fa-address-book::before {
+  content: "\f2b9"; }
+
+.fa-contact-book::before {
+  content: "\f2b9"; }
+
+.fa-pan-frying::before {
+  content: "\e42c"; }
+
+.fa-grid::before {
+  content: "\e195"; }
+
+.fa-grid-3::before {
+  content: "\e195"; }
+
+.fa-football-helmet::before {
+  content: "\f44f"; }
+
+.fa-hand-love::before {
+  content: "\e1a5"; }
+
+.fa-trees::before {
+  content: "\f724"; }
+
+.fa-strikethrough::before {
+  content: "\f0cc"; }
+
+.fa-page::before {
+  content: "\e428"; }
+
+.fa-k::before {
+  content: "\4b"; }
+
+.fa-diagram-previous::before {
+  content: "\e478"; }
+
+.fa-gauge-min::before {
+  content: "\f628"; }
+
+.fa-tachometer-alt-slowest::before {
+  content: "\f628"; }
+
+.fa-folder-grid::before {
+  content: "\e188"; }
+
+.fa-eggplant::before {
+  content: "\e16c"; }
+
+.fa-ram::before {
+  content: "\f70a"; }
+
+.fa-landmark-flag::before {
+  content: "\e51c"; }
+
+.fa-lips::before {
+  content: "\f600"; }
+
+.fa-pencil::before {
+  content: "\f303"; }
+
+.fa-pencil-alt::before {
+  content: "\f303"; }
+
+.fa-backward::before {
+  content: "\f04a"; }
+
+.fa-caret-right::before {
+  content: "\f0da"; }
+
+.fa-comments::before {
+  content: "\f086"; }
+
+.fa-paste::before {
+  content: "\f0ea"; }
+
+.fa-file-clipboard::before {
+  content: "\f0ea"; }
+
+.fa-desktop-arrow-down::before {
+  content: "\e155"; }
+
+.fa-code-pull-request::before {
+  content: "\e13c"; }
+
+.fa-pumpkin::before {
+  content: "\f707"; }
+
+.fa-clipboard-list::before {
+  content: "\f46d"; }
+
+.fa-pen-field::before {
+  content: "\e211"; }
+
+.fa-blueberries::before {
+  content: "\e2e8"; }
+
+.fa-truck-ramp-box::before {
+  content: "\f4de"; }
+
+.fa-truck-loading::before {
+  content: "\f4de"; }
+
+.fa-note::before {
+  content: "\e1ff"; }
+
+.fa-arrow-down-to-square::before {
+  content: "\e096"; }
+
+.fa-user-check::before {
+  content: "\f4fc"; }
+
+.fa-cloud-xmark::before {
+  content: "\e35f"; }
+
+.fa-vial-virus::before {
+  content: "\e597"; }
+
+.fa-book-blank::before {
+  content: "\f5d9"; }
+
+.fa-book-alt::before {
+  content: "\f5d9"; }
+
+.fa-golf-flag-hole::before {
+  content: "\e3ac"; }
+
+.fa-message-arrow-down::before {
+  content: "\e1db"; }
+
+.fa-comment-alt-arrow-down::before {
+  content: "\e1db"; }
+
+.fa-face-unamused::before {
+  content: "\e39f"; }
+
+.fa-sheet-plastic::before {
+  content: "\e571"; }
+
+.fa-circle-9::before {
+  content: "\e0f6"; }
+
+.fa-blog::before {
+  content: "\f781"; }
+
+.fa-user-ninja::before {
+  content: "\f504"; }
+
+.fa-pencil-slash::before {
+  content: "\e215"; }
+
+.fa-bowling-pins::before {
+  content: "\f437"; }
+
+.fa-person-arrow-up-from-line::before {
+  content: "\e539"; }
+
+.fa-down-right::before {
+  content: "\e16b"; }
+
+.fa-scroll-torah::before {
+  content: "\f6a0"; }
+
+.fa-torah::before {
+  content: "\f6a0"; }
+
+.fa-blinds-open::before {
+  content: "\f8fc"; }
+
+.fa-fence::before {
+  content: "\e303"; }
+
+.fa-up::before {
+  content: "\f357"; }
+
+.fa-arrow-alt-up::before {
+  content: "\f357"; }
+
+.fa-broom-ball::before {
+  content: "\f458"; }
+
+.fa-quidditch::before {
+  content: "\f458"; }
+
+.fa-quidditch-broom-ball::before {
+  content: "\f458"; }
+
+.fa-drumstick::before {
+  content: "\f6d6"; }
+
+.fa-square-v::before {
+  content: "\e284"; }
+
+.fa-face-awesome::before {
+  content: "\e409"; }
+
+.fa-gave-dandy::before {
+  content: "\e409"; }
+
+.fa-dial-off::before {
+  content: "\e162"; }
+
+.fa-toggle-off::before {
+  content: "\f204"; }
+
+.fa-face-smile-horns::before {
+  content: "\e391"; }
+
+.fa-box-archive::before {
+  content: "\f187"; }
+
+.fa-archive::before {
+  content: "\f187"; }
+
+.fa-grapes::before {
+  content: "\e306"; }
+
+.fa-person-drowning::before {
+  content: "\e545"; }
+
+.fa-dial-max::before {
+  content: "\e15e"; }
+
+.fa-circle-m::before {
+  content: "\e115"; }
+
+.fa-calendar-image::before {
+  content: "\e0d4"; }
+
+.fa-circle-caret-down::before {
+  content: "\f32d"; }
+
+.fa-caret-circle-down::before {
+  content: "\f32d"; }
+
+.fa-arrow-down-9-1::before {
+  content: "\f886"; }
+
+.fa-sort-numeric-desc::before {
+  content: "\f886"; }
+
+.fa-sort-numeric-down-alt::before {
+  content: "\f886"; }
+
+.fa-face-grin-tongue-squint::before {
+  content: "\f58a"; }
+
+.fa-grin-tongue-squint::before {
+  content: "\f58a"; }
+
+.fa-shish-kebab::before {
+  content: "\f821"; }
+
+.fa-spray-can::before {
+  content: "\f5bd"; }
+
+.fa-alarm-snooze::before {
+  content: "\f845"; }
+
+.fa-scarecrow::before {
+  content: "\f70d"; }
+
+.fa-truck-monster::before {
+  content: "\f63b"; }
+
+.fa-gift-card::before {
+  content: "\f663"; }
+
+.fa-w::before {
+  content: "\57"; }
+
+.fa-code-pull-request-draft::before {
+  content: "\e3fa"; }
+
+.fa-square-b::before {
+  content: "\e264"; }
+
+.fa-elephant::before {
+  content: "\f6da"; }
+
+.fa-earth-africa::before {
+  content: "\f57c"; }
+
+.fa-globe-africa::before {
+  content: "\f57c"; }
+
+.fa-rainbow::before {
+  content: "\f75b"; }
+
+.fa-circle-notch::before {
+  content: "\f1ce"; }
+
+.fa-tablet-screen-button::before {
+  content: "\f3fa"; }
+
+.fa-tablet-alt::before {
+  content: "\f3fa"; }
+
+.fa-paw::before {
+  content: "\f1b0"; }
+
+.fa-message-question::before {
+  content: "\e1e3"; }
+
+.fa-cloud::before {
+  content: "\f0c2"; }
+
+.fa-trowel-bricks::before {
+  content: "\e58a"; }
+
+.fa-square-3::before {
+  content: "\e258"; }
+
+.fa-face-flushed::before {
+  content: "\f579"; }
+
+.fa-flushed::before {
+  content: "\f579"; }
+
+.fa-hospital-user::before {
+  content: "\f80d"; }
+
+.fa-microwave::before {
+  content: "\e01b"; }
+
+.fa-tent-arrow-left-right::before {
+  content: "\e57f"; }
+
+.fa-cart-circle-arrow-up::before {
+  content: "\e3f0"; }
+
+.fa-trash-clock::before {
+  content: "\e2b0"; }
+
+.fa-gavel::before {
+  content: "\f0e3"; }
+
+.fa-legal::before {
+  content: "\f0e3"; }
+
+.fa-sprinkler-ceiling::before {
+  content: "\e44c"; }
+
+.fa-browsers::before {
+  content: "\e0cb"; }
+
+.fa-trillium::before {
+  content: "\e588"; }
+
+.fa-music-slash::before {
+  content: "\f8d1"; }
+
+.fa-truck-ramp::before {
+  content: "\f4e0"; }
+
+.fa-binoculars::before {
+  content: "\f1e5"; }
+
+.fa-microphone-slash::before {
+  content: "\f131"; }
+
+.fa-box-tissue::before {
+  content: "\e05b"; }
+
+.fa-circle-c::before {
+  content: "\e101"; }
+
+.fa-star-christmas::before {
+  content: "\f7d4"; }
+
+.fa-chart-bullet::before {
+  content: "\e0e1"; }
+
+.fa-motorcycle::before {
+  content: "\f21c"; }
+
+.fa-tree-christmas::before {
+  content: "\f7db"; }
+
+.fa-tire-flat::before {
+  content: "\f632"; }
+
+.fa-sunglasses::before {
+  content: "\f892"; }
+
+.fa-badge::before {
+  content: "\f335"; }
+
+.fa-message-pen::before {
+  content: "\f4a4"; }
+
+.fa-comment-alt-edit::before {
+  content: "\f4a4"; }
+
+.fa-message-edit::before {
+  content: "\f4a4"; }
+
+.fa-bell-concierge::before {
+  content: "\f562"; }
+
+.fa-concierge-bell::before {
+  content: "\f562"; }
+
+.fa-pen-ruler::before {
+  content: "\f5ae"; }
+
+.fa-pencil-ruler::before {
+  content: "\f5ae"; }
+
+.fa-chess-rook-piece::before {
+  content: "\f448"; }
+
+.fa-chess-rook-alt::before {
+  content: "\f448"; }
+
+.fa-square-root::before {
+  content: "\f697"; }
+
+.fa-album-collection-circle-plus::before {
+  content: "\e48e"; }
+
+.fa-people-arrows::before {
+  content: "\e068"; }
+
+.fa-people-arrows-left-right::before {
+  content: "\e068"; }
+
+.fa-face-angry-horns::before {
+  content: "\e368"; }
+
+.fa-mars-and-venus-burst::before {
+  content: "\e523"; }
+
+.fa-tombstone::before {
+  content: "\f720"; }
+
+.fa-square-caret-right::before {
+  content: "\f152"; }
+
+.fa-caret-square-right::before {
+  content: "\f152"; }
+
+.fa-scissors::before {
+  content: "\f0c4"; }
+
+.fa-cut::before {
+  content: "\f0c4"; }
+
+.fa-list-music::before {
+  content: "\f8c9"; }
+
+.fa-sun-plant-wilt::before {
+  content: "\e57a"; }
+
+.fa-toilets-portable::before {
+  content: "\e584"; }
+
+.fa-hockey-puck::before {
+  content: "\f453"; }
+
+.fa-hyphen::before {
+  content: "\2d"; }
+
+.fa-table::before {
+  content: "\f0ce"; }
+
+.fa-user-chef::before {
+  content: "\e3d2"; }
+
+.fa-message-image::before {
+  content: "\e1e0"; }
+
+.fa-comment-alt-image::before {
+  content: "\e1e0"; }
+
+.fa-users-medical::before {
+  content: "\f830"; }
+
+.fa-sensor-triangle-exclamation::before {
+  content: "\e029"; }
+
+.fa-sensor-alert::before {
+  content: "\e029"; }
+
+.fa-magnifying-glass-arrow-right::before {
+  content: "\e521"; }
+
+.fa-tachograph-digital::before {
+  content: "\f566"; }
+
+.fa-digital-tachograph::before {
+  content: "\f566"; }
+
+.fa-face-mask::before {
+  content: "\e37f"; }
+
+.fa-pickleball::before {
+  content: "\e435"; }
+
+.fa-star-sharp-half::before {
+  content: "\e28c"; }
+
+.fa-users-slash::before {
+  content: "\e073"; }
+
+.fa-clover::before {
+  content: "\e139"; }
+
+.fa-meat::before {
+  content: "\f814"; }
+
+.fa-reply::before {
+  content: "\f3e5"; }
+
+.fa-mail-reply::before {
+  content: "\f3e5"; }
+
+.fa-star-and-crescent::before {
+  content: "\f699"; }
+
+.fa-empty-set::before {
+  content: "\f656"; }
+
+.fa-house-fire::before {
+  content: "\e50c"; }
+
+.fa-square-minus::before {
+  content: "\f146"; }
+
+.fa-minus-square::before {
+  content: "\f146"; }
+
+.fa-helicopter::before {
+  content: "\f533"; }
+
+.fa-bird::before {
+  content: "\e469"; }
+
+.fa-compass::before {
+  content: "\f14e"; }
+
+.fa-square-caret-down::before {
+  content: "\f150"; }
+
+.fa-caret-square-down::before {
+  content: "\f150"; }
+
+.fa-heart-half-stroke::before {
+  content: "\e1ac"; }
+
+.fa-heart-half-alt::before {
+  content: "\e1ac"; }
+
+.fa-file-circle-question::before {
+  content: "\e4ef"; }
+
+.fa-laptop-code::before {
+  content: "\f5fc"; }
+
+.fa-joystick::before {
+  content: "\f8c5"; }
+
+.fa-grill-fire::before {
+  content: "\e5a4"; }
+
+.fa-rectangle-vertical-history::before {
+  content: "\e237"; }
+
+.fa-swatchbook::before {
+  content: "\f5c3"; }
+
+.fa-prescription-bottle::before {
+  content: "\f485"; }
+
+.fa-bars::before {
+  content: "\f0c9"; }
+
+.fa-navicon::before {
+  content: "\f0c9"; }
+
+.fa-keyboard-left::before {
+  content: "\e1c3"; }
+
+.fa-people-group::before {
+  content: "\e533"; }
+
+.fa-hourglass-end::before {
+  content: "\f253"; }
+
+.fa-hourglass-3::before {
+  content: "\f253"; }
+
+.fa-heart-crack::before {
+  content: "\f7a9"; }
+
+.fa-heart-broken::before {
+  content: "\f7a9"; }
+
+.fa-face-beam-hand-over-mouth::before {
+  content: "\e47c"; }
+
+.fa-droplet-percent::before {
+  content: "\f750"; }
+
+.fa-humidity::before {
+  content: "\f750"; }
+
+.fa-square-up-right::before {
+  content: "\f360"; }
+
+.fa-external-link-square-alt::before {
+  content: "\f360"; }
+
+.fa-face-kiss-beam::before {
+  content: "\f597"; }
+
+.fa-kiss-beam::before {
+  content: "\f597"; }
+
+.fa-corn::before {
+  content: "\f6c7"; }
+
+.fa-roller-coaster::before {
+  content: "\e324"; }
+
+.fa-photo-film-music::before {
+  content: "\e228"; }
+
+.fa-radar::before {
+  content: "\e024"; }
+
+.fa-sickle::before {
+  content: "\f822"; }
+
+.fa-film::before {
+  content: "\f008"; }
+
+.fa-coconut::before {
+  content: "\e2f6"; }
+
+.fa-ruler-horizontal::before {
+  content: "\f547"; }
+
+.fa-shield-cross::before {
+  content: "\f712"; }
+
+.fa-cassette-tape::before {
+  content: "\f8ab"; }
+
+.fa-square-terminal::before {
+  content: "\e32a"; }
+
+.fa-people-robbery::before {
+  content: "\e536"; }
+
+.fa-lightbulb::before {
+  content: "\f0eb"; }
+
+.fa-caret-left::before {
+  content: "\f0d9"; }
+
+.fa-comment-middle::before {
+  content: "\e149"; }
+
+.fa-trash-can-list::before {
+  content: "\e2ab"; }
+
+.fa-block::before {
+  content: "\e46a"; }
+
+.fa-circle-exclamation::before {
+  content: "\f06a"; }
+
+.fa-exclamation-circle::before {
+  content: "\f06a"; }
+
+.fa-school-circle-xmark::before {
+  content: "\e56d"; }
+
+.fa-arrow-right-from-bracket::before {
+  content: "\f08b"; }
+
+.fa-sign-out::before {
+  content: "\f08b"; }
+
+.fa-face-frown-slight::before {
+  content: "\e376"; }
+
+.fa-circle-chevron-down::before {
+  content: "\f13a"; }
+
+.fa-chevron-circle-down::before {
+  content: "\f13a"; }
+
+.fa-sidebar-flip::before {
+  content: "\e24f"; }
+
+.fa-unlock-keyhole::before {
+  content: "\f13e"; }
+
+.fa-unlock-alt::before {
+  content: "\f13e"; }
+
+.fa-temperature-list::before {
+  content: "\e299"; }
+
+.fa-cloud-showers-heavy::before {
+  content: "\f740"; }
+
+.fa-headphones-simple::before {
+  content: "\f58f"; }
+
+.fa-headphones-alt::before {
+  content: "\f58f"; }
+
+.fa-sitemap::before {
+  content: "\f0e8"; }
+
+.fa-pipe-section::before {
+  content: "\e438"; }
+
+.fa-space-station-moon-construction::before {
+  content: "\e034"; }
+
+.fa-space-station-moon-alt::before {
+  content: "\e034"; }
+
+.fa-circle-dollar-to-slot::before {
+  content: "\f4b9"; }
+
+.fa-donate::before {
+  content: "\f4b9"; }
+
+.fa-memory::before {
+  content: "\f538"; }
+
+.fa-face-sleeping::before {
+  content: "\e38d"; }
+
+.fa-road-spikes::before {
+  content: "\e568"; }
+
+.fa-fire-burner::before {
+  content: "\e4f1"; }
+
+.fa-squirrel::before {
+  content: "\f71a"; }
+
+.fa-arrow-up-to-line::before {
+  content: "\f341"; }
+
+.fa-arrow-to-top::before {
+  content: "\f341"; }
+
+.fa-flag::before {
+  content: "\f024"; }
+
+.fa-face-cowboy-hat::before {
+  content: "\e36e"; }
+
+.fa-hanukiah::before {
+  content: "\f6e6"; }
+
+.fa-chart-scatter-3d::before {
+  content: "\e0e8"; }
+
+.fa-square-code::before {
+  content: "\e267"; }
+
+.fa-feather::before {
+  content: "\f52d"; }
+
+.fa-volume-low::before {
+  content: "\f027"; }
+
+.fa-volume-down::before {
+  content: "\f027"; }
+
+.fa-xmark-to-slot::before {
+  content: "\f771"; }
+
+.fa-times-to-slot::before {
+  content: "\f771"; }
+
+.fa-vote-nay::before {
+  content: "\f771"; }
+
+.fa-box-taped::before {
+  content: "\f49a"; }
+
+.fa-box-alt::before {
+  content: "\f49a"; }
+
+.fa-comment-slash::before {
+  content: "\f4b3"; }
+
+.fa-swords::before {
+  content: "\f71d"; }
+
+.fa-cloud-sun-rain::before {
+  content: "\f743"; }
+
+.fa-album::before {
+  content: "\f89f"; }
+
+.fa-circle-n::before {
+  content: "\e118"; }
+
+.fa-compress::before {
+  content: "\f066"; }
+
+.fa-wheat-awn::before {
+  content: "\e2cd"; }
+
+.fa-wheat-alt::before {
+  content: "\e2cd"; }
+
+.fa-ankh::before {
+  content: "\f644"; }
+
+.fa-hands-holding-child::before {
+  content: "\e4fa"; }
+
+.fa-asterisk::before {
+  content: "\2a"; }
+
+.fa-key-skeleton-left-right::before {
+  content: "\e3b4"; }
+
+.fa-comment-lines::before {
+  content: "\f4b0"; }
+
+.fa-luchador-mask::before {
+  content: "\f455"; }
+
+.fa-luchador::before {
+  content: "\f455"; }
+
+.fa-mask-luchador::before {
+  content: "\f455"; }
+
+.fa-square-check::before {
+  content: "\f14a"; }
+
+.fa-check-square::before {
+  content: "\f14a"; }
+
+.fa-shredder::before {
+  content: "\f68a"; }
+
+.fa-book-open-cover::before {
+  content: "\e0c0"; }
+
+.fa-book-open-alt::before {
+  content: "\e0c0"; }
+
+.fa-sandwich::before {
+  content: "\f81f"; }
+
+.fa-peseta-sign::before {
+  content: "\e221"; }
+
+.fa-square-parking-slash::before {
+  content: "\f617"; }
+
+.fa-parking-slash::before {
+  content: "\f617"; }
+
+.fa-train-tunnel::before {
+  content: "\e454"; }
+
+.fa-heading::before {
+  content: "\f1dc"; }
+
+.fa-header::before {
+  content: "\f1dc"; }
+
+.fa-ghost::before {
+  content: "\f6e2"; }
+
+.fa-face-anguished::before {
+  content: "\e369"; }
+
+.fa-hockey-sticks::before {
+  content: "\f454"; }
+
+.fa-abacus::before {
+  content: "\f640"; }
+
+.fa-film-simple::before {
+  content: "\f3a0"; }
+
+.fa-film-alt::before {
+  content: "\f3a0"; }
+
+.fa-list::before {
+  content: "\f03a"; }
+
+.fa-list-squares::before {
+  content: "\f03a"; }
+
+.fa-tree-palm::before {
+  content: "\f82b"; }
+
+.fa-square-phone-flip::before {
+  content: "\f87b"; }
+
+.fa-phone-square-alt::before {
+  content: "\f87b"; }
+
+.fa-cart-plus::before {
+  content: "\f217"; }
+
+.fa-gamepad::before {
+  content: "\f11b"; }
+
+.fa-border-center-v::before {
+  content: "\f89d"; }
+
+.fa-circle-dot::before {
+  content: "\f192"; }
+
+.fa-dot-circle::before {
+  content: "\f192"; }
+
+.fa-clipboard-medical::before {
+  content: "\e133"; }
+
+.fa-face-dizzy::before {
+  content: "\f567"; }
+
+.fa-dizzy::before {
+  content: "\f567"; }
+
+.fa-egg::before {
+  content: "\f7fb"; }
+
+.fa-up-to-line::before {
+  content: "\f34d"; }
+
+.fa-arrow-alt-to-top::before {
+  content: "\f34d"; }
+
+.fa-house-medical-circle-xmark::before {
+  content: "\e513"; }
+
+.fa-watch-fitness::before {
+  content: "\f63e"; }
+
+.fa-clock-nine-thirty::before {
+  content: "\e34d"; }
+
+.fa-campground::before {
+  content: "\f6bb"; }
+
+.fa-folder-plus::before {
+  content: "\f65e"; }
+
+.fa-jug::before {
+  content: "\f8c6"; }
+
+.fa-futbol::before {
+  content: "\f1e3"; }
+
+.fa-futbol-ball::before {
+  content: "\f1e3"; }
+
+.fa-soccer-ball::before {
+  content: "\f1e3"; }
+
+.fa-snow-blowing::before {
+  content: "\f761"; }
+
+.fa-paintbrush::before {
+  content: "\f1fc"; }
+
+.fa-paint-brush::before {
+  content: "\f1fc"; }
+
+.fa-lock::before {
+  content: "\f023"; }
+
+.fa-arrow-down-from-line::before {
+  content: "\f345"; }
+
+.fa-arrow-from-top::before {
+  content: "\f345"; }
+
+.fa-gas-pump::before {
+  content: "\f52f"; }
+
+.fa-signal-bars-slash::before {
+  content: "\f694"; }
+
+.fa-signal-alt-slash::before {
+  content: "\f694"; }
+
+.fa-monkey::before {
+  content: "\f6fb"; }
+
+.fa-rectangle-pro::before {
+  content: "\e235"; }
+
+.fa-pro::before {
+  content: "\e235"; }
+
+.fa-house-night::before {
+  content: "\e010"; }
+
+.fa-hot-tub-person::before {
+  content: "\f593"; }
+
+.fa-hot-tub::before {
+  content: "\f593"; }
+
+.fa-blanket::before {
+  content: "\f498"; }
+
+.fa-map-location::before {
+  content: "\f59f"; }
+
+.fa-map-marked::before {
+  content: "\f59f"; }
+
+.fa-house-flood-water::before {
+  content: "\e50e"; }
+
+.fa-comments-question-check::before {
+  content: "\e14f"; }
+
+.fa-tree::before {
+  content: "\f1bb"; }
+
+.fa-arrows-cross::before {
+  content: "\e0a2"; }
+
+.fa-backpack::before {
+  content: "\f5d4"; }
+
+.fa-square-small::before {
+  content: "\e27e"; }
+
+.fa-folder-arrow-up::before {
+  content: "\e054"; }
+
+.fa-folder-upload::before {
+  content: "\e054"; }
+
+.fa-bridge-lock::before {
+  content: "\e4cc"; }
+
+.fa-crosshairs-simple::before {
+  content: "\e59f"; }
+
+.fa-sack-dollar::before {
+  content: "\f81d"; }
+
+.fa-pen-to-square::before {
+  content: "\f044"; }
+
+.fa-edit::before {
+  content: "\f044"; }
+
+.fa-square-sliders::before {
+  content: "\f3f0"; }
+
+.fa-sliders-h-square::before {
+  content: "\f3f0"; }
+
+.fa-car-side::before {
+  content: "\f5e4"; }
+
+.fa-message-middle-top::before {
+  content: "\e1e2"; }
+
+.fa-comment-middle-top-alt::before {
+  content: "\e1e2"; }
+
+.fa-lightbulb-on::before {
+  content: "\f672"; }
+
+.fa-knife::before {
+  content: "\f2e4"; }
+
+.fa-utensil-knife::before {
+  content: "\f2e4"; }
+
+.fa-share-nodes::before {
+  content: "\f1e0"; }
+
+.fa-share-alt::before {
+  content: "\f1e0"; }
+
+.fa-wave-sine::before {
+  content: "\f899"; }
+
+.fa-heart-circle-minus::before {
+  content: "\e4ff"; }
+
+.fa-circle-w::before {
+  content: "\e12c"; }
+
+.fa-circle-calendar::before {
+  content: "\e102"; }
+
+.fa-calendar-circle::before {
+  content: "\e102"; }
+
+.fa-hourglass-half::before {
+  content: "\f252"; }
+
+.fa-hourglass-2::before {
+  content: "\f252"; }
+
+.fa-microscope::before {
+  content: "\f610"; }
+
+.fa-sunset::before {
+  content: "\f767"; }
+
+.fa-sink::before {
+  content: "\e06d"; }
+
+.fa-calendar-exclamation::before {
+  content: "\f334"; }
+
+.fa-truck-container-empty::before {
+  content: "\e2b5"; }
+
+.fa-hand-heart::before {
+  content: "\f4bc"; }
+
+.fa-bag-shopping::before {
+  content: "\f290"; }
+
+.fa-shopping-bag::before {
+  content: "\f290"; }
+
+.fa-arrow-down-z-a::before {
+  content: "\f881"; }
+
+.fa-sort-alpha-desc::before {
+  content: "\f881"; }
+
+.fa-sort-alpha-down-alt::before {
+  content: "\f881"; }
+
+.fa-mitten::before {
+  content: "\f7b5"; }
+
+.fa-reply-clock::before {
+  content: "\e239"; }
+
+.fa-reply-time::before {
+  content: "\e239"; }
+
+.fa-person-rays::before {
+  content: "\e54d"; }
+
+.fa-right::before {
+  content: "\f356"; }
+
+.fa-arrow-alt-right::before {
+  content: "\f356"; }
+
+.fa-circle-f::before {
+  content: "\e10e"; }
+
+.fa-users::before {
+  content: "\f0c0"; }
+
+.fa-face-pleading::before {
+  content: "\e386"; }
+
+.fa-eye-slash::before {
+  content: "\f070"; }
+
+.fa-flask-vial::before {
+  content: "\e4f3"; }
+
+.fa-police-box::before {
+  content: "\e021"; }
+
+.fa-cucumber::before {
+  content: "\e401"; }
+
+.fa-head-side-brain::before {
+  content: "\f808"; }
+
+.fa-hand::before {
+  content: "\f256"; }
+
+.fa-hand-paper::before {
+  content: "\f256"; }
+
+.fa-person-biking-mountain::before {
+  content: "\f84b"; }
+
+.fa-biking-mountain::before {
+  content: "\f84b"; }
+
+.fa-utensils-slash::before {
+  content: "\e464"; }
+
+.fa-print-magnifying-glass::before {
+  content: "\f81a"; }
+
+.fa-print-search::before {
+  content: "\f81a"; }
+
+.fa-folder-bookmark::before {
+  content: "\e186"; }
+
+.fa-om::before {
+  content: "\f679"; }
+
+.fa-pi::before {
+  content: "\f67e"; }
+
+.fa-flask-round-potion::before {
+  content: "\f6e1"; }
+
+.fa-flask-potion::before {
+  content: "\f6e1"; }
+
+.fa-face-shush::before {
+  content: "\e38c"; }
+
+.fa-worm::before {
+  content: "\e599"; }
+
+.fa-house-circle-xmark::before {
+  content: "\e50b"; }
+
+.fa-plug::before {
+  content: "\f1e6"; }
+
+.fa-calendar-circle-exclamation::before {
+  content: "\e46e"; }
+
+.fa-square-i::before {
+  content: "\e272"; }
+
+.fa-chevron-up::before {
+  content: "\f077"; }
+
+.fa-face-saluting::before {
+  content: "\e484"; }
+
+.fa-gauge-simple-low::before {
+  content: "\f62c"; }
+
+.fa-tachometer-slow::before {
+  content: "\f62c"; }
+
+.fa-face-persevering::before {
+  content: "\e385"; }
+
+.fa-circle-camera::before {
+  content: "\e103"; }
+
+.fa-camera-circle::before {
+  content: "\e103"; }
+
+.fa-hand-spock::before {
+  content: "\f259"; }
+
+.fa-spider-web::before {
+  content: "\f719"; }
+
+.fa-circle-microphone::before {
+  content: "\e116"; }
+
+.fa-microphone-circle::before {
+  content: "\e116"; }
+
+.fa-book-arrow-up::before {
+  content: "\e0ba"; }
+
+.fa-popsicle::before {
+  content: "\e43e"; }
+
+.fa-command::before {
+  content: "\e142"; }
+
+.fa-blinds::before {
+  content: "\f8fb"; }
+
+.fa-stopwatch::before {
+  content: "\f2f2"; }
+
+.fa-saxophone::before {
+  content: "\f8dc"; }
+
+.fa-square-2::before {
+  content: "\e257"; }
+
+.fa-field-hockey-stick-ball::before {
+  content: "\f44c"; }
+
+.fa-field-hockey::before {
+  content: "\f44c"; }
+
+.fa-arrow-up-square-triangle::before {
+  content: "\f88b"; }
+
+.fa-sort-shapes-up-alt::before {
+  content: "\f88b"; }
+
+.fa-face-scream::before {
+  content: "\e38b"; }
+
+.fa-square-m::before {
+  content: "\e276"; }
+
+.fa-camera-web::before {
+  content: "\f832"; }
+
+.fa-webcam::before {
+  content: "\f832"; }
+
+.fa-comment-arrow-down::before {
+  content: "\e143"; }
+
+.fa-lightbulb-cfl::before {
+  content: "\e5a6"; }
+
+.fa-window-frame-open::before {
+  content: "\e050"; }
+
+.fa-face-kiss::before {
+  content: "\f596"; }
+
+.fa-kiss::before {
+  content: "\f596"; }
+
+.fa-bridge-circle-xmark::before {
+  content: "\e4cb"; }
+
+.fa-period::before {
+  content: "\2e"; }
+
+.fa-face-grin-tongue::before {
+  content: "\f589"; }
+
+.fa-grin-tongue::before {
+  content: "\f589"; }
+
+.fa-up-to-dotted-line::before {
+  content: "\e457"; }
+
+.fa-thought-bubble::before {
+  content: "\e32e"; }
+
+.fa-raygun::before {
+  content: "\e025"; }
+
+.fa-flute::before {
+  content: "\f8b9"; }
+
+.fa-acorn::before {
+  content: "\f6ae"; }
+
+.fa-video-arrow-up-right::before {
+  content: "\e2c9"; }
+
+.fa-grate-droplet::before {
+  content: "\e194"; }
+
+.fa-seal-exclamation::before {
+  content: "\e242"; }
+
+.fa-chess-bishop::before {
+  content: "\f43a"; }
+
+.fa-message-sms::before {
+  content: "\e1e5"; }
+
+.fa-coffee-beans::before {
+  content: "\e13f"; }
+
+.fa-hat-witch::before {
+  content: "\f6e7"; }
+
+.fa-face-grin-wink::before {
+  content: "\f58c"; }
+
+.fa-grin-wink::before {
+  content: "\f58c"; }
+
+.fa-clock-three-thirty::before {
+  content: "\e357"; }
+
+.fa-ear-deaf::before {
+  content: "\f2a4"; }
+
+.fa-deaf::before {
+  content: "\f2a4"; }
+
+.fa-deafness::before {
+  content: "\f2a4"; }
+
+.fa-hard-of-hearing::before {
+  content: "\f2a4"; }
+
+.fa-alarm-clock::before {
+  content: "\f34e"; }
+
+.fa-eclipse::before {
+  content: "\f749"; }
+
+.fa-face-relieved::before {
+  content: "\e389"; }
+
+.fa-road-circle-check::before {
+  content: "\e564"; }
+
+.fa-dice-five::before {
+  content: "\f523"; }
+
+.fa-octagon-minus::before {
+  content: "\f308"; }
+
+.fa-minus-octagon::before {
+  content: "\f308"; }
+
+.fa-square-rss::before {
+  content: "\f143"; }
+
+.fa-rss-square::before {
+  content: "\f143"; }
+
+.fa-face-zany::before {
+  content: "\e3a4"; }
+
+.fa-land-mine-on::before {
+  content: "\e51b"; }
+
+.fa-square-arrow-up-left::before {
+  content: "\e263"; }
+
+.fa-i-cursor::before {
+  content: "\f246"; }
+
+.fa-salt-shaker::before {
+  content: "\e446"; }
+
+.fa-stamp::before {
+  content: "\f5bf"; }
+
+.fa-file-plus::before {
+  content: "\f319"; }
+
+.fa-draw-square::before {
+  content: "\f5ef"; }
+
+.fa-toilet-paper-under-slash::before {
+  content: "\e2a1"; }
+
+.fa-toilet-paper-reverse-slash::before {
+  content: "\e2a1"; }
+
+.fa-stairs::before {
+  content: "\e289"; }
+
+.fa-drone-front::before {
+  content: "\f860"; }
+
+.fa-drone-alt::before {
+  content: "\f860"; }
+
+.fa-glass-empty::before {
+  content: "\e191"; }
+
+.fa-dial-high::before {
+  content: "\e15c"; }
+
+.fa-user-helmet-safety::before {
+  content: "\f82c"; }
+
+.fa-user-construction::before {
+  content: "\f82c"; }
+
+.fa-user-hard-hat::before {
+  content: "\f82c"; }
+
+.fa-i::before {
+  content: "\49"; }
+
+.fa-hryvnia-sign::before {
+  content: "\f6f2"; }
+
+.fa-hryvnia::before {
+  content: "\f6f2"; }
+
+.fa-arrow-down-left-and-arrow-up-right-to-center::before {
+  content: "\e092"; }
+
+.fa-pills::before {
+  content: "\f484"; }
+
+.fa-face-grin-wide::before {
+  content: "\f581"; }
+
+.fa-grin-alt::before {
+  content: "\f581"; }
+
+.fa-tooth::before {
+  content: "\f5c9"; }
+
+.fa-basketball-hoop::before {
+  content: "\f435"; }
+
+.fa-objects-align-bottom::before {
+  content: "\e3bb"; }
+
+.fa-v::before {
+  content: "\56"; }
+
+.fa-sparkles::before {
+  content: "\f890"; }
+
+.fa-squid::before {
+  content: "\e450"; }
+
+.fa-leafy-green::before {
+  content: "\e41d"; }
+
+.fa-circle-arrow-up-right::before {
+  content: "\e0fc"; }
+
+.fa-calendars::before {
+  content: "\e0d7"; }
+
+.fa-bangladeshi-taka-sign::before {
+  content: "\e2e6"; }
+
+.fa-bicycle::before {
+  content: "\f206"; }
+
+.fa-hammer-war::before {
+  content: "\f6e4"; }
+
+.fa-circle-d::before {
+  content: "\e104"; }
+
+.fa-spider-black-widow::before {
+  content: "\f718"; }
+
+.fa-staff-snake::before {
+  content: "\e579"; }
+
+.fa-rod-asclepius::before {
+  content: "\e579"; }
+
+.fa-rod-snake::before {
+  content: "\e579"; }
+
+.fa-staff-aesculapius::before {
+  content: "\e579"; }
+
+.fa-pear::before {
+  content: "\e20c"; }
+
+.fa-head-side-cough-slash::before {
+  content: "\e062"; }
+
+.fa-triangle::before {
+  content: "\f2ec"; }
+
+.fa-apartment::before {
+  content: "\e468"; }
+
+.fa-truck-medical::before {
+  content: "\f0f9"; }
+
+.fa-ambulance::before {
+  content: "\f0f9"; }
+
+.fa-pepper::before {
+  content: "\e432"; }
+
+.fa-piano::before {
+  content: "\f8d4"; }
+
+.fa-gun-squirt::before {
+  content: "\e19d"; }
+
+.fa-wheat-awn-circle-exclamation::before {
+  content: "\e598"; }
+
+.fa-snowman::before {
+  content: "\f7d0"; }
+
+.fa-user-alien::before {
+  content: "\e04a"; }
+
+.fa-shield-check::before {
+  content: "\f2f7"; }
+
+.fa-mortar-pestle::before {
+  content: "\f5a7"; }
+
+.fa-road-barrier::before {
+  content: "\e562"; }
+
+.fa-chart-candlestick::before {
+  content: "\e0e2"; }
+
+.fa-briefcase-blank::before {
+  content: "\e0c8"; }
+
+.fa-school::before {
+  content: "\f549"; }
+
+.fa-igloo::before {
+  content: "\f7ae"; }
+
+.fa-bracket-round::before {
+  content: "\28"; }
+
+.fa-parenthesis::before {
+  content: "\28"; }
+
+.fa-joint::before {
+  content: "\f595"; }
+
+.fa-horse-saddle::before {
+  content: "\f8c3"; }
+
+.fa-mug-marshmallows::before {
+  content: "\f7b7"; }
+
+.fa-filters::before {
+  content: "\e17e"; }
+
+.fa-bell-on::before {
+  content: "\f8fa"; }
+
+.fa-angle-right::before {
+  content: "\f105"; }
+
+.fa-dial-med::before {
+  content: "\e15f"; }
+
+.fa-horse::before {
+  content: "\f6f0"; }
+
+.fa-q::before {
+  content: "\51"; }
+
+.fa-monitor-waveform::before {
+  content: "\f611"; }
+
+.fa-monitor-heart-rate::before {
+  content: "\f611"; }
+
+.fa-link-simple::before {
+  content: "\e1cd"; }
+
+.fa-whistle::before {
+  content: "\f460"; }
+
+.fa-g::before {
+  content: "\47"; }
+
+.fa-wine-glass-crack::before {
+  content: "\f4bb"; }
+
+.fa-fragile::before {
+  content: "\f4bb"; }
+
+.fa-slot-machine::before {
+  content: "\e3ce"; }
+
+.fa-notes-medical::before {
+  content: "\f481"; }
+
+.fa-car-wash::before {
+  content: "\f5e6"; }
+
+.fa-escalator::before {
+  content: "\e171"; }
+
+.fa-comment-image::before {
+  content: "\e148"; }
+
+.fa-temperature-half::before {
+  content: "\f2c9"; }
+
+.fa-temperature-2::before {
+  content: "\f2c9"; }
+
+.fa-thermometer-2::before {
+  content: "\f2c9"; }
+
+.fa-thermometer-half::before {
+  content: "\f2c9"; }
+
+.fa-dong-sign::before {
+  content: "\e169"; }
+
+.fa-donut::before {
+  content: "\e406"; }
+
+.fa-doughnut::before {
+  content: "\e406"; }
+
+.fa-capsules::before {
+  content: "\f46b"; }
+
+.fa-poo-storm::before {
+  content: "\f75a"; }
+
+.fa-poo-bolt::before {
+  content: "\f75a"; }
+
+.fa-tally-1::before {
+  content: "\e294"; }
+
+.fa-face-frown-open::before {
+  content: "\f57a"; }
+
+.fa-frown-open::before {
+  content: "\f57a"; }
+
+.fa-square-dashed::before {
+  content: "\e269"; }
+
+.fa-square-j::before {
+  content: "\e273"; }
+
+.fa-hand-point-up::before {
+  content: "\f0a6"; }
+
+.fa-money-bill::before {
+  content: "\f0d6"; }
+
+.fa-arrow-up-big-small::before {
+  content: "\f88e"; }
+
+.fa-sort-size-up::before {
+  content: "\f88e"; }
+
+.fa-barcode-read::before {
+  content: "\f464"; }
+
+.fa-baguette::before {
+  content: "\e3d8"; }
+
+.fa-bowl-soft-serve::before {
+  content: "\e46b"; }
+
+.fa-face-holding-back-tears::before {
+  content: "\e482"; }
+
+.fa-square-up::before {
+  content: "\f353"; }
+
+.fa-arrow-alt-square-up::before {
+  content: "\f353"; }
+
+.fa-train-subway-tunnel::before {
+  content: "\e2a3"; }
+
+.fa-subway-tunnel::before {
+  content: "\e2a3"; }
+
+.fa-square-exclamation::before {
+  content: "\f321"; }
+
+.fa-exclamation-square::before {
+  content: "\f321"; }
+
+.fa-semicolon::before {
+  content: "\3b"; }
+
+.fa-bookmark::before {
+  content: "\f02e"; }
+
+.fa-fan-table::before {
+  content: "\e004"; }
+
+.fa-align-justify::before {
+  content: "\f039"; }
+
+.fa-battery-low::before {
+  content: "\e0b1"; }
+
+.fa-battery-1::before {
+  content: "\e0b1"; }
+
+.fa-credit-card-front::before {
+  content: "\f38a"; }
+
+.fa-brain-arrow-curved-right::before {
+  content: "\f677"; }
+
+.fa-mind-share::before {
+  content: "\f677"; }
+
+.fa-umbrella-beach::before {
+  content: "\f5ca"; }
+
+.fa-helmet-un::before {
+  content: "\e503"; }
+
+.fa-location-smile::before {
+  content: "\f60d"; }
+
+.fa-map-marker-smile::before {
+  content: "\f60d"; }
+
+.fa-arrow-left-to-line::before {
+  content: "\f33e"; }
+
+.fa-arrow-to-left::before {
+  content: "\f33e"; }
+
+.fa-bullseye::before {
+  content: "\f140"; }
+
+.fa-sushi::before {
+  content: "\e48a"; }
+
+.fa-nigiri::before {
+  content: "\e48a"; }
+
+.fa-message-captions::before {
+  content: "\e1de"; }
+
+.fa-comment-alt-captions::before {
+  content: "\e1de"; }
+
+.fa-trash-list::before {
+  content: "\e2b1"; }
+
+.fa-bacon::before {
+  content: "\f7e5"; }
+
+.fa-option::before {
+  content: "\e318"; }
+
+.fa-hand-point-down::before {
+  content: "\f0a7"; }
+
+.fa-arrow-up-from-bracket::before {
+  content: "\e09a"; }
+
+.fa-trash-plus::before {
+  content: "\e2b2"; }
+
+.fa-objects-align-top::before {
+  content: "\e3c0"; }
+
+.fa-folder::before {
+  content: "\f07b"; }
+
+.fa-folder-blank::before {
+  content: "\f07b"; }
+
+.fa-face-anxious-sweat::before {
+  content: "\e36a"; }
+
+.fa-credit-card-blank::before {
+  content: "\f389"; }
+
+.fa-file-waveform::before {
+  content: "\f478"; }
+
+.fa-file-medical-alt::before {
+  content: "\f478"; }
+
+.fa-microchip-ai::before {
+  content: "\e1ec"; }
+
+.fa-mug::before {
+  content: "\f874"; }
+
+.fa-plane-up-slash::before {
+  content: "\e22e"; }
+
+.fa-radiation::before {
+  content: "\f7b9"; }
+
+.fa-pen-circle::before {
+  content: "\e20e"; }
+
+.fa-chart-simple::before {
+  content: "\e473"; }
+
+.fa-crutches::before {
+  content: "\f7f8"; }
+
+.fa-circle-parking::before {
+  content: "\f615"; }
+
+.fa-parking-circle::before {
+  content: "\f615"; }
+
+.fa-mars-stroke::before {
+  content: "\f229"; }
+
+.fa-leaf-oak::before {
+  content: "\f6f7"; }
+
+.fa-square-bolt::before {
+  content: "\e265"; }
+
+.fa-vial::before {
+  content: "\f492"; }
+
+.fa-gauge::before {
+  content: "\f624"; }
+
+.fa-dashboard::before {
+  content: "\f624"; }
+
+.fa-gauge-med::before {
+  content: "\f624"; }
+
+.fa-tachometer-alt-average::before {
+  content: "\f624"; }
+
+.fa-wand-magic-sparkles::before {
+  content: "\e2ca"; }
+
+.fa-magic-wand-sparkles::before {
+  content: "\e2ca"; }
+
+.fa-lambda::before {
+  content: "\f66e"; }
+
+.fa-e::before {
+  content: "\45"; }
+
+.fa-pizza::before {
+  content: "\f817"; }
+
+.fa-bowl-chopsticks-noodles::before {
+  content: "\e2ea"; }
+
+.fa-h3::before {
+  content: "\f315"; }
+
+.fa-pen-clip::before {
+  content: "\f305"; }
+
+.fa-pen-alt::before {
+  content: "\f305"; }
+
+.fa-bridge-circle-exclamation::before {
+  content: "\e4ca"; }
+
+.fa-badge-percent::before {
+  content: "\f646"; }
+
+.fa-user::before {
+  content: "\f007"; }
+
+.fa-sensor::before {
+  content: "\e028"; }
+
+.fa-comma::before {
+  content: "\2c"; }
+
+.fa-school-circle-check::before {
+  content: "\e56b"; }
+
+.fa-toilet-paper-under::before {
+  content: "\e2a0"; }
+
+.fa-toilet-paper-reverse::before {
+  content: "\e2a0"; }
+
+.fa-light-emergency::before {
+  content: "\e41f"; }
+
+.fa-arrow-down-to-arc::before {
+  content: "\e4ae"; }
+
+.fa-dumpster::before {
+  content: "\f793"; }
+
+.fa-van-shuttle::before {
+  content: "\f5b6"; }
+
+.fa-shuttle-van::before {
+  content: "\f5b6"; }
+
+.fa-building-user::before {
+  content: "\e4da"; }
+
+.fa-light-switch::before {
+  content: "\e017"; }
+
+.fa-square-caret-left::before {
+  content: "\f191"; }
+
+.fa-caret-square-left::before {
+  content: "\f191"; }
+
+.fa-highlighter::before {
+  content: "\f591"; }
+
+.fa-wave-pulse::before {
+  content: "\f5f8"; }
+
+.fa-heart-rate::before {
+  content: "\f5f8"; }
+
+.fa-key::before {
+  content: "\f084"; }
+
+.fa-hat-santa::before {
+  content: "\f7a7"; }
+
+.fa-tamale::before {
+  content: "\e451"; }
+
+.fa-box-check::before {
+  content: "\f467"; }
+
+.fa-bullhorn::before {
+  content: "\f0a1"; }
+
+.fa-steak::before {
+  content: "\f824"; }
+
+.fa-location-crosshairs-slash::before {
+  content: "\f603"; }
+
+.fa-location-slash::before {
+  content: "\f603"; }
+
+.fa-person-dolly::before {
+  content: "\f4d0"; }
+
+.fa-globe::before {
+  content: "\f0ac"; }
+
+.fa-synagogue::before {
+  content: "\f69b"; }
+
+.fa-file-chart-column::before {
+  content: "\f659"; }
+
+.fa-file-chart-line::before {
+  content: "\f659"; }
+
+.fa-person-half-dress::before {
+  content: "\e548"; }
+
+.fa-folder-image::before {
+  content: "\e18a"; }
+
+.fa-calendar-pen::before {
+  content: "\f333"; }
+
+.fa-calendar-edit::before {
+  content: "\f333"; }
+
+.fa-road-bridge::before {
+  content: "\e563"; }
+
+.fa-face-smile-tear::before {
+  content: "\e393"; }
+
+.fa-message-plus::before {
+  content: "\f4a8"; }
+
+.fa-comment-alt-plus::before {
+  content: "\f4a8"; }
+
+.fa-location-arrow::before {
+  content: "\f124"; }
+
+.fa-c::before {
+  content: "\43"; }
+
+.fa-tablet-button::before {
+  content: "\f10a"; }
+
+.fa-rectangle-history-circle-user::before {
+  content: "\e4a4"; }
+
+.fa-building-lock::before {
+  content: "\e4d6"; }
+
+.fa-chart-line-up::before {
+  content: "\e0e5"; }
+
+.fa-mailbox::before {
+  content: "\f813"; }
+
+.fa-truck-bolt::before {
+  content: "\e3d0"; }
+
+.fa-pizza-slice::before {
+  content: "\f818"; }
+
+.fa-money-bill-wave::before {
+  content: "\f53a"; }
+
+.fa-chart-area::before {
+  content: "\f1fe"; }
+
+.fa-area-chart::before {
+  content: "\f1fe"; }
+
+.fa-house-flag::before {
+  content: "\e50d"; }
+
+.fa-person-circle-minus::before {
+  content: "\e540"; }
+
+.fa-scalpel::before {
+  content: "\f61d"; }
+
+.fa-ban::before {
+  content: "\f05e"; }
+
+.fa-cancel::before {
+  content: "\f05e"; }
+
+.fa-bell-exclamation::before {
+  content: "\f848"; }
+
+.fa-circle-bookmark::before {
+  content: "\e100"; }
+
+.fa-bookmark-circle::before {
+  content: "\e100"; }
+
+.fa-egg-fried::before {
+  content: "\f7fc"; }
+
+.fa-face-weary::before {
+  content: "\e3a1"; }
+
+.fa-uniform-martial-arts::before {
+  content: "\e3d1"; }
+
+.fa-camera-rotate::before {
+  content: "\e0d8"; }
+
+.fa-sun-dust::before {
+  content: "\f764"; }
+
+.fa-comment-text::before {
+  content: "\e14d"; }
+
+.fa-spray-can-sparkles::before {
+  content: "\f5d0"; }
+
+.fa-air-freshener::before {
+  content: "\f5d0"; }
+
+.fa-signal-bars::before {
+  content: "\f690"; }
+
+.fa-signal-alt::before {
+  content: "\f690"; }
+
+.fa-signal-alt-4::before {
+  content: "\f690"; }
+
+.fa-signal-bars-strong::before {
+  content: "\f690"; }
+
+.fa-diamond-exclamation::before {
+  content: "\e405"; }
+
+.fa-star::before {
+  content: "\f005"; }
+
+.fa-dial-min::before {
+  content: "\e161"; }
+
+.fa-repeat::before {
+  content: "\f363"; }
+
+.fa-cross::before {
+  content: "\f654"; }
+
+.fa-page-caret-down::before {
+  content: "\e429"; }
+
+.fa-file-caret-down::before {
+  content: "\e429"; }
+
+.fa-box::before {
+  content: "\f466"; }
+
+.fa-venus-mars::before {
+  content: "\f228"; }
+
+.fa-clock-seven-thirty::before {
+  content: "\e351"; }
+
+.fa-arrow-pointer::before {
+  content: "\f245"; }
+
+.fa-mouse-pointer::before {
+  content: "\f245"; }
+
+.fa-clock-four-thirty::before {
+  content: "\e34b"; }
+
+.fa-signal-bars-good::before {
+  content: "\f693"; }
+
+.fa-signal-alt-3::before {
+  content: "\f693"; }
+
+.fa-cactus::before {
+  content: "\f8a7"; }
+
+.fa-maximize::before {
+  content: "\f31e"; }
+
+.fa-expand-arrows-alt::before {
+  content: "\f31e"; }
+
+.fa-charging-station::before {
+  content: "\f5e7"; }
+
+.fa-shapes::before {
+  content: "\f61f"; }
+
+.fa-triangle-circle-square::before {
+  content: "\f61f"; }
+
+.fa-plane-tail::before {
+  content: "\e22c"; }
+
+.fa-gauge-simple-max::before {
+  content: "\f62b"; }
+
+.fa-tachometer-fastest::before {
+  content: "\f62b"; }
+
+.fa-circle-u::before {
+  content: "\e127"; }
+
+.fa-shield-slash::before {
+  content: "\e24b"; }
+
+.fa-square-phone-hangup::before {
+  content: "\e27a"; }
+
+.fa-phone-square-down::before {
+  content: "\e27a"; }
+
+.fa-arrow-up-left::before {
+  content: "\e09d"; }
+
+.fa-transporter-1::before {
+  content: "\e043"; }
+
+.fa-peanuts::before {
+  content: "\e431"; }
+
+.fa-shuffle::before {
+  content: "\f074"; }
+
+.fa-random::before {
+  content: "\f074"; }
+
+.fa-person-running::before {
+  content: "\f70c"; }
+
+.fa-running::before {
+  content: "\f70c"; }
+
+.fa-mobile-retro::before {
+  content: "\e527"; }
+
+.fa-grip-lines-vertical::before {
+  content: "\f7a5"; }
+
+.fa-arrow-up-from-square::before {
+  content: "\e09c"; }
+
+.fa-file-dashed-line::before {
+  content: "\f877"; }
+
+.fa-page-break::before {
+  content: "\f877"; }
+
+.fa-bracket-curly-right::before {
+  content: "\7d"; }
+
+.fa-spider::before {
+  content: "\f717"; }
+
+.fa-clock-three::before {
+  content: "\e356"; }
+
+.fa-hands-bound::before {
+  content: "\e4f9"; }
+
+.fa-scalpel-line-dashed::before {
+  content: "\f61e"; }
+
+.fa-scalpel-path::before {
+  content: "\f61e"; }
+
+.fa-file-invoice-dollar::before {
+  content: "\f571"; }
+
+.fa-pipe-smoking::before {
+  content: "\e3c4"; }
+
+.fa-face-astonished::before {
+  content: "\e36b"; }
+
+.fa-window::before {
+  content: "\f40e"; }
+
+.fa-plane-circle-exclamation::before {
+  content: "\e556"; }
+
+.fa-ear::before {
+  content: "\f5f0"; }
+
+.fa-file-lock::before {
+  content: "\e3a6"; }
+
+.fa-diagram-venn::before {
+  content: "\e15a"; }
+
+.fa-x-ray::before {
+  content: "\f497"; }
+
+.fa-goal-net::before {
+  content: "\e3ab"; }
+
+.fa-coffin-cross::before {
+  content: "\e051"; }
+
+.fa-spell-check::before {
+  content: "\f891"; }
+
+.fa-location-xmark::before {
+  content: "\f60e"; }
+
+.fa-map-marker-times::before {
+  content: "\f60e"; }
+
+.fa-map-marker-xmark::before {
+  content: "\f60e"; }
+
+.fa-lasso::before {
+  content: "\f8c8"; }
+
+.fa-slash::before {
+  content: "\f715"; }
+
+.fa-person-to-portal::before {
+  content: "\e022"; }
+
+.fa-portal-enter::before {
+  content: "\e022"; }
+
+.fa-calendar-star::before {
+  content: "\f736"; }
+
+.fa-computer-mouse::before {
+  content: "\f8cc"; }
+
+.fa-mouse::before {
+  content: "\f8cc"; }
+
+.fa-arrow-right-to-bracket::before {
+  content: "\f090"; }
+
+.fa-sign-in::before {
+  content: "\f090"; }
+
+.fa-pegasus::before {
+  content: "\f703"; }
+
+.fa-files-medical::before {
+  content: "\f7fd"; }
+
+.fa-nfc-lock::before {
+  content: "\e1f8"; }
+
+.fa-person-ski-lift::before {
+  content: "\f7c8"; }
+
+.fa-ski-lift::before {
+  content: "\f7c8"; }
+
+.fa-square-6::before {
+  content: "\e25b"; }
+
+.fa-shop-slash::before {
+  content: "\e070"; }
+
+.fa-store-alt-slash::before {
+  content: "\e070"; }
+
+.fa-wind-turbine::before {
+  content: "\f89b"; }
+
+.fa-sliders-simple::before {
+  content: "\e253"; }
+
+.fa-badge-sheriff::before {
+  content: "\f8a2"; }
+
+.fa-server::before {
+  content: "\f233"; }
+
+.fa-virus-covid-slash::before {
+  content: "\e4a9"; }
+
+.fa-intersection::before {
+  content: "\f668"; }
+
+.fa-shop-lock::before {
+  content: "\e4a5"; }
+
+.fa-family::before {
+  content: "\e300"; }
+
+.fa-hourglass-start::before {
+  content: "\f251"; }
+
+.fa-hourglass-1::before {
+  content: "\f251"; }
+
+.fa-user-hair-buns::before {
+  content: "\e3d3"; }
+
+.fa-blender-phone::before {
+  content: "\f6b6"; }
+
+.fa-hourglass-clock::before {
+  content: "\e41b"; }
+
+.fa-person-seat-reclined::before {
+  content: "\e21f"; }
+
+.fa-paper-plane-top::before {
+  content: "\e20a"; }
+
+.fa-paper-plane-alt::before {
+  content: "\e20a"; }
+
+.fa-send::before {
+  content: "\e20a"; }
+
+.fa-message-arrow-up::before {
+  content: "\e1dc"; }
+
+.fa-comment-alt-arrow-up::before {
+  content: "\e1dc"; }
+
+.fa-lightbulb-exclamation::before {
+  content: "\f671"; }
+
+.fa-layer-minus::before {
+  content: "\f5fe"; }
+
+.fa-layer-group-minus::before {
+  content: "\f5fe"; }
+
+.fa-circle-e::before {
+  content: "\e109"; }
+
+.fa-building-wheat::before {
+  content: "\e4db"; }
+
+.fa-gauge-max::before {
+  content: "\f626"; }
+
+.fa-tachometer-alt-fastest::before {
+  content: "\f626"; }
+
+.fa-person-breastfeeding::before {
+  content: "\e53a"; }
+
+.fa-apostrophe::before {
+  content: "\27"; }
+
+.fa-fire-hydrant::before {
+  content: "\e17f"; }
+
+.fa-right-to-bracket::before {
+  content: "\f2f6"; }
+
+.fa-sign-in-alt::before {
+  content: "\f2f6"; }
+
+.fa-video-plus::before {
+  content: "\f4e1"; }
+
+.fa-square-right::before {
+  content: "\f352"; }
+
+.fa-arrow-alt-square-right::before {
+  content: "\f352"; }
+
+.fa-comment-smile::before {
+  content: "\f4b4"; }
+
+.fa-venus::before {
+  content: "\f221"; }
+
+.fa-passport::before {
+  content: "\f5ab"; }
+
+.fa-inbox-in::before {
+  content: "\f310"; }
+
+.fa-inbox-arrow-down::before {
+  content: "\f310"; }
+
+.fa-heart-pulse::before {
+  content: "\f21e"; }
+
+.fa-heartbeat::before {
+  content: "\f21e"; }
+
+.fa-circle-8::before {
+  content: "\e0f5"; }
+
+.fa-clouds-moon::before {
+  content: "\f745"; }
+
+.fa-clock-ten-thirty::before {
+  content: "\e355"; }
+
+.fa-people-carry-box::before {
+  content: "\f4ce"; }
+
+.fa-people-carry::before {
+  content: "\f4ce"; }
+
+.fa-folder-user::before {
+  content: "\e18e"; }
+
+.fa-trash-can-xmark::before {
+  content: "\e2ae"; }
+
+.fa-temperature-high::before {
+  content: "\f769"; }
+
+.fa-microchip::before {
+  content: "\f2db"; }
+
+.fa-left-long-to-line::before {
+  content: "\e41e"; }
+
+.fa-crown::before {
+  content: "\f521"; }
+
+.fa-weight-hanging::before {
+  content: "\f5cd"; }
+
+.fa-xmarks-lines::before {
+  content: "\e59a"; }
+
+.fa-file-prescription::before {
+  content: "\f572"; }
+
+.fa-calendar-range::before {
+  content: "\e0d6"; }
+
+.fa-flower-daffodil::before {
+  content: "\f800"; }
+
+.fa-hand-back-point-up::before {
+  content: "\e1a2"; }
+
+.fa-weight-scale::before {
+  content: "\f496"; }
+
+.fa-weight::before {
+  content: "\f496"; }
+
+.fa-star-exclamation::before {
+  content: "\f2f3"; }
+
+.fa-books::before {
+  content: "\f5db"; }
+
+.fa-user-group::before {
+  content: "\f500"; }
+
+.fa-user-friends::before {
+  content: "\f500"; }
+
+.fa-arrow-up-a-z::before {
+  content: "\f15e"; }
+
+.fa-sort-alpha-up::before {
+  content: "\f15e"; }
+
+.fa-layer-plus::before {
+  content: "\f5ff"; }
+
+.fa-layer-group-plus::before {
+  content: "\f5ff"; }
+
+.fa-play-pause::before {
+  content: "\e22f"; }
+
+.fa-block-question::before {
+  content: "\e3dd"; }
+
+.fa-snooze::before {
+  content: "\f880"; }
+
+.fa-zzz::before {
+  content: "\f880"; }
+
+.fa-scanner-image::before {
+  content: "\f8f3"; }
+
+.fa-tv-retro::before {
+  content: "\f401"; }
+
+.fa-square-t::before {
+  content: "\e280"; }
+
+.fa-farm::before {
+  content: "\f864"; }
+
+.fa-barn-silo::before {
+  content: "\f864"; }
+
+.fa-chess-knight::before {
+  content: "\f441"; }
+
+.fa-bars-sort::before {
+  content: "\e0ae"; }
+
+.fa-pallet-boxes::before {
+  content: "\f483"; }
+
+.fa-palette-boxes::before {
+  content: "\f483"; }
+
+.fa-pallet-alt::before {
+  content: "\f483"; }
+
+.fa-face-laugh-squint::before {
+  content: "\f59b"; }
+
+.fa-laugh-squint::before {
+  content: "\f59b"; }
+
+.fa-code-simple::before {
+  content: "\e13d"; }
+
+.fa-bolt-slash::before {
+  content: "\e0b8"; }
+
+.fa-panel-fire::before {
+  content: "\e42f"; }
+
+.fa-binary-circle-check::before {
+  content: "\e33c"; }
+
+.fa-comment-minus::before {
+  content: "\f4b1"; }
+
+.fa-burrito::before {
+  content: "\f7ed"; }
+
+.fa-violin::before {
+  content: "\f8ed"; }
+
+.fa-objects-column::before {
+  content: "\e3c1"; }
+
+.fa-square-chevron-down::before {
+  content: "\f329"; }
+
+.fa-chevron-square-down::before {
+  content: "\f329"; }
+
+.fa-comment-plus::before {
+  content: "\f4b2"; }
+
+.fa-triangle-instrument::before {
+  content: "\f8e2"; }
+
+.fa-triangle-music::before {
+  content: "\f8e2"; }
+
+.fa-wheelchair::before {
+  content: "\f193"; }
+
+.fa-user-pilot-tie::before {
+  content: "\e2c1"; }
+
+.fa-piano-keyboard::before {
+  content: "\f8d5"; }
+
+.fa-bed-empty::before {
+  content: "\f8f9"; }
+
+.fa-circle-arrow-up::before {
+  content: "\f0aa"; }
+
+.fa-arrow-circle-up::before {
+  content: "\f0aa"; }
+
+.fa-toggle-on::before {
+  content: "\f205"; }
+
+.fa-rectangle-vertical::before {
+  content: "\f2fb"; }
+
+.fa-rectangle-portrait::before {
+  content: "\f2fb"; }
+
+.fa-person-walking::before {
+  content: "\f554"; }
+
+.fa-walking::before {
+  content: "\f554"; }
+
+.fa-l::before {
+  content: "\4c"; }
+
+.fa-signal-stream::before {
+  content: "\f8dd"; }
+
+.fa-down-to-bracket::before {
+  content: "\e4e7"; }
+
+.fa-circle-z::before {
+  content: "\e130"; }
+
+.fa-stars::before {
+  content: "\f762"; }
+
+.fa-fire::before {
+  content: "\f06d"; }
+
+.fa-bed-pulse::before {
+  content: "\f487"; }
+
+.fa-procedures::before {
+  content: "\f487"; }
+
+.fa-house-day::before {
+  content: "\e00e"; }
+
+.fa-shuttle-space::before {
+  content: "\f197"; }
+
+.fa-space-shuttle::before {
+  content: "\f197"; }
+
+.fa-shirt-long-sleeve::before {
+  content: "\e3c7"; }
+
+.fa-chart-pie-simple::before {
+  content: "\f64e"; }
+
+.fa-chart-pie-alt::before {
+  content: "\f64e"; }
+
+.fa-face-laugh::before {
+  content: "\f599"; }
+
+.fa-laugh::before {
+  content: "\f599"; }
+
+.fa-folder-open::before {
+  content: "\f07c"; }
+
+.fa-album-collection-circle-user::before {
+  content: "\e48f"; }
+
+.fa-candy::before {
+  content: "\e3e7"; }
+
+.fa-bowl-hot::before {
+  content: "\f823"; }
+
+.fa-soup::before {
+  content: "\f823"; }
+
+.fa-flatbread::before {
+  content: "\e40b"; }
+
+.fa-heart-circle-plus::before {
+  content: "\e500"; }
+
+.fa-code-fork::before {
+  content: "\e13b"; }
+
+.fa-city::before {
+  content: "\f64f"; }
+
+.fa-signal-bars-weak::before {
+  content: "\f691"; }
+
+.fa-signal-alt-1::before {
+  content: "\f691"; }
+
+.fa-microphone-lines::before {
+  content: "\f3c9"; }
+
+.fa-microphone-alt::before {
+  content: "\f3c9"; }
+
+.fa-clock-twelve::before {
+  content: "\e358"; }
+
+.fa-pepper-hot::before {
+  content: "\f816"; }
+
+.fa-citrus-slice::before {
+  content: "\e2f5"; }
+
+.fa-sheep::before {
+  content: "\f711"; }
+
+.fa-unlock::before {
+  content: "\f09c"; }
+
+.fa-colon-sign::before {
+  content: "\e140"; }
+
+.fa-headset::before {
+  content: "\f590"; }
+
+.fa-badger-honey::before {
+  content: "\f6b4"; }
+
+.fa-h4::before {
+  content: "\f86a"; }
+
+.fa-store-slash::before {
+  content: "\e071"; }
+
+.fa-road-circle-xmark::before {
+  content: "\e566"; }
+
+.fa-signal-slash::before {
+  content: "\f695"; }
+
+.fa-user-minus::before {
+  content: "\f503"; }
+
+.fa-mars-stroke-up::before {
+  content: "\f22a"; }
+
+.fa-mars-stroke-v::before {
+  content: "\f22a"; }
+
+.fa-champagne-glasses::before {
+  content: "\f79f"; }
+
+.fa-glass-cheers::before {
+  content: "\f79f"; }
+
+.fa-taco::before {
+  content: "\f826"; }
+
+.fa-hexagon-plus::before {
+  content: "\f300"; }
+
+.fa-plus-hexagon::before {
+  content: "\f300"; }
+
+.fa-clipboard::before {
+  content: "\f328"; }
+
+.fa-house-circle-exclamation::before {
+  content: "\e50a"; }
+
+.fa-file-arrow-up::before {
+  content: "\f574"; }
+
+.fa-file-upload::before {
+  content: "\f574"; }
+
+.fa-wifi::before {
+  content: "\f1eb"; }
+
+.fa-wifi-3::before {
+  content: "\f1eb"; }
+
+.fa-wifi-strong::before {
+  content: "\f1eb"; }
+
+.fa-messages::before {
+  content: "\f4b6"; }
+
+.fa-comments-alt::before {
+  content: "\f4b6"; }
+
+.fa-bath::before {
+  content: "\f2cd"; }
+
+.fa-bathtub::before {
+  content: "\f2cd"; }
+
+.fa-umbrella-simple::before {
+  content: "\e2bc"; }
+
+.fa-umbrella-alt::before {
+  content: "\e2bc"; }
+
+.fa-rectangle-history-circle-plus::before {
+  content: "\e4a3"; }
+
+.fa-underline::before {
+  content: "\f0cd"; }
+
+.fa-user-pen::before {
+  content: "\f4ff"; }
+
+.fa-user-edit::before {
+  content: "\f4ff"; }
+
+.fa-binary-slash::before {
+  content: "\e33e"; }
+
+.fa-square-o::before {
+  content: "\e278"; }
+
+.fa-signature::before {
+  content: "\f5b7"; }
+
+.fa-stroopwafel::before {
+  content: "\f551"; }
+
+.fa-bold::before {
+  content: "\f032"; }
+
+.fa-anchor-lock::before {
+  content: "\e4ad"; }
+
+.fa-building-ngo::before {
+  content: "\e4d7"; }
+
+.fa-transporter-3::before {
+  content: "\e045"; }
+
+.fa-engine-warning::before {
+  content: "\f5f2"; }
+
+.fa-engine-exclamation::before {
+  content: "\f5f2"; }
+
+.fa-circle-down-right::before {
+  content: "\e108"; }
+
+.fa-square-k::before {
+  content: "\e274"; }
+
+.fa-manat-sign::before {
+  content: "\e1d5"; }
+
+.fa-money-check-pen::before {
+  content: "\f872"; }
+
+.fa-money-check-edit::before {
+  content: "\f872"; }
+
+.fa-not-equal::before {
+  content: "\f53e"; }
+
+.fa-border-top-left::before {
+  content: "\f853"; }
+
+.fa-border-style::before {
+  content: "\f853"; }
+
+.fa-map-location-dot::before {
+  content: "\f5a0"; }
+
+.fa-map-marked-alt::before {
+  content: "\f5a0"; }
+
+.fa-tilde::before {
+  content: "\7e"; }
+
+.fa-jedi::before {
+  content: "\f669"; }
+
+.fa-square-poll-vertical::before {
+  content: "\f681"; }
+
+.fa-poll::before {
+  content: "\f681"; }
+
+.fa-arrow-down-square-triangle::before {
+  content: "\f889"; }
+
+.fa-sort-shapes-down-alt::before {
+  content: "\f889"; }
+
+.fa-mug-hot::before {
+  content: "\f7b6"; }
+
+.fa-dog-leashed::before {
+  content: "\f6d4"; }
+
+.fa-car-battery::before {
+  content: "\f5df"; }
+
+.fa-battery-car::before {
+  content: "\f5df"; }
+
+.fa-face-downcast-sweat::before {
+  content: "\e371"; }
+
+.fa-memo-circle-info::before {
+  content: "\e49a"; }
+
+.fa-gift::before {
+  content: "\f06b"; }
+
+.fa-dice-two::before {
+  content: "\f528"; }
+
+.fa-volume::before {
+  content: "\f6a8"; }
+
+.fa-volume-medium::before {
+  content: "\f6a8"; }
+
+.fa-transporter-5::before {
+  content: "\e2a6"; }
+
+.fa-gauge-circle-bolt::before {
+  content: "\e496"; }
+
+.fa-coin-front::before {
+  content: "\e3fc"; }
+
+.fa-file-slash::before {
+  content: "\e3a7"; }
+
+.fa-message-arrow-up-right::before {
+  content: "\e1dd"; }
+
+.fa-treasure-chest::before {
+  content: "\f723"; }
+
+.fa-chess-queen::before {
+  content: "\f445"; }
+
+.fa-paintbrush-fine::before {
+  content: "\f5a9"; }
+
+.fa-paint-brush-alt::before {
+  content: "\f5a9"; }
+
+.fa-paint-brush-fine::before {
+  content: "\f5a9"; }
+
+.fa-paintbrush-alt::before {
+  content: "\f5a9"; }
+
+.fa-glasses::before {
+  content: "\f530"; }
+
+.fa-hood-cloak::before {
+  content: "\f6ef"; }
+
+.fa-square-quote::before {
+  content: "\e329"; }
+
+.fa-up-left::before {
+  content: "\e2bd"; }
+
+.fa-bring-front::before {
+  content: "\f857"; }
+
+.fa-chess-board::before {
+  content: "\f43c"; }
+
+.fa-burger-cheese::before {
+  content: "\f7f1"; }
+
+.fa-cheeseburger::before {
+  content: "\f7f1"; }
+
+.fa-building-circle-check::before {
+  content: "\e4d2"; }
+
+.fa-repeat-1::before {
+  content: "\f365"; }
+
+.fa-arrow-down-to-line::before {
+  content: "\f33d"; }
+
+.fa-arrow-to-bottom::before {
+  content: "\f33d"; }
+
+.fa-grid-5::before {
+  content: "\e199"; }
+
+.fa-right-long-to-line::before {
+  content: "\e444"; }
+
+.fa-person-chalkboard::before {
+  content: "\e53d"; }
+
+.fa-mars-stroke-right::before {
+  content: "\f22b"; }
+
+.fa-mars-stroke-h::before {
+  content: "\f22b"; }
+
+.fa-hand-back-fist::before {
+  content: "\f255"; }
+
+.fa-hand-rock::before {
+  content: "\f255"; }
+
+.fa-tally::before {
+  content: "\f69c"; }
+
+.fa-tally-5::before {
+  content: "\f69c"; }
+
+.fa-square-caret-up::before {
+  content: "\f151"; }
+
+.fa-caret-square-up::before {
+  content: "\f151"; }
+
+.fa-cloud-showers-water::before {
+  content: "\e4e4"; }
+
+.fa-chart-bar::before {
+  content: "\f080"; }
+
+.fa-bar-chart::before {
+  content: "\f080"; }
+
+.fa-hands-bubbles::before {
+  content: "\e05e"; }
+
+.fa-hands-wash::before {
+  content: "\e05e"; }
+
+.fa-less-than-equal::before {
+  content: "\f537"; }
+
+.fa-train::before {
+  content: "\f238"; }
+
+.fa-up-from-dotted-line::before {
+  content: "\e456"; }
+
+.fa-eye-low-vision::before {
+  content: "\f2a8"; }
+
+.fa-low-vision::before {
+  content: "\f2a8"; }
+
+.fa-traffic-light-go::before {
+  content: "\f638"; }
+
+.fa-face-exhaling::before {
+  content: "\e480"; }
+
+.fa-sensor-fire::before {
+  content: "\e02a"; }
+
+.fa-user-unlock::before {
+  content: "\e058"; }
+
+.fa-hexagon-divide::before {
+  content: "\e1ad"; }
+
+.fa-00::before {
+  content: "\e467"; }
+
+.fa-crow::before {
+  content: "\f520"; }
+
+.fa-cassette-betamax::before {
+  content: "\f8a4"; }
+
+.fa-betamax::before {
+  content: "\f8a4"; }
+
+.fa-sailboat::before {
+  content: "\e445"; }
+
+.fa-window-restore::before {
+  content: "\f2d2"; }
+
+.fa-nfc-magnifying-glass::before {
+  content: "\e1f9"; }
+
+.fa-file-binary::before {
+  content: "\e175"; }
+
+.fa-circle-v::before {
+  content: "\e12a"; }
+
+.fa-square-plus::before {
+  content: "\f0fe"; }
+
+.fa-plus-square::before {
+  content: "\f0fe"; }
+
+.fa-bowl-scoops::before {
+  content: "\e3df"; }
+
+.fa-mistletoe::before {
+  content: "\f7b4"; }
+
+.fa-custard::before {
+  content: "\e403"; }
+
+.fa-lacrosse-stick::before {
+  content: "\e3b5"; }
+
+.fa-hockey-mask::before {
+  content: "\f6ee"; }
+
+.fa-sunrise::before {
+  content: "\f766"; }
+
+.fa-panel-ews::before {
+  content: "\e42e"; }
+
+.fa-torii-gate::before {
+  content: "\f6a1"; }
+
+.fa-cloud-exclamation::before {
+  content: "\e491"; }
+
+.fa-message-lines::before {
+  content: "\f4a6"; }
+
+.fa-comment-alt-lines::before {
+  content: "\f4a6"; }
+
+.fa-frog::before {
+  content: "\f52e"; }
+
+.fa-bucket::before {
+  content: "\e4cf"; }
+
+.fa-floppy-disk-pen::before {
+  content: "\e182"; }
+
+.fa-image::before {
+  content: "\f03e"; }
+
+.fa-window-frame::before {
+  content: "\e04f"; }
+
+.fa-microphone::before {
+  content: "\f130"; }
+
+.fa-cow::before {
+  content: "\f6c8"; }
+
+.fa-square-ring::before {
+  content: "\e44f"; }
+
+.fa-down-from-line::before {
+  content: "\f349"; }
+
+.fa-arrow-alt-from-top::before {
+  content: "\f349"; }
+
+.fa-caret-up::before {
+  content: "\f0d8"; }
+
+.fa-shield-xmark::before {
+  content: "\e24c"; }
+
+.fa-shield-times::before {
+  content: "\e24c"; }
+
+.fa-screwdriver::before {
+  content: "\f54a"; }
+
+.fa-circle-sort-down::before {
+  content: "\e031"; }
+
+.fa-sort-circle-down::before {
+  content: "\e031"; }
+
+.fa-folder-closed::before {
+  content: "\e185"; }
+
+.fa-house-tsunami::before {
+  content: "\e515"; }
+
+.fa-square-nfi::before {
+  content: "\e576"; }
+
+.fa-forklift::before {
+  content: "\f47a"; }
+
+.fa-arrow-up-from-ground-water::before {
+  content: "\e4b5"; }
+
+.fa-bracket-square-right::before {
+  content: "\5d"; }
+
+.fa-martini-glass::before {
+  content: "\f57b"; }
+
+.fa-glass-martini-alt::before {
+  content: "\f57b"; }
+
+.fa-rotate-left::before {
+  content: "\f2ea"; }
+
+.fa-rotate-back::before {
+  content: "\f2ea"; }
+
+.fa-rotate-backward::before {
+  content: "\f2ea"; }
+
+.fa-undo-alt::before {
+  content: "\f2ea"; }
+
+.fa-table-columns::before {
+  content: "\f0db"; }
+
+.fa-columns::before {
+  content: "\f0db"; }
+
+.fa-square-a::before {
+  content: "\e25f"; }
+
+.fa-tick::before {
+  content: "\e32f"; }
+
+.fa-lemon::before {
+  content: "\f094"; }
+
+.fa-head-side-mask::before {
+  content: "\e063"; }
+
+.fa-handshake::before {
+  content: "\f2b5"; }
+
+.fa-gem::before {
+  content: "\f3a5"; }
+
+.fa-dolly::before {
+  content: "\f472"; }
+
+.fa-dolly-box::before {
+  content: "\f472"; }
+
+.fa-smoking::before {
+  content: "\f48d"; }
+
+.fa-minimize::before {
+  content: "\f78c"; }
+
+.fa-compress-arrows-alt::before {
+  content: "\f78c"; }
+
+.fa-refrigerator::before {
+  content: "\e026"; }
+
+.fa-monument::before {
+  content: "\f5a6"; }
+
+.fa-octagon-xmark::before {
+  content: "\f2f0"; }
+
+.fa-times-octagon::before {
+  content: "\f2f0"; }
+
+.fa-xmark-octagon::before {
+  content: "\f2f0"; }
+
+.fa-align-slash::before {
+  content: "\f846"; }
+
+.fa-snowplow::before {
+  content: "\f7d2"; }
+
+.fa-angles-right::before {
+  content: "\f101"; }
+
+.fa-angle-double-right::before {
+  content: "\f101"; }
+
+.fa-truck-ramp-couch::before {
+  content: "\f4dd"; }
+
+.fa-truck-couch::before {
+  content: "\f4dd"; }
+
+.fa-cannabis::before {
+  content: "\f55f"; }
+
+.fa-circle-play::before {
+  content: "\f144"; }
+
+.fa-play-circle::before {
+  content: "\f144"; }
+
+.fa-arrow-up-right-and-arrow-down-left-from-center::before {
+  content: "\e0a0"; }
+
+.fa-tablets::before {
+  content: "\f490"; }
+
+.fa-360-degrees::before {
+  content: "\e2dc"; }
+
+.fa-ethernet::before {
+  content: "\f796"; }
+
+.fa-euro-sign::before {
+  content: "\f153"; }
+
+.fa-eur::before {
+  content: "\f153"; }
+
+.fa-euro::before {
+  content: "\f153"; }
+
+.fa-chair::before {
+  content: "\f6c0"; }
+
+.fa-circle-check::before {
+  content: "\f058"; }
+
+.fa-check-circle::before {
+  content: "\f058"; }
+
+.fa-money-simple-from-bracket::before {
+  content: "\e313"; }
+
+.fa-bat::before {
+  content: "\f6b5"; }
+
+.fa-circle-stop::before {
+  content: "\f28d"; }
+
+.fa-stop-circle::before {
+  content: "\f28d"; }
+
+.fa-head-side-headphones::before {
+  content: "\f8c2"; }
+
+.fa-phone-rotary::before {
+  content: "\f8d3"; }
+
+.fa-compass-drafting::before {
+  content: "\f568"; }
+
+.fa-drafting-compass::before {
+  content: "\f568"; }
+
+.fa-plate-wheat::before {
+  content: "\e55a"; }
+
+.fa-calendar-circle-minus::before {
+  content: "\e46f"; }
+
+.fa-chopsticks::before {
+  content: "\e3f7"; }
+
+.fa-car-wrench::before {
+  content: "\f5e3"; }
+
+.fa-car-mechanic::before {
+  content: "\f5e3"; }
+
+.fa-icicles::before {
+  content: "\f7ad"; }
+
+.fa-person-shelter::before {
+  content: "\e54f"; }
+
+.fa-neuter::before {
+  content: "\f22c"; }
+
+.fa-id-badge::before {
+  content: "\f2c1"; }
+
+.fa-kazoo::before {
+  content: "\f8c7"; }
+
+.fa-marker::before {
+  content: "\f5a1"; }
+
+.fa-face-laugh-beam::before {
+  content: "\f59a"; }
+
+.fa-laugh-beam::before {
+  content: "\f59a"; }
+
+.fa-square-arrow-down-left::before {
+  content: "\e261"; }
+
+.fa-battery-bolt::before {
+  content: "\f376"; }
+
+.fa-tree-large::before {
+  content: "\f7dd"; }
+
+.fa-helicopter-symbol::before {
+  content: "\e502"; }
+
+.fa-aperture::before {
+  content: "\e2df"; }
+
+.fa-universal-access::before {
+  content: "\f29a"; }
+
+.fa-file-magnifying-glass::before {
+  content: "\f865"; }
+
+.fa-file-search::before {
+  content: "\f865"; }
+
+.fa-up-right::before {
+  content: "\e2be"; }
+
+.fa-circle-chevron-up::before {
+  content: "\f139"; }
+
+.fa-chevron-circle-up::before {
+  content: "\f139"; }
+
+.fa-user-police::before {
+  content: "\e333"; }
+
+.fa-lari-sign::before {
+  content: "\e1c8"; }
+
+.fa-volcano::before {
+  content: "\f770"; }
+
+.fa-teddy-bear::before {
+  content: "\e3cf"; }
+
+.fa-stocking::before {
+  content: "\f7d5"; }
+
+.fa-person-walking-dashed-line-arrow-right::before {
+  content: "\e553"; }
+
+.fa-image-slash::before {
+  content: "\e1b7"; }
+
+.fa-mask-snorkel::before {
+  content: "\e3b7"; }
+
+.fa-smoke::before {
+  content: "\f760"; }
+
+.fa-sterling-sign::before {
+  content: "\f154"; }
+
+.fa-gbp::before {
+  content: "\f154"; }
+
+.fa-pound-sign::before {
+  content: "\f154"; }
+
+.fa-battery-exclamation::before {
+  content: "\e0b0"; }
+
+.fa-viruses::before {
+  content: "\e076"; }
+
+.fa-square-person-confined::before {
+  content: "\e577"; }
+
+.fa-user-tie::before {
+  content: "\f508"; }
+
+.fa-arrow-down-long::before {
+  content: "\f175"; }
+
+.fa-long-arrow-down::before {
+  content: "\f175"; }
+
+.fa-tent-arrow-down-to-line::before {
+  content: "\e57e"; }
+
+.fa-certificate::before {
+  content: "\f0a3"; }
+
+.fa-crystal-ball::before {
+  content: "\e362"; }
+
+.fa-reply-all::before {
+  content: "\f122"; }
+
+.fa-mail-reply-all::before {
+  content: "\f122"; }
+
+.fa-suitcase::before {
+  content: "\f0f2"; }
+
+.fa-person-skating::before {
+  content: "\f7c5"; }
+
+.fa-skating::before {
+  content: "\f7c5"; }
+
+.fa-star-shooting::before {
+  content: "\e036"; }
+
+.fa-binary-lock::before {
+  content: "\e33d"; }
+
+.fa-filter-circle-dollar::before {
+  content: "\f662"; }
+
+.fa-funnel-dollar::before {
+  content: "\f662"; }
+
+.fa-camera-retro::before {
+  content: "\f083"; }
+
+.fa-circle-arrow-down::before {
+  content: "\f0ab"; }
+
+.fa-arrow-circle-down::before {
+  content: "\f0ab"; }
+
+.fa-comment-pen::before {
+  content: "\f4ae"; }
+
+.fa-comment-edit::before {
+  content: "\f4ae"; }
+
+.fa-file-import::before {
+  content: "\f56f"; }
+
+.fa-arrow-right-to-file::before {
+  content: "\f56f"; }
+
+.fa-banjo::before {
+  content: "\f8a3"; }
+
+.fa-square-arrow-up-right::before {
+  content: "\f14c"; }
+
+.fa-external-link-square::before {
+  content: "\f14c"; }
+
+.fa-light-emergency-on::before {
+  content: "\e420"; }
+
+.fa-kerning::before {
+  content: "\f86f"; }
+
+.fa-box-open::before {
+  content: "\f49e"; }
+
+.fa-square-f::before {
+  content: "\e270"; }
+
+.fa-scroll::before {
+  content: "\f70e"; }
+
+.fa-spa::before {
+  content: "\f5bb"; }
+
+.fa-arrow-left-from-line::before {
+  content: "\f344"; }
+
+.fa-arrow-from-right::before {
+  content: "\f344"; }
+
+.fa-strawberry::before {
+  content: "\e32b"; }
+
+.fa-location-pin-lock::before {
+  content: "\e51f"; }
+
+.fa-pause::before {
+  content: "\f04c"; }
+
+.fa-clock-eight-thirty::before {
+  content: "\e346"; }
+
+.fa-plane-engines::before {
+  content: "\f3de"; }
+
+.fa-plane-alt::before {
+  content: "\f3de"; }
+
+.fa-hill-avalanche::before {
+  content: "\e507"; }
+
+.fa-temperature-empty::before {
+  content: "\f2cb"; }
+
+.fa-temperature-0::before {
+  content: "\f2cb"; }
+
+.fa-thermometer-0::before {
+  content: "\f2cb"; }
+
+.fa-thermometer-empty::before {
+  content: "\f2cb"; }
+
+.fa-bomb::before {
+  content: "\f1e2"; }
+
+.fa-gauge-low::before {
+  content: "\f627"; }
+
+.fa-tachometer-alt-slow::before {
+  content: "\f627"; }
+
+.fa-registered::before {
+  content: "\f25d"; }
+
+.fa-trash-can-plus::before {
+  content: "\e2ac"; }
+
+.fa-address-card::before {
+  content: "\f2bb"; }
+
+.fa-contact-card::before {
+  content: "\f2bb"; }
+
+.fa-vcard::before {
+  content: "\f2bb"; }
+
+.fa-scale-unbalanced-flip::before {
+  content: "\f516"; }
+
+.fa-balance-scale-right::before {
+  content: "\f516"; }
+
+.fa-globe-snow::before {
+  content: "\f7a3"; }
+
+.fa-subscript::before {
+  content: "\f12c"; }
+
+.fa-diamond-turn-right::before {
+  content: "\f5eb"; }
+
+.fa-directions::before {
+  content: "\f5eb"; }
+
+.fa-integral::before {
+  content: "\f667"; }
+
+.fa-burst::before {
+  content: "\e4dc"; }
+
+.fa-house-laptop::before {
+  content: "\e066"; }
+
+.fa-laptop-house::before {
+  content: "\e066"; }
+
+.fa-face-tired::before {
+  content: "\f5c8"; }
+
+.fa-tired::before {
+  content: "\f5c8"; }
+
+.fa-money-bills::before {
+  content: "\e1f3"; }
+
+.fa-blinds-raised::before {
+  content: "\f8fd"; }
+
+.fa-smog::before {
+  content: "\f75f"; }
+
+.fa-ufo-beam::before {
+  content: "\e048"; }
+
+.fa-circle-caret-up::before {
+  content: "\f331"; }
+
+.fa-caret-circle-up::before {
+  content: "\f331"; }
+
+.fa-user-vneck-hair-long::before {
+  content: "\e463"; }
+
+.fa-square-a-lock::before {
+  content: "\e44d"; }
+
+.fa-crutch::before {
+  content: "\f7f7"; }
+
+.fa-gas-pump-slash::before {
+  content: "\f5f4"; }
+
+.fa-cloud-arrow-up::before {
+  content: "\f0ee"; }
+
+.fa-cloud-upload::before {
+  content: "\f0ee"; }
+
+.fa-cloud-upload-alt::before {
+  content: "\f0ee"; }
+
+.fa-palette::before {
+  content: "\f53f"; }
+
+.fa-transporter-4::before {
+  content: "\e2a5"; }
+
+.fa-objects-align-right::before {
+  content: "\e3bf"; }
+
+.fa-arrows-turn-right::before {
+  content: "\e4c0"; }
+
+.fa-vest::before {
+  content: "\e085"; }
+
+.fa-pig::before {
+  content: "\f706"; }
+
+.fa-inbox-full::before {
+  content: "\e1ba"; }
+
+.fa-circle-envelope::before {
+  content: "\e10c"; }
+
+.fa-envelope-circle::before {
+  content: "\e10c"; }
+
+.fa-triangle-person-digging::before {
+  content: "\f85d"; }
+
+.fa-construction::before {
+  content: "\f85d"; }
+
+.fa-ferry::before {
+  content: "\e4ea"; }
+
+.fa-bullseye-arrow::before {
+  content: "\f648"; }
+
+.fa-arrows-down-to-people::before {
+  content: "\e4b9"; }
+
+.fa-seedling::before {
+  content: "\f4d8"; }
+
+.fa-sprout::before {
+  content: "\f4d8"; }
+
+.fa-clock-seven::before {
+  content: "\e350"; }
+
+.fa-left-right::before {
+  content: "\f337"; }
+
+.fa-arrows-alt-h::before {
+  content: "\f337"; }
+
+.fa-boxes-packing::before {
+  content: "\e4c7"; }
+
+.fa-circle-arrow-left::before {
+  content: "\f0a8"; }
+
+.fa-arrow-circle-left::before {
+  content: "\f0a8"; }
+
+.fa-flashlight::before {
+  content: "\f8b8"; }
+
+.fa-group-arrows-rotate::before {
+  content: "\e4f6"; }
+
+.fa-bowl-food::before {
+  content: "\e4c6"; }
+
+.fa-square-9::before {
+  content: "\e25e"; }
+
+.fa-candy-cane::before {
+  content: "\f786"; }
+
+.fa-arrow-down-wide-short::before {
+  content: "\f160"; }
+
+.fa-sort-amount-asc::before {
+  content: "\f160"; }
+
+.fa-sort-amount-down::before {
+  content: "\f160"; }
+
+.fa-square-dollar::before {
+  content: "\f2e9"; }
+
+.fa-dollar-square::before {
+  content: "\f2e9"; }
+
+.fa-usd-square::before {
+  content: "\f2e9"; }
+
+.fa-hand-holding-seedling::before {
+  content: "\f4bf"; }
+
+.fa-message-check::before {
+  content: "\f4a2"; }
+
+.fa-comment-alt-check::before {
+  content: "\f4a2"; }
+
+.fa-cloud-bolt::before {
+  content: "\f76c"; }
+
+.fa-thunderstorm::before {
+  content: "\f76c"; }
+
+.fa-text-slash::before {
+  content: "\f87d"; }
+
+.fa-remove-format::before {
+  content: "\f87d"; }
+
+.fa-watch::before {
+  content: "\f2e1"; }
+
+.fa-circle-down-left::before {
+  content: "\e107"; }
+
+.fa-text::before {
+  content: "\f893"; }
+
+.fa-projector::before {
+  content: "\f8d6"; }
+
+.fa-face-smile-wink::before {
+  content: "\f4da"; }
+
+.fa-smile-wink::before {
+  content: "\f4da"; }
+
+.fa-tombstone-blank::before {
+  content: "\f721"; }
+
+.fa-tombstone-alt::before {
+  content: "\f721"; }
+
+.fa-chess-king-piece::before {
+  content: "\f440"; }
+
+.fa-chess-king-alt::before {
+  content: "\f440"; }
+
+.fa-circle-6::before {
+  content: "\e0f3"; }
+
+.fa-left::before {
+  content: "\f355"; }
+
+.fa-arrow-alt-left::before {
+  content: "\f355"; }
+
+.fa-file-word::before {
+  content: "\f1c2"; }
+
+.fa-file-powerpoint::before {
+  content: "\f1c4"; }
+
+.fa-square-down::before {
+  content: "\f350"; }
+
+.fa-arrow-alt-square-down::before {
+  content: "\f350"; }
+
+.fa-objects-align-center-vertical::before {
+  content: "\e3bd"; }
+
+.fa-arrows-left-right::before {
+  content: "\f07e"; }
+
+.fa-arrows-h::before {
+  content: "\f07e"; }
+
+.fa-house-lock::before {
+  content: "\e510"; }
+
+.fa-cloud-arrow-down::before {
+  content: "\f0ed"; }
+
+.fa-cloud-download::before {
+  content: "\f0ed"; }
+
+.fa-cloud-download-alt::before {
+  content: "\f0ed"; }
+
+.fa-wreath::before {
+  content: "\f7e2"; }
+
+.fa-children::before {
+  content: "\e4e1"; }
+
+.fa-meter-droplet::before {
+  content: "\e1ea"; }
+
+.fa-chalkboard::before {
+  content: "\f51b"; }
+
+.fa-blackboard::before {
+  content: "\f51b"; }
+
+.fa-user-large-slash::before {
+  content: "\f4fa"; }
+
+.fa-user-alt-slash::before {
+  content: "\f4fa"; }
+
+.fa-signal-strong::before {
+  content: "\f68f"; }
+
+.fa-signal-4::before {
+  content: "\f68f"; }
+
+.fa-lollipop::before {
+  content: "\e424"; }
+
+.fa-lollypop::before {
+  content: "\e424"; }
+
+.fa-list-tree::before {
+  content: "\e1d2"; }
+
+.fa-envelope-open::before {
+  content: "\f2b6"; }
+
+.fa-draw-circle::before {
+  content: "\f5ed"; }
+
+.fa-cat-space::before {
+  content: "\e001"; }
+
+.fa-handshake-simple-slash::before {
+  content: "\e05f"; }
+
+.fa-handshake-alt-slash::before {
+  content: "\e05f"; }
+
+.fa-rabbit-running::before {
+  content: "\f709"; }
+
+.fa-rabbit-fast::before {
+  content: "\f709"; }
+
+.fa-memo-pad::before {
+  content: "\e1da"; }
+
+.fa-mattress-pillow::before {
+  content: "\e525"; }
+
+.fa-alarm-plus::before {
+  content: "\f844"; }
+
+.fa-alicorn::before {
+  content: "\f6b0"; }
+
+.fa-comment-question::before {
+  content: "\e14b"; }
+
+.fa-gingerbread-man::before {
+  content: "\f79d"; }
+
+.fa-guarani-sign::before {
+  content: "\e19a"; }
+
+.fa-burger-fries::before {
+  content: "\e0cd"; }
+
+.fa-mug-tea::before {
+  content: "\f875"; }
+
+.fa-border-top::before {
+  content: "\f855"; }
+
+.fa-arrows-rotate::before {
+  content: "\f021"; }
+
+.fa-refresh::before {
+  content: "\f021"; }
+
+.fa-sync::before {
+  content: "\f021"; }
+
+.fa-circle-book-open::before {
+  content: "\e0ff"; }
+
+.fa-book-circle::before {
+  content: "\e0ff"; }
+
+.fa-arrows-to-dotted-line::before {
+  content: "\e0a6"; }
+
+.fa-fire-extinguisher::before {
+  content: "\f134"; }
+
+.fa-garage-open::before {
+  content: "\e00b"; }
+
+.fa-shelves-empty::before {
+  content: "\e246"; }
+
+.fa-cruzeiro-sign::before {
+  content: "\e152"; }
+
+.fa-watch-apple::before {
+  content: "\e2cb"; }
+
+.fa-watch-calculator::before {
+  content: "\f8f0"; }
+
+.fa-list-dropdown::before {
+  content: "\e1cf"; }
+
+.fa-cabinet-filing::before {
+  content: "\f64b"; }
+
+.fa-burger-soda::before {
+  content: "\f858"; }
+
+.fa-square-arrow-up::before {
+  content: "\f33c"; }
+
+.fa-arrow-square-up::before {
+  content: "\f33c"; }
+
+.fa-greater-than-equal::before {
+  content: "\f532"; }
+
+.fa-pallet-box::before {
+  content: "\e208"; }
+
+.fa-face-confounded::before {
+  content: "\e36c"; }
+
+.fa-shield-halved::before {
+  content: "\f3ed"; }
+
+.fa-shield-alt::before {
+  content: "\f3ed"; }
+
+.fa-truck-plow::before {
+  content: "\f7de"; }
+
+.fa-book-atlas::before {
+  content: "\f558"; }
+
+.fa-atlas::before {
+  content: "\f558"; }
+
+.fa-virus::before {
+  content: "\e074"; }
+
+.fa-comment-middle-top::before {
+  content: "\e14a"; }
+
+.fa-envelope-circle-check::before {
+  content: "\e4e8"; }
+
+.fa-layer-group::before {
+  content: "\f5fd"; }
+
+.fa-restroom-simple::before {
+  content: "\e23a"; }
+
+.fa-arrows-to-dot::before {
+  content: "\e4be"; }
+
+.fa-border-outer::before {
+  content: "\f851"; }
+
+.fa-hashtag-lock::before {
+  content: "\e415"; }
+
+.fa-clock-two-thirty::before {
+  content: "\e35b"; }
+
+.fa-archway::before {
+  content: "\f557"; }
+
+.fa-heart-circle-check::before {
+  content: "\e4fd"; }
+
+.fa-house-chimney-crack::before {
+  content: "\f6f1"; }
+
+.fa-house-damage::before {
+  content: "\f6f1"; }
+
+.fa-file-zipper::before {
+  content: "\f1c6"; }
+
+.fa-file-archive::before {
+  content: "\f1c6"; }
+
+.fa-heart-half::before {
+  content: "\e1ab"; }
+
+.fa-comment-check::before {
+  content: "\f4ac"; }
+
+.fa-square::before {
+  content: "\f0c8"; }
+
+.fa-memo::before {
+  content: "\e1d8"; }
+
+.fa-martini-glass-empty::before {
+  content: "\f000"; }
+
+.fa-glass-martini::before {
+  content: "\f000"; }
+
+.fa-couch::before {
+  content: "\f4b8"; }
+
+.fa-cedi-sign::before {
+  content: "\e0df"; }
+
+.fa-italic::before {
+  content: "\f033"; }
+
+.fa-glass-citrus::before {
+  content: "\f869"; }
+
+.fa-calendar-lines-pen::before {
+  content: "\e472"; }
+
+.fa-church::before {
+  content: "\f51d"; }
+
+.fa-person-snowmobiling::before {
+  content: "\f7d1"; }
+
+.fa-snowmobile::before {
+  content: "\f7d1"; }
+
+.fa-face-hushed::before {
+  content: "\e37b"; }
+
+.fa-comments-dollar::before {
+  content: "\f653"; }
+
+.fa-link-simple-slash::before {
+  content: "\e1ce"; }
+
+.fa-democrat::before {
+  content: "\f747"; }
+
+.fa-face-confused::before {
+  content: "\e36d"; }
+
+.fa-pinball::before {
+  content: "\e229"; }
+
+.fa-z::before {
+  content: "\5a"; }
+
+.fa-person-skiing::before {
+  content: "\f7c9"; }
+
+.fa-skiing::before {
+  content: "\f7c9"; }
+
+.fa-deer::before {
+  content: "\f78e"; }
+
+.fa-input-pipe::before {
+  content: "\e1be"; }
+
+.fa-road-lock::before {
+  content: "\e567"; }
+
+.fa-a::before {
+  content: "\41"; }
+
+.fa-bookmark-slash::before {
+  content: "\e0c2"; }
+
+.fa-temperature-arrow-down::before {
+  content: "\e03f"; }
+
+.fa-temperature-down::before {
+  content: "\e03f"; }
+
+.fa-mace::before {
+  content: "\f6f8"; }
+
+.fa-feather-pointed::before {
+  content: "\f56b"; }
+
+.fa-feather-alt::before {
+  content: "\f56b"; }
+
+.fa-sausage::before {
+  content: "\f820"; }
+
+.fa-trash-can-clock::before {
+  content: "\e2aa"; }
+
+.fa-p::before {
+  content: "\50"; }
+
+.fa-snowflake::before {
+  content: "\f2dc"; }
+
+.fa-stomach::before {
+  content: "\f623"; }
+
+.fa-newspaper::before {
+  content: "\f1ea"; }
+
+.fa-rectangle-ad::before {
+  content: "\f641"; }
+
+.fa-ad::before {
+  content: "\f641"; }
+
+.fa-guitar-electric::before {
+  content: "\f8be"; }
+
+.fa-arrow-turn-down-right::before {
+  content: "\e3d6"; }
+
+.fa-moon-cloud::before {
+  content: "\f754"; }
+
+.fa-bread-slice-butter::before {
+  content: "\e3e1"; }
+
+.fa-circle-arrow-right::before {
+  content: "\f0a9"; }
+
+.fa-arrow-circle-right::before {
+  content: "\f0a9"; }
+
+.fa-user-group-crown::before {
+  content: "\f6a5"; }
+
+.fa-users-crown::before {
+  content: "\f6a5"; }
+
+.fa-circle-i::before {
+  content: "\e111"; }
+
+.fa-toilet-paper-check::before {
+  content: "\e5b2"; }
+
+.fa-filter-circle-xmark::before {
+  content: "\e17b"; }
+
+.fa-locust::before {
+  content: "\e520"; }
+
+.fa-sort::before {
+  content: "\f0dc"; }
+
+.fa-unsorted::before {
+  content: "\f0dc"; }
+
+.fa-list-ol::before {
+  content: "\f0cb"; }
+
+.fa-list-1-2::before {
+  content: "\f0cb"; }
+
+.fa-list-numeric::before {
+  content: "\f0cb"; }
+
+.fa-chart-waterfall::before {
+  content: "\e0eb"; }
+
+.fa-face-party::before {
+  content: "\e383"; }
+
+.fa-kidneys::before {
+  content: "\f5fb"; }
+
+.fa-wifi-exclamation::before {
+  content: "\e2cf"; }
+
+.fa-chart-network::before {
+  content: "\f78a"; }
+
+.fa-person-dress-burst::before {
+  content: "\e544"; }
+
+.fa-dice-d4::before {
+  content: "\f6d0"; }
+
+.fa-money-check-dollar::before {
+  content: "\f53d"; }
+
+.fa-money-check-alt::before {
+  content: "\f53d"; }
+
+.fa-vector-square::before {
+  content: "\f5cb"; }
+
+.fa-bread-slice::before {
+  content: "\f7ec"; }
+
+.fa-language::before {
+  content: "\f1ab"; }
+
+.fa-wheat-awn-slash::before {
+  content: "\e338"; }
+
+.fa-face-kiss-wink-heart::before {
+  content: "\f598"; }
+
+.fa-kiss-wink-heart::before {
+  content: "\f598"; }
+
+.fa-dagger::before {
+  content: "\f6cb"; }
+
+.fa-podium::before {
+  content: "\f680"; }
+
+.fa-memo-circle-check::before {
+  content: "\e1d9"; }
+
+.fa-route-highway::before {
+  content: "\f61a"; }
+
+.fa-down-to-line::before {
+  content: "\f34a"; }
+
+.fa-arrow-alt-to-bottom::before {
+  content: "\f34a"; }
+
+.fa-filter::before {
+  content: "\f0b0"; }
+
+.fa-square-g::before {
+  content: "\e271"; }
+
+.fa-circle-phone::before {
+  content: "\e11b"; }
+
+.fa-phone-circle::before {
+  content: "\e11b"; }
+
+.fa-clipboard-prescription::before {
+  content: "\f5e8"; }
+
+.fa-user-nurse-hair::before {
+  content: "\e45d"; }
+
+.fa-question::before {
+  content: "\3f"; }
+
+.fa-file-signature::before {
+  content: "\f573"; }
+
+.fa-toggle-large-on::before {
+  content: "\e5b1"; }
+
+.fa-up-down-left-right::before {
+  content: "\f0b2"; }
+
+.fa-arrows-alt::before {
+  content: "\f0b2"; }
+
+.fa-dryer-heat::before {
+  content: "\f862"; }
+
+.fa-dryer-alt::before {
+  content: "\f862"; }
+
+.fa-house-chimney-user::before {
+  content: "\e065"; }
+
+.fa-hand-holding-heart::before {
+  content: "\f4be"; }
+
+.fa-arrow-up-small-big::before {
+  content: "\f88f"; }
+
+.fa-sort-size-up-alt::before {
+  content: "\f88f"; }
+
+.fa-train-track::before {
+  content: "\e453"; }
+
+.fa-puzzle-piece::before {
+  content: "\f12e"; }
+
+.fa-money-check::before {
+  content: "\f53c"; }
+
+.fa-star-half-stroke::before {
+  content: "\f5c0"; }
+
+.fa-star-half-alt::before {
+  content: "\f5c0"; }
+
+.fa-file-exclamation::before {
+  content: "\f31a"; }
+
+.fa-code::before {
+  content: "\f121"; }
+
+.fa-whiskey-glass::before {
+  content: "\f7a0"; }
+
+.fa-glass-whiskey::before {
+  content: "\f7a0"; }
+
+.fa-moon-stars::before {
+  content: "\f755"; }
+
+.fa-building-circle-exclamation::before {
+  content: "\e4d3"; }
+
+.fa-clothes-hanger::before {
+  content: "\e136"; }
+
+.fa-mobile-notch::before {
+  content: "\e1ee"; }
+
+.fa-mobile-iphone::before {
+  content: "\e1ee"; }
+
+.fa-magnifying-glass-chart::before {
+  content: "\e522"; }
+
+.fa-arrow-up-right-from-square::before {
+  content: "\f08e"; }
+
+.fa-external-link::before {
+  content: "\f08e"; }
+
+.fa-cubes-stacked::before {
+  content: "\e4e6"; }
+
+.fa-images-user::before {
+  content: "\e1b9"; }
+
+.fa-won-sign::before {
+  content: "\f159"; }
+
+.fa-krw::before {
+  content: "\f159"; }
+
+.fa-won::before {
+  content: "\f159"; }
+
+.fa-image-polaroid-user::before {
+  content: "\e1b6"; }
+
+.fa-virus-covid::before {
+  content: "\e4a8"; }
+
+.fa-square-ellipsis::before {
+  content: "\e26e"; }
+
+.fa-pie::before {
+  content: "\f705"; }
+
+.fa-chess-knight-piece::before {
+  content: "\f442"; }
+
+.fa-chess-knight-alt::before {
+  content: "\f442"; }
+
+.fa-austral-sign::before {
+  content: "\e0a9"; }
+
+.fa-cloud-plus::before {
+  content: "\e35e"; }
+
+.fa-f::before {
+  content: "\46"; }
+
+.fa-leaf::before {
+  content: "\f06c"; }
+
+.fa-bed-bunk::before {
+  content: "\f8f8"; }
+
+.fa-road::before {
+  content: "\f018"; }
+
+.fa-taxi::before {
+  content: "\f1ba"; }
+
+.fa-cab::before {
+  content: "\f1ba"; }
+
+.fa-person-circle-plus::before {
+  content: "\e541"; }
+
+.fa-chart-pie::before {
+  content: "\f200"; }
+
+.fa-pie-chart::before {
+  content: "\f200"; }
+
+.fa-bolt-lightning::before {
+  content: "\e0b7"; }
+
+.fa-clock-eight::before {
+  content: "\e345"; }
+
+.fa-sack-xmark::before {
+  content: "\e56a"; }
+
+.fa-file-excel::before {
+  content: "\f1c3"; }
+
+.fa-file-contract::before {
+  content: "\f56c"; }
+
+.fa-fish-fins::before {
+  content: "\e4f2"; }
+
+.fa-circle-q::before {
+  content: "\e11e"; }
+
+.fa-building-flag::before {
+  content: "\e4d5"; }
+
+.fa-face-grin-beam::before {
+  content: "\f582"; }
+
+.fa-grin-beam::before {
+  content: "\f582"; }
+
+.fa-object-ungroup::before {
+  content: "\f248"; }
+
+.fa-face-disguise::before {
+  content: "\e370"; }
+
+.fa-circle-arrow-down-right::before {
+  content: "\e0fa"; }
+
+.fa-alien-8bit::before {
+  content: "\f8f6"; }
+
+.fa-alien-monster::before {
+  content: "\f8f6"; }
+
+.fa-hand-point-ribbon::before {
+  content: "\e1a6"; }
+
+.fa-poop::before {
+  content: "\f619"; }
+
+.fa-object-exclude::before {
+  content: "\e49c"; }
+
+.fa-telescope::before {
+  content: "\e03e"; }
+
+.fa-location-pin::before {
+  content: "\f041"; }
+
+.fa-map-marker::before {
+  content: "\f041"; }
+
+.fa-square-list::before {
+  content: "\e489"; }
+
+.fa-kaaba::before {
+  content: "\f66b"; }
+
+.fa-toilet-paper::before {
+  content: "\f71e"; }
+
+.fa-helmet-safety::before {
+  content: "\f807"; }
+
+.fa-hard-hat::before {
+  content: "\f807"; }
+
+.fa-hat-hard::before {
+  content: "\f807"; }
+
+.fa-comment-code::before {
+  content: "\e147"; }
+
+.fa-sim-cards::before {
+  content: "\e251"; }
+
+.fa-starship::before {
+  content: "\e039"; }
+
+.fa-eject::before {
+  content: "\f052"; }
+
+.fa-circle-right::before {
+  content: "\f35a"; }
+
+.fa-arrow-alt-circle-right::before {
+  content: "\f35a"; }
+
+.fa-plane-circle-check::before {
+  content: "\e555"; }
+
+.fa-seal::before {
+  content: "\e241"; }
+
+.fa-user-cowboy::before {
+  content: "\f8ea"; }
+
+.fa-hexagon-vertical-nft::before {
+  content: "\e505"; }
+
+.fa-face-rolling-eyes::before {
+  content: "\f5a5"; }
+
+.fa-meh-rolling-eyes::before {
+  content: "\f5a5"; }
+
+.fa-bread-loaf::before {
+  content: "\f7eb"; }
+
+.fa-rings-wedding::before {
+  content: "\f81b"; }
+
+.fa-object-group::before {
+  content: "\f247"; }
+
+.fa-french-fries::before {
+  content: "\f803"; }
+
+.fa-chart-line::before {
+  content: "\f201"; }
+
+.fa-line-chart::before {
+  content: "\f201"; }
+
+.fa-calendar-arrow-down::before {
+  content: "\e0d0"; }
+
+.fa-calendar-download::before {
+  content: "\e0d0"; }
+
+.fa-send-back::before {
+  content: "\f87e"; }
+
+.fa-mask-ventilator::before {
+  content: "\e524"; }
+
+.fa-signature-lock::before {
+  content: "\e3ca"; }
+
+.fa-arrow-right::before {
+  content: "\f061"; }
+
+.fa-signs-post::before {
+  content: "\f277"; }
+
+.fa-map-signs::before {
+  content: "\f277"; }
+
+.fa-octagon-plus::before {
+  content: "\f301"; }
+
+.fa-plus-octagon::before {
+  content: "\f301"; }
+
+.fa-cash-register::before {
+  content: "\f788"; }
+
+.fa-person-circle-question::before {
+  content: "\e542"; }
+
+.fa-melon-slice::before {
+  content: "\e311"; }
+
+.fa-space-station-moon::before {
+  content: "\e033"; }
+
+.fa-message-smile::before {
+  content: "\f4aa"; }
+
+.fa-comment-alt-smile::before {
+  content: "\f4aa"; }
+
+.fa-cup-straw::before {
+  content: "\e363"; }
+
+.fa-left-from-line::before {
+  content: "\f348"; }
+
+.fa-arrow-alt-from-right::before {
+  content: "\f348"; }
+
+.fa-h::before {
+  content: "\48"; }
+
+.fa-basket-shopping-simple::before {
+  content: "\e0af"; }
+
+.fa-shopping-basket-alt::before {
+  content: "\e0af"; }
+
+.fa-hands-holding-heart::before {
+  content: "\f4c3"; }
+
+.fa-hands-heart::before {
+  content: "\f4c3"; }
+
+.fa-clock-nine::before {
+  content: "\e34c"; }
+
+.fa-tarp::before {
+  content: "\e57b"; }
+
+.fa-face-sleepy::before {
+  content: "\e38e"; }
+
+.fa-hand-horns::before {
+  content: "\e1a9"; }
+
+.fa-screwdriver-wrench::before {
+  content: "\f7d9"; }
+
+.fa-tools::before {
+  content: "\f7d9"; }
+
+.fa-arrows-to-eye::before {
+  content: "\e4bf"; }
+
+.fa-circle-three-quarters::before {
+  content: "\e125"; }
+
+.fa-trophy-star::before {
+  content: "\f2eb"; }
+
+.fa-trophy-alt::before {
+  content: "\f2eb"; }
+
+.fa-plug-circle-bolt::before {
+  content: "\e55b"; }
+
+.fa-face-thermometer::before {
+  content: "\e39a"; }
+
+.fa-shirt-running::before {
+  content: "\e3c8"; }
+
+.fa-book-circle-arrow-up::before {
+  content: "\e0bd"; }
+
+.fa-face-nauseated::before {
+  content: "\e381"; }
+
+.fa-heart::before {
+  content: "\f004"; }
+
+.fa-file-chart-pie::before {
+  content: "\f65a"; }
+
+.fa-mars-and-venus::before {
+  content: "\f224"; }
+
+.fa-house-user::before {
+  content: "\e1b0"; }
+
+.fa-home-user::before {
+  content: "\e1b0"; }
+
+.fa-circle-arrow-down-left::before {
+  content: "\e0f9"; }
+
+.fa-dumpster-fire::before {
+  content: "\f794"; }
+
+.fa-hexagon-minus::before {
+  content: "\f307"; }
+
+.fa-minus-hexagon::before {
+  content: "\f307"; }
+
+.fa-left-to-line::before {
+  content: "\f34b"; }
+
+.fa-arrow-alt-to-left::before {
+  content: "\f34b"; }
+
+.fa-house-crack::before {
+  content: "\e3b1"; }
+
+.fa-paw-simple::before {
+  content: "\f701"; }
+
+.fa-paw-alt::before {
+  content: "\f701"; }
+
+.fa-arrow-left-long-to-line::before {
+  content: "\e3d4"; }
+
+.fa-brackets-round::before {
+  content: "\e0c5"; }
+
+.fa-parentheses::before {
+  content: "\e0c5"; }
+
+.fa-martini-glass-citrus::before {
+  content: "\f561"; }
+
+.fa-cocktail::before {
+  content: "\f561"; }
+
+.fa-user-shakespeare::before {
+  content: "\e2c2"; }
+
+.fa-arrow-right-to-arc::before {
+  content: "\e4b2"; }
+
+.fa-face-surprise::before {
+  content: "\f5c2"; }
+
+.fa-surprise::before {
+  content: "\f5c2"; }
+
+.fa-bottle-water::before {
+  content: "\e4c5"; }
+
+.fa-circle-pause::before {
+  content: "\f28b"; }
+
+.fa-pause-circle::before {
+  content: "\f28b"; }
+
+.fa-gauge-circle-plus::before {
+  content: "\e498"; }
+
+.fa-folders::before {
+  content: "\f660"; }
+
+.fa-angel::before {
+  content: "\f779"; }
+
+.fa-value-absolute::before {
+  content: "\f6a6"; }
+
+.fa-rabbit::before {
+  content: "\f708"; }
+
+.fa-toilet-paper-slash::before {
+  content: "\e072"; }
+
+.fa-apple-whole::before {
+  content: "\f5d1"; }
+
+.fa-apple-alt::before {
+  content: "\f5d1"; }
+
+.fa-kitchen-set::before {
+  content: "\e51a"; }
+
+.fa-lock-keyhole::before {
+  content: "\f30d"; }
+
+.fa-lock-alt::before {
+  content: "\f30d"; }
+
+.fa-r::before {
+  content: "\52"; }
+
+.fa-temperature-quarter::before {
+  content: "\f2ca"; }
+
+.fa-temperature-1::before {
+  content: "\f2ca"; }
+
+.fa-thermometer-1::before {
+  content: "\f2ca"; }
+
+.fa-thermometer-quarter::before {
+  content: "\f2ca"; }
+
+.fa-square-info::before {
+  content: "\f30f"; }
+
+.fa-info-square::before {
+  content: "\f30f"; }
+
+.fa-wifi-slash::before {
+  content: "\f6ac"; }
+
+.fa-toilet-paper-xmark::before {
+  content: "\e5b3"; }
+
+.fa-hands-holding-dollar::before {
+  content: "\f4c5"; }
+
+.fa-hands-usd::before {
+  content: "\f4c5"; }
+
+.fa-cube::before {
+  content: "\f1b2"; }
+
+.fa-arrow-down-triangle-square::before {
+  content: "\f888"; }
+
+.fa-sort-shapes-down::before {
+  content: "\f888"; }
+
+.fa-bitcoin-sign::before {
+  content: "\e0b4"; }
+
+.fa-shutters::before {
+  content: "\e449"; }
+
+.fa-shield-dog::before {
+  content: "\e573"; }
+
+.fa-solar-panel::before {
+  content: "\f5ba"; }
+
+.fa-lock-open::before {
+  content: "\f3c1"; }
+
+.fa-table-tree::before {
+  content: "\e293"; }
+
+.fa-house-chimney-heart::before {
+  content: "\e1b2"; }
+
+.fa-tally-3::before {
+  content: "\e296"; }
+
+.fa-elevator::before {
+  content: "\e16d"; }
+
+.fa-money-bill-transfer::before {
+  content: "\e528"; }
+
+.fa-money-bill-trend-up::before {
+  content: "\e529"; }
+
+.fa-house-flood-water-circle-arrow-right::before {
+  content: "\e50f"; }
+
+.fa-square-poll-horizontal::before {
+  content: "\f682"; }
+
+.fa-poll-h::before {
+  content: "\f682"; }
+
+.fa-circle::before {
+  content: "\f111"; }
+
+.fa-cart-circle-exclamation::before {
+  content: "\e3f2"; }
+
+.fa-sword::before {
+  content: "\f71c"; }
+
+.fa-backward-fast::before {
+  content: "\f049"; }
+
+.fa-fast-backward::before {
+  content: "\f049"; }
+
+.fa-recycle::before {
+  content: "\f1b8"; }
+
+.fa-user-astronaut::before {
+  content: "\f4fb"; }
+
+.fa-plane-slash::before {
+  content: "\e069"; }
+
+.fa-circle-dashed::before {
+  content: "\e105"; }
+
+.fa-trademark::before {
+  content: "\f25c"; }
+
+.fa-basketball::before {
+  content: "\f434"; }
+
+.fa-basketball-ball::before {
+  content: "\f434"; }
+
+.fa-fork-knife::before {
+  content: "\f2e6"; }
+
+.fa-utensils-alt::before {
+  content: "\f2e6"; }
+
+.fa-satellite-dish::before {
+  content: "\f7c0"; }
+
+.fa-badge-check::before {
+  content: "\f336"; }
+
+.fa-circle-up::before {
+  content: "\f35b"; }
+
+.fa-arrow-alt-circle-up::before {
+  content: "\f35b"; }
+
+.fa-slider::before {
+  content: "\e252"; }
+
+.fa-mobile-screen-button::before {
+  content: "\f3cd"; }
+
+.fa-mobile-alt::before {
+  content: "\f3cd"; }
+
+.fa-clock-one-thirty::before {
+  content: "\e34f"; }
+
+.fa-inbox-out::before {
+  content: "\f311"; }
+
+.fa-inbox-arrow-up::before {
+  content: "\f311"; }
+
+.fa-cloud-slash::before {
+  content: "\e137"; }
+
+.fa-volume-high::before {
+  content: "\f028"; }
+
+.fa-volume-up::before {
+  content: "\f028"; }
+
+.fa-users-rays::before {
+  content: "\e593"; }
+
+.fa-wallet::before {
+  content: "\f555"; }
+
+.fa-octagon-check::before {
+  content: "\e426"; }
+
+.fa-flatbread-stuffed::before {
+  content: "\e40c"; }
+
+.fa-clipboard-check::before {
+  content: "\f46c"; }
+
+.fa-cart-circle-plus::before {
+  content: "\e3f3"; }
+
+.fa-truck-clock::before {
+  content: "\f48c"; }
+
+.fa-shipping-timed::before {
+  content: "\f48c"; }
+
+.fa-pool-8-ball::before {
+  content: "\e3c5"; }
+
+.fa-file-audio::before {
+  content: "\f1c7"; }
+
+.fa-turn-down-left::before {
+  content: "\e331"; }
+
+.fa-lock-hashtag::before {
+  content: "\e423"; }
+
+.fa-chart-radar::before {
+  content: "\e0e7"; }
+
+.fa-staff::before {
+  content: "\f71b"; }
+
+.fa-burger::before {
+  content: "\f805"; }
+
+.fa-hamburger::before {
+  content: "\f805"; }
+
+.fa-utility-pole::before {
+  content: "\e2c3"; }
+
+.fa-transporter-6::before {
+  content: "\e2a7"; }
+
+.fa-wrench::before {
+  content: "\f0ad"; }
+
+.fa-bugs::before {
+  content: "\e4d0"; }
+
+.fa-vector-polygon::before {
+  content: "\e2c7"; }
+
+.fa-diagram-nested::before {
+  content: "\e157"; }
+
+.fa-rupee-sign::before {
+  content: "\f156"; }
+
+.fa-rupee::before {
+  content: "\f156"; }
+
+.fa-file-image::before {
+  content: "\f1c5"; }
+
+.fa-circle-question::before {
+  content: "\f059"; }
+
+.fa-question-circle::before {
+  content: "\f059"; }
+
+.fa-image-user::before {
+  content: "\e1b8"; }
+
+.fa-plane-departure::before {
+  content: "\f5b0"; }
+
+.fa-handshake-slash::before {
+  content: "\e060"; }
+
+.fa-book-bookmark::before {
+  content: "\e0bb"; }
+
+.fa-border-center-h::before {
+  content: "\f89c"; }
+
+.fa-can-food::before {
+  content: "\e3e6"; }
+
+.fa-typewriter::before {
+  content: "\f8e7"; }
+
+.fa-arrow-right-from-arc::before {
+  content: "\e4b1"; }
+
+.fa-circle-k::before {
+  content: "\e113"; }
+
+.fa-face-hand-over-mouth::before {
+  content: "\e378"; }
+
+.fa-popcorn::before {
+  content: "\f819"; }
+
+.fa-house-water::before {
+  content: "\f74f"; }
+
+.fa-house-flood::before {
+  content: "\f74f"; }
+
+.fa-object-subtract::before {
+  content: "\e49e"; }
+
+.fa-code-branch::before {
+  content: "\f126"; }
+
+.fa-warehouse-full::before {
+  content: "\f495"; }
+
+.fa-warehouse-alt::before {
+  content: "\f495"; }
+
+.fa-hat-cowboy::before {
+  content: "\f8c0"; }
+
+.fa-bridge::before {
+  content: "\e4c8"; }
+
+.fa-phone-flip::before {
+  content: "\f879"; }
+
+.fa-phone-alt::before {
+  content: "\f879"; }
+
+.fa-arrow-down-from-dotted-line::before {
+  content: "\e090"; }
+
+.fa-square-quarters::before {
+  content: "\e44e"; }
+
+.fa-truck-front::before {
+  content: "\e2b7"; }
+
+.fa-cat::before {
+  content: "\f6be"; }
+
+.fa-trash-xmark::before {
+  content: "\e2b4"; }
+
+.fa-circle-caret-left::before {
+  content: "\f32e"; }
+
+.fa-caret-circle-left::before {
+  content: "\f32e"; }
+
+.fa-files::before {
+  content: "\e178"; }
+
+.fa-anchor-circle-exclamation::before {
+  content: "\e4ab"; }
+
+.fa-face-clouds::before {
+  content: "\e47d"; }
+
+.fa-user-crown::before {
+  content: "\f6a4"; }
+
+.fa-truck-field::before {
+  content: "\e58d"; }
+
+.fa-route::before {
+  content: "\f4d7"; }
+
+.fa-cart-circle-check::before {
+  content: "\e3f1"; }
+
+.fa-clipboard-question::before {
+  content: "\e4e3"; }
+
+.fa-panorama::before {
+  content: "\e209"; }
+
+.fa-comment-medical::before {
+  content: "\f7f5"; }
+
+.fa-teeth-open::before {
+  content: "\f62f"; }
+
+.fa-user-tie-hair-long::before {
+  content: "\e460"; }
+
+.fa-file-circle-minus::before {
+  content: "\e4ed"; }
+
+.fa-head-side-medical::before {
+  content: "\f809"; }
+
+.fa-tags::before {
+  content: "\f02c"; }
+
+.fa-wine-glass::before {
+  content: "\f4e3"; }
+
+.fa-forward-fast::before {
+  content: "\f050"; }
+
+.fa-fast-forward::before {
+  content: "\f050"; }
+
+.fa-face-meh-blank::before {
+  content: "\f5a4"; }
+
+.fa-meh-blank::before {
+  content: "\f5a4"; }
+
+.fa-user-robot::before {
+  content: "\e04b"; }
+
+.fa-square-parking::before {
+  content: "\f540"; }
+
+.fa-parking::before {
+  content: "\f540"; }
+
+.fa-card-diamond::before {
+  content: "\e3ea"; }
+
+.fa-face-zipper::before {
+  content: "\e3a5"; }
+
+.fa-face-raised-eyebrow::before {
+  content: "\e388"; }
+
+.fa-house-signal::before {
+  content: "\e012"; }
+
+.fa-square-chevron-up::before {
+  content: "\f32c"; }
+
+.fa-chevron-square-up::before {
+  content: "\f32c"; }
+
+.fa-bars-progress::before {
+  content: "\f828"; }
+
+.fa-tasks-alt::before {
+  content: "\f828"; }
+
+.fa-faucet-drip::before {
+  content: "\e006"; }
+
+.fa-arrows-to-line::before {
+  content: "\e0a7"; }
+
+.fa-dolphin::before {
+  content: "\e168"; }
+
+.fa-arrow-up-right::before {
+  content: "\e09f"; }
+
+.fa-circle-r::before {
+  content: "\e120"; }
+
+.fa-cart-flatbed::before {
+  content: "\f474"; }
+
+.fa-dolly-flatbed::before {
+  content: "\f474"; }
+
+.fa-ban-smoking::before {
+  content: "\f54d"; }
+
+.fa-smoking-ban::before {
+  content: "\f54d"; }
+
+.fa-circle-sort-up::before {
+  content: "\e032"; }
+
+.fa-sort-circle-up::before {
+  content: "\e032"; }
+
+.fa-terminal::before {
+  content: "\f120"; }
+
+.fa-mobile-button::before {
+  content: "\f10b"; }
+
+.fa-house-medical-flag::before {
+  content: "\e514"; }
+
+.fa-basket-shopping::before {
+  content: "\f291"; }
+
+.fa-shopping-basket::before {
+  content: "\f291"; }
+
+.fa-tape::before {
+  content: "\f4db"; }
+
+.fa-chestnut::before {
+  content: "\e3f6"; }
+
+.fa-bus-simple::before {
+  content: "\f55e"; }
+
+.fa-bus-alt::before {
+  content: "\f55e"; }
+
+.fa-eye::before {
+  content: "\f06e"; }
+
+.fa-face-sad-cry::before {
+  content: "\f5b3"; }
+
+.fa-sad-cry::before {
+  content: "\f5b3"; }
+
+.fa-heat::before {
+  content: "\e00c"; }
+
+.fa-ticket-airline::before {
+  content: "\e29a"; }
+
+.fa-boot-heeled::before {
+  content: "\e33f"; }
+
+.fa-arrows-minimize::before {
+  content: "\e0a5"; }
+
+.fa-compress-arrows::before {
+  content: "\e0a5"; }
+
+.fa-audio-description::before {
+  content: "\f29e"; }
+
+.fa-person-military-to-person::before {
+  content: "\e54c"; }
+
+.fa-file-shield::before {
+  content: "\e4f0"; }
+
+.fa-hexagon::before {
+  content: "\f312"; }
+
+.fa-manhole::before {
+  content: "\e1d6"; }
+
+.fa-user-slash::before {
+  content: "\f506"; }
+
+.fa-pen::before {
+  content: "\f304"; }
+
+.fa-tower-observation::before {
+  content: "\e586"; }
+
+.fa-floppy-disks::before {
+  content: "\e183"; }
+
+.fa-toilet-paper-blank-under::before {
+  content: "\e29f"; }
+
+.fa-toilet-paper-reverse-alt::before {
+  content: "\e29f"; }
+
+.fa-file-code::before {
+  content: "\f1c9"; }
+
+.fa-signal::before {
+  content: "\f012"; }
+
+.fa-signal-5::before {
+  content: "\f012"; }
+
+.fa-signal-perfect::before {
+  content: "\f012"; }
+
+.fa-pump::before {
+  content: "\e442"; }
+
+.fa-bus::before {
+  content: "\f207"; }
+
+.fa-heart-circle-xmark::before {
+  content: "\e501"; }
+
+.fa-arrow-up-left-from-circle::before {
+  content: "\e09e"; }
+
+.fa-house-chimney::before {
+  content: "\e3af"; }
+
+.fa-home-lg::before {
+  content: "\e3af"; }
+
+.fa-window-maximize::before {
+  content: "\f2d0"; }
+
+.fa-dryer::before {
+  content: "\f861"; }
+
+.fa-face-frown::before {
+  content: "\f119"; }
+
+.fa-frown::before {
+  content: "\f119"; }
+
+.fa-chess-bishop-piece::before {
+  content: "\f43b"; }
+
+.fa-chess-bishop-alt::before {
+  content: "\f43b"; }
+
+.fa-shirt-tank-top::before {
+  content: "\e3c9"; }
+
+.fa-diploma::before {
+  content: "\f5ea"; }
+
+.fa-scroll-ribbon::before {
+  content: "\f5ea"; }
+
+.fa-screencast::before {
+  content: "\e23e"; }
+
+.fa-walker::before {
+  content: "\f831"; }
+
+.fa-prescription::before {
+  content: "\f5b1"; }
+
+.fa-shop::before {
+  content: "\f54f"; }
+
+.fa-store-alt::before {
+  content: "\f54f"; }
+
+.fa-floppy-disk::before {
+  content: "\f0c7"; }
+
+.fa-save::before {
+  content: "\f0c7"; }
+
+.fa-vihara::before {
+  content: "\f6a7"; }
+
+.fa-face-kiss-closed-eyes::before {
+  content: "\e37d"; }
+
+.fa-scale-unbalanced::before {
+  content: "\f515"; }
+
+.fa-balance-scale-left::before {
+  content: "\f515"; }
+
+.fa-file-user::before {
+  content: "\f65c"; }
+
+.fa-user-police-tie::before {
+  content: "\e334"; }
+
+.fa-face-tongue-money::before {
+  content: "\e39d"; }
+
+.fa-tennis-ball::before {
+  content: "\f45e"; }
+
+.fa-square-l::before {
+  content: "\e275"; }
+
+.fa-sort-up::before {
+  content: "\f0de"; }
+
+.fa-sort-asc::before {
+  content: "\f0de"; }
+
+.fa-calendar-arrow-up::before {
+  content: "\e0d1"; }
+
+.fa-calendar-upload::before {
+  content: "\e0d1"; }
+
+.fa-comment-dots::before {
+  content: "\f4ad"; }
+
+.fa-commenting::before {
+  content: "\f4ad"; }
+
+.fa-plant-wilt::before {
+  content: "\e5aa"; }
+
+.fa-scarf::before {
+  content: "\f7c1"; }
+
+.fa-album-circle-plus::before {
+  content: "\e48c"; }
+
+.fa-user-nurse-hair-long::before {
+  content: "\e45e"; }
+
+.fa-diamond::before {
+  content: "\f219"; }
+
+.fa-square-left::before {
+  content: "\f351"; }
+
+.fa-arrow-alt-square-left::before {
+  content: "\f351"; }
+
+.fa-face-grin-squint::before {
+  content: "\f585"; }
+
+.fa-grin-squint::before {
+  content: "\f585"; }
+
+.fa-circle-ellipsis-vertical::before {
+  content: "\e10b"; }
+
+.fa-hand-holding-dollar::before {
+  content: "\f4c0"; }
+
+.fa-hand-holding-usd::before {
+  content: "\f4c0"; }
+
+.fa-grid-dividers::before {
+  content: "\e3ad"; }
+
+.fa-bacterium::before {
+  content: "\e05a"; }
+
+.fa-hand-pointer::before {
+  content: "\f25a"; }
+
+.fa-drum-steelpan::before {
+  content: "\f56a"; }
+
+.fa-hand-scissors::before {
+  content: "\f257"; }
+
+.fa-hands-praying::before {
+  content: "\f684"; }
+
+.fa-praying-hands::before {
+  content: "\f684"; }
+
+.fa-face-pensive::before {
+  content: "\e384"; }
+
+.fa-user-music::before {
+  content: "\f8eb"; }
+
+.fa-arrow-rotate-right::before {
+  content: "\f01e"; }
+
+.fa-arrow-right-rotate::before {
+  content: "\f01e"; }
+
+.fa-arrow-rotate-forward::before {
+  content: "\f01e"; }
+
+.fa-redo::before {
+  content: "\f01e"; }
+
+.fa-messages-dollar::before {
+  content: "\f652"; }
+
+.fa-comments-alt-dollar::before {
+  content: "\f652"; }
+
+.fa-sensor-on::before {
+  content: "\e02b"; }
+
+.fa-balloon::before {
+  content: "\e2e3"; }
+
+.fa-biohazard::before {
+  content: "\f780"; }
+
+.fa-chess-queen-piece::before {
+  content: "\f446"; }
+
+.fa-chess-queen-alt::before {
+  content: "\f446"; }
+
+.fa-location-crosshairs::before {
+  content: "\f601"; }
+
+.fa-location::before {
+  content: "\f601"; }
+
+.fa-mars-double::before {
+  content: "\f227"; }
+
+.fa-house-person-leave::before {
+  content: "\e00f"; }
+
+.fa-house-leave::before {
+  content: "\e00f"; }
+
+.fa-house-person-depart::before {
+  content: "\e00f"; }
+
+.fa-ruler-triangle::before {
+  content: "\f61c"; }
+
+.fa-card-club::before {
+  content: "\e3e9"; }
+
+.fa-child-dress::before {
+  content: "\e59c"; }
+
+.fa-users-between-lines::before {
+  content: "\e591"; }
+
+.fa-lungs-virus::before {
+  content: "\e067"; }
+
+.fa-spinner-third::before {
+  content: "\f3f4"; }
+
+.fa-face-grin-tears::before {
+  content: "\f588"; }
+
+.fa-grin-tears::before {
+  content: "\f588"; }
+
+.fa-phone::before {
+  content: "\f095"; }
+
+.fa-computer-mouse-scrollwheel::before {
+  content: "\f8cd"; }
+
+.fa-mouse-alt::before {
+  content: "\f8cd"; }
+
+.fa-calendar-xmark::before {
+  content: "\f273"; }
+
+.fa-calendar-times::before {
+  content: "\f273"; }
+
+.fa-child-reaching::before {
+  content: "\e59d"; }
+
+.fa-table-layout::before {
+  content: "\e290"; }
+
+.fa-narwhal::before {
+  content: "\f6fe"; }
+
+.fa-ramp-loading::before {
+  content: "\f4d4"; }
+
+.fa-calendar-circle-plus::before {
+  content: "\e470"; }
+
+.fa-toothbrush::before {
+  content: "\f635"; }
+
+.fa-border-inner::before {
+  content: "\f84e"; }
+
+.fa-paw-claws::before {
+  content: "\f702"; }
+
+.fa-kiwi-fruit::before {
+  content: "\e30c"; }
+
+.fa-traffic-light-slow::before {
+  content: "\f639"; }
+
+.fa-rectangle-code::before {
+  content: "\e322"; }
+
+.fa-head-side-virus::before {
+  content: "\e064"; }
+
+.fa-keyboard-brightness::before {
+  content: "\e1c0"; }
+
+.fa-books-medical::before {
+  content: "\f7e8"; }
+
+.fa-lightbulb-slash::before {
+  content: "\f673"; }
+
+.fa-house-blank::before {
+  content: "\e487"; }
+
+.fa-home-blank::before {
+  content: "\e487"; }
+
+.fa-square-5::before {
+  content: "\e25a"; }
+
+.fa-square-heart::before {
+  content: "\f4c8"; }
+
+.fa-heart-square::before {
+  content: "\f4c8"; }
+
+.fa-puzzle::before {
+  content: "\e443"; }
+
+.fa-user-gear::before {
+  content: "\f4fe"; }
+
+.fa-user-cog::before {
+  content: "\f4fe"; }
+
+.fa-pipe-circle-check::before {
+  content: "\e436"; }
+
+.fa-arrow-up-1-9::before {
+  content: "\f163"; }
+
+.fa-sort-numeric-up::before {
+  content: "\f163"; }
+
+.fa-octagon-exclamation::before {
+  content: "\e204"; }
+
+.fa-dial-low::before {
+  content: "\e15d"; }
+
+.fa-door-closed::before {
+  content: "\f52a"; }
+
+.fa-laptop-mobile::before {
+  content: "\f87a"; }
+
+.fa-phone-laptop::before {
+  content: "\f87a"; }
+
+.fa-conveyor-belt-boxes::before {
+  content: "\f46f"; }
+
+.fa-conveyor-belt-alt::before {
+  content: "\f46f"; }
+
+.fa-shield-virus::before {
+  content: "\e06c"; }
+
+.fa-starfighter-twin-ion-engine-advanced::before {
+  content: "\e28e"; }
+
+.fa-starfighter-alt-advanced::before {
+  content: "\e28e"; }
+
+.fa-dice-six::before {
+  content: "\f526"; }
+
+.fa-starfighter-twin-ion-engine::before {
+  content: "\e038"; }
+
+.fa-starfighter-alt::before {
+  content: "\e038"; }
+
+.fa-rocket-launch::before {
+  content: "\e027"; }
+
+.fa-mosquito-net::before {
+  content: "\e52c"; }
+
+.fa-vent-damper::before {
+  content: "\e465"; }
+
+.fa-bridge-water::before {
+  content: "\e4ce"; }
+
+.fa-ban-bug::before {
+  content: "\f7f9"; }
+
+.fa-debug::before {
+  content: "\f7f9"; }
+
+.fa-person-booth::before {
+  content: "\f756"; }
+
+.fa-text-width::before {
+  content: "\f035"; }
+
+.fa-garage-car::before {
+  content: "\e00a"; }
+
+.fa-square-kanban::before {
+  content: "\e488"; }
+
+.fa-hat-wizard::before {
+  content: "\f6e8"; }
+
+.fa-pen-fancy::before {
+  content: "\f5ac"; }
+
+.fa-coffee-pot::before {
+  content: "\e002"; }
+
+.fa-mouse-field::before {
+  content: "\e5a8"; }
+
+.fa-person-digging::before {
+  content: "\f85e"; }
+
+.fa-digging::before {
+  content: "\f85e"; }
+
+.fa-shower-down::before {
+  content: "\e24d"; }
+
+.fa-shower-alt::before {
+  content: "\e24d"; }
+
+.fa-box-circle-check::before {
+  content: "\e0c4"; }
+
+.fa-brightness::before {
+  content: "\e0c9"; }
+
+.fa-car-side-bolt::before {
+  content: "\e344"; }
+
+.fa-ornament::before {
+  content: "\f7b8"; }
+
+.fa-phone-arrow-down-left::before {
+  content: "\e223"; }
+
+.fa-phone-arrow-down::before {
+  content: "\e223"; }
+
+.fa-phone-incoming::before {
+  content: "\e223"; }
+
+.fa-cloud-word::before {
+  content: "\e138"; }
+
+.fa-hand-fingers-crossed::before {
+  content: "\e1a3"; }
+
+.fa-trash::before {
+  content: "\f1f8"; }
+
+.fa-gauge-simple::before {
+  content: "\f629"; }
+
+.fa-gauge-simple-med::before {
+  content: "\f629"; }
+
+.fa-tachometer-average::before {
+  content: "\f629"; }
+
+.fa-arrow-down-small-big::before {
+  content: "\f88d"; }
+
+.fa-sort-size-down-alt::before {
+  content: "\f88d"; }
+
+.fa-book-medical::before {
+  content: "\f7e6"; }
+
+.fa-face-melting::before {
+  content: "\e483"; }
+
+.fa-poo::before {
+  content: "\f2fe"; }
+
+.fa-pen-clip-slash::before {
+  content: "\e20f"; }
+
+.fa-pen-alt-slash::before {
+  content: "\e20f"; }
+
+.fa-quote-right::before {
+  content: "\f10e"; }
+
+.fa-quote-right-alt::before {
+  content: "\f10e"; }
+
+.fa-scroll-old::before {
+  content: "\f70f"; }
+
+.fa-guitars::before {
+  content: "\f8bf"; }
+
+.fa-phone-xmark::before {
+  content: "\e227"; }
+
+.fa-hose::before {
+  content: "\e419"; }
+
+.fa-clock-six::before {
+  content: "\e352"; }
+
+.fa-shirt::before {
+  content: "\f553"; }
+
+.fa-t-shirt::before {
+  content: "\f553"; }
+
+.fa-tshirt::before {
+  content: "\f553"; }
+
+.fa-square-r::before {
+  content: "\e27c"; }
+
+.fa-cubes::before {
+  content: "\f1b3"; }
+
+.fa-envelope-open-dollar::before {
+  content: "\f657"; }
+
+.fa-divide::before {
+  content: "\f529"; }
+
+.fa-sun-cloud::before {
+  content: "\f763"; }
+
+.fa-lamp-floor::before {
+  content: "\e015"; }
+
+.fa-square-7::before {
+  content: "\e25c"; }
+
+.fa-tenge-sign::before {
+  content: "\f7d7"; }
+
+.fa-tenge::before {
+  content: "\f7d7"; }
+
+.fa-headphones::before {
+  content: "\f025"; }
+
+.fa-hands-holding::before {
+  content: "\f4c2"; }
+
+.fa-campfire::before {
+  content: "\f6ba"; }
+
+.fa-circle-ampersand::before {
+  content: "\e0f8"; }
+
+.fa-snowflakes::before {
+  content: "\f7cf"; }
+
+.fa-hands-clapping::before {
+  content: "\e1a8"; }
+
+.fa-republican::before {
+  content: "\f75e"; }
+
+.fa-leaf-maple::before {
+  content: "\f6f6"; }
+
+.fa-arrow-left::before {
+  content: "\f060"; }
+
+.fa-person-circle-xmark::before {
+  content: "\e543"; }
+
+.fa-ruler::before {
+  content: "\f545"; }
+
+.fa-cup-straw-swoosh::before {
+  content: "\e364"; }
+
+.fa-temperature-sun::before {
+  content: "\f76a"; }
+
+.fa-temperature-hot::before {
+  content: "\f76a"; }
+
+.fa-align-left::before {
+  content: "\f036"; }
+
+.fa-dice-d6::before {
+  content: "\f6d1"; }
+
+.fa-restroom::before {
+  content: "\f7bd"; }
+
+.fa-high-definition::before {
+  content: "\e1ae"; }
+
+.fa-rectangle-hd::before {
+  content: "\e1ae"; }
+
+.fa-j::before {
+  content: "\4a"; }
+
+.fa-galaxy::before {
+  content: "\e008"; }
+
+.fa-users-viewfinder::before {
+  content: "\e595"; }
+
+.fa-file-video::before {
+  content: "\f1c8"; }
+
+.fa-cherries::before {
+  content: "\e0ec"; }
+
+.fa-up-right-from-square::before {
+  content: "\f35d"; }
+
+.fa-external-link-alt::before {
+  content: "\f35d"; }
+
+.fa-circle-sort::before {
+  content: "\e030"; }
+
+.fa-sort-circle::before {
+  content: "\e030"; }
+
+.fa-table-cells::before {
+  content: "\f00a"; }
+
+.fa-th::before {
+  content: "\f00a"; }
+
+.fa-file-pdf::before {
+  content: "\f1c1"; }
+
+.fa-siren::before {
+  content: "\e02d"; }
+
+.fa-arrow-up-to-dotted-line::before {
+  content: "\e0a1"; }
+
+.fa-image-landscape::before {
+  content: "\e1b5"; }
+
+.fa-landscape::before {
+  content: "\e1b5"; }
+
+.fa-tank-water::before {
+  content: "\e452"; }
+
+.fa-curling-stone::before {
+  content: "\f44a"; }
+
+.fa-curling::before {
+  content: "\f44a"; }
+
+.fa-gamepad-modern::before {
+  content: "\e5a2"; }
+
+.fa-gamepad-alt::before {
+  content: "\e5a2"; }
+
+.fa-messages-question::before {
+  content: "\e1e7"; }
+
+.fa-book-bible::before {
+  content: "\f647"; }
+
+.fa-bible::before {
+  content: "\f647"; }
+
+.fa-o::before {
+  content: "\4f"; }
+
+.fa-suitcase-medical::before {
+  content: "\f0fa"; }
+
+.fa-medkit::before {
+  content: "\f0fa"; }
+
+.fa-briefcase-arrow-right::before {
+  content: "\e2f2"; }
+
+.fa-expand-wide::before {
+  content: "\f320"; }
+
+.fa-clock-eleven-thirty::before {
+  content: "\e348"; }
+
+.fa-rv::before {
+  content: "\f7be"; }
+
+.fa-user-secret::before {
+  content: "\f21b"; }
+
+.fa-otter::before {
+  content: "\f700"; }
+
+.fa-dreidel::before {
+  content: "\f792"; }
+
+.fa-person-dress::before {
+  content: "\f182"; }
+
+.fa-female::before {
+  content: "\f182"; }
+
+.fa-comment-dollar::before {
+  content: "\f651"; }
+
+.fa-business-time::before {
+  content: "\f64a"; }
+
+.fa-briefcase-clock::before {
+  content: "\f64a"; }
+
+.fa-flower-tulip::before {
+  content: "\f801"; }
+
+.fa-people-pants-simple::before {
+  content: "\e21a"; }
+
+.fa-cloud-drizzle::before {
+  content: "\f738"; }
+
+.fa-table-cells-large::before {
+  content: "\f009"; }
+
+.fa-th-large::before {
+  content: "\f009"; }
+
+.fa-book-tanakh::before {
+  content: "\f827"; }
+
+.fa-tanakh::before {
+  content: "\f827"; }
+
+.fa-solar-system::before {
+  content: "\e02f"; }
+
+.fa-seal-question::before {
+  content: "\e243"; }
+
+.fa-phone-volume::before {
+  content: "\f2a0"; }
+
+.fa-volume-control-phone::before {
+  content: "\f2a0"; }
+
+.fa-disc-drive::before {
+  content: "\f8b5"; }
+
+.fa-hat-cowboy-side::before {
+  content: "\f8c1"; }
+
+.fa-table-rows::before {
+  content: "\e292"; }
+
+.fa-rows::before {
+  content: "\e292"; }
+
+.fa-location-exclamation::before {
+  content: "\f608"; }
+
+.fa-map-marker-exclamation::before {
+  content: "\f608"; }
+
+.fa-face-fearful::before {
+  content: "\e375"; }
+
+.fa-clipboard-user::before {
+  content: "\f7f3"; }
+
+.fa-bus-school::before {
+  content: "\f5dd"; }
+
+.fa-film-slash::before {
+  content: "\e179"; }
+
+.fa-square-arrow-down-right::before {
+  content: "\e262"; }
+
+.fa-book-sparkles::before {
+  content: "\f6b8"; }
+
+.fa-book-spells::before {
+  content: "\f6b8"; }
+
+.fa-washing-machine::before {
+  content: "\f898"; }
+
+.fa-washer::before {
+  content: "\f898"; }
+
+.fa-child::before {
+  content: "\f1ae"; }
+
+.fa-lira-sign::before {
+  content: "\f195"; }
+
+.fa-user-visor::before {
+  content: "\e04c"; }
+
+.fa-file-plus-minus::before {
+  content: "\e177"; }
+
+.fa-chess-clock-flip::before {
+  content: "\f43e"; }
+
+.fa-chess-clock-alt::before {
+  content: "\f43e"; }
+
+.fa-satellite::before {
+  content: "\f7bf"; }
+
+.fa-plane-lock::before {
+  content: "\e558"; }
+
+.fa-steering-wheel::before {
+  content: "\f622"; }
+
+.fa-tag::before {
+  content: "\f02b"; }
+
+.fa-stretcher::before {
+  content: "\f825"; }
+
+.fa-book-section::before {
+  content: "\e0c1"; }
+
+.fa-book-law::before {
+  content: "\e0c1"; }
+
+.fa-inboxes::before {
+  content: "\e1bb"; }
+
+.fa-coffee-bean::before {
+  content: "\e13e"; }
+
+.fa-brackets-curly::before {
+  content: "\f7ea"; }
+
+.fa-ellipsis-stroke-vertical::before {
+  content: "\f39c"; }
+
+.fa-ellipsis-v-alt::before {
+  content: "\f39c"; }
+
+.fa-comment::before {
+  content: "\f075"; }
+
+.fa-square-1::before {
+  content: "\e256"; }
+
+.fa-cake-candles::before {
+  content: "\f1fd"; }
+
+.fa-birthday-cake::before {
+  content: "\f1fd"; }
+
+.fa-cake::before {
+  content: "\f1fd"; }
+
+.fa-head-side::before {
+  content: "\f6e9"; }
+
+.fa-envelope::before {
+  content: "\f0e0"; }
+
+.fa-dolly-empty::before {
+  content: "\f473"; }
+
+.fa-face-tissue::before {
+  content: "\e39c"; }
+
+.fa-angles-up::before {
+  content: "\f102"; }
+
+.fa-angle-double-up::before {
+  content: "\f102"; }
+
+.fa-paperclip::before {
+  content: "\f0c6"; }
+
+.fa-chart-line-down::before {
+  content: "\f64d"; }
+
+.fa-arrow-right-to-city::before {
+  content: "\e4b3"; }
+
+.fa-lock-a::before {
+  content: "\e422"; }
+
+.fa-ribbon::before {
+  content: "\f4d6"; }
+
+.fa-lungs::before {
+  content: "\f604"; }
+
+.fa-person-pinball::before {
+  content: "\e21d"; }
+
+.fa-arrow-up-9-1::before {
+  content: "\f887"; }
+
+.fa-sort-numeric-up-alt::before {
+  content: "\f887"; }
+
+.fa-apple-core::before {
+  content: "\e08f"; }
+
+.fa-circle-y::before {
+  content: "\e12f"; }
+
+.fa-h6::before {
+  content: "\e413"; }
+
+.fa-litecoin-sign::before {
+  content: "\e1d3"; }
+
+.fa-circle-small::before {
+  content: "\e122"; }
+
+.fa-border-none::before {
+  content: "\f850"; }
+
+.fa-arrow-turn-down-left::before {
+  content: "\e2e1"; }
+
+.fa-circle-nodes::before {
+  content: "\e4e2"; }
+
+.fa-parachute-box::before {
+  content: "\f4cd"; }
+
+.fa-message-medical::before {
+  content: "\f7f4"; }
+
+.fa-comment-alt-medical::before {
+  content: "\f7f4"; }
+
+.fa-rugby-ball::before {
+  content: "\e3c6"; }
+
+.fa-comment-music::before {
+  content: "\f8b0"; }
+
+.fa-indent::before {
+  content: "\f03c"; }
+
+.fa-tree-deciduous::before {
+  content: "\f400"; }
+
+.fa-tree-alt::before {
+  content: "\f400"; }
+
+.fa-puzzle-piece-simple::before {
+  content: "\e231"; }
+
+.fa-puzzle-piece-alt::before {
+  content: "\e231"; }
+
+.fa-truck-field-un::before {
+  content: "\e58e"; }
+
+.fa-nfc-trash::before {
+  content: "\e1fd"; }
+
+.fa-hourglass::before {
+  content: "\f254"; }
+
+.fa-hourglass-empty::before {
+  content: "\f254"; }
+
+.fa-mountain::before {
+  content: "\f6fc"; }
+
+.fa-file-xmark::before {
+  content: "\f317"; }
+
+.fa-file-times::before {
+  content: "\f317"; }
+
+.fa-house-heart::before {
+  content: "\f4c9"; }
+
+.fa-home-heart::before {
+  content: "\f4c9"; }
+
+.fa-house-chimney-blank::before {
+  content: "\e3b0"; }
+
+.fa-meter-bolt::before {
+  content: "\e1e9"; }
+
+.fa-user-doctor::before {
+  content: "\f0f0"; }
+
+.fa-user-md::before {
+  content: "\f0f0"; }
+
+.fa-slash-back::before {
+  content: "\5c"; }
+
+.fa-circle-info::before {
+  content: "\f05a"; }
+
+.fa-info-circle::before {
+  content: "\f05a"; }
+
+.fa-fishing-rod::before {
+  content: "\e3a8"; }
+
+.fa-hammer-crash::before {
+  content: "\e414"; }
+
+.fa-cloud-meatball::before {
+  content: "\f73b"; }
+
+.fa-camera-polaroid::before {
+  content: "\f8aa"; }
+
+.fa-camera::before {
+  content: "\f030"; }
+
+.fa-camera-alt::before {
+  content: "\f030"; }
+
+.fa-square-virus::before {
+  content: "\e578"; }
+
+.fa-cart-arrow-up::before {
+  content: "\e3ee"; }
+
+.fa-meteor::before {
+  content: "\f753"; }
+
+.fa-car-on::before {
+  content: "\e4dd"; }
+
+.fa-sleigh::before {
+  content: "\f7cc"; }
+
+.fa-arrow-down-1-9::before {
+  content: "\f162"; }
+
+.fa-sort-numeric-asc::before {
+  content: "\f162"; }
+
+.fa-sort-numeric-down::before {
+  content: "\f162"; }
+
+.fa-square-4::before {
+  content: "\e259"; }
+
+.fa-hand-holding-droplet::before {
+  content: "\f4c1"; }
+
+.fa-hand-holding-water::before {
+  content: "\f4c1"; }
+
+.fa-waveform::before {
+  content: "\f8f1"; }
+
+.fa-water::before {
+  content: "\f773"; }
+
+.fa-star-sharp-half-stroke::before {
+  content: "\e28d"; }
+
+.fa-star-sharp-half-alt::before {
+  content: "\e28d"; }
+
+.fa-nfc-signal::before {
+  content: "\e1fb"; }
+
+.fa-plane-prop::before {
+  content: "\e22b"; }
+
+.fa-calendar-check::before {
+  content: "\f274"; }
+
+.fa-clock-desk::before {
+  content: "\e134"; }
+
+.fa-calendar-clock::before {
+  content: "\e0d2"; }
+
+.fa-calendar-time::before {
+  content: "\e0d2"; }
+
+.fa-braille::before {
+  content: "\f2a1"; }
+
+.fa-prescription-bottle-medical::before {
+  content: "\f486"; }
+
+.fa-prescription-bottle-alt::before {
+  content: "\f486"; }
+
+.fa-plate-utensils::before {
+  content: "\e43b"; }
+
+.fa-family-pants::before {
+  content: "\e302"; }
+
+.fa-hose-reel::before {
+  content: "\e41a"; }
+
+.fa-house-window::before {
+  content: "\e3b3"; }
+
+.fa-landmark::before {
+  content: "\f66f"; }
+
+.fa-truck::before {
+  content: "\f0d1"; }
+
+.fa-crosshairs::before {
+  content: "\f05b"; }
+
+.fa-cloud-rainbow::before {
+  content: "\f73e"; }
+
+.fa-person-cane::before {
+  content: "\e53c"; }
+
+.fa-alien::before {
+  content: "\f8f5"; }
+
+.fa-tent::before {
+  content: "\e57d"; }
+
+.fa-vest-patches::before {
+  content: "\e086"; }
+
+.fa-people-dress-simple::before {
+  content: "\e218"; }
+
+.fa-check-double::before {
+  content: "\f560"; }
+
+.fa-arrow-down-a-z::before {
+  content: "\f15d"; }
+
+.fa-sort-alpha-asc::before {
+  content: "\f15d"; }
+
+.fa-sort-alpha-down::before {
+  content: "\f15d"; }
+
+.fa-bowling-ball-pin::before {
+  content: "\e0c3"; }
+
+.fa-bell-school-slash::before {
+  content: "\f5d6"; }
+
+.fa-plus-large::before {
+  content: "\e59e"; }
+
+.fa-money-bill-wheat::before {
+  content: "\e52a"; }
+
+.fa-camera-viewfinder::before {
+  content: "\e0da"; }
+
+.fa-screenshot::before {
+  content: "\e0da"; }
+
+.fa-message-music::before {
+  content: "\f8af"; }
+
+.fa-comment-alt-music::before {
+  content: "\f8af"; }
+
+.fa-car-building::before {
+  content: "\f859"; }
+
+.fa-border-bottom-right::before {
+  content: "\f854"; }
+
+.fa-border-style-alt::before {
+  content: "\f854"; }
+
+.fa-octagon::before {
+  content: "\f306"; }
+
+.fa-comment-arrow-up-right::before {
+  content: "\e145"; }
+
+.fa-octagon-divide::before {
+  content: "\e203"; }
+
+.fa-cookie::before {
+  content: "\f563"; }
+
+.fa-arrow-rotate-left::before {
+  content: "\f0e2"; }
+
+.fa-arrow-left-rotate::before {
+  content: "\f0e2"; }
+
+.fa-arrow-rotate-back::before {
+  content: "\f0e2"; }
+
+.fa-arrow-rotate-backward::before {
+  content: "\f0e2"; }
+
+.fa-undo::before {
+  content: "\f0e2"; }
+
+.fa-tv-music::before {
+  content: "\f8e6"; }
+
+.fa-hard-drive::before {
+  content: "\f0a0"; }
+
+.fa-hdd::before {
+  content: "\f0a0"; }
+
+.fa-reel::before {
+  content: "\e238"; }
+
+.fa-face-grin-squint-tears::before {
+  content: "\f586"; }
+
+.fa-grin-squint-tears::before {
+  content: "\f586"; }
+
+.fa-dumbbell::before {
+  content: "\f44b"; }
+
+.fa-rectangle-list::before {
+  content: "\f022"; }
+
+.fa-list-alt::before {
+  content: "\f022"; }
+
+.fa-tarp-droplet::before {
+  content: "\e57c"; }
+
+.fa-alarm-exclamation::before {
+  content: "\f843"; }
+
+.fa-house-medical-circle-check::before {
+  content: "\e511"; }
+
+.fa-traffic-cone::before {
+  content: "\f636"; }
+
+.fa-grate::before {
+  content: "\e193"; }
+
+.fa-arrow-down-right::before {
+  content: "\e093"; }
+
+.fa-person-skiing-nordic::before {
+  content: "\f7ca"; }
+
+.fa-skiing-nordic::before {
+  content: "\f7ca"; }
+
+.fa-calendar-plus::before {
+  content: "\f271"; }
+
+.fa-person-from-portal::before {
+  content: "\e023"; }
+
+.fa-portal-exit::before {
+  content: "\e023"; }
+
+.fa-plane-arrival::before {
+  content: "\f5af"; }
+
+.fa-cowbell-circle-plus::before {
+  content: "\f8b4"; }
+
+.fa-cowbell-more::before {
+  content: "\f8b4"; }
+
+.fa-circle-left::before {
+  content: "\f359"; }
+
+.fa-arrow-alt-circle-left::before {
+  content: "\f359"; }
+
+.fa-distribute-spacing-vertical::before {
+  content: "\e366"; }
+
+.fa-signal-bars-fair::before {
+  content: "\f692"; }
+
+.fa-signal-alt-2::before {
+  content: "\f692"; }
+
+.fa-sportsball::before {
+  content: "\e44b"; }
+
+.fa-train-subway::before {
+  content: "\f239"; }
+
+.fa-subway::before {
+  content: "\f239"; }
+
+.fa-chart-gantt::before {
+  content: "\e0e4"; }
+
+.fa-face-smile-upside-down::before {
+  content: "\e395"; }
+
+.fa-ball-pile::before {
+  content: "\f77e"; }
+
+.fa-badge-dollar::before {
+  content: "\f645"; }
+
+.fa-money-bills-simple::before {
+  content: "\e1f4"; }
+
+.fa-money-bills-alt::before {
+  content: "\e1f4"; }
+
+.fa-list-timeline::before {
+  content: "\e1d1"; }
+
+.fa-indian-rupee-sign::before {
+  content: "\e1bc"; }
+
+.fa-indian-rupee::before {
+  content: "\e1bc"; }
+
+.fa-inr::before {
+  content: "\e1bc"; }
+
+.fa-crop-simple::before {
+  content: "\f565"; }
+
+.fa-crop-alt::before {
+  content: "\f565"; }
+
+.fa-money-bill-1::before {
+  content: "\f3d1"; }
+
+.fa-money-bill-alt::before {
+  content: "\f3d1"; }
+
+.fa-left-long::before {
+  content: "\f30a"; }
+
+.fa-long-arrow-alt-left::before {
+  content: "\f30a"; }
+
+.fa-keyboard-down::before {
+  content: "\e1c2"; }
+
+.fa-circle-up-right::before {
+  content: "\e129"; }
+
+.fa-cloud-bolt-moon::before {
+  content: "\f76d"; }
+
+.fa-thunderstorm-moon::before {
+  content: "\f76d"; }
+
+.fa-dna::before {
+  content: "\f471"; }
+
+.fa-virus-slash::before {
+  content: "\e075"; }
+
+.fa-bracket-round-right::before {
+  content: "\29"; }
+
+.fa-circle-5::before {
+  content: "\e0f2"; }
+
+.fa-minus::before {
+  content: "\f068"; }
+
+.fa-subtract::before {
+  content: "\f068"; }
+
+.fa-fire-flame::before {
+  content: "\f6df"; }
+
+.fa-flame::before {
+  content: "\f6df"; }
+
+.fa-right-to-line::before {
+  content: "\f34c"; }
+
+.fa-arrow-alt-to-right::before {
+  content: "\f34c"; }
+
+.fa-child-rifle::before {
+  content: "\e4e0"; }
+
+.fa-gif::before {
+  content: "\e190"; }
+
+.fa-chess::before {
+  content: "\f439"; }
+
+.fa-trash-slash::before {
+  content: "\e2b3"; }
+
+.fa-arrow-left-long::before {
+  content: "\f177"; }
+
+.fa-long-arrow-left::before {
+  content: "\f177"; }
+
+.fa-plug-circle-check::before {
+  content: "\e55c"; }
+
+.fa-font-case::before {
+  content: "\f866"; }
+
+.fa-street-view::before {
+  content: "\f21d"; }
+
+.fa-arrow-down-left::before {
+  content: "\e091"; }
+
+.fa-franc-sign::before {
+  content: "\e18f"; }
+
+.fa-flask-round-poison::before {
+  content: "\f6e0"; }
+
+.fa-flask-poison::before {
+  content: "\f6e0"; }
+
+.fa-volume-off::before {
+  content: "\f026"; }
+
+.fa-book-circle-arrow-right::before {
+  content: "\e0bc"; }
+
+.fa-chart-user::before {
+  content: "\f6a3"; }
+
+.fa-user-chart::before {
+  content: "\f6a3"; }
+
+.fa-hands-asl-interpreting::before {
+  content: "\f2a3"; }
+
+.fa-american-sign-language-interpreting::before {
+  content: "\f2a3"; }
+
+.fa-asl-interpreting::before {
+  content: "\f2a3"; }
+
+.fa-hands-american-sign-language-interpreting::before {
+  content: "\f2a3"; }
+
+.fa-presentation-screen::before {
+  content: "\f685"; }
+
+.fa-presentation::before {
+  content: "\f685"; }
+
+.fa-circle-bolt::before {
+  content: "\e0fe"; }
+
+.fa-face-smile-halo::before {
+  content: "\e38f"; }
+
+.fa-cart-circle-arrow-down::before {
+  content: "\e3ef"; }
+
+.fa-house-person-return::before {
+  content: "\e011"; }
+
+.fa-house-person-arrive::before {
+  content: "\e011"; }
+
+.fa-house-return::before {
+  content: "\e011"; }
+
+.fa-message-xmark::before {
+  content: "\f4ab"; }
+
+.fa-comment-alt-times::before {
+  content: "\f4ab"; }
+
+.fa-message-times::before {
+  content: "\f4ab"; }
+
+.fa-file-certificate::before {
+  content: "\f5f3"; }
+
+.fa-file-award::before {
+  content: "\f5f3"; }
+
+.fa-user-doctor-hair-long::before {
+  content: "\e459"; }
+
+.fa-camera-security::before {
+  content: "\f8fe"; }
+
+.fa-camera-home::before {
+  content: "\f8fe"; }
+
+.fa-gear::before {
+  content: "\f013"; }
+
+.fa-cog::before {
+  content: "\f013"; }
+
+.fa-droplet-slash::before {
+  content: "\f5c7"; }
+
+.fa-tint-slash::before {
+  content: "\f5c7"; }
+
+.fa-book-heart::before {
+  content: "\f499"; }
+
+.fa-mosque::before {
+  content: "\f678"; }
+
+.fa-duck::before {
+  content: "\f6d8"; }
+
+.fa-mosquito::before {
+  content: "\e52b"; }
+
+.fa-star-of-david::before {
+  content: "\f69a"; }
+
+.fa-flag-swallowtail::before {
+  content: "\f74c"; }
+
+.fa-flag-alt::before {
+  content: "\f74c"; }
+
+.fa-person-military-rifle::before {
+  content: "\e54b"; }
+
+.fa-car-garage::before {
+  content: "\f5e2"; }
+
+.fa-cart-shopping::before {
+  content: "\f07a"; }
+
+.fa-shopping-cart::before {
+  content: "\f07a"; }
+
+.fa-book-font::before {
+  content: "\e0bf"; }
+
+.fa-shield-plus::before {
+  content: "\e24a"; }
+
+.fa-vials::before {
+  content: "\f493"; }
+
+.fa-eye-dropper-full::before {
+  content: "\e172"; }
+
+.fa-distribute-spacing-horizontal::before {
+  content: "\e365"; }
+
+.fa-tablet-rugged::before {
+  content: "\f48f"; }
+
+.fa-temperature-snow::before {
+  content: "\f768"; }
+
+.fa-temperature-frigid::before {
+  content: "\f768"; }
+
+.fa-moped::before {
+  content: "\e3b9"; }
+
+.fa-face-smile-plus::before {
+  content: "\f5b9"; }
+
+.fa-smile-plus::before {
+  content: "\f5b9"; }
+
+.fa-radio-tuner::before {
+  content: "\f8d8"; }
+
+.fa-radio-alt::before {
+  content: "\f8d8"; }
+
+.fa-face-swear::before {
+  content: "\e399"; }
+
+.fa-water-arrow-down::before {
+  content: "\f774"; }
+
+.fa-water-lower::before {
+  content: "\f774"; }
+
+.fa-scanner-touchscreen::before {
+  content: "\f48a"; }
+
+.fa-circle-7::before {
+  content: "\e0f4"; }
+
+.fa-plug-circle-plus::before {
+  content: "\e55f"; }
+
+.fa-person-ski-jumping::before {
+  content: "\f7c7"; }
+
+.fa-ski-jump::before {
+  content: "\f7c7"; }
+
+.fa-place-of-worship::before {
+  content: "\f67f"; }
+
+.fa-water-arrow-up::before {
+  content: "\f775"; }
+
+.fa-water-rise::before {
+  content: "\f775"; }
+
+.fa-waveform-lines::before {
+  content: "\f8f2"; }
+
+.fa-waveform-path::before {
+  content: "\f8f2"; }
+
+.fa-split::before {
+  content: "\e254"; }
+
+.fa-film-canister::before {
+  content: "\f8b7"; }
+
+.fa-film-cannister::before {
+  content: "\f8b7"; }
+
+.fa-folder-xmark::before {
+  content: "\f65f"; }
+
+.fa-folder-times::before {
+  content: "\f65f"; }
+
+.fa-toilet-paper-blank::before {
+  content: "\f71f"; }
+
+.fa-toilet-paper-alt::before {
+  content: "\f71f"; }
+
+.fa-tablet-screen::before {
+  content: "\f3fc"; }
+
+.fa-tablet-android-alt::before {
+  content: "\f3fc"; }
+
+.fa-hexagon-vertical-nft-slanted::before {
+  content: "\e506"; }
+
+.fa-folder-music::before {
+  content: "\e18d"; }
+
+.fa-display-medical::before {
+  content: "\e166"; }
+
+.fa-desktop-medical::before {
+  content: "\e166"; }
+
+.fa-share-all::before {
+  content: "\f367"; }
+
+.fa-peapod::before {
+  content: "\e31c"; }
+
+.fa-chess-clock::before {
+  content: "\f43d"; }
+
+.fa-axe::before {
+  content: "\f6b2"; }
+
+.fa-square-d::before {
+  content: "\e268"; }
+
+.fa-grip-vertical::before {
+  content: "\f58e"; }
+
+.fa-mobile-signal-out::before {
+  content: "\e1f0"; }
+
+.fa-arrow-turn-up::before {
+  content: "\f148"; }
+
+.fa-level-up::before {
+  content: "\f148"; }
+
+.fa-u::before {
+  content: "\55"; }
+
+.fa-arrow-up-from-dotted-line::before {
+  content: "\e09b"; }
+
+.fa-square-root-variable::before {
+  content: "\f698"; }
+
+.fa-square-root-alt::before {
+  content: "\f698"; }
+
+.fa-light-switch-on::before {
+  content: "\e019"; }
+
+.fa-arrow-down-arrow-up::before {
+  content: "\f883"; }
+
+.fa-sort-alt::before {
+  content: "\f883"; }
+
+.fa-raindrops::before {
+  content: "\f75c"; }
+
+.fa-dash::before {
+  content: "\e404"; }
+
+.fa-minus-large::before {
+  content: "\e404"; }
+
+.fa-clock::before {
+  content: "\f017"; }
+
+.fa-clock-four::before {
+  content: "\f017"; }
+
+.fa-input-numeric::before {
+  content: "\e1bd"; }
+
+.fa-truck-tow::before {
+  content: "\e2b8"; }
+
+.fa-backward-step::before {
+  content: "\f048"; }
+
+.fa-step-backward::before {
+  content: "\f048"; }
+
+.fa-pallet::before {
+  content: "\f482"; }
+
+.fa-car-bolt::before {
+  content: "\e341"; }
+
+.fa-arrows-maximize::before {
+  content: "\f31d"; }
+
+.fa-expand-arrows::before {
+  content: "\f31d"; }
+
+.fa-faucet::before {
+  content: "\e005"; }
+
+.fa-cloud-sleet::before {
+  content: "\f741"; }
+
+.fa-lamp-street::before {
+  content: "\e1c5"; }
+
+.fa-list-radio::before {
+  content: "\e1d0"; }
+
+.fa-pen-nib-slash::before {
+  content: "\e4a1"; }
+
+.fa-baseball-bat-ball::before {
+  content: "\f432"; }
+
+.fa-square-up-left::before {
+  content: "\e282"; }
+
+.fa-overline::before {
+  content: "\f876"; }
+
+.fa-s::before {
+  content: "\53"; }
+
+.fa-timeline::before {
+  content: "\e29c"; }
+
+.fa-keyboard::before {
+  content: "\f11c"; }
+
+.fa-arrows-from-dotted-line::before {
+  content: "\e0a3"; }
+
+.fa-usb-drive::before {
+  content: "\f8e9"; }
+
+.fa-ballot::before {
+  content: "\f732"; }
+
+.fa-caret-down::before {
+  content: "\f0d7"; }
+
+.fa-location-dot-slash::before {
+  content: "\f605"; }
+
+.fa-map-marker-alt-slash::before {
+  content: "\f605"; }
+
+.fa-cards::before {
+  content: "\e3ed"; }
+
+.fa-house-chimney-medical::before {
+  content: "\f7f2"; }
+
+.fa-clinic-medical::before {
+  content: "\f7f2"; }
+
+.fa-boxing-glove::before {
+  content: "\f438"; }
+
+.fa-glove-boxing::before {
+  content: "\f438"; }
+
+.fa-temperature-three-quarters::before {
+  content: "\f2c8"; }
+
+.fa-temperature-3::before {
+  content: "\f2c8"; }
+
+.fa-thermometer-3::before {
+  content: "\f2c8"; }
+
+.fa-thermometer-three-quarters::before {
+  content: "\f2c8"; }
+
+.fa-bell-school::before {
+  content: "\f5d5"; }
+
+.fa-mobile-screen::before {
+  content: "\f3cf"; }
+
+.fa-mobile-android-alt::before {
+  content: "\f3cf"; }
+
+.fa-plane-up::before {
+  content: "\e22d"; }
+
+.fa-folder-heart::before {
+  content: "\e189"; }
+
+.fa-circle-location-arrow::before {
+  content: "\f602"; }
+
+.fa-location-circle::before {
+  content: "\f602"; }
+
+.fa-face-head-bandage::before {
+  content: "\e37a"; }
+
+.fa-sushi-roll::before {
+  content: "\e48b"; }
+
+.fa-maki-roll::before {
+  content: "\e48b"; }
+
+.fa-makizushi::before {
+  content: "\e48b"; }
+
+.fa-car-bump::before {
+  content: "\f5e0"; }
+
+.fa-piggy-bank::before {
+  content: "\f4d3"; }
+
+.fa-racquet::before {
+  content: "\f45a"; }
+
+.fa-car-mirrors::before {
+  content: "\e343"; }
+
+.fa-industry-windows::before {
+  content: "\f3b3"; }
+
+.fa-industry-alt::before {
+  content: "\f3b3"; }
+
+.fa-bolt-auto::before {
+  content: "\e0b6"; }
+
+.fa-battery-half::before {
+  content: "\f242"; }
+
+.fa-battery-3::before {
+  content: "\f242"; }
+
+.fa-flux-capacitor::before {
+  content: "\f8ba"; }
+
+.fa-mountain-city::before {
+  content: "\e52e"; }
+
+.fa-coins::before {
+  content: "\f51e"; }
+
+.fa-honey-pot::before {
+  content: "\e418"; }
+
+.fa-olive::before {
+  content: "\e316"; }
+
+.fa-khanda::before {
+  content: "\f66d"; }
+
+.fa-filter-list::before {
+  content: "\e17c"; }
+
+.fa-outlet::before {
+  content: "\e01c"; }
+
+.fa-sliders::before {
+  content: "\f1de"; }
+
+.fa-sliders-h::before {
+  content: "\f1de"; }
+
+.fa-cauldron::before {
+  content: "\f6bf"; }
+
+.fa-people::before {
+  content: "\e216"; }
+
+.fa-folder-tree::before {
+  content: "\f802"; }
+
+.fa-network-wired::before {
+  content: "\f6ff"; }
+
+.fa-croissant::before {
+  content: "\f7f6"; }
+
+.fa-map-pin::before {
+  content: "\f276"; }
+
+.fa-hamsa::before {
+  content: "\f665"; }
+
+.fa-cent-sign::before {
+  content: "\e3f5"; }
+
+.fa-swords-laser::before {
+  content: "\e03d"; }
+
+.fa-flask::before {
+  content: "\f0c3"; }
+
+.fa-person-pregnant::before {
+  content: "\e31e"; }
+
+.fa-square-u::before {
+  content: "\e281"; }
+
+.fa-wand-sparkles::before {
+  content: "\f72b"; }
+
+.fa-router::before {
+  content: "\f8da"; }
+
+.fa-ellipsis-vertical::before {
+  content: "\f142"; }
+
+.fa-ellipsis-v::before {
+  content: "\f142"; }
+
+.fa-sword-laser-alt::before {
+  content: "\e03c"; }
+
+.fa-ticket::before {
+  content: "\f145"; }
+
+.fa-power-off::before {
+  content: "\f011"; }
+
+.fa-coin::before {
+  content: "\f85c"; }
+
+.fa-laptop-slash::before {
+  content: "\e1c7"; }
+
+.fa-right-long::before {
+  content: "\f30b"; }
+
+.fa-long-arrow-alt-right::before {
+  content: "\f30b"; }
+
+.fa-circle-b::before {
+  content: "\e0fd"; }
+
+.fa-person-dress-simple::before {
+  content: "\e21c"; }
+
+.fa-pipe-collar::before {
+  content: "\e437"; }
+
+.fa-lights-holiday::before {
+  content: "\f7b2"; }
+
+.fa-citrus::before {
+  content: "\e2f4"; }
+
+.fa-flag-usa::before {
+  content: "\f74d"; }
+
+.fa-laptop-file::before {
+  content: "\e51d"; }
+
+.fa-tty::before {
+  content: "\f1e4"; }
+
+.fa-teletype::before {
+  content: "\f1e4"; }
+
+.fa-chart-tree-map::before {
+  content: "\e0ea"; }
+
+.fa-diagram-next::before {
+  content: "\e476"; }
+
+.fa-person-rifle::before {
+  content: "\e54e"; }
+
+.fa-clock-five-thirty::before {
+  content: "\e34a"; }
+
+.fa-pipe-valve::before {
+  content: "\e439"; }
+
+.fa-arrow-up-from-arc::before {
+  content: "\e4b4"; }
+
+.fa-face-spiral-eyes::before {
+  content: "\e485"; }
+
+.fa-compress-wide::before {
+  content: "\f326"; }
+
+.fa-circle-phone-hangup::before {
+  content: "\e11d"; }
+
+.fa-phone-circle-down::before {
+  content: "\e11d"; }
+
+.fa-house-medical-circle-exclamation::before {
+  content: "\e512"; }
+
+.fa-badminton::before {
+  content: "\e33a"; }
+
+.fa-closed-captioning::before {
+  content: "\f20a"; }
+
+.fa-person-hiking::before {
+  content: "\f6ec"; }
+
+.fa-hiking::before {
+  content: "\f6ec"; }
+
+.fa-right-from-line::before {
+  content: "\f347"; }
+
+.fa-arrow-alt-from-left::before {
+  content: "\f347"; }
+
+.fa-venus-double::before {
+  content: "\f226"; }
+
+.fa-images::before {
+  content: "\f302"; }
+
+.fa-calculator::before {
+  content: "\f1ec"; }
+
+.fa-shuttlecock::before {
+  content: "\f45b"; }
+
+.fa-user-hair::before {
+  content: "\e45a"; }
+
+.fa-eye-evil::before {
+  content: "\f6db"; }
+
+.fa-people-pulling::before {
+  content: "\e535"; }
+
+.fa-n::before {
+  content: "\4e"; }
+
+.fa-garage::before {
+  content: "\e009"; }
+
+.fa-cable-car::before {
+  content: "\f7da"; }
+
+.fa-tram::before {
+  content: "\f7da"; }
+
+.fa-shovel-snow::before {
+  content: "\f7c3"; }
+
+.fa-cloud-rain::before {
+  content: "\f73d"; }
+
+.fa-face-lying::before {
+  content: "\e37e"; }
+
+.fa-sprinkler::before {
+  content: "\e035"; }
+
+.fa-building-circle-xmark::before {
+  content: "\e4d4"; }
+
+.fa-person-sledding::before {
+  content: "\f7cb"; }
+
+.fa-sledding::before {
+  content: "\f7cb"; }
+
+.fa-game-console-handheld::before {
+  content: "\f8bb"; }
+
+.fa-ship::before {
+  content: "\f21a"; }
+
+.fa-clock-six-thirty::before {
+  content: "\e353"; }
+
+.fa-battery-slash::before {
+  content: "\f377"; }
+
+.fa-tugrik-sign::before {
+  content: "\e2ba"; }
+
+.fa-arrows-down-to-line::before {
+  content: "\e4b8"; }
+
+.fa-download::before {
+  content: "\f019"; }
+
+.fa-shelves::before {
+  content: "\f480"; }
+
+.fa-inventory::before {
+  content: "\f480"; }
+
+.fa-cloud-snow::before {
+  content: "\f742"; }
+
+.fa-face-grin::before {
+  content: "\f580"; }
+
+.fa-grin::before {
+  content: "\f580"; }
+
+.fa-delete-left::before {
+  content: "\f55a"; }
+
+.fa-backspace::before {
+  content: "\f55a"; }
+
+.fa-oven::before {
+  content: "\e01d"; }
+
+.fa-eye-dropper::before {
+  content: "\f1fb"; }
+
+.fa-eye-dropper-empty::before {
+  content: "\f1fb"; }
+
+.fa-eyedropper::before {
+  content: "\f1fb"; }
+
+.fa-comment-captions::before {
+  content: "\e146"; }
+
+.fa-comments-question::before {
+  content: "\e14e"; }
+
+.fa-scribble::before {
+  content: "\e23f"; }
+
+.fa-rotate-exclamation::before {
+  content: "\e23c"; }
+
+.fa-file-circle-check::before {
+  content: "\e5a0"; }
+
+.fa-glass::before {
+  content: "\f804"; }
+
+.fa-loader::before {
+  content: "\e1d4"; }
+
+.fa-forward::before {
+  content: "\f04e"; }
+
+.fa-user-pilot::before {
+  content: "\e2c0"; }
+
+.fa-mobile::before {
+  content: "\f3ce"; }
+
+.fa-mobile-android::before {
+  content: "\f3ce"; }
+
+.fa-mobile-phone::before {
+  content: "\f3ce"; }
+
+.fa-code-pull-request-closed::before {
+  content: "\e3f9"; }
+
+.fa-face-meh::before {
+  content: "\f11a"; }
+
+.fa-meh::before {
+  content: "\f11a"; }
+
+.fa-align-center::before {
+  content: "\f037"; }
+
+.fa-book-skull::before {
+  content: "\f6b7"; }
+
+.fa-book-dead::before {
+  content: "\f6b7"; }
+
+.fa-id-card::before {
+  content: "\f2c2"; }
+
+.fa-drivers-license::before {
+  content: "\f2c2"; }
+
+.fa-face-dotted::before {
+  content: "\e47f"; }
+
+.fa-face-worried::before {
+  content: "\e3a3"; }
+
+.fa-outdent::before {
+  content: "\f03b"; }
+
+.fa-dedent::before {
+  content: "\f03b"; }
+
+.fa-heart-circle-exclamation::before {
+  content: "\e4fe"; }
+
+.fa-house::before {
+  content: "\f015"; }
+
+.fa-home::before {
+  content: "\f015"; }
+
+.fa-home-alt::before {
+  content: "\f015"; }
+
+.fa-home-lg-alt::before {
+  content: "\f015"; }
+
+.fa-vector-circle::before {
+  content: "\e2c6"; }
+
+.fa-car-circle-bolt::before {
+  content: "\e342"; }
+
+.fa-calendar-week::before {
+  content: "\f784"; }
+
+.fa-flying-disc::before {
+  content: "\e3a9"; }
+
+.fa-laptop-medical::before {
+  content: "\f812"; }
+
+.fa-square-down-right::before {
+  content: "\e26c"; }
+
+.fa-b::before {
+  content: "\42"; }
+
+.fa-seat-airline::before {
+  content: "\e244"; }
+
+.fa-moon-over-sun::before {
+  content: "\f74a"; }
+
+.fa-eclipse-alt::before {
+  content: "\f74a"; }
+
+.fa-pipe::before {
+  content: "\7c"; }
+
+.fa-file-medical::before {
+  content: "\f477"; }
+
+.fa-potato::before {
+  content: "\e440"; }
+
+.fa-dice-one::before {
+  content: "\f525"; }
+
+.fa-circle-a::before {
+  content: "\e0f7"; }
+
+.fa-helmet-battle::before {
+  content: "\f6eb"; }
+
+.fa-butter::before {
+  content: "\e3e4"; }
+
+.fa-blanket-fire::before {
+  content: "\e3da"; }
+
+.fa-kiwi-bird::before {
+  content: "\f535"; }
+
+.fa-castle::before {
+  content: "\e0de"; }
+
+.fa-golf-club::before {
+  content: "\f451"; }
+
+.fa-arrow-right-arrow-left::before {
+  content: "\f0ec"; }
+
+.fa-exchange::before {
+  content: "\f0ec"; }
+
+.fa-rotate-right::before {
+  content: "\f2f9"; }
+
+.fa-redo-alt::before {
+  content: "\f2f9"; }
+
+.fa-rotate-forward::before {
+  content: "\f2f9"; }
+
+.fa-utensils::before {
+  content: "\f2e7"; }
+
+.fa-cutlery::before {
+  content: "\f2e7"; }
+
+.fa-arrow-up-wide-short::before {
+  content: "\f161"; }
+
+.fa-sort-amount-up::before {
+  content: "\f161"; }
+
+.fa-balloons::before {
+  content: "\e2e4"; }
+
+.fa-mill-sign::before {
+  content: "\e1ed"; }
+
+.fa-bowl-rice::before {
+  content: "\e2eb"; }
+
+.fa-timeline-arrow::before {
+  content: "\e29d"; }
+
+.fa-skull::before {
+  content: "\f54c"; }
+
+.fa-game-board-simple::before {
+  content: "\f868"; }
+
+.fa-game-board-alt::before {
+  content: "\f868"; }
+
+.fa-circle-video::before {
+  content: "\e12b"; }
+
+.fa-video-circle::before {
+  content: "\e12b"; }
+
+.fa-chart-scatter-bubble::before {
+  content: "\e0e9"; }
+
+.fa-house-turret::before {
+  content: "\e1b4"; }
+
+.fa-banana::before {
+  content: "\e2e5"; }
+
+.fa-hand-holding-skull::before {
+  content: "\e1a4"; }
+
+.fa-people-dress::before {
+  content: "\e217"; }
+
+.fa-loveseat::before {
+  content: "\f4cc"; }
+
+.fa-couch-small::before {
+  content: "\f4cc"; }
+
+.fa-tower-broadcast::before {
+  content: "\f519"; }
+
+.fa-broadcast-tower::before {
+  content: "\f519"; }
+
+.fa-truck-pickup::before {
+  content: "\f63c"; }
+
+.fa-block-quote::before {
+  content: "\e0b5"; }
+
+.fa-up-long::before {
+  content: "\f30c"; }
+
+.fa-long-arrow-alt-up::before {
+  content: "\f30c"; }
+
+.fa-stop::before {
+  content: "\f04d"; }
+
+.fa-code-merge::before {
+  content: "\f387"; }
+
+.fa-money-check-dollar-pen::before {
+  content: "\f873"; }
+
+.fa-money-check-edit-alt::before {
+  content: "\f873"; }
+
+.fa-up-from-line::before {
+  content: "\f346"; }
+
+.fa-arrow-alt-from-bottom::before {
+  content: "\f346"; }
+
+.fa-upload::before {
+  content: "\f093"; }
+
+.fa-hurricane::before {
+  content: "\f751"; }
+
+.fa-people-pants::before {
+  content: "\e219"; }
+
+.fa-mound::before {
+  content: "\e52d"; }
+
+.fa-windsock::before {
+  content: "\f777"; }
+
+.fa-circle-half::before {
+  content: "\e110"; }
+
+.fa-brake-warning::before {
+  content: "\e0c7"; }
+
+.fa-toilet-portable::before {
+  content: "\e583"; }
+
+.fa-compact-disc::before {
+  content: "\f51f"; }
+
+.fa-file-arrow-down::before {
+  content: "\f56d"; }
+
+.fa-file-download::before {
+  content: "\f56d"; }
+
+.fa-saxophone-fire::before {
+  content: "\f8db"; }
+
+.fa-sax-hot::before {
+  content: "\f8db"; }
+
+.fa-camera-web-slash::before {
+  content: "\f833"; }
+
+.fa-webcam-slash::before {
+  content: "\f833"; }
+
+.fa-folder-medical::before {
+  content: "\e18c"; }
+
+.fa-folder-gear::before {
+  content: "\e187"; }
+
+.fa-folder-cog::before {
+  content: "\e187"; }
+
+.fa-hand-wave::before {
+  content: "\e1a7"; }
+
+.fa-arrow-up-arrow-down::before {
+  content: "\e099"; }
+
+.fa-sort-up-down::before {
+  content: "\e099"; }
+
+.fa-caravan::before {
+  content: "\f8ff"; }
+
+.fa-shield-cat::before {
+  content: "\e572"; }
+
+.fa-message-slash::before {
+  content: "\f4a9"; }
+
+.fa-comment-alt-slash::before {
+  content: "\f4a9"; }
+
+.fa-bolt::before {
+  content: "\f0e7"; }
+
+.fa-zap::before {
+  content: "\f0e7"; }
+
+.fa-trash-can-check::before {
+  content: "\e2a9"; }
+
+.fa-glass-water::before {
+  content: "\e4f4"; }
+
+.fa-oil-well::before {
+  content: "\e532"; }
+
+.fa-person-simple::before {
+  content: "\e220"; }
+
+.fa-vault::before {
+  content: "\e2c5"; }
+
+.fa-mars::before {
+  content: "\f222"; }
+
+.fa-toilet::before {
+  content: "\f7d8"; }
+
+.fa-plane-circle-xmark::before {
+  content: "\e557"; }
+
+.fa-yen-sign::before {
+  content: "\f157"; }
+
+.fa-cny::before {
+  content: "\f157"; }
+
+.fa-jpy::before {
+  content: "\f157"; }
+
+.fa-rmb::before {
+  content: "\f157"; }
+
+.fa-yen::before {
+  content: "\f157"; }
+
+.fa-notes::before {
+  content: "\e202"; }
+
+.fa-ruble-sign::before {
+  content: "\f158"; }
+
+.fa-rouble::before {
+  content: "\f158"; }
+
+.fa-rub::before {
+  content: "\f158"; }
+
+.fa-ruble::before {
+  content: "\f158"; }
+
+.fa-trash-undo::before {
+  content: "\f895"; }
+
+.fa-trash-arrow-turn-left::before {
+  content: "\f895"; }
+
+.fa-champagne-glass::before {
+  content: "\f79e"; }
+
+.fa-glass-champagne::before {
+  content: "\f79e"; }
+
+.fa-objects-align-center-horizontal::before {
+  content: "\e3bc"; }
+
+.fa-sun::before {
+  content: "\f185"; }
+
+.fa-trash-can-slash::before {
+  content: "\e2ad"; }
+
+.fa-trash-alt-slash::before {
+  content: "\e2ad"; }
+
+.fa-screen-users::before {
+  content: "\f63d"; }
+
+.fa-users-class::before {
+  content: "\f63d"; }
+
+.fa-guitar::before {
+  content: "\f7a6"; }
+
+.fa-square-arrow-left::before {
+  content: "\f33a"; }
+
+.fa-arrow-square-left::before {
+  content: "\f33a"; }
+
+.fa-square-8::before {
+  content: "\e25d"; }
+
+.fa-face-smile-hearts::before {
+  content: "\e390"; }
+
+.fa-brackets-square::before {
+  content: "\f7e9"; }
+
+.fa-brackets::before {
+  content: "\f7e9"; }
+
+.fa-laptop-arrow-down::before {
+  content: "\e1c6"; }
+
+.fa-hockey-stick-puck::before {
+  content: "\e3ae"; }
+
+.fa-house-tree::before {
+  content: "\e1b3"; }
+
+.fa-signal-fair::before {
+  content: "\f68d"; }
+
+.fa-signal-2::before {
+  content: "\f68d"; }
+
+.fa-face-laugh-wink::before {
+  content: "\f59c"; }
+
+.fa-laugh-wink::before {
+  content: "\f59c"; }
+
+.fa-circle-dollar::before {
+  content: "\f2e8"; }
+
+.fa-dollar-circle::before {
+  content: "\f2e8"; }
+
+.fa-usd-circle::before {
+  content: "\f2e8"; }
+
+.fa-horse-head::before {
+  content: "\f7ab"; }
+
+.fa-arrows-repeat::before {
+  content: "\f364"; }
+
+.fa-repeat-alt::before {
+  content: "\f364"; }
+
+.fa-bore-hole::before {
+  content: "\e4c3"; }
+
+.fa-industry::before {
+  content: "\f275"; }
+
+.fa-image-polaroid::before {
+  content: "\f8c4"; }
+
+.fa-wave-triangle::before {
+  content: "\f89a"; }
+
+.fa-circle-down::before {
+  content: "\f358"; }
+
+.fa-arrow-alt-circle-down::before {
+  content: "\f358"; }
+
+.fa-grill::before {
+  content: "\e5a3"; }
+
+.fa-arrows-turn-to-dots::before {
+  content: "\e4c1"; }
+
+.fa-chart-mixed::before {
+  content: "\f643"; }
+
+.fa-analytics::before {
+  content: "\f643"; }
+
+.fa-florin-sign::before {
+  content: "\e184"; }
+
+.fa-arrow-down-short-wide::before {
+  content: "\f884"; }
+
+.fa-sort-amount-desc::before {
+  content: "\f884"; }
+
+.fa-sort-amount-down-alt::before {
+  content: "\f884"; }
+
+.fa-less-than::before {
+  content: "\3c"; }
+
+.fa-display-code::before {
+  content: "\e165"; }
+
+.fa-desktop-code::before {
+  content: "\e165"; }
+
+.fa-face-drooling::before {
+  content: "\e372"; }
+
+.fa-oil-temperature::before {
+  content: "\f614"; }
+
+.fa-oil-temp::before {
+  content: "\f614"; }
+
+.fa-square-question::before {
+  content: "\f2fd"; }
+
+.fa-question-square::before {
+  content: "\f2fd"; }
+
+.fa-air-conditioner::before {
+  content: "\f8f4"; }
+
+.fa-angle-down::before {
+  content: "\f107"; }
+
+.fa-mountains::before {
+  content: "\f6fd"; }
+
+.fa-omega::before {
+  content: "\f67a"; }
+
+.fa-car-tunnel::before {
+  content: "\e4de"; }
+
+.fa-person-dolly-empty::before {
+  content: "\f4d1"; }
+
+.fa-pan-food::before {
+  content: "\e42b"; }
+
+.fa-head-side-cough::before {
+  content: "\e061"; }
+
+.fa-grip-lines::before {
+  content: "\f7a4"; }
+
+.fa-thumbs-down::before {
+  content: "\f165"; }
+
+.fa-user-lock::before {
+  content: "\f502"; }
+
+.fa-arrow-right-long::before {
+  content: "\f178"; }
+
+.fa-long-arrow-right::before {
+  content: "\f178"; }
+
+.fa-tickets-airline::before {
+  content: "\e29b"; }
+
+.fa-anchor-circle-xmark::before {
+  content: "\e4ac"; }
+
+.fa-ellipsis::before {
+  content: "\f141"; }
+
+.fa-ellipsis-h::before {
+  content: "\f141"; }
+
+.fa-nfc-slash::before {
+  content: "\e1fc"; }
+
+.fa-chess-pawn::before {
+  content: "\f443"; }
+
+.fa-kit-medical::before {
+  content: "\f479"; }
+
+.fa-first-aid::before {
+  content: "\f479"; }
+
+.fa-grid-2-plus::before {
+  content: "\e197"; }
+
+.fa-bells::before {
+  content: "\f77f"; }
+
+.fa-person-through-window::before {
+  content: "\e5a9"; }
+
+.fa-toolbox::before {
+  content: "\f552"; }
+
+.fa-envelope-dot::before {
+  content: "\e16f"; }
+
+.fa-envelope-badge::before {
+  content: "\e16f"; }
+
+.fa-hands-holding-circle::before {
+  content: "\e4fb"; }
+
+.fa-bug::before {
+  content: "\f188"; }
+
+.fa-bowl-chopsticks::before {
+  content: "\e2e9"; }
+
+.fa-credit-card::before {
+  content: "\f09d"; }
+
+.fa-credit-card-alt::before {
+  content: "\f09d"; }
+
+.fa-circle-s::before {
+  content: "\e121"; }
+
+.fa-box-ballot::before {
+  content: "\f735"; }
+
+.fa-car::before {
+  content: "\f1b9"; }
+
+.fa-automobile::before {
+  content: "\f1b9"; }
+
+.fa-hand-holding-hand::before {
+  content: "\e4f7"; }
+
+.fa-user-tie-hair::before {
+  content: "\e45f"; }
+
+.fa-podium-star::before {
+  content: "\f758"; }
+
+.fa-user-hair-mullet::before {
+  content: "\e45c"; }
+
+.fa-business-front::before {
+  content: "\e45c"; }
+
+.fa-party-back::before {
+  content: "\e45c"; }
+
+.fa-trian-balbot::before {
+  content: "\e45c"; }
+
+.fa-microphone-stand::before {
+  content: "\f8cb"; }
+
+.fa-book-open-reader::before {
+  content: "\f5da"; }
+
+.fa-book-reader::before {
+  content: "\f5da"; }
+
+.fa-family-dress::before {
+  content: "\e301"; }
+
+.fa-circle-x::before {
+  content: "\e12e"; }
+
+.fa-cabin::before {
+  content: "\e46d"; }
+
+.fa-mountain-sun::before {
+  content: "\e52f"; }
+
+.fa-chart-simple-horizontal::before {
+  content: "\e474"; }
+
+.fa-arrows-left-right-to-line::before {
+  content: "\e4ba"; }
+
+.fa-hand-back-point-left::before {
+  content: "\e19f"; }
+
+.fa-message-dots::before {
+  content: "\f4a3"; }
+
+.fa-comment-alt-dots::before {
+  content: "\f4a3"; }
+
+.fa-messaging::before {
+  content: "\f4a3"; }
+
+.fa-file-heart::before {
+  content: "\e176"; }
+
+.fa-beer-mug::before {
+  content: "\e0b3"; }
+
+.fa-beer-foam::before {
+  content: "\e0b3"; }
+
+.fa-dice-d20::before {
+  content: "\f6cf"; }
+
+.fa-drone::before {
+  content: "\f85f"; }
+
+.fa-truck-droplet::before {
+  content: "\e58c"; }
+
+.fa-file-circle-xmark::before {
+  content: "\e5a1"; }
+
+.fa-temperature-arrow-up::before {
+  content: "\e040"; }
+
+.fa-temperature-up::before {
+  content: "\e040"; }
+
+.fa-medal::before {
+  content: "\f5a2"; }
+
+.fa-bed::before {
+  content: "\f236"; }
+
+.fa-book-copy::before {
+  content: "\e0be"; }
+
+.fa-square-h::before {
+  content: "\f0fd"; }
+
+.fa-h-square::before {
+  content: "\f0fd"; }
+
+.fa-square-c::before {
+  content: "\e266"; }
+
+.fa-clock-two::before {
+  content: "\e35a"; }
+
+.fa-square-ellipsis-vertical::before {
+  content: "\e26f"; }
+
+.fa-podcast::before {
+  content: "\f2ce"; }
+
+.fa-bee::before {
+  content: "\e0b2"; }
+
+.fa-temperature-full::before {
+  content: "\f2c7"; }
+
+.fa-temperature-4::before {
+  content: "\f2c7"; }
+
+.fa-thermometer-4::before {
+  content: "\f2c7"; }
+
+.fa-thermometer-full::before {
+  content: "\f2c7"; }
+
+.fa-bell::before {
+  content: "\f0f3"; }
+
+.fa-candy-bar::before {
+  content: "\e3e8"; }
+
+.fa-chocolate-bar::before {
+  content: "\e3e8"; }
+
+.fa-xmark-large::before {
+  content: "\e59b"; }
+
+.fa-pinata::before {
+  content: "\e3c3"; }
+
+.fa-arrows-from-line::before {
+  content: "\e0a4"; }
+
+.fa-superscript::before {
+  content: "\f12b"; }
+
+.fa-bowl-spoon::before {
+  content: "\e3e0"; }
+
+.fa-hexagon-check::before {
+  content: "\e416"; }
+
+.fa-plug-circle-xmark::before {
+  content: "\e560"; }
+
+.fa-star-of-life::before {
+  content: "\f621"; }
+
+.fa-phone-slash::before {
+  content: "\f3dd"; }
+
+.fa-traffic-light-stop::before {
+  content: "\f63a"; }
+
+.fa-paint-roller::before {
+  content: "\f5aa"; }
+
+.fa-accent-grave::before {
+  content: "\60"; }
+
+.fa-handshake-angle::before {
+  content: "\f4c4"; }
+
+.fa-hands-helping::before {
+  content: "\f4c4"; }
+
+.fa-circle-0::before {
+  content: "\e0ed"; }
+
+.fa-dial-med-low::before {
+  content: "\e160"; }
+
+.fa-location-dot::before {
+  content: "\f3c5"; }
+
+.fa-map-marker-alt::before {
+  content: "\f3c5"; }
+
+.fa-crab::before {
+  content: "\e3ff"; }
+
+.fa-box-open-full::before {
+  content: "\f49c"; }
+
+.fa-box-full::before {
+  content: "\f49c"; }
+
+.fa-file::before {
+  content: "\f15b"; }
+
+.fa-greater-than::before {
+  content: "\3e"; }
+
+.fa-quotes::before {
+  content: "\e234"; }
+
+.fa-pretzel::before {
+  content: "\e441"; }
+
+.fa-person-swimming::before {
+  content: "\f5c4"; }
+
+.fa-swimmer::before {
+  content: "\f5c4"; }
+
+.fa-arrow-down::before {
+  content: "\f063"; }
+
+.fa-user-robot-xmarks::before {
+  content: "\e4a7"; }
+
+.fa-message-quote::before {
+  content: "\e1e4"; }
+
+.fa-comment-alt-quote::before {
+  content: "\e1e4"; }
+
+.fa-candy-corn::before {
+  content: "\f6bd"; }
+
+.fa-folder-magnifying-glass::before {
+  content: "\e18b"; }
+
+.fa-folder-search::before {
+  content: "\e18b"; }
+
+.fa-notebook::before {
+  content: "\e201"; }
+
+.fa-droplet::before {
+  content: "\f043"; }
+
+.fa-tint::before {
+  content: "\f043"; }
+
+.fa-bullseye-pointer::before {
+  content: "\f649"; }
+
+.fa-eraser::before {
+  content: "\f12d"; }
+
+.fa-hexagon-image::before {
+  content: "\e504"; }
+
+.fa-earth-americas::before {
+  content: "\f57d"; }
+
+.fa-earth::before {
+  content: "\f57d"; }
+
+.fa-earth-america::before {
+  content: "\f57d"; }
+
+.fa-globe-americas::before {
+  content: "\f57d"; }
+
+.fa-crate-apple::before {
+  content: "\f6b1"; }
+
+.fa-apple-crate::before {
+  content: "\f6b1"; }
+
+.fa-person-burst::before {
+  content: "\e53b"; }
+
+.fa-game-board::before {
+  content: "\f867"; }
+
+.fa-hat-chef::before {
+  content: "\f86b"; }
+
+.fa-hand-back-point-right::before {
+  content: "\e1a1"; }
+
+.fa-dove::before {
+  content: "\f4ba"; }
+
+.fa-battery-empty::before {
+  content: "\f244"; }
+
+.fa-battery-0::before {
+  content: "\f244"; }
+
+.fa-grid-4::before {
+  content: "\e198"; }
+
+.fa-socks::before {
+  content: "\f696"; }
+
+.fa-face-sunglasses::before {
+  content: "\e398"; }
+
+.fa-inbox::before {
+  content: "\f01c"; }
+
+.fa-square-0::before {
+  content: "\e255"; }
+
+.fa-section::before {
+  content: "\e447"; }
+
+.fa-square-this-way-up::before {
+  content: "\f49f"; }
+
+.fa-box-up::before {
+  content: "\f49f"; }
+
+.fa-gauge-high::before {
+  content: "\f625"; }
+
+.fa-tachometer-alt::before {
+  content: "\f625"; }
+
+.fa-tachometer-alt-fast::before {
+  content: "\f625"; }
+
+.fa-square-ampersand::before {
+  content: "\e260"; }
+
+.fa-envelope-open-text::before {
+  content: "\f658"; }
+
+.fa-lamp-desk::before {
+  content: "\e014"; }
+
+.fa-hospital::before {
+  content: "\f0f8"; }
+
+.fa-hospital-alt::before {
+  content: "\f0f8"; }
+
+.fa-hospital-wide::before {
+  content: "\f0f8"; }
+
+.fa-poll-people::before {
+  content: "\f759"; }
+
+.fa-whiskey-glass-ice::before {
+  content: "\f7a1"; }
+
+.fa-glass-whiskey-rocks::before {
+  content: "\f7a1"; }
+
+.fa-wine-bottle::before {
+  content: "\f72f"; }
+
+.fa-chess-rook::before {
+  content: "\f447"; }
+
+.fa-user-bounty-hunter::before {
+  content: "\e2bf"; }
+
+.fa-bars-staggered::before {
+  content: "\f550"; }
+
+.fa-reorder::before {
+  content: "\f550"; }
+
+.fa-stream::before {
+  content: "\f550"; }
+
+.fa-diagram-sankey::before {
+  content: "\e158"; }
+
+.fa-cloud-hail-mixed::before {
+  content: "\f73a"; }
+
+.fa-circle-up-left::before {
+  content: "\e128"; }
+
+.fa-dharmachakra::before {
+  content: "\f655"; }
+
+.fa-objects-align-left::before {
+  content: "\e3be"; }
+
+.fa-oil-can-drip::before {
+  content: "\e205"; }
+
+.fa-face-smiling-hands::before {
+  content: "\e396"; }
+
+.fa-broccoli::before {
+  content: "\e3e2"; }
+
+.fa-route-interstate::before {
+  content: "\f61b"; }
+
+.fa-ear-muffs::before {
+  content: "\f795"; }
+
+.fa-hotdog::before {
+  content: "\f80f"; }
+
+.fa-transporter-empty::before {
+  content: "\e046"; }
+
+.fa-person-walking-with-cane::before {
+  content: "\f29d"; }
+
+.fa-blind::before {
+  content: "\f29d"; }
+
+.fa-angle-90::before {
+  content: "\e08d"; }
+
+.fa-rectangle-terminal::before {
+  content: "\e236"; }
+
+.fa-kite::before {
+  content: "\f6f4"; }
+
+.fa-drum::before {
+  content: "\f569"; }
+
+.fa-scrubber::before {
+  content: "\f2f8"; }
+
+.fa-ice-cream::before {
+  content: "\f810"; }
+
+.fa-heart-circle-bolt::before {
+  content: "\e4fc"; }
+
+.fa-fish-bones::before {
+  content: "\e304"; }
+
+.fa-deer-rudolph::before {
+  content: "\f78f"; }
+
+.fa-fax::before {
+  content: "\f1ac"; }
+
+.fa-paragraph::before {
+  content: "\f1dd"; }
+
+.fa-head-side-heart::before {
+  content: "\e1aa"; }
+
+.fa-square-e::before {
+  content: "\e26d"; }
+
+.fa-meter-fire::before {
+  content: "\e1eb"; }
+
+.fa-cloud-hail::before {
+  content: "\f739"; }
+
+.fa-check-to-slot::before {
+  content: "\f772"; }
+
+.fa-vote-yea::before {
+  content: "\f772"; }
+
+.fa-money-from-bracket::before {
+  content: "\e312"; }
+
+.fa-star-half::before {
+  content: "\f089"; }
+
+.fa-car-bus::before {
+  content: "\f85a"; }
+
+.fa-speaker::before {
+  content: "\f8df"; }
+
+.fa-timer::before {
+  content: "\e29e"; }
+
+.fa-boxes-stacked::before {
+  content: "\f468"; }
+
+.fa-boxes::before {
+  content: "\f468"; }
+
+.fa-boxes-alt::before {
+  content: "\f468"; }
+
+.fa-grill-hot::before {
+  content: "\e5a5"; }
+
+.fa-ballot-check::before {
+  content: "\f733"; }
+
+.fa-link::before {
+  content: "\f0c1"; }
+
+.fa-chain::before {
+  content: "\f0c1"; }
+
+.fa-ear-listen::before {
+  content: "\f2a2"; }
+
+.fa-assistive-listening-systems::before {
+  content: "\f2a2"; }
+
+.fa-file-minus::before {
+  content: "\f318"; }
+
+.fa-tree-city::before {
+  content: "\e587"; }
+
+.fa-play::before {
+  content: "\f04b"; }
+
+.fa-font::before {
+  content: "\f031"; }
+
+.fa-cup-togo::before {
+  content: "\f6c5"; }
+
+.fa-coffee-togo::before {
+  content: "\f6c5"; }
+
+.fa-square-down-left::before {
+  content: "\e26b"; }
+
+.fa-burger-lettuce::before {
+  content: "\e3e3"; }
+
+.fa-rupiah-sign::before {
+  content: "\e23d"; }
+
+.fa-magnifying-glass::before {
+  content: "\f002"; }
+
+.fa-search::before {
+  content: "\f002"; }
+
+.fa-table-tennis-paddle-ball::before {
+  content: "\f45d"; }
+
+.fa-ping-pong-paddle-ball::before {
+  content: "\f45d"; }
+
+.fa-table-tennis::before {
+  content: "\f45d"; }
+
+.fa-person-dots-from-line::before {
+  content: "\f470"; }
+
+.fa-diagnoses::before {
+  content: "\f470"; }
+
+.fa-chevrons-down::before {
+  content: "\f322"; }
+
+.fa-chevron-double-down::before {
+  content: "\f322"; }
+
+.fa-trash-can-arrow-up::before {
+  content: "\f82a"; }
+
+.fa-trash-restore-alt::before {
+  content: "\f82a"; }
+
+.fa-signal-good::before {
+  content: "\f68e"; }
+
+.fa-signal-3::before {
+  content: "\f68e"; }
+
+.fa-location-question::before {
+  content: "\f60b"; }
+
+.fa-map-marker-question::before {
+  content: "\f60b"; }
+
+.fa-floppy-disk-circle-xmark::before {
+  content: "\e181"; }
+
+.fa-floppy-disk-times::before {
+  content: "\e181"; }
+
+.fa-save-circle-xmark::before {
+  content: "\e181"; }
+
+.fa-save-times::before {
+  content: "\e181"; }
+
+.fa-naira-sign::before {
+  content: "\e1f6"; }
+
+.fa-peach::before {
+  content: "\e20b"; }
+
+.fa-taxi-bus::before {
+  content: "\e298"; }
+
+.fa-bracket-curly::before {
+  content: "\7b"; }
+
+.fa-bracket-curly-left::before {
+  content: "\7b"; }
+
+.fa-lobster::before {
+  content: "\e421"; }
+
+.fa-cart-flatbed-empty::before {
+  content: "\f476"; }
+
+.fa-dolly-flatbed-empty::before {
+  content: "\f476"; }
+
+.fa-colon::before {
+  content: "\3a"; }
+
+.fa-cart-arrow-down::before {
+  content: "\f218"; }
+
+.fa-wand::before {
+  content: "\f72a"; }
+
+.fa-walkie-talkie::before {
+  content: "\f8ef"; }
+
+.fa-file-pen::before {
+  content: "\f31c"; }
+
+.fa-file-edit::before {
+  content: "\f31c"; }
+
+.fa-receipt::before {
+  content: "\f543"; }
+
+.fa-table-picnic::before {
+  content: "\e32d"; }
+
+.fa-square-pen::before {
+  content: "\f14b"; }
+
+.fa-pen-square::before {
+  content: "\f14b"; }
+
+.fa-pencil-square::before {
+  content: "\f14b"; }
+
+.fa-circle-microphone-lines::before {
+  content: "\e117"; }
+
+.fa-microphone-circle-alt::before {
+  content: "\e117"; }
+
+.fa-display-slash::before {
+  content: "\e2fa"; }
+
+.fa-desktop-slash::before {
+  content: "\e2fa"; }
+
+.fa-suitcase-rolling::before {
+  content: "\f5c1"; }
+
+.fa-person-circle-exclamation::before {
+  content: "\e53f"; }
+
+.fa-transporter-2::before {
+  content: "\e044"; }
+
+.fa-hands-holding-diamond::before {
+  content: "\f47c"; }
+
+.fa-hand-receiving::before {
+  content: "\f47c"; }
+
+.fa-money-bill-simple-wave::before {
+  content: "\e1f2"; }
+
+.fa-chevron-down::before {
+  content: "\f078"; }
+
+.fa-battery-full::before {
+  content: "\f240"; }
+
+.fa-battery::before {
+  content: "\f240"; }
+
+.fa-battery-5::before {
+  content: "\f240"; }
+
+.fa-bell-plus::before {
+  content: "\f849"; }
+
+.fa-book-arrow-right::before {
+  content: "\e0b9"; }
+
+.fa-hospitals::before {
+  content: "\f80e"; }
+
+.fa-club::before {
+  content: "\f327"; }
+
+.fa-skull-crossbones::before {
+  content: "\f714"; }
+
+.fa-droplet-degree::before {
+  content: "\f748"; }
+
+.fa-dewpoint::before {
+  content: "\f748"; }
+
+.fa-code-compare::before {
+  content: "\e13a"; }
+
+.fa-list-ul::before {
+  content: "\f0ca"; }
+
+.fa-list-dots::before {
+  content: "\f0ca"; }
+
+.fa-hand-holding-magic::before {
+  content: "\f6e5"; }
+
+.fa-watermelon-slice::before {
+  content: "\e337"; }
+
+.fa-circle-ellipsis::before {
+  content: "\e10a"; }
+
+.fa-school-lock::before {
+  content: "\e56f"; }
+
+.fa-tower-cell::before {
+  content: "\e585"; }
+
+.fa-sd-cards::before {
+  content: "\e240"; }
+
+.fa-down-long::before {
+  content: "\f309"; }
+
+.fa-long-arrow-alt-down::before {
+  content: "\f309"; }
+
+.fa-envelopes::before {
+  content: "\e170"; }
+
+.fa-phone-office::before {
+  content: "\f67d"; }
+
+.fa-ranking-star::before {
+  content: "\e561"; }
+
+.fa-chess-king::before {
+  content: "\f43f"; }
+
+.fa-nfc-pen::before {
+  content: "\e1fa"; }
+
+.fa-person-harassing::before {
+  content: "\e549"; }
+
+.fa-hat-winter::before {
+  content: "\f7a8"; }
+
+.fa-brazilian-real-sign::before {
+  content: "\e46c"; }
+
+.fa-landmark-dome::before {
+  content: "\f752"; }
+
+.fa-landmark-alt::before {
+  content: "\f752"; }
+
+.fa-bone-break::before {
+  content: "\f5d8"; }
+
+.fa-arrow-up::before {
+  content: "\f062"; }
+
+.fa-down-from-dotted-line::before {
+  content: "\e407"; }
+
+.fa-tv::before {
+  content: "\f26c"; }
+
+.fa-television::before {
+  content: "\f26c"; }
+
+.fa-tv-alt::before {
+  content: "\f26c"; }
+
+.fa-border-left::before {
+  content: "\f84f"; }
+
+.fa-circle-divide::before {
+  content: "\e106"; }
+
+.fa-shrimp::before {
+  content: "\e448"; }
+
+.fa-list-check::before {
+  content: "\f0ae"; }
+
+.fa-tasks::before {
+  content: "\f0ae"; }
+
+.fa-diagram-subtask::before {
+  content: "\e479"; }
+
+.fa-jug-detergent::before {
+  content: "\e519"; }
+
+.fa-circle-user::before {
+  content: "\f2bd"; }
+
+.fa-user-circle::before {
+  content: "\f2bd"; }
+
+.fa-square-y::before {
+  content: "\e287"; }
+
+.fa-user-doctor-hair::before {
+  content: "\e458"; }
+
+.fa-planet-ringed::before {
+  content: "\e020"; }
+
+.fa-mushroom::before {
+  content: "\e425"; }
+
+.fa-user-shield::before {
+  content: "\f505"; }
+
+.fa-megaphone::before {
+  content: "\f675"; }
+
+.fa-circle-exclamation-check::before {
+  content: "\e10d"; }
+
+.fa-wind::before {
+  content: "\f72e"; }
+
+.fa-box-dollar::before {
+  content: "\f4a0"; }
+
+.fa-box-usd::before {
+  content: "\f4a0"; }
+
+.fa-car-burst::before {
+  content: "\f5e1"; }
+
+.fa-car-crash::before {
+  content: "\f5e1"; }
+
+.fa-y::before {
+  content: "\59"; }
+
+.fa-user-headset::before {
+  content: "\f82d"; }
+
+.fa-arrows-retweet::before {
+  content: "\f361"; }
+
+.fa-retweet-alt::before {
+  content: "\f361"; }
+
+.fa-person-snowboarding::before {
+  content: "\f7ce"; }
+
+.fa-snowboarding::before {
+  content: "\f7ce"; }
+
+.fa-square-chevron-right::before {
+  content: "\f32b"; }
+
+.fa-chevron-square-right::before {
+  content: "\f32b"; }
+
+.fa-lacrosse-stick-ball::before {
+  content: "\e3b6"; }
+
+.fa-truck-fast::before {
+  content: "\f48b"; }
+
+.fa-shipping-fast::before {
+  content: "\f48b"; }
+
+.fa-star-sharp::before {
+  content: "\e28b"; }
+
+.fa-circle-1::before {
+  content: "\e0ee"; }
+
+.fa-circle-star::before {
+  content: "\e123"; }
+
+.fa-star-circle::before {
+  content: "\e123"; }
+
+.fa-fish::before {
+  content: "\f578"; }
+
+.fa-cloud-fog::before {
+  content: "\f74e"; }
+
+.fa-fog::before {
+  content: "\f74e"; }
+
+.fa-waffle::before {
+  content: "\e466"; }
+
+.fa-music-note::before {
+  content: "\f8cf"; }
+
+.fa-music-alt::before {
+  content: "\f8cf"; }
+
+.fa-hexagon-exclamation::before {
+  content: "\e417"; }
+
+.fa-cart-shopping-fast::before {
+  content: "\e0dc"; }
+
+.fa-object-union::before {
+  content: "\e49f"; }
+
+.fa-user-graduate::before {
+  content: "\f501"; }
+
+.fa-starfighter::before {
+  content: "\e037"; }
+
+.fa-circle-half-stroke::before {
+  content: "\f042"; }
+
+.fa-adjust::before {
+  content: "\f042"; }
+
+.fa-arrow-right-long-to-line::before {
+  content: "\e3d5"; }
+
+.fa-square-arrow-down::before {
+  content: "\f339"; }
+
+.fa-arrow-square-down::before {
+  content: "\f339"; }
+
+.fa-clapperboard::before {
+  content: "\e131"; }
+
+.fa-square-chevron-left::before {
+  content: "\f32a"; }
+
+.fa-chevron-square-left::before {
+  content: "\f32a"; }
+
+.fa-phone-intercom::before {
+  content: "\e434"; }
+
+.fa-link-horizontal::before {
+  content: "\e1cb"; }
+
+.fa-chain-horizontal::before {
+  content: "\e1cb"; }
+
+.fa-mango::before {
+  content: "\e30f"; }
+
+.fa-music-note-slash::before {
+  content: "\f8d0"; }
+
+.fa-music-alt-slash::before {
+  content: "\f8d0"; }
+
+.fa-circle-radiation::before {
+  content: "\f7ba"; }
+
+.fa-radiation-alt::before {
+  content: "\f7ba"; }
+
+.fa-face-tongue-sweat::before {
+  content: "\e39e"; }
+
+.fa-globe-stand::before {
+  content: "\f5f6"; }
+
+.fa-baseball::before {
+  content: "\f433"; }
+
+.fa-baseball-ball::before {
+  content: "\f433"; }
+
+.fa-circle-p::before {
+  content: "\e11a"; }
+
+.fa-award-simple::before {
+  content: "\e0ab"; }
+
+.fa-jet-fighter-up::before {
+  content: "\e518"; }
+
+.fa-diagram-project::before {
+  content: "\f542"; }
+
+.fa-project-diagram::before {
+  content: "\f542"; }
+
+.fa-pedestal::before {
+  content: "\e20d"; }
+
+.fa-chart-pyramid::before {
+  content: "\e0e6"; }
+
+.fa-sidebar::before {
+  content: "\e24e"; }
+
+.fa-snowman-head::before {
+  content: "\f79b"; }
+
+.fa-frosty-head::before {
+  content: "\f79b"; }
+
+.fa-copy::before {
+  content: "\f0c5"; }
+
+.fa-burger-glass::before {
+  content: "\e0ce"; }
+
+.fa-volume-xmark::before {
+  content: "\f6a9"; }
+
+.fa-volume-mute::before {
+  content: "\f6a9"; }
+
+.fa-volume-times::before {
+  content: "\f6a9"; }
+
+.fa-hand-sparkles::before {
+  content: "\e05d"; }
+
+.fa-bars-filter::before {
+  content: "\e0ad"; }
+
+.fa-paintbrush-pencil::before {
+  content: "\e206"; }
+
+.fa-party-bell::before {
+  content: "\e31a"; }
+
+.fa-user-vneck-hair::before {
+  content: "\e462"; }
+
+.fa-jack-o-lantern::before {
+  content: "\f30e"; }
+
+.fa-grip::before {
+  content: "\f58d"; }
+
+.fa-grip-horizontal::before {
+  content: "\f58d"; }
+
+.fa-share-from-square::before {
+  content: "\f14d"; }
+
+.fa-share-square::before {
+  content: "\f14d"; }
+
+.fa-keynote::before {
+  content: "\f66c"; }
+
+.fa-gun::before {
+  content: "\e19b"; }
+
+.fa-square-phone::before {
+  content: "\f098"; }
+
+.fa-phone-square::before {
+  content: "\f098"; }
+
+.fa-plus::before {
+  content: "\2b"; }
+
+.fa-add::before {
+  content: "\2b"; }
+
+.fa-expand::before {
+  content: "\f065"; }
+
+.fa-computer::before {
+  content: "\e4e5"; }
+
+.fa-fort::before {
+  content: "\e486"; }
+
+.fa-cloud-check::before {
+  content: "\e35c"; }
+
+.fa-xmark::before {
+  content: "\f00d"; }
+
+.fa-close::before {
+  content: "\f00d"; }
+
+.fa-multiply::before {
+  content: "\f00d"; }
+
+.fa-remove::before {
+  content: "\f00d"; }
+
+.fa-times::before {
+  content: "\f00d"; }
+
+.fa-face-smirking::before {
+  content: "\e397"; }
+
+.fa-arrows-up-down-left-right::before {
+  content: "\f047"; }
+
+.fa-arrows::before {
+  content: "\f047"; }
+
+.fa-chalkboard-user::before {
+  content: "\f51c"; }
+
+.fa-chalkboard-teacher::before {
+  content: "\f51c"; }
+
+.fa-rhombus::before {
+  content: "\e23b"; }
+
+.fa-claw-marks::before {
+  content: "\f6c2"; }
+
+.fa-peso-sign::before {
+  content: "\e222"; }
+
+.fa-face-smile-tongue::before {
+  content: "\e394"; }
+
+.fa-cart-circle-xmark::before {
+  content: "\e3f4"; }
+
+.fa-building-shield::before {
+  content: "\e4d8"; }
+
+.fa-circle-phone-flip::before {
+  content: "\e11c"; }
+
+.fa-phone-circle-alt::before {
+  content: "\e11c"; }
+
+.fa-baby::before {
+  content: "\f77c"; }
+
+.fa-users-line::before {
+  content: "\e592"; }
+
+.fa-quote-left::before {
+  content: "\f10d"; }
+
+.fa-quote-left-alt::before {
+  content: "\f10d"; }
+
+.fa-tractor::before {
+  content: "\f722"; }
+
+.fa-key-skeleton::before {
+  content: "\f6f3"; }
+
+.fa-trash-arrow-up::before {
+  content: "\f829"; }
+
+.fa-trash-restore::before {
+  content: "\f829"; }
+
+.fa-arrow-down-up-lock::before {
+  content: "\e4b0"; }
+
+.fa-arrow-down-to-bracket::before {
+  content: "\e094"; }
+
+.fa-lines-leaning::before {
+  content: "\e51e"; }
+
+.fa-square-q::before {
+  content: "\e27b"; }
+
+.fa-ruler-combined::before {
+  content: "\f546"; }
+
+.fa-symbols::before {
+  content: "\f86e"; }
+
+.fa-icons-alt::before {
+  content: "\f86e"; }
+
+.fa-copyright::before {
+  content: "\f1f9"; }
+
+.fa-highlighter-line::before {
+  content: "\e1af"; }
+
+.fa-bracket-square::before {
+  content: "\5b"; }
+
+.fa-bracket::before {
+  content: "\5b"; }
+
+.fa-bracket-left::before {
+  content: "\5b"; }
+
+.fa-island-tropical::before {
+  content: "\f811"; }
+
+.fa-island-tree-palm::before {
+  content: "\f811"; }
+
+.fa-arrow-right-from-line::before {
+  content: "\f343"; }
+
+.fa-arrow-from-left::before {
+  content: "\f343"; }
+
+.fa-h2::before {
+  content: "\f314"; }
+
+.fa-equals::before {
+  content: "\3d"; }
+
+.fa-cake-slice::before {
+  content: "\e3e5"; }
+
+.fa-shortcake::before {
+  content: "\e3e5"; }
+
+.fa-peanut::before {
+  content: "\e430"; }
+
+.fa-wrench-simple::before {
+  content: "\e2d1"; }
+
+.fa-blender::before {
+  content: "\f517"; }
+
+.fa-teeth::before {
+  content: "\f62e"; }
+
+.fa-tally-2::before {
+  content: "\e295"; }
+
+.fa-shekel-sign::before {
+  content: "\f20b"; }
+
+.fa-ils::before {
+  content: "\f20b"; }
+
+.fa-shekel::before {
+  content: "\f20b"; }
+
+.fa-sheqel::before {
+  content: "\f20b"; }
+
+.fa-sheqel-sign::before {
+  content: "\f20b"; }
+
+.fa-cars::before {
+  content: "\f85b"; }
+
+.fa-axe-battle::before {
+  content: "\f6b3"; }
+
+.fa-user-hair-long::before {
+  content: "\e45b"; }
+
+.fa-map::before {
+  content: "\f279"; }
+
+.fa-file-circle-info::before {
+  content: "\e493"; }
+
+.fa-face-disappointed::before {
+  content: "\e36f"; }
+
+.fa-lasso-sparkles::before {
+  content: "\e1c9"; }
+
+.fa-clock-eleven::before {
+  content: "\e347"; }
+
+.fa-rocket::before {
+  content: "\f135"; }
+
+.fa-siren-on::before {
+  content: "\e02e"; }
+
+.fa-clock-ten::before {
+  content: "\e354"; }
+
+.fa-candle-holder::before {
+  content: "\f6bc"; }
+
+.fa-video-arrow-down-left::before {
+  content: "\e2c8"; }
+
+.fa-photo-film::before {
+  content: "\f87c"; }
+
+.fa-photo-video::before {
+  content: "\f87c"; }
+
+.fa-floppy-disk-circle-arrow-right::before {
+  content: "\e180"; }
+
+.fa-save-circle-arrow-right::before {
+  content: "\e180"; }
+
+.fa-folder-minus::before {
+  content: "\f65d"; }
+
+.fa-planet-moon::before {
+  content: "\e01f"; }
+
+.fa-face-eyes-xmarks::before {
+  content: "\e374"; }
+
+.fa-chart-scatter::before {
+  content: "\f7ee"; }
+
+.fa-display-arrow-down::before {
+  content: "\e164"; }
+
+.fa-store::before {
+  content: "\f54e"; }
+
+.fa-arrow-trend-up::before {
+  content: "\e098"; }
+
+.fa-plug-circle-minus::before {
+  content: "\e55e"; }
+
+.fa-olive-branch::before {
+  content: "\e317"; }
+
+.fa-angle::before {
+  content: "\e08c"; }
+
+.fa-vacuum-robot::before {
+  content: "\e04e"; }
+
+.fa-sign-hanging::before {
+  content: "\f4d9"; }
+
+.fa-sign::before {
+  content: "\f4d9"; }
+
+.fa-square-divide::before {
+  content: "\e26a"; }
+
+.fa-signal-stream-slash::before {
+  content: "\e250"; }
+
+.fa-bezier-curve::before {
+  content: "\f55b"; }
+
+.fa-eye-dropper-half::before {
+  content: "\e173"; }
+
+.fa-store-lock::before {
+  content: "\e4a6"; }
+
+.fa-bell-slash::before {
+  content: "\f1f6"; }
+
+.fa-cloud-bolt-sun::before {
+  content: "\f76e"; }
+
+.fa-thunderstorm-sun::before {
+  content: "\f76e"; }
+
+.fa-camera-slash::before {
+  content: "\e0d9"; }
+
+.fa-comment-quote::before {
+  content: "\e14c"; }
+
+.fa-tablet::before {
+  content: "\f3fb"; }
+
+.fa-tablet-android::before {
+  content: "\f3fb"; }
+
+.fa-school-flag::before {
+  content: "\e56e"; }
+
+.fa-message-code::before {
+  content: "\e1df"; }
+
+.fa-glass-half::before {
+  content: "\e192"; }
+
+.fa-glass-half-empty::before {
+  content: "\e192"; }
+
+.fa-glass-half-full::before {
+  content: "\e192"; }
+
+.fa-fill::before {
+  content: "\f575"; }
+
+.fa-message-minus::before {
+  content: "\f4a7"; }
+
+.fa-comment-alt-minus::before {
+  content: "\f4a7"; }
+
+.fa-angle-up::before {
+  content: "\f106"; }
+
+.fa-drumstick-bite::before {
+  content: "\f6d7"; }
+
+.fa-link-horizontal-slash::before {
+  content: "\e1cc"; }
+
+.fa-chain-horizontal-slash::before {
+  content: "\e1cc"; }
+
+.fa-holly-berry::before {
+  content: "\f7aa"; }
+
+.fa-chevron-left::before {
+  content: "\f053"; }
+
+.fa-bacteria::before {
+  content: "\e059"; }
+
+.fa-clouds::before {
+  content: "\f744"; }
+
+.fa-money-bill-simple::before {
+  content: "\e1f1"; }
+
+.fa-hand-lizard::before {
+  content: "\f258"; }
+
+.fa-table-pivot::before {
+  content: "\e291"; }
+
+.fa-filter-slash::before {
+  content: "\e17d"; }
+
+.fa-trash-can-undo::before {
+  content: "\f896"; }
+
+.fa-trash-can-arrow-turn-left::before {
+  content: "\f896"; }
+
+.fa-trash-undo-alt::before {
+  content: "\f896"; }
+
+.fa-notdef::before {
+  content: "\e1fe"; }
+
+.fa-disease::before {
+  content: "\f7fa"; }
+
+.fa-person-to-door::before {
+  content: "\e433"; }
+
+.fa-turntable::before {
+  content: "\f8e4"; }
+
+.fa-briefcase-medical::before {
+  content: "\f469"; }
+
+.fa-genderless::before {
+  content: "\f22d"; }
+
+.fa-chevron-right::before {
+  content: "\f054"; }
+
+.fa-signal-weak::before {
+  content: "\f68c"; }
+
+.fa-signal-1::before {
+  content: "\f68c"; }
+
+.fa-clock-five::before {
+  content: "\e349"; }
+
+.fa-retweet::before {
+  content: "\f079"; }
+
+.fa-car-rear::before {
+  content: "\f5de"; }
+
+.fa-car-alt::before {
+  content: "\f5de"; }
+
+.fa-pump-soap::before {
+  content: "\e06b"; }
+
+.fa-computer-classic::before {
+  content: "\f8b1"; }
+
+.fa-frame::before {
+  content: "\e495"; }
+
+.fa-video-slash::before {
+  content: "\f4e2"; }
+
+.fa-battery-quarter::before {
+  content: "\f243"; }
+
+.fa-battery-2::before {
+  content: "\f243"; }
+
+.fa-ellipsis-stroke::before {
+  content: "\f39b"; }
+
+.fa-ellipsis-h-alt::before {
+  content: "\f39b"; }
+
+.fa-radio::before {
+  content: "\f8d7"; }
+
+.fa-baby-carriage::before {
+  content: "\f77d"; }
+
+.fa-carriage-baby::before {
+  content: "\f77d"; }
+
+.fa-face-expressionless::before {
+  content: "\e373"; }
+
+.fa-down-to-dotted-line::before {
+  content: "\e408"; }
+
+.fa-cloud-music::before {
+  content: "\f8ae"; }
+
+.fa-traffic-light::before {
+  content: "\f637"; }
+
+.fa-cloud-minus::before {
+  content: "\e35d"; }
+
+.fa-thermometer::before {
+  content: "\f491"; }
+
+.fa-shield-minus::before {
+  content: "\e249"; }
+
+.fa-vr-cardboard::before {
+  content: "\f729"; }
+
+.fa-car-tilt::before {
+  content: "\f5e5"; }
+
+.fa-gauge-circle-minus::before {
+  content: "\e497"; }
+
+.fa-brightness-low::before {
+  content: "\e0ca"; }
+
+.fa-hand-middle-finger::before {
+  content: "\f806"; }
+
+.fa-percent::before {
+  content: "\25"; }
+
+.fa-percentage::before {
+  content: "\25"; }
+
+.fa-truck-moving::before {
+  content: "\f4df"; }
+
+.fa-glass-water-droplet::before {
+  content: "\e4f5"; }
+
+.fa-conveyor-belt::before {
+  content: "\f46e"; }
+
+.fa-location-check::before {
+  content: "\f606"; }
+
+.fa-map-marker-check::before {
+  content: "\f606"; }
+
+.fa-coin-vertical::before {
+  content: "\e3fd"; }
+
+.fa-display::before {
+  content: "\e163"; }
+
+.fa-person-sign::before {
+  content: "\f757"; }
+
+.fa-face-smile::before {
+  content: "\f118"; }
+
+.fa-smile::before {
+  content: "\f118"; }
+
+.fa-phone-hangup::before {
+  content: "\e225"; }
+
+.fa-signature-slash::before {
+  content: "\e3cb"; }
+
+.fa-thumbtack::before {
+  content: "\f08d"; }
+
+.fa-thumb-tack::before {
+  content: "\f08d"; }
+
+.fa-wheat-slash::before {
+  content: "\e339"; }
+
+.fa-trophy::before {
+  content: "\f091"; }
+
+.fa-clouds-sun::before {
+  content: "\f746"; }
+
+.fa-person-praying::before {
+  content: "\f683"; }
+
+.fa-pray::before {
+  content: "\f683"; }
+
+.fa-hammer::before {
+  content: "\f6e3"; }
+
+.fa-face-vomit::before {
+  content: "\e3a0"; }
+
+.fa-speakers::before {
+  content: "\f8e0"; }
+
+.fa-tty-answer::before {
+  content: "\e2b9"; }
+
+.fa-teletype-answer::before {
+  content: "\e2b9"; }
+
+.fa-mug-tea-saucer::before {
+  content: "\e1f5"; }
+
+.fa-diagram-lean-canvas::before {
+  content: "\e156"; }
+
+.fa-alt::before {
+  content: "\e08a"; }
+
+.fa-dial::before {
+  content: "\e15b"; }
+
+.fa-dial-med-high::before {
+  content: "\e15b"; }
+
+.fa-hand-peace::before {
+  content: "\f25b"; }
+
+.fa-circle-trash::before {
+  content: "\e126"; }
+
+.fa-trash-circle::before {
+  content: "\e126"; }
+
+.fa-rotate::before {
+  content: "\f2f1"; }
+
+.fa-sync-alt::before {
+  content: "\f2f1"; }
+
+.fa-circle-quarters::before {
+  content: "\e3f8"; }
+
+.fa-spinner::before {
+  content: "\f110"; }
+
+.fa-tower-control::before {
+  content: "\e2a2"; }
+
+.fa-arrow-up-triangle-square::before {
+  content: "\f88a"; }
+
+.fa-sort-shapes-up::before {
+  content: "\f88a"; }
+
+.fa-whale::before {
+  content: "\f72c"; }
+
+.fa-robot::before {
+  content: "\f544"; }
+
+.fa-peace::before {
+  content: "\f67c"; }
+
+.fa-party-horn::before {
+  content: "\e31b"; }
+
+.fa-gears::before {
+  content: "\f085"; }
+
+.fa-cogs::before {
+  content: "\f085"; }
+
+.fa-sun-bright::before {
+  content: "\e28f"; }
+
+.fa-sun-alt::before {
+  content: "\e28f"; }
+
+.fa-warehouse::before {
+  content: "\f494"; }
+
+.fa-lock-keyhole-open::before {
+  content: "\f3c2"; }
+
+.fa-lock-open-alt::before {
+  content: "\f3c2"; }
+
+.fa-square-fragile::before {
+  content: "\f49b"; }
+
+.fa-box-fragile::before {
+  content: "\f49b"; }
+
+.fa-square-wine-glass-crack::before {
+  content: "\f49b"; }
+
+.fa-arrow-up-right-dots::before {
+  content: "\e4b7"; }
+
+.fa-square-n::before {
+  content: "\e277"; }
+
+.fa-splotch::before {
+  content: "\f5bc"; }
+
+.fa-face-grin-hearts::before {
+  content: "\f584"; }
+
+.fa-grin-hearts::before {
+  content: "\f584"; }
+
+.fa-meter::before {
+  content: "\e1e8"; }
+
+.fa-mandolin::before {
+  content: "\f6f9"; }
+
+.fa-dice-four::before {
+  content: "\f524"; }
+
+.fa-sim-card::before {
+  content: "\f7c4"; }
+
+.fa-transgender::before {
+  content: "\f225"; }
+
+.fa-transgender-alt::before {
+  content: "\f225"; }
+
+.fa-mercury::before {
+  content: "\f223"; }
+
+.fa-up-from-bracket::before {
+  content: "\e590"; }
+
+.fa-knife-kitchen::before {
+  content: "\f6f5"; }
+
+.fa-border-right::before {
+  content: "\f852"; }
+
+.fa-arrow-turn-down::before {
+  content: "\f149"; }
+
+.fa-level-down::before {
+  content: "\f149"; }
+
+.fa-spade::before {
+  content: "\f2f4"; }
+
+.fa-card-spade::before {
+  content: "\e3ec"; }
+
+.fa-line-columns::before {
+  content: "\f870"; }
+
+.fa-arrow-right-to-line::before {
+  content: "\f340"; }
+
+.fa-arrow-to-right::before {
+  content: "\f340"; }
+
+.fa-person-falling-burst::before {
+  content: "\e547"; }
+
+.fa-flag-pennant::before {
+  content: "\f456"; }
+
+.fa-pennant::before {
+  content: "\f456"; }
+
+.fa-conveyor-belt-empty::before {
+  content: "\e150"; }
+
+.fa-award::before {
+  content: "\f559"; }
+
+.fa-ticket-simple::before {
+  content: "\f3ff"; }
+
+.fa-ticket-alt::before {
+  content: "\f3ff"; }
+
+.fa-building::before {
+  content: "\f1ad"; }
+
+.fa-angles-left::before {
+  content: "\f100"; }
+
+.fa-angle-double-left::before {
+  content: "\f100"; }
+
+.fa-camcorder::before {
+  content: "\f8a8"; }
+
+.fa-video-handheld::before {
+  content: "\f8a8"; }
+
+.fa-pancakes::before {
+  content: "\e42d"; }
+
+.fa-album-circle-user::before {
+  content: "\e48d"; }
+
+.fa-qrcode::before {
+  content: "\f029"; }
+
+.fa-dice-d10::before {
+  content: "\f6cd"; }
+
+.fa-fireplace::before {
+  content: "\f79a"; }
+
+.fa-browser::before {
+  content: "\f37e"; }
+
+.fa-pen-paintbrush::before {
+  content: "\f618"; }
+
+.fa-pencil-paintbrush::before {
+  content: "\f618"; }
+
+.fa-fish-cooked::before {
+  content: "\f7fe"; }
+
+.fa-chair-office::before {
+  content: "\f6c1"; }
+
+.fa-nesting-dolls::before {
+  content: "\e3ba"; }
+
+.fa-clock-rotate-left::before {
+  content: "\f1da"; }
+
+.fa-history::before {
+  content: "\f1da"; }
+
+.fa-trumpet::before {
+  content: "\f8e3"; }
+
+.fa-face-grin-beam-sweat::before {
+  content: "\f583"; }
+
+.fa-grin-beam-sweat::before {
+  content: "\f583"; }
+
+.fa-fire-smoke::before {
+  content: "\f74b"; }
+
+.fa-phone-missed::before {
+  content: "\e226"; }
+
+.fa-file-export::before {
+  content: "\f56e"; }
+
+.fa-arrow-right-from-file::before {
+  content: "\f56e"; }
+
+.fa-shield::before {
+  content: "\f132"; }
+
+.fa-shield-blank::before {
+  content: "\f132"; }
+
+.fa-arrow-up-short-wide::before {
+  content: "\f885"; }
+
+.fa-sort-amount-up-alt::before {
+  content: "\f885"; }
+
+.fa-arrows-repeat-1::before {
+  content: "\f366"; }
+
+.fa-repeat-1-alt::before {
+  content: "\f366"; }
+
+.fa-gun-slash::before {
+  content: "\e19c"; }
+
+.fa-avocado::before {
+  content: "\e0aa"; }
+
+.fa-binary::before {
+  content: "\e33b"; }
+
+.fa-glasses-round::before {
+  content: "\f5f5"; }
+
+.fa-glasses-alt::before {
+  content: "\f5f5"; }
+
+.fa-phone-plus::before {
+  content: "\f4d2"; }
+
+.fa-ditto::before {
+  content: "\22"; }
+
+.fa-person-seat::before {
+  content: "\e21e"; }
+
+.fa-house-medical::before {
+  content: "\e3b2"; }
+
+.fa-golf-ball-tee::before {
+  content: "\f450"; }
+
+.fa-golf-ball::before {
+  content: "\f450"; }
+
+.fa-circle-chevron-left::before {
+  content: "\f137"; }
+
+.fa-chevron-circle-left::before {
+  content: "\f137"; }
+
+.fa-house-chimney-window::before {
+  content: "\e00d"; }
+
+.fa-scythe::before {
+  content: "\f710"; }
+
+.fa-pen-nib::before {
+  content: "\f5ad"; }
+
+.fa-ban-parking::before {
+  content: "\f616"; }
+
+.fa-parking-circle-slash::before {
+  content: "\f616"; }
+
+.fa-tent-arrow-turn-left::before {
+  content: "\e580"; }
+
+.fa-face-diagonal-mouth::before {
+  content: "\e47e"; }
+
+.fa-diagram-cells::before {
+  content: "\e475"; }
+
+.fa-cricket-bat-ball::before {
+  content: "\f449"; }
+
+.fa-cricket::before {
+  content: "\f449"; }
+
+.fa-tents::before {
+  content: "\e582"; }
+
+.fa-wand-magic::before {
+  content: "\f0d0"; }
+
+.fa-magic::before {
+  content: "\f0d0"; }
+
+.fa-dog::before {
+  content: "\f6d3"; }
+
+.fa-pen-line::before {
+  content: "\e212"; }
+
+.fa-atom-simple::before {
+  content: "\f5d3"; }
+
+.fa-atom-alt::before {
+  content: "\f5d3"; }
+
+.fa-ampersand::before {
+  content: "\26"; }
+
+.fa-carrot::before {
+  content: "\f787"; }
+
+.fa-arrow-up-from-line::before {
+  content: "\f342"; }
+
+.fa-arrow-from-bottom::before {
+  content: "\f342"; }
+
+.fa-moon::before {
+  content: "\f186"; }
+
+.fa-pen-slash::before {
+  content: "\e213"; }
+
+.fa-wine-glass-empty::before {
+  content: "\f5ce"; }
+
+.fa-wine-glass-alt::before {
+  content: "\f5ce"; }
+
+.fa-square-star::before {
+  content: "\e27f"; }
+
+.fa-cheese::before {
+  content: "\f7ef"; }
+
+.fa-send-backward::before {
+  content: "\f87f"; }
+
+.fa-yin-yang::before {
+  content: "\f6ad"; }
+
+.fa-music::before {
+  content: "\f001"; }
+
+.fa-compass-slash::before {
+  content: "\f5e9"; }
+
+.fa-clock-one::before {
+  content: "\e34e"; }
+
+.fa-file-music::before {
+  content: "\f8b6"; }
+
+.fa-code-commit::before {
+  content: "\f386"; }
+
+.fa-temperature-low::before {
+  content: "\f76b"; }
+
+.fa-person-biking::before {
+  content: "\f84a"; }
+
+.fa-biking::before {
+  content: "\f84a"; }
+
+.fa-skeleton::before {
+  content: "\f620"; }
+
+.fa-circle-g::before {
+  content: "\e10f"; }
+
+.fa-circle-arrow-up-left::before {
+  content: "\e0fb"; }
+
+.fa-coin-blank::before {
+  content: "\e3fb"; }
+
+.fa-broom::before {
+  content: "\f51a"; }
+
+.fa-vacuum::before {
+  content: "\e04d"; }
+
+.fa-shield-heart::before {
+  content: "\e574"; }
+
+.fa-card-heart::before {
+  content: "\e3eb"; }
+
+.fa-lightbulb-cfl-on::before {
+  content: "\e5a7"; }
+
+.fa-melon::before {
+  content: "\e310"; }
+
+.fa-gopuram::before {
+  content: "\f664"; }
+
+.fa-earth-oceania::before {
+  content: "\e47b"; }
+
+.fa-globe-oceania::before {
+  content: "\e47b"; }
+
+.fa-container-storage::before {
+  content: "\f4b7"; }
+
+.fa-face-pouting::before {
+  content: "\e387"; }
+
+.fa-square-xmark::before {
+  content: "\f2d3"; }
+
+.fa-times-square::before {
+  content: "\f2d3"; }
+
+.fa-xmark-square::before {
+  content: "\f2d3"; }
+
+.fa-face-explode::before {
+  content: "\e2fe"; }
+
+.fa-exploding-head::before {
+  content: "\e2fe"; }
+
+.fa-hashtag::before {
+  content: "\23"; }
+
+.fa-up-right-and-down-left-from-center::before {
+  content: "\f424"; }
+
+.fa-expand-alt::before {
+  content: "\f424"; }
+
+.fa-oil-can::before {
+  content: "\f613"; }
+
+.fa-t::before {
+  content: "\54"; }
+
+.fa-transformer-bolt::before {
+  content: "\e2a4"; }
+
+.fa-hippo::before {
+  content: "\f6ed"; }
+
+.fa-chart-column::before {
+  content: "\e0e3"; }
+
+.fa-cassette-vhs::before {
+  content: "\f8ec"; }
+
+.fa-vhs::before {
+  content: "\f8ec"; }
+
+.fa-infinity::before {
+  content: "\f534"; }
+
+.fa-vial-circle-check::before {
+  content: "\e596"; }
+
+.fa-chimney::before {
+  content: "\f78b"; }
+
+.fa-object-intersect::before {
+  content: "\e49d"; }
+
+.fa-person-arrow-down-to-line::before {
+  content: "\e538"; }
+
+.fa-voicemail::before {
+  content: "\f897"; }
+
+.fa-block-brick::before {
+  content: "\e3db"; }
+
+.fa-wall-brick::before {
+  content: "\e3db"; }
+
+.fa-fan::before {
+  content: "\f863"; }
+
+.fa-bags-shopping::before {
+  content: "\f847"; }
+
+.fa-paragraph-left::before {
+  content: "\f878"; }
+
+.fa-paragraph-rtl::before {
+  content: "\f878"; }
+
+.fa-person-walking-luggage::before {
+  content: "\e554"; }
+
+.fa-caravan-simple::before {
+  content: "\e000"; }
+
+.fa-caravan-alt::before {
+  content: "\e000"; }
+
+.fa-turtle::before {
+  content: "\f726"; }
+
+.fa-up-down::before {
+  content: "\f338"; }
+
+.fa-arrows-alt-v::before {
+  content: "\f338"; }
+
+.fa-cloud-moon-rain::before {
+  content: "\f73c"; }
+
+.fa-booth-curtain::before {
+  content: "\f734"; }
+
+.fa-calendar::before {
+  content: "\f133"; }
+
+.fa-box-heart::before {
+  content: "\f49d"; }
+
+.fa-trailer::before {
+  content: "\e041"; }
+
+.fa-user-doctor-message::before {
+  content: "\f82e"; }
+
+.fa-user-md-chat::before {
+  content: "\f82e"; }
+
+.fa-bahai::before {
+  content: "\f666"; }
+
+.fa-haykal::before {
+  content: "\f666"; }
+
+.fa-amp-guitar::before {
+  content: "\f8a1"; }
+
+.fa-sd-card::before {
+  content: "\f7c2"; }
+
+.fa-volume-slash::before {
+  content: "\f2e2"; }
+
+.fa-border-bottom::before {
+  content: "\f84d"; }
+
+.fa-wifi-weak::before {
+  content: "\f6aa"; }
+
+.fa-wifi-1::before {
+  content: "\f6aa"; }
+
+.fa-dragon::before {
+  content: "\f6d5"; }
+
+.fa-shoe-prints::before {
+  content: "\f54b"; }
+
+.fa-circle-plus::before {
+  content: "\f055"; }
+
+.fa-plus-circle::before {
+  content: "\f055"; }
+
+.fa-face-grin-tongue-wink::before {
+  content: "\f58b"; }
+
+.fa-grin-tongue-wink::before {
+  content: "\f58b"; }
+
+.fa-hand-holding::before {
+  content: "\f4bd"; }
+
+.fa-plug-circle-exclamation::before {
+  content: "\e55d"; }
+
+.fa-link-slash::before {
+  content: "\f127"; }
+
+.fa-chain-broken::before {
+  content: "\f127"; }
+
+.fa-chain-slash::before {
+  content: "\f127"; }
+
+.fa-unlink::before {
+  content: "\f127"; }
+
+.fa-clone::before {
+  content: "\f24d"; }
+
+.fa-person-walking-arrow-loop-left::before {
+  content: "\e551"; }
+
+.fa-arrow-up-z-a::before {
+  content: "\f882"; }
+
+.fa-sort-alpha-up-alt::before {
+  content: "\f882"; }
+
+.fa-fire-flame-curved::before {
+  content: "\f7e4"; }
+
+.fa-fire-alt::before {
+  content: "\f7e4"; }
+
+.fa-tornado::before {
+  content: "\f76f"; }
+
+.fa-file-circle-plus::before {
+  content: "\e494"; }
+
+.fa-delete-right::before {
+  content: "\e154"; }
+
+.fa-book-quran::before {
+  content: "\f687"; }
+
+.fa-quran::before {
+  content: "\f687"; }
+
+.fa-circle-quarter::before {
+  content: "\e11f"; }
+
+.fa-anchor::before {
+  content: "\f13d"; }
+
+.fa-border-all::before {
+  content: "\f84c"; }
+
+.fa-function::before {
+  content: "\f661"; }
+
+.fa-face-angry::before {
+  content: "\f556"; }
+
+.fa-angry::before {
+  content: "\f556"; }
+
+.fa-people-simple::before {
+  content: "\e21b"; }
+
+.fa-cookie-bite::before {
+  content: "\f564"; }
+
+.fa-arrow-trend-down::before {
+  content: "\e097"; }
+
+.fa-rss::before {
+  content: "\f09e"; }
+
+.fa-feed::before {
+  content: "\f09e"; }
+
+.fa-face-monocle::before {
+  content: "\e380"; }
+
+.fa-draw-polygon::before {
+  content: "\f5ee"; }
+
+.fa-scale-balanced::before {
+  content: "\f24e"; }
+
+.fa-balance-scale::before {
+  content: "\f24e"; }
+
+.fa-calendar-lines::before {
+  content: "\e0d5"; }
+
+.fa-calendar-note::before {
+  content: "\e0d5"; }
+
+.fa-arrow-down-big-small::before {
+  content: "\f88c"; }
+
+.fa-sort-size-down::before {
+  content: "\f88c"; }
+
+.fa-gauge-simple-high::before {
+  content: "\f62a"; }
+
+.fa-tachometer::before {
+  content: "\f62a"; }
+
+.fa-tachometer-fast::before {
+  content: "\f62a"; }
+
+.fa-do-not-enter::before {
+  content: "\f5ec"; }
+
+.fa-shower::before {
+  content: "\f2cc"; }
+
+.fa-dice-d8::before {
+  content: "\f6d2"; }
+
+.fa-desktop::before {
+  content: "\f390"; }
+
+.fa-desktop-alt::before {
+  content: "\f390"; }
+
+.fa-m::before {
+  content: "\4d"; }
+
+.fa-grip-dots-vertical::before {
+  content: "\e411"; }
+
+.fa-face-viewfinder::before {
+  content: "\e2ff"; }
+
+.fa-soft-serve::before {
+  content: "\e400"; }
+
+.fa-creemee::before {
+  content: "\e400"; }
+
+.fa-h5::before {
+  content: "\e412"; }
+
+.fa-hand-back-point-down::before {
+  content: "\e19e"; }
+
+.fa-table-list::before {
+  content: "\f00b"; }
+
+.fa-th-list::before {
+  content: "\f00b"; }
+
+.fa-comment-sms::before {
+  content: "\f7cd"; }
+
+.fa-sms::before {
+  content: "\f7cd"; }
+
+.fa-rectangle::before {
+  content: "\f2fa"; }
+
+.fa-rectangle-landscape::before {
+  content: "\f2fa"; }
+
+.fa-clipboard-list-check::before {
+  content: "\f737"; }
+
+.fa-turkey::before {
+  content: "\f725"; }
+
+.fa-book::before {
+  content: "\f02d"; }
+
+.fa-user-plus::before {
+  content: "\f234"; }
+
+.fa-ice-skate::before {
+  content: "\f7ac"; }
+
+.fa-check::before {
+  content: "\f00c"; }
+
+.fa-battery-three-quarters::before {
+  content: "\f241"; }
+
+.fa-battery-4::before {
+  content: "\f241"; }
+
+.fa-tomato::before {
+  content: "\e330"; }
+
+.fa-sword-laser::before {
+  content: "\e03b"; }
+
+.fa-house-circle-check::before {
+  content: "\e509"; }
+
+.fa-buildings::before {
+  content: "\e0cc"; }
+
+.fa-angle-left::before {
+  content: "\f104"; }
+
+.fa-cart-flatbed-boxes::before {
+  content: "\f475"; }
+
+.fa-dolly-flatbed-alt::before {
+  content: "\f475"; }
+
+.fa-diagram-successor::before {
+  content: "\e47a"; }
+
+.fa-truck-arrow-right::before {
+  content: "\e58b"; }
+
+.fa-square-w::before {
+  content: "\e285"; }
+
+.fa-arrows-split-up-and-left::before {
+  content: "\e4bc"; }
+
+.fa-lamp::before {
+  content: "\f4ca"; }
+
+.fa-airplay::before {
+  content: "\e089"; }
+
+.fa-hand-fist::before {
+  content: "\f6de"; }
+
+.fa-fist-raised::before {
+  content: "\f6de"; }
+
+.fa-shield-quartered::before {
+  content: "\e575"; }
+
+.fa-slash-forward::before {
+  content: "\2f"; }
+
+.fa-location-pen::before {
+  content: "\f607"; }
+
+.fa-map-marker-edit::before {
+  content: "\f607"; }
+
+.fa-cloud-moon::before {
+  content: "\f6c3"; }
+
+.fa-pot-food::before {
+  content: "\e43f"; }
+
+.fa-briefcase::before {
+  content: "\f0b1"; }
+
+.fa-person-falling::before {
+  content: "\e546"; }
+
+.fa-image-portrait::before {
+  content: "\f3e0"; }
+
+.fa-portrait::before {
+  content: "\f3e0"; }
+
+.fa-user-tag::before {
+  content: "\f507"; }
+
+.fa-rug::before {
+  content: "\e569"; }
+
+.fa-print-slash::before {
+  content: "\f686"; }
+
+.fa-earth-europe::before {
+  content: "\f7a2"; }
+
+.fa-globe-europe::before {
+  content: "\f7a2"; }
+
+.fa-cart-flatbed-suitcase::before {
+  content: "\f59d"; }
+
+.fa-luggage-cart::before {
+  content: "\f59d"; }
+
+.fa-hand-back-point-ribbon::before {
+  content: "\e1a0"; }
+
+.fa-rectangle-xmark::before {
+  content: "\f410"; }
+
+.fa-rectangle-times::before {
+  content: "\f410"; }
+
+.fa-times-rectangle::before {
+  content: "\f410"; }
+
+.fa-window-close::before {
+  content: "\f410"; }
+
+.fa-tire-rugged::before {
+  content: "\f634"; }
+
+.fa-lightbulb-dollar::before {
+  content: "\f670"; }
+
+.fa-cowbell::before {
+  content: "\f8b3"; }
+
+.fa-baht-sign::before {
+  content: "\e0ac"; }
+
+.fa-corner::before {
+  content: "\e3fe"; }
+
+.fa-chevrons-right::before {
+  content: "\f324"; }
+
+.fa-chevron-double-right::before {
+  content: "\f324"; }
+
+.fa-book-open::before {
+  content: "\f518"; }
+
+.fa-book-journal-whills::before {
+  content: "\f66a"; }
+
+.fa-journal-whills::before {
+  content: "\f66a"; }
+
+.fa-inhaler::before {
+  content: "\f5f9"; }
+
+.fa-handcuffs::before {
+  content: "\e4f8"; }
+
+.fa-snake::before {
+  content: "\f716"; }
+
+.fa-triangle-exclamation::before {
+  content: "\f071"; }
+
+.fa-exclamation-triangle::before {
+  content: "\f071"; }
+
+.fa-warning::before {
+  content: "\f071"; }
+
+.fa-note-medical::before {
+  content: "\e200"; }
+
+.fa-database::before {
+  content: "\f1c0"; }
+
+.fa-down-left::before {
+  content: "\e16a"; }
+
+.fa-share::before {
+  content: "\f064"; }
+
+.fa-arrow-turn-right::before {
+  content: "\f064"; }
+
+.fa-mail-forward::before {
+  content: "\f064"; }
+
+.fa-face-thinking::before {
+  content: "\e39b"; }
+
+.fa-turn-down-right::before {
+  content: "\e455"; }
+
+.fa-bottle-droplet::before {
+  content: "\e4c4"; }
+
+.fa-mask-face::before {
+  content: "\e1d7"; }
+
+.fa-hill-rockslide::before {
+  content: "\e508"; }
+
+.fa-scanner-keyboard::before {
+  content: "\f489"; }
+
+.fa-circle-o::before {
+  content: "\e119"; }
+
+.fa-grid-horizontal::before {
+  content: "\e307"; }
+
+.fa-message-dollar::before {
+  content: "\f650"; }
+
+.fa-comment-alt-dollar::before {
+  content: "\f650"; }
+
+.fa-right-left::before {
+  content: "\f362"; }
+
+.fa-exchange-alt::before {
+  content: "\f362"; }
+
+.fa-columns-3::before {
+  content: "\e361"; }
+
+.fa-paper-plane::before {
+  content: "\f1d8"; }
+
+.fa-road-circle-exclamation::before {
+  content: "\e565"; }
+
+.fa-dungeon::before {
+  content: "\f6d9"; }
+
+.fa-hand-holding-box::before {
+  content: "\f47b"; }
+
+.fa-input-text::before {
+  content: "\e1bf"; }
+
+.fa-window-flip::before {
+  content: "\f40f"; }
+
+.fa-window-alt::before {
+  content: "\f40f"; }
+
+.fa-align-right::before {
+  content: "\f038"; }
+
+.fa-scanner-gun::before {
+  content: "\f488"; }
+
+.fa-scanner::before {
+  content: "\f488"; }
+
+.fa-tire::before {
+  content: "\f631"; }
+
+.fa-engine::before {
+  content: "\e16e"; }
+
+.fa-money-bill-1-wave::before {
+  content: "\f53b"; }
+
+.fa-money-bill-wave-alt::before {
+  content: "\f53b"; }
+
+.fa-life-ring::before {
+  content: "\f1cd"; }
+
+.fa-hands::before {
+  content: "\f2a7"; }
+
+.fa-sign-language::before {
+  content: "\f2a7"; }
+
+.fa-signing::before {
+  content: "\f2a7"; }
+
+.fa-circle-caret-right::before {
+  content: "\f330"; }
+
+.fa-caret-circle-right::before {
+  content: "\f330"; }
+
+.fa-wheat::before {
+  content: "\f72d"; }
+
+.fa-file-spreadsheet::before {
+  content: "\f65b"; }
+
+.fa-audio-description-slash::before {
+  content: "\e0a8"; }
+
+.fa-calendar-day::before {
+  content: "\f783"; }
+
+.fa-water-ladder::before {
+  content: "\f5c5"; }
+
+.fa-ladder-water::before {
+  content: "\f5c5"; }
+
+.fa-swimming-pool::before {
+  content: "\f5c5"; }
+
+.fa-arrows-up-down::before {
+  content: "\f07d"; }
+
+.fa-arrows-v::before {
+  content: "\f07d"; }
+
+.fa-chess-pawn-piece::before {
+  content: "\f444"; }
+
+.fa-chess-pawn-alt::before {
+  content: "\f444"; }
+
+.fa-face-grimace::before {
+  content: "\f57f"; }
+
+.fa-grimace::before {
+  content: "\f57f"; }
+
+.fa-wheelchair-move::before {
+  content: "\e2ce"; }
+
+.fa-wheelchair-alt::before {
+  content: "\e2ce"; }
+
+.fa-turn-down::before {
+  content: "\f3be"; }
+
+.fa-level-down-alt::before {
+  content: "\f3be"; }
+
+.fa-square-s::before {
+  content: "\e27d"; }
+
+.fa-rectangle-barcode::before {
+  content: "\f463"; }
+
+.fa-barcode-alt::before {
+  content: "\f463"; }
+
+.fa-person-walking-arrow-right::before {
+  content: "\e552"; }
+
+.fa-square-envelope::before {
+  content: "\f199"; }
+
+.fa-envelope-square::before {
+  content: "\f199"; }
+
+.fa-dice::before {
+  content: "\f522"; }
+
+.fa-unicorn::before {
+  content: "\f727"; }
+
+.fa-bowling-ball::before {
+  content: "\f436"; }
+
+.fa-pompebled::before {
+  content: "\e43d"; }
+
+.fa-brain::before {
+  content: "\f5dc"; }
+
+.fa-watch-smart::before {
+  content: "\e2cc"; }
+
+.fa-book-user::before {
+  content: "\f7e7"; }
+
+.fa-sensor-cloud::before {
+  content: "\e02c"; }
+
+.fa-sensor-smoke::before {
+  content: "\e02c"; }
+
+.fa-clapperboard-play::before {
+  content: "\e132"; }
+
+.fa-bandage::before {
+  content: "\f462"; }
+
+.fa-band-aid::before {
+  content: "\f462"; }
+
+.fa-calendar-minus::before {
+  content: "\f272"; }
+
+.fa-circle-xmark::before {
+  content: "\f057"; }
+
+.fa-times-circle::before {
+  content: "\f057"; }
+
+.fa-xmark-circle::before {
+  content: "\f057"; }
+
+.fa-circle-4::before {
+  content: "\e0f1"; }
+
+.fa-gifts::before {
+  content: "\f79c"; }
+
+.fa-album-collection::before {
+  content: "\f8a0"; }
+
+.fa-hotel::before {
+  content: "\f594"; }
+
+.fa-earth-asia::before {
+  content: "\f57e"; }
+
+.fa-globe-asia::before {
+  content: "\f57e"; }
+
+.fa-id-card-clip::before {
+  content: "\f47f"; }
+
+.fa-id-card-alt::before {
+  content: "\f47f"; }
+
+.fa-magnifying-glass-plus::before {
+  content: "\f00e"; }
+
+.fa-search-plus::before {
+  content: "\f00e"; }
+
+.fa-thumbs-up::before {
+  content: "\f164"; }
+
+.fa-cloud-showers::before {
+  content: "\f73f"; }
+
+.fa-user-clock::before {
+  content: "\f4fd"; }
+
+.fa-onion::before {
+  content: "\e427"; }
+
+.fa-clock-twelve-thirty::before {
+  content: "\e359"; }
+
+.fa-arrow-down-to-dotted-line::before {
+  content: "\e095"; }
+
+.fa-hand-dots::before {
+  content: "\f461"; }
+
+.fa-allergies::before {
+  content: "\f461"; }
+
+.fa-file-invoice::before {
+  content: "\f570"; }
+
+.fa-window-minimize::before {
+  content: "\f2d1"; }
+
+.fa-rectangle-wide::before {
+  content: "\f2fc"; }
+
+.fa-comment-arrow-up::before {
+  content: "\e144"; }
+
+.fa-garlic::before {
+  content: "\e40e"; }
+
+.fa-mug-saucer::before {
+  content: "\f0f4"; }
+
+.fa-coffee::before {
+  content: "\f0f4"; }
+
+.fa-brush::before {
+  content: "\f55d"; }
+
+.fa-tree-decorated::before {
+  content: "\f7dc"; }
+
+.fa-mask::before {
+  content: "\f6fa"; }
+
+.fa-calendar-heart::before {
+  content: "\e0d3"; }
+
+.fa-magnifying-glass-minus::before {
+  content: "\f010"; }
+
+.fa-search-minus::before {
+  content: "\f010"; }
+
+.fa-flower::before {
+  content: "\f7ff"; }
+
+.fa-ruler-vertical::before {
+  content: "\f548"; }
+
+.fa-user-large::before {
+  content: "\f406"; }
+
+.fa-user-alt::before {
+  content: "\f406"; }
+
+.fa-starship-freighter::before {
+  content: "\e03a"; }
+
+.fa-train-tram::before {
+  content: "\e5b4"; }
+
+.fa-bridge-suspension::before {
+  content: "\e4cd"; }
+
+.fa-trash-check::before {
+  content: "\e2af"; }
+
+.fa-user-nurse::before {
+  content: "\f82f"; }
+
+.fa-boombox::before {
+  content: "\f8a5"; }
+
+.fa-syringe::before {
+  content: "\f48e"; }
+
+.fa-cloud-sun::before {
+  content: "\f6c4"; }
+
+.fa-shield-exclamation::before {
+  content: "\e247"; }
+
+.fa-stopwatch-20::before {
+  content: "\e06f"; }
+
+.fa-square-full::before {
+  content: "\f45c"; }
+
+.fa-grip-dots::before {
+  content: "\e410"; }
+
+.fa-comment-exclamation::before {
+  content: "\f4af"; }
+
+.fa-pen-swirl::before {
+  content: "\e214"; }
+
+.fa-falafel::before {
+  content: "\e40a"; }
+
+.fa-circle-2::before {
+  content: "\e0ef"; }
+
+.fa-magnet::before {
+  content: "\f076"; }
+
+.fa-jar::before {
+  content: "\e516"; }
+
+.fa-gramophone::before {
+  content: "\f8bd"; }
+
+.fa-dice-d12::before {
+  content: "\f6ce"; }
+
+.fa-note-sticky::before {
+  content: "\f249"; }
+
+.fa-sticky-note::before {
+  content: "\f249"; }
+
+.fa-down::before {
+  content: "\f354"; }
+
+.fa-arrow-alt-down::before {
+  content: "\f354"; }
+
+.fa-hundred-points::before {
+  content: "\e41c"; }
+
+.fa-100::before {
+  content: "\e41c"; }
+
+.fa-paperclip-vertical::before {
+  content: "\e3c2"; }
+
+.fa-wind-warning::before {
+  content: "\f776"; }
+
+.fa-wind-circle-exclamation::before {
+  content: "\f776"; }
+
+.fa-location-pin-slash::before {
+  content: "\f60c"; }
+
+.fa-map-marker-slash::before {
+  content: "\f60c"; }
+
+.fa-face-sad-sweat::before {
+  content: "\e38a"; }
+
+.fa-bug-slash::before {
+  content: "\e490"; }
+
+.fa-cupcake::before {
+  content: "\e402"; }
+
+.fa-light-switch-off::before {
+  content: "\e018"; }
+
+.fa-toggle-large-off::before {
+  content: "\e5b0"; }
+
+.fa-pen-fancy-slash::before {
+  content: "\e210"; }
+
+.fa-truck-container::before {
+  content: "\f4dc"; }
+
+.fa-boot::before {
+  content: "\f782"; }
+
+.fa-arrow-up-from-water-pump::before {
+  content: "\e4b6"; }
+
+.fa-file-check::before {
+  content: "\f316"; }
+
+.fa-bone::before {
+  content: "\f5d7"; }
+
+.fa-cards-blank::before {
+  content: "\e4df"; }
+
+.fa-circle-3::before {
+  content: "\e0f0"; }
+
+.fa-bench-tree::before {
+  content: "\e2e7"; }
+
+.fa-keyboard-brightness-low::before {
+  content: "\e1c1"; }
+
+.fa-ski-boot-ski::before {
+  content: "\e3cd"; }
+
+.fa-brain-circuit::before {
+  content: "\e0c6"; }
+
+.fa-user-injured::before {
+  content: "\f728"; }
+
+.fa-block-brick-fire::before {
+  content: "\e3dc"; }
+
+.fa-firewall::before {
+  content: "\e3dc"; }
+
+.fa-face-sad-tear::before {
+  content: "\f5b4"; }
+
+.fa-sad-tear::before {
+  content: "\f5b4"; }
+
+.fa-plane::before {
+  content: "\f072"; }
+
+.fa-tent-arrows-down::before {
+  content: "\e581"; }
+
+.fa-exclamation::before {
+  content: "\21"; }
+
+.fa-arrows-spin::before {
+  content: "\e4bb"; }
+
+.fa-face-smile-relaxed::before {
+  content: "\e392"; }
+
+.fa-comment-xmark::before {
+  content: "\f4b5"; }
+
+.fa-comment-times::before {
+  content: "\f4b5"; }
+
+.fa-print::before {
+  content: "\f02f"; }
+
+.fa-turkish-lira-sign::before {
+  content: "\e2bb"; }
+
+.fa-try::before {
+  content: "\e2bb"; }
+
+.fa-turkish-lira::before {
+  content: "\e2bb"; }
+
+.fa-face-nose-steam::before {
+  content: "\e382"; }
+
+.fa-circle-waveform-lines::before {
+  content: "\e12d"; }
+
+.fa-waveform-circle::before {
+  content: "\e12d"; }
+
+.fa-dollar-sign::before {
+  content: "\24"; }
+
+.fa-dollar::before {
+  content: "\24"; }
+
+.fa-usd::before {
+  content: "\24"; }
+
+.fa-ferris-wheel::before {
+  content: "\e174"; }
+
+.fa-computer-speaker::before {
+  content: "\f8b2"; }
+
+.fa-skull-cow::before {
+  content: "\f8de"; }
+
+.fa-x::before {
+  content: "\58"; }
+
+.fa-magnifying-glass-dollar::before {
+  content: "\f688"; }
+
+.fa-search-dollar::before {
+  content: "\f688"; }
+
+.fa-users-gear::before {
+  content: "\f509"; }
+
+.fa-users-cog::before {
+  content: "\f509"; }
+
+.fa-person-military-pointing::before {
+  content: "\e54a"; }
+
+.fa-building-columns::before {
+  content: "\f19c"; }
+
+.fa-bank::before {
+  content: "\f19c"; }
+
+.fa-institution::before {
+  content: "\f19c"; }
+
+.fa-museum::before {
+  content: "\f19c"; }
+
+.fa-university::before {
+  content: "\f19c"; }
+
+.fa-circle-t::before {
+  content: "\e124"; }
+
+.fa-sack::before {
+  content: "\f81c"; }
+
+.fa-grid-2::before {
+  content: "\e196"; }
+
+.fa-camera-cctv::before {
+  content: "\f8ac"; }
+
+.fa-cctv::before {
+  content: "\f8ac"; }
+
+.fa-umbrella::before {
+  content: "\f0e9"; }
+
+.fa-trowel::before {
+  content: "\e589"; }
+
+.fa-horizontal-rule::before {
+  content: "\f86c"; }
+
+.fa-bed-front::before {
+  content: "\f8f7"; }
+
+.fa-bed-alt::before {
+  content: "\f8f7"; }
+
+.fa-d::before {
+  content: "\44"; }
+
+.fa-stapler::before {
+  content: "\e5af"; }
+
+.fa-masks-theater::before {
+  content: "\f630"; }
+
+.fa-theater-masks::before {
+  content: "\f630"; }
+
+.fa-kip-sign::before {
+  content: "\e1c4"; }
+
+.fa-face-woozy::before {
+  content: "\e3a2"; }
+
+.fa-cloud-question::before {
+  content: "\e492"; }
+
+.fa-pineapple::before {
+  content: "\e31f"; }
+
+.fa-hand-point-left::before {
+  content: "\f0a5"; }
+
+.fa-gallery-thumbnails::before {
+  content: "\e3aa"; }
+
+.fa-circle-j::before {
+  content: "\e112"; }
+
+.fa-eyes::before {
+  content: "\e367"; }
+
+.fa-handshake-simple::before {
+  content: "\f4c6"; }
+
+.fa-handshake-alt::before {
+  content: "\f4c6"; }
+
+.fa-page-caret-up::before {
+  content: "\e42a"; }
+
+.fa-file-caret-up::before {
+  content: "\e42a"; }
+
+.fa-jet-fighter::before {
+  content: "\f0fb"; }
+
+.fa-fighter-jet::before {
+  content: "\f0fb"; }
+
+.fa-comet::before {
+  content: "\e003"; }
+
+.fa-square-share-nodes::before {
+  content: "\f1e1"; }
+
+.fa-share-alt-square::before {
+  content: "\f1e1"; }
+
+.fa-shield-keyhole::before {
+  content: "\e248"; }
+
+.fa-barcode::before {
+  content: "\f02a"; }
+
+.fa-plus-minus::before {
+  content: "\e43c"; }
+
+.fa-square-sliders-vertical::before {
+  content: "\f3f2"; }
+
+.fa-sliders-v-square::before {
+  content: "\f3f2"; }
+
+.fa-video::before {
+  content: "\f03d"; }
+
+.fa-video-camera::before {
+  content: "\f03d"; }
+
+.fa-message-middle::before {
+  content: "\e1e1"; }
+
+.fa-comment-middle-alt::before {
+  content: "\e1e1"; }
+
+.fa-graduation-cap::before {
+  content: "\f19d"; }
+
+.fa-mortar-board::before {
+  content: "\f19d"; }
+
+.fa-hand-holding-medical::before {
+  content: "\e05c"; }
+
+.fa-person-circle-check::before {
+  content: "\e53e"; }
+
+.fa-square-z::before {
+  content: "\e288"; }
+
+.fa-message-text::before {
+  content: "\e1e6"; }
+
+.fa-comment-alt-text::before {
+  content: "\e1e6"; }
+
+.fa-turn-up::before {
+  content: "\f3bf"; }
+
+.fa-level-up-alt::before {
+  content: "\f3bf"; }
+
+.sr-only,
+.fa-sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  white-space: nowrap;
+  border-width: 0; }
+
+.sr-only-focusable:not(:focus),
+.fa-sr-only-focusable:not(:focus) {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  white-space: nowrap;
+  border-width: 0; }
diff --git a/static/font-awesomepro/regular.css b/static/font-awesomepro/regular.css
new file mode 100644 (file)
index 0000000..131a768
--- /dev/null
@@ -0,0 +1,25 @@
+/*!
+ * Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license (Commercial License)
+ * Copyright 2022 Fonticons, Inc.
+ */
+:root,
+:host {
+  --fa-style-family-classic: "Font Awesome 6 Pro";
+  --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Pro";
+}
+
+@font-face {
+  font-family: "Font Awesome 6 Pro";
+  font-style: normal;
+  font-weight: 400;
+  font-display: block;
+  src:
+    url("./fa-regular-400.woff2") format("woff2"),
+    url("./fa-regular-400.ttf") format("truetype");
+}
+
+.far,
+.fa-regular {
+  font-weight: 400;
+}
diff --git a/static/font-awesomepro/solid.css b/static/font-awesomepro/solid.css
new file mode 100644 (file)
index 0000000..25262a5
--- /dev/null
@@ -0,0 +1,25 @@
+/*!
+ * Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license (Commercial License)
+ * Copyright 2022 Fonticons, Inc.
+ */
+:root,
+:host {
+  --fa-style-family-classic: "Font Awesome 6 Pro";
+  --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Pro";
+}
+
+@font-face {
+  font-family: "Font Awesome 6 Pro";
+  font-style: normal;
+  font-weight: 900;
+  font-display: block;
+  src:
+    url("./fa-solid-900.woff2") format("woff2"),
+    url("./fa-solid-900.ttf") format("truetype");
+}
+
+.fas,
+.fa-solid {
+  font-weight: 900;
+}
diff --git a/static/fonts/gotham_bold-webfont.woff b/static/fonts/gotham_bold-webfont.woff
new file mode 100755 (executable)
index 0000000..ad478bf
Binary files /dev/null and b/static/fonts/gotham_bold-webfont.woff differ
diff --git a/static/fonts/gotham_bold-webfont.woff2 b/static/fonts/gotham_bold-webfont.woff2
new file mode 100755 (executable)
index 0000000..9f35dce
Binary files /dev/null and b/static/fonts/gotham_bold-webfont.woff2 differ
diff --git a/static/fonts/gotham_book-webfont.woff b/static/fonts/gotham_book-webfont.woff
new file mode 100755 (executable)
index 0000000..8b67e14
Binary files /dev/null and b/static/fonts/gotham_book-webfont.woff differ
diff --git a/static/fonts/gotham_book-webfont.woff2 b/static/fonts/gotham_book-webfont.woff2
new file mode 100755 (executable)
index 0000000..bc30eee
Binary files /dev/null and b/static/fonts/gotham_book-webfont.woff2 differ
diff --git a/static/fonts/gotham_medium-webfont.woff b/static/fonts/gotham_medium-webfont.woff
new file mode 100755 (executable)
index 0000000..4c204fd
Binary files /dev/null and b/static/fonts/gotham_medium-webfont.woff differ
diff --git a/static/fonts/gotham_medium-webfont.woff2 b/static/fonts/gotham_medium-webfont.woff2
new file mode 100755 (executable)
index 0000000..e6bee20
Binary files /dev/null and b/static/fonts/gotham_medium-webfont.woff2 differ
diff --git a/static/img/figures/cloud.png b/static/img/figures/cloud.png
new file mode 100644 (file)
index 0000000..ec99eee
Binary files /dev/null and b/static/img/figures/cloud.png differ
diff --git a/static/img/figures/small-cloud.png b/static/img/figures/small-cloud.png
new file mode 100644 (file)
index 0000000..723fe4e
Binary files /dev/null and b/static/img/figures/small-cloud.png differ
diff --git a/static/img/figures/xen-panda-kungfu.png b/static/img/figures/xen-panda-kungfu.png
new file mode 100644 (file)
index 0000000..8786462
Binary files /dev/null and b/static/img/figures/xen-panda-kungfu.png differ
diff --git a/static/img/figures/xen-panda-winged.png b/static/img/figures/xen-panda-winged.png
new file mode 100644 (file)
index 0000000..14dcf19
Binary files /dev/null and b/static/img/figures/xen-panda-winged.png differ
diff --git a/static/img/figures/xen-panda-zen.png b/static/img/figures/xen-panda-zen.png
new file mode 100644 (file)
index 0000000..04c29a7
Binary files /dev/null and b/static/img/figures/xen-panda-zen.png differ
diff --git a/static/img/flatline/brainstorming-session.svg b/static/img/flatline/brainstorming-session.svg
new file mode 100644 (file)
index 0000000..943c1b4
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 563.1 389"><g class="layer"><g class="layer"><path fill="#fff" d="M209.5 244.3s-7-6.9-7.6-8.8c-.7-2-2-14.8-4.6-13.2-2.7 1.7-2.1 12-2.1 12s-9.8-14.7-12.4-13.3c-2.7 1.4-6.7 9-6.3 11.7a123 123 0 0 0 23.7 25.7l9.3-14v-.1z"/><path fill="#242424" d="M200.3 259.1h-.5c-5.7-3.6-23.8-23.3-24.2-26.4-.3-3.1 4-11 6.7-12.5 2.6-1.3 8 5.7 12 11.3 0-3.4.3-8.6 2.5-9.9a1.7 1.7 0 0 1 1.5-.1c1.8.8 2.7 5.2 3.7 10.8l.6 3a52.4 52.4 0 0 0 7.6 9v.5l-9.3 14-.3.2-.3.2v-.1zm-17-37.4c-2.5 1.2-6.2 8.6-6 10.8.3 2.1 16.3 20.1 22.8 24.6l8.3-12.7a47.5 47.5 0 0 1-7.3-8.7l-.7-3.1c-.4-2.3-1.6-9.2-2.7-9.6-1.5 1-2 7.2-1.7 11.3l-.1.5c-.1.1-.3.3-.5.3h-.5a.7.7 0 0 1-.4-.3c-4.6-7.1-9.9-13.1-11.3-13.1h.1z"/><path fill="#85C241" d="M283.6 198.6s-47 62.6-53.7 56.2a207 207 0 0 0-23.4-16.9l-13.6 19s40.8 38 54.5 32.6c13.7-5.4 53.2-56.8 53.2-56.8l-17-34.2v.1z"/><path fill="#fff" d="M255.3 233.5c-3.3-2-7.6-4.1-10.4-6.8-4.5-4.3-7.4-10.8-11.6-15.5-.5.4-1 1-1.1 1.6-.3.6-.3 1.3-.2 2 .4 1.2.9 2.5 1.6 3.6 1.2 2.5 2.1 5.2 2.7 8a96.8 96.8 0 0 0-24-3.8 7.8 7.8 0 0 0 1.2 7.1 46.7 46.7 0 0 0 13.3 10.6c6.4 3.1 14 3.3 19.2 8.3 2.4 2.3 7 4.5 9.4 1.7a60 60 0 0 0 0-16.7l-.1-.1z"/><path fill="#242424" d="M252.4 252.5c-2.7-.3-5.1-1.4-7-3.3-3.1-3-7.1-4.2-11.4-5.4-2.6-.8-5-1.7-7.5-2.8a46.5 46.5 0 0 1-13.7-10.8 8.6 8.6 0 0 1-1.2-8 .9.9 0 0 1 .8-.5c7.7.2 15.4 1.3 22.8 3.4-.6-2.2-1.4-4.4-2.4-6.4l-.2-.5c-.7-1-1.1-2.2-1.4-3.4a4.3 4.3 0 0 1 1.7-4.4l.6-.2a65.3 65.3 0 0 1 5.6 7.4c1.8 3 4 5.8 6.4 8.4 2.2 1.9 4.7 3.6 7.4 5l3 1.7c.3.3.4.7.5 1.3.3 2 1 15.1-.3 16.7a4.7 4.7 0 0 1-3.4 1.6l-.4.1.1.1zM213 223.4a7.3 7.3 0 0 0 1.2 5.8 46.5 46.5 0 0 0 13 10.3c2.4 1 4.8 2 7.3 2.6 4.2 1.3 8.6 2.6 12 5.9a9.3 9.3 0 0 0 6 2.7 3 3 0 0 0 2.3-1c.6-1.3.4-13.4-.1-15.6-.9-.5-1.8-1-2.7-1.7a40 40 0 0 1-7.7-5.2 49.6 49.6 0 0 1-6.7-8.7 67.1 67.1 0 0 0-4.4-6.2c-.4.6-.6 1.4-.4 2.2.2 1 .6 2 1.2 3l.2.4a31.6 31.6 0 0 1 2.8 8.6l-.2.3-.4.2h-.4a95 95 0 0 0-23-3.6z"/><path fill="#fff" d="M332.2 97.5a21.8 21.8 0 0 1 17.7 15.7c1.6 6.5.5 14.1 5 19.1a12.3 12.3 0 0 0 10.8 3.7c4-.7 7.5-2.8 10-5.9a20.7 20.7 0 0 1-9.6 20.9 25.2 25.2 0 0 1-20.5 1.5 48.5 48.5 0 0 1-18-11.4 46.4 46.4 0 0 1-15-29c-1.4-10.8 10.2-16.1 19.7-14.8l-.1.2z"/><path fill="#242424" d="M354.4 154.9a29 29 0 0 1-9.2-1.5 49 49 0 0 1-18.2-11.7 47.3 47.3 0 0 1-15.4-29.5 12.5 12.5 0 0 1 3.7-10.7 21 21 0 0 1 17-5 22.9 22.9 0 0 1 18.4 16.4c.5 2.3.9 4.6 1 7 .6 4.5 1 8.7 3.8 11.8a11.5 11.5 0 0 0 10 3.4c3.7-.7 7.1-2.7 9.5-5.6.1-.2.2-.3.4-.3a.8.8 0 0 1 1 .7 21.4 21.4 0 0 1-10 21.6 23.8 23.8 0 0 1-12 3.4zm-25.2-56.8c-4.7-.1-9.2 1.5-12.8 4.6a10.7 10.7 0 0 0-3.2 9.3c1.4 11 6.7 21.2 15 28.5 5 5 11 8.9 17.5 11.3a24.8 24.8 0 0 0 20-1.5 20 20 0 0 0 9.4-18.3 16.8 16.8 0 0 1-9.3 4.9 13.1 13.1 0 0 1-11.5-4c-3.1-3.5-3.7-8.3-4.1-12.8-.2-2.3-.6-4.5-1.1-6.7a20.5 20.5 0 0 0-19.8-15.3h-.1z"/><path fill="#242424" d="M322.9 114.3c-2-3-5-5.4-8.3-6.7a15.2 15.2 0 0 0-10.6.8 7 7 0 0 0-2.1 1.9 7.5 7.5 0 0 0 .1 5.9c2.2 6.6 9.9 21.3 18.3 21 11.9-.5 6.6-17.7 2.6-23v.1z"/><path fill="#242424" d="M320 138.1c-8.7 0-16.4-14.4-18.7-21.5a8 8 0 0 1 0-6.6 7.4 7.4 0 0 1 5.3-3.3c2.7-.7 5.6-.6 8.3.2 3.5 1.3 6.5 3.7 8.7 6.8 2.8 3.8 6.6 14 3.9 20a7.6 7.6 0 0 1-7.1 4.3h-.4v.1zm-9.5-30.3a17 17 0 0 0-6 1.3 6 6 0 0 0-1.8 1.6 6.8 6.8 0 0 0 .2 5.3c2.1 6.5 9.5 20.7 17.4 20.3a5.9 5.9 0 0 0 5.7-3.3c2.4-5.2-1-14.8-3.8-18.3-1.9-2.9-4.6-5-7.8-6.3-1.3-.4-2.6-.6-3.9-.6zm54.1 218.1 8.6 50.3-92.8-7-1.3-61 85.4 17.7h.1z"/><path fill="#242424" d="m373.2 377-92.8-7a.8.8 0 0 1-.8-.7l-1.2-61.1v-.4l.3-.3.3-.2h.4l85.4 17.7.4.3.2.4 8.7 50.3v.4l-.2.3-.3.2h-.3l-.1.1zm-92-8.5 91 6.8-8.3-48.8-83.8-17.3 1.1 59.3z"/><path fill="#85C241" d="M326.9 190.3s21.4 10 33.5 39.1c6.5 15.4 8.6 101.8 8.6 101.8s-62.6 14-92.5-2.6c0 0 1-40.3-2.1-67.6-1.7-14-2-43.7 4.7-56.5 9.2-17.3 31.2-13.3 47.8-14.2z"/><path fill="#242424" d="M276.6 288.9c-.3 0-.5 0-.6-.2a1056.3 1056.3 0 0 0-2.8-50.6c-1.4-10.6 5-26.5 5.2-27.2a.8.8 0 0 1 .4-.5h.7a.9.9 0 0 1 .4 1.1c0 .2-6.4 16.2-5.1 26.4 1.3 10.2 2.6 49.8 2.6 50.2v.3l-.2.3-.3.2h-.3z"/><path fill="#fff" d="m320.7 121-1.8-3c-5.6-8.7-16-9.7-25.2-6.2-1.8.7-3.7 1.8-4 3.8-3.7-1.7-8.2 0-11 3-8.8 9.5-8.5 24.7-5.5 36.5a20 20 0 0 0 3.2 7.7c1.7 2.1 3.8 3.8 6.3 5 16.6 8.6 41.2 1.9 45-18.3 1.7-9.5-2-20-7-28.5z"/><path fill="#242424" d="M298.2 172.2c-5.5 0-11-1.3-15.9-3.7-2.6-1.2-4.8-3-6.6-5.2a22 22 0 0 1-3.4-8c-1.8-7.4-5-25.7 5.8-37.3 2.5-2.7 7-4.8 11-3.5a7 7 0 0 1 4.3-3.5c8.5-3.3 19.8-3.2 26.2 6.6l1.8 3c3.5 6.1 9 18 7 29a26.5 26.5 0 0 1-15 19.2 35 35 0 0 1-15.2 3.4zm-11.6-56.5c-2.7.2-5.3 1.4-7.2 3.5-10.2 11-7.2 28.6-5.4 35.7a20 20 0 0 0 3 7.4 17 17 0 0 0 6.1 4.7 34.2 34.2 0 0 0 29.7.3 25 25 0 0 0 14-18c2-10.6-3.3-22-6.7-27.9l-1.8-2.9c-5.8-9-16.3-9-24.2-6-1.5.6-3.4 1.6-3.5 3.2l-.2.3-.3.3h-.7c-.9-.4-1.8-.6-2.8-.6z"/><path fill="#fff" d="m292.9 173.1 1.3 16.4s4.8 3.7 15.3 0c10.6-3.5 11-6.3 11-6.3l-3-30.4c0-1.3-5.1-5.5-6.2-6.4-2.8-2.4-6-4.5-9.4-6.2l-4.5-2.4a13.2 13.2 0 0 1-5.7-11.4 12.8 12.8 0 0 1-3.3 10c-1.7 1.8-4 3-5.6 5-2.8 3.5-1.6 6.6-1.2 10.6.5 4.6-.1 9.1.9 13.7 1.7 8.1 10.2 7.3 10.4 7.4z"/><path fill="#242424" d="M301 192c-2.6.1-5.1-.5-7.3-1.9a.8.8 0 0 1-.3-.6l-1.3-15.6c-5.7-.2-9.4-3-10.5-8-.5-2.6-.8-5.3-.7-8 0-2 0-3.8-.2-5.7l-.3-1.6c-.5-3.3-1-6.3 1.7-9.6 1-1.1 2-2.1 3.2-3a22 22 0 0 0 2.4-2.1 12 12 0 0 0 3.2-9.5l.2-.6.6-.2c.2 0 .4 0 .6.2l.2.5v2a12.4 12.4 0 0 0 5.3 8.8c1 .8 2.1 1.4 3.3 1.9l1 .5c3.5 1.7 6.7 3.8 9.7 6.3l.3.3c5 4.3 6 5.8 6.2 6.7l3 30.3v.2c-.2.6-1.1 3.5-11.6 7.1-2.8 1-5.7 1.5-8.7 1.6zm-6-3c1.2.6 5.8 2.7 14.3-.2 8.5-3 10.1-5.3 10.4-5.8l-3-30.1c0-.2-.8-1.5-5.6-5.6l-.3-.3a42.2 42.2 0 0 0-9.2-6l-1-.6a28 28 0 0 1-3.7-2c-2.3-1.5-4-3.8-5-6.3-.6 1.8-1.6 3.4-3 4.8-.7.8-1.6 1.6-2.5 2.3l-3 2.7c-2.1 2.8-1.8 5.2-1.3 8.4a71.4 71.4 0 0 1 .5 7.6c0 2.6.2 5.2.7 7.8 1 4.3 4.1 6.5 9.3 6.6.3 0 .5 0 .8.2 0 0 .2.1.2.3l.1.3L295 189z"/><path fill="#fff" d="M311.2 152.8a7 7 0 0 1 2-4 12 12 0 0 1 3.6-2.2 5 5 0 0 1 2.2-.6c.6 0 1.1.2 1.6.4 1.2.5 2.2 1.3 2.9 2.5.4 1 .5 2 .4 3a13 13 0 0 1-.5 3.4 8.5 8.5 0 0 1-4.3 5c-2 1-4.4 1.2-6.6.4"/><path fill="#242424" d="M315.2 162.1c-1 0-2-.2-3-.5a1 1 0 0 1-.2-.2l-.2-.2-.1-.3v-.4l.2-.2a.9.9 0 0 1 .6-.3h.3a7.7 7.7 0 0 0 9.8-5c.3-1 .5-2 .5-3.1 0-1 0-1.8-.4-2.7a4 4 0 0 0-2.4-2c-.4-.2-.8-.4-1.3-.4a3 3 0 0 0-1.8.6c-1.3.5-2.4 1.2-3.4 2-1 1-1.6 2.2-1.8 3.6 0 .2-.1.4-.3.5l-.6.2a.8.8 0 0 1-.6-.4.9.9 0 0 1-.1-.6 7 7 0 0 1 2.3-4.4c1-1 2.4-1.9 3.8-2.5.8-.4 1.7-.6 2.6-.7.6 0 1.3.2 1.9.5 1.4.5 2.6 1.6 3.3 2.9a7 7 0 0 1 .5 3.5c0 1.2-.2 2.4-.5 3.5a9.3 9.3 0 0 1-9 6.6h-.1z"/><path fill="#fff" d="M294.7 146.1s-5.2 8.7-3.7 10.1c1.4 1.4 5.1.2 5.1.2"/><path fill="#242424" d="M293.2 157.7c-1 0-2-.2-2.8-.9-1.6-1.5 1-7 3.6-11.2a.9.9 0 0 1 1-.2c.3.1.4.3.5.5v.6c-2.5 4-4.3 8.3-3.9 9.2.8.7 3.2.3 4.3 0h.6l.4.5a.8.8 0 0 1-.5 1c-1 .3-2.1.5-3.2.5zm8.8-12.2c.7-.2 1.2-1.1 1-2.2-.1-1-.8-1.9-1.6-1.8-.8.2-1.3 1.1-1.1 2.2.1 1 .9 1.8 1.7 1.7v.1zm-13.4 1.3c.8 0 1.4-.9 1.4-2 0-1-.6-2-1.4-2-.8 0-1.4 1-1.4 2 0 1.1.7 2 1.4 2zm4.3 26.3s10.4 1.5 16.1-2.4c0 0-5.5 14.3-15.2 13.6l-1-11.3.1.1z"/><path fill="#242424" d="M294.4 185.2h-.7a.8.8 0 0 1-.5-.3.8.8 0 0 1-.2-.5l-1-11.3v-.3l.3-.3.3-.2h.4s10.1 1.4 15.5-2.3l.5-.2c.2 0 .4 0 .5.2.2.1.3.3.3.4v.5c-.2.6-5.6 14.3-15.4 14.3zm-.6-11.2.8 9.5c6.3-.1 10.7-7.2 12.6-11-4.3 1.5-8.9 2-13.4 1.5z"/><path fill="#fff" d="m286.9 189.5-1.6 7.5 41.6-6.7-3.2-8.2-36.8 7.5v-.1z"/><path fill="#242424" d="M285.3 197.8h-.3a.7.7 0 0 1-.3-.2.7.7 0 0 1-.2-.4v-.4l1.7-7.4.2-.5.4-.2 36.8-7.4h.6l.4.5 3.2 8.2v.7l-.3.3-.3.1-41.7 6.7h-.2zm2.3-7.6-1.2 5.8 39.4-6.4-2.6-6.6-35.6 7.2zm4.7-20.9-1-.2c-3.6-1.5-2-8-1.8-8.8 0-.2.2-.4.3-.5l.5-.2c6.9.4 7 .5 7.2 1 .2.7-1.3 5.8-3 7.6a3 3 0 0 1-1 .8l-1.2.3zm-1.3-8c-.4 2-.7 5.6 1 6.2h.4l.4-.1c1.4-.9 2.6-4.2 3-5.8l-4.8-.3z"/><path fill="#85C241" d="m341.6 226.9-19.7 29.4c-3.2 5-69.3-29-69.3-29l-10 22.3s93.9 62.6 98.5 51.7c4.7-11 14.3-55 14.3-55"/><path fill="#242424" d="M315.2 255.6c-10.5 0-51.5-20.4-56.3-22.9a.8.8 0 0 1-.4-.4v-.7l.5-.4h.6c20 10 51.4 24.4 56.5 22.6 5.6-1.9 18-28 22.3-38l.4-.4h.7c.2.1.4.3.4.5v.6c-1.6 3.7-16 36.4-23.3 39l-1.4.1z"/><path fill="#242424" d="M324 293.9c-21.6 0-77.7-40.7-80.3-42.5l-.2-.3a1 1 0 0 1-.1-.3v-.3l.1-.3.3-.2.3-.1h.3l.3.1c.7.5 66.8 48.5 83 41.7 5.6-2.4 24.6-32.4 31.4-43.8l.5-.4a.9.9 0 0 1 1 .3v.9c-1 1.7-25 41.5-32.2 44.5a11 11 0 0 1-4.4.7zm-128.8-48.8h-.5a.8.8 0 0 1-.3-.5c-2.7-6.3 0-10.5 0-10.7l.2-.3.3-.1h.4l.3.1.2.2.2.3a.8.8 0 0 1-.2.7c0 .2-2.2 3.7 0 9.2v.6c0 .1 0 .2-.2.3l-.2.2h-.2z"/><path fill="#fff" d="M82.3 193.5H42.8a32 32 0 0 0-31.4 37.7l28.2 156.7H144l-30.3-168a32 32 0 0 0-31.4-26.3v-.1z"/><path fill="#242424" d="M144 388.8H39.6a1 1 0 0 1-.6-.2.9.9 0 0 1-.2-.5L10.5 231.5a32.8 32.8 0 0 1 32.3-38.6h39.5a32.8 32.8 0 0 1 32.2 27l30.4 168v.4l-.2.3-.3.2-.3.1h-.1v-.1zm-103.7-1.7H143l-30-167a31.1 31.1 0 0 0-30.7-25.6H42.8a31.2 31.2 0 0 0-30.6 36.7l28 156 .1-.1z"/><path fill="#fff" d="M158.4 292.8s3.1 43.6 6.3 44.7a621 621 0 0 0 35 4.2l-3.3 16.8s-61.6 3.1-64.7-8.2c-3-11.2-6.8-65.8-6.8-65.8l33.5 8.3z"/><path fill="#242424" d="M177.6 359.7c-18.7 0-44.6-1.4-46.8-9.2-3.1-11.2-6.6-63.7-6.8-66v-.4l.3-.3a.8.8 0 0 1 .7-.1l33.6 8.3.4.3.2.4c1.5 20.5 4 42.5 5.8 44a596 596 0 0 0 35.2 4.2.8.8 0 0 1 .4.6v.3l-3.3 16.8c0 .2-.2.3-.3.5l-.5.2c-2.2 0-9.7.4-19 .4h.1zm-52-74.2c.6 7.9 3.9 54.3 6.7 64.4 2.4 8.7 45.8 8.4 63.3 7.6l3.1-15.2c-5.4-.6-31.4-3.2-34.4-4.2s-5.6-28.2-6.8-44.8l-31.9-7.8z"/><path fill="#85C241" d="M129.4 229.3c.5 1.1 19.7 10.5 28.3 34 8.7 23.7 9 36.6 9 36.6h-49l11.7-70.6z"/><path fill="#85C241" d="M87.6 225.8s-18 5.1-21.6 13.5c-3.6 8.4 3.8 121.2 3.8 121.2l84.4 2.6s-13-54-9-68.1c4.3-14.2.6-43-1-50.9-1.5-7.9-17.3-15.2-22.5-18.3-5.2-3.1-34 0-34 0h-.1z"/><path fill="#242424" d="M115.2 362.8h-.2a.8.8 0 0 1-.5-.3.9.9 0 0 1-.1-.6 466.4 466.4 0 0 0 5.5-119 .9.9 0 0 1 .9-.3l.2.2.3.2v.3c0 .5 6 49.7-5.3 119a.8.8 0 0 1-.8.5z"/><path fill="#fff" d="m92.9 197.5-.7-1.6c-.8-2.1-2.5-3.3-3.5-5.4-1.9-3.7-1.2-7.2-1.4-11.2-.3-5 .7-10 2.8-14.4.8-2 2.2-3.7 4-4.9a5 5 0 0 1 5.9.5 5.7 5.7 0 0 1 1.1-6.1c1.6-1.6 3.5-2.8 5.6-3.5 3.1-1.4 6.5-2.2 10-2.4a13.1 13.1 0 0 1 9.4 3.7c2.3 2.4 3.3 5.8 5 8.7 1.7 3 5 5.6 8.2 4.7 2.7-.8 4.2-3.5 5.2-6a14.2 14.2 0 0 1-2.8 13.1c2.2-.8 4.3-2.2 6-3.9-.1 2.8-1.2 5.5-3.1 7.5-2.2 2-4.8 3.6-7.7 4.6-1.5.7-3 1-3.7 2.5-.6 1.4.2 3.6-.5 5.3-1 2.8-2.6 5.3-4.6 7.5a21.2 21.2 0 0 1-11.8 6.2 38 38 0 0 1-13.6-.4 19 19 0 0 1-6.7-2.3c-2-1.2-2.4-.7-3.1-2.1v-.1z"/><path fill="#242424" d="M110.9 203.8c-2.8 0-5.6-.3-8.3-.8a20 20 0 0 1-7-2.5l-1.7-.8-1.1-.7-.8-1-.7-1.7c-.4-1-1-2-1.7-2.8-.7-.7-1.2-1.6-1.7-2.4a17.3 17.3 0 0 1-1.5-8.7v-3c-.3-5 .7-10.2 3-14.8.8-2 2.3-3.9 4.3-5.2.7-.4 1.5-.7 2.4-.8.9-.1 1.7 0 2.6.2 0-1.8.6-3.5 1.8-4.9a15 15 0 0 1 5.8-3.7 31 31 0 0 1 10.4-2.4 13.8 13.8 0 0 1 10 4 21 21 0 0 1 3.6 5.7l1.6 3.2c1.6 2.6 4.5 5 7.3 4.2 1.9-.5 3.3-2.3 4.6-5.5 0-.2.2-.3.3-.4.2-.1.3-.2.5-.1l.5.1c.1.1.3.3.3.5 1 3.7.7 7.7-1.1 11.2 1-.7 2-1.4 2.8-2.3.1-.2.3-.2.4-.3h.5l.4.4.2.5c0 3-1.2 5.8-3.3 8-2.3 2.2-5 3.8-8 5l-1 .3c-1.1.5-1.8.7-2.2 1.5a6 6 0 0 0-.2 2.3c.1 1 0 2.1-.3 3-1 3-2.6 5.6-4.7 7.9a22.3 22.3 0 0 1-12.4 6.4c-1.8.3-3.7.4-5.6.4zm-17.3-6.7c.3.6.4.7 1 1a5 5 0 0 1 1.9 1 36.6 36.6 0 0 0 19.7 2.5c4.3-.7 8.3-2.8 11.4-6a22 22 0 0 0 4.4-7.2c.2-.7.3-1.5.2-2.3-.1-1 0-2 .3-3a4.7 4.7 0 0 1 3.3-2.6l.9-.3c2.7-1 5.2-2.5 7.4-4.5 1.2-1.3 2-2.8 2.4-4.5a16 16 0 0 1-4.5 2.5h-.5a.8.8 0 0 1-.5-.3.9.9 0 0 1 0-1.1c2.4-2.7 3.5-6.3 3.2-9.8a7.9 7.9 0 0 1-4.6 4c-3.7 1.1-7.3-1.7-9.2-5l-1.7-3.3c-.8-2-1.9-3.7-3.3-5.3a12 12 0 0 0-8.8-3.4 27 27 0 0 0-9.7 2.3c-2 .7-3.7 1.9-5.2 3.4a5 5 0 0 0-1 5.1v.6c0 .2-.1.4-.3.5a1 1 0 0 1-.5.1 1 1 0 0 1-.6-.2 4 4 0 0 0-4.8-.3c-1.7 1-3 2.6-3.7 4.5-2 4.3-2.9 9-2.6 13.8v3c-.2 2.7.2 5.4 1.3 8l1.5 2.1c.8 1 1.5 2 2 3.3l.7 1.5-.1-.1z"/><path fill="#fff" d="m126.9 219.2 1.6 10.8s-1.6 15.7-13.5 13a25.8 25.8 0 0 1-16.7-13.5L96.8 201s8.7-4.8 6-23.8a59 59 0 0 0 30.8 4s4.3 19.6 3 28.8a10.1 10.1 0 0 1-9.7 9.2z"/><path fill="#242424" d="M117.6 244.1c-1 0-1.9 0-2.8-.3a26.2 26.2 0 0 1-17.2-14v-.3L96.1 201l.1-.4c0-.2.2-.3.3-.4 0 0 8.2-4.8 5.6-22.9a.8.8 0 0 1 1.2-.8 58.4 58.4 0 0 0 31 4l.3.6c.1.8 4.2 19.8 2.9 29a11 11 0 0 1-9.6 10l1.6 9.9v.2c0 .3-1 8.6-6.2 12.3a9.5 9.5 0 0 1-5.7 1.6zm-18.3-14.8a25 25 0 0 0 16 12.8 8.5 8.5 0 0 0 7-1c4.3-3.1 5.3-10 5.4-11l-1.6-10.8v-.3a1 1 0 0 1 .5-.6h.3a9.3 9.3 0 0 0 8.8-8.6c1.2-7.9-2-24-2.7-27.7-9.8 1.3-19.8 0-29-3.5 1.8 15.9-4.4 21.5-6.2 22.8l1.5 27.9z"/><path fill="#fff" d="M120.8 192.7s5.6 10.3 4 11.8c-1.8 1.6-6 0-6 0"/><path fill="#242424" d="M122.3 206.2c-1.3 0-2.6-.3-3.8-.7a.8.8 0 0 1-.5-.5.8.8 0 0 1 .4-1c.2-.2.4-.2.6-.1 1.5.5 4.2 1 5.1.1.6-.8-1.3-5.9-4-10.9a.8.8 0 0 1-.1-.6c0-.2.2-.4.4-.5h.6c.2 0 .4.2.5.3 2.2 4.1 5.7 11.2 3.8 13-.8.6-1.9 1-3 .9zm-7-12.7c.6 0 1.1-1.3 1-2.8 0-1.4-.6-2.6-1.2-2.6-.7 0-1.1 1.2-1 2.7 0 1.5.6 2.7 1.2 2.6v.1zm14.9.5c.7 0 1.1-1.2 1-2.7 0-1.4-.6-2.6-1.2-2.6-.7 0-1.1 1.2-1 2.7 0 1.5.6 2.7 1.2 2.6z"/><path fill="#fff" d="M104.5 196.2c-1-1.8-2.5-3.4-4.1-4.7a5.4 5.4 0 0 0-3-1.3 5 5 0 0 0-2.7.8 9.7 9.7 0 0 0-4.5 6.4c-.3 1.2-.2 2.5.1 3.7.7 1.8 2 3.4 3.7 4.4 1.7 1 3.5 1.8 5.4 2.4"/><path fill="#242424" d="M99.4 208.6h-.3a26 26 0 0 1-5.5-2.4 9.4 9.4 0 0 1-4.1-5 8.5 8.5 0 0 1-.2-4 10.5 10.5 0 0 1 5-7c1-.7 2-1 3.1-1 1.3.2 2.5.7 3.5 1.6 1.8 1.3 3.2 3 4.3 4.8v.7c0 .2-.2.3-.3.4-.2.1-.4.2-.6.1a1 1 0 0 1-.6-.3c-1-1.7-2.3-3.2-3.8-4.4-.7-.6-1.6-1-2.6-1.1a4 4 0 0 0-2.1.6 8.7 8.7 0 0 0-4.2 5.9c-.2 1-.2 2.2.1 3.3.7 1.7 1.8 3 3.4 4a25.6 25.6 0 0 0 5.5 2.4l.2.3a.8.8 0 0 1 0 .6c0 .2-.1.3-.3.4-.1.1-.3.2-.5.1zm27.5 10.6a33 33 0 0 1-20-3.3s10.2 15.6 21.5 13.3l-1.5-10z"/><path fill="#242424" d="M126.2 230.4c-10.7 0-19.5-13.3-20-14a1 1 0 0 1-.2-.5c0-.2 0-.4.2-.5l.5-.3.5.1c6 3 12.7 4.2 19.3 3.2l.7.1a.8.8 0 0 1 .3.6l1.6 10.1-.1.6-.6.4-2.2.2zM109.5 218c3.4 4 10.4 11.5 18 10.6l-1.3-8.4c-5.7.7-11.4 0-16.7-2.2zm2.3-17.6A9.6 9.6 0 0 1 105 184a9.7 9.7 0 0 1 10.5-2 9.5 9.5 0 0 1 5.9 8.8 9.6 9.6 0 0 1-9.6 9.6zm0-17.5a7.9 7.9 0 1 0 0 15.8 7.9 7.9 0 0 0 0-15.8z"/><path fill="#242424" d="M130.6 200.4a9.5 9.5 0 0 1-8.8-6 9.6 9.6 0 0 1 12.5-12.5 9.6 9.6 0 0 1-3.7 18.6v-.1zm0-17.5a8 8 0 0 0-7.3 4.9 7.8 7.8 0 0 0 1.7 8.6 7.9 7.9 0 1 0 5.6-13.4v-.1zm-8.7 27.3-5-2.4s-1.3 4.1.8 5c2 .9 4.2-2.6 4.2-2.6z"/><path fill="#242424" d="M118.3 213.8c-.3 0-.7 0-1-.2-2.7-1.2-1.4-5.6-1.3-6l.2-.4.3-.2h.7l5 2.5c.1 0 .2 0 .3.2l.1.3.1.3v.4c-.3.3-2.2 3.1-4.4 3.1zm-1-4.8c-.1 1.2-.2 2.7.6 3 .8.4 2-.6 2.7-1.4l-3.2-1.6h-.1z"/><path fill="#fff" d="M122.8 360.9h114v-7.1h-114v7.1z"/><path fill="#242424" d="M236.8 361.8h-114l-.6-.3a.8.8 0 0 1-.3-.6v-7.2c0-.2.1-.4.3-.5l.6-.3h114c.2 0 .4 0 .6.3l.2.5v7.2c0 .2 0 .5-.2.6-.2.2-.4.2-.6.2v.1zm-113.2-1.7h112.3v-5.6H123.6v5.6z"/><path fill="#fff" d="M55.1 291.8s-7.9 61.7-3.5 66.7c4.3 5 82.3-6.2 90.6-6.6 8.3-.4 24.6 4.6 24.2-4-.4-8.7-21.4-9.3-27-6.6-5.4 2.8-59.1-1.6-59.1-1.6l1.5-47.9H55.1z"/><path fill="#242424" d="M60.8 360.7c-5.6 0-9-.5-9.9-1.7-4.4-5.2 2.6-61 3.3-67.3 0-.2.2-.4.3-.5l.6-.3h26.7l.6.3.1.3v.3l-1.5 47c15.5 1.3 53.8 4 58 1.7a33.8 33.8 0 0 1 24.1 1.5 7 7 0 0 1 4 5.8 5 5 0 0 1-1.5 4c-2.8 2.7-9.2 2-15.4 1.4-2.7-.3-5.4-.5-8-.5-2 .1-8.5.9-16.7 1.9a662.7 662.7 0 0 1-64.7 6.1zm-5-68c-3.1 24.6-6.7 61.8-3.6 65.3 3 3.5 52.1-2.5 73.1-5 8.6-1 14.7-1.8 16.8-1.9 2.8 0 5.6.2 8.3.5 5.6.6 11.9 1.3 14.2-.9a3.3 3.3 0 0 0 1-2.8 5.4 5.4 0 0 0-3.2-4.3c-6-3.5-18.6-3.5-22.5-1.5-5.6 2.8-54.2-1.2-59.7-1.7a.8.8 0 0 1-.6-.2.8.8 0 0 1-.2-.6l1.5-47H55.8v.1z"/><path fill="#fff" d="M182.6 287.5h70.2l-16.5 66.4h-70.2l16.5-66.5v.1z"/><path fill="#242424" d="M236.3 354.7h-70.5a.8.8 0 0 1-.3-.3 1 1 0 0 1-.2-.3v-.4l16.5-66.5c0-.2.2-.3.3-.4.2-.2.3-.2.5-.2h70.6a.8.8 0 0 1 .4.6v.4l-16.5 66.5a.8.8 0 0 1-.8.6zm-69.1-1.6h68.4l16-64.9h-68.5l-16 64.9h.1z"/><path fill="#85C241" d="M75.2 234.2c-.3.2-7.1 2.1-7.5 2.5a47 47 0 0 0-12.6 20.8 164.7 164.7 0 0 0-6 38.1s26.4 9.5 37.8 3.9c0 0 6.7-47.2 0-60.1-2.4-4.7-6.1-8.8-11.7-5.2z"/><path fill="#242424" d="M87.8 293.6h-.2l-.3-.1-.2-.3a.8.8 0 0 1-.1-.6c0-.5 9.8-46-2.2-55.2a.8.8 0 0 1-.2-1.2c.1-.2.3-.3.6-.3.2 0 .4 0 .6.2 12.9 9.8 3.2 55 2.8 56.9a.8.8 0 0 1-.8.6zm56.8 7.2h-.2l-.3-.1-.3-.3-.1-.3v-.3c0-.3 6.2-36 0-49.8l-.1-.3v-.4l.2-.3a.8.8 0 0 1 .6-.2h.4l.2.2.2.3c6.4 14.2.3 49.3 0 50.8l-.2.5-.5.2h.1z"/><path fill="#fff" d="M453.7 360.9H.9v10.6h452.7v-10.6h.1z"/><path fill="#242424" d="M453.7 372.3H.9a.9.9 0 0 1-.6-.2.8.8 0 0 1-.3-.6v-10.6l.3-.6.6-.2h452.7c.3 0 .5 0 .6.2l.3.6v10.6l-.3.6-.6.2h.1zm-452-1.7h451.2v-8.9H1.7v9-.1z"/><path fill="#fff" d="M443.8 371.5h-433v16.6h433v-16.6z"/><path fill="#242424" d="M443.8 388.9h-433c-.2 0-.4 0-.5-.2a.9.9 0 0 1-.3-.6v-16.6c0-.2.1-.4.3-.5.1-.2.3-.3.6-.3h432.9a.8.8 0 0 1 .8.8v16.7c0 .2 0 .4-.2.6-.2.2-.4.2-.6.2v-.1zm-432.2-1.6h431.2v-15H11.7v15h-.1z"/><path fill="#fff" d="M219.5 94.3a48.6 48.6 0 0 1-35.8 46.9c-.5 18.8-17.4 32-18.5 32.9a38.3 38.3 0 0 0 9.2-31.4 40 40 0 0 1-3.5.2h-37.4a48.6 48.6 0 1 1 0-97.2h37.4a48.5 48.5 0 0 1 48.6 48.6z"/><path fill="#242424" d="M165.2 174.9h-.4a.8.8 0 0 1-.3-.4l-.1-.5a37.8 37.8 0 0 0 9.3-30.4h-40.2a49.4 49.4 0 0 1 0-98.8h37.4a49.4 49.4 0 0 1 13.7 97c-1 19-18.1 32.3-18.9 32.9l-.5.2zm9.2-33c.2 0 .3 0 .5.2.2.1.3.3.3.5a38 38 0 0 1-4.9 25.6 42.8 42.8 0 0 0 12.8-27.5 47.8 47.8 0 0 0-12.2-94.1h-37.4a47.7 47.7 0 0 0 0 95.5h37.4c1.1 0 2.3 0 3.3-.2h.2z"/><path fill="#fff" d="M383.3 106.5a37.4 37.4 0 0 0 27.5 36c.4 14.6 13.3 24.7 14.2 25.4a29.6 29.6 0 0 1-7-24.2l2.7.2h28.7a37.4 37.4 0 0 0 0-74.8h-28.7a37.4 37.4 0 0 0-37.4 37.4z"/><path fill="#242424" d="M425 168.7c-.1 0-.3 0-.5-.2-.5-.4-13.8-10.6-14.5-25.3a38.2 38.2 0 0 1 10.7-74.9h28.7a38.2 38.2 0 0 1 0 76.4h-30.7a28.8 28.8 0 0 0 7 22.7l.2.5c0 .2 0 .4-.2.6l-.3.2a1 1 0 0 1-.4 0zM420.7 70a36.5 36.5 0 0 0-9.7 71.8c.2 0 .3 0 .5.2l.1.5c.3 8.4 4.7 15.1 8.6 19.5-3-5.6-4-12-3-18.3 0-.2.1-.4.3-.5.2-.2.4-.2.6-.2h31.3a36.5 36.5 0 0 0 0-73h-28.7z"/><path fill="#fff" d="M274.6.9h-60.7a49.7 49.7 0 0 0 0 99.5h14.5c-.4 11.6 10 30.4 34 60 0 0-26.5-33-22-60h34.1a49.7 49.7 0 0 0 0-99.5h.1z"/><path fill="#242424" d="M262.4 161.3a1 1 0 0 1-.3 0 .8.8 0 0 1-.3-.3c-23.2-28.7-34.2-47.7-34.3-59.8h-13.6a50.6 50.6 0 0 1 0-101.2h60.7a50.6 50.6 0 0 1 0 101.2h-33.3c-3.9 26 21.6 58.3 22 58.7l.1.6a.9.9 0 0 1-.9.8h-.1zM213.9 1.7a48.9 48.9 0 1 0 0 97.8h14.4c.3 0 .5.1.6.3.2.1.3.3.3.6-.3 9.3 6.5 23.3 21.2 43.3L249 141c-5.6-10.8-11.8-26.6-9.4-40.7a.8.8 0 0 1 .8-.7h34.1a48.9 48.9 0 1 0 0-97.8h-60.6v-.1z"/><path fill="#fff" d="M490.8 193.5h39.4a32 32 0 0 1 31.5 37.7l-28.1 156.7H429.1l30.3-168a32 32 0 0 1 31.4-26.3v-.1z"/><path fill="#242424" d="M533.5 388.8H428.6a1 1 0 0 1-.2-.3l-.2-.3c0-.1-.1-.2 0-.4l30.2-168a32.8 32.8 0 0 1 32.3-27h39.4a32.8 32.8 0 0 1 32.5 38.7l-28.2 156.8c0 .2-.1.4-.3.5l-.5.1-.1-.1zm-103.3-1.7h102.7l28-156a31.2 31.2 0 0 0-30.6-36.7h-39.5a31.1 31.1 0 0 0-30.6 25.6l-30 167.1z"/><path fill="#242424" d="M507.4 365.3s-2.2 16-9.8 22.7H397.3s30.4-30 41-34.3c10.6-4.2 69.1 11.6 69.1 11.6z"/><path fill="#242424" d="M497.6 388.8H397.3l-.5-.1a.8.8 0 0 1-.3-.9l.2-.4c1.3-1.2 30.7-30.1 41.3-34.4 10.6-4.3 67.3 10.9 69.7 11.5l.4.4.2.6c0 .6-2.4 16.4-10 23.1l-.3.2a1 1 0 0 1-.4 0zm-98.3-1.7h98c6.2-5.6 8.6-18 9.2-21.2-6.8-1.7-58.4-15.2-68-11.4-8.9 3.6-33 26.7-39.1 32.6h-.1z"/><path fill="#fff" d="M369.4 339c-.2.1-9.6-.5-15.2 2.5s-14.5 8-11.4 10.5c3.2 2.5 30.4.4 32.6-1.3 2-1.6-6-11.7-6-11.7z"/><path fill="#242424" d="M352.6 353.9c-5 0-9.1-.3-10.3-1.2a2.3 2.3 0 0 1-1-2.1c.3-2.4 4.1-5.4 12.5-9.9 4.8-2.5 11.9-2.5 14.6-2.5h1.4l.2.3c1.2 1.4 6.9 8.7 6.5 11.7a1.7 1.7 0 0 1-.6 1.2c-1.7 1.3-14 2.5-23.4 2.5h.1zm16.4-14h-.6c-2.6 0-9.4 0-13.8 2.3-9.9 5.2-11.5 7.6-11.7 8.5 0 .2 0 .4.4.7 1 .7 6.2 1.2 16 .7 8.8-.5 14.8-1.5 15.5-2 .7-.6-1.8-5.2-5.8-10.3v.1z"/><path fill="#85C241" d="M444.1 232.9s-13 5.7-32.8 81.6c-1.7 6.1-49.8 24.3-49.8 24.3l13.3 10.2s60.4 7.3 74.3-8.5c13.9-15.9-5-107.6-5-107.6z"/><path fill="#85C241" d="M444.1 232.9s-7 27.2-1.8 56.3c5.3 29-13.2 68.1-13.2 68.1s43.1 27.4 81.9 6.3c0 0 2.2-101.7-12-119.7-14-18.1-33.8-32.4-55-11h.1z"/><path fill="#242424" d="m450.1 231 3.6 60.8 21.7-64.6-25.3 3.8z"/><path fill="#242424" d="M453.7 292.6a.8.8 0 0 1-.7-.8l-3.8-60.7a.8.8 0 0 1 .7-.9l25.4-3.8h.4c.2 0 .3.2.4.3l.2.4v.4l-21.7 64.6c0 .2-.2.3-.4.4a1 1 0 0 1-.5.2v-.1zm-2.8-60.9 3.4 55.8 19.9-59.3-23.3 3.5z"/><path fill="#fff" d="M406.9 338.5s-18.7-4.9-22.7-3.4c-4 1.5-18.7 7.4-17.4 13 1.3 5.6.7 4.9 10.8 4.4 10.1-.4 31.5-.4 31.5-.4l-2.2-13.6z"/><path fill="#242424" d="M371.1 353.7c-3.5 0-4-.8-5-4.6v-.8c-1-4.2 5-8.9 17.8-13.9 4-1.7 21.2 2.8 23.2 3.3l.4.3.2.4 2.2 13.7v.3a.8.8 0 0 1-.5.6h-.3c-.2 0-21.5 0-31.5.4l-3.2.2h-3.3v.1zm15.5-18a6 6 0 0 0-2 .3c-11.6 4.4-17.7 8.8-17 12l.2.7c.8 3.5.8 3.5 6.5 3.2l3.4-.2c8.7-.4 26.2-.4 30.5-.4l-2-12.2c-6.2-1.5-15.2-3.4-19.7-3.4h.1z"/><path fill="#85C241" d="M477.1 246.9s5.7 69.1 0 70.5l-76.5 17.4 4.4 19s52.2 8 83-5.2c30.8-13.2 32.1-88 16.3-106.5-15.9-18.5-26-4.8-27.3 4.8h.1z"/><path fill="#fff" d="M403.1 353.7h-83.2v7.2h83.2v-7.2z"/><path fill="#242424" d="M403.2 361.8h-83.3l-.6-.3a.8.8 0 0 1-.3-.6v-7.2a.8.8 0 0 1 .9-.8h83.3c.2 0 .4 0 .6.2.2.2.2.4.2.6v7.2c0 .2 0 .5-.2.6-.2.2-.4.2-.6.2v.1zm-82.4-1.7h81.6v-5.6h-81.8v5.6h.2z"/><path fill="#fff" d="m319.9 354.1-37.1-74.5-6.5 3.2 37.1 74.5 6.5-3.2z"/><path fill="#242424" d="M313.5 358.2h-.3a1 1 0 0 1-.3-.2l-.2-.3-37-74.5a.5.5 0 0 1 0-.7v-.2l.3-.2 6.5-3.2.3-.1h.3l.3.2.2.2 37 74.6c.2.2.2.4.1.6 0 .2-.2.4-.4.5l-6.4 3.2a1 1 0 0 1-.4 0v.1zm-36-75 36.3 73 5-2.5-36.3-73-5 2.5zm125.7 51.9-.5-.2a.8.8 0 0 1-.3-.5l.1-.6.5-.4c25.4-5.7 64-15.4 66.5-18.8 2.4-3.5 5.6-39.5 7.2-62.8v-.3l.3-.2.3-.2h.6l.3.2.1.3v.3c-.3 6-4 58.6-7.4 63.6-3.5 5-61 18-67.6 19.5l-.1.1z"/><path fill="#242424" d="M429.6 355.7a291 291 0 0 1-21.8-.7.8.8 0 0 1-.6-.3.8.8 0 0 1-.2-.6l.1-.4.2-.2.3-.2h.3c.7 0 69.3 5.5 84.8-14 15.5-19.6 15.3-51.3 15.3-51.7l.1-.3.2-.3.2-.2h.4c.2 0 .4 0 .5.2.2.1.3.4.3.6 0 .3.3 32.6-15.7 52.7-6.8 8.5-23.3 13.5-49.3 15-5.3.3-10.4.4-15 .4h-.1zm9-32.9a.9.9 0 0 1-.8-1c.9-10.3 1-20.7.5-31.1-1-19-.7-46-.7-46.2 0-.2 0-.5.2-.6l.6-.3c.2 0 .5.1.6.3l.3.6c0 .3-.3 27.1.6 46a233.2 233.2 0 0 1-.5 31.9.8.8 0 0 1-.5.4h-.3z"/><path fill="#fff" d="M466 388.1a54.3 54.3 0 0 1 29.7-29.4c17.4-7.1 44-5.7 44-5.7l-6.4 35.1H466z"/><path fill="#242424" d="M533.3 388.9h-67.6a1 1 0 0 1-.3-.3 1 1 0 0 1-.2-.4v-.3a55.5 55.5 0 0 1 30-30c17.5-7.2 44.1-5.8 44.4-5.8h.4l.2.3.2.3v.4l-6.3 35.1c0 .2-.1.4-.3.5-.1.2-.3.2-.5.3v-.1zm-66-1.6h65.3l6-33.5c-4.8-.2-27.4-.6-42.6 5.6a54.2 54.2 0 0 0-28.7 27.9z"/><path fill="#fff" d="M447.4 170.2c-.6 0-2.4 6.7-2.6 7.3-1.6 4.1-4 7.8-6 11.8a139 139 0 0 1-16.4 25.8 21 21 0 0 0 15-6.8l-4.7 13.2a23.5 23.5 0 0 0 19.5-1.7c10.3-6 12.2-17.2 13.3-28l2.7-24-20.8 2.4z"/><path fill="#242424" d="M440.6 223.7a24 24 0 0 1-8.1-1.4.8.8 0 0 1-.5-.5v-.6l3.6-9.9a22 22 0 0 1-13.1 4.7l-.4-.2a.8.8 0 0 1-.4-.3v-.5l.1-.4c6.4-8 11.8-16.5 16.2-25.6l2.4-4.5c1.4-2.3 2.6-4.8 3.6-7.3l.4-1.1c1.9-6.3 2.2-6.7 3-6.7l20.7-2.4h.4l.3.3.2.3v.4l-2.5 23.9c-1.1 11.1-3.2 22.5-13.8 28.6a24 24 0 0 1-12 3.2h-.1zm-6.8-2.7a22.8 22.8 0 0 0 18-2c10-5.6 11.9-16.6 13-27.3l2.4-22.9-19.4 2.2-1.9 5.5-.3 1.3c-1.1 2.6-2.3 5-3.8 7.5l-2.3 4.4c-4.2 8.7-9.4 16.9-15.3 24.5a20 20 0 0 0 12.7-6.4l.5-.3.6.1c.1.1.3.3.3.5v.5l-4.5 12.4z"/><path fill="#fff" d="m453.8 214.8-3.7 16.2s-2 10.2 8.9 9.3a21.7 21.7 0 0 0 16-9.6l4.3-29.5c.2-1.3 2-13.5 4.2-24.2a346 346 0 0 1-23.5-5.7c1 1.4-3.5.8-3.5.8-2-.4-4-.5-6-.3-2.1 7.1-5.5 14.6-6.7 21.8-.8 4.3-1.2 8.6-1.2 13 .2 8.3 11.2 8.2 11.2 8.2z"/><path fill="#242424" d="M457.6 241.1a8.4 8.4 0 0 1-6.5-2.5 10 10 0 0 1-1.8-7.8l3.5-15.3c-4.2-.2-10.8-2.3-11-9a69.4 69.4 0 0 1 5.3-27.2c1-2.6 1.9-5.2 2.6-7.7l.2-.4.4-.1c2.1-.3 4.3-.2 6.4.2h2.6v-.2l.1-.3.4-.3h.4c.1 0 11.1 3.2 23.4 5.7.2 0 .4.2.5.4v.5a446 446 0 0 0-4 24l-4.5 29.7v.3a22.2 22.2 0 0 1-18 10zm-3.8-27.1h.3l.3.3.1.3v.3l-3.7 16.3s-.7 4 1.5 6.4c1.3 1.5 3.6 2.1 6.6 1.9a21 21 0 0 0 15.4-9l4.3-29.5c.6-4.1 2.2-14.3 4-23.5-10-2-19-4.5-21.8-5.3l-.1.2c-.8.8-3.4.6-4.2.4-1.8-.4-3.6-.5-5.4-.3-.7 2.4-1.7 4.8-2.5 7.2a70 70 0 0 0-5.2 26.8c.2 7.5 10 7.5 10.4 7.5z"/><path fill="#fff" d="M459.9 189.5s-7 7.1-6 8.8c1 1.6 4.9 1.4 4.9 1.4"/><path fill="#242424" d="M458.2 200.5c-1.3 0-4-.1-5-1.8-1-1.6 2.7-6.3 6-9.7l.3-.2a.9.9 0 0 1 .7 0l.2.1.2.3v.7l-.2.2c-3.2 3.4-6 7-5.8 7.8.6.9 3 1 4 1a.9.9 0 0 1 .7.2.9.9 0 0 1 .3.6v.3l-.2.3-.3.2h-.9zm-3.5-13.8c.2-1 0-1.8-.5-2-.5 0-1.1.6-1.3 1.6-.2 1 0 1.8.5 2 .5 0 1.1-.6 1.3-1.6zm13.3 3.8c.2-1 0-1.9-.5-2-.5-.1-1.1.6-1.3 1.5-.3 1 0 1.9.5 2 .5 0 1-.6 1.3-1.6v.1z"/><path fill="#fff" d="m456.9 182.4 1.7-3.4 1.3 4 10.4 3.1 3-4.3-.4 5.9 5.5.5c-1.4-.1-8 26-8.5 28-1.2 4-2.6 8.2-6 10.5 3.7 1.3 7.7-.6 10.8-3 4.1-3 7.7-6.5 10.6-10.7l-3 16.2a9.9 9.9 0 0 0 8-2.6c2.1-2 3.8-4.4 4.9-7 4.8-10.4 3.7-20 4-31 .4-12.7-.3-23.6-15.5-29.4-15.1-5.9-26-4-34 2.9a23.5 23.5 0 0 0-7.6 17s11.6 3 14.8 3.3z"/><path fill="#242424" d="M483.6 230.1h-1.4a1 1 0 0 1-.3-.2l-.3-.2a.9.9 0 0 1-.1-.7l2.4-12.7c-2.6 3-5.5 5.8-8.7 8.1-4.4 3.2-8.3 4.2-11.6 3a.8.8 0 0 1-.4-.3 1 1 0 0 1-.2-.4l.1-.4c0-.2.2-.3.3-.4 3-2 4.4-5.8 5.6-10l.8-3.2c4-15.4 6-21.5 7-23.9l-4-.4a.8.8 0 0 1-.8-.9l.2-2.8-1.2 1.8-.4.3h-.6l-10.4-3a.8.8 0 0 1-.4-.3.9.9 0 0 1-.2-.3l-.7-2.1-.8 1.6-.3.3c-.2.1-.3.2-.5.1-3.2-.3-14.5-3.3-15-3.4a.8.8 0 0 1-.6-.8 24.2 24.2 0 0 1 8-17.5c8.7-7.7 20.4-8.7 34.8-3.1 15.5 6 16.4 17.3 16 30.2v6.4c0 8.4 0 16.4-4 24.9-1.3 2.7-3 5.3-5.2 7.3-2 1.8-4.5 2.9-7.2 3h.1zm-.3-1.7c2.4 0 4.7-.9 6.4-2.5 2-1.9 3.7-4.2 4.7-6.8a53.6 53.6 0 0 0 3.9-24.2v-6.3c.5-12.8-.4-23-15-28.7-14-5.4-24.8-4.5-33 2.8a23 23 0 0 0-7.5 15.6c2.4.6 10.4 2.7 13.5 3.2l1.5-2.9c.1-.1.2-.3.4-.3l.4-.2a.8.8 0 0 1 .8.6l1 3.6 9.5 2.8 2.6-3.8c0-.2.2-.3.4-.3h.5c.2 0 .4.1.5.3l.1.5-.3 5 4.7.5c.2 0 .4 0 .6.2l.3.5c0 .2 0 .4-.2.6 0 .2-.2.3-.4.4a215 215 0 0 0-7.3 24.2l-.9 3.3a21.4 21.4 0 0 1-4.8 9.7c2.4.3 5.2-.8 8.4-3.1a45.5 45.5 0 0 0 10.9-11l.5.1c.2 0 .3.2.4.4l.1.5-2.7 15.4v-.1z"/><path fill="#242424" d="M453.8 214.8s8.7-.3 12.4-2.5c0 0-5.3 11.3-15.3 15l3-12.6-.1.1z"/><path fill="#242424" d="M451 228c-.3 0-.4 0-.6-.2a.8.8 0 0 1-.3-.3v-.5l2.9-12.4a.9.9 0 0 1 .8-.7 33.7 33.7 0 0 0 12.5-2.5c.2 0 .3 0 .5.2l.2.4v.5a32.4 32.4 0 0 1-16 15.5zm3.5-12.4-2.4 10.2a30.3 30.3 0 0 0 12.2-11.8 41 41 0 0 1-9.8 1.6zm-1.4-5.3h-.2c-.9-.2-1.4-.9-1.7-2.1l-1-4.6v-.5a.8.8 0 0 1 .5-.5h.4l6.6 1.3.4.1.2.4.1.3v.4c-1 1.6-3.3 5.2-5.3 5.2zm-1-5.8.7 3.3.3.8c.5 0 1.8-1.4 3-3.3l-4-.8z"/></g></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/brainstorming.svg b/static/img/flatline/brainstorming.svg
new file mode 100644 (file)
index 0000000..be95777
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 435 384.3"><g class="layer"><path fill="#85C241" d="M323.2 215A121.5 121.5 0 0 0 160.6 42.1a121.3 121.3 0 0 0-36.9 173h.2c3 4.5 6.4 8.7 10 12.7 5 7 18.9 16 21.3 24.2 5 17 15.1 38.3 15.1 38.3h106.3s10.1-21.2 15.1-38.3c2.5-8.3 16.3-17.2 21.3-24.2 3.7-4 7-8.2 10.1-12.6v-.2z"/><path fill="#fff" d="M273.3 290.4h-99.7a6.6 6.6 0 0 0-6.6 6.5v4.4c0 3.6 3 6.5 6.6 6.5h99.7c3.6 0 6.5-3 6.5-6.5v-4.4c0-3.6-3-6.5-6.5-6.5z"/><path fill="#242424" d="M273.3 308.6h-99.7a7.3 7.3 0 0 1-7.4-7.3v-4.4a7.3 7.3 0 0 1 7.4-7.4h99.7a7.4 7.4 0 0 1 7.3 7.4v4.4a7.4 7.4 0 0 1-7.3 7.3zm-99.7-17.4a5.7 5.7 0 0 0-5.7 5.7v4.4a5.7 5.7 0 0 0 5.7 5.7h99.7a5.7 5.7 0 0 0 5.7-5.7v-4.4a5.7 5.7 0 0 0-5.7-5.7h-99.7z"/><path fill="#fff" d="M273.3 307.8h-99.7c-3.6 0-6.6 3-6.6 6.5v4.4c0 3.6 3 6.5 6.6 6.5h99.7c3.6 0 6.5-2.9 6.5-6.5v-4.4c0-3.6-3-6.5-6.5-6.5z"/><path fill="#242424" d="M273.3 326h-99.7a7.3 7.3 0 0 1-7.4-7.3v-4.4a7.3 7.3 0 0 1 7.4-7.3h99.7a7.4 7.4 0 0 1 7.3 7.3v4.4a7.4 7.4 0 0 1-7.3 7.4zm-99.7-17.4c-1.5 0-3 .6-4 1.7a5.4 5.4 0 0 0-1.7 4v4.4a5.6 5.6 0 0 0 3.5 5.3c.7.2 1.4.4 2.2.4h99.7a5.7 5.7 0 0 0 5.7-5.7v-4.4a5.7 5.7 0 0 0-5.7-5.7h-99.7z"/><path fill="#fff" d="M273.3 325.2h-99.7c-3.6 0-6.6 3-6.6 6.5v4.4c0 3.6 3 6.5 6.6 6.5h99.7c3.6 0 6.5-2.9 6.5-6.5v-4.4c0-3.6-3-6.5-6.5-6.5z"/><path fill="#242424" d="M273.3 343.5h-99.7a7.3 7.3 0 0 1-7.4-7.4v-4.4a7.3 7.3 0 0 1 7.4-7.3h99.7a7.4 7.4 0 0 1 7.3 7.3v4.4a7.4 7.4 0 0 1-7.3 7.4zM173.6 326a5.7 5.7 0 0 0-5.7 5.6v4.4a5.7 5.7 0 0 0 5.7 5.7h99.7a5.7 5.7 0 0 0 5.7-5.7v-4.4a5.7 5.7 0 0 0-5.7-5.7h-99.7z"/><path fill="#fff" d="M273.3 342.7h-99.7a6.6 6.6 0 0 0-6.6 6.5v4.4c0 3.6 3 6.5 6.6 6.5h99.7c3.6 0 6.5-3 6.5-6.5v-4.4c0-3.6-3-6.5-6.5-6.5z"/><path fill="#242424" d="M273.3 361h-99.7a7.3 7.3 0 0 1-7.4-7.4v-4.4a7.3 7.3 0 0 1 7.4-7.4h99.7a7.4 7.4 0 0 1 7.3 7.4v4.4a7.4 7.4 0 0 1-7.3 7.3zm-99.7-17.5a5.8 5.8 0 0 0-4 1.7 5.7 5.7 0 0 0-1.7 4v4.4a5.7 5.7 0 0 0 5.7 5.6h99.7a5.7 5.7 0 0 0 5.7-5.6v-4.4c0-1.5-.6-3-1.7-4a5.4 5.4 0 0 0-4-1.7h-99.7z"/><path fill="#242424" d="M238.4 383.5h-30a26.3 26.3 0 0 1-19.8-9l-12.9-14.4h95.4l-12.9 14.5a26.5 26.5 0 0 1-19.8 8.9z"/><path fill="#242424" d="M238.4 384.3h-30a27.3 27.3 0 0 1-20.4-9.2l-13-14.5a.8.8 0 0 1-.1-.9l.4-.3.4-.2h95.4a.8.8 0 0 1 .8.5v.5l-.1.4-13 14.5a27.4 27.4 0 0 1-20.4 9.2zM177.5 361l11.7 13.1a25.8 25.8 0 0 0 19.2 8.7h29.9a25.8 25.8 0 0 0 19.2-8.7l11.7-13h-91.7z"/><path fill="#fff" d="M196.2 238a35 35 0 0 1-6.5-.5 20.8 20.8 0 0 1-16.5-13.6 40.4 40.4 0 0 1-15-8.4c-7.1-6.2-5.4-15.5-4.3-19.2a23.8 23.8 0 0 1-12.3-15.4 19.9 19.9 0 0 1 4.5-19.3 21.7 21.7 0 0 1-4.9-11.7c-1.2-9 5.8-15.8 8.9-18.3-1.7-2.8-4.2-9.3.8-18.7a20.3 20.3 0 0 1 17.2-11.3c-1-5.1-.8-10.4.5-15.4 3-11.2 30.7-21.7 39.4-21.2 4.5.3 8.6 2.2 11.7 5.4a1.6 1.6 0 0 1 .5 1.2v147.3l-.7 2.3c-4.4 11-12.6 16.9-23.4 16.9zm-27-133.2a17.2 17.2 0 0 0-15.4 9.6c-5.5 10.4-.5 16.2-.3 16.4a1.6 1.6 0 0 1 .4 1.3 1.7 1.7 0 0 1-.7 1.2s-10 7-8.7 16.2c1 7.6 4.8 10.6 5 10.7a1.7 1.7 0 0 1 .6 1.4l-.1.7-.5.6a16.4 16.4 0 0 0-4.7 17 20 20 0 0 0 11.6 13.9l.6.3.4.6.2.6c0 .2 0 .5-.2.7 0 0-4.1 10.9 2.9 17a35.7 35.7 0 0 0 15.3 8.3l.5.8c0 .4 2.4 9.8 14.2 12 12.4 2.5 21.4-2.5 26-14.1.3-.6.4-1.1.5-1.7v-146a14 14 0 0 0-9-4c-8.4-.4-33.8 10-36 18.7a27.6 27.6 0 0 0 0 15.6l.1.9a1.7 1.7 0 0 1-1.8 1.4h-1z"/><path fill="#fff" d="M165.3 171.8c-9.4 0-17.7-8.7-18-9-.4-.4-.5-.8-.5-1.3 0-.4.2-.8.5-1.1a2 2 0 0 1 1.2-.5c.5 0 .9.2 1.2.5 0 .1 8.3 8.7 16.6 8h.6a1.6 1.6 0 0 1 1 1 1.6 1.6 0 0 1-.2 1.8l-.5.4-.7.1h-1.2zm21-25.1c-2.1 0-4.2-.3-6.3-.8-14.5-3.9-16-20.6-16-21.3 0-.4 0-.9.4-1.2.3-.4.7-.6 1.1-.6.5 0 .9.1 1.2.4.4.3.6.7.6 1.1 0 .6 1.4 15 13.6 18.4a19.4 19.4 0 0 0 19.9-6.1 1.7 1.7 0 0 1 1-.6h.7l.6.3.4.5.2.6v.7c0 .2-.2.4-.3.5a22.9 22.9 0 0 1-17.1 8.1z"/><path fill="#fff" d="M173.8 161.5h-1.3a1.7 1.7 0 0 1-1.7-1.7 1.7 1.7 0 0 1 1.8-1.7c4.6.3 8.1-.8 10.4-3.2 3.6-3.8 3.2-9.6 3.2-9.7v-.6a1.8 1.8 0 0 1 .9-1 1.7 1.7 0 0 1 1.8.2l.4.5.2.6c0 .3.6 7.4-4 12.3a15.3 15.3 0 0 1-11.7 4.3zm20.1-34.5a1.6 1.6 0 0 1-1.7-1.4 23.3 23.3 0 0 0-22-20.7c-.4 0-.9-.2-1.2-.5a1.7 1.7 0 0 1 0-2.4c.3-.3.8-.4 1.2-.4a27 27 0 0 1 25.3 24c0 .3-.2.5-.3.6l-.5.5-.6.2h-.2zm3.5 91.3c-.4 0-.9-.2-1.2-.5-.3-.3-.5-.8-.5-1.2-.3-21.5-21-22.2-22-22.2a1.7 1.7 0 0 1-1.6-1.6c0-.5.1-1 .5-1.2.3-.3.7-.5 1.1-.5.3 0 25 .7 25.3 25.4a1.7 1.7 0 0 1-1.7 1.7h.1z"/><path fill="#fff" d="M182 196.1c-.3 0-.7-.1-1-.4-.4-.3-.6-.6-.6-1 0-.3-2.8-24.3 21.4-27.4.5 0 1 0 1.3.3.3.3.6.7.6 1.2 0 .4 0 .9-.3 1.2-.3.4-.7.6-1.1.6-21 2.7-18.7 22.8-18.6 23.7v.6l-.3.6a1.7 1.7 0 0 1-1.1.6h-.2zm36.6-83.5a1.7 1.7 0 0 1-1.7-1.5c0-.3-.5-5.2-8.5-7.2l-.6-.2-.5-.5-.2-.7v-.6c0-.3.2-.5.3-.7a1.7 1.7 0 0 1 1.2-.6h.7c10.5 2.8 10.9 10 11 10.3a1.7 1.7 0 0 1-1.7 1.7zm-22.9-27.3-.6-.1-.6-.4c-7.4-8.3-16-5.3-16.3-5.1-.4.1-.9 0-1.3-.1a1.7 1.7 0 0 1-.8-2.2c.2-.4.5-.7 1-.9a18.7 18.7 0 0 1 20.3 6.6v1.3l-.5.5c-.3.3-.7.4-1.2.4zM177 194.5c-.3 0-.7-.2-1-.5-.4-.3-.5-.6-.6-1a10 10 0 0 0-5.8-8c-.4 0-.7-.4-.9-.8-.2-.4-.2-.9 0-1.3s.5-.7.9-.9c.4-.2.9-.2 1.3 0a13.4 13.4 0 0 1 7.8 10.6c0 .5 0 1-.3 1.3-.3.3-.7.5-1.2.5h-.1zm73.7 43.5c-10.8 0-19-5.7-23.3-16.8a13.6 13.6 0 0 1-.7-2.7v-147c0-.3.2-.8.5-1A17 17 0 0 1 239 65c8.6-.4 36.4 10 39.3 21.2 1.4 5 1.6 10.3.6 15.4a20.4 20.4 0 0 1 17.2 11.3c5 9.4 2.4 16 .8 18.7 3 2.5 10 9.2 8.9 18.3a22 22 0 0 1-5 11.7 19.6 19.6 0 0 1 4.6 19.3 23.9 23.9 0 0 1-12.3 15.4c1 3.7 2.8 13-4.3 19.2a40.5 40.5 0 0 1-15 8.4 20.7 20.7 0 0 1-16.6 13.6 35 35 0 0 1-6.5.6zM230 218.5c0 .5.2 1 .4 1.6 4.7 11.7 13.7 16.7 26.1 14.2a17.5 17.5 0 0 0 14.2-12c0-.3.2-.6.5-.8l.8-.5a35.3 35.3 0 0 0 14.5-7.9c7-6 2.9-16.8 2.9-17l-.2-.6c0-.2 0-.5.2-.7a1.7 1.7 0 0 1 1-.8c.3-.2 8.6-3 11.6-13.9a16.3 16.3 0 0 0-4.7-17l-.5-.7a1.7 1.7 0 0 1 .5-2c.2-.1 4-3 5-10.8 1.2-9.3-8.6-16-8.7-16.1l-.5-.5-.3-.7.1-.7c0-.2.2-.5.4-.6.2-.3 5.2-6-.3-16.4a17.2 17.2 0 0 0-16.3-9.6 1.7 1.7 0 0 1-1.4-.6 1.7 1.7 0 0 1-.3-1.7 28 28 0 0 0 0-15.6c-1-3.8-6.9-8.5-15.8-12.7a56.6 56.6 0 0 0-20.1-6 14 14 0 0 0-9 4l-.1 146z"/><path fill="#fff" d="M281.5 171.8h-1.2a1.7 1.7 0 0 1-1.4-1.2l-.1-.6a1.7 1.7 0 0 1 1.1-1.5h.7c8.3.6 16.5-8 16.6-8 .3-.3.7-.5 1.1-.6.5 0 .9.2 1.2.5l.4.5.1.7-.1.6-.4.6c-.3.3-8.5 9-18 9zm-20.9-25.1a23 23 0 0 1-17.1-8l-.3-.6v-.7l.1-.6.5-.5.5-.3h.7a1.7 1.7 0 0 1 1.1.6 19.3 19.3 0 0 0 19.8 6c12.3-3.3 13.6-17.7 13.7-18.3a1.7 1.7 0 0 1 1.1-1.4l.7-.1c.2 0 .4 0 .6.2.2 0 .4.2.5.4l.3.5v.7c0 .7-1.5 17.4-16 21.3-2 .5-4.1.8-6.2.8z"/><path fill="#fff" d="M273 161.5a15.6 15.6 0 0 1-11.7-4.3 17 17 0 0 1-4-12.3 1.6 1.6 0 0 1 .5-1.1l.6-.4h.7l.6.1a1.7 1.7 0 0 1 .8 1v.7c-.1 3.5 1 7 3.3 9.7 2.3 2.4 5.8 3.4 10.4 3.2a1.7 1.7 0 0 1 1.7 1.7c0 .4-.2.8-.5 1.1-.3.3-.7.5-1.1.5H273zM253 127h-.3a1.7 1.7 0 0 1-1.4-1.3v-.7c4-23 25-23.4 25.3-23.4a1.7 1.7 0 0 1 1.6 1.7 1.7 1.7 0 0 1-1.6 1.6c-.8 0-18.5.5-22 20.7a2 2 0 0 1-.6 1l-1 .4zm-3.6 91.3c-.4 0-.8-.2-1.1-.5-.3-.3-.5-.8-.5-1.2.4-24.8 25-25.4 25.2-25.4a1.7 1.7 0 0 1 1.7 1.6c0 .5-.2.9-.5 1.2-.3.3-.7.5-1.1.5-1 0-21.7.6-22 22.2a1.7 1.7 0 0 1-1.6 1.6z"/><path fill="#fff" d="M264.8 196.1h-.2a1.7 1.7 0 0 1-1.5-1.8c.1-.9 2.4-21-18.5-23.7-.3 0-.5 0-.7-.2l-.5-.4a1.7 1.7 0 0 1 .4-2.4c.3-.2.8-.4 1.2-.3 24.2 3.2 21.4 27.1 21.4 27.4a1.7 1.7 0 0 1-1.6 1.4zm-36.5-83.5c-.4 0-.9-.1-1.2-.4a2 2 0 0 1-.5-1.2c0-.3.5-7.6 11-10.2a1.7 1.7 0 0 1 1.7 2.4c-.2.4-.5.6-.9.8-8.1 2-8.4 7-8.4 7.1a1.7 1.7 0 0 1-1.7 1.5zm22.8-27.3c-.3 0-.6 0-.9-.3-.3-.1-.5-.4-.6-.7a1.7 1.7 0 0 1 .3-1.8c9-10 19.4-6.1 20-6a1.6 1.6 0 0 1 1 .9v1.3l-.4.5-.5.4-.6.2-.7-.1c-.3-.2-8.9-3.2-16.3 5a1.7 1.7 0 0 1-1.3.6zm18.7 109.1h-.2c-.4 0-.8-.2-1.1-.5a2 2 0 0 1-.4-1.3A13.2 13.2 0 0 1 276 182l.6-.1.6.1.6.4c.1.1.3.3.3.5.2.4.2.9 0 1.3-.1.4-.5.7-.9.9a9.9 9.9 0 0 0-5.8 7.8c0 .4-.2.8-.5 1.1-.3.3-.7.4-1.1.4z"/><path fill="#242424" d="M425.2 113.8c-4.4-13.8-29.4-20.3-70.7-18.2-6.4.4-13 1-20 1.7l.7 1.7c11.4-1.3 22.9-2 34.4-2 30.3 0 50.2 5.7 53.8 17.5 5.7 18.3-29.4 46.5-86.1 73.3a747.5 747.5 0 0 1-98.6 37.7 778.4 778.4 0 0 1-86.4 21.4 476.4 476.4 0 0 1-60 7.4c-39.8 2-65-4.1-68.9-17-5.4-17.6 27.2-44.6 80.5-70.6l-.3-1.8A419 419 0 0 0 70 183.1C34.6 204.5 17.5 224 21.7 238c3.7 12 23.3 18.6 55.8 18.6 4.7 0 9.7-.2 14.9-.4a475 475 0 0 0 61-7.7c29-5.4 57.6-12.5 85.8-21.2a751 751 0 0 0 97.2-37.1 447.6 447.6 0 0 0 40.5-21.4c35.4-21.5 52.5-41 48.3-54.9z"/><path fill="#242424" d="M376.9 183a420.8 420.8 0 0 0-33.6-18.1l-.3 1.7c53.3 26 86 53 80.5 70.7-4 12.8-29.1 19-69 17a476.4 476.4 0 0 1-60-7.5c-29.1-5.4-58-12.6-86.3-21.3a743 743 0 0 1-98.7-37.8c-13.2-6.2-26.1-13-38.7-20.5-34-20.7-51.4-40-47.4-52.8 3.6-11.8 23.5-17.5 53.8-17.5 11.5 0 23 .7 34.4 2l.7-1.7c-6.9-.8-13.5-1.3-20-1.7-41.3-2-66.4 4.5-70.6 18.3-4.3 13.9 12.8 33.4 48.3 54.8 13.1 7.8 26.6 15 40.4 21.4a744 744 0 0 0 97.3 37.2 767.7 767.7 0 0 0 85.7 21.2 475.4 475.4 0 0 0 76 8c32.4 0 52-6.4 55.8-18.5 4.2-14-13-33.4-48.3-54.8z"/><path fill="#fff" d="m138.7 270.7-15.7 9c-1.4-.5-2.8-.7-4.3-.7H60.4A12.2 12.2 0 0 0 48 291.2v30.5a12.2 12.2 0 0 0 12.3 12.2h58.3a12.2 12.2 0 0 0 12.2-12.2v-30.5c0-1.7-.3-3.4-1-5l8.8-15.5z"/><path fill="#DBDBDB" d="M118.7 334.8H60.4a13.2 13.2 0 0 1-13.1-13.1v-30.5a13.1 13.1 0 0 1 13-13h58.4c1.4 0 2.9.2 4.2.6l15.4-8.8h.5c.2 0 .3 0 .5.2l.2.4-.1.6-8.6 15a13 13 0 0 1 1 5v30.4a13.3 13.3 0 0 1-3.8 9.3 13.1 13.1 0 0 1-9.3 3.9zm-58.3-55A11.4 11.4 0 0 0 49 291.2v30.5A11.4 11.4 0 0 0 60.4 333h58.3a11.4 11.4 0 0 0 11.4-11.4v-30.5a11 11 0 0 0-1-4.7.9.9 0 0 1 0-.7l7.3-12.8-13 7.5h-.7c-1.3-.5-2.6-.7-4-.7H60.4z"/><path fill="#fff" d="M360.8 279a65.2 65.2 0 0 0-27 5.5l-19.3-10.3 6.3 19.3c-4 4-6.3 9.4-6.4 15 0 16.4 20.7 29.6 46.3 29.6 25.6 0 46.4-13.3 46.4-29.6 0-16.2-20.7-29.5-46.3-29.5z"/><path fill="#DBDBDB" d="M360.8 339c-26 0-47.2-13.7-47.2-30.5.2-5.7 2.4-11.1 6.4-15.2l-6.3-18.8v-.5l.2-.4c.2-.2.3-.2.5-.2h.5l19 10.2a66.3 66.3 0 0 1 27-5.5c26 0 47.1 13.7 47.1 30.4 0 16.8-21.2 30.5-47.2 30.5zm-45-63 5.8 17.2c.1.1.1.3 0 .4l-.1.4a21 21 0 0 0-6.3 14.5c0 16 20.4 28.8 45.5 28.8s45.6-12.9 45.6-28.8c0-15.8-20.5-28.7-45.5-28.7a64.6 64.6 0 0 0-27 5.5h-.4l-17.6-9.4z"/><path fill="#fff" d="M111.8 6H47.5v56.4h55.1l9.2 8.6-2.9-8.6h2.9V6z"/><path fill="#DBDBDB" d="m111.8 71.8-.6-.2-8.9-8.4H47.5a.8.8 0 0 1-.8-.8V6c0-.2 0-.5.2-.6l.6-.3h64.3l.6.3.2.6v56.4a.8.8 0 0 1-.8.8h-1.7l2.6 7.5v.4c0 .1 0 .2-.2.3a.8.8 0 0 1-.6.4zM48.3 61.5h54.3c.3 0 .5.1.6.3L110 68l-1.9-5.5a.9.9 0 0 1 .2-.7.8.8 0 0 1 .6-.4h2V6.8H48.4v54.7zm31.4 154.9c-5.7 0-5.7 8.8 0 8.8 5.6 0 5.6-8.8 0-8.8zM4.4 151.3c0-.3-.2-.6-.4-.8l-1-1c-.1-.2-.3-.3-.6-.3-.2-.2-.4-.2-.6-.2a1 1 0 0 0-.7.2l-.6.3-.3.4-.2.9v.4c0 .3.2.6.4.8l1 1 .6.3.7.2c.2 0 .4 0 .6-.2.3 0 .5-.2.6-.3l.3-.4.2-.9v-.4zm74.9-23.9c0-.2-.2-.4-.4-.6-.1-.1-.3-.3-.5-.3l-.7-.2h-.5l-.7.5-.3.3c-.2.3-.2.6-.2 1v1c0 .4.2.8.5 1.1l.5.4.7.2h.5l.7-.5.3-.3c.2-.3.3-.6.3-1v-1l-.2-.6zm296.2 99.8c-5.6 0-5.6 8.8 0 8.8 5.7 0 5.7-8.8 0-8.8zm55.3-60c-5.6 0-5.6 8.7 0 8.7 5.7 0 5.6-8.7 0-8.7zM303 305.5c-.1-.3-.3-.6-.6-.8-.2-.3-.5-.5-.8-.6a2 2 0 0 0-1-.2h-.7c-.4.2-.8.4-1.2.8l-.4.5c-.2.4-.3.8-.3 1.3v1c0 .4 0 .7.2 1 0 .3.3.6.5.9a3 3 0 0 0 1.9.7h.7l1.1-.7.5-.6c.2-.4.3-.8.3-1.3v-1c0-.3 0-.7-.2-1z"/><path fill="#fff" d="M394.2 27.2a18.2 18.2 0 0 0-13.2 6.2 38.8 38.8 0 0 0-28.4-6.9c-4.5.4-8.7 2.1-12.1 5-1.2 1-6 11-5.4 10.8-6 1.6-9.8 8.4-9 14.5a17.8 17.8 0 0 0 11.6 13.5c2 .7 3.9 1.2 6 1.6a41.8 41.8 0 0 1-10 9.7 23 23 0 0 0 17-7.9c2.9 1.1 5.5 2.8 8.4 4 7 3 15 2.9 22.4 1.4a33 33 0 0 0 14.8-6.3 17.5 17.5 0 0 0 6.8-14.1c6.7 1.9 13.2-5 13.1-12 0-12-11.3-20-22-19.5z"/><path fill="#DBDBDB" d="M333.7 82.4a.8.8 0 0 1-.8-.6v-.5c0-.2.2-.3.3-.4 3.4-2.3 6.5-5.2 9-8.5-1.7-.3-3.3-.8-4.8-1.4a18.6 18.6 0 0 1-12.1-14c-1-6.6 3.2-13.4 9-15.2l2.2-5c1-2 2-4 3.3-5.9 3.6-3 8-4.8 12.7-5.2a39 39 0 0 1 28.3 6.7 18.7 18.7 0 0 1 13.4-6c6.1-.2 12.1 2 16.6 6.3a19.6 19.6 0 0 1 6.3 14.1 14 14 0 0 1-5.4 10.8 10.1 10.1 0 0 1-7.7 2.2 18.8 18.8 0 0 1-7 13.7 33.6 33.6 0 0 1-15.3 6.5 39.8 39.8 0 0 1-26.7-3.3l-4-2a23.8 23.8 0 0 1-17.3 7.8zm1.6-39.3c-5.3 1.4-9.2 7.6-8.3 13.5a16.9 16.9 0 0 0 11 12.9 39 39 0 0 0 6.2 1.8l.2.3.1.5-.1.3c-2.3 3-5 5.8-7.9 8a22 22 0 0 0 13.6-7.3l.4-.3h.5c1.7.7 3.3 1.4 4.8 2.3l3.7 1.7c6.2 2.5 13.6 3 22 1.3a32 32 0 0 0 14.3-6 16.7 16.7 0 0 0 6.5-13.4 1 1 0 0 1 .3-.7l.4-.2h.4a8.2 8.2 0 0 0 7.3-1.6 12 12 0 0 0 4.7-9.5 18 18 0 0 0-5.7-12.9 21.5 21.5 0 0 0-15.4-5.8 17 17 0 0 0-12.7 6l-.5.2-.6-.1c-8-5.9-18-8.3-27.8-6.8-4.3.4-8.3 2-11.6 4.8a61 61 0 0 0-5.8 11zm36.2 88.5a6 6 0 0 1-5.5-3.7 6 6 0 0 1 1.3-6.5 6 6 0 0 1 6.5-1.3 6 6 0 0 1 0 11c-.7.4-1.5.5-2.3.5zm0-10.3a4.3 4.3 0 0 0-4.2 5.2 4.3 4.3 0 0 0 5.9 3.1c.8-.3 1.4-.8 2-1.5.4-.8.6-1.6.6-2.4a4.3 4.3 0 0 0-4.3-4.4zM233.2 12a6 6 0 0 1-5.9-7.2A6 6 0 0 1 232 0a6 6 0 1 1 1.1 11.9zm0-10.3a4 4 0 0 0-2.4.7A4.4 4.4 0 0 0 230 9a4.3 4.3 0 1 0 3-7.3zm-188.9 175a4.3 4.3 0 0 1-4-2.7 4.3 4.3 0 0 1 3.2-5.8 4.3 4.3 0 0 1 3.8 7.2c-.8.8-1.8 1.3-3 1.3zm0-7a2.6 2.6 0 0 0-2.4 1.7c-.2.5-.3 1-.2 1.5.1.5.4 1 .8 1.3.3.4.8.7 1.3.8.5 0 1 0 1.5-.2s.9-.5 1.2-1a2.6 2.6 0 0 0 .2-2.4 2.6 2.6 0 0 0-1.4-1.4l-1-.2zM289.7 15.9a1.7 1.7 0 0 0-1.7 1.7 1.8 1.8 0 0 0 1.7 1.8c.5 0 1-.2 1.3-.5.3-.4.5-.8.5-1.3a1.8 1.8 0 0 0-1.8-1.7zm-139 2.1c-4.5 0-4.5 7 0 7s4.5-7 0-7zm-35.9 282H69.2c-.3 0-.5-.2-.6-.3a.8.8 0 0 1-.3-.6l.3-.6.6-.2h45.6c.3 0 .5 0 .6.2l.3.6v.3l-.3.3-.3.2a1 1 0 0 1-.3 0zm-12.7 14.2h-33c-.1 0-.4-.1-.5-.3a.8.8 0 0 1-.3-.6c0-.2.1-.4.3-.5.1-.2.4-.3.6-.3h33l.6.3.2.5v.4l-.3.3-.2.1a1 1 0 0 1-.4 0zm285-12.2h-52a1 1 0 0 1-.7-.3.8.8 0 0 1-.2-.6c0-.2.1-.4.3-.5.1-.2.3-.3.5-.3h52.1c.3 0 .5.1.6.3.2.1.3.3.3.5 0 .3-.1.5-.3.6-.1.2-.3.3-.6.3zm-8.7 15.4H335l-.6-.3a.9.9 0 0 1-.2-.6c0-.2 0-.4.3-.6l.5-.2h43.4c.3 0 .5 0 .6.2l.3.6c0 .3-.1.5-.3.6-.1.2-.3.3-.6.3zM100.2 18.8H58.7c-.2 0-.4 0-.6-.2a.8.8 0 0 1 0-1.2l.6-.2h41.5c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.2zm0 10.2H58.7c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.5.8.8 0 0 1 .8-.9h41.5a.8.8 0 0 1 .8.9.8.8 0 0 1-.8.8zm0 10.3H58.7c-.2 0-.4 0-.6-.2a.8.8 0 0 1 0-1.2l.6-.3h41.5a.8.8 0 0 1 .8.9c0 .2 0 .4-.2.6l-.6.2zm-9.8 10.2H58.7c-.2 0-.4 0-.5-.2a.8.8 0 0 1 0-1.2c.1-.2.3-.2.5-.2h31.7c.2 0 .4 0 .6.2.2.2.2.4.2.6 0 .2 0 .4-.2.6a1 1 0 0 1-.6.2z"/><path fill="#DBDBDB" d="M353.2 51.4a1.7 1.7 0 0 0-1.7 1.7c0 .4.2.8.5 1.1a1.7 1.7 0 1 0 2.4-2.3c-.3-.3-.8-.5-1.2-.5zm16.7 0a1.7 1.7 0 0 0-1.7 1.7 1.7 1.7 0 0 0 1.7 1.6 1.7 1.7 0 0 0 1.6-1.6 1.7 1.7 0 0 0-1.6-1.7zm16.7 0c-.5 0-1 .2-1.2.5-.3.3-.5.7-.5 1.2a1.7 1.7 0 0 0 1.7 1.7 1.7 1.7 0 0 0 1.1-3c-.3-.2-.7-.4-1.1-.4z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/coding.svg b/static/img/flatline/coding.svg
new file mode 100644 (file)
index 0000000..54fdabb
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 373.9 386.7"><g class="layer"><path fill="#242424" d="m231.3 297.3 2.1-40.2-57.1-2.8-35.8 2S147 296 150.9 299c3.8 3 80.4-1.7 80.4-1.7z"/><path fill="#242424" d="M165.3 300.9c-8 0-13.9-.3-15-1.2-3.9-3.1-10-39.1-10.7-43.2a.8.8 0 0 1 .1-.7l.3-.2h.3l36-2.2 57.2 2.8h.3l.3.3.1.2v.4l-2 40.2-.3.6a1285.7 1285.7 0 0 1-66.6 3zM141.4 257c2.6 15.3 7.5 39.3 10 41.3 2.9 2 49.7 0 79-1.9l2.2-38.6-56.4-2.8-34.8 2zm-37.8 82.6a3.4 3.4 0 0 1-3.2-2.4 3.4 3.4 0 0 1 1.4-3.7c7.5-4.9 16-11.4 17.6-13.8a178 178 0 0 0-18.4-29.2c-.3-.3-.5-.7-.6-1.2a3.3 3.3 0 0 1 6-2.7c21 28.8 20 33.1 19.6 34.5-1.2 4.8-13.4 13.3-20.6 18-.5.3-1.1.5-1.8.5z"/><path fill="#242424" d="M92 333a8.6 8.6 0 1 0 17.2 0v-49a8.7 8.7 0 0 0-17.3 0v49z"/><path fill="#242424" d="M100.6 342.5A9.5 9.5 0 0 1 91 333v-49a9.4 9.4 0 0 1 13.2-9 9.5 9.5 0 0 1 5.8 9v49a9.5 9.5 0 0 1-9.5 9.5zm0-66.3a7.8 7.8 0 0 0-7.8 7.8v49a7.8 7.8 0 0 0 7.8 8.2 7.8 7.8 0 0 0 7.8-8.2v-49a7.8 7.8 0 0 0-7.8-7.8zm169.7 63.4c-.7 0-1.3-.2-1.8-.5-7.2-4.7-19.4-13.2-20.5-18-.4-1.4-1.5-5.7 19.6-34.5a3.3 3.3 0 0 1 4.7-.7 3.3 3.3 0 0 1 .7 4.6 179 179 0 0 0-18.5 29.2c1.4 2.3 10 8.9 17.6 13.8a3.3 3.3 0 0 1 1.4 3.7 3.3 3.3 0 0 1-3.2 2.4z"/><path fill="#242424" d="M282 284a8.7 8.7 0 0 0-17.3 0v49a8.6 8.6 0 1 0 17.3 0v-49z"/><path fill="#242424" d="M273.4 342.5a9.5 9.5 0 0 1-9.5-9.5v-49a9.6 9.6 0 0 1 2.6-7 9.6 9.6 0 0 1 6.9-2.8 9.6 9.6 0 0 1 8.8 6c.5 1.3.7 2.6.6 3.8v49a9.5 9.5 0 0 1-9.4 9.5zm0-66.3a7.8 7.8 0 0 0-7.8 7.8v49a7.8 7.8 0 0 0 10.8 7.5 7.8 7.8 0 0 0 4.8-7.5v-49a7.8 7.8 0 0 0-7.8-7.8zm-19.5 71-3.5-35.4H123.5l-3.5 35.4a35.4 35.4 0 0 0 35.2 38.8h63.5a35.2 35.2 0 0 0 35.2-38.8z"/><path fill="#242424" d="M218.7 386.7h-63.5a36.1 36.1 0 0 1-36-39.7l3.5-35.3c0-.2.1-.4.3-.5l.5-.2h127c.1 0 .3 0 .5.2l.2.5 3.5 35.4a36 36 0 0 1-36 39.6zm-94.4-74.1-3.4 34.6a34.6 34.6 0 0 0 34.3 37.9h63.5a34.6 34.6 0 0 0 34.4-37.9l-3.4-34.6H124.3z"/><path fill="#fff" d="M373.1 147.2H.8v124h372.3v-124z"/><path fill="#242424" d="M373.1 272H.8a.8.8 0 0 1-.8-.8v-124c0-.2 0-.4.2-.6l.6-.2h372.3a.8.8 0 0 1 .8.8v124c0 .2 0 .4-.2.5l-.6.3zM1.7 270.3h370.6V148H1.7v122.3z"/><path fill="#fff" d="M271 181H103c-3.8 0-6.8 3-6.8 6.8v45c0 3.6 3 6.6 6.7 6.6H271c3.7 0 6.7-3 6.7-6.7v-45c0-3.6-3-6.6-6.7-6.6z"/><path fill="#DBDBDB" d="M271 240.3H103a7.5 7.5 0 0 1-7.6-7.6v-45a7.6 7.6 0 0 1 7.5-7.5H271a7.5 7.5 0 0 1 7.5 7.5v45a7.5 7.5 0 0 1-7.5 7.6zm-168-58.4a5.8 5.8 0 0 0-6 5.9v45a6 6 0 0 0 6 5.8h168a5.9 5.9 0 0 0 5.9-5.8v-45a5.9 5.9 0 0 0-5.9-5.9H103z"/><path fill="#DBDBDB" d="M120.8 188.5h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M120.8 195.9h-13a.9.9 0 0 1-.6-.3.8.8 0 0 1-.3-.6v-6.5l.3-.6c.1-.2.3-.2.6-.2h13c.2 0 .4 0 .5.2l.3.6v6.6c0 .2-.1.4-.3.5-.1.2-.3.3-.6.3zm-12.2-1.7h11.3v-4.9h-11.3v4.9z"/><path fill="#fff" d="M120.8 200.8h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M120.8 208.2h-13c-.3 0-.5-.1-.6-.3a.9.9 0 0 1-.3-.6v-6.5l.3-.6.6-.2h13a.8.8 0 0 1 .8.8v6.5c0 .3-.1.5-.3.6-.1.2-.3.3-.5.3zm-12.2-1.7h11.3v-4.8h-11.3v4.8z"/><path fill="#fff" d="M120.8 213.2h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M120.8 220.5h-13c-.3 0-.5 0-.6-.2a.9.9 0 0 1-.3-.6V213c0-.2.1-.4.3-.5.1-.2.3-.3.6-.3h13c.2 0 .4.1.5.3.2.1.3.3.3.5v6.6l-.3.6-.5.2zm-12.2-1.7h11.3V214h-11.3v4.8z"/><path fill="#fff" d="M120.8 225.5h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M120.8 232.8h-13c-.3 0-.5 0-.6-.2a.9.9 0 0 1-.3-.6v-6.5c0-.3.1-.5.3-.6.1-.2.3-.3.6-.3h13a.8.8 0 0 1 .8.9v6.5l-.3.6c-.1.2-.3.2-.5.2zm-12.2-1.6h11.3v-4.9h-11.3v4.9z"/><path fill="#fff" d="M141.5 188.5h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M141.5 195.9h-12.9a.8.8 0 0 1-.8-.9v-6.5a.8.8 0 0 1 .8-.8h13c.2 0 .4 0 .6.2l.3.6v6.6a.9.9 0 0 1-.3.6l-.3.1a1 1 0 0 1-.4 0zm-12.1-1.7h11.3v-4.9h-11.3v4.9z"/><path fill="#fff" d="M141.5 200.8h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M141.5 208.2h-12.9l-.6-.3a.8.8 0 0 1-.2-.6v-6.5c0-.2 0-.4.2-.6l.6-.2h13c.2 0 .4 0 .6.2l.3.6v6.5l-.1.4-.2.3-.3.1c-.1 0-.3.1-.4 0zm-12.1-1.7h11.3v-4.8h-11.3v4.8z"/><path fill="#fff" d="M141.5 213.2h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M141.5 220.5h-12.9c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6V213a.8.8 0 0 1 .8-.8h13l.6.3c.2.1.3.3.3.5v6.6l-.1.3-.2.3-.3.2h-.4zm-12.1-1.7h11.3V214h-11.3v4.8z"/><path fill="#fff" d="M141.5 225.5h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M141.5 232.8h-12.9a.8.8 0 0 1-.8-.8v-6.5c0-.3 0-.5.2-.6l.6-.3h13l.6.3c.2.1.3.3.3.6v6.5l-.1.3-.2.3-.3.2h-.4zm-12.1-1.6h11.3v-4.9h-11.3v4.9z"/><path fill="#fff" d="M162.3 188.5h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M162.3 195.9h-13a.8.8 0 0 1-.8-.9v-6.5c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2h13c.2 0 .4 0 .6.2l.2.6v6.6c0 .2 0 .4-.2.5l-.6.3zm-12.2-1.7h11.4v-4.9h-11.3v4.9z"/><path fill="#fff" d="M162.3 200.8h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M162.3 208.2h-13l-.6-.3a.9.9 0 0 1-.2-.6v-6.5c0-.2 0-.4.2-.6l.6-.2h13a.8.8 0 0 1 .8.8v6.5c0 .3 0 .5-.2.6l-.6.3zm-12.2-1.7h11.4v-4.8h-11.3v4.8z"/><path fill="#fff" d="M162.3 213.2h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M162.3 220.5h-13c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6V213c0-.2 0-.4.2-.5l.6-.3h13l.6.3.2.5v6.6c0 .2 0 .4-.2.6l-.6.2zm-12.2-1.7h11.4V214h-11.3v4.8zm74.5 6.7h-75.3v6.5h75.3v-6.5z"/><path fill="#DBDBDB" d="M224.6 232.8h-75.3c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6v-6.5c0-.3 0-.5.2-.6l.6-.3h75.3c.2 0 .5.1.6.3.2.1.3.3.3.6v6.5a.8.8 0 0 1-.9.8zm-74.4-1.6h73.6v-4.9h-73.6v4.9z"/><path fill="#fff" d="M183 188.5h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M183 195.9h-13a1 1 0 0 1-.5-.3.9.9 0 0 1-.2-.6v-6.5a.8.8 0 0 1 .8-.8h13c.2 0 .4 0 .6.2l.2.6v6.6c0 .2-.1.4-.3.5-.1.2-.3.3-.5.3zm-12-1.7h11.2v-4.9H171v4.9z"/><path fill="#fff" d="M183 200.8h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M183 208.2h-13l-.5-.3a.8.8 0 0 1-.2-.6v-6.5c0-.2 0-.4.2-.6l.6-.2h13c.2 0 .4 0 .6.2l.2.6v6.5a.8.8 0 0 1-.8.9zm-12-1.7h11.2v-4.8H171v4.8z"/><path fill="#fff" d="M183 213.2h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M183 220.5h-13c-.1 0-.3 0-.5-.2a.8.8 0 0 1-.2-.6V213a.8.8 0 0 1 .8-.8h13l.6.3.2.5v6.6a.8.8 0 0 1-.8.8zm-12-1.7h11.2V214H171v4.8z"/><path fill="#fff" d="M203.8 188.5h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M203.8 195.9h-13a.8.8 0 0 1-.8-.9v-6.5l.3-.6c.1-.2.3-.2.6-.2h13c.2 0 .4 0 .5.2l.3.6v6.6a.9.9 0 0 1-.8.8zm-12.1-1.7H203v-4.9h-11.3v4.9z"/><path fill="#fff" d="M203.8 200.8h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M203.8 208.2h-13a.5.5 0 0 1-.5-.3.9.9 0 0 1-.3-.6v-6.5l.3-.6.6-.2h13c.2 0 .4 0 .5.2l.3.6v6.5a.8.8 0 0 1-.8.9zm-12.1-1.7H203v-4.8h-11.3v4.8z"/><path fill="#fff" d="M203.8 213.2h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M203.8 220.5h-13c-.2 0-.4 0-.5-.2a.9.9 0 0 1-.3-.6V213c0-.2.1-.4.3-.5.1-.2.3-.3.6-.3h13c.2 0 .4.1.5.3.2.1.3.3.3.5v6.6a.8.8 0 0 1-.8.8zm-12.1-1.7H203V214h-11.3v4.8z"/><path fill="#fff" d="M224.6 188.5h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M224.6 195.9h-13a.8.8 0 0 1-.8-.9v-6.5a.8.8 0 0 1 .8-.8h13c.2 0 .4 0 .6.2l.3.6v6.6c0 .2-.1.4-.3.5l-.6.3zm-12.1-1.7h11.3v-4.9h-11.3v4.9z"/><path fill="#fff" d="M224.6 200.8h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M224.6 208.2h-13l-.6-.3a.8.8 0 0 1-.2-.6v-6.5c0-.2 0-.4.2-.6l.6-.2h13c.2 0 .4 0 .6.2l.3.6v6.5a.8.8 0 0 1-.9.9zm-12.1-1.7h11.3v-4.8h-11.3v4.8z"/><path fill="#fff" d="M224.6 213.2h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M224.6 220.5h-13c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6V213a.8.8 0 0 1 .8-.8h13l.6.3c.2.1.3.3.3.5v6.6a.8.8 0 0 1-.9.8zm-12.1-1.7h11.3V214h-11.3v4.8z"/><path fill="#fff" d="M245.4 188.5h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M245.4 195.9h-13a1 1 0 0 1-.6-.3 1 1 0 0 1-.2-.6v-6.5c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2h13c.2 0 .4 0 .6.2l.2.6v6.6a.8.8 0 0 1-.8.8zm-12.2-1.7h11.4v-4.9h-11.4v4.9z"/><path fill="#fff" d="M245.4 200.8h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M245.4 208.2h-13a.8.8 0 0 1-.8-.8v-6.6c0-.2 0-.4.2-.6l.6-.2h13a.8.8 0 0 1 .8.8v6.5c0 .3 0 .5-.2.6l-.6.3zm-12.2-1.7h11.4v-4.8h-11.4v4.8z"/><path fill="#fff" d="M245.4 213.2h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M245.4 220.5h-13a.8.8 0 0 1-.8-.8V213c0-.2 0-.4.2-.5l.6-.3h13l.6.3.2.5v6.6c0 .2 0 .4-.2.6l-.6.2zm-12.2-1.7h11.4V214h-11.4v4.8z"/><path fill="#fff" d="M245.4 225.5h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M245.4 232.8h-13c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6v-6.5c0-.3 0-.5.2-.6l.6-.3h13a.8.8 0 0 1 .8.9v6.5c0 .2 0 .4-.2.6-.2.2-.4.2-.6.2zm-12.2-1.6h11.4v-4.9h-11.4v4.9z"/><path fill="#fff" d="M266.2 188.5h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M266.2 195.9h-13a.8.8 0 0 1-.8-.9v-6.5a.8.8 0 0 1 .8-.8h13c.2 0 .4 0 .6.2l.2.6v6.6c0 .2-.1.4-.3.5-.1.2-.3.3-.5.3zm-12.2-1.7h11.3v-4.9H254v4.9z"/><path fill="#fff" d="M266.2 200.8h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M266.2 208.2h-13l-.6-.3a.8.8 0 0 1-.2-.6v-6.5c0-.2 0-.4.2-.6l.6-.2h13c.2 0 .4 0 .6.2l.2.6v6.5a.8.8 0 0 1-.8.9zm-12.2-1.7h11.3v-4.8H254v4.8z"/><path fill="#fff" d="M266.2 213.2h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M266.2 220.5h-13c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6V213a.8.8 0 0 1 .8-.8h13l.6.3.2.5v6.6a.8.8 0 0 1-.8.8zm-12.2-1.7h11.3V214H254v4.8z"/><path fill="#fff" d="M266.2 225.5h-13v6.5h13v-6.5z"/><path fill="#DBDBDB" d="M266.2 232.8h-13a.8.8 0 0 1-.8-.8v-6.5c0-.3 0-.5.2-.6l.6-.3h13l.6.3.2.6v6.5a.8.8 0 0 1-.8.8zm-12.2-1.6h11.3v-4.9H254v4.9z"/><path fill="#fff" d="M224.8 227s-15-10.3-13.7-12.4c1.3-2.2 11.5 2.5 11.5 2.5s-2.3-9.8-3.7-11.8c-1.3-2-4.4-5.1-4.4-6.2 0-1.1 1-2.7 2-2.2a31 31 0 0 1 6.6 5.9l1 3.1s.6-6-1.1-7.6c-1.7-1.6-4-3.6-4-4.5 0-.8 1.6-2.8 2.6-2.4 2.2 1.5 4 3.3 5.7 5.4.8 2.8 1.5 5.6 2 8.4 0 0 1-6.4.2-7.9-.7-1.5-3.6-4.2-1.4-6.1 2-2 5.6 8.8 6 11.5l.2-6.8c.1-2 .8-3.2 2.5-1.3a6.6 6.6 0 0 1 1.3 4c.4 5.3-.7 10.5-1.1 15.7-.6 6.5 1.7 12.5 3.4 18.8 2 7.3 3.8 14.6 5.7 22 1.6 6.8 3.4 13.8 4.9 20.8.7 3.5 2.2 8 1.6 11.7-1 6.3-24.4 21.6-24.4 21.6l-3.3-82.2z"/><path fill="#242424" d="M228.2 310h-.4a.9.9 0 0 1-.4-.7l-3.4-81.9c-7-4.8-15-11-13.6-13.3 1.3-2.4 7.3 0 11 1.5-.7-3.4-1.8-6.7-3.2-9.9l-1.7-2.2c-1.7-2.1-2.8-3.5-2.8-4.4a3.5 3.5 0 0 1 1.5-2.8c.2-.2.5-.3.8-.3l.9.1c2.3 1.6 4.4 3.4 6.4 5.5 0-1-.4-1.9-1-2.7l-.4-.4c-2.6-2.5-3.8-3.7-3.8-4.7a4.5 4.5 0 0 1 2.1-3l.9-.3c.3 0 .6 0 .9.2a22 22 0 0 1 6 5.8l1 3.3c0-.7 0-1.5-.2-2.2l-.7-1c-1-1.6-2.8-4-.6-6 .2-.3.5-.4.7-.5h1c1.6.6 3.1 4 4.2 7.1v-1.4c0-1 .3-2.5 1.4-3 1-.3 2.2.9 2.5 1.2 1 1.3 1.5 2.9 1.6 4.5.1 3.6-.1 7.3-.7 11l-.5 5c-.4 5 1 9.8 2.4 14.8l1 3.6a1416.7 1416.7 0 0 1 11.2 45.4c1 3 1.3 6.2 1 9.4-1 6.6-22.3 20.7-24.7 22.3h-.4zm-15.7-95.2c-.4 0-.6 0-.7.2a55.7 55.7 0 0 0 13.8 11.6v.3l3.4 80.8c7.1-4.8 22.1-15.7 22.9-20.3.1-3-.2-6-1.1-8.8-.2-1-.5-1.7-.6-2.6-1.4-6.7-3-13.1-4.9-20.8a1261.7 1261.7 0 0 0-6.7-25.6c-1.4-5-2.9-10-2.4-15.4l.5-5c.6-3.5.8-7 .6-10.6a6 6 0 0 0-1-3.5l-.9-.7-.2 1.5-.1 4.5v2.2c0 .3-.1.5-.3.6l-.5.2-.6-.1a.8.8 0 0 1-.3-.6c-.5-3-3.3-10.8-4.7-11-1 .9-.5 2 .9 3.8l.8 1.4c.8 1.6 0 7.2-.2 8.3 0 .2-.1.4-.3.5l-.5.2c-.2 0-.4 0-.5-.2a23.4 23.4 0 0 0-7.5-13.6c-.4 0-1.4 1.3-1.5 1.7 1 1.2 2.1 2.4 3.3 3.3l.5.5c1.9 1.7 1.6 7.2 1.5 8.3 0 .2-.1.4-.3.5l-.5.3c-.2 0-.3 0-.5-.2a.8.8 0 0 1-.4-.4l-1-3.1c-1.9-2-4-3.9-6.2-5.4l-.2.2a2 2 0 0 0-.6 1.2c.7 1.2 1.5 2.3 2.4 3.4l1.9 2.3a66.2 66.2 0 0 1 3.8 12.6.8.8 0 0 1-.7.5h-.4a31 31 0 0 0-10-3z"/><path fill="#fff" d="m145.6 278.3 14.2-56.6s9.2-3.4 10.2-7.7c1-4.2-7.2 0-7.2 0l3-10s2.6 5.2 4.3 2.5c1.7-2.7-3.3-13-5.3-12.7-2 .3-13.5 4.2-14.2 6.2-.8 2-2.8 16.5-2.8 16.5s-29.6 53.3-29.6 57c0 3.6 27.4 4.8 27.4 4.8z"/><path fill="#242424" d="M145.6 279.1c-10.5-.4-28.2-1.6-28.2-5.6 0-4 26.2-51.2 29.6-57.3.3-2 2-14.4 2.8-16.4 1-2.6 13.1-6.6 14.9-6.8 1-.1 2 .8 3.2 2.6 1.8 2.8 4.4 8.9 3 11.4a2.1 2.1 0 0 1-2 1.2 4.3 4.3 0 0 1-2.9-2.1l-1.9 6.4c2-.9 4.8-1.7 6.1-.7.4.3.6.7.7 1.1v1.3c-1 4.2-8.4 7.4-10.4 8.2l-14.1 56.1c0 .2-.2.3-.3.5l-.5.1zm19.2-84.4a43 43 0 0 0-13.4 5.7 174.3 174.3 0 0 0-2.8 16.5c-11.4 20.5-29.4 53.9-29.5 56.7.5 1.6 12.2 3.3 25.9 3.9l14-55.9.2-.4.3-.2c2.5-.9 9-4 9.7-7.1v-.7c-.6-.5-3.7.4-6 1.6l-.5.1c-.1 0-.3 0-.4-.2a.8.8 0 0 1-.3-.4v-.4l3-10c0-.2.1-.3.3-.4l.4-.2h.5l.3.4c.7 1.3 1.9 2.8 2.5 2.9l.4-.4c.4-.8.3-3-1.2-6.4-1.4-3.3-2.9-5-3.4-5.1z"/><path fill="#85C241" d="m224.8 274.3-4.6 10.8s-44.1-6.1-69.3 3.5l-1.1-16-32.5-5.9c-1.3 3.7-1 52.8 6.5 71.7 7.5 19 32.2 35 82.9 25.5 0 0 37.7-15 46-34.5 5.3-12.6 5-43.4 3.9-60.3l-31.9 5.2z"/><path fill="#fff" d="M148.5 321.6c0 1.7.4 3.4 1 5a3.3 3.3 0 0 0 2.6 2.2c1.7.1 2.8-1.7 3.4-3.2 1.6-4.6 4.2-14.2-1.6-17-6.8-3.3-5.7 9.3-5.4 13z"/><path fill="#242424" d="M152.3 329.7h-.3a4.1 4.1 0 0 1-3.2-2.6 15 15 0 0 1-1.2-5.4v-.3c-.4-5.7-.4-11.7 2.4-13.6a4.1 4.1 0 0 1 4.2 0c6.7 3.3 3.6 13.7 2 18-.9 2.6-2.3 3.9-4 3.9zm-3-8.1c0 1.6.4 3.2 1 4.7.2.4.9 1.7 1.9 1.7 1.3 0 2.2-2 2.4-2.6 1.5-4 4.3-13.4-1.1-16-1.7-.9-2.4-.4-2.6-.3-2.4 1.7-1.8 9.5-1.7 12.1l.1.4z"/><path fill="#fff" d="M211 318.8c0 1.7.4 3.4 1.1 5a3.4 3.4 0 0 0 2.6 2.1c1.6.2 2.7-1.6 3.3-3.1 1.7-4.7 4.3-14.2-1.6-17.1-6.8-3.3-5.7 9.4-5.4 13z"/><path fill="#242424" d="M214.8 326.8h-.2a4 4 0 0 1-3.3-2.6c-.7-1.7-1.1-3.5-1.2-5.4v-.3c-.4-5.7-.5-11.7 2.3-13.6a4 4 0 0 1 4.3 0c6.7 3.3 3.6 13.8 2 18.1-.8 2.5-2.3 3.8-3.9 3.8zm-.5-20.8c-.3 0-.6 0-.9.3-2.3 1.6-1.8 9.5-1.6 12v.4c0 1.6.4 3.3 1 4.8.2.3.8 1.6 1.8 1.6 1.4 0 2.3-2 2.5-2.6 1.5-4 4.2-13.4-1.2-16a4 4 0 0 0-1.5-.5z"/><path fill="#fff" d="M216.3 316.1s-4.2-16.8-15-25.1c-10.8-8.4-25.7-7.4-32-3a42.5 42.5 0 0 0-15.5 39.4c2.4 21.4 62.5-11.3 62.5-11.3z"/><path fill="#242424" d="M164.4 335.5c-2.4 0-4.8-.4-7-1.4a8 8 0 0 1-4.3-6.7 43.4 43.4 0 0 1 15.8-40c6.3-4.4 21.7-6 33 3 10.8 8.4 15 24.9 15.2 25.6v.5l-.4.4c-1.6.8-34.4 18.6-52.3 18.6zm18-50a23 23 0 0 0-12.5 3.3 41.9 41.9 0 0 0-15.1 38.5 6.4 6.4 0 0 0 3.4 5.4c12.3 6.4 51.8-14.1 57-17a51 51 0 0 0-14.4-24 30 30 0 0 0-18.3-6.2z"/><path fill="#fff" d="M198.6 310.8c-4 1.3-7.9 3-11.8 4.5.8-3.5 5.4-7.7 7.9-10.2a36.2 36.2 0 0 0-28.4 6.8l3.4-7a35.5 35.5 0 0 0-21 21 36.7 36.7 0 0 0 18.6 46c14.3 6.1 33 4 44.8-6.2a35.8 35.8 0 0 0 11.3-22c1.2-8.7.6-19.2-3.6-26.8-2.1-3.8-5.4-7.4-10-7.9-2.8-.1-5.7.2-8.3 1.1l-2.9.7z"/><path fill="#242424" d="M184.6 376.2c-6 0-12-1.2-17.6-3.5a37.6 37.6 0 0 1-10.7-60.2 36 36 0 0 1 13.8-8.4l.4.3a.8.8 0 0 1 .1.9l-2 4.1a36 36 0 0 1 26.7-5l.3.5v.4l-.2.4-1.3 1.3c-2.3 2-4.2 4.3-5.8 6.9l2.6-1 7.6-2.9 2.7-.8c2.8-.9 5.7-1.3 8.7-1 4.2.4 7.9 3.3 10.6 8.3 3.8 6.8 5.2 17 3.7 27.2-1 8.7-5.2 16.7-11.6 22.6a43 43 0 0 1-28 9.9zM168 306.4a35 35 0 0 0-18.8 19.9 35.8 35.8 0 0 0 18.2 44.8 43.1 43.1 0 0 0 44-6c6.1-5.7 10-13.3 11-21.6 1.4-9.8 0-19.6-3.5-26.2-1.7-3.2-4.8-7-9.4-7.5-2.7-.2-5.4.2-8 1l-2.7.8c-2.5.8-5 1.8-7.4 2.8a64.2 64.2 0 0 1-4.9 1.7.8.8 0 0 1-.6-.6v-.4c.7-3.3 4.3-6.8 6.8-9.4l.2-.2a36.2 36.2 0 0 0-26.6 7.1l-.5-.1a.8.8 0 0 1-.3-.5v-.5l2.5-5z"/><path fill="#fff" d="M178.2 295.6s2-11.9 4-13.3c2.2-1.4 4.3 5.5 4.3 5.5"/><path fill="#242424" d="M178.2 296.4h-.4a.8.8 0 0 1-.4-.5v-.4c.5-2.9 2.1-12.4 4.4-13.9l.8-.2h.9c2 .8 3.5 5.3 3.7 6.2a.8.8 0 0 1 0 .7l-.3.2-.3.2-.6-.1a.8.8 0 0 1-.4-.5c-.6-2.2-1.9-4.8-2.7-5h-.2c-1.2.7-2.8 7.2-3.7 12.7 0 .2-.2.3-.3.5l-.5.1zm16.2-2.4a1.7 1.7 0 1 0 0-3.4c-1 0-1.7.8-1.7 1.8s.7 1.7 1.7 1.7zm-25 2.3c1 0 1.8-.8 1.8-1.8a1.7 1.7 0 1 0-1.8 1.8zm63.1-2.3-.4-.1a1 1 0 0 1-.3-.3c-3-4.7-12.2-6.7-12.3-6.7a.9.9 0 0 1-.7-1c0-.2.2-.4.4-.5.2-.1.4-.2.6-.1.4 0 10 2 13.3 7.4a.8.8 0 0 1 .2.6.8.8 0 0 1-.4.6l-.4.1zm-94.7-2-.5-.2a1 1 0 0 1-.3-.4v-.5l.2-.5c5.8-4.5 13.6-2.7 13.9-2.7a.8.8 0 0 1 .5.4l.1.3v.3c0 .3-.2.4-.4.6h-.6s-7.3-1.6-12.4 2.4c-.2.2-.4.2-.5.2zm11.9-4.8a.9.9 0 0 1-.6-.3s-7.3-8.3-15.6-7.7h-.3l-.3-.2-.2-.3-.1-.3v-.3l.2-.3.2-.2.4-.1c9.1-.6 16.6 8 17 8.3l.2.6c0 .3 0 .5-.2.6l-.3.2a1 1 0 0 1-.4 0z"/><path fill="#242424" d="M246.3 288.4h-.2c-.2 0-19.4-3.9-24.8-2.5a1 1 0 0 1-.3 0 1 1 0 0 1-.6-.3l-.1-.3v-.6l.3-.3.3-.1c5.8-1.5 24.7 2.2 25.5 2.4l.6.3.2.6-.3.6-.7.2z"/><path fill="#fff" d="M51.4 232.9a21.7 21.7 0 1 0 0-43.4 21.7 21.7 0 0 0 0 43.4z"/><path fill="#DBDBDB" d="M51.4 233.7a22.5 22.5 0 1 1 0-45 22.5 22.5 0 0 1 0 45zm0-43.3a20.9 20.9 0 1 0 0 41.8 20.9 20.9 0 0 0 0-41.9z"/><path fill="#fff" d="M58 226.2a2.1 2.1 0 0 0 3.7-2.1l-2.6-4.5a2.1 2.1 0 0 0-3.7 2.1l2.6 4.5z"/><path fill="#DBDBDB" d="M59.8 228.1h-.7c-.4-.2-.8-.3-1-.6-.4-.2-.7-.5-.8-.8l-2.7-4.6a3 3 0 0 1 1.1-4c.7-.3 1.5-.4 2.3-.2a3 3 0 0 1 1.8 1.3l2.6 4.5.4 1a3 3 0 0 1-3 3.4zm-2.6-8.7c-.3 0-.6 0-.8.2l-.4.7v1l2.7 4.5c.2.3.4.5.8.6a1.3 1.3 0 0 0 1.6-.9v-.5c0-.2 0-.3-.2-.5l-2.6-4.5a1.3 1.3 0 0 0-1.1-.6z"/><path fill="#fff" d="M51.4 224.2a13.6 13.6 0 1 0 0-27.2 13.6 13.6 0 0 0 0 27.2z"/><path fill="#DBDBDB" d="M51.4 225a14.6 14.6 0 0 1-12.5-7.1 14.5 14.5 0 1 1 12.5 7.2zm-11.1-8a12.7 12.7 0 0 0 12.7 6.3 12.8 12.8 0 1 0-8-23.8 12.7 12.7 0 0 0-4.7 17.5z"/><path fill="#DBDBDB" d="M52 222.8a11.2 11.2 0 1 0 0-22.3 11.2 11.2 0 0 0 0 22.3z"/><path fill="#fff" d="M330.3 216.5a12.3 12.3 0 0 0-24.6 0v10a12.3 12.3 0 1 0 24.6 0v-10z"/><path fill="#DBDBDB" d="M318 239.7a13.2 13.2 0 0 1-13.1-13.1v-10a13.1 13.1 0 1 1 26.2 0v10a13.1 13.1 0 0 1-13.1 13.1zm0-34.6a11.5 11.5 0 0 0-11.5 11.4v10a11.5 11.5 0 0 0 23 0v-10a11.5 11.5 0 0 0-11.5-11.4z"/><path fill="#DBDBDB" d="M330.3 217.4h-24.6a.8.8 0 0 1-.8-.9c0-.2 0-.4.2-.6l.6-.2h24.6c.2 0 .4 0 .6.2l.2.6c0 .3 0 .5-.2.6l-.6.3zm-12.3-3.6c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6v-8.8c0-.2 0-.4.2-.6l.6-.2c.2 0 .4 0 .6.2l.2.6v8.8c0 .2 0 .4-.2.6l-.6.2zM187 364.3a1 1 0 0 1-.3-.1.9.9 0 0 1-.3-.2l-.2-.3v-.3c0-.3.6-8.3 10.7-15.2.2-.1.4-.2.7-.1.2 0 .4.1.5.3.1.2.2.4.1.7 0 .2-.1.4-.3.5-9.4 6.4-10 13.8-10 13.9l-.1.3-.2.3-.3.1a1 1 0 0 1-.3 0zm-4.7 0h-.1c-.1 0-12.2-2.5-13.6-13 0-.2 0-.4.2-.6l.5-.3c.2 0 .4 0 .6.2l.4.5c1.1 9.3 12 11.5 12.2 11.5l.6.3.2.6c0 .3-.2.5-.3.6l-.6.2z"/><path fill="#fff" d="M339.8.8H34.1v170.4h305.7V.8z"/><path fill="#242424" d="M339.8 172H34.1a.8.8 0 0 1-.8-.8V.8c0-.2 0-.4.2-.6l.6-.2h305.7c.2 0 .4 0 .6.2l.3.6v170.4c0 .3-.1.5-.3.6-.1.2-.4.3-.6.3zM35 170.5h304V1.7H35v168.7z"/><path fill="#DBDBDB" d="M337.5 18.8h-301a.8.8 0 0 1-.9-.8.8.8 0 0 1 .8-.9h301.1l.6.3.2.6c0 .2 0 .4-.2.5l-.6.3zM44.4 11.5a2.7 2.7 0 1 0 0-5.3 2.7 2.7 0 1 0 0 5.3zm11 0a2.7 2.7 0 1 0 0-5.3 2.7 2.7 0 1 0 0 5.3zm10.9 0a2.7 2.7 0 1 0 0-5.3 2.7 2.7 0 1 0 0 5.3z"/><path fill="#242424" d="M91.7 33.9H73c-.2 0-.4 0-.6-.2a.8.8 0 0 1 0-1.2l.6-.3h18.6c.3 0 .5.1.6.3a.8.8 0 0 1 0 1.2l-.5.2z"/><path fill="#85C241" d="M138.6 33.9h-37.1c-.3 0-.5 0-.6-.2a.8.8 0 0 1 0-1.2c.1-.2.3-.3.5-.3h37.2a.8.8 0 0 1 .9.9l-.3.6-.6.2zm11.2 12.4h-37.1c-.3 0-.5-.1-.6-.3a.8.8 0 0 1-.3-.6c0-.2.1-.4.3-.5.1-.2.3-.3.6-.3h37.1a.8.8 0 0 1 .9.8.8.8 0 0 1-.9.9z"/><path fill="#242424" d="M96 46.3H77.4a.8.8 0 0 1-.8-.9.8.8 0 0 1 .8-.8H96l.6.3c.2.1.3.3.3.5a.8.8 0 0 1-.9.9zm.7 12.4h-15a.8.8 0 0 1-.8-.9c0-.2 0-.4.2-.6l.6-.2h15c.3 0 .5 0 .6.2l.3.6c0 .3-.1.5-.3.6-.1.2-.3.3-.6.3z"/><path fill="#85C241" d="M156.5 58.7h-46.6a.8.8 0 0 1-.8-.9c0-.2 0-.4.2-.6l.6-.2h46.6c.2 0 .4 0 .6.2l.2.6c0 .3 0 .5-.2.6l-.6.3z"/><path fill="#242424" d="M104.8 71H86c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2h18.7c.2 0 .4 0 .6.2a.8.8 0 0 1 0 1.2l-.6.3z"/><path fill="#85C241" d="M166.1 71h-55.3c-.3 0-.5 0-.6-.2a.8.8 0 0 1 0-1.2l.6-.2H166c.2 0 .4 0 .6.2a.8.8 0 0 1 0 1.2l-.6.3z"/><path fill="#242424" d="M99.8 83.4H81.2c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6c0-.2 0-.5.2-.6l.6-.3h18.6c.2 0 .5.1.6.3a.8.8 0 0 1 0 1.2l-.6.2z"/><path fill="#85C241" d="M137 83.4h-30c-.3 0-.5 0-.6-.2a.8.8 0 0 1 0-1.2c.1-.2.3-.3.6-.3h30l.6.3a.8.8 0 0 1 0 1.2l-.6.2zm41.4 0h-30c-.2 0-.4 0-.5-.2a.8.8 0 0 1 0-1.2c.1-.2.3-.3.5-.3h30a.8.8 0 0 1 .9.9l-.3.6-.6.2z"/><path fill="#242424" d="M87.6 95.8h-6.4a.8.8 0 0 1-.9-.8c0-.2.1-.5.3-.6.1-.2.4-.3.6-.3h6.4l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2z"/><path fill="#85C241" d="M137 95.8H98.6a.8.8 0 0 1-.8-.8c0-.2 0-.5.2-.6l.6-.3H137l.6.3.2.6c0 .2 0 .4-.3.6l-.5.2zm15.1 0h-10.7a.8.8 0 0 1-.9-.8c0-.2.1-.5.3-.6.1-.2.4-.3.6-.3H152l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2z"/><path fill="#242424" d="M91.3 108.2H81.2c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6c0-.3 0-.5.2-.6l.6-.3h10c.3 0 .5.1.7.3a.8.8 0 0 1 0 1.2l-.6.2z"/><path fill="#85C241" d="M146.4 108.2h-45.6c-.3 0-.5 0-.6-.2a.8.8 0 0 1 0-1.2c.1-.2.3-.3.6-.3h45.6a.8.8 0 0 1 .8.9c0 .2 0 .4-.2.6l-.6.2zm23.1 0H151c-.2 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6c0-.3.1-.5.3-.6.1-.2.4-.3.6-.3h18.6l.6.3a.8.8 0 0 1 0 1.2l-.6.2z"/><path fill="#242424" d="M86.7 120.6h-9.9l-.6-.3a.9.9 0 0 1-.2-.5c0-.3 0-.5.2-.6l.6-.3h9.9l.6.3.2.5c0 .3 0 .5-.2.6l-.6.3z"/><path fill="#85C241" d="M141.4 120.6H98.2l-.6-.3a.9.9 0 0 1-.2-.5c0-.3 0-.5.2-.6l.6-.3h43.2l.6.3.2.5c0 .3 0 .5-.2.6l-.6.3z"/><path fill="#242424" d="M95.5 133H76.8a.8.8 0 0 1-.8-.9c0-.2 0-.4.2-.6l.6-.2h18.7c.2 0 .4 0 .5.2l.3.6c0 .3-.1.5-.3.6-.1.2-.3.3-.5.3zm21.3 12.3H79.5c-.3 0-.5 0-.6-.2a.8.8 0 0 1 0-1.2l.6-.2h37.2a.8.8 0 0 1 .8.8l-.3.6c-.1.2-.3.2-.5.2z"/><path fill="#85C241" d="M152.1 145.3h-25.9c-.2 0-.4 0-.5-.2a.8.8 0 0 1 0-1.2l.5-.2h25.9c.2 0 .4 0 .6.2a.8.8 0 0 1 0 1.2c-.2.2-.4.2-.6.2zm35.7 0h-32c-.2 0-.4 0-.6-.2a.8.8 0 0 1 0-1.2l.6-.2h32a.8.8 0 0 1 .8.8c0 .2 0 .4-.2.6-.2.2-.4.2-.6.2z"/><path fill="#242424" d="M135.4 157.7H81.2a.8.8 0 0 1-.9-.8.8.8 0 0 1 .9-.8h54.2c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.2z"/><path fill="#85C241" d="M166.8 157.7h-24.4c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2h24.4c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.2zm76.6 0h-57.2a.8.8 0 0 1-.8-.8.8.8 0 0 1 .8-.8h57.3c.2 0 .4 0 .5.2l.3.6-.3.6-.6.2zM198.8 71h-25.2c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2h25.2a.8.8 0 0 1 .9.8l-.3.6c-.1.2-.3.3-.6.3zm18.8.2c-8.8 0-9-.2-9.2-.2a.7.7 0 0 1-.2-.3l-.2-.2v-.7l.5-.4h.5c1.4.2 17.7 0 28.5 0a.8.8 0 0 1 .8.9.8.8 0 0 1-.8.8h-20zm-22.8-24.9h-36.6a.8.8 0 0 1-.8-.9.8.8 0 0 1 .8-.8h36.6l.6.3.2.5c0 .3 0 .5-.2.6l-.6.3zm43.8 0h-36.4c-.3 0-.5-.1-.6-.3a.8.8 0 0 1-.3-.6c0-.2.1-.4.3-.5.1-.2.3-.3.6-.3h36.4c.3 0 .5.1.6.3.2.1.3.3.3.5 0 .3-.1.5-.3.6-.1.2-.3.3-.6.3zM161.2 34l-13-.1-.3-.2-.2-.2-.1-.3v-.4c0-.2.2-.3.4-.4.1-.2.4-.2.6-.2h42l.6.3a.8.8 0 0 1 0 1.2l-.6.2h-29.4z"/><path fill="#242424" d="M200.6 33.9h-.4a.8.8 0 0 1-.3-.3l-.1-.3v-.6l.3-.3c.3-.2.7-.6 25.5-.2l.3.1.3.2.2.3v.6a.8.8 0 0 1-.5.5h-.3a428.6 428.6 0 0 0-25 0z"/><path fill="#85C241" d="M165.3 120.6h-19c-.1 0-.4-.1-.5-.3a.8.8 0 0 1-.3-.5.8.8 0 0 1 .9-.9h18.9l.6.3.2.5c0 .3 0 .5-.2.6l-.6.3zM122 133h-14l-.6-.3a.8.8 0 0 1 0-1.2l.6-.2h14c.2 0 .4 0 .5.2l.3.6c0 .3 0 .5-.3.6-.1.2-.3.3-.5.3z"/><path fill="#242424" d="M160.2 133h-33a.8.8 0 0 1-.8-.9c0-.2 0-.4.2-.6l.6-.2h33c.2 0 .4 0 .6.2l.2.6c0 .3 0 .5-.2.6l-.6.3z"/><path fill="#85C241" d="M230.7 133h-63.9l-.6-.3a.8.8 0 0 1 0-1.2l.6-.2h63.9c.2 0 .4 0 .6.2l.2.6c0 .3 0 .5-.2.6l-.6.3z"/><path fill="#DBDBDB" d="M273.4 164.5c-.3 0-.5 0-.6-.2a.9.9 0 0 1-.3-.6V17.9c0-.2.1-.4.3-.5.1-.2.3-.3.6-.3l.6.3.2.5v145.8l-.3.6-.5.2z"/><path fill="#85C241" d="M325 31.7h-39.4c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2H325c.2 0 .4 0 .6.2.2.2.2.4.2.6a.8.8 0 0 1-.8.8zm0 14h-39.4c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2H325c.2 0 .4 0 .6.2.2.2.2.4.2.6a.8.8 0 0 1-.8.8z"/><path fill="#242424" d="M311.7 59.7h-26.1c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2h26.1a.8.8 0 0 1 .9.8l-.3.6-.6.2z"/><path fill="#85C241" d="M325 73.7h-27.4c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.6l.3-.6.5-.2H325c.2 0 .4 0 .6.2.2.2.2.4.2.6v.3l-.2.3-.3.2h-.3z"/><path fill="#242424" d="M314.6 87.7h-29c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2h29c.2 0 .4 0 .5.2l.3.6-.3.6-.6.2z"/><path fill="#85C241" d="M300 101.7h-14.4c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2h14.5a.8.8 0 0 1 .8.8c0 .2 0 .4-.2.6l-.6.2zm17.8 14h-32.2c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2h32.1c.3 0 .5 0 .6.2l.3.6-.3.6c-.1.2-.3.2-.6.2z"/><path fill="#242424" d="M325 129.7h-27.4c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.6l.3-.6c.1-.2.3-.2.5-.2H325c.2 0 .4 0 .6.2.2.2.2.4.2.6v.3l-.2.3-.3.2h-.3z"/><path fill="#85C241" d="M317.8 143.7h-32.2c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2h32.1c.3 0 .5 0 .6.2l.3.6-.3.6-.6.2z"/><path fill="#242424" d="M298.6 157.7h-13c-.3 0-.5 0-.6-.2a.9.9 0 0 1-.3-.6l.3-.6c.1-.2.3-.2.6-.2h13c.2 0 .5 0 .6.2l.3.6-.3.6-.6.2z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/coding2.svg b/static/img/flatline/coding2.svg
new file mode 100644 (file)
index 0000000..664f7c8
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 526.4 389.1"><g class="layer"><path fill="#FBFBFB" d="M137.3 162.4H382c8.6 0 15.6 7 15.6 15.6v130.3c0 8.7-7 15.6-15.6 15.6H137.3c-8.6 0-15.6-7-15.6-15.6V177.9c0-8.5 7-15.5 15.6-15.5z"/><path fill="#101828" d="M382 324.7H137.3c-9 0-16.4-7.3-16.4-16.4V177.9c0-9 7.3-16.5 16.4-16.5H382c9 0 16.4 7.4 16.4 16.5v130.3c0 9.1-7.4 16.6-16.4 16.6v-.1zM137.3 163.3c-8.1 0-14.7 6.6-14.7 14.8v130.3c0 8.2 6.6 14.8 14.7 14.8H382c8.2 0 14.8-6.6 14.8-14.8V177.9c0-8.2-6.6-14.8-14.8-14.8H137.3v.2z"/><path fill="#FBFBFB" d="M216.6 266.2h86c3 0 5.4 2.4 5.4 5.4V307c0 3-2.4 5.4-5.4 5.4h-86c-3 0-5.4-2.4-5.4-5.4v-35.4c0-3 2.4-5.4 5.4-5.4z"/><path fill="#DBDBDB" d="M302.6 313.2h-86a6.2 6.2 0 0 1-6.2-6.2v-35.4c0-3.5 2.8-6.2 6.2-6.2h86c3.4 0 6.2 2.7 6.2 6.2V307c0 3.5-2.8 6.2-6.2 6.2zm-86-46.2c-2.5 0-4.5 2-4.5 4.6V307c0 2.5 2 4.6 4.5 4.6h86c2.5 0 4.5-2 4.5-4.6v-35.4c0-2.5-2-4.6-4.5-4.6h-86z"/><path fill="#FBFBFB" d="M146.3 173.7h226.5c4.8 0 8.6 4 8.6 8.7v62.4c0 4.8-3.8 8.7-8.6 8.7H146.2a8.6 8.6 0 0 1-8.6-8.7v-62.4c0-4.8 4-8.6 8.6-8.6l.1-.1z"/><path fill="#DBDBDB" d="M372.9 254.3H146.2a9.4 9.4 0 0 1-9.5-9.5v-62.4c0-5.2 4.2-9.4 9.5-9.4h226.5c5.2 0 9.4 4.2 9.4 9.4v62.4c.2 5.3-4 9.5-9.3 9.5h.1zm-226.7-79.6a7.8 7.8 0 0 0-7.8 7.8v62.4c0 4.4 3.5 7.8 7.8 7.8h226.5c4.3 0 7.8-3.4 7.8-7.8v-62.4c0-4.3-3.5-7.8-7.8-7.8H146.2z"/><path fill="#FBFBFB" d="M137.3.9H382c8.6 0 15.6 7 15.6 15.6v130.2c0 8.6-7 15.6-15.6 15.6H137.3c-8.6 0-15.6-7-15.6-15.6V16.5c0-8.7 7-15.6 15.6-15.6z"/><path fill="#101828" d="M382 163.2H137.3c-9 0-16.4-7.3-16.4-16.4V16.5c0-9 7.3-16.5 16.4-16.5H382c9 0 16.4 7.4 16.4 16.5v130.4c0 9-7.4 16.3-16.4 16.3zM137.3 1.7c-8.1 0-14.7 6.6-14.7 14.8v130.4c0 8.2 6.6 14.8 14.7 14.8H382c8.2 0 14.8-6.6 14.8-14.8V16.5c0-8.2-6.6-14.8-14.8-14.8H137.3z"/><path fill="#FBFBFB" d="M525.5 24.9H420.2v155.3h105.3V24.9z"/><path fill="#DBDBDB" d="M525.5 181.1H420.2a.8.8 0 0 1-.9-.8V24.9c0-.5.4-.9.9-.9h105.3c.5 0 .9.4.9.9v155.3c0 .4-.4 1-.9 1v-.1zM421 179.4h103.7V25.8H421v153.6z"/><path fill="#DBDBDB" d="M525.5 35.9H420.2a.8.8 0 0 1-.9-.8c0-.5.4-.9.9-.9h105.3c.5 0 .9.4.9.9s-.4.8-.9.8zm-57.8 28.5h-33.5a.8.8 0 0 1-.8-.9V44.8c0-.5.3-.8.8-.8h33.4c.5 0 .8.3.8.8v18.7c0 .5-.5.9-.8.9h.1zM435 62.7h31.7v-17H435v17zm79.6 45.3h-33.4a.8.8 0 0 1-.8-.8V88.5c0-.5.4-.9.8-.9h33.4c.5 0 .8.4.8.9v18.7c0 .4-.3.8-.8.8zm-32.5-1.6h31.7v-17h-31.7v17zm-14.4 10.9h-33.5a.8.8 0 0 1-.8-.9V97.7c0-.5.3-.8.8-.8h33.4c.5 0 .8.3.8.8v18.7c0 .5-.5.9-.8.9h.1zm-32.7-1.7h31.7v-17H435v17zm57.6 50.9h-33.3a.8.8 0 0 1-.9-.9v-18.7c0-.5.4-.8.9-.8h33.3c.5 0 .9.3.9.8v18.8c.1.5-.4.9-.9.9v-.1zm-32.4-1.8h31.7v-17h-31.7v17z"/><path fill="#DBDBDB" d="M497.9 89.3a.8.8 0 0 1-.8-.8v-9.6H451a.8.8 0 0 1-.8-.9V63.7c0-.4.3-.8.8-.8s.8.4.8.8v13.6h46.1c.5 0 .9.4.9.8v10.5c-.2.5-.5.8-.9.8v-.1z"/><path fill="#DBDBDB" d="M450.9 98.7a.8.8 0 0 1-.9-.9V78c0-.4.4-.8.9-.8s.8.4.8.8v19.8c0 .4-.3.9-.8.9zm26.5 48.2a.8.8 0 0 1-.8-.8V134h-25.7a.8.8 0 0 1-.9-.9v-16.4c0-.5.4-.9.9-.9s.8.4.8.9v15.6h25.7c.5 0 .8.3.8.8v13c0 .4-.3 1-.8 1v-.2z"/><path fill="#FBFBFB" d="M95.6 22H27.4v60.7h68.2V21.9v.1z"/><path fill="#DBDBDB" d="M95.6 83.7H27.4a.8.8 0 0 1-.8-.9V22c0-.5.3-.8.8-.8h68.2c.4 0 .8.3.8.8v60.7c0 .4-.4.9-.8.9v.1zM28.2 82h66.5V22.7H28.2V82z"/><path fill="#DBDBDB" d="m49.5 64.7-.6-.2L37 53.9c-.4-.3-.4-.8 0-1.2l11.9-12.5c.3-.3.8-.3 1.2 0 .3.4.3.9 0 1.2l-11.3 12 11.3 9.9c.3.3.3.8.1 1.2l-.7.2zm21.7 0a.8.8 0 0 1-.8-.8c0-.3 0-.5.2-.6l11.3-10-11.3-11.9c-.4-.3-.4-.8 0-1.2.4-.3.8-.3 1.2 0l11.9 12.5.2.6-.2.6-11.9 10.6-.6.2zM52.6 68a.8.8 0 0 1-.8-.9v-.3l15-28.5c.2-.3.7-.6 1-.3.4.2.6.7.4 1L53.3 67.5c-.1.3-.3.5-.7.5zm43-37H27.4a.8.8 0 0 1-.8-.8c0-.5.3-.9.8-.9h68.2c.4 0 .8.4.8.9 0 .4-.4.8-.8.8z"/><path fill="#FBFBFB" d="M105.9 119.2H.9v109.3h105V119.2z"/><path fill="#DBDBDB" d="M105.9 229.2H.9a.8.8 0 0 1-.9-.8V119.1c0-.5.4-.9.9-.9h105c.5 0 .8.4.8.9v109.3c0 .5-.3.8-.8.8zM1.7 227.7H105V119.9H1.7v107.8z"/><path fill="#DBDBDB" d="M105.9 130.8H.9a.8.8 0 0 1-.9-.8c0-.5.4-.8.9-.8h105c.5 0 .8.3.8.8s-.3.8-.8.8zM23 139.6H10.1a.8.8 0 0 1-.8-.8c0-.5.3-.9.8-.9H23c.4 0 .8.4.8.9 0 .3-.4.8-.8.8zm32.2 0H29.7a.8.8 0 0 1-.9-.8c0-.5.4-.9.9-.9h25.5c.5 0 .9.4.9.9 0 .3-.4.8-.9.8zm7.8 9.7H37.4a.8.8 0 0 1-.9-.8c0-.5.4-.9.9-.9h25.5c.5 0 .9.4.9.9 0 .3-.4.8-.8.8zm-37 0H13.1a.8.8 0 0 1-.8-.8c0-.5.3-.9.8-.9H26c.4 0 .8.4.8.9 0 .3-.4.8-.8.8zm.4 9.7H16.2a.8.8 0 0 1-.8-.8c0-.5.3-.8.8-.8h10.3c.5 0 .9.3.9.8s-.4.8-.9.8h-.1zm41.2 0h-32a.8.8 0 0 1-.9-.8c0-.5.4-.8.9-.8h32c.5 0 .8.3.8.8s-.3.8-.8.8zM32 168.7H19.1a.8.8 0 0 1-.8-.8c0-.5.3-.8.8-.8H32c.4 0 .8.3.8.8s-.4.9-.8.9v-.1zm42.2 0h-38a.8.8 0 0 1-.9-.8c0-.5.4-.8.9-.8h38c.5 0 .8.3.8.8s-.3.9-.8.9v-.1zm-45.6 9.8H15.8a.8.8 0 0 1-.9-.9c0-.4.4-.8.9-.8h12.8c.5 0 .8.4.8.8 0 .5-.3.9-.8.9zm25.6 0H33.5a.8.8 0 0 1-.8-.9c0-.4.3-.8.8-.8h20.7c.4 0 .8.4.8.8 0 .5-.4.9-.8.9zm28.5 0H62a.8.8 0 0 1-.9-.9c0-.4.4-.8.9-.8h20.6c.5 0 .8.4.8.8.2.5-.2.9-.7.9zm-62.5 9.7h-4.4a.8.8 0 0 1-.9-.8c0-.5.4-.9.9-.9h4.4c.5 0 .8.4.8.9 0 .4-.3.8-.8.8zm34 0H27.8a.8.8 0 0 1-.9-.8c0-.5.4-.9.9-.9h26.4c.4 0 .8.4.8.9 0 .4-.4.8-.8.8zm10.3 0h-7.3a.8.8 0 0 1-.9-.8c0-.5.4-.9.9-.9h7.3c.5 0 .8.4.8.9.1.4-.3.8-.8.8.1 0 .1 0 0 0zm-41.8 9.7h-7a.8.8 0 0 1-.8-.8c0-.5.4-.9.9-.9h7c.4 0 .8.4.8.9s-.4.8-.9.8zm37.9 0H29.2a.8.8 0 0 1-.8-.8c0-.5.3-.9.8-.9h31.4c.5 0 .9.4.9.9s-.4.8-.9.8zm15.9 0H63.8a.8.8 0 0 1-.9-.8c0-.5.4-.9.9-.9h12.8c.5 0 .8.4.8.9s-.4.8-1 .8h.1zm-57 9.8h-6.9a.8.8 0 0 1-.8-1c0-.4.4-.7.8-.7h6.9c.5 0 .8.3.8.8s-.3.8-.8.8v.1zm37.7 0H27.4a.8.8 0 0 1-.8-1c0-.4.3-.7.8-.7h29.8c.4 0 .8.3.8.8s-.4.8-.8.8v.1zm-31.6 9.7H12.8a.8.8 0 0 1-.9-.9c0-.5.4-.8.9-.8h12.8c.5 0 .8.3.8.8s-.3.9-.8.9zm71-48.7H79.4a.8.8 0 0 1-.9-.8c0-.5.4-.8.9-.8h17.2c.5 0 .9.3.9.8s-.4.9-.9.9v-.1zm-25.9-29.1-9-.1c-.5-.1-.7-.6-.6-1 .1-.3.6-.7 1-.6H91c.5 0 .8.4.8.9 0 .4-.3.8-.8.8H70.7zm2.9 68.1h-13a.8.8 0 0 1-.8-1c0-.4.4-.7.8-.7h13c.5 0 .8.3.8.8s-.3.8-.8.8v.1zm-29.8 9.7h-9.6a.8.8 0 0 1-.8-.9c0-.5.4-.8.8-.8h9.6c.5 0 .9.3.9.8s-.4.9-.9.9zm26.4 0H47.3a.8.8 0 0 1-.8-.9c0-.5.4-.8.8-.8h22.9c.5 0 .9.3.9.8s-.4.9-.9.9z"/><path fill="#FBFBFB" d="M468.4 284.2a42.4 42.4 0 1 0 0-84.7 42.4 42.4 0 0 0 0 84.7z"/><path fill="#101828" d="M468.4 285a43.2 43.2 0 1 1 0-86.3 43.2 43.2 0 0 1 0 86.3zm0-84.7a41.5 41.5 0 1 0 0 83 41.5 41.5 0 0 0 0-83z"/><path fill="#FBFBFB" d="M487.2 272.7a4 4 0 0 1-5.8-1.5l-5.2-8.7c-1.2-2-.5-4.6 1.6-5.8a4 4 0 0 1 5.7 1.6l5.2 8.7c1 2 .3 4.6-1.6 5.8l.1-.1z"/><path fill="#101828" d="M485 274.2h-1.4a4.9 4.9 0 0 1-3-2.4l-5-8.8a5 5 0 0 1 1.8-6.9 5 5 0 0 1 6.8 1.8l5.2 8.8a5 5 0 0 1-1.8 6.8c-.8.5-1.7.7-2.6.7zm-5-17.1c-.7 0-1.3 0-1.8.5-1.5 1-2.1 3-1.2 4.5l5 8.8c1 1.5 3.2 1.9 4.6 1 1.5-1 2-2.8 1.2-4.4l-5-8.7a3.8 3.8 0 0 0-2-1.6l-.9-.1h.1z"/><path fill="#FBFBFB" d="M468.4 267.4a26.6 26.6 0 1 0 0-53.3 26.6 26.6 0 0 0 0 53.3z"/><path fill="#101828" d="M468.5 268.1a28 28 0 0 1-23.7-13.7 27.4 27.4 0 1 1 23.7 13.7zm-.1-53.1a25.7 25.7 0 0 0-22.2 38.6 25.7 25.7 0 1 0 22.2-38.6z"/><path fill="#101828" d="M468.4 262.6a21.8 21.8 0 1 0 0-43.7 21.8 21.8 0 0 0 0 43.7z"/><path fill="#85C241" d="M386.1 14.6H135.4v134.8h250.7V14.6z"/><path fill="#101828" d="M386.1 150.3H135.4a.8.8 0 0 1-.8-.9V14.7c0-.5.3-.9.8-.9h250.7c.5 0 .8.4.8.9v134.8c0 .5-.3.9-.8.9v-.1zm-249.9-1.7h249V15.4h-249v133.2z"/><path fill="#101828" d="M386.1 31.7H135.4a.8.8 0 0 1-.8-.8c0-.5.3-.9.8-.9h250.7c.5 0 .8.4.8.9s-.3.8-.8.8zM145 25.2a2.8 2.8 0 1 0 0-5.5 2.8 2.8 0 0 0 0 5.5z"/><path fill="#101828" d="M145 26.1c-2 0-3.6-1.6-3.6-3.6s1.6-3.6 3.6-3.6 3.6 1.5 3.6 3.6c0 2-1.6 3.6-3.6 3.6zm0-5.5c-1 0-2 .8-2 1.9 0 1 1 1.9 2 1.9s2-.8 2-2c0-1-1-1.8-2-1.8zm12.6 4.6a2.8 2.8 0 1 0 0-5.5 2.8 2.8 0 0 0 0 5.5z"/><path fill="#101828" d="M157.6 26.1c-2 0-3.6-1.6-3.6-3.6s1.6-3.6 3.6-3.6 3.6 1.5 3.6 3.6c0 2-1.6 3.6-3.6 3.6zm0-5.5c-1 0-2 .8-2 1.9 0 1 1 1.9 2 1.9s2-.8 2-2c0-1-1-1.8-2-1.8zm12.6 4.6a2.8 2.8 0 1 0 0-5.5 2.8 2.8 0 0 0 0 5.5z"/><path fill="#101828" d="M170.2 26.1c-2 0-3.6-1.6-3.6-3.6s1.6-3.6 3.6-3.6 3.6 1.5 3.6 3.6c0 2-1.7 3.6-3.6 3.6zm0-5.5c-1 0-2 .8-2 1.9 0 1 1 1.9 2 1.9s2-.8 2-2c0-1-1-1.8-2-1.8zm-15.4 129.7a.8.8 0 0 1-.8-.9V30.9c0-.5.4-.9.8-.9.5 0 .9.4.9.9v118.5c0 .5-.4.9-.9.9z"/><path fill="#FBFBFB" d="M200.9 40.4h-35.4a.8.8 0 0 1-.8-.9c0-.5.3-.8.8-.8h35.3c.5 0 .8.3.8.8s-.3.9-.7.9z"/><path fill="#101828" d="M221.1 40.4h-11.5a.8.8 0 0 1-.9-.9c0-.5.4-.8.9-.8h11.5c.5 0 .8.3.8.8s-.3.9-.8.9zm31.3 0H228a.8.8 0 0 1-.8-.9c0-.5.4-.8.8-.8h24.4c.5 0 .8.3.8.8s-.3.9-.8.9z"/><path fill="#FBFBFB" d="M189.6 51h-24a.8.8 0 0 1-1-.8c0-.5.4-.8 1-.8h24c.5 0 .9.3.9.8s-.5.8-.9.8z"/><path fill="#101828" d="M296.3 51h-99.5a.8.8 0 0 1-.8-.8c0-.5.4-.8.8-.8h99.5c.5 0 .9.3.9.8s-.4.8-.9.8z"/><path fill="#FBFBFB" d="M352.5 51H304a.8.8 0 0 1-.8-.8c0-.5.3-.8.8-.8h48.5c.5 0 .8.3.8.8s-.3.8-.8.8zM252.4 61.1h-86.9a.8.8 0 0 1-.8-.8c0-.5.3-.9.8-.9h86.9c.5 0 .8.4.8.9s-.3.8-.8.8z"/><path fill="#101828" d="M289.8 61.1H260a.8.8 0 0 1-.9-.8c0-.5.4-.9.9-.9h29.8c.5 0 .9.4.9.9s-.5.8-.9.8z"/><path fill="#FBFBFB" d="M177.5 79.5h-12a.8.8 0 0 1-.8-.9c0-.4.3-.8.8-.8h12c.5 0 .9.4.9.8 0 .5-.4.9-.9.9z"/><path fill="#101828" d="M215.3 79.5h-30.5a.8.8 0 0 1-.8-.9c0-.4.4-.8.8-.8h30.5c.5 0 .9.4.9.8 0 .5-.4.9-.9.9z"/><path fill="#FBFBFB" d="M191.2 89h-25.7a.8.8 0 0 1-.8-.9c0-.5.3-.8.8-.8h25.7c.5 0 .8.3.8.8s-.3.9-.8.9z"/><path fill="#101828" d="M246.6 89H197a.8.8 0 0 1-.9-.9c0-.5.4-.8.9-.8h49.6c.5 0 .9.3.9.8s-.4.9-.9.9z"/><path fill="#FBFBFB" d="M280.6 89h-26.9a.8.8 0 0 1-.8-.9c0-.5.3-.8.8-.8h26.9c.5 0 .8.3.8.8s-.4.9-.8.9zM202 99h-36.5a.8.8 0 0 1-.8-.8c0-.5.3-.8.8-.8H202c.5 0 .8.3.8.8s-.3.8-.8.8z"/><path fill="#101828" d="M270.4 99h-60.8a.8.8 0 0 1-.9-.8c0-.5.4-.8.9-.8h60.8c.5 0 .8.3.8.8s-.3.8-.8.8z"/><path fill="#FBFBFB" d="M328.2 99h-49a.8.8 0 0 1-.9-.8c0-.5.4-.8.9-.8h49c.5 0 .9.3.9.8s-.4.8-.9.8zM202 117.2h-36.5a.8.8 0 0 1-.8-.9c0-.5.3-.8.8-.8H202c.5 0 .8.3.8.8 0 .4-.3.9-.8.9z"/><path fill="#101828" d="M221.8 117.2H209a.8.8 0 0 1-.9-.9c0-.5.4-.8.9-.8h12.8c.5 0 .8.3.8.8 0 .4-.3.9-.8.9zm31.9 0H228a.8.8 0 0 1-.8-.9c0-.5.4-.8.8-.8h25.7c.5 0 .9.3.9.8 0 .4-.5.9-.9.9z"/><path fill="#FBFBFB" d="M189.6 126.5h-24a.8.8 0 0 1-1-.8c0-.5.4-.9 1-.9h24c.5 0 .9.4.9.9s-.5.8-.9.8z"/><path fill="#101828" d="M296.3 126.5H195.9a.8.8 0 0 1-.9-.8c0-.5.4-.9.9-.9h100.3c.5 0 .9.4.9.9s-.4.8-.9.8h.1zm59.3 0H304a.8.8 0 0 1-.8-.8c0-.5.3-.9.8-.9h51.6c.5 0 .8.4.8.9s-.3.8-.8.8z"/><path fill="#FBFBFB" d="M252.4 137.1h-88.8a.8.8 0 0 1-.8-.9c0-.4.3-.8.8-.8h88.8c.5 0 .8.4.8.8 0 .5-.3.9-.8.9z"/><path fill="#101828" d="M287.2 137.1H260a.8.8 0 0 1-.9-.9c0-.4.4-.8.9-.8h27.2c.5 0 .8.4.8.8 0 .5-.3.9-.8.9z"/><path fill="#FBFBFB" d="M144.2 43a2.8 2.8 0 1 0 0-5.5 2.8 2.8 0 0 0 0 5.5zm0 10a2.8 2.8 0 1 0 0-5.6 2.8 2.8 0 0 0 0 5.6zm0 9.9a2.8 2.8 0 1 0 0-5.5 2.8 2.8 0 0 0 0 5.5zm0 18.8a2.8 2.8 0 1 0 0-5.6 2.8 2.8 0 0 0 0 5.5v.1zm0 9.9a2.8 2.8 0 1 0 0-5.5 2.8 2.8 0 0 0 0 5.5zm0 10a2.8 2.8 0 1 0 0-5.6 2.8 2.8 0 0 0 0 5.6zm0 17.5a2.8 2.8 0 1 0 0-5.5 2.8 2.8 0 0 0 0 5.5zm0 9.9a2.8 2.8 0 1 0 0-5.5 2.8 2.8 0 0 0 0 5.5zm0 10a2.8 2.8 0 1 0 0-5.5 2.8 2.8 0 0 0 0 5.5zm-2.4 197.2h57.4c1.6-3.8 3.4-7.5 5.6-11 9-13 21.7-21 28.5-39.2 6.9-18.2 9.1-32.8 3.9-35.4-5.3-2.6-11.8 18.6-18.8 24 0 0-5.1-25.7-1-37 4-11.5 12.7-20 11.5-27-1.2-7-4.3-5-9.5-.7-2.6 2.3-7 9.6-7 9.6A26 26 0 0 1 216 209c5.2-7.7-7-11.2-16.2 2.5 0 0 3.6-14.2-3.3-10-7 4.2-14 20.3-14 20.3s3.9-21.4-4.9-15.6c-8.7 5.8-12 33.1-10.9 45.4 1.1 12.2 3.7 40.5-4 50.6a905.8 905.8 0 0 0-21 34h.1z"/><path fill="#101828" d="M199.2 336.9h-57.6c-.3 0-.6-.1-.7-.5a1 1 0 0 1 0-.8 645.4 645.4 0 0 1 21-33.9c7.7-10 5-39.1 3.9-50-1.2-12.9 2.1-40.2 11.2-46.1 2-1.2 3.5-1.4 4.7-.6 2.5 1.7 2.5 7.4 2.2 11.9a45.3 45.3 0 0 1 12-16.1c1.7-1 3.1-1.2 4-.5 1.7 1.2 1.6 4.8 1.3 7.7 4.4-5.2 9-7 12.2-6.7 1.7 0 3.2 1 4 2.4.8 1.5.6 3.6-.9 5.6a20 20 0 0 0-2.6 5.9 33 33 0 0 1 4.8-6c3.5-3 6-4.7 7.9-3.8 1.4.4 2.3 2.1 2.9 5.1.7 4.3-2 9.1-5.3 14.8-2.4 4-4.6 8.1-6.2 12.5-3.5 9.4-.3 29.6.7 35.1 2.5-2.5 4.9-7 7.3-11.4 4-7.3 7.4-13.5 11.2-11.6 7.8 4 .2 26.7-3.4 36.5a81 81 0 0 1-18.5 27.2c-3.7 3.8-7 8-10.2 12.1a72 72 0 0 0-5.5 10.7c.2.4-.1.5-.5.5h.1zm-56-1.7h55.4c1.6-3.6 3.4-7.2 5.4-10.6 3.3-4.3 6.6-8.4 10.4-12.3 6.7-7.3 13.6-15 18-26.8 7.2-19 8.8-32.1 4.3-34.3-2.3-1.2-5.9 5.3-8.9 11-2.9 5.2-5.8 10.6-8.9 13-.2.1-.6.2-.8.1-.3-.1-.5-.3-.5-.6-.2-1-5.2-26-1-37.5 1.8-4.5 4-8.8 6.5-12.9 3.1-5.3 5.8-9.8 5.2-13.5-.4-2.2-1-3.5-1.8-3.9-1.3-.5-3.9 1.5-6.3 3.6-2.4 2.2-6.8 9.4-7 9.5-.2.4-.6.6-1 .4-.4-.2-.5-.5-.5-.9a26 26 0 0 1 3.9-11c1-1.5 1.3-3 .8-3.9a3 3 0 0 0-2.8-1.4c-3-.2-8.4 2-13 9-.2.4-.6.5-1 .2a.8.8 0 0 1-.5-1c.9-3.2 1.5-8.4.1-9.4-.4-.4-1.5.1-2.1.5-6.6 4-13.6 19.8-13.7 19.9-.1.4-.6.6-1 .5-.3-.1-.7-.5-.6-1 1-5.1 1.6-14-.7-15.3-.6-.4-1.5-.3-2.9.6-8.1 5.2-11.7 32-10.5 44.5 1 12 3.8 40.7-4.2 51.2-2.3 2.9-9.1 13.7-20.3 32.3z"/><path fill="#FBFBFB" d="M302.1 235.5c-3.6-2.5-7.7 6-5 18.8a135.2 135.2 0 0 0 29.3 50.8c3.2 2.9 7.7 12.7 12.9 25.5h55.8c-13.7-25.9-25.5-48-26.5-49.4-2.6-3.6-5.3-26.2-4.6-39.4.6-12-.4-24.2-2.6-36-1.8-8-4.7-10.5-8.6-10.5-3.8 0-1.9 15.6-1.9 15.6-1.8-9.4-7.9-20-13.2-21.1-5.3-1.1 1.2 18.6 1.2 18.6-2.1-5.8-13.8-24.2-19-21.2-1.7 1-6 2.2.8 14.8 6.8 12.6 6.6 19.3 6.6 19.3-14.2-24.2-25.2-23.4-28.7-18.2-3.5 5.1 5.5 8.1 12.7 19 7.2 10.7 3 37.9 3 37.9-7.7-5.2-8.7-22-12.2-24.5zm49-23v-.8.9-.1z"/><path fill="#101828" d="M395.1 331.5h-55.9a.8.8 0 0 1-.7-.5c-5.8-14.3-10-22.8-12.6-25.3-11.4-11-27-37.8-29.8-51.3-2-10.2 0-17.7 3-19.8 1-.7 2.4-.7 3.4.2 1.6 1.2 2.6 4.5 4 8.7 1.5 5.2 3.4 11.5 7 14.8.7-5.8 2.9-27-3.1-36a50.5 50.5 0 0 0-8.5-9.7c-3.9-3.8-6.8-6.5-4.2-10.1a7.7 7.7 0 0 1 6.8-3.3c3.7.2 11.4 2.8 21.1 18.2a63 63 0 0 0-6-15.2c-3.2-6-4.4-10-3.6-12.7a5.2 5.2 0 0 1 2.8-3l.2-.1c1.1-.5 2.3-.6 3.3-.1 4.2 1.5 9.6 8.6 13.2 14.5-1.1-4.6-1.8-9.6-.3-11.4.6-.6 1.5-.8 2.2-.7 4.4.8 9 7.3 11.7 14.5 0-3.4.4-6.7 1.6-8.2.5-.4 1-.8 1.8-.8 4.8 0 7.7 3.5 9.4 11.2 2.4 12 3.2 24.2 2.6 36.4-.7 13.5 2 35.7 4.3 39 1 1.2 9.6 17.4 26.5 49.5.3.3 0 1-.3 1 .1 0 0 .2 0 .2h.1zm-55.2-1.7h53.9a1626.3 1626.3 0 0 0-25.8-48.1c-2.8-3.9-5.4-26.5-4.7-39.9.6-12-.4-24-2.7-36-1.9-8.6-5-9.8-7.8-9.8l-.4.2c-1.6 1.8-1.2 9.9-.8 14.4v.5c.2.1.2.3.2.4v1.1s.2 0 .2.2l.1 1 .1.3v.3c0 .4-.3.8-.7.8a.7.7 0 0 1-.8-.4h-.1v-.7l-.2-.2v-1c-.2-.1-.2-.2-.2-.3l-.1-.9v-.3l-.1-.3v-.2c-1.8-9.6-8-19.6-12.6-20.4h-.6c-1.6 1.8.7 11.3 2.7 17.5.1.5-.1 1-.5 1-.4.2-1 0-1-.4-2-5-10.6-18.7-16-20.6-.6-.3-1.3-.3-2 0h-.3c-1 .4-1.5 1.2-1.9 2-.6 2.2.5 6 3.5 11.4 6.8 12.6 6.7 19.6 6.7 19.8 0 .5-.4.8-.8.8-.3 0-.6 0-.8-.3-10.3-17.8-18-20.7-21.8-20.8-2.2-.2-4.2.7-5.4 2.5-1.7 2.3 0 4.1 4 8a54 54 0 0 1 8.7 10c7.2 11 3.4 37.5 3.1 38.6 0 .4-.4.7-1 .7l-.3-.1c-4.8-3.3-7-10.6-8.9-16.6-1-3.6-2.1-7-3.3-8-.5-.3-1.1-.3-1.5 0-2.1 1.4-4.3 8.1-2.2 18 2.6 13 18 39.8 29.2 50.5 2.8 2.7 7 11 12.9 25.3z"/><path fill="#85C241" d="M211.2 330.7c-1.3 0-62.8-21-62.8-21s-28 50.6-36.5 66.4l81 13 18.3-58.5v.1zM388 306.2l-64.8 12 17.5 62.7 82.2-6.2-34.9-68.5z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/data-analysis.svg b/static/img/flatline/data-analysis.svg
new file mode 100644 (file)
index 0000000..99b27dc
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 529.6 330.1"><g class="layer"><path fill="#fff" d="M109.7 294H39.4v35.2h70.3V294z"/><path fill="#242424" d="M109.7 330.1H39.4c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.3-.6V294a.8.8 0 0 1 .9-.8h70.3c.2 0 .4 0 .6.2l.2.6v35.3c0 .2 0 .4-.2.6l-.6.2zm-69.5-1.7H109V295H40.2v33.5z"/><path fill="#fff" d="M204.8 239.3h-70.3v90h70.3v-90z"/><path fill="#242424" d="M204.8 330.1h-70.3c-.2 0-.4 0-.6-.3a.8.8 0 0 1-.2-.5v-90c0-.2 0-.5.2-.6l.6-.3h70.3l.6.3c.2.1.2.4.2.6v90a.8.8 0 0 1-.8.8zm-69.5-1.7H204V240h-68.7v88.4z"/><path fill="#fff" d="M300 149.3h-70.4v180H300v-180z"/><path fill="#242424" d="M300 330.1h-70.4c-.2 0-.4 0-.5-.3a.8.8 0 0 1-.3-.5v-180c0-.2.1-.5.3-.6.1-.2.3-.3.5-.3H300l.6.3.2.6v180c0 .2 0 .4-.2.6l-.6.2zm-69.5-1.7H299V150h-68.6v178.4z"/><path fill="#fff" d="M395.1 82.5h-70.3v246.8h70.3V82.5z"/><path fill="#242424" d="M395.1 330.1h-70.3c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6V82.6c0-.2 0-.4.2-.6l.6-.2h70.3c.2 0 .5 0 .6.2l.3.6v246.7a.8.8 0 0 1-.9.8zm-69.5-1.7h68.7v-245h-68.7v245z"/><path fill="#fff" d="M490.2 217.4H420v111.8h70.3V217.4z"/><path fill="#242424" d="M490.2 330.1H420c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6V217.4a.8.8 0 0 1 .8-.8h70.3a.8.8 0 0 1 .9.8v111.9l-.3.6-.6.2zm-69.4-1.7h68.6V218.2h-68.6v110.2z"/><path fill="#fff" d="M264.3 8.3c1.8-2.1 4-4 6.4-5.6a13.3 13.3 0 0 1 14.5.6 5.7 5.7 0 0 1 4.6-1.8c6 .2 10.2 5.3 13 10 3.4 6 4.4 13.3 7.7 19.4 3 5.4 11.1 9.2 16.5 12 4 1.9 7.7 4.2 11.1 6.9a25.7 25.7 0 0 1 6.8 26.6 33.6 33.6 0 0 1-19.6 20.3 80 80 0 0 1-23.8 4.8c-3.2-.2-6.2-1.2-9.3-1.7-3-.2-6-.7-9-1.4-8-2.5-11.7-9.3-15.4-16.2-4.7-8.5-6.3-18-8.7-27.2-3.5-13.3-4.4-35.7 5.2-46.7z"/><path fill="#242424" d="M303.2 102.3h-1.7a40 40 0 0 1-5.8-1 61 61 0 0 0-3.6-.7l-3-.4a43 43 0 0 1-6.1-1c-8.1-2.6-12-9.5-15.6-16.1l-.3-.5a85.9 85.9 0 0 1-7.5-22l-1.3-5.4c-3.4-12.7-4.6-35.9 5.3-47.4 2-2.2 4.2-4.2 6.7-5.8a14.1 14.1 0 0 1 14.8.2 6.6 6.6 0 0 1 4.8-1.5c5.2.2 9.7 3.7 13.6 10.5a55 55 0 0 1 4 10c1 3.3 2.3 6.4 3.8 9.4 2.5 4.6 9.3 8.2 14.3 10.8l1.8.9 2 1c3.3 1.6 6.5 3.6 9.4 5.9a26.7 26.7 0 0 1 7 27.6 34.1 34.1 0 0 1-20.1 20.7 78.3 78.3 0 0 1-22.5 4.8zM265 8.8c-9.6 11-8.3 33.5-5 46l1.3 5.3c1.8 7.3 3.6 15 7.3 21.6l.3.5c3.7 6.7 7.2 13 14.7 15.3 1.9.5 3.8.8 5.8 1a53 53 0 0 1 6.8 1.1c1.8.5 3.6.8 5.5 1a75.6 75.6 0 0 0 23.4-4.8A32.4 32.4 0 0 0 344.2 76a25 25 0 0 0-6.5-25.8 45 45 0 0 0-9.1-5.7l-2-1-1.7-.9c-5.4-2.9-12.2-6.4-15-11.5-1.6-3-2.9-6.2-4-9.5-1-3.4-2.3-6.7-3.9-9.8-3.6-6.2-7.6-9.5-12.1-9.7a4.7 4.7 0 0 0-4 1.5c-.1.2-.3.3-.5.3l-.6-.1a12.4 12.4 0 0 0-13.6-.6 29.6 29.6 0 0 0-6.3 5.5z"/><path fill="#fff" d="M224.8 71.5S220 54 218.7 53.3c-1.4-.7-1.4 4.3-1.4 4.3a27.5 27.5 0 0 0-10.7-5.6c-5.6-1.2-7 .5-6 1.3.9.9 8 2.3 8 2.3s-9.6-.3-9.3 1.6c.3 2 8.7 1.2 8.7 1.2s-9.2 1.2-7.8 3c1.4 2 8.3 0 8.3 0s-10 2.4-7.1 3.9c2.8 1.5 9.4-1.4 10.6.4 1.2 1.8 3 10.2 3 10.2l9.8-4.4z"/><path fill="#242424" d="M215 76.7a1 1 0 0 1-.4 0 1 1 0 0 1-.2-.2l-.2-.3c-.5-2.3-2-8.6-2.8-10-.3-.4-2.6-.1-4 0-2.3.4-4.8.7-6.4-.1-.9-.5-1-1.1-.9-1.5 0-.3.7-1 1.5-1.5a3 3 0 0 1-2-1 1.3 1.3 0 0 1-.2-1.4c.5-.7 1.2-1.2 2-1.5-1.6-.2-2.7-.8-2.8-1.8V57l.3-.6a6.8 6.8 0 0 1 3.9-1.2c-1-.2-2-.6-2.7-1.1-.3-.2-.4-.5-.5-.8l.1-.9c.7-1.4 3.4-1.7 7-1 3.7 1 7 2.6 10 4.9 0-1.4.4-2.9 1.1-3.4l.6-.1.7.1a74.8 74.8 0 0 1 6.3 19.1c0 .2-.2.3-.3.4l-9.8 4.4h-.3zm-4.8-12.3c.4 0 1 0 1.3.2.5.1.9.4 1.1.8 1.3 3 2.3 6.2 2.9 9.4l8.3-3.8c-1.4-5.6-3.2-11.2-5.3-16.6a12 12 0 0 0-.4 3.3c0 .1 0 .3-.2.4l-.3.3h-.4l-.4-.1c-3-2.6-6.5-4.5-10.3-5.5-4-.8-5.3 0-5.4.1a46.6 46.6 0 0 0 8.2 2.3l.1.5-.2.5-.6.2c-4-.1-8 .3-8.5 1 .3.4 4 .7 7.8.4l.6.1a.8.8 0 0 1 0 1c0 .2-.2.3-.4.4-3.5.4-7 1.4-7.3 2 .6.6 3.6.4 6.5-.2l1.1-.3.6.1c.1.1.3.3.3.5v.6c-.2.1-.3.3-.5.3l-1.2.3c-2 .4-4 1.1-5.8 2.1 1.8.5 3.6.5 5.4 0l3-.2v-.1z"/><path fill="#85C241" d="m236.2 93.6-10.8-25.8s-14.6 4-14.3 5c.3.9 6.8 29.3 8 29.3 1.2 0 17.1-8.5 17.1-8.5z"/><path fill="#fff" d="M186.4 198.8a7.8 7.8 0 0 1-4.4 2.2c-1.9 0-22.7-3.9-23.5-1-.9 2.8.8 4.2 5.8 6.6 6.7 3.2 29 10.5 29 10.5l4.8-11.5-11.7-6.8z"/><path fill="#242424" d="M193.3 217.8h-.3a437 437 0 0 1-29-10.5c-4.4-2-7.4-3.8-6.2-7.5.7-2.4 7.3-1.9 20 0l4.2.5c1.4-.2 2.7-.9 3.8-1.9l.4-.2h.5l11.8 6.8a.7.7 0 0 1 .3.9l-4.8 11.5-.3.3-.4.1zm-31-18.1c-1.6 0-2.8.1-3.1.5-.6 2 .1 3.2 5.4 5.7a420 420 0 0 0 28.2 10.2l4.4-10.2-10.7-6.1a8.2 8.2 0 0 1-4.5 2l-4.3-.6a132 132 0 0 0-15.3-1.5z"/><path fill="#fff" d="M234.4 209.7s-23.1 4.5-24.3 5.8c-1.1 1.4.3 3.2 6.1 4.6 5.8 1.3 31.1 3.4 31.1 3.4s1.3-6.7.2-10.4c-1-3.7-13.1-3.4-13.1-3.4z"/><path fill="#242424" d="M247.3 224.3c-1 0-25.4-2.1-31.2-3.5-4-1-6.4-2.2-6.9-3.8a2 2 0 0 1 0-1c0-.4.2-.7.4-1 1.2-1.4 17.7-4.7 24.7-6h.1c2.2 0 12.7 0 14 3.9 1.1 4-.3 10.4-.3 10.8 0 .2 0 .3-.2.5l-.6.1zm-12.8-13.9a185.4 185.4 0 0 0-24 5.9v.3c.2.2.8 1.6 6 2.7 5 1.1 26 3 30.2 3.4.6-3.1.6-6.3 0-9.4-.6-2.1-7.5-3-12.2-2.9z"/><path fill="#85C241" d="M311.2 127.4s15.6-34 13.6-56.5-16.6-23.8-21.7-24.1c-5-.3-31.9-4-41.7 8.2-9.9 12.1-7.3 70-7.3 70l57 2.4z"/><path fill="#242424" d="m276.6 57.1 2.3 37.2L296.2 54l-19.6 3z"/><path fill="#242424" d="M278.9 95.1h-.1a.8.8 0 0 1-.5-.3.8.8 0 0 1-.3-.5l-2.3-37a.8.8 0 0 1 .7-1l19.7-3 .4.1.4.2a.9.9 0 0 1 0 .9l-17.3 40.2-.3.3-.4.1zm-1.4-37.3 2 33L294.8 55l-17.4 2.7zM253 113.5c-15 4.4-29.1 11-42 19.5-9.2 6.1-26.2 66.8-26.2 66.8s2 10.5 14 8.8l53-68.6s11.4-26.6 1.2-26.5z"/><path fill="#242424" d="M196.4 209.6a12.3 12.3 0 0 1-12.4-10c.7-2.6 17.2-61 26.4-67.4a159.1 159.1 0 0 1 42.7-19.5 4.4 4.4 0 0 1 3.8 1.9c4 5.9-3.4 23.7-4.3 25.7l-.1.2-53 68.7-.2.2h-.4c-.8.2-1.7.2-2.5.2zm-10.7-9.8c.3 1.3 2.6 9.2 12.7 8l52.7-68.3c2.3-5.3 7.4-19.7 4.5-24a3 3 0 0 0-2.5-1.2 158 158 0 0 0-41.7 19.3c-7 4.7-20 45.3-25.7 66.2z"/><path fill="#242424" d="m311.2 127.4-55.4-7.4s-15.4 5.7-23.3 20.3c-8 14.6-2.8 71.5-2.8 71.5s11 3.9 19.3 2.3l16.6-63s42.7 4.4 45.6-23.7z"/><path fill="#242424" d="M244.5 215.3a52.7 52.7 0 0 1-15.5-3 .7.7 0 0 1-.2-.4c-.2-2.3-5-57.4 3-72a49 49 0 0 1 24.1-20.7c10.7 1.6 55 7.4 55.4 7.4a.8.8 0 0 1 .7 1c-1.2 11.8-9.7 19.8-24.5 23-7 1.5-14.2 2-21.3 1.4l-16.4 62.3-.2.4-.4.2c-1.6.3-3.1.5-4.7.4zm-14-4c2.1.6 11 3.3 17.8 2l16.5-62.4c0-.2.2-.4.3-.5l.6-.1c7.2.5 14.4.1 21.5-1.3 14-3 21.7-10 23.1-20.8-6-.8-44.1-5.9-54.3-7.4-1.8.8-15.6 6.7-22.8 19.9-7.2 13.2-3.3 64.7-2.8 70.5z"/><path fill="#85C241" d="M261.4 55s-7.3 14-11.6 21.2c-4 6.2-8.6 12-13.6 17.5 0 0-33 11.7-33.2 12.3-.2.7 3.1 11.7 3.1 11.7s34.7-2.5 40.4-5.2c5.7-2.7 17.3-16 17.3-16L261.4 55z"/><path fill="#fff" d="M276.6 45v12.1a8.9 8.9 0 0 0 10.7 4.7c8-2 9-7.7 9-7.7l-.5-22.4s-6.4-3.8-7.7-17.8c0 0-5.4 6.4-17.2 5 0 0-2.2 12-1.3 18.1.8 6.2 6.9 8 7 8z"/><path fill="#242424" d="M284.5 63a9.6 9.6 0 0 1-8.7-5.5V45.6a10.9 10.9 0 0 1-7-8.4 77.3 77.3 0 0 1 1.7-18.9c.1-.1.3-.2.6-.1 11.1 1.2 16.3-4.7 16.4-4.8l.4-.3h.5l.4.3.2.5c1.2 13.3 7.3 17 7.3 17.1l.3.3.1.4.4 22.4c0 .4-1.2 6.4-9.5 8.6-1 .2-2 .3-3.1.3zm-7.1-6a8 8 0 0 0 9.7 4c7.3-1.9 8.2-6.8 8.3-7l-.3-21.9c-1.4-1-6.1-5.3-7.6-16.5a21 21 0 0 1-15.9 4.2 75 75 0 0 0-1.2 17.1 9.4 9.4 0 0 0 6.4 7.3l.3.2.3.3V57z"/><path fill="#fff" d="M291.2 31.3c.2-1 .8-2 1.7-2.8a9 9 0 0 1 2.7-1.4c.5-.2 1.1-.3 1.7-.3.4 0 .8.2 1.1.4a4 4 0 0 1 2 2c.2.7.2 1.5.1 2.3a7 7 0 0 1-.6 2.4 6.2 6.2 0 0 1-3.5 3.4 6.4 6.4 0 0 1-4.8-.1"/><path fill="#242424" d="M294.2 38.6c-1 0-2-.2-2.8-.6a.8.8 0 0 1-.5-.4v-.7l.2-.3.3-.1h.6c.7.3 1.4.4 2.1.4a5.5 5.5 0 0 0 5.1-3.3c.3-.8.5-1.5.5-2.3a4 4 0 0 0 0-1.8c-.3-.7-.9-1.2-1.5-1.6l-.9-.3a8.5 8.5 0 0 0-3.8 1.6c-.7.6-1.2 1.4-1.4 2.3a.9.9 0 0 1-1.7-.3 6 6 0 0 1 2-3.4c1-.7 2-1.2 3-1.6.7-.2 1.4-.4 2-.3.6 0 1 .2 1.5.5a5 5 0 0 1 2.4 2.4 10.3 10.3 0 0 1-.5 5.3 7.3 7.3 0 0 1-4 3.9c-.8.4-1.7.6-2.6.6z"/><path fill="#fff" d="M281 26.4s-4.3 6.1-3.4 7.2c1 1.1 3.8.5 3.8.5"/><path fill="#242424" d="M279.7 35.1a3.5 3.5 0 0 1-2.7-1c-1-1 .2-3.8 3.3-8.2l.6-.3.6.1c.2.2.3.3.3.6v.6a19 19 0 0 0-3.4 6.3c1 .3 2 .3 2.9 0h.6l.2.3.1.3v.6l-.6.4a8 8 0 0 1-1.9.3zm7.7-9.4c0-.8-.4-1.5-1-1.5-.5 0-1 .5-1 1.3-.1.8.3 1.5.9 1.5.5 0 1-.5 1-1.3zm-8.6-.8c0-.8-.4-1.5-1-1.5-.5 0-1 .5-1.1 1.3 0 .8.4 1.5 1 1.6.5 0 1-.6 1-1.4zm2.5 15.8c-2.5-.1-5-1-7.1-2.3a.8.8 0 0 1-.2-1.1.9.9 0 0 1 1-.3s4.7 3 8.4 1.7a7 7 0 0 0 4-4.7c0-.2.2-.4.4-.5h.6c.2 0 .4.2.5.4v.7a8.3 8.3 0 0 1-5 5.7c-.8.3-1.7.4-2.6.4zm-4.7 4.3s7.5 1.7 12-.8c0 0-5 10.2-12 9.1V45z"/><path fill="#242424" d="m277.6 54.3-1.2-.1a.8.8 0 0 1-.5-.3.8.8 0 0 1-.2-.6V45l.1-.3.2-.3.4-.2h.4s7.2 1.7 11.3-.7l.5-.1.5.2.3.5-.1.5c-.2.4-4.8 9.7-11.7 9.7zm-.2-1.7c4.2 0 7.5-4 9.2-6.7-3 .7-6.2.7-9.2.2v6.5z"/><path fill="#85C241" d="M317.6 52.3c6.1 1 31 58.7 22.5 65.3-13.3 10.3-59.7-.1-59.7-.1l3.8-17.9s29.8.8 30.3-5.3c.4-6.1-17.4-34.4-15-38.7 2.3-4.2 18-3.3 18-3.3z"/><path fill="#fff" d="M287.4 105.6c-5 .3-9.9 0-14.8-.7-3.6-.9-7.3-1.3-11-1.3a41.8 41.8 0 0 0-14.8 3.7c-.5.6.6 1.2 1.3 1.2 2 0 4-.2 5.9-.7a56.1 56.1 0 0 0-13.2 7c-.5.3-1 .8-.8 1.3.3.6 1.2.5 1.8.2l10.7-4.9a26.6 26.6 0 0 0-7.6 4.6c-.3.3-.7.7-.6 1.1.2.7 1.2.6 1.9.3 3.2-1.7 6.3-3.6 9.3-5.7l-6.6 5c-.1.5.4 1 1 1 .5 0 1-.2 1.5-.5l7.4-4.3-4.6 3.2c-.7.5-1.6 1.3-1.2 2.2.4.8 1.8.6 2.8.2a55.7 55.7 0 0 1 16-4.5c2.4.3 4.6.8 6.8 1.4l10 2.3"/><path fill="#242424" d="M254.1 119.6a2 2 0 0 1-1.4-.5c-.2-.1-.3-.3-.4-.6-.1-.3-.2-.6-.1-1l-.4.3c-.6.4-1.2.6-2 .6-.2 0-.5 0-.7-.2a1.8 1.8 0 0 1-1-1l-1.6.8c-.4.1-.7.3-1.1.3-.4 0-.8 0-1.1-.2-.2 0-.4-.2-.5-.3l-.3-.6c0-.4 0-.7.2-1l-1.7.7c-.6.3-1.3.4-2 .2-.2 0-.3-.1-.5-.3l-.3-.4c-.1-.4-.4-1.3 1-2.3 2.6-1.9 5.3-3.5 8.2-5h-.3c-.4 0-.8 0-1.1-.2l-1-.8v-.7c0-.2 0-.5.2-.6.2-.3.5-.5.8-.6 4.6-2 9.5-3.1 14.5-3.4 3.4 0 6.7.3 10 1l1.3.3a69 69 0 0 0 15.2 1l.2.2a.8.8 0 0 1-.2.8c-.1.2-.3.2-.5.3-5 .3-10 0-15-.8l-1.4-.2c-3-.8-6.3-1.1-9.5-1-4.8.2-9.5 1.3-14 3.1l.6.1c1.9.1 3.8-.1 5.6-.7l.5.1.4.5v.5l-.4.4a55 55 0 0 0-13.5 7.4l.7-.3 8.3-3.8 2.5-1.1a.8.8 0 0 1 1 .4.8.8 0 0 1-.4 1l-2.4 1a25.5 25.5 0 0 0-5.4 3.8l.8-.3a60.6 60.6 0 0 0 9.7-5.8c.2 0 .4.2.5.3a.7.7 0 0 1-.1 1l-6.1 4.8h.1c.4-.1.8-.2 1.1-.5l7.4-4.2c.1-.1.3-.2.5-.1.2 0 .4.2.5.3v.6c0 .2 0 .3-.2.4l-4.7 3.4c-.6.4-1 1-1 1.2l.2.1c.6 0 1.2 0 1.7-.3a54 54 0 0 1 12-3.7l1.3-.3c1-.4 2.1-.5 3.2-.6 1.6.2 3.2.5 4.8 1l2 .5a1297.5 1297.5 0 0 1 10.5 2.6v.6a.8.8 0 0 1-.8.6 851 851 0 0 0-16.6-3.7c-.9 0-1.8.1-2.7.4l-1.5.4c-4 .8-7.9 2-11.6 3.6a5 5 0 0 1-2 .5z"/><path fill="#fff" d="M264.6 60c-1.7 1.7-5.8 27.9-7.3 40.3l7.3-40.3z"/><path fill="#242424" d="M257.3 101h-.1a.8.8 0 0 1-.5-.3.8.8 0 0 1-.2-.5c1-7.7 5.4-38.6 7.5-40.7l.3-.2.3-.1h.3l.3.2.1.3.1.3a.7.7 0 0 1-.3.5 283 283 0 0 0-7.3 40.3c-.2.2-.3.2-.5.2z"/><path fill="#fff" d="m202.3 125 .3 3 67.9 9.8-.7-3.1-67.5-9.8z"/><path fill="#242424" d="M270.5 138.7h-.1l-67.9-10a.8.8 0 0 1-.7-.7l-.3-3a.8.8 0 0 1 .2-.7l.4-.1h.3l67.5 9.7c.2 0 .3 0 .4.2.2.1.2.3.3.4l.7 3.2v.4l-.2.3-.6.3zm-67.1-11.5 66 9.7-.3-1.5-65.8-9.5v1.3z"/><path fill="#fff" d="M202.3 125s15.5-13.4 16-13.2c.5.2 70 8.4 70 8.4l-18.5 14.5-67.5-9.8z"/><path fill="#242424" d="M269.8 135.5h-.1l-67.5-9.7-.4-.2a.8.8 0 0 1-.3-.4v-.5l.3-.4c15.8-13.5 16.2-13.3 16.7-13.3a11261.7 11261.7 0 0 0 70.3 8.5l.2.4v.5l-.3.4-18.4 14.4c-.1.2-.3.3-.5.3zm-65.5-11.1 65.3 9.4 16.6-13c-17.5-2-63.4-7.6-67.7-8.2-1.4 1-8.9 7.2-14.2 11.8z"/><path fill="#fff" d="m270.5 137.8 18-14.6-.2-3-18.5 14.5.7 3.1z"/><path fill="#242424" d="M270.5 138.7a.9.9 0 0 1-.8-.7l-.7-3.1v-.5l.3-.4 18.4-14.4a.9.9 0 0 1 1.2.1l.2.4.3 3-.1.5-.3.3-18 14.6-.5.2zm.2-3.7.3 1.4 16.7-13.5-.1-1-16.9 13.1z"/><path fill="#fff" d="m202.3 125-13-43.8L261 93.4l9 41.3-67.6-9.8z"/><path fill="#242424" d="M269.8 135.5h-.1l-67.5-9.7a.8.8 0 0 1-.6-.6l-13-43.7-.1-.5c0-.1 0-.2.2-.3l.3-.3h.5L261 92.6l.4.2c.2.1.2.3.3.4l9 41.3v.4l-.3.4-.3.2h-.3zM203 124.2l65.8 9.5-8.6-39.6-69.7-11.8 12.5 41.9z"/><path fill="#fff" d="M228.1 168c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.5c0-.8-1.3-19.4 4.5-27.5.1-.2.3-.3.5-.3l.6.1.4.6c0 .2 0 .4-.2.6-5.4 7.6-4.1 26.2-4.1 26.4a.9.9 0 0 1-.5.8h-.3z"/><path fill="#242424" d="M288.5 90.7c-.1 0-.3 0-.4-.2a.8.8 0 0 1-.3-.9l.2-.4a66.4 66.4 0 0 0 11.2-12.4c.4-1.7-2.6-3.8-3.7-4.4a.8.8 0 0 1-.3-.3.8.8 0 0 1 .2-1.1 64 64 0 0 0 5.4-5 40.2 40.2 0 0 0-2.2-10.5l.1-.3.2-.3.3-.1h.6l.5.5C301.6 60 303 65.7 302 67a48.9 48.9 0 0 1-4.8 4.5c1.5 1 4 3.2 3.5 5.6-.6 2.8-9.8 11.5-11.7 13.3l-.3.2h-.3z"/><path fill="#242424" d="M303 123.7h-.1l-14.5-2.5a.8.8 0 0 1-.5-.3.8.8 0 0 1-.2-.5l-.5-17.4c0-.2 0-.4.2-.5l.6-.3 25.8-2.7-11.4-39.3V60a.9.9 0 0 1 .3-.5l.3-.2h.6l.3.3.1.3 11.7 40.2v.4a.8.8 0 0 1-.4.6h-.3l-26.1 2.8.4 15.9 13.8 2.3c.1 0 .2 0 .3.2.1 0 .2 0 .3.2l.1.3v.3c0 .2-.1.4-.3.5l-.5.2zm-28-33a1 1 0 0 1-.5-.1 101 101 0 0 1-7.2-15.3c-.8-3.3 2.3-5.5 4.3-6.6a32 32 0 0 1-4-2.9c-.4-.4-1.8-1.8 5.8-9.7l.3-.1a.9.9 0 0 1 .6 0l.3.1c.2.2.2.4.2.6 0 .3 0 .5-.2.6-3 3.2-5.6 6.5-5.7 7.5a45.3 45.3 0 0 0 5.1 3.6v.9l-.4.3s-5.5 2-4.7 5.3a100.4 100.4 0 0 0 6.8 14.9v.3l-.1.3-.3.2a1 1 0 0 1-.4 0zm-59-28.6c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.4c0-.8 0-1.6.3-2.4.3-.8.7-1.5 1.3-2a.8.8 0 0 1 1.2.2v.3a.7.7 0 0 1-.1.5c-.4.4-.7 1-.9 1.4-.2.6-.3 1.1-.2 1.7 0 .2 0 .4-.2.6l-.5.2-.1.1z"/><path fill="#B6B6B6" d="M528.8 330.1H.8c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6V3.7c0-.2 0-.4.2-.5l.6-.3a.8.8 0 0 1 .9.8v324.7h527.1l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2z"/><path fill="#fff" d="M55.7 30.9A68.4 68.4 0 0 0 32.4 78h30a39 39 0 0 1 34-34.1v-30c-15 1-29.4 7-40.7 17z"/><path fill="#B6B6B6" d="M62.4 78.8h-30a1 1 0 0 1-.3 0 .8.8 0 0 1-.3-.2 1 1 0 0 1-.3-.7 68.8 68.8 0 0 1 23.6-47.6 68.6 68.6 0 0 1 42-17l.2.3v30.3l-.1.6-.6.3A38.3 38.3 0 0 0 63.3 78c0 .2-.1.4-.3.5-.2.2-.4.2-.6.2zm-29-1.7h28.2a39.6 39.6 0 0 1 34-34V14.8a68 68 0 0 0-62.3 62.3z"/><path fill="#fff" d="M169.5 78a68.4 68.4 0 0 0-16.9-40.8l-21.1 21.1A38.6 38.6 0 0 1 125 113a38.4 38.4 0 0 1-48.2 0 38.5 38.5 0 0 1-14.5-26h-30a68.2 68.2 0 0 0 23.3 47.2 68.2 68.2 0 0 0 45.3 17h4.4a68.3 68.3 0 0 0 47.2-23.4 68.3 68.3 0 0 0 17-49.7z"/><path fill="#B6B6B6" d="m101 152-4.6-.1a68.6 68.6 0 0 1-47.7-23.6 68.7 68.7 0 0 1-17-41.6l.1-.3.3-.2h30.3c.2 0 .4 0 .6.2l.2.5a38.1 38.1 0 0 0 61.3 25.3 37.8 37.8 0 0 0 6.2-53.4.9.9 0 0 1-.2-.5l.2-.5L152 36.7l.3-.2h.7l.2.2a68.8 68.8 0 0 1 17.3 45.8l-.1 4.6a68.6 68.6 0 0 1-23.7 47.7A68.6 68.6 0 0 1 101 152zM33.3 87.8a66.9 66.9 0 0 0 23 45.6 67 67 0 0 0 49 16.8 67 67 0 0 0 46.6-23 67 67 0 0 0 16.8-44.7l-.1-4.4a67 67 0 0 0-16-39.8l-20 20a39.5 39.5 0 0 1-56.1 55 35.8 35.8 0 0 1-6.7-6.2 39.5 39.5 0 0 1-8.2-19.3H33.3z"/><path fill="#85C241" d="M146.3 30.9a68.3 68.3 0 0 0-40.9-17v30c7.2.9 14 3.7 19.7 8.2l21.2-21.2z"/><path fill="#fff" d="M483.2 78.5H420v7.7h63.3v-7.7z"/><path fill="#B6B6B6" d="M483.2 87H420c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6v-7.7c0-.2 0-.5.2-.6l.6-.3h63.3a.8.8 0 0 1 .9.9v7.7l-.3.6-.6.2zm-62.4-1.7h61.6v-6h-61.6v6z"/><path fill="#fff" d="M465.4 101H420v7.7h45.6V101z"/><path fill="#B6B6B6" d="M465.4 109.6H420l-.6-.3a.8.8 0 0 1-.2-.6V101c0-.2 0-.4.2-.6l.6-.2h45.6c.2 0 .4 0 .5.2l.3.6v7.7a.8.8 0 0 1-.9.9zm-44.6-1.7h43.8v-6h-43.8v6z"/><path fill="#fff" d="M439.7 123.6H420v7.7h19.8v-7.7z"/><path fill="#B6B6B6" d="M439.8 132.1H420c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6v-7.7c0-.2 0-.5.2-.6l.6-.3h20a.8.8 0 0 1 .7.9v7.7a.8.8 0 0 1-.8.8zm-19-1.7H439v-6h-18.2v6z"/><path fill="#fff" d="M517.2 146.1h-97.3v7.7h97.3v-7.7z"/><path fill="#B6B6B6" d="M517.2 154.7h-97.3l-.6-.3a.8.8 0 0 1-.2-.6v-7.7c0-.2 0-.4.2-.6l.6-.2h97.3a.8.8 0 0 1 .8.8v7.7a.8.8 0 0 1-.8.8zm-96.4-1.7h95.5v-6h-95.5v6z"/><path fill="#fff" d="M471.7 168.7H420v7.7h51.8v-7.7z"/><path fill="#B6B6B6" d="M471.7 177.2H420c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6v-7.7a.8.8 0 0 1 .8-.9h51.8l.6.3c.2.1.2.3.2.6v7.7a.8.8 0 0 1-.8.8zm-51-1.7H471v-6h-50.1v6z"/><path fill="#242424" d="m76.7 269.4-.6-.3a.8.8 0 0 1-.2-.6v-30.4c0-.2 0-.4.2-.5a.8.8 0 0 1 1.4.5v30.4a.8.8 0 0 1-.8.9z"/><path fill="#fff" d="M92.3 267.3H61c-1 0-1.7.8-1.7 1.7v.6c0 1 .7 1.7 1.7 1.7h31.2c1 0 1.7-.8 1.7-1.7v-.6c0-.9-.8-1.7-1.7-1.7z"/><path fill="#242424" d="M92.3 272.1H61c-.7 0-1.3-.2-1.8-.7-.5-.5-.8-1.1-.8-1.8v-.6c0-.7.3-1.3.8-1.8s1.1-.7 1.8-.7h31.2a2.6 2.6 0 0 1 2.5 2.5v.6c0 .7-.3 1.3-.7 1.8-.5.4-1.1.7-1.8.7zm-31.2-4-.6.3-.3.6v.6a.8.8 0 0 0 .9.8h31.2c.2 0 .4 0 .6-.2l.2-.6v-.6c0-.2 0-.4-.2-.6a.8.8 0 0 0-.6-.2H61z"/><path fill="#fff" d="M87.7 294h-22l-4.8-22.7h31.6L87.7 294z"/><path fill="#242424" d="M87.7 294.9h-22c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.5L60 271.4v-.3l.1-.4a1 1 0 0 1 .7-.3h31.6l.3.1a.9.9 0 0 1 .5 1l-4.8 22.7c0 .2-.1.4-.3.5l-.5.2zm-21.3-1.7H87l4.5-21H62l4.4 21zm9.5-48.7s3.6-7 9.1-8.8c5.5-1.8 12.6-3.4 10.5-9-2-5.7-12.9-6.6-17.4-.9-4.5 5.7-3 16.3-2.2 18.7zm.8 7.3s3-7.5 9-9c6.1-1.4 8 2.6 6.2 5.8-1.9 3.3-12.6.5-15.2 3.2zm0-3.8a14.5 14.5 0 0 0-7-9c-5.7-2.7-10.3 1-9 4 1.3 3 6.3 2 9.7 2.8 2.1.6 4.2 1.4 6.3 2.2zm-.3 14.4a19 19 0 0 1 8-5.9c5.2-2 9.3.5 8.3 3.5-2.4 7.3-13.2 0-16.3 2.4zm.6-3.4s-1.7-7.7-9.2-8.9c-7.4-1.1-9.5 3.7-8.4 6.8 1 3 6.3 1 9 .5 2.8-.4 8.5 1.6 8.5 1.6z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/data-analyst.svg b/static/img/flatline/data-analyst.svg
new file mode 100644 (file)
index 0000000..808400e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 427.6 378.2"><g class="layer"><path fill="#fff" d="M311 347.3s17 25.3 19.7 23.9c2.8-1.4 38.2-25.2 33-27.5-5.1-2.4-23.8 2.5-23.8 2.5L326 329.5l-15 17.7z"/><path fill="#242424" d="M330.6 372c-3.3 0-12.8-13-20.3-24.3a.8.8 0 0 1 0-1l15-17.8.3-.2.3-.1h.4l.3.3 13.6 16.3c3-.8 18.9-4.5 23.8-2.3.3.1.5.3.7.6l.3.9c0 5.5-32.5 26.8-34 27.5l-.4.1zM312 347.3c7.5 11.1 16.6 23 18.4 23.1 1-.6 9.5-6.1 17.8-12.2 15.1-11.2 15.2-13.6 15.1-13.8-4-1.8-18.1 1.2-23.2 2.6h-.5a.8.8 0 0 1-.4-.3l-13.3-16-13.9 16.6z"/><path fill="#fff" d="M252.8 341.6s-8 29.9-5.8 32.4 53.8 5 52 2.2a282.5 282.5 0 0 0-26.2-18.5l2.3-14-22.3-2z"/><path fill="#242424" d="M287.7 378.2c-15.1 0-39.6-1.8-41.3-3.6-2.3-2.7 3.7-26 5.6-33.2 0-.2.2-.3.3-.4.2-.2.4-.2.6-.2l22.3 2.1.6.3.1.3v.4l-2.2 13.4a252.1 252.1 0 0 1 26.1 18.8v.4l-.1.4-.3.3c-1 .7-5.5 1-11.7 1zm-34.3-35.6c-3.7 14-6.8 29.3-5.7 30.9 2.6 2 44 4.2 50 2.6a301.2 301.2 0 0 0-25.7-18v-.5l2.1-13-20.7-2z"/><path fill="#fff" d="M222.6 239H159v132.2h63.5V238.9z"/><path fill="#242424" d="M222.6 372h-63.4c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6V238.9a.8.8 0 0 1 .9-.8h63.4c.3 0 .5 0 .6.2l.3.6v132.3a.9.9 0 0 1-.3.6l-.3.2a1 1 0 0 1-.3 0zm-62.6-1.7h61.8V239.7H160v130.6z"/><path fill="#fff" d="M141.4 205.3H78v165.9h63.4V205.4z"/><path fill="#242424" d="M141.4 372H78c-.2 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6V205.4a.8.8 0 0 1 .9-.9h63.4c.3 0 .5.1.6.3.2.1.3.3.3.5v165.9a.8.8 0 0 1-.9.8zm-62.6-1.7h61.8V206.2H78.8v164.1z"/><path fill="#fff" d="M64.2 140.9H.7v230.3h63.5V140.9z"/><path fill="#242424" d="M64.2 372H.8a.8.8 0 0 1-.8-.8V140.9c0-.2 0-.5.2-.6l.6-.3h63.4a.8.8 0 0 1 .8.9v230.3c0 .2 0 .4-.3.6l-.5.2zm-62.7-1.7h61.8V141.7H1.6v228.6zM241 208.5l97.7 127.2-28.8 19.5-132-146.7h63z"/><path fill="#242424" d="M310 356h-.4a.8.8 0 0 1-.3-.2L177.3 209a.8.8 0 0 1-.1-.4v-.4c0-.2.2-.3.3-.4l.5-.2h63l.3.1.3.3 97.8 127.2c.1.2.2.4.1.7l-.1.3-.2.2-28.8 19.5-.5.2zM180 209.4l130 145 27.5-18.8-97-126.2h-60.6z"/><path fill="#242424" d="M148.8 210.8s8.7 25.2 18 35.6c9.5 10.3 88 39.4 88 39.4l-7.2 62.8 36.2 3.8s24.8-68.5 16.4-79.8c-8.4-11.2-100-71.6-100-71.6l-51.4 9.8z"/><path fill="#242424" d="m283.8 353.3-36.3-3.9a.8.8 0 0 1-.7-.6v-.3l7-62.2c-7.9-3-78.3-29.4-87.5-39.4-9.5-10.3-18-34.9-18.4-35.9v-.7l.3-.2.3-.2 51.4-9.8c.2 0 .4 0 .6.2 4 2.4 92 60.6 100.3 71.8 3.7 5 2 20-4.9 44.9a507.4 507.4 0 0 1-11.6 36.1l-.5.1zm-35.3-5.5 34.7 3.7c1.2-3.2 6.6-18.6 11.1-35 8.4-30.3 7.5-40.3 5.2-43.3-8-10.7-93.8-67.6-99.5-71.3l-50 9.5c1.6 4.6 9.3 25.5 17.5 34.4 9.2 10 86.7 39 87.5 39.2l.4.4c.1.2.2.3.1.5l-7 62z"/><path fill="#fff" d="M245.3 118.5s16.5 36.6 19 36.9l10.2-15.8s.9-10.8 3.7-15.2c2.8-4.4 6-3.1 6-3.1s2.7-5.3 6.2-6c3.4-.5 14.1 6.1 7.8 10.2-6.2 4.1-26.5 62.7-34 63.5-24 2.3-40.9-63.8-40.7-64l21.8-6.6z"/><path fill="#242424" d="M262.9 189.8c-9.2 0-18.3-9.2-27-27.5-6.7-14-14-36.8-13-37.9l.3-.2 21.9-6.6h.6l.4.4c7 15.8 15.4 33 18 36l9.5-14.8a45 45 0 0 1 4-15.3c2.3-3.7 5-3.9 6.1-3.7 1-1.4 3.4-5.2 6.5-5.7 2.9-.5 9 2.9 10.5 6.4.4 1 .4 2 0 3a4 4 0 0 1-2 2.2c-2.6 1.7-8.3 14.6-13.8 27.2-9.7 21.7-16.3 36-20.7 36.4l-1.3.1zm-38.5-64.2c3 11.2 6.8 22.1 11.4 32.7 6.4 14.2 16.5 31 28.3 29.8 3.7-.3 12.7-20.6 19.2-35.5 6.2-13.9 11.5-25.9 14.5-27.8 1.9-1.2 1.6-2.4 1.3-3.2-1.1-3-6.6-5.8-8.6-5.4-2.5.4-4.9 4.1-5.6 5.4-.1.2-.3.4-.5.4h-.6s-2.5-.9-5 2.8a45.5 45.5 0 0 0-3.7 15.2L265 156l-.3.3h-.5c-2.6-.2-13-22.8-19.3-36.6l-20.5 6z"/><path fill="#fff" d="M171 21.8a25 25 0 0 0-3.3 3.2 46 46 0 0 0-7.7 14.6c-3 7.8-4.7 23-9.6 29.3-5.4 6.8-17.5 3.9-22.2 12-3 5.1-.5 11.8-2.2 17.6-3 10.4-17 12.7-23.5 21.4-5.2 7-4.5 16.7-2.1 25a34.6 34.6 0 0 0 8.3 15.4c13.9 13.2 40.5 2.3 50-11.2 4.8-6.8 7.5-15.8 14.9-19.5 5.4-2.7 11.7-1.8 17.8-2 6.6-.3 13.1-2 19-5 6.2-3.3 12.1-10 9.7-16.4-1.5-4-6-6.7-6.6-11-1.2-5.8 4.9-10.2 9-14.4a31 31 0 0 0-.2-42.3 18.3 18.3 0 0 0-1.2-23.2 9.8 9.8 0 0 0-4.8-3c-2-.3-3.8-.2-5.7.2-15.4 2-27.7-1.5-39.7 9.3z"/><path fill="#242424" d="M125 167.1c-6.2.2-12.2-2-16.8-6.2a34 34 0 0 1-8.6-15.9c-2-7.2-3.5-18 2.2-25.6 2.9-3.8 7.1-6.5 11.2-9 5.5-3.3 10.6-6.5 12.2-12.2.6-2.5.8-5 .6-7.5 0-3.5-.1-7.2 1.7-10.3 2.6-4.6 7.4-5.8 12-7 4-1 7.8-2 10.2-5 3-3.9 4.9-11.6 6.5-18.4.9-3.6 1.9-7.2 3-10.7a47 47 0 0 1 7.9-14.8c1-1.2 2.1-2.3 3.3-3.3 8.9-8 17.8-8.4 28-8.7 3.9-.2 7.9-.3 12.1-1h.6c1.8-.3 3.6-.3 5.3 0 2 .5 3.9 1.7 5.3 3.2a19.3 19.3 0 0 1 1.6 23.7 31.8 31.8 0 0 1-2.4 45c-3.7 3.6-7.6 7.2-6.7 11.7a13 13 0 0 0 3.4 5.7c1.4 1.5 2.5 3.2 3.3 5.1 2.5 6.7-3.2 13.8-10 17.5a49 49 0 0 1-19.5 5.1H187c-4.5 0-9.1 0-13 1.9-5 2.5-7.7 7.4-10.6 12.6-1.3 2.3-2.5 4.6-4 6.7a46.4 46.4 0 0 1-31 17.4H125zm46.5-144.7c-1.1 1-2.2 2-3.2 3.2-3.6 4-5.6 9.2-7.5 14.3a91 91 0 0 0-3 10.5 52.6 52.6 0 0 1-6.8 19c-2.7 3.4-7 4.5-11 5.6-4.5 1.2-8.7 2.3-11 6.3-1.7 2.7-1.6 6-1.5 9.4a24 24 0 0 1-.7 8c-1.8 6.3-7.4 9.8-13 13.2-3.9 2.4-8 5-10.6 8.5-5.3 7.1-4 17.1-2 24.2 2 7 4.6 11.6 8.2 15.1 5.8 5.6 13.5 6.1 18.8 5.6a44.5 44.5 0 0 0 29.8-16.7c1.4-2 2.7-4.3 4-6.5 2.8-5.2 5.8-10.6 11.2-13.3 4.3-2.1 9.1-2 13.8-2h4.3c6.5-.3 13-2 18.7-5 6.3-3.4 11.5-9.6 9.3-15.4-.7-1.7-1.8-3.3-3-4.7-1.8-1.7-3.1-4-3.8-6.4-1-5.4 3.3-9.5 7.2-13.1a30.2 30.2 0 0 0 1.9-43.1.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6a17.5 17.5 0 0 0-1.2-22A9 9 0 0 0 216 13c-1.6-.2-3.1-.2-4.7.1l-.6.1c-4.3.6-8.4.8-12.3 1-10 .3-18.5.6-27 8.2v-.1z"/><path fill="#85C241" d="M224.8 91.3s20.5 21.3 26.2 34.5c-9.8 1-19.4 3-28.8 6.2l2.6-40.7z"/><path fill="#85C241" d="M193.4 78.7s-19-7.8-42.6 12c-10.5 8.9-12.7 18.5-17.1 28.5 3.3 33.5 15.1 91.5 15.1 91.5l92.1-2.2s-6.3-101.6-13.7-114.2c-7.4-12.5-33.8-15.7-33.8-15.7z"/><path fill="#242424" d="M181 82.9c1.3 2.8 17.1 63.2 17.1 63.2l8.6-56.1-25.8-7.1z"/><path fill="#242424" d="M198.1 146.9c-.1 0-.3 0-.5-.2a2071.1 2071.1 0 0 0-17.5-64s0-.2.2-.3c0-.2.2-.3.4-.3h.4l25.8 7.1c.2 0 .4.2.5.4v.5l-8.4 56.1c0 .2-.2.4-.3.5l-.5.2zm-15.9-62.8A2508 2508 0 0 1 198 142l7.8-51.4-23.5-6.5z"/><path fill="#fff" d="M218.4 34.2S222.7 48 220 58a15.1 15.1 0 0 1-12 11.2l-.7 18.1s-.3 9.3-11.6 7.4A19.4 19.4 0 0 1 181 82.9V49.6s13.2-7 12.5-19c0 0 15 8 25 3.6z"/><path fill="#242424" d="M198.6 95.8A20 20 0 0 1 180 82.9V49.6l.1-.5.4-.3s12.6-6.8 12-18l.1-.5.3-.3a.8.8 0 0 1 .8 0c.2 0 14.8 7.7 24.3 3.5h.4a.8.8 0 0 1 .6.2l.1.3c.2.6 4.4 14 1.6 24.3a16 16 0 0 1-12 11.6l-.6 17.5a9.4 9.4 0 0 1-3.2 6.4 9.8 9.8 0 0 1-6.4 2zm-16.9-13a18.8 18.8 0 0 0 14.1 11c3.5.7 6.2.2 8-1.3a7.8 7.8 0 0 0 2.6-5.2l.8-18c0-.3 0-.5.2-.6.1-.2.3-.3.5-.3a14 14 0 0 0 11.3-10.7c2.2-8.3-.5-19.3-1.3-22.4-8.6 3.2-20-1.5-23.6-3.3-.3 10.4-10.3 16.6-12.6 18v32.7z"/><path fill="#fff" d="M187.3 47.5s-5.1-12.8-11.7-5.1c-6.5 7.6 2.3 16.6 7.9 16.1"/><path fill="#242424" d="M183 59.4c-3.4 0-7.5-2.8-9.4-6.5a9.5 9.5 0 0 1 1.3-11.1 6.2 6.2 0 0 1 5.7-2.7c4.5.8 7.3 7.7 7.5 8v.4a.8.8 0 0 1-.8.9.9.9 0 0 1-.6-.3 1 1 0 0 1-.2-.3c-.7-1.8-3.2-6.5-6.1-7-.8 0-1.7 0-2.4.5a4 4 0 0 0-1.8 1.6A7.8 7.8 0 0 0 175 52c1.8 3.3 5.5 5.9 8.4 5.6a.9.9 0 0 1 .6.2.9.9 0 0 1 .3.6v.3l-.2.3a.8.8 0 0 1-.6.3h-.6zm28-1.1c-1.4 0-2.7-.2-4-.6a.8.8 0 0 1-.5-.4.8.8 0 0 1 .3-1.1c.3-.2.5-.2.7-.1a9 9 0 0 0 5.2.2 29.3 29.3 0 0 0-5-9.5v-.3l.1-.3.2-.3h.3c.1-.1.3-.1.4 0h.3l.2.2c1.3 2 5.6 8.4 5 10.7 0 .3-.1.5-.3.6l-.5.4c-.8.4-1.6.5-2.5.5z"/><path fill="#242424" d="M206.4 63.8a13.2 13.2 0 0 1-10.8-6V57a.8.8 0 0 1 1.1-.4c.2 0 .4.2.5.4 1.6 2.3 4 4 6.7 4.7 3.5.9 7.2-.1 10.9-3h.3l.3-.1.3.1.3.2.1.3v.6l-.3.3c-2.7 2.2-6 3.4-9.4 3.5zm1.6 5.4s-9.7.8-15.2-.8c0 0 5.5 14.5 14.7 14.8l.5-14z"/><path fill="#242424" d="M207.5 84c-9.7-.3-15.2-14.7-15.5-15.3v-.4c0-.2 0-.3.2-.4.1-.2.2-.2.4-.3h.4c5.3 1.6 14.9.8 15 .8h.3l.3.2.2.3v.4l-.4 14-.1.3-.2.2-.3.2h-.3zm-13.3-14.4c1.6 3.5 6 11.8 12.4 12.7l.5-12.2c-4.3.4-8.7.2-13-.5zm8.1-22.6c.8 0 1.4-1.2 1.4-2.6 0-1.3-.7-2.5-1.5-2.4-.7 0-1.4 1.1-1.3 2.5 0 1.4.6 2.5 1.4 2.5zm13.1-.2c.8 0 1.4-1.2 1.4-2.6 0-1.3-.7-2.5-1.5-2.4-.7 0-1.4 1.1-1.3 2.5 0 1.4.6 2.5 1.4 2.5z"/><path fill="#fff" d="M133.7 119.2s-19.2 62.8-5.7 77.4c9.3 10.2 33.3-.8 43.8-4.9 51.5-19.8 69.8-36 65.7-35.2 1.2-4.2-11.7 1.7-13.9 2.5-.8-3.5 5.5-9.6 9-9.8 3.6-.2 7.7 1.3 8.3-2.2.3-2-1.7-4.1-3.4-5-1.8-1-16.9-1.9-20 1-2.1 1.9-3.2 4.6-5 6.6a18.7 18.7 0 0 1-7.3 3.9 429.1 429.1 0 0 1-48 14.1l6-37"/><path fill="#242424" d="M139.6 201.7c-4.9 0-9.2-1.3-12.2-4.5-13.7-14.8 4.7-75.6 5.5-78.2 0-.2.2-.4.4-.5h.6c.2 0 .4.1.5.3v.7c-.1.6-18.8 62.4-5.8 76.5 8 8.8 28.5.7 39.5-3.7l3.3-1.3c43.2-16.6 62.8-30.6 65.5-33.9a.9.9 0 0 1-.2-.8v-.3c-.2-.2-1.7-1-12.2 3.5l-.6.3h-.7a.7.7 0 0 1-.3-.2l-.1-.4a7 7 0 0 1 1.6-5.2c2-2.6 5.4-5.4 8.1-5.6h2.9c3 .2 4.3.1 4.6-1.6.2-1.8-1.3-3.4-3-4.1-1.6-.8-16.2-1.7-19.1 1-1 1-2 2-2.6 3.2a14.8 14.8 0 0 1-10 7.4c-10.2 3.6-20.7 7-31.1 10-5 1.4-17 4.1-17 4.2h-.5a.8.8 0 0 1-.6-.6v-.4l6-37 .1-.3.3-.3.2-.1h.4c.2 0 .4.1.5.3l.2.6-5.9 35.9a471 471 0 0 0 46.8-13.8 13.6 13.6 0 0 0 9.2-6.7c.8-1.3 1.7-2.5 2.9-3.6 3.5-3.2 18.8-2.3 21-1.2 2 1 4.2 3.5 3.8 5.9-.5 3.3-3.6 3.2-6.3 3h-2.7c-1.8.1-5 2.3-6.8 4.9-.7.8-1.2 1.8-1.4 2.8 8-3.3 12-4.3 13.3-3 .3.3.5.7.5 1l.5.7c.8 2.8-21 18.5-66.7 36l-3.3 1.4c-8 3-19.5 7.7-29.1 7.7z"/><path fill="#242424" d="M163 131.4h-.1a.8.8 0 0 1-.6-.3.8.8 0 0 1-.1-.7l3.9-21.6c0-.3.1-.4.3-.6.2-.1.4-.2.6-.1.3 0 .4.1.6.3l.1.6-3.9 21.7c0 .2-.1.4-.3.5l-.5.2zm117.6 5.3-.6-.2a.8.8 0 0 1-.3-.6c0-.2 0-.4.2-.6 2.4-3 .7-9.5.6-9.5l.1-.6.5-.4h.5c.2 0 .4.2.5.4 0 0 1.7 3.6 4.3 3.8.4-.6-1-4-3-7.3a.9.9 0 0 1 0-.6l.3-.6h.7c.2 0 .4.2.5.3 1.3 2.2 4.1 7.4 3 9.2-.2.3-.5.5-.8.6-.3.1-.6.2-.9.1a6 6 0 0 1-3.5-1.8c.4 2.6-.1 5.2-1.5 7.4l-.3.3h-.3z"/><path fill="#B6B6B6" d="M289.3 159.8a20.3 20.3 0 0 1-16-7.1 21 21 0 0 1-4.1-17.6 30.6 30.6 0 0 1 28.7-24.3 20.3 20.3 0 0 1 16 7.1 20.9 20.9 0 0 1 4.2 17.5 30.5 30.5 0 0 1-28.8 24.4zm8.6-47.3a28.8 28.8 0 0 0-27 23 19.4 19.4 0 0 0 3.7 16.2 18.7 18.7 0 0 0 14.7 6.5 28.8 28.8 0 0 0 27.1-23 19.2 19.2 0 0 0-3.8-16.1 18.8 18.8 0 0 0-14.7-6.5z"/><path fill="#242424" d="M312.9 169.6H210.5a8 8 0 0 1-6.6-3.5 7.9 7.9 0 0 1-.7-7.4l21.7-51.8a7.8 7.8 0 0 1 7.2-4.8h102.4a7.9 7.9 0 0 1 7.2 10.8l-21.6 51.9a7.8 7.8 0 0 1-7.2 4.8zM232 103.7a6.2 6.2 0 0 0-5.8 3.8l-21.6 51.8a6 6 0 0 0 .5 5.9c.6.8 1.4 1.5 2.3 2a6 6 0 0 0 2.9.7h102.4a6.2 6.2 0 0 0 5.7-3.8l21.7-51.8a6.2 6.2 0 0 0-5.7-8.6H232z"/><path fill="#242424" d="M261.8 114h-28.1l-.6-.3a.8.8 0 0 1 0-1.2l.6-.3h28.1l.6.3.3.6a.8.8 0 0 1-.9.8zm-3.8 6h-28c-.3 0-.5 0-.7-.2a.8.8 0 0 1 0-1.2l.6-.2h28.2a.8.8 0 0 1 .8.8l-.2.6-.6.3z"/><path fill="#fff" d="M289.2 336.6c-.1 0-.3 0-.4-.2a.8.8 0 0 1-.3-.3c-.1-.3-.1-.3 12.4-49.3.1-.3.2-.5.4-.6a.9.9 0 0 1 1.3 1l-12.5 48.7a.9.9 0 0 1-.7.7h-.2zm-16.7-87-.5-.2-47.2-31a.8.8 0 0 1-.3-.5v-.6a.8.8 0 0 1 1.2-.3l47.2 31c.2.2.4.3.4.6l-.1.6-.3.3h-.4z"/><path fill="#85C241" d="M310.3 221.8a54.3 54.3 0 1 0 108.5 0h-54.3v-54.3a54.3 54.3 0 0 0-54.2 54.3z"/><path fill="#DBDBDB" d="M373.3 159.5v54.2h54.3a54.3 54.3 0 0 0-54.3-54.2z"/><path fill="#B6B6B6" d="M397.7 136.8H365c-.1 0-.2 0-.3-.2l-.2-.2v-.7l.2-.3.3-.1h32.7c.2 0 .4 0 .5.2l.2.5c0 .2 0 .4-.2.6l-.5.2zm12.3 0h-6.2a.8.8 0 0 1-.5-.2.8.8 0 0 1-.2-.6c0-.1 0-.3.2-.5l.5-.2h6.1a.7.7 0 0 1 .6.2l.2.2.1.3v.4l-.3.2a.7.7 0 0 1-.6.2zm2.8-13.8H365a.8.8 0 0 1-.5-.2.7.7 0 0 1-.1-.5l.1-.5.5-.3h47.8c.2 0 .4.2.5.3a.8.8 0 0 1-.5 1.3zm-32.1-13.7h-15.5c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.5v-.3l.2-.3.3-.1h15.8l.5.1.3.6-.2.5c-.2.2-.4.2-.6.2zm37.3.5h-28l-.3-.2-.1-.2v-.3a.8.8 0 0 1 .7-.8h27.6c.2 0 .4 0 .6.2l.2.6-.2.5c-.2.2-.4.2-.6.2z"/><path stroke="#DBDBDB" stroke-linecap="round" stroke-linejoin="round" d="M397.7 136.8H365c-.1 0-.2 0-.3-.2l-.2-.2v-.7l.2-.3.3-.1h32.7c.2 0 .4 0 .5.2l.2.5c0 .2 0 .4-.2.6l-.5.2zm12.3 0h-6.2a.8.8 0 0 1-.5-.2.8.8 0 0 1-.2-.6c0-.1 0-.3.2-.5l.5-.2h6.1a.7.7 0 0 1 .6.2l.2.2.1.3v.4l-.3.2a.7.7 0 0 1-.6.2zm2.8-13.8H365a.8.8 0 0 1-.5-.2.7.7 0 0 1-.1-.5l.1-.5.5-.3h47.8c.2 0 .4.2.5.3a.8.8 0 0 1-.5 1.3zm-32.1-13.7h-15.5c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.5v-.3l.2-.3.3-.1h15.8l.5.1.3.6-.2.5c-.2.2-.4.2-.6.2zm37.3.5h-28l-.3-.2-.1-.2v-.3a.8.8 0 0 1 .7-.8h27.6c.2 0 .4 0 .6.2l.2.6-.2.5c-.2.2-.4.2-.6.2z"/><path fill="#B6B6B6" d="M418.3 295.6h-53.5l-.6-.3a.8.8 0 0 1-.2-.6.8.8 0 0 1 .8-.8h53.5c.2 0 .4 0 .6.2l.2.6c0 .2 0 .5-.2.6-.2.2-.4.2-.6.2zm-11.5 15.1h-41.2a.8.8 0 0 1-.8-.8c0-.2 0-.4.2-.6l.6-.2h41.2c.2 0 .4 0 .5.2l.3.6-.3.6c-.1.2-.3.2-.5.2zm5.7 14.7h-47.7l-.6-.3a.8.8 0 0 1 0-1.1l.6-.3h47.7l.6.3.2.6c0 .2 0 .4-.2.5l-.6.3zm7.6-15.4h-7.6c-.2 0-.4 0-.6-.2a.8.8 0 0 1 0-1.2c.2-.2.4-.2.6-.2h7.6c.2 0 .4 0 .6.2a.8.8 0 0 1 0 1.2l-.6.2z"/><path fill="#DBDBDB" d="M100.3 87.4H10.5a.8.8 0 0 1-.8-.8V13a.8.8 0 0 1 .8-.9.8.8 0 0 1 .8.9v72.8h89c.2 0 .4 0 .6.2.2.2.2.4.2.6 0 .2 0 .4-.2.6l-.6.2z"/><path fill="#DBDBDB" d="M10.5 87.4c-.2 0-.4 0-.6-.2l-.1-.3-.1-.3v-.3l.2-.3 37.8-40.4.3-.2h.4a1 1 0 0 1 .6.4l8.3 13.4 26.2-28.8.3-.2.3-.1h.3l.3.2.2.2a.9.9 0 0 1 0 .7c0 .1 0 .2-.2.3L57.8 61l-.3.2a.8.8 0 0 1-.7 0 .8.8 0 0 1-.3-.3l-8.3-13.5-37 39.7-.4.2a1 1 0 0 1-.3 0z"/><path fill="#B6B6B6" d="M392.5 90.9c-.2 0-.3 0-.5-.2a.8.8 0 0 1-.2-.4l-30-83.1-33 64c0 .2 0 .3-.2.4l-.4.1h-.4a1 1 0 0 1-.3-.3L295 28.9l-20.5 32.9c-.2.2-.3.3-.6.3h-.6l-17.2-10.4a.8.8 0 0 1-.3-.3l-.2-.3v-.3l.1-.3.3-.3.3-.1h.3l.3.1 16.6 10L294.2 27a.8.8 0 0 1 .6-.4h.4l.3.3L328 69.4l33.2-64.7.3-.3.5-.2.5.2.2.4 29.8 83 14.7-31 .2-.3.3-.2a.8.8 0 0 1 .7 0 .8.8 0 0 1 .4.5v.7l-15.6 32.8c0 .2-.2.3-.3.4l-.4.2z"/><path fill="#fff" d="M273.7 65.3a4 4 0 1 0 0-8.2 4 4 0 0 0 0 8.2z"/><path fill="#B6B6B6" d="M273.7 66.2a5 5 0 0 1-4.9-6 5 5 0 0 1 6.9-3.7 5 5 0 0 1 3 4.7 5 5 0 0 1-5 5zm0-8.2a3 3 0 0 0-1.8.6c-.6.3-1 .9-1.2 1.5a3.3 3.3 0 0 0 .7 3.6 3.3 3.3 0 0 0 5.2-.6c.3-.6.5-1.2.5-1.9 0-.8-.4-1.7-1-2.3-.7-.6-1.5-1-2.4-1z"/><path fill="#fff" d="M294.9 31.5a4 4 0 1 0 0-8.2 4 4 0 0 0 0 8.2z"/><path fill="#B6B6B6" d="M294.9 32.3a5 5 0 1 1 0-10 5 5 0 0 1 0 10zm0-8.1a3.4 3.4 0 0 0-3 2 3.3 3.3 0 0 0 5.8 3.2c.3-.6.5-1.2.5-1.9a3.3 3.3 0 0 0-3.3-3.3z"/><path fill="#fff" d="M362 9.2a4 4 0 1 0 0-8.2 4 4 0 0 0 0 8.2z"/><path fill="#B6B6B6" d="M362 10c-1 0-2-.3-2.8-.8a5 5 0 1 1 2.8.8zm0-8.2a3.3 3.3 0 1 0 0 6.7 3.3 3.3 0 0 0 0-6.7z"/><path fill="#fff" d="M392.5 94a4 4 0 1 0 0-8 4 4 0 0 0 0 8z"/><path fill="#B6B6B6" d="M392.5 95a5 5 0 0 1-5-6 5 5 0 0 1 3.9-4 5 5 0 0 1 5.2 2.1c.5.9.8 1.8.8 2.8a5 5 0 0 1-5 5zm0-8.3c-.7 0-1.3.2-1.9.6a3.3 3.3 0 1 0 5.1 2.8c0-.9-.3-1.7-.9-2.4-.6-.6-1.4-1-2.3-1z"/><path fill="#fff" d="M328.2 75a4 4 0 1 0 0-8.2 4 4 0 0 0 0 8.2z"/><path fill="#B6B6B6" d="M328.2 75.9a5 5 0 0 1-4.7-3.1 5 5 0 0 1 1.2-5.5 5 5 0 0 1 2.5-1.3 5 5 0 0 1 6 5 5 5 0 0 1-5 4.9zm0-8.2c-.7 0-1.3.2-1.8.6a3.2 3.2 0 0 0-1.3 3.3c0 .6.4 1.2.8 1.7a3.3 3.3 0 0 0 5-.5 3.2 3.2 0 0 0 .4-3c-.2-.5-.5-.8-.8-1.2l-1-.7-1.3-.3v.1zM123.3 22.9h-23a.8.8 0 0 1-.8-.8.8.8 0 0 1 .8-.9h23l.6.3.2.6a.8.8 0 0 1-.8.8zm0 5.9h-23a.8.8 0 0 1-.8-.8c0-.2 0-.4.2-.6l.6-.2h23c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.2zm-7.7 6h-15.3a.8.8 0 0 1-.8-.9c0-.2 0-.4.2-.5l.6-.3h15.3c.2 0 .4.1.5.3.2.1.3.3.3.5 0 .3 0 .5-.3.6-.1.2-.3.3-.5.3z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/data-center.svg b/static/img/flatline/data-center.svg
new file mode 100644 (file)
index 0000000..0949c25
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 494.5 308.2"><g class="layer"><path fill="#FBFBFB" d="M114.8 85.2c-4 1.6-6-.7-7.8-6.3a8 8 0 0 1-.2-3 74.8 74.8 0 0 1 5-16.4c.4-1 1.2-2 2.3-1.7 1 .3 1 1.4 1 2.3-.1 2.5-.5 5-.4 7.5 5.2-1.3 8.5-7 13.6-8.1 1.4-.4 3.1-.5 3.3 1.4.3 2.2-4 4-5.2 5.2 1.5-1.3 3.3-2.3 5.2-3 .5-.3 1-.4 1.7-.3a1.3 1.3 0 0 1 1 1.2c0 .5-.2.9-.6 1.2-.7.9-1.5 1.7-2.5 2.4a7 7 0 0 1 3.7-2.2 1.9 1.9 0 0 1 2 .6c.5 1-.6 2-1.6 2.6a6 6 0 0 1 2.7-1.4 2 2 0 0 1 2.4 1.6 2.8 2.8 0 0 1-1 2 92.8 92.8 0 0 1-24.7 14.4z"/><path fill="#101828" d="M112.5 86.5c-.7 0-1.4-.1-2-.4-1.8-1-3.2-3-4.4-7-.3-1-.4-2.1-.2-3.3a76 76 0 0 1 5.1-16.6c.7-1.8 2-2.7 3.2-2.2.8.2 1.6 1 1.6 3l-.2 3.3-.2 3.2c2-1 4-2.1 5.6-3.6 2.2-1.8 4.4-3.6 7-4.2a4.2 4.2 0 0 1 3.5.3 2.5 2.5 0 0 1 1 1.8l-.2 1.2h1a2.2 2.2 0 0 1 2 2l-.2.6a2.4 2.4 0 0 1 2.4 1l.3.9h.2a3.2 3.2 0 0 1 2.4.6 2.4 2.4 0 0 1 1 1.7 3.6 3.6 0 0 1-1.4 2.7 92 92 0 0 1-24.9 14.6 7 7 0 0 1-2.6.4zm1.1-28c-.3 0-.8.6-1 1.4a73.2 73.2 0 0 0-5 16c0 1 0 2 .2 2.8 1 3.4 2.2 5.2 3.5 5.9a4 4 0 0 0 3.2-.2 92.4 92.4 0 0 0 24.3-14.2c.3-.3.8-.9.7-1.4a.7.7 0 0 0-.2-.4c-.4-.3-.8-.4-1-.4-.7.1-1.2.3-1.7.7l-.8.6a.8.8 0 0 1-1.2-.2.8.8 0 0 1-.1-.7.8.8 0 0 1 .4-.5l.8-.6c.3-.2.4-.4.5-.7v-.2c0-.2-.6-.2-1.1-.1-.6 0-1.2.3-1.7.6l-1.6 1.4a.8.8 0 0 1-1.2-1.2c.5-.6 1-1.1 1.7-1.5l1-1 .3-.6c0-.2-.2-.3-.4-.4-.5 0-1 .1-1.3.3l-2 .8a29.2 29.2 0 0 1-3.5 2.2.8.8 0 0 1-.5-1.4c1-.9 2-1.6 3-2.2 1-.7 2-1.6 2-2.4 0-.5-.3-.6-.3-.6s-.7-.3-2 0c-2.3.5-4.3 2.1-6.4 3.8-2 2-4.6 3.4-7.3 4.3a.8.8 0 0 1-.7-.1.8.8 0 0 1-.3-.7 60.5 60.5 0 0 1 .3-7.6c0-.8-.1-1.4-.4-1.5h-.1z"/><path fill="#FBFBFB" d="M114.8 67.9a8.4 8.4 0 0 1 .2 10.4h.5"/><path fill="#101828" d="M115 79.1a.8.8 0 0 1-.9-.9l.2-.4a7.5 7.5 0 0 0 0-9.4.8.8 0 0 1 1.3-1 9.3 9.3 0 0 1 .8 10.5v.3a.8.8 0 0 1-.9 1h-.5v-.1z"/><path fill="#FBFBFB" d="M242.4 39.8H124.2a9.4 9.4 0 0 0-9.5 9.5v20c0 5.2 4.3 9.4 9.5 9.4h118.2c5.2 0 9.5-4.2 9.5-9.4v-20c0-5.2-4.3-9.5-9.5-9.5z"/><path fill="#101828" d="M242.4 79.6H124.2A10.3 10.3 0 0 1 114 69.3v-20A10.3 10.3 0 0 1 124.2 39h118.2a10.3 10.3 0 0 1 10.3 10.3v20a10.3 10.3 0 0 1-10.2 10.3zM124.1 40.7a8.6 8.6 0 0 0-8.5 8.6v20a8.6 8.6 0 0 0 8.5 8.5h118.3a8.6 8.6 0 0 0 8.6-8.5v-20a8.6 8.6 0 0 0-8.6-8.6H124.1z"/><path fill="#DBDBDB" d="M131 63.5a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm14.3 6.7a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm93.7 5.3h-81.4a.8.8 0 0 1-.8-.8v-4a.8.8 0 0 1 .7-.8h81.6a.8.8 0 0 1 .6.2.9.9 0 0 1 .3.6v4a.8.8 0 0 1-1 .8zm-80.5-1.7h79.8v-2.3h-79.9v2.3zm335.1 215H.8a.8.8 0 0 1 0-1.7h492.8a.8.8 0 0 1 .6.3.8.8 0 0 1 .3.9.8.8 0 0 1-.9.5z"/><path fill="#101828" d="M436.9 6.5H318.5v261.6h118.4V6.5z"/><path fill="#101828" d="M436.9 269H318.5a.9.9 0 0 1-.8-1V6.6a.9.9 0 0 1 .8-.9h118.4a.9.9 0 0 1 .9.9v261.5a.9.9 0 0 1-1 .9zm-117.5-1.9H436V7.4H319.4v259.7z"/><path fill="#FBFBFB" d="M436.9.9H318.6a9.4 9.4 0 0 0-9.5 9.4v20c0 5.2 4.3 9.4 9.5 9.4h118.2c5.3 0 9.5-4.2 9.5-9.4v-20c0-5.2-4.3-9.4-9.5-9.4z"/><path fill="#101828" d="M436.9 40.6H318.6a10.3 10.3 0 0 1-10.4-10.3v-20A10.3 10.3 0 0 1 318.6 0h118.2a10.3 10.3 0 0 1 10.4 10.3v20a10.3 10.3 0 0 1-10.3 10.3zM318.6 1.7a8.6 8.6 0 0 0-8.7 8.6v20a8.6 8.6 0 0 0 8.7 8.5h118.2a8.6 8.6 0 0 0 8.7-8.5v-20a8.6 8.6 0 0 0-8.6-8.6H318.6z"/><path fill="#DBDBDB" d="M325.3 24.5a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 1 0 2.5 2.5 2.5 2.5 0 0 0-2.4-2.5h-.1zm14.2 6.7a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm93.9 5.3h-81.5a.8.8 0 0 1-.8-.8v-4a.8.8 0 0 1 .7-.8h81.6a.8.8 0 0 1 .9.8v4a.8.8 0 0 1-1 .8zm-80.6-1.6h79.7v-2.4h-79.7v2.4z"/><path fill="#FBFBFB" d="M436.9 48.8H318.6a9.4 9.4 0 0 0-9.5 9.4v20c0 5.2 4.3 9.4 9.5 9.4h118.2c5.3 0 9.5-4.2 9.5-9.4v-20c0-5.2-4.3-9.4-9.5-9.4z"/><path fill="#101828" d="M436.9 88.5H318.6a10.3 10.3 0 0 1-10.4-10.4v-20a10.3 10.3 0 0 1 10.4-10.3h118.2a10.3 10.3 0 0 1 10.4 10.3v20a10.3 10.3 0 0 1-10.3 10.3v.1zM318.6 49.6a8.6 8.6 0 0 0-8.6 8.6v20a8.6 8.6 0 0 0 8.6 8.6h118.2a8.6 8.6 0 0 0 8.7-8.6v-20a8.6 8.6 0 0 0-8.6-8.6H318.6z"/><path fill="#DBDBDB" d="M325.3 72.4a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm14.2 6.7a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm93.9 5.4h-81.5a.8.8 0 0 1-.8-1v-3.9a.8.8 0 0 1 .7-.8h81.6a.8.8 0 0 1 .9.8v4a.8.8 0 0 1-1 .8v.1zm-80.6-1.8h79.7v-2.2h-79.7v2.2z"/><path fill="#FBFBFB" d="M436.9 96.6H318.6a9.4 9.4 0 0 0-9.5 9.5v20c0 5.2 4.3 9.4 9.5 9.4h118.2c5.3 0 9.5-4.2 9.5-9.4v-20c0-5.2-4.3-9.5-9.5-9.5z"/><path fill="#101828" d="M436.9 136.4H318.6a10.3 10.3 0 0 1-10.4-10.3v-20a10.3 10.3 0 0 1 10.4-10.3h118.2a10.3 10.3 0 0 1 10.4 10.3v20a10.3 10.3 0 0 1-10.3 10.3zM318.6 97.5a8.6 8.6 0 0 0-8.6 8.6v20a8.6 8.6 0 0 0 8.6 8.5h118.2a8.6 8.6 0 0 0 8.7-8.5v-20a8.6 8.6 0 0 0-8.6-8.6H318.6z"/><path fill="#DBDBDB" d="M325.3 120.3a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm14.2 6.7a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm93.9 5.3h-81.5a.8.8 0 0 1-.8-.8v-4a.8.8 0 0 1 .7-.8h81.6a.8.8 0 0 1 .9.8v4a.8.8 0 0 1-1 .8zm-80.6-1.7h79.7v-2.3h-79.7v2.3z"/><path fill="#FBFBFB" d="M436.9 144.5H318.6a9.4 9.4 0 0 0-9.5 9.5v20c0 5.2 4.3 9.4 9.5 9.4h118.2c5.3 0 9.5-4.2 9.5-9.5v-20c0-5.2-4.3-9.4-9.5-9.4z"/><path fill="#101828" d="M436.9 184.2H318.6a10.3 10.3 0 0 1-10.4-10.3v-20a10.3 10.3 0 0 1 10.4-10.2h118.2a10.3 10.3 0 0 1 10.4 10.3v20a10.3 10.3 0 0 1-10.3 10.2zm-118.3-38.8a8.6 8.6 0 0 0-8.6 8.6v20a8.6 8.6 0 0 0 8.6 8.5h118.2a8.6 8.6 0 0 0 8.7-8.6v-20a8.6 8.6 0 0 0-8.6-8.5H318.6z"/><path fill="#DBDBDB" d="M325.3 168.1a4.2 4.2 0 1 1 0-8.3 4.2 4.2 0 0 1 0 8.4v-.1zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm14.2 6.7a4.2 4.2 0 1 1 0-8.3 4.2 4.2 0 0 1 0 8.4v-.1zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm93.9 5.4h-81.5a.8.8 0 0 1-.8-.9v-4a.8.8 0 0 1 .7-.8h81.6a.8.8 0 0 1 .9.9v4a.8.8 0 0 1-1 .8zm-80.6-1.7h79.7v-2.3h-79.7v2.3z"/><path fill="#FBFBFB" d="M436.9 192.4H318.6a9.4 9.4 0 0 0-9.5 9.4v20c0 5.2 4.3 9.5 9.5 9.5h118.2c5.3 0 9.5-4.3 9.5-9.5v-20c0-5.2-4.3-9.4-9.5-9.4z"/><path fill="#101828" d="M436.9 232.1H318.6a10.3 10.3 0 0 1-10.4-10.3v-20a10.3 10.3 0 0 1 10.4-10.3h118.2a10.3 10.3 0 0 1 10.4 10.3v20a10.3 10.3 0 0 1-10.3 10.3zm-118.3-38.9a8.6 8.6 0 0 0-8.6 8.6v20a8.6 8.6 0 0 0 8.6 8.6h118.2a8.6 8.6 0 0 0 8.7-8.6v-20a8.6 8.6 0 0 0-8.6-8.5H318.6v-.1z"/><path fill="#DBDBDB" d="M325.3 216.1a4.2 4.2 0 1 1 0-8.5 4.2 4.2 0 0 1 0 8.4v.1zm0-6.8a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm14.2 6.8a4.2 4.2 0 1 1 0-8.5 4.2 4.2 0 0 1 0 8.4v.1zm0-6.8a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm93.9 5.4h-81.5a.9.9 0 0 1-.8-.9v-4a.8.8 0 0 1 .7-.8h81.6a.8.8 0 0 1 .9.9v4a.8.8 0 0 1-1 .8zm-80.6-1.7h79.7v-2.3h-79.7v2.3z"/><path fill="#FBFBFB" d="M436.9 240.3H318.6a9.4 9.4 0 0 0-9.5 9.4v20c0 5.2 4.3 9.4 9.5 9.4h118.2c5.3 0 9.5-4.2 9.5-9.4v-20c0-5.2-4.3-9.4-9.5-9.4z"/><path fill="#101828" d="M436.9 280H318.6a10.3 10.3 0 0 1-10.4-10.3v-20a10.3 10.3 0 0 1 10.4-10.3h118.2a10.3 10.3 0 0 1 10.4 10.3v20a10.3 10.3 0 0 1-10.3 10.3zm-118.3-38.9a8.6 8.6 0 0 0-8.6 8.6v20a8.6 8.6 0 0 0 8.6 8.6h118.2a8.6 8.6 0 0 0 8.7-8.6v-20a8.6 8.6 0 0 0-8.6-8.6H318.6z"/><path fill="#DBDBDB" d="M325.3 263.9a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm14.2 6.7a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 0 0-2.4 3 2.5 2.5 0 0 0 3.4 1.8 2.5 2.5 0 0 0-1-4.8zm93.9 5.3h-81.5a.9.9 0 0 1-.8-.8v-4a.8.8 0 0 1 .7-.8h81.6a.8.8 0 0 1 .9.8v4a.8.8 0 0 1-1 .8zm-80.6-1.6h79.7v-2.3h-79.7v2.3z"/><path fill="#101828" d="M336.9 279.1h-14.2v5.8h14.2v-5.8z"/><path fill="#101828" d="M336.9 285.8h-14.2a.9.9 0 0 1-.8-.9v-5.8a.9.9 0 0 1 .8-.8h14.2a.9.9 0 0 1 .6.2.9.9 0 0 1 .3.6v5.8a.9.9 0 0 1-.5.8h-.4v.1zm-13.3-1.7H336V280h-12.4v4.1zm109-5h-14.2v5.8h14.3v-5.8z"/><path fill="#101828" d="M432.6 285.8h-14.2a.9.9 0 0 1-.7-.9v-5.8a.9.9 0 0 1 .8-.8h14.2a.9.9 0 0 1 .8.8v5.8a.9.9 0 0 1-.5.8h-.4v.1zm-13.3-1.7h12.4V280h-12.4v4.1zM278.6 105.9H160.3v162.2h118.3V105.9z"/><path fill="#101828" d="M278.6 269H160.3a.9.9 0 0 1-.9-1V106a.9.9 0 0 1 1-1h118.2a.9.9 0 0 1 1 1v162.1a.9.9 0 0 1-1 .9zm-117.4-1.9H278V106.7H161.3v160.5-.1z"/><path fill="#FBFBFB" d="M278.6 96.6H160.2a9.4 9.4 0 0 0-9.4 9.5v20c0 5.2 4.2 9.4 9.4 9.4h118.3c5.2 0 9.4-4.2 9.4-9.4v-20c0-5.2-4.2-9.5-9.4-9.5h.1z"/><path fill="#101828" d="M278.6 136.4H160.2a10.3 10.3 0 0 1-10.3-10.3v-20a10.3 10.3 0 0 1 10.3-10.3h118.3a10.3 10.3 0 0 1 10.3 10.3v20a10.3 10.3 0 0 1-10.3 10.3h.1zM160.2 97.5a8.6 8.6 0 0 0-8.6 8.6v20a8.6 8.6 0 0 0 8.6 8.5h118.3a8.6 8.6 0 0 0 8.5-8.5v-20a8.6 8.6 0 0 0-8.5-8.6H160.2z"/><path fill="#DBDBDB" d="M167.2 120.3a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm14 6.7a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm94 5.3h-81.4a.8.8 0 0 1-1-.9v-4a.8.8 0 0 1 1-.8H275a.8.8 0 0 1 1 .9v4a.8.8 0 0 1-1 .8h.1zm-80.6-1.7h79.8v-2.3h-79.8v2.3z"/><path fill="#FBFBFB" d="M278.6 144.5H160.2a9.4 9.4 0 0 0-9.4 9.5v20c0 5.2 4.2 9.4 9.4 9.4h118.3c5.2 0 9.4-4.2 9.4-9.5v-20c0-5.2-4.2-9.4-9.4-9.4h.1z"/><path fill="#101828" d="M278.6 184.2H160.2a10.3 10.3 0 0 1-10.3-10.3v-20a10.3 10.3 0 0 1 10.3-10.2h118.3a10.3 10.3 0 0 1 10.3 10.3v20a10.3 10.3 0 0 1-10.3 10.2h.1zm-118.4-38.8a8.6 8.6 0 0 0-8.6 8.6v20a8.6 8.6 0 0 0 8.6 8.5h118.3a8.6 8.6 0 0 0 8.5-8.6v-20a8.6 8.6 0 0 0-8.5-8.5H160.2z"/><path fill="#DBDBDB" d="M167.2 168.1a4.2 4.2 0 1 1 0-8.3 4.2 4.2 0 0 1 0 8.4v-.1zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm14 6.7a4.2 4.2 0 1 1 0-8.3 4.2 4.2 0 0 1 0 8.4v-.1zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm94 5.4h-81.4a.8.8 0 0 1-1-.9v-4a.8.8 0 0 1 1-.8H275a.8.8 0 0 1 1 .9v4a.8.8 0 0 1-1 .8h.1zm-80.6-1.7h79.8v-2.3h-79.8v2.3z"/><path fill="#FBFBFB" d="M278.6 192.4H160.2a9.4 9.4 0 0 0-9.4 9.4v20c0 5.2 4.2 9.5 9.4 9.5h118.3c5.2 0 9.4-4.3 9.4-9.5v-20c0-5.2-4.2-9.4-9.4-9.4h.1z"/><path fill="#101828" d="M278.6 232.1H160.2a10.3 10.3 0 0 1-10.3-10.3v-20a10.3 10.3 0 0 1 10.3-10.3h118.3a10.3 10.3 0 0 1 10.3 10.3v20a10.3 10.3 0 0 1-10.3 10.3h.1zm-118.4-38.9a8.6 8.6 0 0 0-8.6 8.6v20a8.6 8.6 0 0 0 8.6 8.6h118.3a8.6 8.6 0 0 0 8.5-8.6v-20a8.6 8.6 0 0 0-8.5-8.5H160.2v-.1z"/><path fill="#DBDBDB" d="M167.2 216.1a4.2 4.2 0 1 1 0-8.5 4.2 4.2 0 0 1 0 8.4v.1zm0-6.8a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm14 6.8a4.2 4.2 0 1 1 0-8.5 4.2 4.2 0 0 1 0 8.4v.1zm0-6.8a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm94 5.4h-81.4a.8.8 0 0 1-1-.9v-4a.8.8 0 0 1 1-.8H275a.8.8 0 0 1 1 .9v4a.8.8 0 0 1-1 .8h.1zm-80.6-1.7h79.8v-2.3h-79.8v2.3z"/><path fill="#FBFBFB" d="M278.6 240.3H160.2a9.4 9.4 0 0 0-9.4 9.4v20c0 5.2 4.2 9.4 9.4 9.4h118.3c5.2 0 9.4-4.2 9.4-9.4v-20c0-5.2-4.2-9.4-9.4-9.4h.1z"/><path fill="#101828" d="M278.6 280H160.2a10.3 10.3 0 0 1-10.3-10.3v-20a10.3 10.3 0 0 1 10.3-10.3h118.3a10.3 10.3 0 0 1 10.3 10.3v20a10.3 10.3 0 0 1-10.3 10.3h.1zm-118.4-38.9a8.6 8.6 0 0 0-8.6 8.6v20a8.6 8.6 0 0 0 8.6 8.6h118.3a8.6 8.6 0 0 0 8.5-8.6v-20a8.6 8.6 0 0 0-8.5-8.6H160.2z"/><path fill="#DBDBDB" d="M167.2 263.9a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm14 6.7a4.2 4.2 0 1 1 0-8.4 4.2 4.2 0 0 1 0 8.4zm0-6.7a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zm94 5.3h-81.4a.8.8 0 0 1-1-.8v-4a.8.8 0 0 1 1-.8H275a.8.8 0 0 1 1 .8v4a.8.8 0 0 1-1 .8h.1zm-80.6-1.6h79.8v-2.3h-79.8v2.3z"/><path fill="#101828" d="M178.7 279.1h-14.2v5.8h14.2v-5.8z"/><path fill="#101828" d="M178.7 285.8h-14.2a.9.9 0 0 1-1-.9v-5.8a.9.9 0 0 1 1-.8h14.2a.9.9 0 0 1 .9.8v5.8a.9.9 0 0 1-1 .9zm-13.3-1.7h12.4V280h-12.6v4l.2.1zm109-5h-14.1v5.8h14.1v-5.8z"/><path fill="#101828" d="M274.4 285.8h-14.1a.9.9 0 0 1-.9-.9v-5.8a.9.9 0 0 1 .9-.8h14.1a.9.9 0 0 1 .9.5v6.1a.9.9 0 0 1-.4.8h-.4v.1zm-13.1-1.7h12.4V280h-12.4v4.1z"/><path fill="#DBDBDB" d="M484 240.6h-21.4a.8.8 0 0 1-.9-.9v-17a.9.9 0 0 1 .9-.8H484a.9.9 0 0 1 .9.8v17a.8.8 0 0 1-.8.9zm-20.5-1.7H483v-15.3h-19.7v15.3z"/><path fill="#DBDBDB" d="M473.3 236.6a5.4 5.4 0 1 1 0-10.7 5.4 5.4 0 0 1 0 10.7zm0-9a3.7 3.7 0 1 0 0 7.3 3.7 3.7 0 0 0 0-7.3z"/><path fill="#FBFBFB" d="M87.5 12.9c-.8-1.2-2-2.2-3.2-2.7a2.8 2.8 0 0 0-3.5 1.6C77.4 6.5 70.1 5.4 64 6.5c-10.3 1.9-17.5 5.9-20.4 16.4-1 4-1.3 8.2-2.8 12.1-1.3 3.9-3.7 7.1-6 10.5-.2.3-.4.8-.4 1.2 0 .5.3 1 .7 1.2 1.4 1.6 3.2 2.8 5.2 3.6a6 6 0 0 0 6-1 3.7 3.7 0 0 0 0 4.5 7.8 7.8 0 0 0 4.2 2.6 34 34 0 0 0 41.9-24.3c2-7.7 0-14-4.8-20.4z"/><path fill="#101828" d="M59 59.7c-3 0-6-.4-8.7-1.4a9.2 9.2 0 0 1-4.6-2.8 5 5 0 0 1-1-3.2c-1.5.5-3 .5-4.6 0a14.9 14.9 0 0 1-6.3-4.5 2.3 2.3 0 0 1 .4-2.8l1-1.6a41 41 0 0 0 5-8.7 41 41 0 0 0 1.5-6.7l1.1-5.3c3.4-12.2 12.6-15.4 21-17 5.5-1 13-.3 16.8 4.6a3.6 3.6 0 0 1 2.3-1l1.5.1c1.5.6 2.8 1.6 3.7 3 5.5 7 7 13.6 5 21.1a35.3 35.3 0 0 1-34 26.2zM46.3 49.6a.8.8 0 0 1 .8.5.8.8 0 0 1-.2.9 2.9 2.9 0 0 0 .1 3.5c1 1 2.3 1.9 3.8 2.3a33 33 0 0 0 40.7-23.7c1.8-7 .4-13-4.7-19.7-.7-1-1.7-1.9-2.8-2.4-.6-.1-1.2 0-1.8.2a1.4 1.4 0 0 0-.7.8.9.9 0 0 1-1.5.3c-3.3-5.2-10.6-6-15.9-5-11.4 2.2-17 6.8-19.7 15.9l-1 5c-.4 2.5-1 4.8-1.7 7.1a42 42 0 0 1-5 9.1l-1 1.6c-.4.2-.5.4-.5.7 0 .2.2.5.5.6a12 12 0 0 0 5 3.4 5.2 5.2 0 0 0 5-.9.9.9 0 0 1 .6-.2z"/><path fill="#FBFBFB" d="M87.2 32.7s6 8.7 4.9 10.6c-1.2 1.8-5.2.7-5.2.7"/><path fill="#101828" d="M89.3 45.1c-1 0-1.8 0-2.7-.3a.8.8 0 0 1-.6-1 .8.8 0 0 1 1-.6c1.2.3 3.7.6 4.4-.4.4-.8-2-5.3-5-9.6a.8.8 0 0 1 0-1l.3-.2a.8.8 0 0 1 1.2.2c2 2.7 6.2 9.4 5 11.5a3.9 3.9 0 0 1-3.6 1.5v-.1z"/><path fill="#FBFBFB" d="M85.5 21c3.8 3 3 9.4 3 13.6v17.7c-.1 3.7-9.8 4-11.5 3L78.8 70s-4.6 1.3-12.5-2c-8-3.5-8-5.3-8-5.3l.3-17s6.3-.2 10-7.9c3.5-7.7 3-19.4 3-19.4s10.3-.3 14 2.6z"/><path fill="#101828" d="M76.2 71.1c-3.5-.1-7-1-10.2-2.4-7.5-3.3-8.5-5.3-8.5-6l.2-17a.8.8 0 0 1 .8-1c.3 0 6-.1 9.3-7.2a50.1 50.1 0 0 0 3-19.4l.3-.2c0-.2.3-.3.5-.3.5 0 10.6-.3 14.5 2.7 3.5 2.7 3.4 7.9 3.3 12v20a3.5 3.5 0 0 1-2.3 3c-3 1.2-6 1.6-9.2 1.2l1.7 13.4a.8.8 0 0 1-.6.9l-3 .3h.1zm-17-8.6c0 .3 1.3 2 7.5 4.6 5.7 2.6 9.7 2.4 11.2 2.2l-1.8-14a.8.8 0 0 1 .9-.9l.4.1c1 .6 6.2.8 9-.7.8-.5 1.2-1 1.2-1.6.2-5.8.2-11.7 0-17.6v-2.3c.2-3.8.3-8.4-2.5-10.7-2.6-2-9.3-2.4-12.6-2.4 0 3-.1 12.3-3.2 19-3.1 6.6-8 7.9-10 8.2l-.1 16.1z"/><path fill="#101828" d="M85.2 49.6a5 5 0 0 1-3.3-1.2 5.5 5.5 0 0 1-1.5-2.2.8.8 0 0 1 0-.6l.3-.3a.8.8 0 0 1 1.2.4 4 4 0 0 0 2.4 2 5 5 0 0 0 3.6-.6.8.8 0 0 1 1.3.9.9.9 0 0 1-.4.5 8 8 0 0 1-3.6 1.1z"/><path fill="#FBFBFB" d="M76 36.7a8 8 0 0 0-1.8-4c-.6-1-1.3-1.8-2.2-2.6a3.9 3.9 0 0 0-3.2-.9 3.6 3.6 0 0 0-2.2 1.9c-.5 1-.7 2-.7 3a12.6 12.6 0 0 0 6 11l-.3-.3"/><path fill="#101828" d="M72 45.9h-.4A13.6 13.6 0 0 1 65 34c0-1.1.2-2.3.7-3.3a4.4 4.4 0 0 1 2.8-2.3 4.6 4.6 0 0 1 4 1c.9.9 1.7 1.8 2.3 2.8 1 1.3 1.6 2.9 2 4.5l-.4.6c0 .2-.4.3-.6.3a.9.9 0 0 1-.8-.8 7.5 7.5 0 0 0-1.5-3.6c-.6-1-1.3-1.7-2-2.4A3 3 0 0 0 69 30a2.8 2.8 0 0 0-1.7 1.5 6 6 0 0 0-.5 2.6 11.8 11.8 0 0 0 5 9.8l.5.3.3.3a.8.8 0 0 1 0 1.1.9.9 0 0 1-.6.3zm5 9.3s-5-1.4-7.5-4.8c0 0 .5 9 8.3 11.4l-.8-6.6z"/><path fill="#101828" d="M77.8 62.6h-.3c-8.2-2.5-8.8-11.7-8.8-12a.8.8 0 0 1 .5-1 .8.8 0 0 1 1 .4 15 15 0 0 0 7 4.5.9.9 0 0 1 .6.7l.8 6.5a.9.9 0 0 1-.3.8l-.5.1zm-7-9.6a11.3 11.3 0 0 0 6 7.5l-.6-4.6c-2-.6-3.7-1.6-5.4-2.9zm13.7-24.2c.2-1.2 0-2.1-.5-2.2-.5 0-1 .8-1.1 2-.2 1 0 2 .5 2.1.5.1 1-.8 1-2v.1z"/><path fill="#FBFBFB" d="m32 293.9-1.7 12s36.8-2 35.5-4.8c-1.3-3-11.6-6.6-11.6-6.6"/><path fill="#101828" d="M30.4 306.7a.8.8 0 0 1-.6-.3.8.8 0 0 1-.3-.7l1.7-11.9a.8.8 0 0 1 1.7.3L31.4 305c15-.9 31.2-2.4 33.6-3.9a32.9 32.9 0 0 0-11-5.8.8.8 0 0 1-.5-1.1.8.8 0 0 1 .5-.5.8.8 0 0 1 .6 0c1 .4 10.7 4 12 7a1.2 1.2 0 0 1 0 1.2c-1.7 2.7-25.8 4.3-36.1 4.8h-.1z"/><path fill="#FBFBFB" d="M107.3 81.1s18.2 18.3 27.2 15.7c5.4-1.5 30-13.8 30.2-14.4 1.2-2 3.5-8.4 5-10.2.4-.7 1.2-1.3 2-1.5 4.8-.9.2 7.5-1 9a149 149 0 0 1 13-7.3h.7a1.2 1.2 0 0 1 .4 1.5 3 3 0 0 1-1 1.2l-7.3 5.7a53 53 0 0 1 6.6-4.7c.8-.5 3.1-2 4-1 1.5 1.7-6.2 7.5-7.5 8.4 2.1-1.9 4.5-3.5 7-4.9a4 4 0 0 1 2.4-.5c.3.5-.2 1.2-.7 1.6l-5 3.8c2.5-1.8 5.3-3.7 8.4-3.7 0 .5-.4 1-.8 1.2-7.4 5.8-14.8 13.2-22.5 18.6-10 7.2-21 17.1-33.7 18.2-14.9 1.3-25.8-9.6-36-19.1"/><path fill="#101828" d="M132.3 118.9c-13.5 0-23.9-9.7-33-18.3l-1.1-1.2a.8.8 0 0 1-.2-.9c0-.1 0-.2.2-.3a.8.8 0 0 1 1.2 0l1.2 1.2c9.9 9.3 20.2 19 34 17.7 10.3-.9 19.3-7.6 28-14A184.2 184.2 0 0 0 181 88.4l8.8-7.4a18.7 18.7 0 0 0-6.2 3.5.8.8 0 0 1-1-.4.8.8 0 0 1 0-.6.8.8 0 0 1 .3-.6l4.9-3.8-.7.4a31.2 31.2 0 0 0-6.8 4.8.8.8 0 0 1-1.4-.8 33.3 33.3 0 0 1 3.9-3.4c2.4-2.1 3.8-3.8 3.8-4.4h-.2a6 6 0 0 0-2.7 1.2 52 52 0 0 0-4.8 3.2l-1.8 1.4a.9.9 0 0 1-.6.3.8.8 0 0 1-.8-.6.8.8 0 0 1 0-.7l.4-.2 1.8-1.5 5.4-4.2.8-1a.5.5 0 0 0 0-.3l-.7.2c-4.3 2.2-8.6 4.8-12.2 7a.8.8 0 0 1-1-.2.8.8 0 0 1 0-1.1c1-1.3 3.5-6.2 2.8-7.5-.2-.2-.6-.2-1-.1a3 3 0 0 0-1.6 1.3 33.6 33.6 0 0 0-3 6l-1.8 4a261 261 0 0 1-30.8 14.7c-9.3 2.6-27.3-15.1-28-15.9a.8.8 0 1 1 1.2-1.2c.2.2 18 17.9 26.4 15.5a303 303 0 0 0 29.8-14.1l1.7-3.7a34 34 0 0 1 3.2-6.5c.6-.9 1.5-1.6 2.6-1.9a2.4 2.4 0 0 1 2.7 1c.9 1.5 0 4.2-1.2 6.4a140.8 140.8 0 0 1 10.5-5.7c.4 0 .8 0 1 .2a2 2 0 0 1 1 2.4 2 2 0 0 1 2 .5 1.6 1.6 0 0 1 .5 1.3c0 .5-.3 1-.6 1.5.5-.2 1-.2 1.7 0 .2 0 .3.2.4.3a1.5 1.5 0 0 1 0 1.5l2-.2a.8.8 0 0 1 .8.8 2.4 2.4 0 0 1-1.2 2 212 212 0 0 0-9.2 7.8c-4.3 3.8-8.8 7.6-13.2 10.8l-5.5 4c-8.4 6.3-18 13.4-28.7 14.4h-2.3l-.1.1zm-33 14 21.2 163.2-22.6-.6L71.3 187l-15 108.7-25.4-1.8 7.6-168.7 60.8 7.7h-.2z"/><path fill="#85C241" d="m89.3 64.3 38.3 25.3-11 29s-47-31.2-47.4-38.4c-.3-7.1 20-16 20-16v.1z"/><path fill="#85C241" d="M104.7 161.9s-1.2-49.7-4.8-71.3c-1.5-9.2-1-15.6-4-20.6-10.1-16.7-50-11.7-55.8-.1-5.6 11.5-7 95-7 95l71.6-3z"/><path fill="#FBFBFB" d="M97.8 295.5s-.6 9.8.7 11.4c1.2 1.6 36-1.3 34.3-5-1.7-3.9-14.5-7.1-14.5-7.1"/><path fill="#101828" d="M103 308.1c-2.8 0-4.8-.1-5.2-.7-1.4-1.7-1-9.6-.8-12a.8.8 0 0 1 .9-.8.8.8 0 0 1 .8 1c-.3 4.4-.2 9.6.4 10.7 2.4.9 23.5-.6 31-3.2 1.7-.6 2-1 2-1-1-2.4-9-5.2-13.8-6.5a.8.8 0 0 1-.5-1 .8.8 0 0 1 1-.6c1.3.4 13 3.5 14.8 7.6.2.4.3 1.4-1.2 2.4-3.6 2-20.6 4.2-29.4 4.2v-.1zm13.5-188.7a1 1 0 0 1-.4-.1c-1.1-.7-26.3-16.7-35-25.2a.9.9 0 0 1 .6-1.4.8.8 0 0 1 .5.2c8.6 8.4 34.4 24.8 34.7 25a.8.8 0 0 1 .3 1.2.9.9 0 0 1-.8.3z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/data-hosting.svg b/static/img/flatline/data-hosting.svg
new file mode 100644 (file)
index 0000000..fc6af9b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 462.1 311.3"><g class="layer"><path fill="#fff" d="M194.8 39.8H84.3c-3 0-5.3 2.4-5.3 5.4v160.6c0 3 2.4 5.3 5.3 5.3h110.5c3 0 5.3-2.3 5.3-5.3V45.1c0-2.9-2.4-5.3-5.3-5.3z"/><path fill="#242424" d="M194.8 212H84.3a6.1 6.1 0 0 1-6.2-6.2V45.1a6.2 6.2 0 0 1 6.2-6.1h110.5a6.2 6.2 0 0 1 6.2 6v160.7a6.4 6.4 0 0 1-3.8 5.7c-.8.3-1.6.5-2.4.5zM84.3 40.7a4.4 4.4 0 0 0-4.5 4.5v160.6a4.5 4.5 0 0 0 4.5 4.5h110.5a4.5 4.5 0 0 0 4.5-4.5V45.1c0-.5-.1-1.1-.4-1.7-.2-.5-.5-1-1-1.4a4.5 4.5 0 0 0-3.1-1.3H84.3z"/><path fill="#fff" d="M89.8 75h99.5V50.5H89.8v24.6z"/><path fill="#DBDBDB" d="M189.3 75.9H89.8l-.6-.3a.8.8 0 0 1-.2-.5V50.4c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2h99.5c.2 0 .4 0 .6.2l.2.6V75a.8.8 0 0 1-.8.8zm-98.7-1.7h97.8V51.3H90.6v23z"/><path fill="#85C241" d="M103 68a5.1 5.1 0 1 0 0-10.4 5.1 5.1 0 0 0 0 10.3zm77.2-8.2h-43.3a.8.8 0 0 1-.8-.8.8.8 0 0 1 .8-.9h43.3a.8.8 0 0 1 .8.9.8.8 0 0 1-.8.8zm0 7.6h-43.3a.8.8 0 0 1-.8-.8c0-.3.1-.5.3-.6.1-.2.3-.3.5-.3h43.3l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2zm-52.7.9h-14.1c-.3 0-.5-.1-.6-.3a.9.9 0 0 1-.3-.5V58a.8.8 0 0 1 .9-.8h14.1c.2 0 .4 0 .6.2l.2.6v9.3c0 .3 0 .5-.2.6l-.6.3zm-13.3-1.7h12.4V59h-12.4v7.6z"/><path fill="#fff" d="M89.8 104.7h99.5V80.1H89.8v24.6z"/><path fill="#DBDBDB" d="M189.3 105.5H89.8c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6V80.1c0-.2 0-.4.2-.5l.6-.3h99.5l.6.3.2.6v24.5a.8.8 0 0 1-.8.8zM90.6 104h97.8V81H90.6v23z"/><path fill="#85C241" d="M103 97.6a5.1 5.1 0 1 0 0-10.3 5.1 5.1 0 0 0 0 10.3zm77.2-8.1h-43.3a.8.8 0 0 1-.8-.9.8.8 0 0 1 .8-.8h43.3a.8.8 0 0 1 .8.8.8.8 0 0 1-.8.9zm0 7.5h-43.3a.8.8 0 0 1-.8-.8.8.8 0 0 1 .8-.8h43.3a.8.8 0 0 1 .8.8.8.8 0 0 1-.8.9zm-52.7 1h-14.1c-.3 0-.5-.2-.6-.3a.9.9 0 0 1-.3-.6v-9.3a.8.8 0 0 1 .9-.9h14.1l.6.3.2.6V97c0 .2 0 .4-.2.6l-.6.2zm-13.3-1.7h12.4v-7.7h-12.4v7.7z"/><path fill="#fff" d="M89.8 134.4h99.5v-24.6H89.8v24.6z"/><path fill="#DBDBDB" d="M189.3 135.2H89.8l-.6-.3a.8.8 0 0 1-.2-.6v-24.5c0-.2 0-.4.2-.6l.6-.2h99.5c.2 0 .4 0 .6.2l.2.6v24.6a.8.8 0 0 1-.8.8zm-98.7-1.7h97.8v-22.8H90.6v22.8z"/><path fill="#85C241" d="M103 127.2a5.1 5.1 0 1 0 0-10.2 5.1 5.1 0 0 0 0 10.2zm77.2-8.1h-43.3c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.6.8.8 0 0 1 .8-.8h43.3a.8.8 0 0 1 .8.8c0 .2 0 .4-.2.6l-.6.2zm0 7.6h-43.3a.8.8 0 0 1-.8-.8.8.8 0 0 1 .8-.9h43.3a.8.8 0 0 1 .8.9.8.8 0 0 1-.8.8zm-52.7.9h-14.1c-.3 0-.5-.1-.6-.3a.9.9 0 0 1-.3-.5v-9.4a.8.8 0 0 1 .9-.8h14.1c.2 0 .4 0 .6.2l.2.6v9.3c0 .3 0 .5-.2.6l-.6.3zm-13.3-1.7h12.4v-7.7h-12.4v7.7z"/><path fill="#fff" d="M89.8 164h99.5v-24.5H89.8V164z"/><path fill="#DBDBDB" d="M189.3 164.8H89.8c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6v-24.6c0-.2 0-.4.2-.5l.6-.3h99.5l.6.3.2.5V164a.9.9 0 0 1-.2.6l-.3.2a1 1 0 0 1-.3 0zm-98.7-1.6h97.8v-23H90.6v23z"/><path fill="#85C241" d="M103 156.9a5.1 5.1 0 1 0 0-10.3 5.1 5.1 0 0 0 0 10.3zm77.2-8.1h-43.3a.5.5 0 0 1-.5-.3.8.8 0 0 1-.3-.6.8.8 0 0 1 .8-.8h43.3a.8.8 0 0 1 .8.8c0 .2 0 .5-.2.6l-.6.3zm0 7.6h-43.3a.5.5 0 0 1-.5-.3.8.8 0 0 1-.3-.6.8.8 0 0 1 .8-.8h43.3a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm-52.7.9h-14.1c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6V147c0-.2.1-.4.3-.5.1-.2.4-.3.6-.3h14.1a.8.8 0 0 1 .8.8v9.4c0 .2 0 .4-.2.6l-.6.2zm-13.3-1.7h12.4V148h-12.4v7.7z"/><path fill="#fff" d="M89.8 193.7h99.5V169H89.8v24.6z"/><path fill="#DBDBDB" d="M189.3 194.5H89.8a1 1 0 0 1-.6-.3.9.9 0 0 1-.2-.5V169c0-.2 0-.4.2-.6l.6-.2h99.5c.2 0 .4 0 .6.2l.2.6v24.6c0 .2 0 .4-.2.6l-.6.2zm-98.7-1.7h97.8V170H90.6v22.8z"/><path fill="#85C241" d="M103 186.5a5.1 5.1 0 1 0 0-10.2 5.1 5.1 0 0 0 0 10.2zm77.2-8.1h-43.3a.8.8 0 0 1-.8-.8.8.8 0 0 1 .8-.9h43.3a.8.8 0 0 1 .8.9.8.8 0 0 1-.8.8zm0 7.6h-43.3c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.6.8.8 0 0 1 .8-.9h43.3a.8.8 0 0 1 .8.9c0 .2 0 .4-.2.6l-.6.2zm-52.7.9h-14.1c-.3 0-.5-.1-.6-.3a.8.8 0 0 1-.3-.6v-9.3a.8.8 0 0 1 .9-.8h14.1c.2 0 .4 0 .6.2l.2.6v9.3c0 .3 0 .5-.2.6l-.6.3zm-13.3-1.7h12.4v-7.6h-12.4v7.6z"/><path fill="#fff" d="m333.9 167.6-4.5-4.3a21.7 21.7 0 0 0-24-4.8 21.1 21.1 0 0 0-12.6 21.3c.1 2.1-.5 2.8-2.5 3.3a32.6 32.6 0 0 0 8.4 64.2h132.7A29.3 29.3 0 0 0 437 189c-3.3-.4-6.6-.4-10-.6a48 48 0 0 0-33.4-56.1 46.7 46.7 0 0 0-31.4 1.9 48.7 48.7 0 0 0-28.3 33.4z"/><path fill="#242424" d="M350.2 248.2h-51.5a33.4 33.4 0 0 1-8.7-65.9c1.7-.4 2-.8 1.9-2.4a22 22 0 0 1 26.4-23.5c4.5.9 8.5 3.1 11.7 6.4l2.9 2.8.6.5a49.7 49.7 0 0 1 28.3-32.6 48.1 48.1 0 0 1 66.1 35c1.3 6.3 1.3 12.8.1 19.1l2.2.1a30.2 30.2 0 1 1 1.1 60.5h-81zm-36.4-90.6a20.3 20.3 0 0 0-20.3 22 3.5 3.5 0 0 1-.5 2.9 4 4 0 0 1-1.2 1 31.6 31.6 0 0 0-23.4 42.3 31.6 31.6 0 0 0 30.3 20.6h132.7a28.5 28.5 0 0 0 5.5-56.6c-2.2-.3-4.5-.5-6.7-.5-1 0-2.1 0-3.1-.2h-.4a.8.8 0 0 1-.2-.3 1 1 0 0 1-.2-.3v-.4a46.8 46.8 0 0 0-91.6-20.3.9.9 0 0 1-1 .6.9.9 0 0 1-.3-.2l-1.6-1.5-3-2.8a21.5 21.5 0 0 0-15-6.3z"/><path fill="#fff" d="M351 .8H183.6a8 8 0 0 0-8 8V252a8 8 0 0 0 8 8H351a8 8 0 0 0 8-8V8.9a8 8 0 0 0-8-8z"/><path fill="#242424" d="M351 260.8H183.6a8.8 8.8 0 0 1-8.8-8.9V8.9a9 9 0 0 1 8.8-8.9H351a8.9 8.9 0 0 1 8.9 8.9v243a8.9 8.9 0 0 1-8.9 8.9zM183.6 1.7a7.3 7.3 0 0 0-7.2 7.2v243a7.3 7.3 0 0 0 7.2 7.2H351a7.2 7.2 0 0 0 7.2-7.2V8.9a7.2 7.2 0 0 0-7.2-7.2H183.7z"/><path fill="#fff" d="M192 54.1h150.6V17H192v37z"/><path fill="#DBDBDB" d="M342.6 55H192a.8.8 0 0 1-.9-.9V17c0-.2.1-.5.3-.6.1-.2.4-.3.6-.3h150.5c.2 0 .4.1.5.3.2.1.3.4.3.6v37c0 .2 0 .4-.3.6-.1.2-.3.3-.5.3zm-149.7-1.7h148.8V17.8H193v35.5z"/><path fill="#85C241" d="M212 43.3a7.8 7.8 0 1 0 0-15.5 7.8 7.8 0 0 0 0 15.5zm116.8-12.7h-65.4a.8.8 0 0 1-.8-.8c0-.2 0-.4.2-.6l.6-.2h65.4c.2 0 .4 0 .6.2l.3.6-.3.6c-.1.2-.4.3-.6.3zm0 11.5h-65.4c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6.8.8 0 0 1 .8-.9h65.4l.6.3c.2.1.3.4.3.6a.8.8 0 0 1-.9.8zm-79.7 1.3h-21.3c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6V28.5a.8.8 0 0 1 .8-.9h21.4l.6.3.2.6v14.4l-.2.3-.3.2a1 1 0 0 1-.4 0zm-20.5-1.6h19.7V29.3h-19.7v12.5z"/><path fill="#fff" d="M192 99h150.6V61.8H192V99z"/><path fill="#DBDBDB" d="M342.6 99.8H192a.8.8 0 0 1-.9-.8V61.8l.3-.6.6-.2h150.5c.2 0 .4 0 .5.2l.3.6V99c0 .2 0 .4-.3.6l-.5.2zm-149.7-1.7h148.8V62.7H193V98z"/><path fill="#85C241" d="M212 88.2a7.8 7.8 0 1 0 0-15.6 7.8 7.8 0 0 0 0 15.6zm116.8-12.7h-65.4l-.6-.3a.8.8 0 0 1-.2-.5c0-.3 0-.5.2-.6l.6-.3h65.4l.6.3a.8.8 0 0 1 0 1.1c-.1.2-.4.3-.6.3zm0 11.5h-65.4a.8.8 0 0 1-.8-.9.8.8 0 0 1 .8-.8h65.4c.2 0 .4 0 .6.2l.3.6c0 .3-.1.5-.3.6-.1.2-.4.3-.6.3zm-79.7 1.3h-21.3l-.6-.3a.8.8 0 0 1-.2-.5V73.3a.8.8 0 0 1 .8-.8h21.4c.2 0 .4 0 .6.2l.2.6v14.5l-.2.3-.3.1a1 1 0 0 1-.4 0zm-20.5-1.7h19.7V74.2h-19.7v12.4z"/><path fill="#fff" d="M192 143.8h150.6v-37.1H192v37.1z"/><path fill="#DBDBDB" d="M342.6 144.7H192a.8.8 0 0 1-.9-.9v-37.1l.3-.6c.1-.2.4-.2.6-.2h150.5c.2 0 .4 0 .5.2l.3.6v37.1c0 .2 0 .4-.3.6-.1.2-.3.3-.5.3zM192.9 143h148.8v-35.5H193V143z"/><path fill="#85C241" d="M212 133a7.8 7.8 0 1 0 0-15.5 7.8 7.8 0 0 0 0 15.5zm116.8-12.7h-65.4c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2h65.4c.2 0 .4 0 .6.2a.8.8 0 0 1 0 1.2l-.6.2zm0 11.5h-65.4c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2h65.4c.2 0 .4 0 .6.2a.8.8 0 0 1 0 1.2l-.6.2zm-79.7 1.3h-21.3c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6v-14.1a.8.8 0 0 1 .8-.9h21.4l.6.3.2.6v14.4l-.3.3-.2.2h-.4zm-20.5-1.6h19.7V119h-19.7v12.5z"/><path fill="#fff" d="M192 188.7h150.6v-37.2H192v37.2z"/><path fill="#DBDBDB" d="M342.6 189.5H192a.8.8 0 0 1-.9-.8v-37.2l.3-.6.6-.2h150.5c.2 0 .4 0 .5.2l.3.6v37.2c0 .2 0 .4-.3.6l-.5.2zm-149.7-1.7h148.8v-35.5H193v35.5z"/><path fill="#85C241" d="M212 177.8a7.8 7.8 0 1 0 0-15.5 7.8 7.8 0 0 0 0 15.5zm116.8-12.6h-65.4l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h65.4l.6.3a.8.8 0 0 1 0 1.1c-.1.2-.4.3-.6.3zm0 11.5h-65.4l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h65.4l.6.3a.8.8 0 0 1 0 1.1c-.1.2-.4.3-.6.3zm-79.7 1.3h-21.3l-.6-.3a.8.8 0 0 1-.2-.6v-14a.8.8 0 0 1 .8-.9h21.4c.2 0 .4 0 .6.2l.2.6v14.5l-.2.3-.3.1a1 1 0 0 1-.4 0zm-20.5-1.7h19.7V164h-19.7v12.4z"/><path fill="#fff" d="M192 233.5h150.6v-37.1H192v37.1z"/><path fill="#DBDBDB" d="M342.6 234.3H192a.8.8 0 0 1-.9-.8v-37.1c0-.2.1-.5.3-.6.1-.2.4-.3.6-.3h150.5c.2 0 .4.1.5.3.2.1.3.4.3.6v37.1c0 .2 0 .4-.3.6-.1.2-.3.3-.5.3zm-149.7-1.6h148.8v-35.5H193v35.5z"/><path fill="#85C241" d="M212 222.7a7.8 7.8 0 1 0 0-15.5 7.8 7.8 0 0 0 0 15.5zM328.8 210h-65.4c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2h65.4c.2 0 .4 0 .6.2a.8.8 0 0 1 0 1.2l-.6.2zm0 11.5h-65.4c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2h65.4c.2 0 .4 0 .6.2a.8.8 0 0 1 0 1.2l-.6.2zm-79.7 1.3h-21.3a.8.8 0 0 1-.8-.8v-14c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2h21.4c.2 0 .4 0 .6.2l.2.6v14.4l-.3.3-.2.2a1 1 0 0 1-.4 0zm-20.5-1.6h19.7v-12.5h-19.7v12.5z"/><path fill="#fff" d="M83.3 187.2 78 182a26 26 0 0 0-41 4.6c-2.7 4.6-3.9 10-3.4 15.3.2 2.6-.6 3.4-3 4a39.4 39.4 0 0 0 10.2 77.6H201a35.4 35.4 0 0 0 7-70.5c-4-.7-8-.7-12-.9a57.9 57.9 0 0 0-40.4-67.8 56.7 56.7 0 0 0-38 2.3 59 59 0 0 0-34.2 40.5z"/><path fill="#242424" d="M104 284.3H40.8a40 40 0 0 1-31.6-65.8 40 40 0 0 1 21.2-13.4c2.2-.6 2.6-1 2.4-3.2a26.3 26.3 0 0 1 31.7-28.2 26.6 26.6 0 0 1 14 7.7l3.5 3.4 1 .8a59.8 59.8 0 0 1 34-39.6 58 58 0 0 1 79.7 42.3 58.7 58.7 0 0 1 0 23.1l2.9.2a36.3 36.3 0 1 1 1.4 72.8h-97zM59 174.8a24.7 24.7 0 0 0-24.6 27c.3 3.3-1.1 4.3-3.6 4.9a38.2 38.2 0 0 0-29 35.4 38.5 38.5 0 0 0 39 40.5H201a34.6 34.6 0 0 0 6.6-68.8 73 73 0 0 0-8-.6l-3.8-.1a1 1 0 0 1-.3-.1.8.8 0 0 1-.3-.3.9.9 0 0 1-.2-.6 56.7 56.7 0 0 0-77.3-64.6 57.8 57.8 0 0 0-34 40.3l-.3.2a1 1 0 0 1-.4 0 .8.8 0 0 1-.4-.2l-1.9-1.8-3.5-3.4a25.9 25.9 0 0 0-18.2-7.8z"/><path fill="#fff" d="M298 172.7a51.8 51.8 0 0 0-34.6-2.2 53 53 0 0 0-37 62c-3.7.2-7.4.2-11 .8a32.4 32.4 0 0 0 6.2 64.3h146.7a36 36 0 0 0 9.3-70.9c-2.2-.5-3-1.3-2.8-3.7a23.3 23.3 0 0 0-28-25 24 24 0 0 0-12.6 6.9l-5 4.7a53.8 53.8 0 0 0-31.1-37z"/><path fill="#242424" d="M310.8 298.5h-89.2a33.2 33.2 0 0 1-6.3-66c2.5-.4 5-.6 7.6-.6l2.5-.2a53.9 53.9 0 0 1 37.2-61.8 53 53 0 0 1 35.8 2 54.8 54.8 0 0 1 31.3 36.2l.8-.7 3.1-3a24.7 24.7 0 0 1 27.5-5.6 24.1 24.1 0 0 1 14.4 24.3c0 1.8.3 2.3 2.2 2.8a36.7 36.7 0 0 1 25.5 48.6 36.5 36.5 0 0 1-35 24h-57.5zM278 169.3a51.8 51.8 0 0 0-50.9 63.3v.4a.8.8 0 0 1-.7.3l-3.5.2a31.5 31.5 0 1 0-1.3 63.3h146.7a35.1 35.1 0 0 0 9.1-69.3c-2.3-.6-3.6-1.5-3.3-4.6a22.5 22.5 0 0 0-27.1-24c-4.6.9-8.8 3.2-12 6.5l-3.2 3.1-1.8 1.7-.3.2h-.4a.8.8 0 0 1-.6-.6 52.8 52.8 0 0 0-50.6-40.5z"/><path fill="#fff" d="M131.2 292.4v-56h10L121.6 215 102 236.5h10v55.9"/><path fill="#242424" d="M131.1 293.2c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6v-56c0-.2 0-.4.2-.5l.6-.3h8.1l-17.6-19.4-17.6 19.4h8.1c.2 0 .5.1.6.3.2.1.3.4.3.6v55.8l-.3.6c-.1.2-.4.3-.6.3l-.6-.3a.8.8 0 0 1-.2-.6v-55h-9.1a.8.8 0 0 1-.8-.5c0-.1-.1-.3 0-.4l.1-.5 19.5-21.4.3-.2a1 1 0 0 1 .7 0l.3.2 19.5 21.4.2.5-.1.4c0 .2-.2.3-.3.4l-.5.1H132v55.4l-.2.3-.3.2h-.4z"/><path fill="#fff" d="M287.4 233v56h-10l19.5 21.5 19.5-21.5h-10v-56"/><path fill="#242424" d="m296.9 311.3-.4-.1a.7.7 0 0 1-.2-.2l-19.5-21.4a.8.8 0 0 1 .6-1.4h9.1V233a.8.8 0 0 1 .9-.9l.6.3.2.6v56c0 .2 0 .4-.2.6l-.6.2h-8.1l17.6 19.4 17.6-19.4h-8.1c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6v-56c0-.2 0-.4.2-.5l.6-.3.6.3.2.6v55h9.2a.9.9 0 0 1 .7.5v.5l-.1.4-19.5 21.5-.3.2h-.3z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/data-process-with-xen-logo.svg b/static/img/flatline/data-process-with-xen-logo.svg
new file mode 100644 (file)
index 0000000..968120c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" viewBox="0 0 720 345"><defs><path id="h" fill="#fff" d="M0 0h41v16H0z"/></defs><path fill="#FBFBFB" d="M167 57H1v67h166V57Z"/><path fill="#DBDBDB" d="M167 125H1a1 1 0 0 1-1-1V57a1 1 0 0 1 1-1h166a1 1 0 0 1 1 1v67a1 1 0 0 1-1 1ZM2 123h164V58H2v65Z"/><path fill="#FBFBFB" d="M1 57v-6h56.3l7.6-5.7h102.2V57H.9Z"/><path fill="#DBDBDB" d="M167 58H1a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1h56l7.3-5.5.6-.2h102.2a1 1 0 0 1 1 1V57a1 1 0 0 1-1 1ZM2 56h164v-9.7H65.2L58 51.7a1 1 0 0 1-.6.2H1.9V56Zm145.3 10H20.7a1 1 0 0 1-1-1 1 1 0 0 1 1-1h126.6a1 1 0 0 1 1 1 1 1 0 0 1-1 1Zm.5 11H20.1a1 1 0 0 1-1-1 1 1 0 0 1 1-1.2h127.6a1 1 0 0 1 1 1 1 1 0 0 1-.9 1.2Z"/><path fill="#07C" d="M93.4 87.6h-73a1 1 0 0 1-.9-1 1 1 0 0 1 1-1h72.9a1 1 0 0 1 1 1 1 1 0 0 1-1 1Z"/><path fill="#DBDBDB" d="M234.3 344.3c-8-.2-16-1.5-23.7-3.7-29.7-7.8-47.8-20.2-55.4-37.7a1 1 0 0 1 .1-1.1 1 1 0 0 1 .8-.4 1 1 0 0 1 .7.3l.2.4c7.3 17 25 29 54.1 36.6 13.5 3.6 30.5 6.6 43.5-1.7 3.3-2.2 6.4-4.8 9.2-7.7 2.6-2.7 5.5-5.2 8.5-7.4a44.3 44.3 0 0 1 24.5-7c9-8.4 33.4-10 38.4-10.2 9.5 0 19-2 27.8-5.5a38.5 38.5 0 0 0 20.4-19 1 1 0 0 1 .7-.3h.4a1 1 0 0 1 .5 1.4c-4.4 9-12 16-21.3 19.7-9 3.6-18.7 5.6-28.5 5.7-4.6.2-25.7 1.5-35.3 8.2 8 .2 16 1.2 24 2.7 2 .1 3.8 1 5.2 2.5a4.3 4.3 0 0 1 .6 4c-1 2.8-4.7 5.2-8 6.2-8.9 2.6-18.9 4.5-25.5-1.6a9 9 0 0 1-2.9-5.2c-.3-2.4.3-4.7 1.7-6.7a41.1 41.1 0 0 0-29.8 13.9c-3 3-6.1 5.6-9.5 8a39 39 0 0 1-21.4 5.6Zm63.3-27.6-.5.5a7.3 7.3 0 0 0-1.8 6 7 7 0 0 0 2.3 4c5.8 5.4 15.1 3.6 23.5 1.1 2.7-.8 6-2.9 6.7-5a2.1 2.1 0 0 0-.4-2.1 6 6 0 0 0-4-1.7c-8.5-1.7-17.1-2.7-25.8-2.7v-.1ZM201.7 279C90 279 5 278.6 3.2 277.2a1 1 0 0 1-.3-1c0-.2 0-.3.2-.4a1 1 0 0 1 1.2-.3c10 2.9 471.7 1.2 714.7 0a1 1 0 0 1 0 2c-74 .3-332.2 1.5-517.3 1.5Z"/><path fill="#FBFBFB" d="M683 37.2H556.4c-3.7 0-6.7 3-6.7 6.7v242.3c0 3.7 3 6.7 6.7 6.7H683c3.7 0 6.8-3 6.8-6.8V44c0-3.7-3-6.7-6.8-6.7Z"/><path fill="#475467" d="M683 294H556.4a7.8 7.8 0 0 1-7.8-7.9V44a7.8 7.8 0 0 1 7.8-7.8H683a7.8 7.8 0 0 1 8 7.8v242a7.8 7.8 0 0 1-7.9 7.9ZM556.4 38.3a5.6 5.6 0 0 0-5.6 5.6v242.2a5.6 5.6 0 0 0 5.6 5.6H683a5.6 5.6 0 0 0 5.7-5.6V44a5.6 5.6 0 0 0-5.7-5.6H556.4Z"/><path fill="#FBFBFB" d="M673 45.9H567.7c-3.7 0-6.7 3-6.7 6.7v16.8c0 3.7 3 6.7 6.7 6.7h105.5c3.7 0 6.7-3 6.7-6.7V52.6c0-3.7-3-6.7-6.7-6.7Z"/><path fill="#475467" d="M673 77.2H567.7a7.9 7.9 0 0 1-7.8-7.8V52.6a7.9 7.9 0 0 1 7.8-7.8h105.5a7.8 7.8 0 0 1 7.8 7.8v16.8a7.8 7.8 0 0 1-7.8 7.8ZM567.7 47a5.7 5.7 0 0 0-5.6 5.6v16.8a5.7 5.7 0 0 0 5.6 5.6h105.5a5.6 5.6 0 0 0 5.6-5.6V52.6a5.6 5.6 0 0 0-5.6-5.6H567.6Z"/><path fill="#DBDBDB" d="M665.3 58.6h-51a1 1 0 0 1-1-1 1 1 0 0 1 1-1h51a1 1 0 0 1 1 1.4 1 1 0 0 1-1 .6Zm0 7.8h-51a1 1 0 0 1-1-1 1 1 0 0 1 1-1h51a1 1 0 0 1 1 1.4 1 1 0 0 1-1 .6Z"/><path fill="#85C241" d="M577 65.7a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.4Z"/><path fill="#DBDBDB" d="M592.3 66.7a5.7 5.7 0 1 1-.2-11.4 5.7 5.7 0 0 1 .2 11.4Zm0-9.4a3.7 3.7 0 1 0 0 7.4 3.7 3.7 0 0 0 0-7.4Z"/><path fill="#FBFBFB" d="M673 82.8H567.7c-3.7 0-6.7 3-6.7 6.7v16.8c0 3.7 3 6.7 6.7 6.7h105.5c3.7 0 6.7-3 6.7-6.7V89.5c0-3.7-3-6.7-6.7-6.7Z"/><path fill="#475467" d="M673 114.1H567.7a7.9 7.9 0 0 1-7.8-7.8V89.5a7.8 7.8 0 0 1 7.8-7.8h105.5a7.8 7.8 0 0 1 7.8 7.8v16.8a7.8 7.8 0 0 1-7.8 7.8ZM567.7 84a5.7 5.7 0 0 0-5.6 5.6v16.8a5.7 5.7 0 0 0 5.6 5.7h105.5a5.7 5.7 0 0 0 5.6-5.7V89.5a5.6 5.6 0 0 0-5.6-5.6H567.6Z"/><path fill="#DBDBDB" d="M665.3 95.6h-51a1 1 0 0 1-.8-1.4 1 1 0 0 1 .5-.5c.1 0 .2-.1.4 0h51a1 1 0 0 1 1 .9 1 1 0 0 1-1 1Zm0 7.8h-51a1 1 0 0 1 0-2h51a1 1 0 0 1 0 2Z"/><path fill="#85C241" d="M577 102.6a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.4Z"/><path fill="#DBDBDB" d="M592.3 103.6a5.7 5.7 0 1 1 0-11.4 5.7 5.7 0 0 1 0 11.4Zm0-9.4a3.7 3.7 0 1 0 0 7.5 3.7 3.7 0 0 0 0-7.5Z"/><path fill="#FBFBFB" d="M673 119.8H567.7c-3.7 0-6.7 3-6.7 6.7v16.8c0 3.7 3 6.7 6.7 6.7h105.5c3.7 0 6.7-3 6.7-6.7v-16.8c0-3.7-3-6.7-6.7-6.7Z"/><path fill="#475467" d="M673 151H567.7a7.8 7.8 0 0 1-7.8-7.7v-16.8a7.8 7.8 0 0 1 7.8-7.8h105.5a7.8 7.8 0 0 1 7.8 7.8v16.8a7.8 7.8 0 0 1-7.8 7.8Zm-105.3-30a5.7 5.7 0 0 0-5.6 5.6v16.8a5.7 5.7 0 0 0 5.6 5.6h105.5a5.6 5.6 0 0 0 5.6-5.6v-16.8a5.6 5.6 0 0 0-5.6-5.6H567.6Z"/><path fill="#DBDBDB" d="M665.3 132.5h-51a1 1 0 0 1-.8-1.4 1 1 0 0 1 .9-.6h51a1 1 0 0 1 1 1 1 1 0 0 1-1 1Zm0 7.8h-51a1 1 0 0 1-.8-1.3 1 1 0 0 1 .9-.6h51a1 1 0 0 1 .6.3 1 1 0 0 1 .3.7 1 1 0 0 1-1 1Z"/><path fill="#85C241" d="M577 139.6a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.4Z"/><path fill="#DBDBDB" d="M592.3 140.6a5.7 5.7 0 1 1 0-11.4 5.7 5.7 0 0 1 0 11.4Zm0-9.4a3.7 3.7 0 1 0 0 7.4 3.7 3.7 0 0 0 0-7.4Z"/><path fill="#FBFBFB" d="M673 156.7H567.7c-3.7 0-6.7 3-6.7 6.8v16.7c0 3.7 3 6.7 6.7 6.7h105.5c3.7 0 6.7-3 6.7-6.7v-16.7c0-3.8-3-6.8-6.7-6.8Z"/><path fill="#475467" d="M673 188H567.7a7.8 7.8 0 0 1-7.8-7.8v-16.7a7.8 7.8 0 0 1 7.8-7.9h105.5a7.8 7.8 0 0 1 7.8 7.9v16.7a7.8 7.8 0 0 1-7.8 7.8Zm-105.4-30.2a5.7 5.7 0 0 0-5.6 5.7v16.7a5.7 5.7 0 0 0 5.6 5.6h105.5a5.6 5.6 0 0 0 5.6-5.6v-16.7a5.7 5.7 0 0 0-5.6-5.7H567.6Z"/><path fill="#DBDBDB" d="M665.3 169.4h-51a1 1 0 0 1-1-1 1 1 0 0 1 1-1h51a1 1 0 0 1 1 1.4 1 1 0 0 1-1 .6Zm0 7.9h-51a1 1 0 0 1 0-2h51a1 1 0 1 1 0 2Z"/><path fill="#07C" d="M577 176.5a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.4Z"/><path fill="#DBDBDB" d="M592.3 177.5a5.7 5.7 0 1 1 0-11.4 5.7 5.7 0 0 1 0 11.4Zm0-9.4a3.7 3.7 0 1 0 0 7.5 3.7 3.7 0 0 0 0-7.5Z"/><path fill="#FBFBFB" d="M673 193.7H567.7c-3.7 0-6.7 3-6.7 6.7v16.8c0 3.7 3 6.7 6.7 6.7h105.5c3.7 0 6.7-3 6.7-6.7v-16.8c0-3.7-3-6.7-6.7-6.7Z"/><path fill="#475467" d="M673 225H567.7a7.9 7.9 0 0 1-7.8-7.8v-16.8a7.9 7.9 0 0 1 7.8-7.8h105.5a7.8 7.8 0 0 1 7.8 7.8v16.8a7.8 7.8 0 0 1-7.8 7.8Zm-105.4-30.2a5.7 5.7 0 0 0-5.6 5.6v16.8a5.7 5.7 0 0 0 5.6 5.6h105.5a5.6 5.6 0 0 0 5.5-5.6v-16.8a5.6 5.6 0 0 0-5.6-5.6H567.6Z"/><path fill="#DBDBDB" d="M665.3 206.4h-51a1 1 0 0 1-.6-.3 1 1 0 0 1-.3-.7 1 1 0 0 1 1-1h51a1 1 0 0 1 .9 1.4 1 1 0 0 1-1 .6Zm0 7.8h-51a1 1 0 0 1-1-1 1 1 0 0 1 1-1h51a1 1 0 0 1 1 1.4 1 1 0 0 1-.6.6 1 1 0 0 1-.4 0Z"/><path fill="#85C241" d="M577 213.5a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.4Z"/><path fill="#DBDBDB" d="M592.3 214.5a5.7 5.7 0 1 1 0-11.4 5.7 5.7 0 0 1 0 11.4Zm0-9.5a3.7 3.7 0 1 0 0 7.5 3.7 3.7 0 0 0 0-7.5Z"/><path fill="#FBFBFB" d="M673 230.6H567.7c-3.7 0-6.7 3-6.7 6.7v16.8c0 3.7 3 6.7 6.7 6.7h105.5c3.7 0 6.7-3 6.7-6.7v-16.8c0-3.7-3-6.7-6.7-6.7Z"/><path fill="#475467" d="M673 262H567.7a7.9 7.9 0 0 1-7.8-8v-16.7a7.8 7.8 0 0 1 7.8-7.8h105.5a7.8 7.8 0 0 1 7.8 7.8v16.8a7.8 7.8 0 0 1-7.8 7.8Zm-105.4-30.3a5.6 5.6 0 0 0-5.6 5.6v16.8a5.7 5.7 0 0 0 5.6 5.6h105.5a5.6 5.6 0 0 0 5.6-5.6v-16.8a5.6 5.6 0 0 0-5.6-5.6H567.6Z"/><path fill="#DBDBDB" d="M665.3 243.3h-51a1 1 0 0 1-1-1 1 1 0 0 1 .4-.6 1 1 0 0 1 .7-.3h51a1 1 0 0 1 1 1 1 1 0 0 1-1 1Zm0 7.8h-51a1 1 0 0 1-.8-1 1 1 0 0 1 .9-1h51a1 1 0 0 1 0 2Z"/><path fill="#85C241" d="M577 250.4a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.4Z"/><path fill="#DBDBDB" d="M592.3 251.4a5.7 5.7 0 1 1 0-11.4 5.7 5.7 0 0 1 0 11.4Zm0-9.4a3.7 3.7 0 1 0 0 7.5 3.7 3.7 0 0 0 0-7.5Z"/><path fill="#FBFBFB" d="M436.2 37.2H309.5c-3.7 0-6.7 3-6.7 6.7v242.3c0 3.7 3 6.7 6.7 6.7h126.7c3.7 0 6.7-3 6.7-6.8V44c0-3.7-3-6.7-6.7-6.7Z"/><path fill="#475467" d="M436.2 294H309.5a7.8 7.8 0 0 1-7.8-7.9V44a7.8 7.8 0 0 1 7.8-7.8h126.7A7.8 7.8 0 0 1 444 44v242a7.8 7.8 0 0 1-7.8 7.9ZM309.5 38.3A5.6 5.6 0 0 0 304 44v242.2a5.6 5.6 0 0 0 5.6 5.6h126.7a5.6 5.6 0 0 0 5.6-5.6V44a5.6 5.6 0 0 0-5.6-5.6H309.5Z"/><path fill="#FBFBFB" d="M426.2 45.9H320.8c-3.8 0-6.8 3-6.8 6.7v16.8c0 3.7 3 6.7 6.8 6.7h105.4c3.7 0 6.7-3 6.7-6.7V52.6c0-3.7-3-6.7-6.7-6.7Z"/><path fill="#475467" d="M426.2 77.2H320.8a7.8 7.8 0 0 1-7.9-7.8V52.6a7.8 7.8 0 0 1 7.9-7.8h105.4a7.8 7.8 0 0 1 7.9 7.8v16.8a7.8 7.8 0 0 1-7.9 7.8ZM320.8 47a5.6 5.6 0 0 0-5.7 5.6v16.8a5.6 5.6 0 0 0 5.7 5.6h105.4a5.7 5.7 0 0 0 5.7-5.6V52.6a5.7 5.7 0 0 0-5.7-5.6H320.8Z"/><path fill="#DBDBDB" d="M418.5 58.6h-51a1 1 0 0 1-1-1 1 1 0 0 1 1-1h51a1 1 0 0 1 1 1 1 1 0 0 1-1 1Zm0 7.8h-51a1 1 0 0 1-1-1 1 1 0 0 1 1-1h51a1 1 0 0 1 1 1 1 1 0 0 1-1 1Z"/><path fill="#85C241" d="M330.2 65.7a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.4Z"/><path fill="#DBDBDB" d="M345.4 66.7a5.7 5.7 0 1 1 0-11.4 5.7 5.7 0 0 1 0 11.4Zm0-9.4a3.7 3.7 0 1 0 0 7.4 3.7 3.7 0 0 0 0-7.4Z"/><path fill="#FBFBFB" d="M426.2 82.8H320.8c-3.8 0-6.8 3-6.8 6.7v16.8c0 3.7 3 6.7 6.8 6.7h105.4c3.7 0 6.7-3 6.7-6.7V89.5c0-3.7-3-6.7-6.7-6.7Z"/><path fill="#475467" d="M426.2 114.1H320.8a7.8 7.8 0 0 1-7.9-7.8V89.5a7.8 7.8 0 0 1 7.9-7.8h105.4a7.8 7.8 0 0 1 7.9 7.8v16.8a7.8 7.8 0 0 1-7.9 7.8ZM320.8 84a5.6 5.6 0 0 0-5.7 5.6v16.8a5.7 5.7 0 0 0 5.7 5.7h105.4a5.7 5.7 0 0 0 5.7-5.7V89.5a5.7 5.7 0 0 0-5.7-5.6H320.8Z"/><path fill="#DBDBDB" d="M418.5 95.6h-51a1 1 0 0 1-1-1 1 1 0 0 1 1-1h51a1 1 0 0 1 1 1 1 1 0 0 1-1 1Zm0 7.8h-51a1 1 0 0 1-.8-1 1 1 0 0 1 .8-1h51a1 1 0 0 1 0 2Z"/><path fill="#07C" d="M330.2 102.6a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.4Z"/><path fill="#DBDBDB" d="M345.4 103.6a5.7 5.7 0 1 1 0-11.4 5.7 5.7 0 0 1 0 11.4Zm0-9.4a3.7 3.7 0 1 0 0 7.5 3.7 3.7 0 0 0 0-7.5Z"/><path fill="#FBFBFB" d="M426.2 119.8H320.8c-3.8 0-6.8 3-6.8 6.7v16.8c0 3.7 3 6.7 6.8 6.7h105.4c3.7 0 6.7-3 6.7-6.7v-16.8c0-3.7-3-6.7-6.7-6.7Z"/><path fill="#475467" d="M426.2 151H320.8a7.8 7.8 0 0 1-7.9-7.7v-16.8a7.8 7.8 0 0 1 7.9-7.8h105.4a7.8 7.8 0 0 1 7.9 7.8v16.8a7.8 7.8 0 0 1-7.9 7.8Zm-105.4-30a5.6 5.6 0 0 0-5.7 5.6v16.8a5.6 5.6 0 0 0 5.7 5.6h105.4a5.7 5.7 0 0 0 5.7-5.6v-16.8a5.7 5.7 0 0 0-5.7-5.6H320.8Z"/><path fill="#DBDBDB" d="M418.5 132.5h-51a1 1 0 0 1-1-1 1 1 0 0 1 1-1h51a1 1 0 0 1 0 2Zm0 7.8h-51a1 1 0 0 1-1-1 1 1 0 0 1 1-1h51a1 1 0 0 1 1 1 1 1 0 0 1-1 1Z"/><path fill="#85C241" d="M330.2 139.6a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.4Z"/><path fill="#DBDBDB" d="M345.4 140.6a5.7 5.7 0 1 1 0-11.4 5.7 5.7 0 0 1 0 11.4Zm0-9.4a3.7 3.7 0 1 0 0 7.4 3.7 3.7 0 0 0 0-7.4Z"/><path fill="#FBFBFB" d="M426.2 156.7H320.8c-3.8 0-6.8 3-6.8 6.8v16.7c0 3.7 3 6.7 6.8 6.7h105.4c3.7 0 6.7-3 6.7-6.7v-16.7c0-3.8-3-6.8-6.7-6.8Z"/><path fill="#475467" d="M426.2 188H320.8a7.8 7.8 0 0 1-7.9-7.8v-16.7a7.8 7.8 0 0 1 7.9-7.9h105.4a7.8 7.8 0 0 1 7.9 7.9v16.7a7.8 7.8 0 0 1-7.9 7.8Zm-105.4-30.2a5.7 5.7 0 0 0-5.7 5.7v16.7a5.6 5.6 0 0 0 5.7 5.6h105.4a5.7 5.7 0 0 0 5.7-5.6v-16.7a5.7 5.7 0 0 0-5.7-5.7H320.8Z"/><path fill="#DBDBDB" d="M418.5 169.4h-51a1 1 0 0 1-1-1 1 1 0 0 1 1-1h51a1 1 0 0 1 1 1 1 1 0 0 1-1 1Zm0 7.9h-51a1 1 0 0 1 0-2h51a1 1 0 1 1 0 2Z"/><path fill="#85C241" d="M330.2 176.5a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.4Z"/><path fill="#DBDBDB" d="M345.4 177.5a5.7 5.7 0 1 1 0-11.4 5.7 5.7 0 0 1 0 11.4Zm0-9.4a3.7 3.7 0 1 0 0 7.5 3.7 3.7 0 0 0 0-7.5Z"/><path fill="#FBFBFB" d="M426.2 193.7H320.8c-3.8 0-6.8 3-6.8 6.7v16.8c0 3.7 3 6.7 6.8 6.7h105.4c3.7 0 6.7-3 6.7-6.7v-16.8c0-3.7-3-6.7-6.7-6.7Z"/><path fill="#475467" d="M426.2 225H320.8a7.8 7.8 0 0 1-7.9-7.8v-16.8a7.8 7.8 0 0 1 7.9-7.8h105.4a7.8 7.8 0 0 1 7.9 7.8v16.8a7.8 7.8 0 0 1-7.9 7.8Zm-105.4-30.2a5.6 5.6 0 0 0-5.7 5.6v16.8a5.6 5.6 0 0 0 5.7 5.6h105.4a5.7 5.7 0 0 0 5.7-5.6v-16.8a5.7 5.7 0 0 0-5.7-5.6H320.8Z"/><path fill="#DBDBDB" d="M418.5 206.4h-51a1 1 0 0 1-.7-1.7c.2-.2.5-.3.7-.3h51a1 1 0 0 1 1 1 1 1 0 0 1-1 1Zm0 7.8h-51a1 1 0 0 1-1-1 1 1 0 0 1 1-1h51a1 1 0 0 1 1 1 1 1 0 0 1-1 1Z"/><path fill="#07C" d="M330.2 213.5a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.4Z"/><path fill="#DBDBDB" d="M345.4 214.5a5.7 5.7 0 1 1 0-11.4 5.7 5.7 0 0 1 0 11.4Zm0-9.5a3.7 3.7 0 1 0 0 7.5 3.7 3.7 0 0 0 0-7.5Z"/><path fill="#FBFBFB" d="M426.2 230.6H320.8c-3.8 0-6.8 3-6.8 6.7v16.8c0 3.7 3 6.7 6.8 6.7h105.4c3.7 0 6.7-3 6.7-6.7v-16.8c0-3.7-3-6.7-6.7-6.7Z"/><path fill="#475467" d="M426.2 262H320.8a7.8 7.8 0 0 1-7.9-8v-16.7a7.8 7.8 0 0 1 7.9-7.8h105.4a7.8 7.8 0 0 1 7.9 7.8v16.8a7.8 7.8 0 0 1-7.9 7.8Zm-105.4-30.3a5.6 5.6 0 0 0-5.7 5.6v16.8a5.7 5.7 0 0 0 5.7 5.6h105.4a5.7 5.7 0 0 0 5.7-5.6v-16.8a5.7 5.7 0 0 0-5.7-5.6H320.8Z"/><path fill="#DBDBDB" d="M418.5 243.3h-51a1 1 0 0 1-1-1 1 1 0 0 1 1-1h51a1 1 0 0 1 1 1 1 1 0 0 1-1 1Zm0 7.8h-51a1 1 0 0 1 0-2h51a1 1 0 0 1 .9 1 1 1 0 0 1-.9 1Z"/><path fill="#85C241" d="M330.2 250.4a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.4Z"/><path fill="#DBDBDB" d="M345.4 251.4a5.7 5.7 0 1 1 0-11.4 5.7 5.7 0 0 1 0 11.4Zm0-9.4a3.7 3.7 0 1 0 0 7.5 3.7 3.7 0 0 0 0-7.5Z"/><path fill="#FBFBFB" d="M570.9 1.8H421.8a7.9 7.9 0 0 0-8 7.9v285.2a8 8 0 0 0 8 7.9h149a8 8 0 0 0 8-8V9.8a8 8 0 0 0-8-7.9Z"/><path fill="#475467" d="M570.8 303.8h-149a9 9 0 0 1-9-9V9.7a9 9 0 0 1 9-9h149a9 9 0 0 1 9 9v285.1a9 9 0 0 1-9 9ZM421.8 3a6.8 6.8 0 0 0-6.9 6.8v285.1a6.8 6.8 0 0 0 6.9 6.9h149a6.8 6.8 0 0 0 6.9-6.9V9.7a6.8 6.8 0 0 0-6.9-6.8h-149Z"/><path fill="#FBFBFB" d="M559.1 12H435a8 8 0 0 0-8 8v19.6a8 8 0 0 0 8 8h124a8 8 0 0 0 8-8V20a8 8 0 0 0-8-8Z"/><path fill="#475467" d="M559.1 48.7H435a9 9 0 0 1-9-9V19.8a9 9 0 0 1 9-9h124a9 9 0 0 1 9 9v19.7a9 9 0 0 1-9 9ZM435 13a6.9 6.9 0 0 0-6.9 6.8v19.7a6.8 6.8 0 0 0 6.9 6.9h124a6.8 6.8 0 0 0 7-6.9V20a6.8 6.8 0 0 0-6.9-6.8H435Z"/><path fill="#85C241" d="M446 35.3a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11Z"/><path fill="#DBDBDB" d="M464 36.3a6.5 6.5 0 1 1-.2-13 6.5 6.5 0 0 1 .3 13Zm0-11a4.6 4.6 0 1 0 0 9 4.6 4.6 0 0 0 0-9Z"/><path fill="#FBFBFB" d="M559.1 55.5H435a8 8 0 0 0-8 7.9v19.7a8 8 0 0 0 8 8h124a8 8 0 0 0 8-8V63.4a8 8 0 0 0-8-8Z"/><path fill="#475467" d="M559.1 92.2H435a9 9 0 0 1-9-9V63.3a9 9 0 0 1 9-9h124a9 9 0 0 1 9 9V83a9 9 0 0 1-9 9ZM435 56.6a6.8 6.8 0 0 0-6.9 6.8v19.7A6.9 6.9 0 0 0 435 90h124a6.8 6.8 0 0 0 7-7V63.4a6.8 6.8 0 0 0-6.8-6.8H435Z"/><path fill="#85C241" d="M446 78.8a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11Z"/><path fill="#DBDBDB" d="M464 79.8a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13Zm0-11a4.6 4.6 0 1 0 0 9 4.6 4.6 0 0 0 0-9Z"/><path fill="#FBFBFB" d="M559.1 99H435a8 8 0 0 0-8 7.9v19.7a8 8 0 0 0 8 8h124a8 8 0 0 0 8-8V107a8 8 0 0 0-8-8Z"/><path fill="#475467" d="M559.1 135.6H435a9 9 0 0 1-9-9V107a9 9 0 0 1 9-9h124a9 9 0 0 1 9 9v19.7a9 9 0 0 1-9 9ZM435 100.1a6.8 6.8 0 0 0-6.9 6.8v19.7a6.8 6.8 0 0 0 6.9 6.9h124a6.8 6.8 0 0 0 6.8-6.9V107a6.8 6.8 0 0 0-6.8-6.8H435Z"/><path fill="#85C241" d="M446 122.3a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11Z"/><path fill="#DBDBDB" d="M464 123.3a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13Zm0-11a4.6 4.6 0 1 0 0 9 4.6 4.6 0 0 0 0-9Z"/><path fill="#FBFBFB" d="M559.1 142.5H435a8 8 0 0 0-8 7.9V170a8 8 0 0 0 8 8h124a8 8 0 0 0 8-8v-19.7a8 8 0 0 0-8-8Z"/><path fill="#475467" d="M559.1 179.2H435a9 9 0 0 1-9-9v-19.8a9 9 0 0 1 9-9h124a9 9 0 0 1 9 9V170a9 9 0 0 1-9 9ZM435 143.6a6.8 6.8 0 0 0-6.9 6.8V170a6.9 6.9 0 0 0 6.9 6.9h124a6.8 6.8 0 0 0 6.8-6.9v-19.7a6.8 6.8 0 0 0-6.8-6.8H435Z"/><path fill="#07C" d="M446 165.8a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11Z"/><path fill="#DBDBDB" d="M464 166.8a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13Zm0-11.1a4.6 4.6 0 1 0 0 9.1 4.6 4.6 0 0 0 0-9.1Z"/><path fill="#FBFBFB" d="M559.1 186H435a8 8 0 0 0-8 7.9v19.7a8 8 0 0 0 8 8h124a8 8 0 0 0 8-8V194a8 8 0 0 0-8-8Z"/><path fill="#475467" d="M559.1 222.6H435a9 9 0 0 1-9-9v-19.8a9 9 0 0 1 9-9h124a9 9 0 0 1 9 9v19.7a9 9 0 0 1-9 9.1ZM435 187.1a6.8 6.8 0 0 0-6.9 6.8v19.7a6.8 6.8 0 0 0 6.9 6.8h124a6.8 6.8 0 0 0 6.8-6.8v-19.8a6.8 6.8 0 0 0-6.8-6.8H435Z"/><path fill="#85C241" d="M446 209.3a5.5 5.5 0 1 0 0-11.1 5.5 5.5 0 0 0 0 11Z"/><path fill="#DBDBDB" d="M464 210.3a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13Zm0-11.1a4.6 4.6 0 1 0 0 9.1 4.6 4.6 0 0 0 0-9.1Z"/><path fill="#FBFBFB" d="M559.1 229.5H435a8 8 0 0 0-8 7.9V257a8 8 0 0 0 8 8h124a8 8 0 0 0 8-8v-19.7a8 8 0 0 0-8-8Z"/><path fill="#475467" d="M559.1 266.1H435a9 9 0 0 1-9-9v-19.7a9 9 0 0 1 9-9h124a9 9 0 0 1 9 9V257a9 9 0 0 1-9 9ZM435 230.5a6.9 6.9 0 0 0-6.9 6.9V257a6.8 6.8 0 0 0 6.9 6.8h124a6.8 6.8 0 0 0 6.8-6.8v-19.8a6.8 6.8 0 0 0-6.8-6.8H435Z"/><path fill="#07C" d="M446 252.8a5.5 5.5 0 1 0 0-11.1 5.5 5.5 0 0 0 0 11Z"/><path fill="#DBDBDB" d="M464 253.8a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13Zm0-11.1a4.6 4.6 0 1 0 4.6 4.5 4.5 4.5 0 0 0-4.5-4.6Z"/><path fill="#FBFBFB" d="M278.7 101h-253c-6.3 0-11.4 5.2-11.4 11.5v128.8c0 6.3 5 11.5 11.4 11.5h253c6.4 0 11.5-5.2 11.5-11.5V112.5c0-6.3-5.1-11.5-11.5-11.5Z"/><path fill="#475467" d="M278.7 253.9h-253a12.6 12.6 0 0 1-12.5-12.6V112.5a12.6 12.6 0 0 1 12.5-12.6h253a12.6 12.6 0 0 1 12.6 12.6v128.8a12.6 12.6 0 0 1-12.6 12.6ZM25.7 102a10.4 10.4 0 0 0-10.3 10.4v128.8a10.4 10.4 0 0 0 10.3 10.4h253a10.4 10.4 0 0 0 10.4-10.4V112.5a10.4 10.4 0 0 0-10.4-10.4h-253Z"/><path fill="#FBFBFB" d="M290.2 118.3h-276v117.2h276V118.3Z"/><path fill="#475467" d="M290.2 236.6h-276a1 1 0 0 1-1-1V118.2a1 1 0 0 1 1-1h276a1 1 0 0 1 1.1 1v117.2a1 1 0 0 1-1 1.1Zm-274.8-2.1H289v-115H15.4v115Z"/><path fill="#FBFBFB" d="M200.5 286H104l10.9-33.2h74.7l10.9 33.2Z"/><path fill="#475467" d="M200.5 287.1H104a1.1 1.1 0 0 1-.9-.4 1 1 0 0 1-.1-1l10.9-33.3a1.1 1.1 0 0 1 1-.7h74.7a1 1 0 0 1 1 .7l11 33.3a1 1 0 0 1-1.1 1.4Zm-95-2.1H199l-10.2-31h-73.1l-10.2 31Z"/><path fill="#FBFBFB" d="M208.5 286H96a4.7 4.7 0 1 0 0 9.4h112.5c2.5 0 4.6-2 4.6-4.7 0-2.6-2-4.7-4.6-4.7Z"/><path fill="#475467" d="M208.5 296.5H96a5.8 5.8 0 0 1 0-11.6h112.5a5.8 5.8 0 0 1 0 11.6ZM96 287.1a3.6 3.6 0 1 0 0 7.2h112.5a3.6 3.6 0 1 0 0-7.2H96Zm11.2-9.9c1.5-.8 85-16 85-16l-2.7-8.4H115l-7.7 24.4Z"/><path fill="#475467" d="M107.2 278.3a1 1 0 0 1-.7-.2 1 1 0 0 1-.3-1.2l7.7-24.4a1.1 1.1 0 0 1 1-.8h74.7a1 1 0 0 1 1 .8l2.7 8.3a1 1 0 0 1 0 .9 1 1 0 0 1-.7.5 3966.4 3966.4 0 0 0-85.4 16.1Zm8.5-24.5-6.9 22a5573 5573 0 0 1 82.1-15.5l-2-6.4h-73.2Z"/><path fill="#07C" d="M256.5 221.8h11.8v-8.1h-11.8v8Z"/><path fill="#85C241" d="M239.5 221.8h11.8v-19.6h-11.8v19.6Z"/><path fill="#07C" d="M222.6 221.8h11.8v-64.2h-11.8v64.2Z"/><path fill="#85C241" d="M205.6 221.8h11.8v-73.6h-11.8v73.6Z"/><path fill="#07C" d="M188.7 221.8h11.8v-45.2h-11.8v45.2Z"/><path fill="#85C241" d="M171.8 221.8h11.8V156h-11.8v65.8Z"/><path fill="#07C" d="M154.8 221.8h11.8v-19.6h-11.8v19.6Z"/><path fill="#85C241" d="M137.9 221.8h11.8v-76h-11.8v76Z"/><path fill="#07C" d="M121 221.8h11.7V132H121v89.8Z"/><path fill="#85C241" d="M104 221.8h11.8v-47.2H104v47.2Z"/><path fill="#07C" d="M87 221.8h12V199H87v22.7Z"/><path fill="#85C241" d="M70.1 221.8H82v-39.2H70.1v39.2Z"/><path fill="#07C" d="M53.2 221.8H65v-29.3H53.2v29.3Z"/><path fill="#85C241" d="M36.2 221.8H48v-23H36.2v23Z"/><path fill="#FBFBFB" d="M281.2 17.9h-80.7v70.3l15.1-15h65.6V18Z"/><path fill="#DBDBDB" d="M200.5 89.1h-.4a1 1 0 0 1-.6-.8V17.9a1 1 0 0 1 1-1h80.7a1 1 0 0 1 1 1v55.4a1 1 0 0 1-1 1H216l-14.8 14.6a1 1 0 0 1-.7.2Zm1-70.2v67L215 72.5a1 1 0 0 1 .6-.3h64.6V18.9h-78.7Z"/><path fill="#DBDBDB" d="M266.2 33.1h-48.8a1 1 0 0 1-1-1.4 1 1 0 0 1 .6-.5h49.2a1 1 0 0 1 0 2Zm0 11.9h-48.8a1 1 0 0 1-.7-1.6c.2-.2.5-.3.7-.3h48.8a1 1 0 0 1 1 1 1 1 0 0 1-1 1Z"/><path fill="#07C" d="M253.8 57h-36.4a1 1 0 0 1-1-.9 1 1 0 0 1 1-1h36.4a1 1 0 0 1 1 1 1 1 0 0 1-1 1Z"/><g clip-path="url(#a)"><path fill="#101828" d="M68.8 135c-1.9 0-3.4 1-4.3 1.7l.3-1.2H60l-1.7 7.8h5l.9-4.6c.4-.5 1-1.2 1.9-1.2 1.3 0 1 1 .9 1.9l-.7 3.7h4.9l.6-3.3c.7-3.2 0-4.7-3-4.7Zm-10.6 5s2-5-5-5-7.6 5-7.6 5-.9 3.6 5.9 3.6c6.8 0 6.5-2.7 6.5-2.7h-5s-.4 1-1.4 1c-1 0-1.7-.3-1.4-2h8Zm-5.6-3.2c1.7 0 1.2 1.6 1.2 1.6h-3s0-1.6 1.8-1.6Z"/><path fill="#85C241" d="M58.2 144h2.4l1 .1c.3 0 .5.2.7.4l.3.6v.9a2.4 2.4 0 0 1-1.8 2H59l-.3 1.7H57l1.1-5.7Zm1.8 2.8c.3 0 .5 0 .7-.2.2-.1.3-.3.3-.5l-.1-.6-.6-.2h-.8l-.3 1.5h.8Zm3.3-1.5H65l-.2.9.7-.8.9-.2-.3 1.6h-.2c-.4 0-.7.1-1 .4a2 2 0 0 0-.5 1.1l-.3 1.4h-1.5l.8-4.4Zm4.9 4.5c-.4 0-.7 0-1-.2l-.6-.5-.4-.7v-1l.4-.8a3 3 0 0 1 2.5-1.4c.3 0 .7 0 1 .2.2 0 .4.2.6.4l.4.8v.9c0 .3-.2.6-.4.9a3 3 0 0 1-2.5 1.4Zm.3-1.3.4-.1.3-.2a1.3 1.3 0 0 0 .4-.7v-.4a.8.8 0 0 0-.4-.5l-.4-.1a1 1 0 0 0-.7.3 1.2 1.2 0 0 0-.4.7v.4a.7.7 0 0 0 .4.5h.4ZM71 151h-.6l.2-1h.2l.4-.2.2-.4.8-4.1h1.5l-.8 4.2-.2.7-.4.5-.6.2-.7.1Zm1.4-7.3h1.7l-.3 1.2h-1.6l.2-1.2Zm3.6 6.1c-.4 0-.7 0-1-.2l-.7-.5c-.1-.2-.3-.4-.3-.7v-1a2.9 2.9 0 0 1 2.7-2.2c.3 0 .7 0 1 .2l.5.5.3.8a3 3 0 0 1-.1 1.2h-3l.2.5c.2.2.4.2.6.2h.5l.6-.4.7.7a2 2 0 0 1-1 .6c-.3.2-.6.3-1 .3Zm1-2.7v-.6l-.5-.2c-.3 0-.4 0-.6.2l-.4.6h1.6Zm3.8 2.7a2 2 0 0 1-1-.2 1.7 1.7 0 0 1-.9-1.2v-1l.4-.8a3 3 0 0 1 1.4-1.2c.3-.2.7-.2 1-.2.5 0 .8 0 1.1.2.3.2.5.5.6.8l-1.2.7a1 1 0 0 0-.3-.3.7.7 0 0 0-.4-.1H81a1 1 0 0 0-.3.3l-.2.3-.2.4v.4l.1.3.3.2h.8l.4-.4 1 .8-1 .7c-.3.2-.7.3-1.2.3Zm4.2 0c-.4 0-.8-.2-1-.4-.2-.2-.3-.6-.2-1.1l.4-1.8h-.5l.2-1.2h.5l.2-1.2h1.6l-.2 1.2h1l-.2 1.2h-1l-.4 1.5v.3l.4.1h.3l.3-.1-.2 1.2a2.6 2.6 0 0 1-1.2.3Z"/><path fill="#101828" d="M51.3 132.2h-8l-4.4 3.4-2.6-3.4h-6.4l5 6.5-9.9 7.6h8l4.8-3.8 2.9 3.8H47l-5.2-6.8 9.5-7.3Z"/><path fill="#101828" d="M33.1 146.1a8.8 8.8 0 0 1-3.2-3.6l-2.4 1.8 1.3 2H33l.2-.2Zm-2.2-12.6c.4-.5.7-1 1.2-1.3h-2.2l1 1.3Zm11.6 12.8H47l-1.9-2.5c-.7 1-1.6 1.9-2.6 2.5Z"/><path fill="#85C241" d="M38 147.6c-1.7 0-3.3-.5-4.6-1.3l-.3.2v.1h-4a11.7 11.7 0 0 0 17.6 0h-4.8c-1.2.6-2.6 1-4 1Z"/><path fill="#101828" d="m46.3 136 2.4-1.8-1-2h-4c1.2 1 2 2.4 2.6 3.9Z"/><path fill="#85C241" d="M29.1 138.8c0-1.9.6-3.6 1.6-5l-1-1.4-.4-.5h3.2a8.7 8.7 0 0 1 10.9 0h4a11.7 11.7 0 0 0-20 12.2l2.4-1.9c-.4-1-.7-2.2-.7-3.4Zm19.2-3 .9-.4-.3-1-2.5 2 .1.8c.5-.5 1.1-1 1.8-1.4Zm-2.3 6.4a4 4 0 0 1-.7 1.3l1.9 2.5c.6-.7 1-1.5 1.4-2.4-1-.2-2-.7-2.6-1.4Z"/></g><g clip-path="url(#b)"><path fill="#101828" d="M530 26.4c-1.3 0-2.3.6-2.9 1l.2-.8h-3.2l-1 5.2h3.2l.6-3c.3-.3.7-.8 1.3-.8.8 0 .6.7.6 1.3l-.5 2.5h3.2l.5-2.2c.4-2.2-.1-3.2-2-3.2Zm-7 3.3s1.2-3.3-3.4-3.3-5 3.3-5 3.3-.6 2.4 4 2.4c4.4 0 4.2-1.8 4.2-1.8h-3.3s-.2.7-1 .7c-.6 0-1-.3-.8-1.3h5.3Zm-3.8-2.1c1.2 0 .8 1 .8 1h-2s0-1 1.2-1Z"/><path fill="#85C241" d="M523 32.3h1.6l.6.1c.2 0 .3.2.4.3.2 0 .2.2.3.4v.6a1.6 1.6 0 0 1-1.2 1.2l-.7.1h-.5l-.2 1.1h-1l.7-3.8Zm1.1 1.9.5-.1.2-.4v-.4l-.5-.1h-.5l-.2 1h.5Zm2.2-1h1v.6c0-.2.2-.4.4-.5l.6-.2-.2 1.1a1 1 0 0 0-.8.3l-.3.7-.2 1h-1l.5-3Zm3.3 3-.7-.1-.4-.4-.2-.4v-.6c0-.3 0-.5.2-.6a2 2 0 0 1 1.7-1l.6.1.4.4.3.4v.6c0 .3-.2.5-.3.6a2 2 0 0 1-1.6 1Zm.1-.9h.3l.2-.2a.8.8 0 0 0 .3-.4v-.3a.5.5 0 0 0-.3-.4h-.2a.7.7 0 0 0-.5.2l-.2.2v.5a.5.5 0 0 0 .2.4h.2Zm1.7 1.7a1.8 1.8 0 0 1-.4 0l.2-.7h.3l.2-.4.5-2.7h1l-.5 2.8-.2.5-.2.3a1 1 0 0 1-.4.1l-.4.1Zm1-4.8h1l-.1.7h-1v-.7Zm2.3 4-.6-.1-.5-.3a1 1 0 0 1-.2-.5v-.6a1.9 1.9 0 0 1 .6-1.1l.6-.4a1.6 1.6 0 0 1 1.2 0l.4.4.2.5v.7l-.1.1h-2c0 .2 0 .3.2.4l.4.1h.3l.4-.3.4.5a2 2 0 0 1-.6.4l-.7.2Zm.7-1.8V34l-.4-.1-.3.1a1 1 0 0 0-.3.4h1Zm2.5 1.8-.6-.1a1.1 1.1 0 0 1-.6-.9v-.5c0-.3 0-.5.2-.6a2 2 0 0 1 1-.9h.6l.7.1.4.5-.8.5c0-.1 0-.2-.2-.2l-.3-.1h-.2l-.2.2a1 1 0 0 0-.2.4v.5l.2.2h.5l.3-.3.6.5-.6.5-.8.2Zm2.8 0-.7-.2c-.1-.2-.2-.4 0-.8l.1-1.2h-.3l.2-.8h.3l.1-.8h1v.8h.6l-.2.8h-.6l-.2 1v.2h.6l-.2.8a1.7 1.7 0 0 1-.7.2Z"/><path fill="#101828" d="M518.4 24.5h-5.2l-3 2.3-1.7-2.3h-4.2l3.2 4.3-6.5 5h5.2l3.3-2.4 1.9 2.5h4.2l-3.5-4.6 6.3-4.8Z"/><path fill="#101828" d="M506.4 33.8a5.9 5.9 0 0 1-2.1-2.5l-1.6 1.3.8 1.3h2.7l.2-.1Zm-1.5-8.5.8-.8h-1.4l.6.8Zm7.7 8.6h3l-1.3-1.7c-.5.7-1 1.2-1.7 1.7Z"/><path fill="#85C241" d="M509.5 34.7c-1 0-2-.3-3-.8l-.1.1h-2.7a7.7 7.7 0 0 0 11.6 0h-3.1a5 5 0 0 1-2.7.7Z"/><path fill="#101828" d="m515 27 1.7-1.2a4 4 0 0 0-.7-1.3h-2.6c.8.7 1.3 1.5 1.7 2.5Z"/><path fill="#85C241" d="M503.7 28.9c0-1.3.4-2.5 1-3.4l-.6-1-.3-.2h2.1a5.7 5.7 0 0 1 7.2 0h2.7a7.7 7.7 0 0 0-14 4.6c0 1.2.3 2.4.8 3.5l1.6-1.3c-.3-.7-.5-1.4-.5-2.2Zm12.7-2 .6-.3a8 8 0 0 0-.2-.6l-1.7 1.3.1.5a4 4 0 0 1 1.2-1Zm-1.5 4.3-.5.8 1.3 1.7 1-1.6c-.8-.2-1.4-.5-1.8-1Z"/></g><g clip-path="url(#c)"><path fill="#101828" d="M530 70.4c-1.3 0-2.3.6-2.9 1l.2-.8h-3.2l-1 5.2h3.2l.6-3c.3-.3.7-.8 1.3-.8.8 0 .6.7.6 1.3l-.5 2.5h3.2l.5-2.2c.4-2.2-.1-3.2-2-3.2Zm-7 3.3s1.2-3.3-3.4-3.3-5 3.3-5 3.3-.6 2.4 4 2.4c4.4 0 4.2-1.8 4.2-1.8h-3.3s-.2.7-1 .7c-.6 0-1-.3-.8-1.3h5.3Zm-3.8-2.1c1.2 0 .8 1 .8 1h-2s0-1 1.2-1Z"/><path fill="#85C241" d="M523 76.3h1.6l.6.1c.2 0 .3.2.4.3.2 0 .2.2.3.4v.6a1.6 1.6 0 0 1-1.2 1.2l-.7.1h-.5l-.2 1.1h-1l.7-3.8Zm1.1 1.9.5-.1.2-.4v-.4l-.5-.1h-.5l-.2 1h.5Zm2.2-1h1v.6c0-.2.2-.4.4-.5l.6-.2-.2 1.1a1 1 0 0 0-.8.3l-.3.7-.2 1h-1l.5-3Zm3.3 3-.7-.1-.4-.4-.2-.4v-.6c0-.3 0-.5.2-.6a2 2 0 0 1 1.7-1l.6.1.4.4.3.4v.6c0 .3-.2.5-.3.6a2 2 0 0 1-1.6 1Zm.1-.9h.3l.2-.2a.8.8 0 0 0 .3-.4v-.3a.5.5 0 0 0-.3-.4h-.2a.7.7 0 0 0-.5.2l-.2.2v.5a.5.5 0 0 0 .2.4h.2Zm1.7 1.7a1.8 1.8 0 0 1-.4 0l.2-.7h.3l.2-.4.5-2.7h1l-.5 2.8-.2.5-.2.3a1 1 0 0 1-.4.1l-.4.1Zm1-4.8h1l-.1.7h-1v-.7Zm2.3 4-.6-.1-.5-.3a1 1 0 0 1-.2-.5v-.6a1.9 1.9 0 0 1 .6-1.1l.6-.4a1.6 1.6 0 0 1 1.2 0l.4.4.2.5v.7l-.1.1h-2c0 .2 0 .3.2.4l.4.1h.3l.4-.3.4.5a2 2 0 0 1-.6.4l-.7.2Zm.7-1.8V78l-.4-.1-.3.1a1 1 0 0 0-.3.4h1Zm2.5 1.8-.6-.1a1.1 1.1 0 0 1-.6-.9v-.5c0-.3 0-.5.2-.6a2 2 0 0 1 1-.9h.6l.7.1.4.5-.8.5c0-.1 0-.2-.2-.2l-.3-.1h-.2l-.2.2a1 1 0 0 0-.2.4v.5l.2.2h.5l.3-.3.6.5-.6.5-.8.2Zm2.8 0-.7-.2c-.1-.2-.2-.4 0-.8l.1-1.2h-.3l.2-.8h.3l.1-.8h1v.8h.6l-.2.8h-.6l-.2 1v.2h.6l-.2.8a1.7 1.7 0 0 1-.7.2Z"/><path fill="#101828" d="M518.4 68.5h-5.2l-3 2.3-1.7-2.3h-4.2l3.2 4.3-6.5 5h5.2l3.3-2.4 1.9 2.5h4.2l-3.5-4.6 6.3-4.8Z"/><path fill="#101828" d="M506.4 77.8a5.9 5.9 0 0 1-2.1-2.5l-1.6 1.3.8 1.3h2.7l.2-.1Zm-1.5-8.5.8-.8h-1.4l.6.8Zm7.7 8.6h3l-1.3-1.7c-.5.7-1 1.2-1.7 1.7Z"/><path fill="#85C241" d="M509.5 78.7c-1 0-2-.3-3-.8l-.1.1h-2.7a7.7 7.7 0 0 0 11.6 0h-3.1a5 5 0 0 1-2.7.7Z"/><path fill="#101828" d="m515 71 1.7-1.2a4 4 0 0 0-.7-1.3h-2.6c.8.7 1.3 1.5 1.7 2.5Z"/><path fill="#85C241" d="M503.7 72.9c0-1.3.4-2.5 1-3.4l-.6-1-.3-.2h2.1a5.7 5.7 0 0 1 7.2 0h2.7a7.7 7.7 0 0 0-14 4.6c0 1.2.3 2.4.8 3.5l1.6-1.3c-.3-.7-.5-1.4-.5-2.2Zm12.7-2 .6-.3a8 8 0 0 0-.2-.6l-1.7 1.3.1.5a4 4 0 0 1 1.2-1Zm-1.5 4.3-.5.8 1.3 1.7 1-1.6c-.8-.2-1.4-.5-1.8-1Z"/></g><g clip-path="url(#d)"><path fill="#101828" d="M530 244.4c-1.3 0-2.3.6-2.9 1l.2-.8h-3.2l-1 5.2h3.2l.6-3c.3-.3.7-.8 1.3-.8.8 0 .6.7.6 1.3l-.5 2.5h3.2l.5-2.2c.4-2.2-.1-3.2-2-3.2Zm-7 3.3s1.2-3.3-3.4-3.3-5 3.3-5 3.3-.6 2.4 4 2.4c4.4 0 4.2-1.8 4.2-1.8h-3.3s-.2.7-1 .7c-.6 0-1-.3-.8-1.3h5.3Zm-3.8-2.1c1.2 0 .8 1 .8 1h-2s0-1 1.2-1Z"/><path fill="#85C241" d="M523 250.3h1.6l.6.1c.2 0 .3.2.4.3.2 0 .2.2.3.4v.6a1.6 1.6 0 0 1-1.2 1.2l-.7.1h-.5l-.2 1.1h-1l.7-3.8Zm1.1 1.9.5-.1.2-.4v-.4l-.5-.1h-.5l-.2 1h.5Zm2.2-1h1v.6c0-.2.2-.4.4-.5l.6-.2-.2 1.1a1 1 0 0 0-.8.3l-.3.7-.2 1h-1l.5-3Zm3.3 3-.7-.1-.4-.4-.2-.4v-.6c0-.3 0-.5.2-.6a2 2 0 0 1 1.7-1l.6.1.4.4.3.4v.6c0 .3-.2.5-.3.6a2 2 0 0 1-1.6 1Zm.1-.9h.3l.2-.2a.8.8 0 0 0 .3-.4v-.3a.5.5 0 0 0-.3-.4h-.2a.7.7 0 0 0-.5.2l-.2.2v.5a.5.5 0 0 0 .2.4h.2Zm1.7 1.7h-.4l.2-.7h.3l.2-.4.5-2.7h1l-.5 2.8-.2.5-.2.3a1 1 0 0 1-.4.1l-.4.1Zm1-4.8h1l-.1.7h-1v-.7Zm2.3 4-.6-.1-.5-.3a1 1 0 0 1-.2-.5v-.6a2 2 0 0 1 1.2-1.5 1.6 1.6 0 0 1 1.2 0l.4.4.2.5v.7l-.1.1h-2c0 .2 0 .3.2.4l.4.1h.3l.4-.3.4.5c-.1.2-.3.3-.6.4l-.7.2Zm.7-1.8v-.4l-.4-.1-.3.1a1 1 0 0 0-.3.4h1Zm2.5 1.8-.6-.1a1.1 1.1 0 0 1-.6-.9v-.5c0-.3 0-.5.2-.6a2 2 0 0 1 1-.9h.6l.7.1.4.5-.8.5c0-.1 0-.2-.2-.2l-.3-.1h-.2l-.2.2a.9.9 0 0 0-.2.4v.5l.2.2h.5l.3-.3.6.5-.6.5-.8.2Zm2.8 0-.7-.2c-.1-.2-.2-.4 0-.8l.1-1.2h-.3l.2-.8h.3l.1-.8h1v.8h.6l-.2.8h-.6l-.2 1v.2h.6l-.2.8a1.7 1.7 0 0 1-.7.2Z"/><path fill="#101828" d="M518.4 242.5h-5.2l-3 2.3-1.7-2.3h-4.2l3.2 4.3-6.5 5h5.2l3.3-2.4 1.9 2.5h4.2l-3.5-4.6 6.3-4.8Z"/><path fill="#101828" d="M506.4 251.8a5.9 5.9 0 0 1-2.1-2.5l-1.6 1.3.8 1.3h2.7l.2-.1Zm-1.5-8.5.8-.8h-1.4l.6.8Zm7.7 8.6h3l-1.3-1.7c-.5.7-1 1.2-1.7 1.7Z"/><path fill="#85C241" d="M509.5 252.7c-1 0-2-.3-3-.8l-.1.1h-2.7a7.7 7.7 0 0 0 11.6 0h-3.1a5 5 0 0 1-2.7.7Z"/><path fill="#101828" d="m515 245 1.7-1.2a4 4 0 0 0-.7-1.3h-2.6c.8.7 1.3 1.5 1.7 2.5Z"/><path fill="#85C241" d="M503.7 246.9c0-1.3.4-2.5 1-3.4l-.6-1-.3-.2h2.1a5.7 5.7 0 0 1 7.2 0h2.7a7.7 7.7 0 0 0-14 4.6c0 1.2.3 2.4.8 3.5l1.6-1.3c-.3-.7-.5-1.4-.5-2.2Zm12.7-2 .6-.3-.2-.6-1.7 1.3.1.5a4 4 0 0 1 1.2-1Zm-1.5 4.3-.5.8 1.3 1.7 1-1.6c-.8-.2-1.4-.5-1.8-1Z"/></g><g clip-path="url(#e)"><path fill="#101828" d="M530 201.4c-1.3 0-2.3.6-2.9 1l.2-.8h-3.2l-1 5.2h3.2l.6-3c.3-.3.7-.8 1.3-.8.8 0 .6.7.6 1.3l-.5 2.5h3.2l.5-2.2c.4-2.2-.1-3.2-2-3.2Zm-7 3.3s1.2-3.3-3.4-3.3-5 3.3-5 3.3-.6 2.4 4 2.4c4.4 0 4.2-1.8 4.2-1.8h-3.3s-.2.7-1 .7c-.6 0-1-.3-.8-1.3h5.3Zm-3.8-2.1c1.2 0 .8 1 .8 1h-2s0-1 1.2-1Z"/><path fill="#85C241" d="M523 207.3h1.6l.6.1c.2 0 .3.2.4.3.2 0 .2.2.3.4v.6a1.6 1.6 0 0 1-1.2 1.2l-.7.1h-.5l-.2 1.1h-1l.7-3.8Zm1.1 1.9.5-.1.2-.4v-.4l-.5-.1h-.5l-.2 1h.5Zm2.2-1h1v.6c0-.2.2-.4.4-.5l.6-.2-.2 1.1a1 1 0 0 0-.8.3l-.3.7-.2 1h-1l.5-3Zm3.3 3-.7-.1-.4-.4-.2-.4v-.6c0-.3 0-.5.2-.6a2 2 0 0 1 1.7-1l.6.1.4.4.3.4v.6c0 .3-.2.5-.3.6a2 2 0 0 1-1.6 1Zm.1-.9h.3l.2-.2a.8.8 0 0 0 .3-.4v-.3a.5.5 0 0 0-.3-.4h-.2a.7.7 0 0 0-.5.2l-.2.2v.5a.5.5 0 0 0 .2.4h.2Zm1.7 1.7h-.4l.2-.7h.3l.2-.4.5-2.7h1l-.5 2.8-.2.5-.2.3a1 1 0 0 1-.4.1l-.4.1Zm1-4.8h1l-.1.7h-1v-.7Zm2.3 4-.6-.1-.5-.3a1 1 0 0 1-.2-.5v-.6a2 2 0 0 1 1.2-1.5 1.6 1.6 0 0 1 1.2 0l.4.4.2.5v.7l-.1.1h-2c0 .2 0 .3.2.4l.4.1h.3l.4-.3.4.5c-.1.2-.3.3-.6.4l-.7.2Zm.7-1.8v-.4l-.4-.1-.3.1a1 1 0 0 0-.3.4h1Zm2.5 1.8-.6-.1a1.1 1.1 0 0 1-.6-.9v-.5c0-.3 0-.5.2-.6a2 2 0 0 1 1-.9h.6l.7.1.4.5-.8.5c0-.1 0-.2-.2-.2l-.3-.1h-.2l-.2.2a.9.9 0 0 0-.2.4v.5l.2.2h.5l.3-.3.6.5-.6.5-.8.2Zm2.8 0-.7-.2c-.1-.2-.2-.4 0-.8l.1-1.2h-.3l.2-.8h.3l.1-.8h1v.8h.6l-.2.8h-.6l-.2 1v.2h.6l-.2.8a1.7 1.7 0 0 1-.7.2Z"/><path fill="#101828" d="M518.4 199.5h-5.2l-3 2.3-1.7-2.3h-4.2l3.2 4.3-6.5 5h5.2l3.3-2.4 1.9 2.5h4.2l-3.5-4.6 6.3-4.8Z"/><path fill="#101828" d="M506.4 208.8a5.9 5.9 0 0 1-2.1-2.5l-1.6 1.3.8 1.3h2.7l.2-.1Zm-1.5-8.5.8-.8h-1.4l.6.8Zm7.7 8.6h3l-1.3-1.7c-.5.7-1 1.2-1.7 1.7Z"/><path fill="#85C241" d="M509.5 209.7c-1 0-2-.3-3-.8l-.1.1h-2.7a7.7 7.7 0 0 0 11.6 0h-3.1a5 5 0 0 1-2.7.7Z"/><path fill="#101828" d="m515 202 1.7-1.2a4 4 0 0 0-.7-1.3h-2.6c.8.7 1.3 1.5 1.7 2.5Z"/><path fill="#85C241" d="M503.7 203.9c0-1.3.4-2.5 1-3.4l-.6-1-.3-.2h2.1a5.7 5.7 0 0 1 7.2 0h2.7a7.7 7.7 0 0 0-14 4.6c0 1.2.3 2.4.8 3.5l1.6-1.3c-.3-.7-.5-1.4-.5-2.2Zm12.7-2 .6-.3-.2-.6-1.7 1.3.1.5a4 4 0 0 1 1.2-1Zm-1.5 4.3-.5.8 1.3 1.7 1-1.6c-.8-.2-1.4-.5-1.8-1Z"/></g><g clip-path="url(#f)"><path fill="#101828" d="M530 157.4c-1.3 0-2.3.6-2.9 1l.2-.8h-3.2l-1 5.2h3.2l.6-3c.3-.3.7-.8 1.3-.8.8 0 .6.7.6 1.3l-.5 2.5h3.2l.5-2.2c.4-2.2-.1-3.2-2-3.2Zm-7 3.3s1.2-3.3-3.4-3.3-5 3.3-5 3.3-.6 2.4 4 2.4c4.4 0 4.2-1.8 4.2-1.8h-3.3s-.2.7-1 .7c-.6 0-1-.3-.8-1.3h5.3Zm-3.8-2.1c1.2 0 .8 1 .8 1h-2s0-1 1.2-1Z"/><path fill="#85C241" d="M523 163.3h1.6l.6.1c.2 0 .3.2.4.3.2 0 .2.2.3.4v.6a1.6 1.6 0 0 1-1.2 1.2l-.7.1h-.5l-.2 1.1h-1l.7-3.8Zm1.1 1.9.5-.1.2-.4v-.4l-.5-.1h-.5l-.2 1h.5Zm2.2-1h1v.6c0-.2.2-.4.4-.5l.6-.2-.2 1.1a1 1 0 0 0-.8.3l-.3.7-.2 1h-1l.5-3Zm3.3 3-.7-.1-.4-.4-.2-.4v-.6c0-.3 0-.5.2-.6a2 2 0 0 1 1.7-1l.6.1.4.4.3.4v.6c0 .3-.2.5-.3.6a2 2 0 0 1-1.6 1Zm.1-.9h.3l.2-.2a.8.8 0 0 0 .3-.4v-.3a.5.5 0 0 0-.3-.4h-.2a.7.7 0 0 0-.5.2l-.2.2v.5a.5.5 0 0 0 .2.4h.2Zm1.7 1.7h-.4l.2-.7h.3l.2-.4.5-2.7h1l-.5 2.8-.2.5-.2.3a1 1 0 0 1-.4.1l-.4.1Zm1-4.8h1l-.1.7h-1v-.7Zm2.3 4-.6-.1-.5-.3a1 1 0 0 1-.2-.5v-.6a2 2 0 0 1 1.2-1.5 1.6 1.6 0 0 1 1.2 0l.4.4.2.5v.7l-.1.1h-2c0 .2 0 .3.2.4l.4.1h.3l.4-.3.4.5c-.1.2-.3.3-.6.4l-.7.2Zm.7-1.8v-.4l-.4-.1-.3.1a1 1 0 0 0-.3.4h1Zm2.5 1.8-.6-.1a1.1 1.1 0 0 1-.6-.9v-.5c0-.3 0-.5.2-.6a2 2 0 0 1 1-.9h.6l.7.1.4.5-.8.5c0-.1 0-.2-.2-.2l-.3-.1h-.2l-.2.2a.9.9 0 0 0-.2.4v.5l.2.2h.5l.3-.3.6.5-.6.5-.8.2Zm2.8 0-.7-.2c-.1-.2-.2-.4 0-.8l.1-1.2h-.3l.2-.8h.3l.1-.8h1v.8h.6l-.2.8h-.6l-.2 1v.2h.6l-.2.8a1.7 1.7 0 0 1-.7.2Z"/><path fill="#101828" d="M518.4 155.5h-5.2l-3 2.3-1.7-2.3h-4.2l3.2 4.3-6.5 5h5.2l3.3-2.4 1.9 2.5h4.2l-3.5-4.6 6.3-4.8Z"/><path fill="#101828" d="M506.4 164.8a5.9 5.9 0 0 1-2.1-2.5l-1.6 1.3.8 1.3h2.7l.2-.1Zm-1.5-8.5.8-.8h-1.4l.6.8Zm7.7 8.6h3l-1.3-1.7c-.5.7-1 1.2-1.7 1.7Z"/><path fill="#85C241" d="M509.5 165.7c-1 0-2-.3-3-.8l-.1.1h-2.7a7.7 7.7 0 0 0 11.6 0h-3.1a5 5 0 0 1-2.7.7Z"/><path fill="#101828" d="m515 158 1.7-1.2a4 4 0 0 0-.7-1.3h-2.6c.8.7 1.3 1.5 1.7 2.5Z"/><path fill="#85C241" d="M503.7 159.9c0-1.3.4-2.5 1-3.4l-.6-1-.3-.2h2.1a5.7 5.7 0 0 1 7.2 0h2.7a7.7 7.7 0 0 0-14 4.6c0 1.2.3 2.4.8 3.5l1.6-1.3c-.3-.7-.5-1.4-.5-2.2Zm12.7-2 .6-.3-.2-.6-1.7 1.3.1.5a4 4 0 0 1 1.2-1Zm-1.5 4.3-.5.8 1.3 1.7 1-1.6c-.8-.2-1.4-.5-1.8-1Z"/></g><g clip-path="url(#g)"><path fill="#101828" d="M530 114.4c-1.3 0-2.3.6-2.9 1l.2-.8h-3.2l-1 5.2h3.2l.6-3c.3-.3.7-.8 1.3-.8.8 0 .6.7.6 1.3l-.5 2.5h3.2l.5-2.2c.4-2.2-.1-3.2-2-3.2Zm-7 3.3s1.2-3.3-3.4-3.3-5 3.3-5 3.3-.6 2.4 4 2.4c4.4 0 4.2-1.8 4.2-1.8h-3.3s-.2.7-1 .7c-.6 0-1-.3-.8-1.3h5.3Zm-3.8-2.1c1.2 0 .8 1 .8 1h-2s0-1 1.2-1Z"/><path fill="#85C241" d="M523 120.3h1.6l.6.1c.2 0 .3.2.4.3.2 0 .2.2.3.4v.6a1.6 1.6 0 0 1-1.2 1.2l-.7.1h-.5l-.2 1.1h-1l.7-3.8Zm1.1 1.9.5-.1.2-.4v-.4l-.5-.1h-.5l-.2 1h.5Zm2.2-1h1v.6c0-.2.2-.4.4-.5l.6-.2-.2 1.1a1 1 0 0 0-.8.3l-.3.7-.2 1h-1l.5-3Zm3.3 3-.7-.1-.4-.4-.2-.4v-.6c0-.3 0-.5.2-.6a2 2 0 0 1 1.7-1l.6.1.4.4.3.4v.6c0 .3-.2.5-.3.6a2 2 0 0 1-1.6 1Zm.1-.9h.3l.2-.2a.8.8 0 0 0 .3-.4v-.3a.5.5 0 0 0-.3-.4h-.2a.7.7 0 0 0-.5.2l-.2.2v.5a.5.5 0 0 0 .2.4h.2Zm1.7 1.7h-.4l.2-.7h.3l.2-.4.5-2.7h1l-.5 2.8-.2.5-.2.3a1 1 0 0 1-.4.1l-.4.1Zm1-4.8h1l-.1.7h-1v-.7Zm2.3 4-.6-.1-.5-.3a1 1 0 0 1-.2-.5v-.6a2 2 0 0 1 1.2-1.5 1.6 1.6 0 0 1 1.2 0l.4.4.2.5v.7l-.1.1h-2c0 .2 0 .3.2.4l.4.1h.3l.4-.3.4.5c-.1.2-.3.3-.6.4l-.7.2Zm.7-1.8v-.4l-.4-.1-.3.1a1 1 0 0 0-.3.4h1Zm2.5 1.8-.6-.1a1.1 1.1 0 0 1-.6-.9v-.5c0-.3 0-.5.2-.6a2 2 0 0 1 1-.9h.6l.7.1.4.5-.8.5c0-.1 0-.2-.2-.2l-.3-.1h-.2l-.2.2a.9.9 0 0 0-.2.4v.5l.2.2h.5l.3-.3.6.5-.6.5-.8.2Zm2.8 0-.7-.2c-.1-.2-.2-.4 0-.8l.1-1.2h-.3l.2-.8h.3l.1-.8h1v.8h.6l-.2.8h-.6l-.2 1v.2h.6l-.2.8a1.7 1.7 0 0 1-.7.2Z"/><path fill="#101828" d="M518.4 112.5h-5.2l-3 2.3-1.7-2.3h-4.2l3.2 4.3-6.5 5h5.2l3.3-2.4 1.9 2.5h4.2l-3.5-4.6 6.3-4.8Z"/><path fill="#101828" d="M506.4 121.8a5.9 5.9 0 0 1-2.1-2.5l-1.6 1.3.8 1.3h2.7l.2-.1Zm-1.5-8.5.8-.8h-1.4l.6.8Zm7.7 8.6h3l-1.3-1.7c-.5.7-1 1.2-1.7 1.7Z"/><path fill="#85C241" d="M509.5 122.7c-1 0-2-.3-3-.8l-.1.1h-2.7a7.7 7.7 0 0 0 11.6 0h-3.1a5 5 0 0 1-2.7.7Z"/><path fill="#101828" d="m515 115 1.7-1.2a4 4 0 0 0-.7-1.3h-2.6c.8.7 1.3 1.5 1.7 2.5Z"/><path fill="#85C241" d="M503.7 116.9c0-1.3.4-2.5 1-3.4l-.6-1-.3-.2h2.1a5.7 5.7 0 0 1 7.2 0h2.7a7.7 7.7 0 0 0-14 4.6c0 1.2.3 2.4.8 3.5l1.6-1.3c-.3-.7-.5-1.4-.5-2.2Zm12.7-2 .6-.3-.2-.6-1.7 1.3.1.5a4 4 0 0 1 1.2-1Zm-1.5 4.3-.5.8 1.3 1.7 1-1.6c-.8-.2-1.4-.5-1.8-1Z"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h62v24H0z" transform="translate(25 127)"/></clipPath><clipPath id="b"><use xlink:href="#h" transform="translate(501 21)"/></clipPath><clipPath id="c"><use xlink:href="#h" transform="translate(501 65)"/></clipPath><clipPath id="d"><use xlink:href="#h" transform="translate(501 239)"/></clipPath><clipPath id="e"><use xlink:href="#h" transform="translate(501 196)"/></clipPath><clipPath id="f"><use xlink:href="#h" transform="translate(501 152)"/></clipPath><clipPath id="g"><use xlink:href="#h" transform="translate(501 109)"/></clipPath></defs></svg>
\ No newline at end of file
diff --git a/static/img/flatline/data-process.svg b/static/img/flatline/data-process.svg
new file mode 100644 (file)
index 0000000..1bb3215
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox=".2 0 839.7 500"><path fill="#DBDBDB" d="M273.6 232.2a1.2 1.2 0 0 1-1.1-.7l-.1-.5V93.7A45.7 45.7 0 0 1 318 47.9h34a1.2 1.2 0 0 1 1.1 1.2 1.2 1.2 0 0 1-1.1 1.2h-34a43.3 43.3 0 0 0-43.2 43.2v137.4a1.2 1.2 0 0 1-1.2 1.3Z"/><path fill="#DBDBDB" d="M273.6 232.4a1.2 1.2 0 0 1-1.1-.7l-.1-.4v-36.4a68.6 68.6 0 0 0-68.4-68.5h-44.4a1.2 1.2 0 0 1-1.2-1.1 1.2 1.2 0 0 1 1.2-1.2H204a70.9 70.9 0 0 1 70.8 70.8v36.4a1.2 1.2 0 0 1-1.2 1.1ZM707 333.8H578.7a1.2 1.2 0 0 1-.8-.4 1.2 1.2 0 0 1-.3-.8 1.1 1.1 0 0 1 .3-.8 1.1 1.1 0 0 1 .8-.4H707a1.2 1.2 0 0 1 1.2 1.2 1.2 1.2 0 0 1-1.1 1.2Zm-109.7-177H372.9a1.1 1.1 0 0 1-.8-.3 1.1 1.1 0 0 1-.3-.9v-90a1.1 1.1 0 0 1 1.1-1 1.2 1.2 0 0 1 1.2 1.1v89h223.2a1.2 1.2 0 0 1 1.2 1 1.2 1.2 0 0 1-1.2 1.1Zm223.2 329.3H1.5A1.2 1.2 0 0 1 .3 485a1.2 1.2 0 0 1 1.2-1.2h819a1.2 1.2 0 0 1 1.2 1.2 1.2 1.2 0 0 1-1.2 1.1ZM246 377.6H40a1.2 1.2 0 0 1-1.2-1.2 1.1 1.1 0 0 1 1.2-1.1h206a1.2 1.2 0 0 1 1 .7l.1.4a1.2 1.2 0 0 1-1.1 1.2Z"/><path fill="#242424" d="M141.8 302.4h-130V424h130V302.4Z"/><path fill="#242424" d="M141.8 425.4h-130a1.3 1.3 0 0 1-1.3-1.3V302.4a1.3 1.3 0 0 1 1.3-1.3h130a1.3 1.3 0 0 1 1.3 1.3v121.7a1.3 1.3 0 0 1-1.3 1.3Zm-128.7-2.6h127.4v-119H13.1v119Z"/><path fill="#fff" d="M141.8 400.3h-130c-5.6 0-10.3 4.7-10.3 10.4v22c0 5.7 4.7 10.3 10.4 10.3h130c5.6 0 10.3-4.6 10.3-10.4v-22c0-5.6-4.7-10.3-10.4-10.3Z"/><path fill="#242424" d="M141.8 444.3h-130A11.7 11.7 0 0 1 .3 432.6v-22A11.7 11.7 0 0 1 12 399h130a11.7 11.7 0 0 1 11.6 11.7v22a11.7 11.7 0 0 1-11.7 11.6Zm-130-42.7a9 9 0 0 0-9 9v22a9 9 0 0 0 9 9.1h130a9 9 0 0 0 9-9v-22a9 9 0 0 0-9-9h-130Z"/><path fill="#fff" d="M141.8 348.3h-130c-5.6 0-10.3 4.6-10.3 10.4v22c0 5.7 4.7 10.3 10.4 10.3h130c5.6 0 10.3-4.6 10.3-10.4v-22c0-5.7-4.7-10.3-10.4-10.3Z"/><path fill="#242424" d="M141.8 392.3h-130A11.7 11.7 0 0 1 .3 380.6v-22A11.7 11.7 0 0 1 12 347h130a11.7 11.7 0 0 1 11.6 11.7v22a11.7 11.7 0 0 1-11.7 11.6Zm-130-42.7a9 9 0 0 0-9 9v22a9 9 0 0 0 9 9h130a9 9 0 0 0 9-9v-22a9 9 0 0 0-9-9h-130Z"/><path fill="#fff" d="M141.8 296.3h-130c-5.6 0-10.3 4.6-10.3 10.4v22c0 5.6 4.7 10.3 10.4 10.3h130c5.6 0 10.3-4.7 10.3-10.4v-22c0-5.7-4.7-10.3-10.4-10.3Z"/><path fill="#242424" d="M141.8 340.3h-130A11.7 11.7 0 0 1 .3 328.7v-22A11.7 11.7 0 0 1 12 295h130a11.7 11.7 0 0 1 11.6 11.7v22a11.7 11.7 0 0 1-11.7 11.6ZM12 297.6a9 9 0 0 0-9 9v22a9 9 0 0 0 9 9.1h130a9 9 0 0 0 9-9v-22a9 9 0 0 0-9-9H12Z"/><path fill="#fff" d="M20.2 314a2.8 2.8 0 1 0 0-5.7 2.8 2.8 0 0 0 0 5.7Z"/><path fill="#DBDBDB" d="M20.2 315.3a4.1 4.1 0 1 1 0-8.2 4.1 4.1 0 0 1 0 8.2Zm0-5.7a1.6 1.6 0 1 0 .6 3 1.6 1.6 0 0 0 .5-2.5c-.3-.3-.7-.5-1-.5Z"/><path fill="#fff" d="M32.2 314a2.8 2.8 0 1 0 0-5.7 2.8 2.8 0 0 0 0 5.7Z"/><path fill="#DBDBDB" d="M32.2 315.3a4.1 4.1 0 1 1 0-8.2 4.1 4.1 0 0 1 0 8.2Zm0-5.7a1.6 1.6 0 1 0 .7 3 1.6 1.6 0 0 0 1-1.4 1.6 1.6 0 0 0-1.7-1.6Z"/><path fill="#fff" d="M44.3 314a2.8 2.8 0 1 0 0-5.7 2.8 2.8 0 0 0 0 5.7Z"/><path fill="#DBDBDB" d="M44.3 315.3a4.1 4.1 0 1 1 0-8.2 4.1 4.1 0 0 1 0 8.2Zm0-5.7a1.6 1.6 0 1 0 0 3.2 1.6 1.6 0 0 0 0-3.2Z"/><path fill="#fff" d="m325.7 82.1-7.8-67.5h102.5l-13.6 69.2-81.1-1.7Z"/><path fill="#242424" d="m406.8 85.1-81.1-1.6a1.3 1.3 0 0 1-1.3-1.2l-7.8-67.5a1.3 1.3 0 0 1 .5-1 1.2 1.2 0 0 1 1-.5h102.3a1.3 1.3 0 0 1 1.3 1v.6L408.1 84a1.3 1.3 0 0 1-1.3 1Zm-80-4.2 79 1.6 13-66.6h-99.4l7.5 65Z"/><path fill="#242424" d="M325.7 82.1V1.3h95.8v82.5l-95.8-1.7Z"/><path fill="#242424" d="m421.5 85.1-95.8-1.6a1.3 1.3 0 0 1-1.3-1.4V1.3a1.3 1.3 0 0 1 .4-1 1.3 1.3 0 0 1 1-.3h95.8a1.3 1.3 0 0 1 1.3 1.3v82.5a1.3 1.3 0 0 1-.4 1c-.3.2-.6.3-1 .3ZM327 81l93.2 1.6v-80H327V81Z"/><path fill="#fff" d="m325.7 82.1 12.5-61.6h53.3l4.2-10.8h41.7L421 83.8l-95.4-1.7Z"/><path fill="#242424" d="m421.2 85.1-95.4-1.6a1.3 1.3 0 0 1-1.3-1.6L337 20.2a1.3 1.3 0 0 1 1.3-1h52.4l3.8-10a1.3 1.3 0 0 1 1.3-.9h41.6a1.3 1.3 0 0 1 1 .5 1.3 1.3 0 0 1 .3 1.1l-16.2 74.2a1.3 1.3 0 0 1-1.3 1Zm-94-4.2 92.8 1.6 15.7-71.6h-39l-4 10a1.3 1.3 0 0 1-1.1.9h-52.3l-12 59Z"/><path fill="#85C241" d="M231.1 223.4H591a27 27 0 0 1 27 27V470H204.2V250.4a27 27 0 0 1 27-27Z"/><path fill="#fff" d="M592 245.5H230v224.6h362V245.5Z"/><path fill="#85C241" d="M161.2 470.1h499.7a29.9 29.9 0 0 1-30 29.9H191.2a29.9 29.9 0 0 1-30-29.9Z"/><path fill="#fff" d="m314.7 278.3-25 12.6 25 12.7 25-12.7-25-12.6Z"/><path fill="#DBDBDB" d="M314.7 304.7h-.5L289 292a1.2 1.2 0 0 1-.7-1 1.1 1.1 0 0 1 .7-1l25-12.8a1.2 1.2 0 0 1 1.1 0l25.1 12.7a1.1 1.1 0 0 1 .6 1 1.2 1.2 0 0 1-.6 1.1l-25 12.7h-.6ZM292.2 291l22.5 11.3 22.5-11.3-22.5-11.3-22.5 11.3Z"/><path fill="#fff" d="M289.6 291v133.8l25.1 12.6V303.6l-25-12.7Z"/><path fill="#DBDBDB" d="M314.7 438.6c-.2 0-.4 0-.5-.2L289 425.7a1.2 1.2 0 0 1-.7-1V290.9a1.2 1.2 0 0 1 .6-1 1.1 1.1 0 0 1 1.1 0l25.1 12.6a1.1 1.1 0 0 1 .7 1v134a1.2 1.2 0 0 1-.6 1h-.6Zm-24-14.6 22.8 11.5V304.3l-22.7-11.5V424Z"/><path fill="#fff" d="m314.7 437.4 25-12.6V290.9l-25 12.7v133.8Z"/><path fill="#DBDBDB" d="M314.7 438.6c-.2 0-.4 0-.6-.2a1.2 1.2 0 0 1-.6-1V303.6a1.1 1.1 0 0 1 .7-1l25-12.8a1.1 1.1 0 0 1 1.2 0 1.2 1.2 0 0 1 .5 1v133.9a1.2 1.2 0 0 1-.6 1l-25 12.7-.6.2Zm1.2-134.3v131.2l22.7-11.5V292.8l-22.7 11.5Z"/><path fill="#fff" d="M403.2 328.4 378 341.1l25 12.6 25.1-12.6-25-12.7Z"/><path fill="#DBDBDB" d="M403.2 354.9h-.6l-25-12.7a1.2 1.2 0 0 1 0-2l25-12.8a1 1 0 0 1 1 0l25.2 12.7a1.2 1.2 0 0 1 .6 1 1.2 1.2 0 0 1-.6 1L403.7 355a1 1 0 0 1-.5 0ZM380.7 341l22.5 11.3 22.5-11.3-22.5-11.4-22.5 11.4Z"/><path fill="#fff" d="M378 341v83.8l25.2 12.6v-83.7L378 341.1Z"/><path fill="#DBDBDB" d="M403.2 438.6c-.2 0-.4 0-.6-.2l-25-12.7a1.2 1.2 0 0 1-.7-1v-83.8a1.1 1.1 0 0 1 1.2-1.2l.5.2 25 12.7a1.2 1.2 0 0 1 .8 1v83.7a1.2 1.2 0 0 1-.6 1l-.6.3Zm-24-14.6 22.8 11.5v-81L379.3 343v81Z"/><path fill="#fff" d="m403.2 437.4 25-12.6V341l-25 12.6v83.7Z"/><path fill="#DBDBDB" d="M403.2 438.6c-.3 0-.5 0-.7-.2a1.2 1.2 0 0 1-.5-1v-83.7a1.2 1.2 0 0 1 .6-1l25.1-12.7a1.1 1.1 0 0 1 1.7 1v83.8a1.2 1.2 0 0 1-.6 1l-25.1 12.7h-.5Zm1.2-84.1v81L427 424v-81l-22.7 11.5Z"/><path fill="#fff" d="m491.6 357-25 12.6 25 12.7 25.1-12.7-25-12.6Z"/><path fill="#DBDBDB" d="m491.6 383.5-.5-.1-25-12.7a1.2 1.2 0 0 1 0-2.2l25-12.6a1.3 1.3 0 0 1 1 0l25.2 12.6a1.2 1.2 0 0 1 .4 1.7c0 .2-.2.4-.4.5l-25.1 12.7h-.6Zm-22.4-13.8 22.4 11.3 22.5-11.3-22.5-11.4-22.4 11.4Z"/><path fill="#fff" d="M466.6 369.6v55.2l25 12.6v-55l-25-12.8Z"/><path fill="#DBDBDB" d="M491.6 438.6c-.1 0-.3 0-.5-.2l-25-12.7a1.2 1.2 0 0 1-.7-1v-55a1.2 1.2 0 0 1 1.1-1.2l.6.1 25 12.7a1 1 0 0 1 .7 1v55.1a1.1 1.1 0 0 1-.6 1 1 1 0 0 1-.6.2ZM467.7 424l22.8 11.5V383l-22.8-11.5V424Z"/><path fill="#fff" d="m491.6 437.4 25.1-12.6v-55.2l-25 12.7v55.1Z"/><path fill="#DBDBDB" d="M491.6 438.6c-.2 0-.4 0-.6-.2a1.2 1.2 0 0 1-.5-1v-55a1.1 1.1 0 0 1 .6-1.1l25.1-12.7a1.2 1.2 0 0 1 1.1 0 1.2 1.2 0 0 1 .6 1v55a1.2 1.2 0 0 1-.6 1.1l-25.1 12.7-.6.2Zm1.2-55.6v52.5l22.9-11.5v-52.5L492.8 383Z"/><path fill="#85C241" d="M551.5 279.4h-85a1.2 1.2 0 0 1-1.1-1.1 1.1 1.1 0 0 1 1.2-1.2h84.9a1.2 1.2 0 0 1 1.2 1.2 1.2 1.2 0 0 1-1.2 1.1Zm0 17.3h-85a1.2 1.2 0 0 1-.8-2l.9-.3h84.9a1.2 1.2 0 0 1 1 .7 1.2 1.2 0 0 1-.2 1.3 1.2 1.2 0 0 1-.8.3Zm0 17.3h-85a1.2 1.2 0 0 1-.8-.3 1.1 1.1 0 0 1-.3-.8 1.2 1.2 0 0 1 1.2-1.2h84.9a1.2 1.2 0 0 1 1.2 1.2 1.2 1.2 0 0 1-1.2 1.1ZM530 331.3h-63.4a1.2 1.2 0 0 1-1.2-1.1 1.1 1.1 0 0 1 1.2-1.2h63.5a1.2 1.2 0 0 1 1.2 1.2 1.2 1.2 0 0 1-1.2 1.1Z"/><path fill="#242424" d="M652.3 471.4H169.8a1.3 1.3 0 0 1 0-2.5h482.5a1.3 1.3 0 0 1 0 2.5Z"/><path fill="#DBDBDB" d="M675 155.4h-46.8a1.2 1.2 0 0 1 0-2.4H675a21.1 21.1 0 0 0 21.2-21v-25.8a1.2 1.2 0 0 1 1.1-1.2 1.2 1.2 0 0 1 1.2 1.2v25.7a23.5 23.5 0 0 1-23.5 23.5Z"/><path fill="#DBDBDB" d="M758 271a1.2 1.2 0 0 1-1.3-1.2v-75.3a39.2 39.2 0 0 0-39.1-39.1h-75a1.2 1.2 0 0 1 0-2.4h75a41.5 41.5 0 0 1 41.5 41.5v75.3a1.2 1.2 0 0 1-1.2 1.1Z"/><path fill="#fff" d="M751.2 114.4h-72.6V14.1h88.9v80.7l-16.3 19.6Z"/><path fill="#242424" d="M751.3 115.7h-72.6a1.3 1.3 0 0 1-1.3-1.3V14a1.3 1.3 0 0 1 1.3-1.2h88.9a1.3 1.3 0 0 1 1.3 1.2v80.7c0 .3-.1.6-.3.8l-16.4 19.7c-.2.3-.5.4-.9.4Zm-71.3-2.5h70.7l15.6-18.8V15.6H680v97.6Z"/><path fill="#242424" d="M751.2 114.4V93.7h16.3"/><path fill="#242424" d="M751.3 115.7a1.3 1.3 0 0 1-1.3-1.3V93.7a1.3 1.3 0 0 1 1.3-1.2h16.3a1.3 1.3 0 0 1 1.2 2.3 1.3 1.3 0 0 1-1.2.2h-15v19.4a1.3 1.3 0 0 1-1.3 1.3Z"/><path fill="#DBDBDB" d="M754 35.6h-62a1.2 1.2 0 1 1 0-2.4h62a1.2 1.2 0 1 1 0 2.4Zm0 15.1h-62a1.2 1.2 0 1 1 0-2.3h62a1.2 1.2 0 1 1 0 2.3Zm0 15.1h-62a1.1 1.1 0 0 1-1.1-1.2 1.2 1.2 0 0 1 1.1-1.1h62a1.2 1.2 0 0 1 1.2 1.1 1.2 1.2 0 0 1-1.2 1.2Zm0 15.2h-62a1.1 1.1 0 0 1-1.1-1.3 1.2 1.2 0 0 1 1.1-1.1h62a1.2 1.2 0 0 1 1.2 1.1A1.2 1.2 0 0 1 754 81Z"/><path fill="#fff" d="m628.2 159.4-.8 3.9a26.6 26.6 0 0 1-25.4 20h-94.8a28.7 28.7 0 0 1-10.7-55.3 2 2 0 0 0 1.5-1.9 20.3 20.3 0 0 1 31-15.2l1.1.7a39.6 39.6 0 0 1 25.2-21.1 39.3 39.3 0 0 1 49.4 40.1l3.5.7a26 26 0 0 1 19.8 21.9l.2.8v5.4Z"/><path fill="#242424" d="M552.3 184.7h-45.2a30.3 30.3 0 0 1-29.3-24.2 29.9 29.9 0 0 1 18.2-33.6c.6-.3.6-.4.7-.9a22.3 22.3 0 0 1 12.4-17.5 20.8 20.8 0 0 1 20.5 1.3A40.9 40.9 0 0 1 555 89.3a40.6 40.6 0 0 1 51.1 40.3c.9 0 1.7.3 2.5.5a27.3 27.3 0 0 1 20.7 23.2v6.4l-.2 1.2a27.8 27.8 0 0 1-27.4 23.7h-49.3ZM518.2 109c-2.7 0-5.5.6-8 1.8a19.6 19.6 0 0 0-11 15.5 3.3 3.3 0 0 1-2.2 3 27.2 27.2 0 0 0-7.1 46.4c4.8 4 11 6.2 17.2 6.3H602a25.2 25.2 0 0 0 24.2-19l.6-2.6.2-1v-5.1a4 4 0 0 1-.2-1 24.7 24.7 0 0 0-21.2-21.2l-1.1-.2a1.3 1.3 0 0 1-1-1.4 38 38 0 0 0-47.8-38.7 38 38 0 0 0-24.3 20.5 1.4 1.4 0 0 1-1 .5l-1-.1-1-.8a19 19 0 0 0-10.1-3Zm309.4 149.1H688.2v130.4h139.4V258.1Z"/><path fill="#242424" d="M827.5 389.8H688.2a1.3 1.3 0 0 1-1.3-1.3V258.1a1.3 1.3 0 0 1 1.3-1.3h139.3a1.3 1.3 0 0 1 1 .4 1.3 1.3 0 0 1 .3.9v130.4a1.3 1.3 0 0 1-1.3 1.3Zm-138-2.5h136.7V259.4H689.5v127.9Z"/><path fill="#fff" d="M827.6 363H688.3c-6.1 0-11.1 5-11.1 11.2v23.5a11 11 0 0 0 11 11.1h139.4c6.1 0 11.1-5 11.1-11v-23.6a11 11 0 0 0-11.1-11.1Z"/><path fill="#242424" d="M827.5 410.1H688.3a12.4 12.4 0 0 1-12.4-12.4v-23.5a12.4 12.4 0 0 1 12.4-12.5h139.2a12.4 12.4 0 0 1 12.4 12.5v23.5a12.4 12.4 0 0 1-12.4 12.4Zm-139.3-45.7a9.8 9.8 0 0 0-9.8 9.8v23.6a9.8 9.8 0 0 0 9.8 9.8h139.3a9.8 9.8 0 0 0 9.8-9.8v-23.6a9.8 9.8 0 0 0-9.8-9.8H688.2Z"/><path fill="#fff" d="M827.6 307.3H688.3c-6.1 0-11.1 5-11.1 11V342c0 6 5 11 11 11h139.4c6.1 0 11.1-5 11.1-11v-23.6c0-6.1-5-11.1-11.1-11.1Z"/><path fill="#242424" d="M827.5 354.4H688.3a12.4 12.4 0 0 1-12.4-12.4v-23.5a12.4 12.4 0 0 1 12.4-12.4h139.2a12.4 12.4 0 0 1 12.4 12.4v23.6a12.4 12.4 0 0 1-12.4 12.3Zm-139.3-45.7a9.8 9.8 0 0 0-9.8 9.8V342a9.8 9.8 0 0 0 9.8 9.8h139.3a9.8 9.8 0 0 0 9.8-9.8v-23.5a9.8 9.8 0 0 0-9.8-9.8H688.2Z"/><path fill="#fff" d="M827.6 251.5H688.3c-6.1 0-11.1 5-11.1 11.1v23.6c0 6 5 11 11 11h139.4c6.1 0 11.1-5 11.1-11v-23.6c0-6.1-5-11.1-11.1-11.1Z"/><path fill="#242424" d="M827.5 298.6H688.3a12.4 12.4 0 0 1-12.4-12.4v-23.6a12.4 12.4 0 0 1 12.4-12.4h139.2a12.4 12.4 0 0 1 12.4 12.4v23.6a12.4 12.4 0 0 1-12.4 12.4Zm-139.3-45.7a9.8 9.8 0 0 0-9.8 9.8v23.5a9.8 9.8 0 0 0 9.8 9.8h139.3a9.8 9.8 0 0 0 9.8-9.8v-23.6a9.8 9.8 0 0 0-9.8-9.8H688.2Z"/><path fill="#fff" d="M697.2 270.5a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z"/><path fill="#DBDBDB" d="M697.2 271.8a4.3 4.3 0 1 1 0-8.6 4.3 4.3 0 0 1 0 8.6Zm0-6.1a1.8 1.8 0 1 0 0 3.6 1.8 1.8 0 0 0 0-3.6Z"/><path fill="#fff" d="M710.1 270.5a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z"/><path fill="#DBDBDB" d="M710.1 271.8a4.3 4.3 0 1 1 0-8.6 4.3 4.3 0 0 1 0 8.6Zm0-6.1a1.8 1.8 0 1 0 0 3.6 1.8 1.8 0 0 0 0-3.6Z"/><path fill="#fff" d="M723 270.5a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z"/><path fill="#DBDBDB" d="M723 271.8a4.3 4.3 0 1 1 0-8.7 4.3 4.3 0 0 1 0 8.7Zm0-6.1a1.8 1.8 0 1 0 0 3.5 1.8 1.8 0 0 0 0-3.5Z"/><path fill="#242424" d="M40 98.5a571.8 571.8 0 0 1 4.6-13 4.2 4.2 0 0 1 4.6-2.7c2.3.2 4.6.7 6.9 1 1.2.3 2.5.5 3.7.6 1 0 1.8-.3 2.5-.9 2.6-2.5 5.2-5 7.7-7.8a4 4 0 0 0 .8-3.5L69 63.8c-.2-1-.3-2.2-.3-3.3a3 3 0 0 1 1.1-2.1c4.3-2.9 9-5 13.8-6.5a3.5 3.5 0 0 1 4 1.4l5.3 7.2a5.6 5.6 0 0 0 5.4 2.8l9.2-.4a3.5 3.5 0 0 0 2.8-1.7l3.2-4.9 2.8-4.2a3.5 3.5 0 0 1 4.2-1.4c4.3 1.4 8.5 3 12.7 4.5a3.7 3.7 0 0 1 2.3 4.2c-.2 2.3-.8 4.6-1.1 7-.2 1-.4 2.1-.4 3.3a4.6 4.6 0 0 0 1.4 3.8L142 80a5 5 0 0 0 5 1.4l9.2-2a4 4 0 0 1 5 2.5 1361.4 1361.4 0 0 1 5.7 12.6 4.3 4.3 0 0 1-2.2 4.4l-4.8 3.5-3.3 2.5a4 4 0 0 0-1.5 3.2c0 3.2 0 6.3.3 9.5a5 5 0 0 0 2.6 4.2l5 3.1c1.1.6 2.2 1.4 3.2 2.1a3.8 3.8 0 0 1 1.4 4.6l-4.3 11.4-1 1.6a3.4 3.4 0 0 1-3.5 1.7l-8.3-1.4h-.6a6 6 0 0 0-6.3 2.2c-1.5 1.9-3.3 3.5-5 5.3a6 6 0 0 0-1.6 6 147.1 147.1 0 0 1 2.2 9.6 4 4 0 0 1-2.9 3.7c-3.7 1.8-7.6 3.5-11.3 5a3.8 3.8 0 0 1-5-1.2c-1.6-1.9-3-3.8-4.3-5.8-3-4.1-3.7-4.5-8.8-4.2l-6 .3a5.5 5.5 0 0 0-4.6 2.7l-3.6 6-2.3 2.9a2.8 2.8 0 0 1-3.2.8l-12-4.5-1.5-1a3.4 3.4 0 0 1-1.7-3.5l1.3-8.1.2-2.6a4.4 4.4 0 0 0-1.3-3.6l-6.5-6.1a4.8 4.8 0 0 0-4.8-1.1l-8 1.8h-.3c-3.5.6-4.7.2-6.2-3a253.5 253.5 0 0 1-5.1-12.1 3.6 3.6 0 0 1 1.9-3.7l6.5-4.7a6.5 6.5 0 0 0 3.2-6.4l-.4-8.5a3.7 3.7 0 0 0-1.6-3l-7.2-4.6c-1.7-.8-3-2.2-3.7-3.9v-1Zm90.9 16a27 27 0 0 0-27.3-27 27.5 27.5 0 0 0-26.8 27 27.1 27.1 0 0 0 46.2 19.2 26.8 26.8 0 0 0 7.9-19.3Z"/><path fill="#242424" d="m88.3 179.6-1.5-.3-3.2-1.2-8.8-3.3a5 5 0 0 1-1.6-.9 4.8 4.8 0 0 1-2.5-5l.6-3.7.7-4.5.2-2.4a3 3 0 0 0-1-2.5l-5.9-5.6-.5-.5a3.4 3.4 0 0 0-3.6-.8l-5.6 1.3-2.7.7c-4.1.8-5.8 0-7.6-3.8a274 274 0 0 1-4.7-11 4.9 4.9 0 0 1 1.9-6.5c2.5-2 4.6-3.4 6.6-4.8a5 5 0 0 0 2.5-5l-.3-5.4-.1-3.2a2.2 2.2 0 0 0-1-2l-3-1.9-4.2-2.5a9 9 0 0 1-4.3-4.6v-1.9l.9-2.6 2-6 1.8-4.4a5.6 5.6 0 0 1 5.9-3.6l4.6.7 2.3.4 1 .2c.8.1 1.6.3 2.5.3.6 0 1.2-.2 1.7-.5 2.8-2.5 5.4-5.4 7.6-7.8a2.5 2.5 0 0 0 .5-2.5l-.9-3.8-1-4.6c-.2-1.2-.4-2.5-.3-3.7a4.3 4.3 0 0 1 1.7-3 52 52 0 0 1 14.4-6.7 4.7 4.7 0 0 1 5.4 1.9l1.9 2.5L94 60a4.4 4.4 0 0 0 4.3 2.2l6-.3 3.2-.2a2.1 2.1 0 0 0 1.7-1l2-3 1.7-2.5c.7-1.2 1.5-2.5 2.3-3.5a4.8 4.8 0 0 1 5.8-2l12.7 4.6a5 5 0 0 1 3 5.3 68.5 68.5 0 0 1-1.2 7l-.4 3.3a3.3 3.3 0 0 0 1 2.8l1.6 1.5 5 5a3.7 3.7 0 0 0 3.8 1l4.4-1 4.7-1a5.3 5.3 0 0 1 6.5 3l5.1 11a5.6 5.6 0 0 1-2 7.7l-2.8 2-2 1.5-3.3 2.5a2.6 2.6 0 0 0-1 2.1v2c0 2.6 0 5.1.3 7.5a3.6 3.6 0 0 0 1.9 3.2l2.2 1.3 3 1.8c1 .6 2.2 1.3 3.2 2.1a5 5 0 0 1 1.9 6l-4.3 11.5a8 8 0 0 1-1 1.8 4.7 4.7 0 0 1-5 2.3l-8.3-1.3h-.7a4.6 4.6 0 0 0-5.1 1.8l-3.5 3.7-1.5 1.5a4.7 4.7 0 0 0-1.3 4.8 177.7 177.7 0 0 1 2.3 10.2 5.3 5.3 0 0 1-3.7 4.7c-3.4 1.6-7 3.3-11.3 5a5 5 0 0 1-6.3-1.5l-3.5-4.7-.8-1.1c-2.7-3.8-3-4-7.6-3.7l-3.3.2-2.6.1a4.2 4.2 0 0 0-3.6 2.1l-1.2 2-2.5 4c-.8 1.1-1.6 2.1-2.6 3a4 4 0 0 1-3 1.4ZM62.4 146a6 6 0 0 1 4.2 1.7l.6.5 6 5.5a5.6 5.6 0 0 1 1.7 4.8 241.9 241.9 0 0 1-1 7l-.6 3.7a2 2 0 0 0 1 2.3l.3.2 1 .6 8.8 3.2 3.3 1.2a1.5 1.5 0 0 0 1.7-.4l2.2-2.6L94 170l1.2-2a6.7 6.7 0 0 1 5.7-3.4l2.5-.2 3.4-.1c5.5-.3 6.7.3 10 4.8l.7 1a102.1 102.1 0 0 0 4 5.4 2.5 2.5 0 0 0 2.9.2l11.2-5c2-1 2.4-1.7 2-4l-2-8a7.3 7.3 0 0 1 1.9-7.2l1.5-1.5 3.4-3.6a7.3 7.3 0 0 1 7.6-2.6h.6l8.2 1.4a2 2 0 0 0 2.3-1.1l.8-1.4 4.2-11.4a2.5 2.5 0 0 0-1-3c-1-.8-2-1.5-3-2l-3-1.8-2-1.4a6.4 6.4 0 0 1-3.2-5.3l-.2-7.6v-2a5.2 5.2 0 0 1 1.8-4.2 70 70 0 0 1 8.3-6.2 3 3 0 0 0 1.1-4.5 200 200 0 0 0-5.6-11.8 2.8 2.8 0 0 0-3-.8l-4.7 1-4.4 1A6.3 6.3 0 0 1 141 81c-1.6-1.7-3.3-3.2-5-4.8l-1.6-1.4a5.9 5.9 0 0 1-1.8-5c0-1.2.2-2.4.4-3.5 0-.8.3-1.6.4-2.5.4-1.6.6-3 .8-4.5a2.5 2.5 0 0 0-1.5-2.8c-3.6-1.4-7.6-2.8-12.7-4.5a2.2 2.2 0 0 0-2.7 1l-2.4 3.4-1.7 2.5-1.9 3a4.7 4.7 0 0 1-3.8 2.2l-3.3.2c-2 0-3.9.1-5.8.3a7 7 0 0 1-6.7-3.4l-3.4-4.6-1.9-2.6a2.2 2.2 0 0 0-2.4-1 48.8 48.8 0 0 0-13.4 6.5 2 2 0 0 0-.5 1.1c0 1 0 2 .3 3l1 4.5.8 3.8a5 5 0 0 1-1 4.8l-7.8 7.9c-1 .8-2.2 1.2-3.5 1.2l-3-.3-1-.2-2.3-.4a35 35 0 0 0-4.5-.7 2.9 2.9 0 0 0-3.1 2 32 32 0 0 0-1.7 4.3l-2.1 6-.8 2.3v.6a7 7 0 0 0 3.1 3l4.2 2.6 3 1.9a4.8 4.8 0 0 1 2.3 4l.1 3.3c0 1.8.2 3.5.3 5.3a7.8 7.8 0 0 1-3.8 7.6 99 99 0 0 0-6.5 4.6c-1.5 1.1-1.7 1.8-1 3.5 1.2 3 2.8 7 4.6 10.8 1.3 2.6 1.8 2.9 4.8 2.3l.5 1.3-.3-1.3 2.6-.6 5.4-1.4 1.8-.2Zm41.3-3.3A28.3 28.3 0 1 1 104 86a28.3 28.3 0 0 1-.3 56.7Zm-.3-54.2c-6.7.2-13.1 3-17.8 7.7a25.4 25.4 0 0 0 0 36.4A25.7 25.7 0 0 0 114 138a25.6 25.6 0 0 0 13.6-33.5 25.7 25.7 0 0 0-24-16h-.2Z"/></svg>
\ No newline at end of file
diff --git a/static/img/flatline/data-process2.svg b/static/img/flatline/data-process2.svg
new file mode 100644 (file)
index 0000000..4a4fc80
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 1047.7 500"><path fill="#fff" d="M243.1 82H1.3v97.4h241.8V81.9Z"/><path fill="#B6B6B6" d="M243.1 180.8H1.4a1.5 1.5 0 0 1-1.4-1.4V81.9a1.5 1.5 0 0 1 1.4-1.4h241.7a1.5 1.5 0 0 1 1.5 1.4v97.5a1.5 1.5 0 0 1-1.5 1.4ZM2.8 178h239V83.3H2.7V178Z"/><path fill="#fff" d="M1.4 82v-9h82l11-8.2h148.7v17H1.4Z"/><path fill="#B6B6B6" d="M243.1 83.3H1.4A1.4 1.4 0 0 1 0 82v-8.8a1.4 1.4 0 0 1 1.4-1.4H83l10.7-7.9c.2-.2.5-.3.8-.3h148.7a1.5 1.5 0 0 1 1.5 1.5v17a1.4 1.4 0 0 1-1.5 1.3ZM2.8 80.5h239V66.4h-147l-10.7 7.8c-.2.2-.5.3-.8.3H2.8v6Zm211.5 14.4H30.1a1.4 1.4 0 0 1-1.4-1.4 1.5 1.5 0 0 1 1.4-1.4h184.2a1.5 1.5 0 0 1 1.5 1.4 1.4 1.4 0 0 1-1.5 1.4Zm.8 16.1H29.2a1.5 1.5 0 0 1-1.4-1.5 1.4 1.4 0 0 1 1.4-1.6H215a1.4 1.4 0 0 1 1.4 1.4 1.4 1.4 0 0 1-.3 1.1 1.4 1.4 0 0 1-1 .6Z"/><path fill="#07C" d="M135.8 126.4h-106a1.4 1.4 0 0 1-1.4-1.4 1.4 1.4 0 0 1 1.4-1.4h106a1.4 1.4 0 0 1 1 2.4c-.2.3-.6.4-1 .4Z"/><path fill="#B6B6B6" d="M341 500c-11.7-.3-23.3-2.1-34.5-5.4-43.3-11.4-69.6-29.4-80.7-54.9a1.4 1.4 0 0 1 .2-1.6 1.4 1.4 0 0 1 1.7-.4 1.4 1.4 0 0 1 .7.9c10.7 24.7 36.5 42.1 78.8 53.3 19.6 5.1 44.4 9.5 63.3-2.5 4.8-3.3 9.3-7 13.4-11.3 3.8-3.9 8-7.5 12.3-10.8a64.5 64.5 0 0 1 35.6-10.1c13.2-12.2 48.6-14.4 55.9-14.8 13.9-.2 27.6-2.9 40.5-8a56 56 0 0 0 29.7-27.8 1.4 1.4 0 0 1 1.5-.2 1.4 1.4 0 0 1 .8 1.9 58.7 58.7 0 0 1-31 28.6 114.6 114.6 0 0 1-41.4 8.4c-6.7.3-37.4 2.2-51.5 11.9 11.8.3 23.4 1.7 35 4a11 11 0 0 1 7.5 3.5 6.2 6.2 0 0 1 1 5.8c-1.4 4.1-7 7.7-11.7 9-13 4-27.5 6.6-37-2.2a13 13 0 0 1-4.3-7.6c-.5-3.4.4-6.9 2.4-9.7a59.8 59.8 0 0 0-43.3 20.2 56.8 56.8 0 0 1-45 19.8Zm92-40.2-.8.8a10.6 10.6 0 0 0-2.6 8.6c.4 2.3 1.6 4.3 3.4 5.9 8.4 7.8 22 5.2 34.2 1.6 4-1.1 8.7-4.2 9.7-7.2a3 3 0 0 0-.5-3.1 8.7 8.7 0 0 0-5.7-2.5c-12.4-2.5-25-3.9-37.7-4v-.1ZM293.5 405c-162.5 0-286.2-.6-288.8-2.7a1.4 1.4 0 0 1-.5-1.5c0-.2.1-.3.3-.5a1.4 1.4 0 0 1 1.7-.4c14.7 4.1 686.4 1.7 1040 0 .4 0 .8.2 1 .4a1.4 1.4 0 0 1 0 2c-.2.3-.6.5-1 .5-107.6.4-483.4 2.2-752.7 2.2Z"/><path fill="#fff" d="M993.9 53.1H809.6a9.8 9.8 0 0 0-9.8 9.8v352.5c0 5.4 4.4 9.7 9.8 9.7h184.3c5.4 0 9.8-4.3 9.8-9.7V62.9c0-5.4-4.4-9.8-9.8-9.8Z"/><path fill="#242424" d="M993.9 426.7H809.6a11.4 11.4 0 0 1-11.4-11.3V63a11.4 11.4 0 0 1 11.4-11.4h184.3a11.4 11.4 0 0 1 11.4 11.4v352.4a11.3 11.3 0 0 1-11.4 11.3Zm-184.3-372a8.2 8.2 0 0 0-8.2 8.2v352.4a8.2 8.2 0 0 0 8.2 8.2h184.3a8.2 8.2 0 0 0 8.2-8.2V63a8.2 8.2 0 0 0-8.2-8.2H809.6Z"/><path fill="#fff" d="M979.4 65.7H826a9.8 9.8 0 0 0-9.8 9.8V100c0 5.4 4.3 9.8 9.8 9.8h153.4c5.4 0 9.8-4.4 9.8-9.8V75.5c0-5.4-4.4-9.8-9.8-9.8Z"/><path fill="#242424" d="M979.4 111.3H826a11.4 11.4 0 0 1-11.5-11.4V75.5A11.4 11.4 0 0 1 826 64.1h153.4a11.4 11.4 0 0 1 11.4 11.4V100a11.4 11.4 0 0 1-11.4 11.4ZM826 67.3a8.2 8.2 0 0 0-8.3 8.2V100a8.2 8.2 0 0 0 8.3 8.2h153.4a8.2 8.2 0 0 0 8.2-8.2V75.5a8.2 8.2 0 0 0-8.2-8.1H826Z"/><path fill="#B6B6B6" d="M968.1 84.3H894a1.4 1.4 0 0 1-1.5-1.5 1.4 1.4 0 0 1 1.5-1.4h74a1.4 1.4 0 0 1 1.5 1.4 1.4 1.4 0 0 1-1.5 1.5Zm0 11.4H894a1.4 1.4 0 0 1-1.5-1.5 1.4 1.4 0 0 1 1.5-1.4h74a1.4 1.4 0 0 1 1.5 1.4 1.4 1.4 0 0 1-1.5 1.5Z"/><path fill="#85C241" d="M839.6 94.6a6.8 6.8 0 1 0 0-13.7 6.8 6.8 0 0 0 0 13.7Z"/><path fill="#B6B6B6" d="M861.8 96a8.3 8.3 0 1 1-.2-16.6 8.3 8.3 0 0 1 .2 16.6Zm0-13.7a5.4 5.4 0 1 0 0 10.9 5.4 5.4 0 0 0 0-10.9Z"/><path fill="#fff" d="M979.4 119.5H826a9.8 9.8 0 0 0-9.8 9.8v24.4c0 5.4 4.3 9.8 9.8 9.8h153.4c5.4 0 9.8-4.4 9.8-9.8v-24.4c0-5.4-4.4-9.8-9.8-9.8Z"/><path fill="#242424" d="M979.4 165H826a11.4 11.4 0 0 1-11.5-11.3v-24.4a11.4 11.4 0 0 1 11.5-11.4h153.4a11.4 11.4 0 0 1 11.4 11.4v24.4a11.4 11.4 0 0 1-11.4 11.4ZM826 121.2a8.2 8.2 0 0 0-8.3 8.2v24.4a8.3 8.3 0 0 0 8.3 8.2h153.4a8.2 8.2 0 0 0 8.2-8.2v-24.4a8.2 8.2 0 0 0-8.2-8.2H826Z"/><path fill="#B6B6B6" d="M968.1 138H894a1.4 1.4 0 0 1-1.5-1.4 1.4 1.4 0 0 1 1.5-1.4h74a1.4 1.4 0 0 1 1.4.9v.5a1.4 1.4 0 0 1-1.4 1.4Zm0 11.5H894a1.5 1.5 0 0 1 0-3h74a1.5 1.5 0 0 1 1 2.5l-1 .5Z"/><path fill="#85C241" d="M839.6 148.3a6.8 6.8 0 1 0 0-13.6 6.8 6.8 0 0 0 0 13.6Z"/><path fill="#B6B6B6" d="M861.8 149.8a8.3 8.3 0 1 1 0-16.6 8.3 8.3 0 0 1 0 16.6Zm0-13.7a5.4 5.4 0 1 0 0 10.9 5.4 5.4 0 0 0 0-11Z"/><path fill="#fff" d="M979.4 173.3H826a9.8 9.8 0 0 0-9.8 9.8v24.3c0 5.5 4.3 9.8 9.8 9.8h153.4c5.4 0 9.8-4.3 9.8-9.8v-24.3c0-5.5-4.4-9.8-9.8-9.8Z"/><path fill="#242424" d="M979.4 218.8H826a11.4 11.4 0 0 1-11.5-11.3V183a11.4 11.4 0 0 1 11.5-11.4h153.4a11.4 11.4 0 0 1 11.4 11.4v24.4a11.4 11.4 0 0 1-11.4 11.3Zm-153.4-44a8.2 8.2 0 0 0-8.3 8.3v24.4a8.2 8.2 0 0 0 8.3 8.2h153.4a8.2 8.2 0 0 0 8.2-8.2V183a8.2 8.2 0 0 0-8.2-8.2H826Z"/><path fill="#B6B6B6" d="M968.1 191.8H894a1.4 1.4 0 0 1-1.5-1.4 1.4 1.4 0 0 1 1-1.3l.5-.1h74a1.4 1.4 0 0 1 1.5 1.4 1.4 1.4 0 0 1-1.5 1.4Zm0 11.4H894a1.4 1.4 0 0 1-1.5-1.4 1.4 1.4 0 0 1 1.5-1.4h74a1.4 1.4 0 0 1 1.4.8v.6a1.4 1.4 0 0 1-1.4 1.4Z"/><path fill="#85C241" d="M839.6 202a6.8 6.8 0 1 0 0-13.6 6.8 6.8 0 0 0 0 13.7Z"/><path fill="#B6B6B6" d="M861.8 203.5a8.3 8.3 0 1 1 .1-16.5 8.3 8.3 0 0 1 0 16.5Zm0-13.6a5.4 5.4 0 1 0 .1 10.8 5.4 5.4 0 0 0 0-10.8Z"/><path fill="#fff" d="M979.4 227H826a9.8 9.8 0 0 0-9.8 9.8v24.4c0 5.4 4.3 9.8 9.8 9.8h153.4c5.4 0 9.8-4.4 9.8-9.8v-24.4c0-5.4-4.4-9.8-9.8-9.8Z"/><path fill="#242424" d="M979.4 272.6H826a11.4 11.4 0 0 1-11.5-11.4v-24.4a11.4 11.4 0 0 1 11.5-11.4h153.4a11.4 11.4 0 0 1 11.4 11.4v24.4a11.4 11.4 0 0 1-11.4 11.4Zm-153.4-44a8.3 8.3 0 0 0-8.3 8.2v24.4a8.2 8.2 0 0 0 8.3 8.2h153.4a8.2 8.2 0 0 0 8.2-8.2v-24.4a8.2 8.2 0 0 0-8.2-8.2H826Z"/><path fill="#B6B6B6" d="M968.1 245.6H894a1.4 1.4 0 0 1-1.5-1.5 1.4 1.4 0 0 1 1.5-1.4h74a1.4 1.4 0 0 1 1.5 1.4 1.4 1.4 0 0 1-1.5 1.5Zm0 11.4H894a1.4 1.4 0 0 1 0-2.9h74a1.4 1.4 0 1 1 0 2.9Z"/><path fill="#07C" d="M839.6 255.8a6.8 6.8 0 1 0 0-13.6 6.8 6.8 0 0 0 0 13.6Z"/><path fill="#B6B6B6" d="M861.8 257.3a8.3 8.3 0 1 1 0-16.6 8.3 8.3 0 0 1 0 16.6Zm0-13.7a5.4 5.4 0 1 0 0 10.9 5.4 5.4 0 0 0 0-10.9Z"/><path fill="#fff" d="M979.4 280.8H826a9.8 9.8 0 0 0-9.8 9.8V315c0 5.4 4.3 9.8 9.8 9.8h153.4c5.4 0 9.8-4.4 9.8-9.8v-24.4c0-5.4-4.4-9.8-9.8-9.8Z"/><path fill="#242424" d="M979.4 326.4H826a11.4 11.4 0 0 1-11.5-11.4v-24.4a11.4 11.4 0 0 1 11.5-11.4h153.4a11.4 11.4 0 0 1 11.4 11.4V315a11.4 11.4 0 0 1-11.4 11.4Zm-153.4-44a8.2 8.2 0 0 0-8.3 8.2V315a8.2 8.2 0 0 0 8.3 8.2h153.4a8.2 8.2 0 0 0 8-8.2v-24.4a8.2 8.2 0 0 0-8.1-8.2H826Z"/><path fill="#B6B6B6" d="M968.1 299.3H894a1.4 1.4 0 0 1-1.4-.9v-.5a1.4 1.4 0 0 1 1.4-1.4h74a1.4 1.4 0 0 1 1.5 1.4 1.4 1.4 0 0 1-1.5 1.4Zm0 11.4H894a1.4 1.4 0 0 1-1.5-1.4 1.4 1.4 0 0 1 1.5-1.4h74a1.4 1.4 0 0 1 1.5 1.4 1.4 1.4 0 0 1-1.5 1.4Z"/><path fill="#85C241" d="M839.6 309.6a6.8 6.8 0 1 0 0-13.7 6.8 6.8 0 0 0 0 13.7Z"/><path fill="#B6B6B6" d="M861.8 311a8.3 8.3 0 1 1 0-16.5 8.3 8.3 0 0 1 0 16.6Zm0-13.6a5.4 5.4 0 1 0 0 10.8 5.4 5.4 0 0 0 0-10.8Z"/><path fill="#fff" d="M979.4 334.5H826a9.8 9.8 0 0 0-9.8 9.8v24.4c0 5.4 4.3 9.8 9.8 9.8h153.4c5.4 0 9.8-4.4 9.8-9.8v-24.4c0-5.4-4.4-9.8-9.8-9.8Z"/><path fill="#242424" d="M979.4 380.1H826a11.4 11.4 0 0 1-11.5-11.4v-24.4A11.4 11.4 0 0 1 826 333h153.4a11.4 11.4 0 0 1 11.4 11.3v24.4a11.4 11.4 0 0 1-11.4 11.4Zm-153.4-44a8.2 8.2 0 0 0-8.3 8.2v24.4a8.3 8.3 0 0 0 8.3 8.3h153.4a8.2 8.2 0 0 0 8.2-8.3v-24.4a8.2 8.2 0 0 0-8.2-8.2H826Z"/><path fill="#B6B6B6" d="M968.1 353H894a1.4 1.4 0 0 1-1.5-1.3 1.4 1.4 0 0 1 1-1.4H968a1.4 1.4 0 0 1 1.5 1.4 1.4 1.4 0 0 1-1.5 1.4Zm0 11.4H894a1.5 1.5 0 0 1 0-2.8h74a1.4 1.4 0 0 1 1 2.3c-.3.3-.6.5-1 .5Z"/><path fill="#85C241" d="M839.6 363.4a6.8 6.8 0 1 0 0-13.7 6.8 6.8 0 0 0 0 13.7Z"/><path fill="#B6B6B6" d="M861.8 364.8a8.3 8.3 0 1 1 0-16.5 8.3 8.3 0 0 1 0 16.5Zm0-13.7a5.4 5.4 0 1 0 0 10.9 5.4 5.4 0 0 0 0-10.9Z"/><path fill="#fff" d="M634.7 53.1H450.4a9.8 9.8 0 0 0-9.8 9.8v352.5c0 5.4 4.4 9.7 9.8 9.7h184.3c5.4 0 9.7-4.3 9.7-9.7V62.9c0-5.4-4.3-9.8-9.7-9.8Z"/><path fill="#242424" d="M634.7 426.7H450.4a11.4 11.4 0 0 1-11.4-11.3V63a11.4 11.4 0 0 1 11.4-11.4h184.3A11.4 11.4 0 0 1 646.1 63v352.4a11.4 11.4 0 0 1-11.4 11.3Zm-184.3-372a8.2 8.2 0 0 0-8.2 8.2v352.4a8.2 8.2 0 0 0 8.2 8.2h184.3a8.2 8.2 0 0 0 8.2-8.2V63a8.2 8.2 0 0 0-8.2-8.2H450.4Z"/><path fill="#fff" d="M620.2 65.7H466.7a9.8 9.8 0 0 0-9.8 9.8V100c0 5.4 4.4 9.8 9.8 9.8h153.5c5.4 0 9.8-4.4 9.8-9.8V75.5c0-5.4-4.4-9.8-9.8-9.8Z"/><path fill="#242424" d="M620.2 111.3H466.7a11.4 11.4 0 0 1-11.3-11.4V75.5a11.4 11.4 0 0 1 11.3-11.4h153.5a11.4 11.4 0 0 1 11.4 11.4V100a11.4 11.4 0 0 1-11.4 11.4Zm-153.5-44a8.2 8.2 0 0 0-8.1 8.2V100a8.2 8.2 0 0 0 8.1 8.2h153.5a8.2 8.2 0 0 0 8.2-8.2V75.5a8.2 8.2 0 0 0-8.2-8.1H466.7Z"/><path fill="#B6B6B6" d="M609 84.3h-74.2a1.4 1.4 0 0 1-1.4-1.5 1.5 1.5 0 0 1 1.4-1.4H609a1.5 1.5 0 0 1 1.4 1.4 1.4 1.4 0 0 1-1.4 1.5Zm0 11.4h-74.2a1.4 1.4 0 0 1-1.4-1.5 1.5 1.5 0 0 1 1.4-1.4H609a1.5 1.5 0 0 1 1.4 1.4 1.4 1.4 0 0 1-1.4 1.5Z"/><path fill="#85C241" d="M480.4 94.6a6.8 6.8 0 1 0 0-13.7 6.8 6.8 0 0 0 0 13.7Z"/><path fill="#B6B6B6" d="M502.7 96a8.3 8.3 0 1 1-.1-16.6 8.3 8.3 0 0 1 0 16.6Zm0-13.7a5.4 5.4 0 1 0-.1 10.9 5.4 5.4 0 0 0 0-10.9Z"/><path fill="#fff" d="M620.2 119.5H466.7a9.8 9.8 0 0 0-9.8 9.8v24.4c0 5.4 4.4 9.8 9.8 9.8h153.5c5.4 0 9.8-4.4 9.8-9.8v-24.4c0-5.4-4.4-9.8-9.8-9.8Z"/><path fill="#242424" d="M620.2 165H466.7a11.4 11.4 0 0 1-11.3-11.3v-24.4a11.4 11.4 0 0 1 11.3-11.4h153.5a11.4 11.4 0 0 1 11.4 11.4v24.4a11.4 11.4 0 0 1-11.4 11.4Zm-153.5-43.9a8.2 8.2 0 0 0-8.1 8.2v24.4a8.2 8.2 0 0 0 8.1 8.2h153.5a8.2 8.2 0 0 0 8.2-8.2v-24.4a8.2 8.2 0 0 0-8.2-8.2H466.7Z"/><path fill="#B6B6B6" d="M609 138h-74.2a1.4 1.4 0 0 1-1.4-1.4 1.4 1.4 0 0 1 1.4-1.4H609a1.4 1.4 0 0 1 1.4 1.4 1.5 1.5 0 0 1-1.4 1.4Zm0 11.5h-74.2a1.4 1.4 0 0 1-1-2.4c.3-.3.6-.5 1-.5H609a1.5 1.5 0 0 1 .9 2.4l-1 .5Z"/><path fill="#07C" d="M480.4 148.3a6.8 6.8 0 1 0 0-13.6 6.8 6.8 0 0 0 0 13.6Z"/><path fill="#B6B6B6" d="M502.7 149.8a8.3 8.3 0 1 1 0-16.6 8.3 8.3 0 0 1 0 16.6Zm0-13.7a5.4 5.4 0 1 0-.1 10.9 5.4 5.4 0 0 0 0-11Z"/><path fill="#fff" d="M620.2 173.3H466.7a9.8 9.8 0 0 0-9.8 9.8v24.3c0 5.5 4.4 9.8 9.8 9.8h153.5c5.4 0 9.8-4.3 9.8-9.8v-24.3c0-5.5-4.4-9.8-9.8-9.8Z"/><path fill="#242424" d="M620.2 218.8H466.7a11.4 11.4 0 0 1-11.3-11.3V183a11.4 11.4 0 0 1 11.3-11.4h153.5a11.4 11.4 0 0 1 11.4 11.4v24.4a11.4 11.4 0 0 1-11.4 11.3Zm-153.5-44a8.2 8.2 0 0 0-8.1 8.3v24.4a8.2 8.2 0 0 0 8.1 8.2h153.5a8.2 8.2 0 0 0 8.2-8.2V183a8.2 8.2 0 0 0-8.2-8.2H466.7Z"/><path fill="#B6B6B6" d="M609 191.8h-74.2a1.5 1.5 0 0 1-1.4-1.4 1.4 1.4 0 0 1 1.4-1.4H609a1.4 1.4 0 0 1 1.3.8v.6a1.5 1.5 0 0 1-1.3 1.4Zm0 11.4h-74.2a1.5 1.5 0 0 1-1.4-1.4 1.4 1.4 0 0 1 1.4-1.4H609a1.4 1.4 0 0 1 1.4 1.4 1.5 1.5 0 0 1-1.4 1.4Z"/><path fill="#85C241" d="M480.4 202a6.8 6.8 0 1 0 0-13.6 6.8 6.8 0 0 0 0 13.7Z"/><path fill="#B6B6B6" d="M502.7 203.5a8.3 8.3 0 1 1 0-16.5 8.3 8.3 0 0 1 0 16.5Zm0-13.6a5.4 5.4 0 1 0 0 10.8 5.4 5.4 0 0 0 0-10.8Z"/><path fill="#fff" d="M620.2 227H466.7a9.8 9.8 0 0 0-9.8 9.8v24.4c0 5.4 4.4 9.8 9.8 9.8h153.5c5.4 0 9.8-4.4 9.8-9.8v-24.4c0-5.4-4.4-9.8-9.8-9.8Z"/><path fill="#242424" d="M620.2 272.6H466.7a11.4 11.4 0 0 1-11.3-11.4v-24.4a11.4 11.4 0 0 1 11.3-11.4h153.5a11.4 11.4 0 0 1 11.4 11.4v24.4a11.4 11.4 0 0 1-11.4 11.4Zm-153.5-44a8.2 8.2 0 0 0-8.1 8.2v24.4a8.2 8.2 0 0 0 8.1 8.2h153.5a8.2 8.2 0 0 0 8.2-8.2v-24.4a8.2 8.2 0 0 0-8.2-8.2H466.7Z"/><path fill="#B6B6B6" d="M609 245.6h-74.2a1.4 1.4 0 0 1-1.4-1.5 1.5 1.5 0 0 1 1.4-1.4H609a1.5 1.5 0 0 1 1.4 1.4 1.4 1.4 0 0 1-.9 1.3l-.5.2Zm0 11.4h-74.2a1.4 1.4 0 0 1-1-2.5c.2-.2.6-.4 1-.4H609a1.4 1.4 0 1 1 0 2.9Z"/><path fill="#85C241" d="M480.4 255.8a6.8 6.8 0 1 0 0-13.6 6.8 6.8 0 0 0 0 13.6Z"/><path fill="#B6B6B6" d="M502.7 257.3a8.3 8.3 0 1 1-.1-16.6 8.3 8.3 0 0 1 0 16.6Zm0-13.7a5.4 5.4 0 1 0-.1 10.9 5.4 5.4 0 0 0 0-10.9Z"/><path fill="#fff" d="M620.2 280.8H466.7a9.8 9.8 0 0 0-9.8 9.8V315c0 5.4 4.4 9.8 9.8 9.8h153.5c5.4 0 9.8-4.4 9.8-9.8v-24.4c0-5.4-4.4-9.8-9.8-9.8Z"/><path fill="#242424" d="M620.2 326.4H466.7a11.4 11.4 0 0 1-11.3-11.4v-24.4a11.4 11.4 0 0 1 11.3-11.4h153.5a11.4 11.4 0 0 1 11.4 11.4V315a11.4 11.4 0 0 1-11.4 11.4Zm-153.5-44a8.2 8.2 0 0 0-8.1 8.2V315a8.2 8.2 0 0 0 8.1 8.2h153.5a8.2 8.2 0 0 0 8.2-8.2v-24.4a8.2 8.2 0 0 0-8.2-8.2H466.7Z"/><path fill="#B6B6B6" d="M609 299.3h-74.2a1.4 1.4 0 0 1-1.4-1.4 1.5 1.5 0 0 1 1.4-1.4H609a1.5 1.5 0 0 1 1.4 1.4 1.4 1.4 0 0 1-1.4 1.4Zm0 11.4h-74.2a1.4 1.4 0 0 1-1.4-1.4 1.5 1.5 0 0 1 1.4-1.4H609a1.5 1.5 0 0 1 1.4 1.4 1.4 1.4 0 0 1-1.4 1.4Z"/><path fill="#07C" d="M480.4 309.6a6.8 6.8 0 1 0 0-13.7 6.8 6.8 0 0 0 0 13.7Z"/><path fill="#B6B6B6" d="M502.7 311a8.3 8.3 0 1 1-.1-16.5 8.3 8.3 0 0 1 0 16.6Zm0-13.6a5.4 5.4 0 1 0 0 10.9 5.4 5.4 0 0 0 0-11Z"/><path fill="#fff" d="M620.2 334.5H466.7a9.8 9.8 0 0 0-9.8 9.8v24.4c0 5.4 4.4 9.8 9.8 9.8h153.5c5.4 0 9.8-4.4 9.8-9.8v-24.4c0-5.4-4.4-9.8-9.8-9.8Z"/><path fill="#242424" d="M620.2 380.1H466.7a11.4 11.4 0 0 1-11.3-11.4v-24.4a11.4 11.4 0 0 1 11.3-11.3h153.5a11.4 11.4 0 0 1 11.4 11.3v24.4a11.4 11.4 0 0 1-11.4 11.4Zm-153.5-44a8.2 8.2 0 0 0-8.1 8.2v24.4a8.2 8.2 0 0 0 8.1 8.3h153.5a8.2 8.2 0 0 0 8.2-8.3v-24.4a8.2 8.2 0 0 0-8.2-8.2H466.7Z"/><path fill="#B6B6B6" d="M609 353h-74.2a1.5 1.5 0 0 1-1.4-1.3 1.4 1.4 0 0 1 1.4-1.5H609a1.4 1.4 0 0 1 1.4 1.5 1.5 1.5 0 0 1-1.4 1.4Zm0 11.4h-74.2a1.5 1.5 0 0 1 0-2.8H609a1.4 1.4 0 0 1 .9 2.3c-.3.3-.6.5-1 .5Z"/><path fill="#85C241" d="M480.4 363.4a6.8 6.8 0 1 0 0-13.7 6.8 6.8 0 0 0 0 13.7Z"/><path fill="#B6B6B6" d="M502.7 364.8a8.3 8.3 0 1 1 0-16.6 8.3 8.3 0 0 1 0 16.6Zm0-13.7a5.4 5.4 0 1 0-.1 10.9 5.4 5.4 0 0 0 0-10.9Z"/><path fill="#fff" d="M830.7 1.6h-217c-6.4 0-11.5 5.2-11.5 11.5v415c0 6.3 5.1 11.4 11.5 11.4h217c6.3 0 11.5-5.1 11.5-11.5V13.1c0-6.3-5.2-11.5-11.5-11.5Z"/><path fill="#242424" d="M830.6 441.1h-217a13.1 13.1 0 0 1-13-13V13a13.1 13.1 0 0 1 13-13.1h217A13.1 13.1 0 0 1 843.7 13v415a13.1 13.1 0 0 1-13 13ZM613.6 3.2a10 10 0 0 0-9.8 10V428a10 10 0 0 0 9.9 10h217a10 10 0 0 0 9.8-10V13.1a10 10 0 0 0-9.9-9.9h-217Z"/><path fill="#fff" d="M813.6 16.4H632.9c-6.3 0-11.5 5.2-11.5 11.6v28.7c0 6.4 5.2 11.5 11.5 11.5h180.7c6.3 0 11.5-5.1 11.5-11.5V28c0-6.4-5.2-11.6-11.5-11.6Z"/><path fill="#242424" d="M813.6 69.8H632.9a13.1 13.1 0 0 1-13.1-13.1V28a13.2 13.2 0 0 1 13.1-13.2h180.7A13.1 13.1 0 0 1 826.7 28v28.7a13.1 13.1 0 0 1-13.1 13.1ZM632.9 18a10 10 0 0 0-10 10v28.7a10 10 0 0 0 10 10h180.7a10 10 0 0 0 10-10V28a10 10 0 0 0-9.9-10H633Z"/><path fill="#B6B6B6" d="M800.3 38H713a1.4 1.4 0 0 1-1.5-1.4A1.5 1.5 0 0 1 713 35h87.4a1.5 1.5 0 0 1 1.5 1.5 1.4 1.4 0 0 1-1.5 1.4Zm0 13.4H713a1.4 1.4 0 0 1-1.5-1.4 1.5 1.5 0 0 1 1.5-1.4h87.4a1.5 1.5 0 0 1 1.5 1.4 1.4 1.4 0 0 1-1.5 1.4Z"/><path fill="#85C241" d="M649 50.4a8 8 0 1 0 0-16.1 8 8 0 0 0 0 16Z"/><path fill="#B6B6B6" d="M675.3 51.8a9.5 9.5 0 1 1-.5-19 9.5 9.5 0 0 1 .5 19Zm0-16.1a6.6 6.6 0 1 0 0 13.3 6.6 6.6 0 0 0 0-13.3Z"/><path fill="#fff" d="M813.6 79.7H632.9c-6.3 0-11.5 5.2-11.5 11.5V120c0 6.3 5.2 11.5 11.5 11.5h180.7c6.3 0 11.5-5.2 11.5-11.5V91.2c0-6.3-5.2-11.5-11.5-11.5Z"/><path fill="#242424" d="M813.6 133.1H632.9a13.2 13.2 0 0 1-13.1-13.1V91.2a13.1 13.1 0 0 1 13.1-13h180.7a13.1 13.1 0 0 1 13 13V120a13.1 13.1 0 0 1-13 13.1ZM632.9 81.3a10 10 0 0 0-10 10V120a10 10 0 0 0 10 10h180.7a10 10 0 0 0 9.9-10V91.2a10 10 0 0 0-10-9.9H633Z"/><path fill="#B6B6B6" d="M800.3 101.3H713a1.5 1.5 0 0 1-1.5-1.4 1.4 1.4 0 0 1 1.5-1.5h87.4a1.4 1.4 0 0 1 1.5 1.5 1.5 1.5 0 0 1-1.5 1.4Zm0 13.4H713a1.5 1.5 0 0 1-1.5-1.4 1.4 1.4 0 0 1 1.5-1.4h87.4a1.4 1.4 0 0 1 1.5 1.4 1.5 1.5 0 0 1-1.5 1.4Z"/><path fill="#85C241" d="M649 113.7a8 8 0 1 0 0-16.1 8 8 0 0 0 0 16Z"/><path fill="#B6B6B6" d="M675.3 115a9.5 9.5 0 1 1 0-18.9 9.5 9.5 0 0 1 0 19Zm0-16a6.6 6.6 0 1 0 0 13.3 6.6 6.6 0 0 0 0-13.3Z"/><path fill="#fff" d="M813.6 143H632.9c-6.3 0-11.5 5.2-11.5 11.6v28.7c0 6.3 5.2 11.5 11.5 11.5h180.7c6.3 0 11.5-5.2 11.5-11.5v-28.7c0-6.4-5.2-11.6-11.5-11.6Z"/><path fill="#242424" d="M813.6 196.4H632.9a13.1 13.1 0 0 1-13.1-13.1v-28.7a13.1 13.1 0 0 1 13.1-13.2h180.7a13 13 0 0 1 13.1 13.2v28.7a13.1 13.1 0 0 1-13.1 13Zm-180.7-51.8a10 10 0 0 0-10 10v28.7a10 10 0 0 0 10 9.9h180.7a10 10 0 0 0 9.9-10v-28.6a10 10 0 0 0-10-10H633Z"/><path fill="#B6B6B6" d="M800.3 164.6H713a1.4 1.4 0 1 1 0-2.9h87.4a1.4 1.4 0 0 1 1 2.5c-.2.2-.6.4-1 .4Zm0 13.4H713a1.4 1.4 0 0 1-1.4-.9v-.5a1.5 1.5 0 0 1 1.4-1.5h87.4a1.5 1.5 0 0 1 1.5 1.5 1.4 1.4 0 0 1-1 1.3h-.5Z"/><path fill="#85C241" d="M649 177a8 8 0 1 0 0-16.2 8 8 0 0 0 0 16.2Z"/><path fill="#B6B6B6" d="M675.3 178.4a9.5 9.5 0 1 1 0-19 9.5 9.5 0 0 1 0 19Zm0-16.1a6.7 6.7 0 1 0 0 13.3 6.7 6.7 0 0 0 0-13.3Z"/><path fill="#fff" d="M813.6 206.3H632.9c-6.3 0-11.5 5.2-11.5 11.5v28.7c0 6.4 5.2 11.6 11.5 11.6h180.7c6.3 0 11.5-5.2 11.5-11.6v-28.7c0-6.3-5.2-11.5-11.5-11.5Z"/><path fill="#242424" d="M813.6 259.7H632.9a13.2 13.2 0 0 1-13.1-13.2v-28.7a13.2 13.2 0 0 1 13.1-13.1h180.7a13.1 13.1 0 0 1 13 13.1v28.7a13.1 13.1 0 0 1-13 13.2Zm-180.7-51.8a10 10 0 0 0-10 10v28.6a10 10 0 0 0 10 10h180.7a10 10 0 0 0 9.9-10v-28.7a10 10 0 0 0-10-9.9H633Z"/><path fill="#B6B6B6" d="M800.3 227.8H713a1.4 1.4 0 0 1-1.5-1.4 1.5 1.5 0 0 1 1.5-1.4h87.4a1.5 1.5 0 0 1 1.5 1.4 1.4 1.4 0 0 1-1.5 1.4Zm0 13.5H713a1.5 1.5 0 0 1-1.5-1.4 1.4 1.4 0 0 1 1.5-1.5h87.4a1.4 1.4 0 0 1 1.5 1.5 1.5 1.5 0 0 1-1.5 1.4Z"/><path fill="#07C" d="M649 240.3a8 8 0 1 0 0-16.2 8 8 0 0 0 0 16.2Z"/><path fill="#B6B6B6" d="M675.3 241.7a9.5 9.5 0 1 1 0-19 9.5 9.5 0 0 1 0 19Zm0-16.1a6.6 6.6 0 1 0 0 13.2 6.6 6.6 0 0 0 0-13.2Z"/><path fill="#fff" d="M813.6 269.6H632.9c-6.3 0-11.5 5.1-11.5 11.5v28.7c0 6.4 5.2 11.5 11.5 11.5h180.7c6.3 0 11.5-5.1 11.5-11.5v-28.7c0-6.4-5.2-11.5-11.5-11.5Z"/><path fill="#242424" d="M813.6 323H632.9a13.1 13.1 0 0 1-13.1-13.2V281a13.1 13.1 0 0 1 13.1-13.1h180.7a13 13 0 0 1 13.1 13v28.8a13.1 13.1 0 0 1-13.1 13.3Zm-180.7-51.8a10 10 0 0 0-10 9.9v28.7a10 10 0 0 0 10 10h180.7a10 10 0 0 0 9.9-10V281a10 10 0 0 0-10-10l-180.6.2Z"/><path fill="#B6B6B6" d="M800.3 291.1H713a1.5 1.5 0 0 1-1.5-1.4 1.4 1.4 0 0 1 1.5-1.4h87.4a1.4 1.4 0 0 1 1.5 1.4 1.5 1.5 0 0 1-1.5 1.4Zm0 13.5H713a1.4 1.4 0 0 1-1.4-1v-.5a1.5 1.5 0 0 1 1.4-1.4h87.4a1.5 1.5 0 0 1 1.5 1.4 1.4 1.4 0 0 1-1 1.4h-.5Z"/><path fill="#85C241" d="M649 303.5a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z"/><path fill="#B6B6B6" d="M675.3 305a9.5 9.5 0 1 1 0-19 9.5 9.5 0 0 1 0 19Zm0-16.2a6.6 6.6 0 1 0 0 13.3 6.6 6.6 0 0 0 0-13.3Z"/><path fill="#fff" d="M813.6 332.9H632.9c-6.3 0-11.5 5.1-11.5 11.5v28.7c0 6.4 5.2 11.5 11.5 11.5h180.7c6.3 0 11.5-5.1 11.5-11.5v-28.7c0-6.4-5.2-11.5-11.5-11.5Z"/><path fill="#242424" d="M813.6 386.3H632.9a13.2 13.2 0 0 1-13.1-13.2v-28.7a13.2 13.2 0 0 1 13.1-13.1h180.7a13.1 13.1 0 0 1 13 13.1v28.7a13.1 13.1 0 0 1-13 13.2Zm-180.7-51.9a10 10 0 0 0-10 10v28.7a10 10 0 0 0 10 9.9h180.7a10 10 0 0 0 9.9-10v-28.7a10 10 0 0 0-10-10l-180.6.1Z"/><path fill="#B6B6B6" d="M800.3 354.4H713a1.4 1.4 0 0 1-1.5-1.4 1.5 1.5 0 0 1 1.5-1.4h87.4a1.4 1.4 0 0 1 1.5 1.4 1.4 1.4 0 0 1-1.5 1.4Zm0 13.5H713a1.5 1.5 0 0 1-1.5-1.5 1.4 1.4 0 0 1 1.5-1.4h87.4a1.4 1.4 0 0 1 1.5 1.4 1.5 1.5 0 0 1-1.5 1.5Z"/><path fill="#07C" d="M649 366.8a8 8 0 1 0 0-16.1 8 8 0 0 0 0 16.1Z"/><path fill="#B6B6B6" d="M675.3 368.2a9.5 9.5 0 1 1 0-19 9.5 9.5 0 0 1 0 19Zm0-16a6.6 6.6 0 1 0 6.6 6.5 6.6 6.6 0 0 0-6.6-6.6Z"/><path fill="#fff" d="M405.6 146H37.4c-9.2 0-16.7 7.5-16.7 16.7V350c0 9.2 7.5 16.7 16.7 16.7h368.2c9.2 0 16.7-7.5 16.7-16.7V162.7c0-9.2-7.5-16.7-16.7-16.7Z"/><path fill="#242424" d="M405.6 368.4H37.4a18.3 18.3 0 0 1-18.2-18.2V162.7a18.3 18.3 0 0 1 18.2-18.3h368.2a18.3 18.3 0 0 1 18.3 18.3v187.5a18.3 18.3 0 0 1-18.3 18.2ZM37.4 147.6a15.1 15.1 0 0 0-15 15v187.6a15.1 15.1 0 0 0 15 15h368.2a15.1 15.1 0 0 0 15.1-15V162.7a15.1 15.1 0 0 0-15-15.1H37.3Z"/><path fill="#fff" d="M422.3 171.1H20.7v170.6h401.6V171Z"/><path fill="#242424" d="M422.3 343.3H20.7a1.6 1.6 0 0 1-1.5-1.6V171.1a1.6 1.6 0 0 1 1.5-1.6h401.6a1.6 1.6 0 0 1 1.6 1.6v170.6a1.6 1.6 0 0 1-1.6 1.6Zm-400-3.1h398.4V172.8H22.3v167.4Z"/><path fill="#fff" d="M291.7 415.2H151.3l15.9-48.4h108.6l16 48.4Z"/><path fill="#242424" d="M291.7 416.8H151.3a1.6 1.6 0 0 1-1.6-1.3l.1-.8 15.9-48.4a1.6 1.6 0 0 1 1.5-1h108.6a1.5 1.5 0 0 1 1.6 1l15.8 48.4a1.6 1.6 0 0 1-1.5 2Zm-138.2-3.1h136l-14.8-45.2H168.3l-14.8 45.2Z"/><path fill="#fff" d="M303.3 415.2H139.7a6.8 6.8 0 0 0 0 13.6h163.6a6.8 6.8 0 0 0 0-13.6Z"/><path fill="#242424" d="M303.3 430.4H139.7a8.4 8.4 0 1 1 0-16.8h163.6a8.4 8.4 0 0 1 0 16.8Zm-163.6-13.6a5.2 5.2 0 1 0 0 10.4h163.6a5.2 5.2 0 1 0 0-10.4H139.7Zm16.3-14.4c2.2-1.2 123.8-23.4 123.8-23.4l-4-12.2H167.2L156 402.4Z"/><path fill="#242424" d="M156 404c-.4 0-.7-.2-1-.4a1.6 1.6 0 0 1-.4-1.7l11.1-35.6a1.6 1.6 0 0 1 1.5-1h108.6a1.5 1.5 0 0 1 1.5 1l4 12.2a1.6 1.6 0 0 1 0 1.3 1.6 1.6 0 0 1-1 .7A5767.7 5767.7 0 0 0 156 404Zm12.3-35.6-10 31.9c16.2-3.6 92-17.5 119.5-22.5l-3-9.3-106.5-.1Z"/><path fill="#07C" d="M373.2 321.7h17.1V310h-17.1v11.8Z"/><path fill="#85C241" d="M348.5 321.7h17.2v-28.5h-17.2v28.5Z"/><path fill="#07C" d="M323.8 321.7H341v-93.3h-17.2v93.3Z"/><path fill="#85C241" d="M299.2 321.7h17.2v-107h-17.2v107Z"/><path fill="#07C" d="M274.5 321.7h17.2V256h-17.2v65.7Z"/><path fill="#85C241" d="M250 321.7h17V226h-17.2v95.7Z"/><path fill="#07C" d="M225.3 321.7h17.1v-28.5h-17.1v28.5Z"/><path fill="#85C241" d="M200.6 321.7h17.2V211.1h-17.2v110.6Z"/><path fill="#07C" d="M176 321.7h17V191.1h-17v130.6Z"/><path fill="#85C241" d="M151.3 321.7h17.2V253h-17.2v68.7Z"/><path fill="#07C" d="M126.7 321.7h17.2v-33h-17.2v33Z"/><path fill="#85C241" d="M102 321.7h17.2v-57H102v57Z"/><path fill="#07C" d="M77.4 321.7h17.1v-42.6H77.4v42.6Z"/><path fill="#85C241" d="M52.7 321.7H70v-33.3H52.7v33.3Z"/><path fill="#fff" d="M409.1 25H291.7v102.3l22-21.7h95.4V25Z"/><path fill="#B6B6B6" d="M291.7 128.7h-.5a1.4 1.4 0 0 1-.9-1.3V25a1.4 1.4 0 0 1 1.4-1.4h117.5a1.4 1.4 0 0 1 1.4 1.4v80.6a1.5 1.5 0 0 1-1.4 1.4h-94.8l-21.7 21.3c-.2.3-.6.4-1 .4Zm1.5-102.3V124l19.6-19.3a1.4 1.4 0 0 1 1-.4h94V26.4H293.1Z"/><path fill="#B6B6B6" d="M387.3 47.2h-70.9a1.5 1.5 0 1 1 0-3h71a1.5 1.5 0 0 1 0 3Zm0 17.4h-70.9a1.4 1.4 0 0 1-1.5-1.4 1.5 1.5 0 0 1 1.5-1.4h71a1.5 1.5 0 0 1 1.3 1.4 1.4 1.4 0 0 1-1.4 1.4Z"/><path fill="#07C" d="M369.3 82h-52.9a1.4 1.4 0 0 1-1.5-1.4 1.5 1.5 0 0 1 1.5-1.4h52.9a1.5 1.5 0 0 1 1.4 1.4 1.4 1.4 0 0 1-1.4 1.5Z"/></svg>
\ No newline at end of file
diff --git a/static/img/flatline/data_and_settings.svg b/static/img/flatline/data_and_settings.svg
new file mode 100644 (file)
index 0000000..08dacf5
--- /dev/null
@@ -0,0 +1,43 @@
+<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0.67 0 565.93 500">
+<path d="M1.72058 477.099H565.558V488.907C565.558 491.849 564.389 494.67 562.309 496.751C560.229 498.831 557.407 500 554.465 500H12.7907C9.84859 500 7.02699 498.831 4.94662 496.751C2.86624 494.67 1.69751 491.849 1.69751 488.907V477.099H1.72058Z" fill="black"/>
+<path d="M556.587 486.947H10.6922C9.27406 486.938 7.87827 486.593 6.61985 485.939C5.36144 485.285 4.27644 484.341 3.45431 483.186C2.63217 482.03 2.09643 480.696 1.89126 479.293C1.6861 477.89 1.81737 476.458 2.27427 475.115L47.7078 340.752C49.691 334.924 53.4479 329.862 58.4523 326.276C63.4566 322.691 69.4574 320.76 75.6138 320.756H491.665C497.822 320.76 503.823 322.691 508.827 326.276C513.831 329.862 517.588 334.924 519.571 340.752L565.005 475.115C565.462 476.458 565.593 477.89 565.388 479.293C565.183 480.696 564.647 482.03 563.825 483.186C563.003 484.341 561.918 485.285 560.659 485.939C559.401 486.593 558.005 486.938 556.587 486.947Z" fill="white"/>
+<path d="M556.587 488.123H10.6919C9.10149 488.117 7.53508 487.734 6.12138 487.005C4.70767 486.276 3.48698 485.223 2.55956 483.931C1.63214 482.639 1.02444 481.145 0.786378 479.572C0.548314 478 0.686674 476.393 1.19009 474.885L46.7159 340.521C48.7536 334.472 52.6385 329.214 57.8231 325.491C63.0076 321.767 69.2302 319.764 75.6135 319.765H491.665C498.049 319.764 504.271 321.767 509.456 325.491C514.64 329.214 518.525 334.472 520.563 340.521L566.089 474.862C566.592 476.37 566.73 477.977 566.492 479.549C566.254 481.122 565.647 482.616 564.719 483.908C563.792 485.2 562.571 486.253 561.157 486.982C559.744 487.711 558.177 488.094 556.587 488.1V488.123ZM75.6135 321.794C69.6732 321.797 63.8831 323.661 59.056 327.123C54.2289 330.585 50.6071 335.472 48.6993 341.098L3.19655 475.438C2.80701 476.624 2.70386 477.886 2.89555 479.12C3.08723 480.354 3.56831 481.525 4.29942 482.537C5.03053 483.55 5.99088 484.375 7.10195 484.944C8.21302 485.514 9.44324 485.813 10.6919 485.816H556.587C557.844 485.817 559.082 485.518 560.201 484.944C561.319 484.37 562.284 483.538 563.017 482.517C563.75 481.496 564.228 480.315 564.414 479.072C564.599 477.829 564.485 476.559 564.082 475.369L518.579 341.028C516.672 335.403 513.05 330.516 508.223 327.054C503.396 323.592 497.605 321.728 491.665 321.725L75.6135 321.794Z" fill="#242424"/>
+<path d="M505.042 408.095H63.1597C62.0081 408.097 60.872 407.829 59.8424 407.313C58.8128 406.798 57.9182 406.048 57.2301 405.125C56.542 404.201 56.0796 403.13 55.8798 401.995C55.6799 400.861 55.7483 399.696 56.0794 398.593L72.2233 344.073C72.7281 342.39 73.7606 340.915 75.1685 339.864C76.5764 338.813 78.2849 338.243 80.0416 338.238H486.153C488.119 338.25 490.029 338.89 491.605 340.064C493.182 341.238 494.342 342.885 494.917 344.765L511.222 399.7C511.512 400.669 511.572 401.691 511.399 402.687C511.226 403.683 510.824 404.624 510.225 405.438C509.625 406.252 508.845 406.916 507.946 407.377C507.046 407.838 506.052 408.084 505.042 408.095ZM80.1108 340.521C78.8491 340.521 77.6209 340.927 76.6076 341.679C75.5943 342.431 74.8496 343.488 74.4835 344.696L58.3395 399.239C58.1181 399.997 58.0756 400.795 58.2155 401.572C58.3554 402.349 58.6738 403.083 59.1456 403.715C59.6174 404.348 60.2297 404.863 60.9343 405.219C61.6389 405.574 62.4165 405.762 63.2058 405.766H505.042C505.7 405.764 506.35 405.609 506.938 405.313C507.527 405.016 508.038 404.587 508.432 404.059C508.826 403.531 509.091 402.918 509.207 402.27C509.323 401.621 509.287 400.955 509.101 400.323L492.772 345.387C492.337 343.987 491.468 342.761 490.291 341.886C489.114 341.011 487.689 340.533 486.222 340.521H80.1108Z" fill="#B6B6B6"/>
+<path d="M353.404 468.796H213.875C212.701 468.803 211.54 468.543 210.482 468.035C209.423 467.528 208.493 466.787 207.763 465.867C207.023 464.956 206.498 463.89 206.227 462.748C205.955 461.606 205.944 460.418 206.195 459.271L212.86 428.944C213.468 426.279 214.958 423.897 217.088 422.185C219.219 420.473 221.866 419.531 224.599 419.511H342.68C345.413 419.531 348.06 420.473 350.19 422.185C352.321 423.897 353.811 426.279 354.419 428.944L361.084 459.271C361.334 460.418 361.324 461.606 361.052 462.748C360.781 463.89 360.255 464.956 359.516 465.867C358.785 466.787 357.856 467.528 356.797 468.035C355.738 468.543 354.578 468.803 353.404 468.796ZM224.599 421.817C222.388 421.827 220.245 422.588 218.523 423.975C216.801 425.362 215.601 427.293 215.12 429.451L208.455 459.756C208.275 460.566 208.28 461.406 208.469 462.215C208.658 463.023 209.026 463.778 209.546 464.425C210.067 465.072 210.726 465.593 211.475 465.951C212.225 466.308 213.045 466.492 213.875 466.49H353.404C354.234 466.492 355.054 466.308 355.803 465.951C356.553 465.593 357.212 465.072 357.732 464.425C358.253 463.778 358.621 463.023 358.81 462.215C358.999 461.406 359.004 460.566 358.824 459.756L352.159 429.451C351.678 427.293 350.478 425.362 348.756 423.975C347.034 422.588 344.891 421.827 342.68 421.817H224.599Z" fill="#B6B6B6"/>
+<path d="M497.961 30.9732H69.3173C61.0254 30.9732 54.3035 37.6951 54.3035 45.987V305.743C54.3035 314.035 61.0254 320.756 69.3173 320.756H497.961C506.253 320.756 512.975 314.035 512.975 305.743V45.987C512.975 37.6951 506.253 30.9732 497.961 30.9732Z" fill="#242424"/>
+<path d="M497.961 321.91H69.3175C65.0359 321.91 60.9296 320.209 57.902 317.181C54.8745 314.154 53.1736 310.047 53.1736 305.766V45.9871C53.1736 41.7054 54.8745 37.5991 57.902 34.5716C60.9296 31.544 65.0359 29.8431 69.3175 29.8431H497.961C502.243 29.8431 506.349 31.544 509.377 34.5716C512.404 37.5991 514.105 41.7054 514.105 45.9871V305.743C514.108 307.865 513.693 309.966 512.883 311.928C512.073 313.889 510.884 315.671 509.385 317.173C507.886 318.675 506.105 319.866 504.145 320.678C502.185 321.491 500.083 321.91 497.961 321.91ZM69.3175 32.1263C65.6475 32.1263 62.1279 33.5842 59.5328 36.1793C56.9378 38.7744 55.4799 42.294 55.4799 45.964V305.743C55.4799 309.413 56.9378 312.932 59.5328 315.527C62.1279 318.122 65.6475 319.58 69.3175 319.58H497.961C501.631 319.58 505.151 318.122 507.746 315.527C510.341 312.932 511.799 309.413 511.799 305.743V45.9871C511.799 42.3171 510.341 38.7974 507.746 36.2024C505.151 33.6073 501.631 32.1494 497.961 32.1494L69.3175 32.1263Z" fill="#242424"/>
+<path d="M491.019 50.9456H76.2822V300.369H491.019V50.9456Z" fill="#DBDBDB"/>
+<path d="M140.835 57.5184V378.667C140.835 409.709 204.765 435.078 283.639 435.078C362.514 435.078 426.444 409.848 426.444 378.736V57.5184H140.835Z" fill="#85C241"/>
+<path d="M283.639 436.162C204.257 436.162 139.682 410.355 139.682 378.667V57.5184C139.682 57.2125 139.803 56.9192 140.019 56.703C140.236 56.4867 140.529 56.3652 140.835 56.3652H426.444C426.75 56.3652 427.043 56.4867 427.259 56.703C427.475 56.9192 427.597 57.2125 427.597 57.5184V378.667C427.597 410.355 363.021 436.162 283.639 436.162ZM141.988 58.6715V378.667C141.988 409.087 205.526 433.856 283.639 433.856C361.753 433.856 425.291 409.087 425.291 378.667V58.6715H141.988Z" fill="#242424"/>
+<path d="M283.639 113.861C362.508 113.861 426.444 88.6354 426.444 57.5184C426.444 26.4014 362.508 1.17615 283.639 1.17615C204.771 1.17615 140.835 26.4014 140.835 57.5184C140.835 88.6354 204.771 113.861 283.639 113.861Z" fill="#85C241"/>
+<path d="M283.639 115.014C204.257 115.014 139.682 89.2066 139.682 57.5185C139.682 25.8303 204.257 0 283.639 0C363.021 0 427.597 25.8072 427.597 57.5185C427.597 89.2297 363.021 115.014 283.639 115.014ZM283.639 2.30627C205.526 2.30627 141.988 27.0757 141.988 57.5185C141.988 87.9613 205.526 112.708 283.639 112.708C361.753 112.708 425.291 87.9382 425.291 57.5185C425.291 27.0987 361.753 2.30627 283.639 2.30627Z" fill="#242424"/>
+<path d="M283.639 212.5C204.257 212.5 139.682 186.716 139.682 155.005C139.682 154.699 139.803 154.405 140.019 154.189C140.236 153.973 140.529 153.851 140.835 153.851C141.141 153.851 141.434 153.973 141.65 154.189C141.866 154.405 141.988 154.699 141.988 155.005C141.988 185.447 205.526 210.194 283.639 210.194C361.753 210.194 425.291 185.447 425.291 155.005C425.291 154.699 425.412 154.405 425.628 154.189C425.844 153.973 426.138 153.851 426.444 153.851C426.75 153.851 427.043 153.973 427.259 154.189C427.475 154.405 427.597 154.699 427.597 155.005C427.597 186.716 363.021 212.5 283.639 212.5Z" fill="#242424"/>
+<path d="M283.639 322.993C204.257 322.993 139.682 297.186 139.682 265.475C139.682 265.169 139.803 264.876 140.019 264.66C140.236 264.443 140.529 264.322 140.835 264.322C141.139 264.328 141.429 264.451 141.644 264.666C141.859 264.881 141.982 265.171 141.988 265.475C141.988 295.918 205.526 320.687 283.639 320.687C361.753 320.687 425.291 295.918 425.291 265.475C425.296 265.171 425.42 264.881 425.635 264.666C425.85 264.451 426.14 264.328 426.444 264.322C426.75 264.322 427.043 264.443 427.259 264.66C427.475 264.876 427.597 265.169 427.597 265.475C427.597 297.186 363.021 322.993 283.639 322.993Z" fill="#242424"/>
+<path d="M177.551 115.014H177.159C161.338 109.41 154.419 100.853 154.096 100.484C153.986 100.368 153.902 100.231 153.849 100.08C153.795 99.9298 153.773 99.7699 153.784 99.6106C153.796 99.4514 153.84 99.2962 153.915 99.155C153.989 99.0137 154.092 98.8895 154.217 98.7901C154.342 98.6908 154.486 98.6184 154.641 98.5777C154.795 98.5371 154.956 98.5289 155.114 98.5537C155.272 98.5786 155.423 98.6359 155.557 98.7221C155.692 98.8083 155.807 98.9215 155.895 99.0545C155.895 99.0545 162.814 107.472 177.897 112.892C178.203 112.944 178.475 113.115 178.655 113.368C178.834 113.621 178.906 113.935 178.854 114.241C178.802 114.547 178.631 114.82 178.378 114.999C178.125 115.179 177.811 115.25 177.505 115.198L177.551 115.014Z" fill="#242424"/>
+<path d="M189.082 118.381H188.829L183.639 117.297C183.334 117.236 183.065 117.056 182.892 116.796C182.719 116.537 182.656 116.219 182.717 115.913C182.778 115.608 182.958 115.339 183.218 115.166C183.477 114.993 183.795 114.93 184.101 114.991L189.313 116.075C189.462 116.108 189.602 116.169 189.727 116.257C189.852 116.344 189.958 116.455 190.039 116.584C190.121 116.713 190.176 116.856 190.202 117.006C190.228 117.156 190.223 117.31 190.189 117.459C190.145 117.719 190.009 117.955 189.806 118.125C189.603 118.294 189.346 118.385 189.082 118.381Z" fill="#242424"/>
+<path d="M177.551 217.897H177.159C161.338 212.293 154.419 203.736 154.096 203.367C153.907 203.128 153.821 202.824 153.856 202.522C153.89 202.22 154.043 201.943 154.281 201.753C154.519 201.564 154.823 201.478 155.126 201.512C155.428 201.547 155.705 201.7 155.895 201.937C155.895 201.937 162.814 210.355 177.897 215.775C178.203 215.827 178.475 215.998 178.655 216.251C178.834 216.504 178.906 216.818 178.854 217.124C178.802 217.43 178.63 217.703 178.377 217.882C178.124 218.062 177.81 218.133 177.505 218.081L177.551 217.897Z" fill="#242424"/>
+<path d="M189.082 221.264H188.829L183.639 220.18C183.334 220.119 183.065 219.939 182.892 219.679C182.719 219.42 182.656 219.102 182.717 218.796C182.778 218.49 182.958 218.221 183.218 218.048C183.477 217.875 183.795 217.813 184.101 217.874L189.313 218.958C189.461 218.988 189.601 219.047 189.726 219.132C189.85 219.217 189.956 219.326 190.038 219.453C190.12 219.58 190.175 219.722 190.201 219.87C190.227 220.019 190.223 220.171 190.189 220.318C190.15 220.583 190.017 220.825 189.813 220.999C189.61 221.173 189.35 221.267 189.082 221.264Z" fill="#242424"/>
+<path d="M177.551 320.78H177.159C161.338 315.175 154.419 306.619 154.096 306.25C153.907 306.011 153.821 305.707 153.856 305.405C153.89 305.102 154.043 304.826 154.281 304.636C154.519 304.447 154.823 304.361 155.126 304.395C155.428 304.43 155.705 304.583 155.895 304.82C155.895 304.82 162.814 313.238 177.897 318.658C178.203 318.71 178.475 318.881 178.655 319.134C178.834 319.387 178.906 319.701 178.854 320.007C178.802 320.313 178.63 320.585 178.377 320.765C178.124 320.944 177.81 321.016 177.505 320.964L177.551 320.78Z" fill="#242424"/>
+<path d="M189.082 324.147H188.828L183.639 323.063C183.491 323.033 183.35 322.973 183.224 322.889C183.099 322.804 182.991 322.695 182.908 322.569C182.824 322.442 182.766 322.301 182.738 322.152C182.709 322.003 182.71 321.851 182.74 321.702C182.77 321.554 182.829 321.414 182.914 321.289C182.999 321.165 183.109 321.059 183.235 320.977C183.362 320.895 183.504 320.84 183.653 320.814C183.801 320.788 183.954 320.792 184.101 320.826L189.313 321.91C189.461 321.94 189.601 321.999 189.725 322.084C189.85 322.169 189.956 322.278 190.038 322.405C190.12 322.532 190.175 322.674 190.201 322.823C190.227 322.971 190.223 323.123 190.189 323.27C190.135 323.522 189.996 323.748 189.793 323.908C189.591 324.068 189.34 324.152 189.082 324.147Z" fill="#242424"/>
+<path d="M254.281 307.495C256.241 301.753 258.155 295.964 260.162 290.314C261.222 287.339 262.468 284.433 263.621 281.527C264.262 279.695 265.517 278.141 267.173 277.128C268.829 276.115 270.784 275.705 272.708 275.969C277.32 276.476 281.933 277.468 286.545 278.275C289.003 278.813 291.504 279.137 294.018 279.244C295.869 279.277 297.679 278.693 299.161 277.583C304.465 272.532 309.562 267.228 314.59 261.877C315.434 260.878 316.018 259.686 316.292 258.407C316.566 257.127 316.519 255.801 316.158 254.543C314.982 248.939 313.621 243.381 312.468 237.777C311.937 235.605 311.735 233.366 311.868 231.135C311.931 230.319 312.155 229.524 312.527 228.796C312.899 228.067 313.412 227.42 314.036 226.891C322.578 221.319 331.907 217.059 341.711 214.253C343.164 213.788 344.729 213.817 346.164 214.334C347.599 214.851 348.823 215.828 349.645 217.113C353.173 221.956 356.887 226.707 360.277 231.665C361.377 233.537 362.993 235.052 364.932 236.03C366.87 237.007 369.049 237.406 371.209 237.177C377.343 236.716 383.478 236.624 389.659 236.324C390.788 236.263 391.885 235.926 392.854 235.343C393.823 234.76 394.634 233.949 395.217 232.98C397.408 229.751 399.46 226.43 401.605 223.155C403.45 220.341 405.272 217.528 407.233 214.806C408.083 213.411 409.394 212.355 410.938 211.821C412.483 211.286 414.165 211.306 415.697 211.877C424.207 214.806 432.694 217.828 441.066 221.102C442.663 221.722 443.996 222.877 444.837 224.37C445.679 225.863 445.976 227.602 445.678 229.29C445.24 234.018 444.156 238.653 443.372 243.358C443.003 245.664 442.68 247.763 442.495 250C442.327 251.431 442.496 252.881 442.988 254.234C443.481 255.588 444.284 256.808 445.332 257.795C449.806 262.016 454.35 266.167 458.662 270.572C459.91 271.902 461.497 272.867 463.253 273.363C465.008 273.859 466.866 273.867 468.625 273.386C474.691 272.071 480.733 270.595 486.799 269.28C488.794 268.608 490.973 268.737 492.875 269.641C494.777 270.545 496.253 272.152 496.993 274.124C500.452 281.365 503.788 288.669 507.002 296.033C509.308 301.384 508.501 304.497 503.865 308.141C500.752 310.632 497.385 312.754 494.179 315.06C491.873 316.767 489.566 318.542 487.468 320.411C486.544 321.173 485.808 322.137 485.317 323.228C484.825 324.32 484.59 325.51 484.631 326.707C484.792 333.072 484.885 339.437 485.185 345.78C485.226 347.506 485.716 349.191 486.606 350.671C487.495 352.151 488.754 353.374 490.258 354.221C493.741 356.319 497.177 358.303 500.729 360.424C502.886 361.711 504.972 363.112 506.979 364.622C508.432 365.578 509.507 367.01 510.021 368.672C510.534 370.334 510.453 372.122 509.792 373.732C507.002 381.411 504.119 389.045 501.236 396.794C500.718 397.94 500.085 399.029 499.345 400.046C498.658 401.281 497.6 402.268 496.321 402.868C495.042 403.468 493.607 403.651 492.219 403.39L475.683 400.484C475.268 400.484 474.852 400.484 474.437 400.277C472.13 399.661 469.69 399.755 467.436 400.544C465.182 401.334 463.218 402.784 461.799 404.705C458.685 408.395 455.157 411.624 451.813 415.198C450.261 416.726 449.156 418.648 448.615 420.757C448.075 422.866 448.12 425.082 448.745 427.168C450.106 432.518 451.421 437.892 452.528 443.312C453.635 448.732 452.528 451.499 447.339 454.013C439.843 457.611 432.256 460.932 424.622 464.23C422.927 465.159 420.941 465.404 419.071 464.915C417.201 464.427 415.589 463.24 414.566 461.601C411.614 457.887 408.916 453.967 406.149 450.069C400.221 441.744 398.745 441.006 388.529 441.513C384.539 441.72 380.572 441.974 376.605 442.205C374.706 442.221 372.844 442.731 371.202 443.685C369.56 444.64 368.195 446.005 367.242 447.648C364.797 451.661 362.491 455.743 359.954 459.663C358.6 461.703 357.055 463.611 355.341 465.36C354.596 466.258 353.586 466.899 352.455 467.189C351.324 467.478 350.131 467.403 349.045 466.974C340.996 463.999 332.901 461.024 324.922 457.98C323.84 457.496 322.812 456.901 321.854 456.204C320.616 455.525 319.622 454.474 319.013 453.199C318.405 451.924 318.213 450.491 318.464 449.101C319.34 443.635 320.263 438.192 321.116 432.749C321.37 431.089 321.508 429.428 321.601 427.745C321.754 426.385 321.586 425.009 321.109 423.727C320.632 422.445 319.861 421.293 318.856 420.364C314.474 416.351 310.138 412.292 305.803 408.21C304.572 407.016 303.044 406.172 301.377 405.766C299.711 405.361 297.966 405.408 296.324 405.904C290.973 407.242 285.577 408.418 280.18 409.64L279.557 409.802C272.523 411.07 270.332 410.148 267.196 403.69C263.805 396.494 260.715 389.161 257.74 381.78C255.895 377.168 256.702 374.723 260.646 371.725C264.59 368.727 269.294 365.314 273.815 362.385C276.013 361.135 277.795 359.266 278.939 357.01C280.084 354.755 280.539 352.213 280.249 349.7C279.857 343.981 279.719 338.169 279.419 332.518C279.41 331.322 279.098 330.147 278.514 329.102C277.929 328.058 277.09 327.179 276.075 326.545C271.324 323.501 266.504 320.503 261.753 317.435C258.662 315.406 255.503 313.399 254.234 309.594L254.281 307.495ZM436.476 339.46C436.492 332.281 435.084 325.17 432.334 318.539C429.584 311.907 425.546 305.886 420.455 300.825C415.363 295.764 409.319 291.762 402.671 289.051C396.023 286.34 388.904 284.974 381.725 285.032C356.633 284.917 328.174 306.919 328.197 339.53C328.293 353.799 333.991 367.46 344.064 377.568C354.138 387.675 367.779 393.421 382.048 393.566C416.965 393.704 437.929 363.584 436.43 339.46H436.476Z" fill="white"/>
+<path d="M351.075 468.542C350.246 468.544 349.424 468.387 348.653 468.081L342.08 465.636C336.222 463.469 330.387 461.301 324.553 459.087C323.533 458.646 322.56 458.105 321.647 457.472L321.232 457.195C319.815 456.385 318.683 455.157 317.989 453.68C317.296 452.202 317.075 450.547 317.357 448.939C317.726 446.633 318.118 444.119 318.533 441.697C319.017 438.653 319.525 435.632 320.009 432.472C320.217 431.042 320.378 429.497 320.493 427.583C320.639 426.401 320.507 425.202 320.106 424.081C319.706 422.959 319.049 421.947 318.187 421.125C314.382 417.666 310.646 414.207 306.886 410.609L305.134 408.971C304.05 407.896 302.693 407.137 301.21 406.775C299.727 406.413 298.173 406.463 296.716 406.919C292.957 407.841 289.174 408.695 285.415 409.548L280.341 410.701L279.903 410.816C272.2 412.223 269.525 410.816 266.296 404.059C262.56 396.148 259.262 388.169 256.817 382.103C254.788 377.122 255.664 374.031 260.092 370.572C265.074 366.79 269.317 363.815 273.33 361.185C275.355 360.043 276.997 358.329 278.052 356.257C279.106 354.185 279.526 351.848 279.257 349.539C279.004 345.987 278.865 342.435 278.704 338.884C278.704 336.716 278.519 334.525 278.404 332.357C278.407 331.341 278.15 330.342 277.657 329.454C277.165 328.566 276.453 327.818 275.59 327.283L269.548 323.455C266.78 321.702 264.013 319.949 261.268 318.173C257.97 316.029 254.649 313.884 253.289 309.732C253.267 309.61 253.267 309.485 253.289 309.363V307.265C253.264 307.143 253.264 307.017 253.289 306.896L255.041 301.753C256.402 297.717 257.763 293.704 259.17 289.691C260.277 286.601 261.476 283.625 262.652 280.858C263.395 278.801 264.816 277.059 266.682 275.919C268.548 274.779 270.746 274.308 272.915 274.585C276.005 274.931 279.119 275.484 282.14 276.015C283.708 276.291 285.277 276.591 286.753 276.822L288.598 277.145C290.377 277.547 292.193 277.764 294.017 277.791C295.575 277.817 297.102 277.349 298.376 276.453C304.027 271.056 309.331 265.521 313.759 260.793C314.488 259.938 314.988 258.912 315.214 257.811C315.44 256.71 315.384 255.57 315.051 254.497C314.52 252.006 313.967 249.539 313.413 247.071C312.721 243.957 312.006 240.844 311.361 237.707C310.827 235.442 310.617 233.113 310.738 230.789C310.821 229.801 311.103 228.841 311.567 227.965C312.031 227.089 312.666 226.316 313.436 225.692C322.074 220.036 331.523 215.727 341.458 212.915C343.141 212.367 344.959 212.391 346.627 212.983C348.296 213.576 349.722 214.703 350.683 216.19C351.928 217.92 353.196 219.603 354.488 221.31C356.794 224.377 359.101 227.56 361.407 230.789C362.389 232.491 363.845 233.87 365.598 234.759C367.351 235.648 369.324 236.007 371.278 235.793C375.267 235.493 379.327 235.355 383.247 235.194L389.728 234.94C390.667 234.879 391.577 234.592 392.381 234.102C393.184 233.612 393.857 232.934 394.34 232.126C395.632 230.212 396.877 228.252 398.123 226.314C398.976 224.977 399.852 223.616 400.729 222.302L401.651 220.872C403.173 218.565 404.719 216.259 406.264 213.953C407.267 212.363 408.784 211.164 410.563 210.556C412.342 209.947 414.276 209.966 416.042 210.609C426.282 214.137 434.124 216.974 441.411 219.834C443.241 220.549 444.767 221.873 445.734 223.583C446.7 225.293 447.047 227.284 446.716 229.22C446.416 232.38 445.839 235.563 445.263 238.607C444.986 240.198 444.686 241.767 444.433 243.219C444.11 245.295 443.764 247.532 443.579 249.792C443.405 251.061 443.541 252.353 443.975 253.558C444.408 254.763 445.127 255.845 446.07 256.711L449.207 259.663C452.597 262.846 456.125 266.144 459.423 269.511C460.525 270.712 461.938 271.583 463.506 272.027C465.074 272.471 466.735 272.47 468.303 272.025C471.255 271.402 474.207 270.71 477.136 270.041C480.065 269.373 483.362 268.588 486.499 267.92C488.755 267.169 491.214 267.319 493.362 268.337C495.511 269.355 497.183 271.164 498.03 273.386C501.49 280.65 504.949 288.03 508.04 295.341C510.577 301.153 509.654 304.82 504.58 308.833C502.735 310.286 500.775 311.67 498.861 312.984C497.523 313.93 496.185 314.852 494.871 315.844C492.426 317.643 490.258 319.373 488.229 321.148C487.429 321.795 486.791 322.62 486.366 323.557C485.942 324.494 485.743 325.517 485.784 326.545V330.489C485.899 335.447 485.992 340.567 486.245 345.595C486.28 347.141 486.726 348.65 487.536 349.967C488.347 351.285 489.493 352.362 490.858 353.09C492.334 353.99 493.833 354.866 495.332 355.743C497.339 356.919 499.345 358.049 501.328 359.294C503.528 360.605 505.653 362.037 507.694 363.584C509.331 364.694 510.54 366.331 511.119 368.223C511.698 370.115 511.612 372.148 510.876 373.985C508.224 381.273 505.41 388.768 502.297 396.933C501.828 398.081 501.216 399.166 500.475 400.161L500.429 400.484C499.611 401.899 498.378 403.027 496.897 403.716C495.415 404.405 493.758 404.621 492.149 404.336L481.356 402.537L475.175 401.499C474.88 401.477 474.587 401.431 474.299 401.361C472.192 400.785 469.96 400.866 467.9 401.591C465.84 402.316 464.05 403.652 462.768 405.42C460.577 408.003 458.155 410.47 455.849 412.846L452.804 415.959C451.388 417.345 450.381 419.094 449.893 421.014C449.405 422.934 449.455 424.951 450.037 426.845C451.328 431.965 452.689 437.454 453.819 442.989C455.088 449.308 453.681 452.214 447.984 454.958C441.065 458.233 433.731 461.6 425.244 465.198C423.314 466.218 421.072 466.478 418.959 465.927C416.846 465.377 415.016 464.055 413.828 462.223C411.384 459.156 409.077 455.904 406.91 452.767L405.41 450.669C399.691 442.62 398.492 442.089 388.805 442.597L382.025 442.989L376.859 443.266C375.146 443.28 373.467 443.74 371.986 444.602C370.506 445.463 369.276 446.696 368.418 448.178L366.112 452.214C364.543 454.866 362.929 457.588 361.222 460.217C359.883 462.325 358.338 464.295 356.61 466.098C355.924 466.888 355.072 467.516 354.116 467.939C353.159 468.361 352.12 468.568 351.075 468.542ZM299.299 404.382C300.671 404.372 302.032 404.634 303.302 405.153C304.573 405.671 305.728 406.436 306.702 407.403L308.432 409.041C312.191 412.569 315.927 415.959 319.732 419.534C320.866 420.577 321.738 421.872 322.279 423.314C322.82 424.756 323.014 426.306 322.846 427.837C322.78 429.552 322.61 431.262 322.339 432.957C321.877 436.001 321.37 439.022 320.862 442.066L319.686 449.285C319.476 450.457 319.641 451.666 320.159 452.739C320.677 453.812 321.52 454.694 322.569 455.258L323.007 455.535C323.76 456.086 324.572 456.55 325.429 456.919C331.264 459.225 337.099 461.301 342.957 463.492L349.529 465.936C350.409 466.284 351.378 466.34 352.291 466.095C353.205 465.85 354.016 465.317 354.603 464.576C356.26 462.885 357.75 461.039 359.054 459.064C360.738 456.481 362.329 453.759 363.898 451.13C364.705 449.792 365.489 448.432 366.204 447.094C367.248 445.284 368.746 443.778 370.55 442.722C372.353 441.667 374.4 441.099 376.49 441.075L381.633 440.775L388.413 440.383C398.976 439.852 400.89 440.775 407.048 449.423L408.547 451.522C410.738 454.636 413.021 457.864 415.466 460.886C416.335 462.327 417.731 463.373 419.358 463.804C420.985 464.234 422.715 464.015 424.184 463.192C432.624 459.594 440.028 456.273 446.831 452.998C451.444 450.692 452.458 448.801 451.444 443.565C450.429 438.33 448.976 432.588 447.684 427.421C447.003 425.144 446.954 422.723 447.543 420.419C448.132 418.116 449.337 416.016 451.029 414.345L454.096 411.208C456.402 408.902 458.824 406.457 461.015 403.921C462.567 401.817 464.719 400.232 467.189 399.376C469.66 398.519 472.331 398.431 474.852 399.124H475.521H476.029L481.771 400.092L492.565 401.891C493.735 402.107 494.943 401.947 496.016 401.433C497.09 400.919 497.972 400.078 498.538 399.031L498.722 398.755C499.355 397.903 499.889 396.982 500.314 396.01C503.404 387.846 506.218 380.35 508.87 373.086C509.446 371.707 509.517 370.168 509.07 368.742C508.623 367.316 507.686 366.093 506.425 365.291C504.455 363.8 502.407 362.415 500.291 361.139C498.307 359.94 496.324 358.833 494.317 357.611C492.818 356.734 491.319 355.858 489.843 354.958C488.172 354.013 486.774 352.652 485.784 351.008C484.794 349.363 484.246 347.491 484.193 345.572C483.962 340.521 483.847 335.378 483.732 330.42V326.476C483.689 325.11 483.958 323.753 484.518 322.506C485.077 321.26 485.912 320.157 486.96 319.28C489.036 317.481 491.273 315.706 493.741 313.861L497.8 310.978C499.668 309.686 501.605 308.326 503.404 306.896C507.648 303.529 508.316 301.015 506.195 296.148C503.012 288.861 499.668 281.504 496.208 274.262C495.568 272.537 494.278 271.132 492.614 270.347C490.95 269.562 489.044 269.461 487.306 270.064C484.193 270.733 481.079 271.448 478.081 272.163L469.225 274.17C467.276 274.703 465.219 274.692 463.276 274.139C461.332 273.586 459.577 272.512 458.201 271.033C454.903 267.689 451.421 264.391 448.03 261.231L444.894 258.279C443.716 257.178 442.814 255.815 442.261 254.301C441.708 252.786 441.52 251.163 441.711 249.562C441.896 247.255 442.242 244.949 442.565 242.827C442.841 241.213 443.118 239.622 443.418 238.03C443.971 235.032 444.548 231.896 444.848 228.805C445.069 227.388 444.81 225.937 444.112 224.683C443.414 223.43 442.318 222.445 440.996 221.886C433.662 219.073 425.844 216.259 415.627 212.661C414.329 212.171 412.9 212.152 411.59 212.608C410.279 213.063 409.17 213.963 408.455 215.152C406.863 217.458 405.318 219.765 403.842 222.071L402.897 223.501C402.02 224.838 401.167 226.176 400.314 227.514C399.045 229.474 397.8 231.434 396.508 233.349C395.824 234.465 394.879 235.399 393.754 236.07C392.629 236.74 391.358 237.128 390.051 237.2L383.547 237.454C379.649 237.615 375.613 237.754 371.67 238.053C369.308 238.298 366.926 237.861 364.805 236.794C362.683 235.728 360.912 234.076 359.7 232.034C357.532 228.851 355.088 225.692 352.781 222.648C351.49 220.941 350.221 219.234 348.953 217.505C348.258 216.426 347.221 215.612 346.008 215.193C344.795 214.775 343.477 214.777 342.265 215.198C332.556 217.935 323.324 222.143 314.889 227.675C313.932 228.558 313.339 229.768 313.229 231.065C313.135 233.182 313.337 235.301 313.828 237.362C314.474 240.475 315.166 243.588 315.881 246.587C316.434 249.077 316.988 251.545 317.518 254.036C317.927 255.473 317.97 256.989 317.644 258.447C317.317 259.905 316.632 261.259 315.65 262.385C311.199 267.136 305.872 272.717 300.175 278.136C298.491 279.452 296.408 280.152 294.271 280.12C292.294 280.086 290.325 279.862 288.39 279.451L286.591 279.128L281.84 278.321C278.888 277.791 275.821 277.237 272.8 276.891C271.121 276.658 269.414 277.019 267.974 277.912C266.533 278.805 265.45 280.173 264.912 281.78C263.759 284.502 262.606 287.454 261.476 290.498C260.069 294.488 258.708 298.501 257.348 302.514L255.664 307.472V309.202C256.817 312.477 259.631 314.276 262.583 316.121C265.535 317.966 268.164 319.719 270.932 321.448L276.974 325.3C278.143 326.041 279.109 327.062 279.785 328.27C280.462 329.478 280.827 330.834 280.849 332.219C280.964 334.386 281.056 336.577 281.148 338.768C281.287 342.297 281.448 345.849 281.679 349.377C282.007 352.108 281.526 354.875 280.296 357.335C279.067 359.794 277.141 361.839 274.76 363.215C270.77 365.798 266.596 368.75 261.66 372.44C258.109 375.138 257.509 377.052 259.124 381.158C261.568 387.177 264.866 394.995 268.579 402.998C271.347 408.856 273.007 409.686 279.672 408.441L285.069 407.219C288.851 406.365 292.611 405.512 296.347 404.589C297.32 404.412 298.31 404.343 299.299 404.382ZM382.14 394.811H382.025C367.401 394.725 353.405 388.856 343.095 378.485C332.784 368.114 326.997 354.084 326.997 339.46C326.991 332.192 328.434 324.995 331.241 318.291C334.049 311.587 338.165 305.51 343.349 300.415C353.435 290.164 367.096 284.214 381.471 283.81H381.679C389.012 283.737 396.286 285.121 403.079 287.883C409.872 290.644 416.049 294.729 421.25 299.898C426.451 305.067 430.574 311.218 433.377 317.994C436.181 324.77 437.611 332.035 437.583 339.368C438.39 352.445 432.855 366.651 422.754 377.375C417.554 382.928 411.262 387.343 404.272 390.344C397.282 393.345 389.747 394.866 382.14 394.811ZM381.471 286.185C367.701 286.586 354.619 292.297 344.963 302.122C337.527 309.485 332.444 318.89 330.36 329.145C328.276 339.4 329.284 350.043 333.256 359.725C337.229 369.406 343.987 377.69 352.673 383.526C361.359 389.362 371.583 392.487 382.048 392.505C389.332 392.565 396.551 391.119 403.25 388.258C409.949 385.396 415.985 381.181 420.978 375.876C430.664 365.59 435.969 352.006 435.184 339.529C435.215 332.497 433.848 325.529 431.161 319.031C428.475 312.532 424.523 306.632 419.535 301.675C414.548 296.717 408.624 292.801 402.109 290.154C395.595 287.507 388.618 286.181 381.587 286.255L381.471 286.185Z" fill="#242424"/>
+<path d="M427.021 147.74C427.989 144.88 428.935 142.02 429.949 139.16C430.48 137.684 431.08 136.232 431.679 134.779C432.002 133.848 432.639 133.06 433.482 132.551C434.324 132.041 435.318 131.842 436.292 131.988C438.598 132.242 440.904 132.726 443.211 133.095C444.439 133.369 445.689 133.531 446.947 133.579C447.871 133.613 448.778 133.319 449.507 132.749C452.159 130.235 454.719 127.583 457.21 124.908C457.638 124.412 457.937 123.817 458.078 123.176C458.219 122.536 458.198 121.871 458.017 121.241C457.417 118.45 456.748 115.66 456.172 112.869C455.904 111.783 455.795 110.665 455.849 109.548C455.923 108.722 456.321 107.959 456.956 107.426C461.225 104.636 465.89 102.506 470.794 101.107C471.52 100.879 472.301 100.895 473.018 101.153C473.734 101.412 474.346 101.898 474.76 102.537C476.513 104.843 478.381 107.334 480.065 109.802C480.611 110.742 481.418 111.503 482.388 111.994C483.358 112.486 484.45 112.685 485.531 112.569C488.598 112.339 491.665 112.292 494.756 112.131C495.319 112.106 495.867 111.941 496.35 111.651C496.833 111.361 497.236 110.955 497.523 110.47C498.63 108.856 499.668 107.196 500.729 105.558C501.79 103.921 502.551 102.744 503.543 101.384C503.965 100.686 504.618 100.158 505.389 99.8922C506.161 99.6266 507.001 99.6403 507.763 99.9308C512.037 101.376 516.266 102.914 520.448 104.543C521.245 104.859 521.909 105.439 522.329 106.187C522.749 106.934 522.899 107.803 522.754 108.648C522.523 110.955 521.993 113.261 521.601 115.567C521.439 116.651 521.278 117.874 521.186 118.888C521.1 119.603 521.182 120.327 521.427 121.004C521.671 121.681 522.07 122.291 522.592 122.786C524.899 124.885 527.09 126.96 529.258 129.151C529.88 129.819 530.672 130.306 531.55 130.558C532.428 130.809 533.357 130.818 534.239 130.581C537.26 129.912 540.282 129.174 543.326 128.529C544.306 128.181 545.382 128.227 546.328 128.657C547.275 129.087 548.017 129.868 548.4 130.835C550.129 134.433 551.813 138.1 553.404 141.767C553.716 142.263 553.923 142.818 554.012 143.398C554.102 143.977 554.072 144.569 553.926 145.137C553.779 145.705 553.518 146.236 553.159 146.7C552.799 147.163 552.349 147.548 551.836 147.832C550.291 149.077 548.607 150.138 547.016 151.338C545.863 152.191 544.71 153.067 543.649 154.013C543.185 154.389 542.815 154.868 542.571 155.413C542.327 155.958 542.214 156.553 542.242 157.149C542.242 160.332 542.357 163.515 542.496 166.674C542.521 167.539 542.77 168.382 543.219 169.122C543.668 169.862 544.3 170.473 545.056 170.895C546.785 171.956 548.538 172.947 550.268 174.008C551.353 174.646 552.401 175.347 553.404 176.107C554.146 176.586 554.694 177.312 554.951 178.156C555.209 179 555.159 179.908 554.811 180.72C553.397 184.548 551.967 188.392 550.521 192.251C550.278 192.835 549.96 193.385 549.576 193.888C549.235 194.506 548.708 195 548.071 195.302C547.434 195.604 546.718 195.699 546.024 195.572L537.768 194.188H537.145C535.982 193.884 534.754 193.941 533.625 194.353C532.496 194.765 531.519 195.512 530.826 196.494C529.258 198.316 527.505 199.977 525.844 201.73C525.063 202.488 524.506 203.446 524.233 204.499C523.961 205.553 523.983 206.661 524.299 207.703C524.968 210.378 525.637 213.053 526.19 215.775C526.407 216.293 526.51 216.851 526.494 217.412C526.477 217.974 526.341 218.525 526.094 219.029C525.848 219.533 525.496 219.979 525.063 220.337C524.63 220.694 524.126 220.955 523.584 221.102C519.848 222.901 516.066 224.608 512.237 226.222C511.39 226.687 510.397 226.81 509.462 226.565C508.527 226.321 507.721 225.728 507.21 224.908C505.734 223.04 504.396 221.079 503.012 219.142C500.037 214.991 499.299 214.529 494.202 214.875L488.229 215.221C487.292 215.243 486.376 215.505 485.568 215.981C484.761 216.458 484.089 217.133 483.616 217.943C482.417 219.949 481.31 221.979 479.996 223.962C479.318 224.978 478.546 225.928 477.689 226.799C477.318 227.246 476.814 227.564 476.251 227.709C475.688 227.854 475.094 227.818 474.553 227.606C470.517 226.107 466.504 224.631 462.491 223.109C461.947 222.871 461.429 222.577 460.946 222.232C460.329 221.885 459.836 221.354 459.534 220.713C459.232 220.073 459.137 219.355 459.262 218.658C459.7 215.936 460.162 213.215 460.577 210.493C460.707 209.669 460.792 208.837 460.83 208.003C460.91 207.322 460.825 206.632 460.585 205.99C460.344 205.349 459.954 204.774 459.447 204.313C457.14 202.306 455.111 200.277 452.943 198.247C452.33 197.643 451.565 197.215 450.729 197.008C449.893 196.801 449.017 196.823 448.192 197.071C445.517 197.74 442.818 198.316 440.143 198.939H439.843C436.315 199.585 435.231 199.124 433.663 195.895C431.956 192.297 430.411 188.63 428.912 184.94C428.669 184.516 428.514 184.048 428.456 183.564C428.398 183.079 428.438 182.588 428.574 182.119C428.709 181.65 428.938 181.213 429.245 180.834C429.553 180.455 429.933 180.141 430.365 179.912C432.509 178.298 434.7 176.707 436.961 175.3C438.059 174.673 438.95 173.738 439.523 172.612C440.097 171.485 440.329 170.214 440.189 168.958C439.982 166.098 439.913 163.238 439.751 160.378C439.752 159.779 439.6 159.189 439.309 158.664C439.019 158.139 438.599 157.697 438.091 157.38L430.941 152.767C429.262 151.949 427.93 150.559 427.182 148.847L427.021 147.74ZM518.049 163.722C518.058 160.133 517.355 156.578 515.981 153.263C514.606 149.948 512.587 146.938 510.04 144.409C507.494 141.88 504.471 139.881 501.147 138.529C497.822 137.177 494.262 136.498 490.674 136.531C483.574 136.767 476.837 139.724 471.857 144.79C466.877 149.856 464.035 156.643 463.921 163.745C463.957 170.889 466.803 177.732 471.844 182.794C476.884 187.856 483.715 190.731 490.858 190.798C494.432 190.844 497.979 190.176 501.291 188.833C504.604 187.49 507.614 185.5 510.147 182.978C512.68 180.456 514.683 177.454 516.04 174.147C517.397 170.84 518.08 167.296 518.049 163.722Z" fill="white"/>
+<path d="M475.406 228.828C474.916 228.824 474.432 228.73 473.976 228.552L470.563 227.283L461.914 224.054C461.371 223.814 460.854 223.52 460.369 223.178L460.161 223.04C459.346 222.605 458.685 221.928 458.272 221.101C457.859 220.275 457.713 219.34 457.855 218.427L458.432 214.829C458.685 213.307 458.939 211.785 459.17 210.217C459.17 209.41 459.354 208.625 459.4 207.91C459.472 207.403 459.419 206.886 459.246 206.404C459.073 205.922 458.786 205.489 458.409 205.143L452.574 199.723L451.882 199.054C451.404 198.588 450.808 198.26 450.158 198.106C449.508 197.951 448.829 197.976 448.192 198.178L442.449 199.516L440.143 200.046H439.774C435.669 200.807 434.077 200.046 432.348 196.356C430.895 193.243 429.419 189.852 427.597 185.355C427.006 184.263 426.865 182.984 427.206 181.79C427.546 180.596 428.341 179.582 429.419 178.967C431.91 177.076 434.031 175.577 436.084 174.354C437.013 173.841 437.766 173.062 438.247 172.116C438.728 171.17 438.914 170.102 438.782 169.05C438.644 167.274 438.575 165.498 438.505 163.699C438.505 162.615 438.505 161.531 438.344 160.447C438.346 160.034 438.244 159.627 438.046 159.264C437.849 158.901 437.562 158.594 437.214 158.372L434.216 156.481L430.134 153.713C428.224 152.725 426.728 151.09 425.913 149.101C425.902 148.985 425.902 148.87 425.913 148.755V147.694C425.902 147.571 425.902 147.447 425.913 147.325L426.767 144.811C427.458 142.781 428.15 140.752 428.865 138.722C429.396 137.223 429.995 135.747 430.618 134.271C431.029 133.124 431.821 132.153 432.862 131.519C433.903 130.885 435.13 130.627 436.338 130.789C437.906 130.973 439.451 131.25 440.95 131.504C441.734 131.657 442.503 131.796 443.256 131.919L444.179 132.08C445.035 132.267 445.908 132.368 446.785 132.38C447.423 132.404 448.052 132.226 448.584 131.873C451.398 129.197 454.027 126.43 456.241 124.077C456.535 123.715 456.736 123.285 456.824 122.826C456.913 122.368 456.887 121.894 456.748 121.448L455.918 117.735C455.572 116.167 455.226 114.622 454.903 113.123C454.605 111.925 454.496 110.687 454.58 109.456C454.624 108.874 454.79 108.308 455.068 107.795C455.347 107.282 455.731 106.834 456.195 106.481C460.558 103.618 465.333 101.44 470.355 100.023C471.306 99.7339 472.325 99.7595 473.26 100.096C474.195 100.433 474.996 101.062 475.544 101.891L477.435 104.428C478.612 105.996 479.742 107.565 480.895 109.179C481.316 109.958 481.96 110.594 482.745 111.004C483.53 111.415 484.419 111.583 485.3 111.485C487.329 111.324 489.336 111.255 491.365 111.185H494.548C494.933 111.161 495.305 111.041 495.632 110.835C495.958 110.63 496.228 110.346 496.416 110.009C497.062 109.064 497.661 108.095 498.284 107.149L499.599 105.12L500.106 104.336C500.867 103.183 501.628 102.029 502.412 100.899C502.977 99.997 503.838 99.3179 504.846 98.9774C505.855 98.6369 506.951 98.656 507.947 99.0313C513.067 100.784 516.988 102.191 520.678 103.644C521.709 104.046 522.572 104.79 523.121 105.751C523.671 106.712 523.875 107.832 523.699 108.925C523.561 110.517 523.261 112.131 522.984 113.653C522.823 114.437 522.684 115.221 522.569 115.959C522.373 117.027 522.234 118.105 522.154 119.188C522.077 119.727 522.131 120.277 522.312 120.791C522.493 121.305 522.794 121.768 523.192 122.14L524.806 123.662C526.513 125.277 528.243 126.868 529.903 128.552C530.384 129.082 531.004 129.467 531.693 129.663C532.382 129.859 533.113 129.857 533.801 129.659L538.206 128.667C539.774 128.298 541.319 127.929 542.818 127.606C544.071 127.217 545.424 127.314 546.608 127.878C547.792 128.442 548.72 129.432 549.207 130.65C550.936 134.294 552.62 137.984 554.211 141.628C554.577 142.241 554.817 142.919 554.918 143.625C555.02 144.331 554.981 145.05 554.803 145.74C554.625 146.431 554.312 147.079 553.881 147.648C553.451 148.217 552.913 148.695 552.297 149.054C551.374 149.792 550.406 150.484 549.414 151.153L547.431 152.583C546.231 153.459 545.124 154.336 544.156 155.189C543.818 155.467 543.55 155.821 543.373 156.221C543.197 156.622 543.117 157.058 543.141 157.495V159.479C543.141 161.993 543.141 164.483 543.349 166.997C543.366 167.674 543.56 168.335 543.912 168.914C544.264 169.493 544.762 169.969 545.355 170.295L547.5 171.564L550.567 173.386C551.688 174.052 552.773 174.775 553.819 175.553C554.738 176.182 555.414 177.105 555.737 178.17C556.06 179.235 556.01 180.379 555.595 181.411C554.18 185.255 552.751 189.099 551.305 192.943C551.053 193.549 550.728 194.122 550.337 194.649C549.873 195.482 549.163 196.151 548.304 196.564C547.445 196.977 546.479 197.114 545.54 196.956L539.174 195.895L537.26 195.572H536.568C535.622 195.311 534.618 195.348 533.694 195.678C532.769 196.008 531.969 196.616 531.402 197.417C530.295 198.731 529.096 199.977 527.874 201.153L526.374 202.698C525.727 203.318 525.266 204.106 525.042 204.974C524.818 205.842 524.84 206.755 525.106 207.611C525.775 210.194 526.444 212.961 527.02 215.729C527.258 216.374 527.364 217.061 527.329 217.749C527.294 218.436 527.121 219.109 526.819 219.728C526.518 220.346 526.094 220.897 525.573 221.348C525.053 221.798 524.447 222.138 523.791 222.348C520.401 223.962 516.688 225.646 512.398 227.468C511.318 228.034 510.065 228.177 508.884 227.87C507.703 227.563 506.679 226.828 506.01 225.807C504.788 224.262 503.704 222.624 502.505 221.056L501.767 219.995C499.022 216.144 498.653 215.982 493.948 216.213L490.604 216.398L487.998 216.559C487.237 216.563 486.49 216.765 485.831 217.145C485.172 217.525 484.623 218.07 484.239 218.727C483.824 219.396 483.432 220.088 483.04 220.756C482.232 222.094 481.425 223.455 480.595 224.769C479.874 225.849 479.056 226.86 478.15 227.791C477.397 228.467 476.418 228.837 475.406 228.828ZM449.483 195.595C451.01 195.586 452.478 196.183 453.565 197.255L454.257 197.924L460.069 203.321C460.702 203.899 461.191 204.617 461.496 205.418C461.8 206.219 461.912 207.081 461.822 207.934C461.783 208.814 461.698 209.691 461.568 210.563C461.338 212.085 461.084 213.607 460.83 215.175L460.231 218.773C460.175 219.233 460.26 219.7 460.474 220.111C460.688 220.523 461.021 220.86 461.43 221.079L461.637 221.218C461.981 221.467 462.353 221.676 462.744 221.84L471.37 225.069L474.783 226.338C475.116 226.475 475.485 226.498 475.831 226.402C476.178 226.306 476.483 226.096 476.697 225.807C477.503 224.986 478.229 224.09 478.865 223.132C479.695 221.863 480.48 220.526 481.172 219.211C481.564 218.519 481.979 217.85 482.394 217.159C482.966 216.176 483.783 215.358 484.765 214.784C485.747 214.21 486.861 213.9 487.998 213.884L490.581 213.722L493.948 213.538C499.46 213.261 500.567 213.791 503.773 218.289L504.511 219.35C505.618 220.895 506.817 222.509 507.924 223.962C508.101 224.27 508.337 224.54 508.619 224.756C508.901 224.972 509.223 225.13 509.566 225.22C509.91 225.31 510.268 225.331 510.619 225.281C510.971 225.232 511.309 225.112 511.614 224.931C515.858 223.109 519.548 221.448 522.915 219.834C525.014 218.819 525.36 218.15 524.875 215.775C524.391 213.399 523.653 210.309 523.007 207.772C522.638 206.538 522.613 205.226 522.934 203.979C523.255 202.731 523.91 201.595 524.829 200.692L526.351 199.124C527.505 197.97 528.658 196.817 529.765 195.503C530.619 194.36 531.798 193.502 533.148 193.042C534.497 192.581 535.955 192.538 537.329 192.92H537.606H537.883L539.774 193.219L546.139 194.28C546.615 194.363 547.105 194.293 547.539 194.082C547.974 193.871 548.331 193.529 548.561 193.104C548.884 192.677 549.155 192.212 549.368 191.72C550.821 187.892 552.251 184.087 553.658 180.189C553.905 179.613 553.936 178.967 553.745 178.37C553.555 177.772 553.155 177.264 552.62 176.937C551.649 176.208 550.641 175.531 549.599 174.908L546.577 173.109L544.386 171.817C543.468 171.301 542.699 170.556 542.154 169.655C541.608 168.754 541.305 167.727 541.273 166.674C541.158 164.137 541.112 161.624 541.065 159.087V157.103C541.035 156.337 541.181 155.575 541.493 154.875C541.805 154.175 542.274 153.556 542.864 153.067C543.925 152.145 545.055 151.245 546.301 150.323L548.33 148.87C549.276 148.224 550.221 147.578 551.098 146.863C551.496 146.656 551.847 146.368 552.127 146.017C552.408 145.666 552.612 145.261 552.727 144.827C552.842 144.393 552.865 143.94 552.795 143.496C552.725 143.052 552.563 142.628 552.32 142.251C550.752 138.63 549.068 134.963 547.338 131.342C547.209 130.972 547.008 130.632 546.746 130.34C546.484 130.049 546.167 129.813 545.813 129.645C545.459 129.478 545.075 129.383 544.683 129.365C544.292 129.348 543.901 129.408 543.533 129.543L538.921 130.604L534.47 131.596C533.4 131.884 532.273 131.876 531.208 131.571C530.143 131.266 529.182 130.677 528.427 129.866C526.813 128.229 525.106 126.637 523.399 125.023L521.808 123.524C521.154 122.917 520.652 122.164 520.343 121.326C520.035 120.489 519.928 119.59 520.032 118.704C520.032 117.551 520.286 116.398 520.47 115.291L520.886 112.984C521.162 111.508 521.462 109.963 521.6 108.372C521.71 107.781 521.615 107.171 521.329 106.642C521.044 106.113 520.586 105.698 520.032 105.466C516.388 104.059 512.491 102.652 507.394 100.853C506.864 100.63 506.27 100.613 505.728 100.805C505.187 100.997 504.736 101.384 504.465 101.891C503.681 102.998 502.943 104.197 502.159 105.258L501.651 106.019L500.337 108.049C499.714 109.017 499.091 109.986 498.446 110.955C498.054 111.584 497.516 112.11 496.877 112.487C496.239 112.865 495.519 113.083 494.779 113.123L491.55 113.261C489.566 113.261 487.583 113.399 485.6 113.561C484.321 113.676 483.035 113.432 481.886 112.858C480.737 112.284 479.771 111.401 479.096 110.309C478.012 108.718 476.79 107.172 475.706 105.696C475.06 104.843 474.414 103.99 473.791 103.113C473.516 102.666 473.096 102.326 472.601 102.15C472.106 101.974 471.566 101.972 471.07 102.145C466.27 103.495 461.704 105.571 457.532 108.303C457.222 108.659 457.029 109.101 456.979 109.571C456.94 110.572 457.041 111.573 457.279 112.546C457.578 114.091 457.947 115.636 458.293 117.159C458.639 118.681 458.847 119.649 459.1 120.895C459.32 121.691 459.338 122.53 459.153 123.335C458.968 124.14 458.585 124.887 458.04 125.507C455.733 127.814 453.15 130.696 450.291 133.418C449.337 134.164 448.157 134.562 446.946 134.548C445.915 134.539 444.887 134.423 443.879 134.202L443.003 134.064L440.696 133.648C439.22 133.372 437.721 133.118 436.222 132.957C435.51 132.855 434.785 133.008 434.173 133.387C433.562 133.767 433.104 134.349 432.878 135.032C432.279 136.462 431.702 137.892 431.172 139.345C430.457 141.374 429.788 143.381 429.096 145.41L428.312 147.717V148.362C429.001 149.723 430.119 150.817 431.494 151.476L435.692 154.151L438.69 156.065C439.356 156.476 439.906 157.049 440.289 157.731C440.673 158.413 440.876 159.181 440.881 159.963C440.881 161.07 440.996 162.269 441.042 163.238C441.042 165.014 441.181 166.767 441.296 168.542C441.463 170.003 441.198 171.481 440.534 172.792C439.87 174.104 438.836 175.192 437.56 175.922C435.553 177.214 433.501 178.667 431.056 180.535C429.465 181.734 429.257 182.449 429.972 184.225C431.771 188.676 433.224 192.02 434.585 195.111C435.853 197.786 436.43 198.063 439.52 197.417L440.028 198.478L439.774 197.348L442.08 196.817C443.971 196.402 445.886 195.964 447.777 195.503C448.347 195.46 448.921 195.491 449.483 195.595ZM490.996 191.951C483.631 191.78 476.623 188.743 471.461 183.486C466.3 178.229 463.392 171.166 463.356 163.799C463.32 156.432 466.159 149.341 471.268 144.034C476.378 138.727 483.356 135.621 490.72 135.378C494.459 135.335 498.17 136.037 501.636 137.443C505.102 138.849 508.253 140.93 510.906 143.566C513.559 146.202 515.661 149.34 517.089 152.796C518.518 156.253 519.244 159.959 519.225 163.699C519.324 167.277 518.705 170.838 517.406 174.173C516.107 177.508 514.153 180.55 511.66 183.118C508.999 185.939 505.784 188.179 502.216 189.699C498.648 191.219 494.805 191.986 490.927 191.951H490.996ZM490.65 137.684C483.917 137.88 477.52 140.674 472.8 145.48C470.377 147.865 468.453 150.709 467.139 153.844C465.824 156.98 465.146 160.345 465.143 163.745C465.149 170.593 467.864 177.159 472.695 182.012C477.525 186.864 484.08 189.608 490.927 189.645C494.487 189.674 498.014 188.969 501.288 187.572C504.562 186.175 507.512 184.117 509.954 181.527C512.237 179.185 514.026 176.408 515.214 173.362C516.403 170.315 516.967 167.06 516.873 163.791C516.888 160.352 516.219 156.944 514.905 153.766C513.59 150.588 511.656 147.703 509.216 145.28C506.775 142.856 503.877 140.943 500.689 139.651C497.502 138.359 494.089 137.714 490.65 137.754V137.684Z" fill="#242424"/>
+<path d="M14.797 188.861C21.9806 196.66 31.4518 201.981 41.8496 204.059C49.2033 205.554 56.185 208.5 62.3864 212.725C68.5878 216.951 73.8842 222.37 77.9658 228.667C88.7822 245.457 99.0682 262.569 109.585 279.543L142.588 332.749C151.49 347.14 160.384 361.524 169.271 375.9C176.774 388.061 184.3 400.192 191.85 412.293C194.48 416.365 198.306 419.523 202.802 421.336C207.299 423.148 212.246 423.526 216.965 422.417C221.655 421.467 225.917 419.035 229.122 415.482C232.327 411.928 234.307 407.439 234.769 402.675C235.288 398.58 234.393 394.431 232.232 390.913C226.605 382.403 221.001 373.893 215.258 365.544C201.005 344.65 186.714 323.778 172.385 302.929C161.93 287.692 151.497 272.425 141.089 257.126C132.832 245.088 124.583 233.049 116.342 221.01C112.794 216.269 109.536 211.316 106.587 206.181C100.302 194.233 98.6592 180.383 101.974 167.297C108.893 137.5 86.1531 109.433 54.7416 108.049C54.0541 107.894 53.3361 107.948 52.679 108.202C52.0219 108.457 51.4554 108.901 51.0516 109.479C50.1983 110.886 50.9132 112.062 51.6974 113.261L68.095 138.423C68.7084 139.237 69.1341 140.178 69.3416 141.176C69.5491 142.175 69.5333 143.207 69.2953 144.199C69.0573 145.19 68.6029 146.117 67.9648 146.913C67.3267 147.708 66.5206 148.353 65.6042 148.801L39.1743 164.53C38.365 165.064 37.4575 165.433 36.5045 165.613C35.5515 165.794 34.5721 165.783 33.6234 165.581C32.6746 165.379 31.7755 164.991 30.9785 164.438C30.1814 163.885 29.5022 163.179 28.9806 162.362C26.1208 158.072 23.3302 153.736 20.5166 149.4C17.7337 145.142 14.9507 140.867 12.1678 136.578C11.8869 135.966 11.4346 135.448 10.8656 135.088C10.2967 134.728 9.63548 134.54 8.96213 134.548C8.30452 134.586 7.67534 134.829 7.16259 135.243C6.64983 135.656 6.27914 136.22 6.10236 136.854C-1.80816 156.019 0.936295 173.27 14.797 188.861ZM202.297 406.365C201.529 405.2 201.007 403.889 200.764 402.514C200.52 401.139 200.561 399.729 200.883 398.37C201.205 397.012 201.801 395.733 202.635 394.613C203.469 393.494 204.524 392.556 205.733 391.859C208.205 390.247 211.216 389.681 214.104 390.286C216.993 390.892 219.523 392.619 221.139 395.088C221.907 396.283 222.421 397.623 222.649 399.025C222.878 400.427 222.816 401.861 222.468 403.238C222.12 404.616 221.493 405.907 220.626 407.032C219.758 408.157 218.669 409.092 217.426 409.779C214.941 411.23 211.997 411.686 209.189 411.052C206.381 410.419 203.918 408.744 202.297 406.365Z" fill="white" stroke="#242424" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M83.201 99.9308C89.1822 100.32 95.1795 99.4771 100.822 97.4555C106.465 95.4339 111.633 92.2762 116.006 88.1777C120.38 84.0792 123.866 79.127 126.249 73.6274C128.632 68.1278 129.862 62.1977 129.862 56.2039C129.862 50.2101 128.632 44.28 126.249 38.7804C123.866 33.2808 120.38 28.3286 116.006 24.2301C111.633 20.1316 106.465 16.9739 100.822 14.9523C95.1795 12.9307 89.1822 12.0882 83.201 12.477V56.2962H39.3818C39.4306 67.8857 44.0688 78.984 52.2812 87.1618C60.4936 95.3396 71.6113 99.9309 83.201 99.9308Z" fill="white"/>
+<path d="M83.2011 101.084C71.3019 101.072 59.8936 96.3394 51.4796 87.9254C43.0656 79.5114 38.3333 68.1031 38.321 56.2039C38.321 55.898 38.4425 55.6047 38.6588 55.3885C38.875 55.1722 39.1684 55.0507 39.4742 55.0507H82.048V12.4769C82.048 12.1711 82.1695 11.8778 82.3857 11.6615C82.602 11.4453 82.8953 11.3238 83.2011 11.3238C95.104 11.3238 106.519 16.0522 114.936 24.4689C123.353 32.8855 128.081 44.3009 128.081 56.2039C128.081 68.1068 123.353 79.5222 114.936 87.9389C106.519 96.3555 95.104 101.084 83.2011 101.084ZM40.6273 57.2648C40.8518 65.5794 43.5069 73.6462 48.2647 80.4688C53.0226 87.2913 59.6747 92.5707 67.3995 95.6549C75.1242 98.7391 83.5833 99.4929 91.7317 97.8232C99.8801 96.1536 107.361 92.1336 113.25 86.2599C119.139 80.3861 123.179 72.9159 124.87 64.7719C126.561 56.6279 125.83 48.167 122.766 40.4341C119.702 32.7012 114.44 26.0352 107.63 21.2594C100.82 16.4836 92.7606 13.8072 84.4465 13.5609V56.2039C84.4465 56.5097 84.325 56.803 84.1088 57.0193C83.8925 57.2355 83.5992 57.357 83.2934 57.357L40.6273 57.2648Z" fill="#242424"/>
+<path d="M29.1189 45.6873H72.9381V1.8681C61.3165 1.8681 50.1709 6.48476 41.9532 14.7024C33.7355 22.9201 29.1189 34.0657 29.1189 45.6873Z" fill="white"/>
+<path d="M72.8459 46.8404H29.0267C28.7208 46.8404 28.4275 46.7189 28.2113 46.5027C27.995 46.2864 27.8735 45.9931 27.8735 45.6873C27.8796 39.7875 29.0476 33.9467 31.311 28.4983C33.5743 23.0499 36.8887 18.1007 41.0647 13.9332C45.2408 9.76567 50.1968 6.46151 55.6498 4.20936C61.1029 1.9572 66.9461 0.801153 72.8459 0.807214C73.1517 0.807214 73.445 0.928704 73.6613 1.14496C73.8775 1.36121 73.999 1.65452 73.999 1.96035V45.7795C73.9758 46.0691 73.8441 46.3392 73.6303 46.5359C73.4165 46.7326 73.1364 46.8414 72.8459 46.8404ZM30.2951 44.5341H71.6927V3.02123C60.7931 3.33598 50.4282 7.81417 42.7285 15.5353C35.0289 23.2564 30.5796 33.6337 30.2951 44.5341Z" fill="#242424"/>
+<path d="M70.9087 354.497H35.5996V467.389H70.9087V354.497Z" fill="white"/>
+<path d="M70.909 468.542H35.5999C35.2941 468.542 35.0008 468.421 34.7845 468.205C34.5683 467.988 34.4468 467.695 34.4468 467.389V354.497C34.4468 354.191 34.5683 353.898 34.7845 353.682C35.0008 353.466 35.2941 353.344 35.5999 353.344H70.909C71.2148 353.344 71.5081 353.466 71.7244 353.682C71.9406 353.898 72.0621 354.191 72.0621 354.497V467.366C72.0652 467.52 72.0376 467.672 71.981 467.815C71.9244 467.957 71.84 468.087 71.7326 468.196C71.6252 468.306 71.4971 468.393 71.3556 468.452C71.2142 468.512 71.0624 468.542 70.909 468.542ZM36.7531 466.236H69.7558V355.65H36.8684L36.7531 466.236Z" fill="#242424"/>
+<path d="M119.779 384.456H84.4697V467.389H119.779V384.456Z" fill="white"/>
+<path d="M119.894 468.542H84.4695C84.1637 468.542 83.8704 468.421 83.6542 468.205C83.4379 467.988 83.3164 467.695 83.3164 467.389V384.363C83.3164 384.058 83.4379 383.764 83.6542 383.548C83.8704 383.332 84.1637 383.21 84.4695 383.21H119.894C120.2 383.21 120.493 383.332 120.709 383.548C120.926 383.764 121.047 384.058 121.047 384.363V467.389C121.047 467.695 120.926 467.988 120.709 468.205C120.493 468.421 120.2 468.542 119.894 468.542ZM85.738 466.236H118.741V385.517H85.6227L85.738 466.236Z" fill="#242424"/>
+<path d="M168.648 425.922H133.339V467.389H168.648V425.922Z" fill="white"/>
+<path d="M168.649 468.542H133.34C133.034 468.542 132.741 468.421 132.524 468.205C132.308 467.988 132.187 467.695 132.187 467.389V425.853C132.187 425.548 132.308 425.254 132.524 425.038C132.741 424.822 133.034 424.7 133.34 424.7H168.649C168.955 424.7 169.248 424.822 169.464 425.038C169.68 425.254 169.802 425.548 169.802 425.853V467.366C169.805 467.52 169.777 467.672 169.721 467.815C169.664 467.957 169.58 468.087 169.472 468.197C169.365 468.306 169.237 468.393 169.095 468.453C168.954 468.512 168.802 468.542 168.649 468.542ZM134.493 466.236H167.496V427.03H134.493V466.236Z" fill="#242424"/>
+<path d="M186.407 468.543H22.6614C22.3556 468.543 22.0623 468.421 21.8461 468.205C21.6298 467.989 21.5083 467.695 21.5083 467.389C21.5142 467.085 21.6376 466.796 21.8526 466.581C22.0676 466.366 22.3575 466.242 22.6614 466.236H186.522C186.828 466.236 187.121 466.358 187.338 466.574C187.554 466.79 187.675 467.084 187.675 467.389C187.676 467.551 187.643 467.711 187.578 467.859C187.513 468.007 187.417 468.14 187.298 468.249C187.178 468.357 187.037 468.44 186.884 468.49C186.73 468.541 186.568 468.559 186.407 468.543Z" fill="#242424"/>
+<path d="M453.681 12.4769H361.43C358.714 12.4769 356.109 13.5558 354.189 15.4761C352.269 17.3965 351.19 20.001 351.19 22.7168V64.5064C351.187 65.8531 351.45 67.1871 351.963 68.4321C352.476 69.6772 353.23 70.8087 354.181 71.762C355.132 72.7153 356.262 73.4716 357.506 73.9877C358.75 74.5037 360.083 74.7694 361.43 74.7693H369.802V90.4289L382.532 74.7693H453.75C455.097 74.7694 456.43 74.5037 457.674 73.9877C458.918 73.4716 460.048 72.7153 460.999 71.762C461.95 70.8087 462.704 69.6772 463.217 68.4321C463.73 67.1871 463.993 65.8531 463.99 64.5064V22.7168C463.99 21.3662 463.723 20.029 463.204 18.7821C462.685 17.5352 461.924 16.4033 460.966 15.4515C460.008 14.4998 458.871 13.7469 457.621 13.2364C456.37 12.7259 455.031 12.4678 453.681 12.4769Z" fill="white"/>
+<path d="M369.733 91.5821C369.611 91.6041 369.486 91.6041 369.364 91.5821C369.138 91.5025 368.942 91.3561 368.802 91.1625C368.662 90.9688 368.585 90.7371 368.579 90.4981V75.9225H361.361C358.327 75.8861 355.429 74.6551 353.296 72.4965C351.163 70.3379 349.968 67.4256 349.968 64.3911V22.7168C350.004 19.7063 351.216 16.8293 353.344 14.7004C355.473 12.5716 358.35 11.3597 361.361 11.3238H453.612C456.633 11.3238 459.531 12.5241 461.668 14.6607C463.804 16.7973 465.005 19.6952 465.005 22.7168V64.5065C465.005 67.5409 463.809 70.4532 461.676 72.6118C459.544 74.7704 456.646 76.0014 453.612 76.0378H383.017L370.632 91.2592C370.513 91.373 370.371 91.4605 370.217 91.5161C370.062 91.5718 369.897 91.5942 369.733 91.5821ZM361.361 13.6301C358.962 13.6658 356.671 14.6346 354.975 16.331C353.279 18.0274 352.31 20.318 352.274 22.7168V64.5065C352.274 66.9293 353.227 69.255 354.927 70.9811C356.627 72.7073 358.938 73.6952 361.361 73.7315H369.733C370.038 73.7315 370.332 73.853 370.548 74.0693C370.764 74.2855 370.886 74.5789 370.886 74.8847V87.2924L381.564 74.1467C381.673 74.015 381.811 73.9094 381.967 73.8376C382.122 73.7658 382.292 73.7296 382.463 73.7315H453.681C454.886 73.7317 456.079 73.4921 457.19 73.0269C458.302 72.5616 459.31 71.8799 460.156 71.0214C461.001 70.1629 461.668 69.1448 462.116 68.0263C462.564 66.9078 462.786 65.7113 462.768 64.5065V22.7168C462.768 20.3068 461.81 17.9956 460.106 16.2915C458.402 14.5874 456.091 13.6301 453.681 13.6301H361.361Z" fill="#242424"/>
+<path d="M448.861 30.9501H366.181C365.875 30.9501 365.582 30.8286 365.366 30.6124C365.149 30.3961 365.028 30.1028 365.028 29.797C365.034 29.493 365.157 29.2031 365.372 28.9881C365.587 28.7732 365.877 28.6498 366.181 28.6439H448.861C449.167 28.6439 449.46 28.7653 449.676 28.9816C449.893 29.1979 450.014 29.4912 450.014 29.797C450.014 30.1028 449.893 30.3961 449.676 30.6124C449.46 30.8286 449.167 30.9501 448.861 30.9501Z" fill="#B6B6B6"/>
+<path d="M448.861 44.5341H366.181C365.877 44.5282 365.587 44.4048 365.372 44.1898C365.157 43.9748 365.034 43.685 365.028 43.381C365.028 43.0751 365.149 42.7818 365.366 42.5656C365.582 42.3493 365.875 42.2278 366.181 42.2278H448.861C449.167 42.2278 449.46 42.3493 449.676 42.5656C449.893 42.7818 450.014 43.0751 450.014 43.381C450.014 43.6868 449.893 43.9801 449.676 44.1964C449.46 44.4126 449.167 44.5341 448.861 44.5341Z" fill="#B6B6B6"/>
+<path d="M427.666 58.095H366.181C365.875 58.095 365.582 57.9735 365.366 57.7572C365.149 57.541 365.028 57.2477 365.028 56.9418C365.034 56.6379 365.157 56.348 365.372 56.133C365.587 55.918 365.877 55.7946 366.181 55.7887H427.666C427.97 55.7946 428.26 55.918 428.475 56.133C428.69 56.348 428.813 56.6379 428.819 56.9418C428.819 57.2477 428.698 57.541 428.482 57.7572C428.265 57.9735 427.972 58.095 427.666 58.095Z" fill="#B6B6B6"/>
+</svg>
\ No newline at end of file
diff --git a/static/img/flatline/error-404.svg b/static/img/flatline/error-404.svg
new file mode 100644 (file)
index 0000000..1dac5dc
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 .2 1021 606.8"><g class="layer"><path fill="#FBFBFB" d="M197.4 105.7h650.3a48.6 48.6 0 0 1 48.6 48.6v396.9H149V154.5a48.8 48.8 0 0 1 48.5-48.8z"/><path fill="#475467" d="M896.3 552.9H149c-1 0-1.5-.7-1.5-1.5V154.5a50.2 50.2 0 0 1 50.3-50.2H848a50.2 50.2 0 0 1 50.2 50.2v397c-.2.9-1 1.4-1.9 1.4zm-746-3H895V154.6a47 47 0 0 0-47.2-47H197.4a47 47 0 0 0-47 47V550z"/><path fill="#FBFBFB" d="M71 551.4h903.1a54.1 54.1 0 0 1-53.9 54.2h-795A54 54 0 0 1 71 551.4z"/><path fill="#475467" d="M920 607H125a55.6 55.6 0 0 1-55.6-55.6c0-1 .7-1.4 1.4-1.4h903c1 0 1.5.7 1.5 1.4A55 55 0 0 1 920 607zM72.5 552.9c1 28.3 24.2 51 52.4 51h795a52.6 52.6 0 0 0 52.5-51H72.5z"/><path fill="#475467" d="M596 551.4H449.4V565h146.4v-13.6z"/><path fill="#85C241" d="M849.7 145.8H195.5v405.6h654.2V145.8z"/><path fill="#475467" d="M226.2 186.2a10.9 10.9 0 1 0 0-21.8 10.9 10.9 0 0 0 0 21.8z"/><path fill="#FBFBFB" d="M263.2 186.2a10.9 10.9 0 1 0 0-21.8 10.9 10.9 0 0 0 0 21.8zm36.9 0a10.9 10.9 0 1 0 0-21.8 10.9 10.9 0 0 0 0 21.8zm549.1 17.6H196c-1 0-1.7-.7-1.7-1.7s.7-1.7 1.7-1.7h653.2c1 0 1.7.8 1.7 1.7 0 1-.7 1.7-1.7 1.7zM404.5 342.2c-1.4 0-2.9-.4-3.8-1.6a5.7 5.7 0 0 1 0-8l42.5-42.5c2.2-2.2 5.8-2 8 .2 2 2.2 2 5.5 0 7.7l-42.6 42.6c-1.2 1.1-2.6 1.9-4 1.6z"/><path fill="#FBFBFB" d="M447 342.2c-1.4 0-2.8-.4-3.8-1.6L400.7 298c-2.2-2.1-2-5.8.2-8a6 6 0 0 1 7.7 0l42.6 42.6a5.7 5.7 0 0 1 0 8c-1.2 1.1-2.7 1.9-4.1 1.6zm151.1 0a5 5 0 0 1-3.9-1.6 5.7 5.7 0 0 1 0-8l42.6-42.5c2.1-2.2 5.8-2 8 .2a6 6 0 0 1 0 7.7l-42.6 42.8c-1 1-2.7 1.7-4.1 1.4z"/><path fill="#FBFBFB" d="M640.6 342.2c-1.4 0-2.9-.4-3.8-1.6L594.2 298a5.7 5.7 0 0 1 0-8 5.7 5.7 0 0 1 8 0l42.3 42.6a5.7 5.7 0 0 1 0 8 4.8 4.8 0 0 1-3.9 1.6zm-311 95.7a7 7 0 0 1-7-6.8c0-2.9 1.7-5.3 4.4-6.3a500 500 0 0 1 391.2 0 7.2 7.2 0 0 1 3.4 9.2 6.9 6.9 0 0 1-8.7 3.7 485.8 485.8 0 0 0-380.4 0l-2.9.2z"/><path fill="#DBDBDB" d="m159.3 107.4-1-.2c-.7-.5-1-1.7-.5-2.4 6-8.2 13.5-20.3 8-30-.3-.2-.5-.5-.5-1a89.8 89.8 0 0 1-21.8 18.9c-4 2.7-10.1 5-15 4.1-2.1-.5-4.3-2-5.5-3.9-1.4-2.9-2-6.2-1-9.1.3-1.3.8-2.2 1-3.2-7 7-15.2 13.3-24 18.1a10 10 0 0 1-6.2 1.7 8.7 8.7 0 0 1-7-7.7 18 18 0 0 1 2-9.4 81 81 0 0 1 66.1-46.6 31 31 0 0 0 1.2-19.9 19.5 19.5 0 0 0-13.7-13.3c-5.8-1.2-12.4 1.3-17.7 3.7a142.5 142.5 0 0 0-67.6 64.5 10.4 10.4 0 0 0-1.7 6c.2 1 .7 2 1.4 2.4.5.3 1 .5 1.5.5 1-.2 1.7.5 2 1.5.1 1-.6 1.7-1.5 1.9a5 5 0 0 1-4.2-1c-1.4-1.2-2.6-2.9-2.6-4.8 0-2.9.7-5.6 2.2-8 15-29.2 39.4-52.4 69.3-66A33.4 33.4 0 0 1 142.3.4c7.8 2 14 8 16.2 15.7a34 34 0 0 1-.7 20.8h6.8c2.1 0 4.3.5 6.2 1.7 4.4 2.6 4.6 8.4 4.4 11.8a40 40 0 0 1-8 21l1.5 2c6.5 11-1.5 24.4-8.2 33.5-.3.3-.8.5-1.3.5zm-6.6-66.9A77.8 77.8 0 0 0 91.1 85c-1.2 2.4-2 5-1.7 7.7a5.2 5.2 0 0 0 3.9 4.6 7 7 0 0 0 4.3-1.5c14-7.5 25.2-19.3 35.8-30.4 7-7.2 14.7-15.2 19.3-24.9zm-2.9 26.8c-1.7 0-3.4.3-5 .5-9.5 2-17.4 8.7-19.4 17-.7 2-.5 4.5.5 6.7.7 1.2 2 2 3.4 2.2 3.9 1 9.2-1.5 12.3-3.7a90 90 0 0 0 21.3-18.6 19.2 19.2 0 0 0-13-4zm0-3.4a23 23 0 0 1 15 4.9 40.3 40.3 0 0 0 7-18.9c.3-1.9.3-6.7-2.9-8.7a7.9 7.9 0 0 0-4.6-1c-2.6-.2-5.3-.2-7.7 0a94 94 0 0 1-20 27.1c2.3-1.2 4.8-2.1 7.4-2.6 2-.5 3.9-.8 5.8-.8z"/><path fill="#FBFBFB" d="M25.6 318.3h212.2a24 24 0 0 1 24 24V456a24 24 0 0 1-24 24H25.6a24 24 0 0 1-24-24V342.2a24 24 0 0 1 24-23.9z"/><path fill="#DBDBDB" d="M237.6 481.9h-212A25.6 25.6 0 0 1 0 456.3V342.5a25.6 25.6 0 0 1 25.6-25.6h212.2a25.6 25.6 0 0 1 25.6 25.6v113.8a25.7 25.7 0 0 1-25.9 25.6zM25.6 320c-12.3 0-22.2 10-22.2 22.2V456c0 12.3 9.9 22.2 22.2 22.2h212.2c12.3 0 22.2-9.9 22.2-22.2V342.2c0-12.3-9.9-22.2-22.2-22.2H25.6z"/><path fill="#475467" d="M85.3 360.4h10.9c1.7 0 3.4.2 4.8.7 1.2.5 2.2 1 3.1 2 .8.6 1.3 1.6 1.5 2.6.3 1 .5 1.9.5 2.6 0 1 0 2-.5 3-.2.9-.7 1.9-1.4 2.6-1 .7-2 1.4-3.2 2a18 18 0 0 1-4.8.6h-6.8v12.6h-4.1v-28.7zm4.1 12.8H95c.7 0 1.7 0 2.4-.3a4 4 0 0 0 2.2-.7 2 2 0 0 0 1.4-1.5c.5-.7.5-1.6.5-2.4 0-.7-.3-1.7-.5-2.4l-1.4-1.4-2.2-.8-2.4-.2h-5.6v9.7zm20.8-1c1.2-1 2.4-1.7 3.9-2.2a13.5 13.5 0 0 1 8.2-.2c1 .2 2 .7 2.6 1.4.8.5 1.2 1.2 1.7 2.2.3.7.5 1.7.5 2.4v11.9c0 .7 0 1.2.3 1.6h-3.7v-2.9a6.2 6.2 0 0 1-3.1 2.7 11 11 0 0 1-4.1.7c-1 0-2 0-2.7-.2-1-.3-1.7-.5-2.4-1.2a3.9 3.9 0 0 1-1.5-2c-.4-.7-.4-1.6-.4-2.4 0-1.2.2-2.1 1-3.1.7-1 1.4-1.7 2.3-2.2 1.3-.5 2.5-1 3.7-1.2 1.4-.2 2.9-.2 4.3-.2h3v-.8c0-.4 0-1-.3-1.4-.3-.5-.5-1-1-1.2-.5-.5-1-.7-1.4-1-.8-.2-1.5-.5-2.2-.2-.7 0-1.5 0-2 .2-.4.3-.9.3-1.4.5l-1.2.7-1 .8-3.1-2.7zm11.1 7.7c-1 0-2 0-2.9.3-1 0-1.7.2-2.7.5-.7.2-1.4.7-1.9 1.2-.5.4-.7 1.2-.7 1.9 0 1 .5 2 1.2 2.4a7.4 7.4 0 0 0 5.8.2c.7-.2 1.2-.7 2-1.2a5 5 0 0 0 .9-1.9c.2-.7.2-1.2.2-2v-1.1l-1.9-.3zm32.4 9c0 1.4-.2 2.6-1 4-.5 1.3-1.4 2.2-2.4 3.2s-2.2 1.7-3.6 2.2a17.9 17.9 0 0 1-9.9 0c-1.7-.5-3.2-1.5-4.6-2.7l2.6-3.1c1 1 2.2 2 3.4 2.4 1.2.5 2.7.7 4.1.7 1.2 0 2.4-.2 3.7-.5 1-.2 1.7-1 2.1-1.4a8 8 0 0 0 1.2-2.2c.3-.7.3-1.7.3-2.4v-2.9c-.7 1.2-2 2-3.2 2.7a12.9 12.9 0 0 1-8.4 0 10.2 10.2 0 0 1-5.6-5.3 10.8 10.8 0 0 1 0-7.8 7.5 7.5 0 0 1 2.2-3.1c1-1 2.2-1.7 3.4-2.2a13 13 0 0 1 4.3-.7 8 8 0 0 1 4.1 1 8 8 0 0 1 3.2 2.4v-2.7h3.9l.2 18.4zm-10.9-16.2c-1 0-2 .2-2.9.5-.7.2-1.4.7-2.2 1.4-.4.5-1 1.2-1.4 2.2-.3 1-.5 1.7-.5 2.6 0 1.7.5 3.4 2 4.6 2.8 2.4 7 2.4 9.8 0a6.6 6.6 0 0 0 1.5-7.2c-.2-.7-.7-1.5-1.4-2.2l-2.2-1.4c-.7-.3-1.7-.5-2.7-.5zm19.8 8.2c0 .7.3 1.7.5 2.4l1.5 1.7c.7.5 1.4 1 2.1 1.2 1 .2 1.7.5 2.7.5 1.2 0 2.2-.3 3.1-.7 1-.5 1.7-1.3 2.5-2.2l2.9 2.2a10.8 10.8 0 0 1-9.2 3.8c-1.5 0-3-.2-4.4-.7a10 10 0 0 1-5.5-5.3 11 11 0 0 1 0-8 7.5 7.5 0 0 1 2.1-3.1c1-1 2.2-1.7 3.4-2.2 1.5-.5 3-.7 4.4-.7 1.7 0 3.1.2 4.6 1 1.2.4 2.1 1.4 3.1 2.4.7 1 1.5 2.1 1.7 3.3.2 1.2.5 2.4.5 3.7v1.2h-16v-.5zm12.4-3c0-.6-.3-1.4-.5-2a5.4 5.4 0 0 0-3.1-2.9c-.8-.3-1.8-.6-2.7-.6-1 0-2 .3-2.7.5-.7.3-1.4.7-2 1.2-.4.5-.9 1.2-1.1 2-.3.7-.5 1.2-.5 1.9H175zM27.3 409.1H33l17 23.7v-23.7h4.4V438h-5.6l-17.1-23.7V438h-4.4v-28.8zm32.9 19.1c0-1.2.2-2.6.7-3.8a7.8 7.8 0 0 1 2.4-3.2c1-1 2.2-1.7 3.4-2.1 2.9-1 5.8-1 8.7 0a10 10 0 0 1 3.4 2.1c1 1 2 2 2.4 3.2.5 1.2 1 2.6.7 3.8a10 10 0 0 1-.7 3.9 7.8 7.8 0 0 1-2.4 3.1c-1 1-2.2 1.7-3.4 2.2a13 13 0 0 1-8.7 0c-1.2-.5-2.4-1.2-3.4-2.2-1-1-2-1.9-2.4-3.1-.5-1.2-1-2.4-.7-3.9zm4 0c0 1 .3 2 .6 2.7.2.7.7 1.4 1.4 2.2l2.2 1.4a8 8 0 0 0 5.8 0 6.2 6.2 0 0 0 3.6-3.6c.3-1 .5-1.7.5-2.7 0-1-.2-1.9-.5-2.6-.2-.8-.7-1.5-1.4-2.2l-2.2-1.4a8 8 0 0 0-5.8 0c-.7.2-1.5.7-2.2 1.4-.5.5-1 1.2-1.4 2.2-.5.7-.5 1.7-.5 2.6zm33.9-6.5h-5.5v10.4c0 .5 0 1 .2 1.4.2.5.5.8 1 1 .4.3 1.2.5 1.6.5H97c.5 0 1-.2 1.4-.5v3.4c-.4.2-1.2.5-1.9.5l-1.7.2c-1.2 0-2.4-.2-3.6-.5-.7-.2-1.4-1-2-1.4-.4-.7-.7-1.5-.7-2.2v-12.3h-4.6v-3.1h4.6v-5.4h4v5.4H98v2.6h.2zm18.4-12.6h19.3v3.7h-15.2v9h14.2v3.5h-14.2v12.4h-4.1V409zm22.9 19.1c0-1.4.3-2.6.8-3.8a7.7 7.7 0 0 1 2.4-3.2 8 8 0 0 1 3.4-2.1c2.9-1 5.8-1 8.7 0a10 10 0 0 1 3.3 2.1c1 1 2 2 2.5 3.2.4 1.2 1 2.6.7 3.8a10 10 0 0 1-.7 3.9 7.7 7.7 0 0 1-2.5 3.1 10 10 0 0 1-3.3 2.2c-3 1-5.8 1-8.7 0a8.7 8.7 0 0 1-3.4-2.2c-1-1-2-1.9-2.4-3.1a11 11 0 0 1-.8-3.9zm4.4 0a7.2 7.2 0 0 0 1.9 4.9l2.2 1.4c2 .7 3.9.7 5.5 0 .8-.2 1.5-.7 2.2-1.4.5-.5 1-1.2 1.5-2.2.2-1 .5-1.7.5-2.7 0-1-.3-1.9-.5-2.6-.3-.8-.8-1.5-1.5-2.2l-2.1-1.4c-2-.8-4-.8-5.6 0-.7.2-1.5.7-2.2 1.4-.5.5-1 1.2-1.4 2.2-.5.7-.5 1.7-.5 2.6zm41.1 9.7H181V435c-.5 1-1.4 2-2.7 2.4-1.2.7-2.6 1-4.3 1-1 0-2-.3-3-.5-.9-.2-1.6-.7-2.3-1.2a8.5 8.5 0 0 1-1.7-2.4c-.5-1-.7-2.2-.7-3.4v-12h3.8v11.3c0 .7.3 1.4.5 2.4.3.5.5 1.2 1 1.4.5.5 1 .8 1.4 1 .5.2 1.2.2 1.7.2.7 0 1.5 0 2.2-.2.7-.2 1.2-.7 2-1.2.4-.5.9-1.2 1.1-2 .3-1 .5-1.9.5-2.8v-10h3.9l.5 18.9zm6.1-19.3h3.8v2.9c.5-1 1.4-2 2.6-2.4 1.2-.8 3-1 4.4-1 1 0 2 .2 2.9.5a6 6 0 0 1 2.4 1.2c.7.7 1.2 1.4 1.7 2.4s.7 2.2.5 3.4v12.3h-3.9v-11.4c0-.7 0-1.4-.5-2.4-.2-.5-.5-1.2-1-1.4-.4-.5-1-.8-1.4-1-.5-.2-1.2-.2-1.7-.2-.7 0-1.7 0-2.4.2s-1.2.7-2 1.2c-.4.5-.9 1.2-1.1 2-.3 1-.5 1.9-.5 2.8v10h-3.9v-19.1zm44.9 19.3h-4v-2.7c-.6 1-1.8 2-3 2.5l-4.2 1a13 13 0 0 1-4.3-.8 10 10 0 0 1-5.6-5.3 11 11 0 0 1 0-8 10 10 0 0 1 5.6-5.3 13 13 0 0 1 4.3-.7 8 8 0 0 1 4.2 1c1.2.4 2.1 1.4 2.9 2.3v-14.2h3.8l.3 30.2zm-10.7-2.9c1 0 2-.2 3-.5.7-.2 1.4-.7 2.1-1.4.5-.5 1-1.2 1.5-2.2.2-1 .4-1.7.4-2.7 0-1-.2-1.9-.4-2.6-.3-.8-.8-1.5-1.5-2.2l-2.2-1.4a8 8 0 0 0-5.8 0c-.7.2-1.4.7-2.1 1.4-.5.5-1 1.2-1.5 2.2-.2 1-.5 1.7-.5 2.6 0 1 .3 2 .5 2.7.2.7.7 1.4 1.5 2.2l2.1 1.4c1 .3 2 .5 3 .5z"/><path fill="#FBFBFB" d="M792 233.3h208c10.6 0 19.3 8.7 19.3 19.3v72.5c0 10.6-8.7 19.3-19.3 19.3H792a19.4 19.4 0 0 1-19.4-19.3v-72.5c0-10.6 8.7-19.3 19.3-19.3z"/><path fill="#DBDBDB" d="M1000 346.1H792a21 21 0 0 1-21.1-21v-72.5a21 21 0 0 1 21-21h208a21 21 0 0 1 21.1 21v72.5a21 21 0 0 1-21 21zM792 235c-9.8 0-17.7 8-17.7 17.6v72.5c0 9.7 8 17.6 17.6 17.6h208c9.7 0 17.7-8 17.7-17.6v-72.5c0-9.6-8-17.6-17.6-17.6H792z"/><path fill="#475467" d="M848.7 305.5h-29v-10.1l22-32.6h19v32.6h7v10.1h-7v9.4h-12v-9.4zm0-10.1v-25l-17 25h17zm22.5-6.5c0-17 10.1-27.1 24.9-27.1 14.7 0 24.6 10.4 24.6 27 0 16.7-10.1 27.1-24.6 27.1-14.5 0-25-10.1-25-27zm37.7 0c0-11.4-4.9-17.2-12.6-17.2-7.7 0-12.8 5.6-12.8 17.2 0 11.5 4.8 17.1 12.8 17.1s12.6-5.8 12.6-17.1zm44.1 16.6h-29v-10.1l22-32.6h19v32.6h7v10.1h-7v9.4h-12l.2-9.4zm0-10.1v-25h-.1l-17 25h17.2zm5.6 257.7H86.4c-1 0-1.7-.7-1.7-1.7s.7-1.7 1.7-1.7h872.4c1 0 1.6.8 1.6 1.7 0 1-.4 1.7-1.6 1.7z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/handshake.svg b/static/img/flatline/handshake.svg
new file mode 100644 (file)
index 0000000..c6b2893
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 393.9 425.9"><g class="layer"><path fill="#DBDBDB" d="M180.2 425.9c99.5 0 180.2-10.6 180.2-23.7 0-13-80.7-23.6-180.2-23.6C80.7 378.6 0 389.2 0 402.2c0 13 80.7 23.7 180.2 23.7z"/><path fill="#fff" d="M167.4 155s-17.2 2-23.5 2.5c-6.4.4-12.9 5-14 6-1 .8-6 8-4.4 13.4 1.7 5.4 8.7 10.7 11.6 11.1 3 .4 26.6-11.5 31.9-15.7l-1.6-17.3z"/><path fill="#242424" d="M137.2 188.9h-.2c-3.4-.5-10.6-6.2-12.3-11.7-1.8-6 3.7-13.6 4.7-14.4 0 0 7.2-5.6 14.4-6a730.3 730.3 0 0 0 23.8-2.5l.3.1.2.3.1.3 1.6 17.3v.4l-.3.4c-4.9 3.8-28 15.8-32.3 15.8zm29.4-33c-3.6.5-17.2 2-22.7 2.4a29 29 0 0 0-13.3 5.7c-.8.7-5.7 7.5-4.2 12.6 1.6 5.1 8.2 10.2 11 10.5 2.6.4 24.8-10.7 30.7-15.2l-1.5-16z"/><path fill="#fff" d="M128 178s11.6 10 15.3 10.2c3.8 0 1.7-3.8 1.7-3.8s3.6 2.8 4.3.4c.6-2.3-.2-3.3-.2-3.3s3 4.1 3.8 1.1c.8-3 .3-4 .3-4s2.4 4.8 3.5 1.5c1-3.3-5.4-15-11.8-20.5 0 0 7.5.8 8.1-2 .7-2.6-6.1-3.7-9-3.9-2.8-.1-8.3 3.5-13.2 4-4.2.1-8.5 0-12.6-.7l.6 18.4 9.2 2.7z"/><path fill="#242424" d="M143.6 189h-.3c-3.9-.1-14-8.7-15.7-10.2l-9.1-2.6a.9.9 0 0 1-.5-.3 1 1 0 0 1-.2-.5l-.6-18.3v-.4l.3-.3.3-.2h.4c4.1.6 8.3.8 12.4.6 2.6-.4 5-1.2 7.4-2.2 1.9-1 4-1.5 6-1.7.1 0 7.4.4 9.4 3a2.3 2.3 0 0 1 .4 2c-.5 2.3-4.2 2.7-6.7 2.7 6 6 11.5 16.3 10.4 19.8-.4 1.1-1 1.7-1.8 1.8a2.3 2.3 0 0 1-1.6-.8c0 .4-.2 1-.4 1.5-.3 1.2-1 1.6-1.5 1.6h-1l-.9-.6-.2 1.1a2 2 0 0 1-1.3 1.5c-.8.2-1.6 0-2.3-.3 0 .6 0 1.2-.3 1.7a4 4 0 0 1-1.2 1c-.4.1-1 .2-1.4.1zm-24-14.3 8.7 2.5.3.2c4.5 4 12.2 9.8 14.8 9.9.6 0 1 0 1.2-.3.1-.3-.1-1.7-.4-2.2-.1-.2-.2-.4-.1-.6 0-.2.1-.3.3-.5l.5-.2c.2 0 .4 0 .5.2.8.7 1.7 1.1 2.8 1.2l.2-.3c.3-.8.3-1.7 0-2.5a.8.8 0 0 1-.2-.7c0-.2.1-.4.3-.5.2-.2.4-.2.6-.2.3 0 .5.1.6.3a5 5 0 0 0 2 1.8l.2-.4a7 7 0 0 0 .4-3.4v-.6l.1-.3.3-.2h.7c.2 0 .4.2.5.4.3.9.9 1.6 1.6 2.1l.3-.6c.9-2.6-5-13.9-11.6-19.5a.8.8 0 0 1-.3-.5.8.8 0 0 1 .4-1h.5c3 .2 7 0 7.3-1.3v-.3l-.1-.2c-1-1.4-5.4-2.2-8-2.4-2 .2-3.7.8-5.3 1.6-2.5 1.1-5.2 2-7.9 2.4-4 .2-8 0-11.8-.5l.5 16.6z"/><path fill="#fff" d="M155.7 156.7c-2.5-.1-4.9 0-7.3.2-4.4.4-9 1.7-11.7 5l-.4.7v.8c.2.4.8.6 1.3.7 3.6.5 7.3.6 10.9.1a3 3 0 0 1 1.5 0l1 .7a8.8 8.8 0 0 0 5 2"/><path fill="#242424" d="M156 167.7c-2 0-4-.8-5.5-2.2h-.2c-.1-.3-.4-.4-.6-.5h-1a39.2 39.2 0 0 1-12.4-.5c-.3-.2-.6-.5-.8-.9a2.2 2.2 0 0 1 .5-2.2c2.4-3.1 6.4-4.9 12.4-5.4a55 55 0 0 1 8 0v.3l.2.3c0 .3-.2.5-.3.6a1 1 0 0 1-.7.3c-2.3-.1-4.7 0-7 .2-5.5.5-9.2 2-11.2 4.7l-.3.6.6.1c3.6.6 7.2.6 10.7.2.6-.2 1.3-.2 2 0l1 .7a8 8 0 0 0 4.8 2c.2 0 .4 0 .6.2l.2.6v.4l-.3.3-.3.2a1 1 0 0 1-.3 0z"/><path fill="#fff" d="M312.8 382.2s1.4 8.8-.7 12.2c-2 3.3-3.8 7.6-4.7 15.5a17.3 17.3 0 0 0 12.8 5.8c8.1 0 16.2-6 17.1-9 1-2.9-6.5-33.9-6.5-33.9l-18 9.4z"/><path fill="#242424" d="M320.2 416.6a18.2 18.2 0 0 1-13.5-6.2 1 1 0 0 1-.1-.6 38 38 0 0 1 4.8-15.9c1.5-2.5 1-9.2.6-11.5v-.5l.4-.4 18-9.5a1 1 0 0 1 1 .3l.2.3c1.3 5.2 7.5 31.4 6.5 34.4s-9.4 9.6-17.9 9.6zm-11.9-7a16.8 16.8 0 0 0 12 5.3c7.7 0 15.4-6 16.2-8.4.5-1.6-2.8-17.7-6.3-32.4l-16.5 8.7c.3 2 1 9-.8 12a33.6 33.6 0 0 0-4.6 14.8z"/><path fill="#fff" d="m256.9 191.3 39 10.8 9-118.3s-35.6 5.8-43.3 9.4c-7.8 3.6-4.7 98.1-4.7 98.1z"/><path fill="#242424" d="M295.9 203h-.3l-39-10.8a.9.9 0 0 1-.4-.3.9.9 0 0 1-.1-.5c0-.2-.8-24-.7-47.8.4-48.7 4.3-50.5 5.8-51.2 7.8-3.6 42.1-9.2 43.6-9.5h.4l.3.2a.8.8 0 0 1 .3.7l-9 118.4-.2.3c0 .2-.1.3-.3.3l-.4.2zm-38.1-12.3L295 201l9-116.2c-6 1-35.3 6-42 9.2-4.8 2.1-5.8 51.3-4.3 96.7z"/><path fill="#fff" d="M269.8 369.8v26.4l-12.6 3.6.4-5.4-5.7 5.6s-33.8 6-33.6 1.6c.1-4.5 3.6-7 7.8-9.2 4.6-2.4 16.7-9.2 16.7-9.2l1.8-19.4"/><path fill="#242424" d="M224.6 404.1c-3.2 0-5.6-.3-6.5-1a1.6 1.6 0 0 1-.7-1.5c.2-5 4.1-7.7 8.3-10l16.3-9 1.7-18.9v-.3l.3-.3.3-.2h.7l.3.3.1.3v.4l-1.8 19.5-.1.3c0 .2-.2.3-.3.3-.1 0-12.1 6.9-16.7 9.3-4.5 2.3-7.2 4.6-7.4 8.4 1 1.7 15.7.6 32.4-2.4l5.5-5.5.4-.2h.6l.3.4.2.5-.3 4.2 10.8-3.1v-26.2c0-.1 0-.2.2-.3 0-.2.2-.2.3-.3a.8.8 0 0 1 .8 0s.2.1.2.3l.2.3v26.8c0 .2 0 .3-.2.5 0 .1-.2.3-.4.3l-12.6 3.6h-.4c-.2 0-.3 0-.4-.2a.8.8 0 0 1-.2-.3l-.1-.4.2-3.1-4.1 4c-.2.2-.3.3-.5.3-3.7.7-18.5 3.2-27.4 3.2z"/><path fill="#242424" d="M330.3 202 341 380.4s-1 7.4-16.9 8.3c-15.9.9-14.3-2.9-14.3-2.9l-25-125-10.2 116.5-34.2 2 6.8-191.6 83.2 14.3z"/><path fill="#242424" d="M319.5 389.6c-5.7 0-9.2-.8-10.3-2.3a2 2 0 0 1-.3-1.5l-23.8-119.2-9.7 110.7c0 .2 0 .4-.2.6l-.6.2-34.2 2.1c-.3 0-.5 0-.7-.2a1 1 0 0 1-.2-.6l6.8-191.7v-.3l.3-.3a.8.8 0 0 1 .7-.2l83.2 14.3c.2 0 .3.1.4.3.2.1.2.3.3.5l10.5 178.4c0 .5-1.3 8.2-17.6 9.1l-4.6.1zm-9-3.5.2.3c.6.6 3 2 13.3 1.4 14.1-.8 16-6.7 16.1-7.4l-10.5-177.7-81.7-14-6.7 189.8 32.7-2L284 260.6c0-.2.1-.4.3-.5l.5-.2c.2 0 .4 0 .6.2l.3.4 25 125.2v.5h-.2z"/><path fill="#85C241" d="M298.9 80.1s-13.5 124.9-7.5 132.7c6 7.8 32.8 18 44.8 8.5 12-9.6-2.7-122.4-8-130.8-9.3-4.7-19.2-8.2-29.3-10.4z"/><path fill="#242424" d="M349 242.5s-1.7-10.7-.8-11.7c1-1 24.8-1.7 26.7-1.4 1.9.2 2.2 11.3 2.2 11.3l-3.6.3s.4-7.2-.9-7.5c-1.3-.3-20.7.2-20.7.2l1 8.7h-4z"/><path fill="#242424" d="m349 243.4-.6-.2a.8.8 0 0 1-.3-.5c-1.1-7.4-1.3-11.5-.5-12.4 1.5-1.5 27.2-1.7 27.4-1.7 1.8.2 2.8 4.2 3 12.1 0 .3 0 .5-.2.6a1 1 0 0 1-.5.3l-3.6.3h-.3a1 1 0 0 1-.3-.2l-.2-.3-.1-.3c.2-2.2 0-4.5-.4-6.7-1.6-.2-12.3 0-19.5.3l1 7.8v.3c0 .2-.2.3-.2.3l-.3.3h-4.5zm-.2-11.9c0 3.4.2 6.8.9 10.2h2.4l-.9-7.8v-.3a.9.9 0 0 1 .5-.5h.3c3.2-.2 19.5-.7 20.9-.4.5.2 1.9.5 1.7 7.5l1.8-.2c-.2-4.9-.8-9.3-1.5-9.8-2.1-.2-23.4.5-26 1.3z"/><path fill="#fff" d="M354 215c-2 3.1-3.5 6.5-4.7 10-.6 1.9-.5 3.9.1 5.7l5.6-.9s-.9 10.8.9 10.8c1.7 0 4.4 1.4 4.3-7 0 0 .7 3.2 3.5 2a6.5 6.5 0 0 0 3.6-3.4s2.5 4 5-.4-1.6-17-1.6-17l-.4-6-17 .5.7 5.6z"/><path fill="#242424" d="M357.2 241.6H356c-.4 0-.7-.2-1-.5-1.2-1.3-1-7-.9-10.2l-4.4.7h-.6a.8.8 0 0 1-.4-.4 10 10 0 0 1-.2-6.3c1.2-3.5 2.8-7 4.7-10l-.6-5.5v-.3l.2-.3.6-.3 17-.5c.4 0 .9.4 1 .8l.3 6c.4 1.3 4 13 1.5 17.5-1 1.7-2 2.5-3.4 2.5-.4 0-.9 0-1.3-.2l-1-.8a8 8 0 0 1-3.4 2.6 3.2 3.2 0 0 1-2.8 0l-.3-.1c0 1.6-.5 3.2-1.5 4.5a3 3 0 0 1-2.2.8zm-1.1-1.8h.5c.8 0 1.3 0 1.7-.3.4-.3 1-2 1-6 0-.1 0-.3.2-.5l.6-.3c.2 0 .4 0 .6.2.1 0 .3.3.3.5.1.6.5 1 1 1.4l.7.1c.2 0 .5 0 .7-.2a5.5 5.5 0 0 0 3-2.8l.4-.4.4-.2.5.1.3.3c.2.4 1 1.3 1.7 1.3s1.4-1 1.8-1.7c2-3.3-.5-12.9-1.7-16.3v-.2l-.3-5.2-15.2.4.5 4.8-.1.5a53 53 0 0 0-4.7 9.9c-.3 1.5-.4 3 0 4.5l4.8-.8h.3l.4.2.2.3v.4a35 35 0 0 0 .4 10z"/><path fill="#fff" d="m336.9 243.5-10.6 1.2 4.7 53.6 11.3 1-5.4-55.8z"/><path fill="#242424" d="m342.3 300.1-11.3-1a.8.8 0 0 1-.6-.2.8.8 0 0 1-.2-.5l-4.7-53.6v-.3l.2-.3.3-.2.3-.1 10.6-1.3c.2 0 .4 0 .6.2l.2.2.1.4 5.4 55.8v.3l-.2.3-.3.2-.4.1zm-10.5-2.6 9.5.8-5.2-53.9-8.9 1 4.6 52.1z"/><path fill="#fff" d="M336.9 243.5c-.3.7 5.4 55.8 5.4 55.8L393 294l-3.4-53.8-52.7 3.3z"/><path fill="#242424" d="M342.3 300.1a1 1 0 0 1-.6-.2 1003.8 1003.8 0 0 1-5.7-56.7.9.9 0 0 1 .9-.6l52.6-3.3c.2 0 .5.1.6.3.2.1.3.3.3.5L394 294l-.2.6-.6.3-50.7 5.2h-.1zm-4.5-55.8c.3 5 3.2 34 5.3 54l49-5-3.4-52.2-51 3.2z"/><path fill="#242424" d="m349.2 262.9-.4-.1a.8.8 0 0 1-.3-.3l-12.3-18.6v-.6c0-.2.1-.4.3-.5l.6-.1c.2 0 .4.1.5.3l12 18.1 32.3-2.5 6.9-18.7.1-.3.3-.2h.7s.2 0 .3.2a.9.9 0 0 1 .2 1l-7.1 19c0 .3-.2.4-.3.5a1 1 0 0 1-.5.2l-33.2 2.6z"/><path fill="#DBDBDB" d="m369.6 256.2-5 .6 1.1 9.8 5-.6-1.1-9.8z"/><path fill="#85C241" d="M245 91s-14.6 127-11 130.6c3.6 3.6 19.5-.9 24.9-4.5 5.4-3.6 13.2-135.5 13.2-135.5s-19.5 2.6-27.3 9.2z"/><path fill="#85C241" d="M245 91s-25.6 53.3-37.6 57c-18 5.6-43.4 5.2-43.4 5.2l2 27s32.8 4.5 51.3-.3c18.6-4.7 38.4-31.7 38.4-31.7L245 90.9z"/><path fill="#DBDBDB" d="m276.5 100 3.5 5-12.7 76.1 8.1 10.4 10.3-9-2.2-76.6 4-5.5-5-3.6-6 3.2z"/><path fill="#242424" d="M235 187.5a.8.8 0 0 1-.6-.3.9.9 0 0 1-.2-.6l6.6-72.5a.9.9 0 0 1 1-.6l.4.2c.2.2.3.3.3.5l-6.7 72.6c0 .2 0 .4-.2.5l-.6.2z"/><path fill="#fff" d="m273.2 71.8-2 16.4s1.3 7.8 12.6 6.5c11.2-1.2 13.8-8.5 13.8-8.5l2.6-30.8s-6.3-5.5-1.7-22.8c0 0-17.6 3-33.6-1.1 0 0-2.8 20-2.5 28.5.2 8.6 10.8 11.8 10.8 11.8z"/><path fill="#242424" d="M281.5 95.7c-9.7 0-11-7.2-11-7.3V88l1.8-15.7c-2.4-.9-10.5-4.4-10.7-12.4a251.8 251.8 0 0 1 2.7-29l.2-.2.4-.2h.3c15.6 4 33 1 33.2 1l.4.1c.2 0 .3.2.4.3l.2.3v.5c-4.5 16.6 1.3 22 1.4 22l.2.3v.4l-2.5 30.7v.2c0 .3-2.8 7.9-14.5 9.2l-2.5.1zm-9.3-7.5c.2.9 1.9 6.7 11.6 5.7 10-1.1 12.7-7 13-8l2.6-30.2c-1.3-1.4-5.6-7.5-2-22-4.2.5-18.4 2-31.6-1.2-.6 4-2.7 20-2.4 27.5.2 8 10 11 10.2 11l.4.4.2.5-2 16.3z"/><path fill="#fff" d="M295.1 53.9a7.2 7.2 0 0 1 3-3.5 12.5 12.5 0 0 1 6.4-1.6c.5.2 1 .4 1.5.8 1 .7 1.9 1.8 2.3 3 .1 1.1 0 2.2-.3 3.2-.3 1.2-.7 2.2-1.3 3.3a8.8 8.8 0 0 1-8.8 4.2 8.7 8.7 0 0 1-3.2-1.2"/><path fill="#242424" d="M299.2 64.2c-1.8 0-3.5-.4-5-1.4a.8.8 0 0 1-.3-1.2l.2-.2.4-.1a.8.8 0 0 1 .6 0 7.8 7.8 0 0 0 6 1 8 8 0 0 0 4.9-3.7c.5-1 1-2 1.2-3a5 5 0 0 0 .2-2.7c-.3-1-1-2-2-2.6l-1.1-.7c-.7 0-1.4 0-2 .2-1.3.2-2.6.6-3.8 1.3-1.2.7-2 1.8-2.6 3 0 .3-.2.5-.4.6h-.7a.9.9 0 0 1-.5-.5v-.6c.7-1.7 1.8-3 3.4-4 1.3-.7 2.8-1.2 4.3-1.5.9-.3 1.8-.3 2.8-.1l1.8.9c1.2.8 2.2 2.1 2.6 3.6.2 1.2 0 2.4-.3 3.6-.3 1.2-.8 2.3-1.4 3.4a9.7 9.7 0 0 1-8.3 4.7z"/><path fill="#fff" d="M271.6 45.5s-7.1 7.6-6 9.3c1.1 1.7 5 1.3 5 1.3"/><path fill="#242424" d="M269.8 57c-1.4 0-3.8-.2-4.8-1.7-1.4-2 3.2-7.3 6-10.3l.3-.1.3-.1h.3l.3.2.2.6c0 .2 0 .5-.2.6-3.4 3.6-6.1 7.4-6 8.3.7 1 3.2 1 4.4 1 .2 0 .4 0 .6.2l.3.5c0 .3 0 .5-.2.6l-.6.3h-.9zm10-13.5c.4-1 .1-2-.6-2.4-.7-.3-1.7.3-2 1.4-.5 1-.2 2.1.5 2.4.8.3 1.7-.3 2-1.3zm-10.5-1.7c.4-1 .1-2.1-.6-2.4-.7-.3-1.7.3-2 1.4-.5 1-.2 2 .5 2.4.7.2 1.7-.4 2-1.4z"/><path fill="#fff" d="m268.2 60 7.4.5s.5 5.4-3.5 6.4-4-6.9-4-6.9z"/><path fill="#242424" d="M271.4 67.7a3 3 0 0 1-1.9-.6c-2.2-1.8-2.2-6.6-2.2-7.1 0-.3.1-.5.3-.6.1-.2.3-.3.6-.3l7.4.5.6.3.2.5c.2 2-.4 6.3-4.2 7.2l-.8.1zM269 61c0 1.5.5 4 1.5 4.9a1.5 1.5 0 0 0 1.3.2c2.6-.6 3-3.4 3-4.8L269 61zm42.5-10.5a1 1 0 0 1-.3 0 1 1 0 0 1-.3-.2l-.2-.3v-.7c2.3-4.4 3.6-9.3 3.8-14.3a16 16 0 0 0-5.5-13c-2.1-1.7-5.5-2.7-8-1.1l-.4.1h-.5a.9.9 0 0 1-.3-.4v-.5a4 4 0 0 0-.5-1.6 4 4 0 0 0-1.1-1.3c-7.2-7.3-18.5-8-28.3-7.5 1 .9 1.9 1.8 2.7 2.9v.8l-.3.4-.5.1c-5.3.3-10.6-.5-15.5-2.6a41.5 41.5 0 0 0 3.6 12.3.8.8 0 0 1-.6.8 1 1 0 0 1-.5 0 19 19 0 0 1-10.2-7.6 23.5 23.5 0 0 0 7.8 20.7v.7l-.2.2-.3.2-.3.1h-.3a25 25 0 0 1-7.7-25c.1-.2.3-.3.5-.3h.5l.3.5c1.8 3.6 4.8 6.5 8.5 8a43 43 0 0 1-2.8-12.4c0-.1.1-.3.3-.3l.4-.2h.4c4.5 2.2 9.4 3.2 14.4 3.2-.9-1-1.9-1.9-3-2.6a.8.8 0 0 1-.3-.4v-.5l.2-.5.5-.2c10.6-.7 23.7-.5 31.9 8a7 7 0 0 1 1.8 2.8 9.4 9.4 0 0 1 8.8 1.8 17.7 17.7 0 0 1 6.2 14.2 38 38 0 0 1-4.3 15.4l-.4.2zm-38.3 21.3s8.5.9 12.7-1c0 0-4.2 9.3-13.7 11l1-10z"/><path fill="#242424" d="M272.2 82.5h-.3l-.2-.2-.3-.3v-.4l1-9.9.1-.3a.8.8 0 0 1 .5-.4h.3s8.3.8 12.3-1l.5-.1.4.2c.2.1.2.3.3.5v.4c-.3.4-4.6 10-14.4 11.5h-.2zm1.8-9.8-.8 8a19 19 0 0 0 11-8.5c-3.4.6-6.8.8-10.2.5z"/><path fill="#85C241" d="M327.4 90s19.1 9.1 29 34.6c9.9 25.6 18.7 84.9 18.7 84.9l-29.8 2.6s-3.9-62-25-91.4l7.1-30.7z"/><path fill="#242424" d="M242.2 204.3h-.3a.8.8 0 0 1-.3-.3l-.2-.3v-.6l.3-.3 14.7-12.1.3-.2h.6l.3.3c.1.2.2.4.1.6 0 .2 0 .5-.3.6l-14.6 12c-.2.2-.4.2-.6.2zm82.8 0-.5-.1c-5.9-3.9-19.5-13-20.2-14.8a.9.9 0 0 1 .6-1.1h.6a169.8 169.8 0 0 0 20.1 14.7.9.9 0 0 1 .2.6.8.8 0 0 1-.5.6 1 1 0 0 1-.4.1zm-28.2-59-.4-.1a.9.9 0 0 1-.5-.5l.1-.7 13.2-24.8-10-7.7a.8.8 0 0 1-.3-.6v-.4l.3-.3 9.6-8.5c-.7-1.4-5.2-6.5-9.3-10.6a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2c.2 0 .4 0 .6.2a48 48 0 0 1 10 12.1c0 .2 0 .4-.2.5l-.3.4c-.8.6-5.9 5.1-9 8l9.6 7.4c.2.1.3.3.3.5v.6l-13.5 25.4c0 .2-.2.3-.4.4-.1 0-.3.1-.4 0zm-32.1-9.9-.4-.1a.7.7 0 0 1-.4-.4l-11.3-21.8a.8.8 0 0 1 .3-1.1l9.6-6.2-7.9-5.3a.7.7 0 0 1-.2-.3l-.2-.3v-.4l.3-.3 10.8-10.8c.1-.2.3-.2.6-.2a.9.9 0 0 1 .8.8c0 .2 0 .4-.2.6l-10 10 8 5.4.4.3v.8l-.3.4-10.2 6.4 11 21.2c.2.2.2.4.1.7 0 .2-.2.4-.4.5h-.4z"/><path fill="#fff" d="M284.5 266.7a.8.8 0 0 1-.8-.7c-.3-1.7-6.7-42-6.3-49.6 0-.3 0-.5.2-.6.2-.2.4-.2.6-.2.3 0 .5 0 .6.3l.2.6a577.7 577.7 0 0 0 6.3 49.6.8.8 0 0 1-.4.5h-.4z"/><path fill="#242424" d="M345.6 209.6a.8.8 0 0 1-.8-.7L325.4 113v-.3l.2-.3a.9.9 0 0 1 .5-.4.8.8 0 0 1 .6.2.8.8 0 0 1 .4.5l19.4 95.7v.4l-.1.3-.3.2-.3.1h-.2z"/><path fill="#fff" d="M81.2 299.6 78.1 374s30.2 18 28.9 20c-1.4 1.8-54.4-7.5-54.4-7.5l3.6-85.9"/><path fill="#242424" d="M105 394.8a462.1 462.1 0 0 1-53-7.9 1 1 0 0 1-.3-.6l3.6-85.8.3-.6.6-.2h.3a.9.9 0 0 1 .5.9l-3.5 85c18.3 3.2 46.8 7.7 52.2 7.6a238.5 238.5 0 0 0-28.4-19 1 1 0 0 1 0-.4l3-74.3.1-.3.2-.3.3-.2h.7l.3.3.1.3v.3l-3 73.8c8.8 5.3 28.3 17.1 28.8 20v.5c0 .1 0 .3-.2.4-.2.3-1 .5-2.6.5z"/><path fill="#242424" d="m88.5 376.4-9.8 8.9-28.1-4v11.2s62 8.2 65 3c2.8-5-27.1-19-27.1-19z"/><path fill="#fff" d="m61 315.4-3.2 74.3s30.3 18 28.9 19.9c-1.4 1.8-54.4-7.5-54.4-7.5l3.6-85.8"/><path fill="#242424" d="M84.7 410.5a467.2 467.2 0 0 1-53-7.8.9.9 0 0 1-.2-.6l3.6-85.8c0-.3 0-.5.2-.6.2-.2.4-.3.7-.3l.3.1.2.2.2.3v.3l-3.5 85c18.4 3.2 46.9 7.8 52.3 7.6A238.4 238.4 0 0 0 57 390v-.4l3.1-74.3c0-.2.2-.4.3-.5l.5-.2c.2 0 .4 0 .5.2l.4.5-3.2 73.8c8.9 5.2 28.4 17.1 29 20v.4l-.2.5c-.2.4-1.1.5-2.7.5z"/><path fill="#242424" d="m68 392-9.6 9.1-28.3-3.3.2 11.1s62.3 6.8 65 1.6C98.1 405.3 68 392 68 392zm27.8-212.3c2.5 16.6-10 180.5-10 180.5a227 227 0 0 1-54-1C17.7 329.8 2.6 237 6.9 215.5c4.1-21.5 14.3-44 14.3-44s74.8 9 74.7 8.3z"/><path fill="#85C241" d="M96 188.2s8.2-88 4.2-94.6c-13.6-22-84-21.4-90-.4-4.6 16.5 3.7 84.5 3.7 84.5l82 10.5z"/><path fill="#85C241" d="M52.2 171.4s50 10.8 68.4 7.5l4.5-23.3s-58.2-8.1-62.7-11.1-4.8-33.6-4.8-33.6-14 3-17.6 10.5c-3.6 7.5-7 42 12.2 50z"/><path fill="#fff" d="M45.6 85c-1.2.7 29.3 51.7 29.3 51.7L65 84s-7.7-5.6-19.4 1z"/><path fill="#242424" d="M107 181.7c-.9 0-81.8-6-83.2-56.1a.8.8 0 0 1 .3-.6l.2-.2.4-.1h.3l.3.2.2.3v.3C27 174.1 106.3 180 107 180c.2 0 .4.1.5.3l.2.5-.2.5c-.1.2-.3.3-.5.3z"/><path fill="#fff" d="m45.6 85-2.5-32.3c-.3-4.2-.7-8.4-.8-12.5-.2-6 2.4-4.6 8.3-4.7.4-3.8 1-7.7 1.7-11.5l3 9.5c9-2.5 27.6 0 27.6 0s1.9 18.1-.5 26.7C78.9 72.6 62.9 70 62.9 70l2 14s.7 4.7-5 6.3C52 92.5 45.7 85 45.7 85z"/><path fill="#242424" d="M56.8 91.5c-3.3-.1-6.5-1.3-9.1-3.3 0 0-2.8-2.1-3-3L42.3 53c0-1.4-.2-2.7-.3-4l-.5-8.6c0-2.3.3-3.7 1.2-4.6 1.1-1.1 2.8-1 5.2-1h2a144.3 144.3 0 0 1 2-11.3.8.8 0 0 1 1 0l.4.5 2.6 8.7a100.2 100.2 0 0 1 27.7.3l.2.5c0 .8 2 18.4-.5 27-3 11-15.4 10.8-19.3 10.5l2 13s.5 5.4-5.7 7.1c-1 .3-2.2.5-3.4.5zm-10.3-6.8c1 1.1 6.5 6.6 13.3 4.7 4.8-1.4 4.4-5.2 4.4-5.3l-2.1-14a.9.9 0 0 1 .2-.8l.4-.2h.4c.6 0 15.3 2.4 18.5-9 2-7.5.8-22.4.5-25.8a91.4 91.4 0 0 0-27.3.1.7.7 0 0 1-.2-.2l-.2-.3-1.9-6.1a136.3 136.3 0 0 0-1.4 8.5l-.5.2h-3c-1.9 0-3.2-.1-3.9.5a5 5 0 0 0-.6 3.3c0 2.8.3 5.7.5 8.4l.3 4 2.6 32z"/><path fill="#242424" d="M63 69.9s-6.8-.9-10-4.2c0 0 4.4 11 11.1 12.6L63 70z"/><path fill="#242424" d="M64.1 79.5H64c-7.3-1.8-11.7-12.8-12-13.4v-.7c.1-.3.3-.5.5-.6l.7-.2c.3 0 .5.1.7.3 3 3 9.2 3.8 9.3 3.8l.6.3c.2.2.3.4.3.7l1.3 8.5v.4l-.3.5-.4.3h-.5zM56 69c1.6 3.1 4 5.7 6.8 7.6l-.8-5.7c-2-.4-4-1-6-1.9z"/><path fill="#fff" d="M45.7 48.2a7.8 7.8 0 0 0-5.6-6c-.7-.2-1.3-.3-2-.2-.6 0-1.3.3-1.8.6a5 5 0 0 0-1.7 4.7 10.8 10.8 0 0 0 10.9 10"/><path fill="#242424" d="M45.3 58.1a11.7 11.7 0 0 1-11.7-10.8 5.8 5.8 0 0 1 2.1-5.4 5.5 5.5 0 0 1 4.5-.6 8.6 8.6 0 0 1 6.3 6.7.8.8 0 0 1-.7 1c-.2 0-.5 0-.6-.2a.8.8 0 0 1-.4-.5 7.2 7.2 0 0 0-5-5.3 3.9 3.9 0 0 0-3 .3 4.6 4.6 0 0 0-1.5 3.9 10 10 0 0 0 10.4 9.2.9.9 0 0 1 .7.4.9.9 0 0 1 0 .8l-.3.3a.9.9 0 0 1-.8.1v.1zm35.2-20.4c0-1.2-.4-2.1-1-2.2-.6 0-1.2 1-1.2 2-.1 1.2.3 2.1 1 2.1.6 0 1-.8 1.2-2zM70.3 39c0-1-.4-2-1-2s-1.1.8-1.2 2c0 1 .4 2 1 2s1.2-.8 1.2-2z"/><path fill="#fff" d="M79.5 59.3c-1.4 1-3 1.6-4.7 2-2.2.6-4.9.6-6.4-1a8.7 8.7 0 0 1-1.4-2.7"/><path fill="#242424" d="M72.3 62.6a6 6 0 0 1-4.5-1.8 8.5 8.5 0 0 1-1.5-2.9.9.9 0 0 1 .5-1.1h.7l.5.5c.2.9.6 1.7 1.2 2.4 1.6 1.6 4.6 1 5.5.8 1.6-.4 3-1 4.4-2h.7c.2 0 .4.1.5.3.1.2.2.5.1.7 0 .2-.2.4-.3.5-1.6 1-3.2 1.7-5 2.2-.9.2-1.8.4-2.8.4z"/><path fill="#fff" d="M77.3 41.4s9.2 10.6 7 12.8c-2.3 2.3-7.7 1.2-7.7 1.2"/><path fill="#242424" d="M79.5 56.5c-1 0-2 0-3-.3a.9.9 0 0 1-.5-.4v-.5c0-.2 0-.4.2-.5.2-.2.4-.2.6-.2 1.4.2 5.3.6 6.9-1 .8-.8-2.5-6.4-7-11.6a.9.9 0 0 1 0-1.2l.3-.2h.6l.3.2c3 3.3 9.5 11.4 7 14a7.6 7.6 0 0 1-5.4 1.7zm16.2 96h-.2c-28-7.3-42.5-21.9-49.8-32.8a56.1 56.1 0 0 1-9.3-22.4c0-.2 0-.4.2-.6a.8.8 0 0 1 1.2-.1c.2.1.3.3.3.5 0 .4 5.5 40 57.8 53.7.2 0 .4.2.5.4l.1.5-.3.6a1 1 0 0 1-.5.2z"/><path fill="#242424" d="M25.2 69.3c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.3v-.4L24 43c0-7.7 0-16.4 3.4-24 2-4.8 6.3-10.6 11.8-12.4a10.8 10.8 0 0 1 8.5.8c2-1.6 4-3 6-4.3A32 32 0 0 1 62.3.3c5.4-.9 10 .1 15.9 3.3a30.7 30.7 0 0 1 13.8 19 51 51 0 0 1-.3 24.3l-.4.2H91a.9.9 0 0 1-.6-.4l-.1-.4v-.4a49.6 49.6 0 0 0 0-22.8 28.7 28.7 0 0 0-13-18c-5.4-3-9.7-4-14.7-3.1a27 27 0 0 0-7.8 2.5L48.5 9h-.1a1 1 0 0 1-.9 0 9.1 9.1 0 0 0-7.6-.8c-5 1.7-8.8 7-10.8 11.4A56.6 56.6 0 0 0 26 42.8l.1 24.4c1.8-.4 3.6-.6 5.4-.6-.1-1.7.4-3.4 1.3-5l.4-.2h.5a.9.9 0 0 1 .7.5c.4 1.5.6 3 .6 4.5l4-.3h.3l.3.2.2.3v.3c.1.1 0 .2 0 .4l-.1.2-.3.2-.3.1-4.9.3h-.4a1 1 0 0 1-.5-.5v-.4l-.1-2.2c-.2.8-.2 1.6-.1 2.4v.4l-.3.3-.3.2h-.4a17.2 17.2 0 0 0-7 1zM96.6 144a.9.9 0 0 1-.6-.3.9.9 0 0 1-.3-.6c0-.3.5-29.7-3-42.5a.9.9 0 0 1 .5-1 .9.9 0 0 1 1 .5c3.7 13 3.3 41.7 3.2 43a.9.9 0 0 1-.2.6l-.3.2h-.3z"/><path fill="#fff" d="M85.2 402.4a121.2 121.2 0 0 0-17.6-9.6.9.9 0 0 1-.4-1.1c.1-.2.3-.4.5-.4h.6c.6.3 15 7.2 17.5 9.7l.2.5c0 .3 0 .5-.2.6a1 1 0 0 1-.6.3zM17.5 211.8a.8.8 0 0 1-.6-.1.7.7 0 0 1-.3-.3l-.1-.3v-.3l.1-.3a.9.9 0 0 1 .5-.4c10.3-4.3 14-17.3 14-17.4v-.3a.9.9 0 0 1 .7-.3h.3l.3.1.2.3.1.3v.3c-.1.6-3.8 14-14.9 18.6a1 1 0 0 1-.3 0z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/java.svg b/static/img/flatline/java.svg
new file mode 100644 (file)
index 0000000..5faaa07
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 574.7 341.3"><g class="layer"><path fill="#fff" d="m447.6 223.2-2 15.4 28 81.1 98-1 2.2-13.5-126.2-82z"/><path fill="#242424" d="M473.6 320.6c-.1 0-.3 0-.4-.2a.9.9 0 0 1-.3-.4l-28-81.1v-.4l2-15.4v-.4l.4-.3a.9.9 0 0 1 .8.1l126.2 82c.1 0 .3.2.3.4 0 .1.1.3 0 .4l-2.2 13.5c0 .2 0 .3-.2.5l-.6.2-97.9 1zm-27-82.1 27.6 80.4 96.7-1.1 2-12.2-124.6-81-1.8 13.9z"/><path fill="#fff" d="m476 305.8-28.4-82.6 85.4-.4 40.8 82.4-97.9.6z"/><path fill="#242424" d="M476 306.6a1 1 0 0 1-.6-.2 1 1 0 0 1-.2-.4l-28.4-82.5v-.4l.1-.4.3-.2.4-.1 85.4-.4h.5l.3.4 40.8 82.4v.8a.8.8 0 0 1-.8.4l-97.8.6zM448.7 224l27.7 80.9 96-.6-40-80.7-83.7.4z"/><path fill="#DBDBDB" d="M531.6 254.6h-54.9l-.4-.1a.8.8 0 0 1-.3-.4l-8.7-17.8v-.8l.3-.3.4-.1h55.8l.5.1.3.4 7.7 17.8.1.4v.4l-.4.3h-.4zm-54.4-1.7h53.1l-7-16.1h-54l8 16.1z"/><path fill="#242424" d="M473.6 320.6a.8.8 0 0 1-.6-.4.8.8 0 0 1-.2-.6l2.3-14 .1-.3.3-.2.3-.2h.3l.3.1.2.3.2.3v.3l-2.3 14c0 .2-.1.4-.3.5l-.6.2z"/><path fill="#DBDBDB" d="m53.3 199.5-.6-.1-.2-.3a.8.8 0 0 1 0-.6l.1-.3a13.6 13.6 0 0 0 2.4-11.5c-.6-2-1.4-4-2.5-5.9l-2-4a23.3 23.3 0 0 1 1.7-20.3.8.8 0 0 1 1.1-.2c.2.1.4.3.4.5v.6a21.9 21.9 0 0 0 .2 22.7c1.2 2 2 4 2.7 6.2a15.4 15.4 0 0 1-2.8 13l-.2.2h-.3zM34 202.7l-.3-.1a.7.7 0 0 1-.3-.2l-.1-.3v-.6c3-6 5.8-14.4 2.5-20.5a25 25 0 0 0-2.7-3.7 14 14 0 0 1-4-7c-.6-4 1.4-7.6 3.4-10.8 0-.2.3-.3.5-.3h.6l.4.6-.1.6c-1.8 3-3.7 6.3-3.2 9.7a12 12 0 0 0 3.7 6.1 38 38 0 0 1 3 4c3.6 6.7.6 15.7-2.5 22a.8.8 0 0 1-.8.5zm36.6-1.7-.5-.1a.8.8 0 0 1-.3-1l.3-.4c2.2-1.6 2.3-6.3 1.1-9.7l-1.2-3.3c-1.2-2.5-2-5.2-2.2-7.9a11.6 11.6 0 0 1 4-9.6.8.8 0 0 1 1.2.1c0 .2.2.4.1.7 0 .2-.1.4-.3.5a10.1 10.1 0 0 0-3.3 8.2c.3 2.6 1 5 2 7.3l1.4 3.4c1.3 4 1.3 9.3-1.7 11.6l-.3.2h-.3z"/><path d="M96.4 325.4h364.2v8.2a7.7 7.7 0 0 1-7.7 7.7H104a7.7 7.7 0 0 1-7.7-7.7v-8.2z"/><path fill="#fff" d="M454.4 332.2H102.7a6.2 6.2 0 0 1-5.9-8.2l31.7-93.3a20.5 20.5 0 0 1 19.2-13.9h261.7a20.4 20.4 0 0 1 19.4 14l31.6 93.3c.3.9.4 1.9.3 2.9a6.3 6.3 0 0 1-6.3 5.2z"/><path fill="#242424" d="M454.4 333H102.7c-1.1 0-2.2-.3-3.2-.8a6.8 6.8 0 0 1-3.7-5.2 7 7 0 0 1 .2-3.2l31.7-93.4a21.2 21.2 0 0 1 20-14.4h261.7a21.2 21.2 0 0 1 20 14.5l31.7 93.3a7 7 0 0 1-1 6.4 7 7 0 0 1-5.7 2.8zM147.7 217.7a19.7 19.7 0 0 0-18.6 13.3l-31.7 93.3a5.6 5.6 0 0 0 .7 5 5.5 5.5 0 0 0 4.5 2.3h351.8a5.4 5.4 0 0 0 4.4-2.3 5.4 5.4 0 0 0 .8-5L427.9 231a19.7 19.7 0 0 0-18.7-13.3H147.7z"/><path fill="#DBDBDB" d="M423.6 277.5H133.3a.8.8 0 0 1-.6-.3.8.8 0 0 1-.2-.8l14-46.9.3-.4.5-.2h262.4l.5.2.3.4 13.9 47v.3l-.1.4-.3.2-.4.1zm-289.1-1.7h288L409 230.6H147.9l-13.4 45.2zm198.2 43.8H224a1 1 0 0 1-.3-.3 1 1 0 0 1-.2-.3v-.4l7.2-32.6c0-.2.2-.3.3-.5l.5-.2h94.1l.6.2.2.5 7.2 32.6v.4c0 .1 0 .2-.2.3 0 .1-.1.2-.3.2a1 1 0 0 1-.3.1zM225.3 318h106.4l-6.8-31H232l-6.8 31z"/><path fill="#fff" d="M413.1.8H143.6c-6 0-10.8 4.8-10.8 10.8V206c0 6 4.8 10.8 10.8 10.8H413c6 0 10.8-4.8 10.8-10.8V11.6c0-6-4.8-10.8-10.8-10.8z"/><path fill="#242424" d="M413.1 217.7H143.6A11.7 11.7 0 0 1 132 206V11.6A11.7 11.7 0 0 1 143.6 0H413a11.6 11.6 0 0 1 11.6 11.6V206a11.6 11.6 0 0 1-11.6 11.7zM143.6 1.5a10 10 0 0 0-10 10V206a10 10 0 0 0 10 10H413a10 10 0 0 0 10-10V11.6a10 10 0 0 0-10-10H143.6z"/><path d="M412.9 12.4H143.2V205h269.7V12.3z"/><path fill="#DBDBDB" d="M228.5 12.4h-85.3V205h85.3V12.3z"/><path fill="#fff" d="M269.6 74.2h-14.7c-.2 0-.4 0-.6-.2a.8.8 0 0 1 0-1.2l.6-.3h14.7a.8.8 0 0 1 .8.9.8.8 0 0 1-.8.8z"/><path fill="#85C241" d="M306.5 74.2h-29.2c-.2 0-.4 0-.6-.2a1 1 0 0 1-.2-.6.8.8 0 0 1 .8-.9h29.2c.3 0 .5.1.6.3a.9.9 0 0 1 .2.9l-.2.3a.8.8 0 0 1-.6.2zm8.9 10.3H286c-.3 0-.5-.1-.6-.3a.8.8 0 0 1 0-1.2l.6-.2h29.2c.2 0 .4 0 .6.3a.8.8 0 0 1 0 1.1l-.6.3z"/><path fill="#fff" d="M273 84.5h-14.7a.5.5 0 0 1-.5-.3.8.8 0 0 1 0-1.2l.5-.2H273a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm.6 10.2h-11.8c-.2 0-.4 0-.6-.2a.8.8 0 0 1 0-1.2l.6-.2h11.8c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.2z"/><path fill="#85C241" d="M320.6 94.7h-36.7a.8.8 0 0 1-.8-.8c0-.2 0-.4.2-.6l.6-.2h36.7c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.2z"/><path fill="#fff" d="M279.9 105h-14.7c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6.8.8 0 0 1 .8-.9H280l.6.3.2.6a.8.8 0 0 1-.8.8z"/><path fill="#85C241" d="M328.1 105h-43.5a.8.8 0 0 1-.8-.8c0-.3 0-.5.2-.6l.6-.3h43.5c.3 0 .5.1.6.3.2.1.3.4.3.6a.8.8 0 0 1-.9.8z"/><path fill="#fff" d="M276 115.3h-14.6l-.6-.3a.8.8 0 0 1 0-1.2l.6-.2h14.7c.2 0 .4 0 .5.3a.8.8 0 0 1 0 1.1c-.1.2-.3.3-.6.3z"/><path fill="#85C241" d="M305.2 115.3h-23.6l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2h23.6c.3 0 .5.1.6.3.2.1.3.3.3.5a.8.8 0 0 1-.9.9zm32.7 0h-23.6c-.3 0-.5-.1-.6-.3a.8.8 0 0 1 0-1.2l.6-.2h23.5c.3 0 .5 0 .6.3a.8.8 0 0 1 0 1.1c-.1.2-.3.3-.5.3z"/><path fill="#fff" d="M266.4 125.5h-5a.8.8 0 0 1-.8-.8c0-.2 0-.4.2-.6l.6-.2h5c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6-.2.2-.4.2-.6.2z"/><path fill="#85C241" d="M305.2 125.5H275a.8.8 0 0 1-.8-.8c0-.2 0-.4.2-.6l.6-.2h30.2c.3 0 .5 0 .6.2l.3.6-.3.6c-.1.2-.3.2-.6.2zm11.9 0h-8.4a.8.8 0 0 1-.8-.8c0-.2 0-.4.2-.6l.6-.2h8.4c.3 0 .5 0 .6.2l.3.6-.3.6c-.1.2-.3.2-.6.2z"/><path fill="#fff" d="M269.3 135.8h-8c-.2 0-.4 0-.5-.2a.8.8 0 0 1 0-1.2c.1-.2.3-.3.6-.3h7.9a.8.8 0 0 1 .8.9c0 .2 0 .4-.2.6l-.6.2z"/><path fill="#85C241" d="M312.7 135.8h-36c-.2 0-.4 0-.5-.2a.8.8 0 0 1 0-1.2c.1-.2.3-.3.6-.3h36a.8.8 0 0 1 .8.9l-.3.6-.6.2zm18.1 0h-14.6a.8.8 0 0 1-.9-.8c0-.2.1-.5.3-.6.1-.2.3-.3.6-.3h14.6a.8.8 0 0 1 .6 1.5l-.6.2z"/><path fill="#fff" d="M265.7 146h-7.8c-.2 0-.4 0-.6-.2a.8.8 0 0 1 0-1.2l.6-.3h7.8l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2z"/><path fill="#85C241" d="M308.7 146h-34c-.2 0-.4 0-.5-.2a.9.9 0 0 1-.3-.6c0-.2 0-.4.3-.6.1-.2.3-.3.5-.3h34l.6.3a.8.8 0 0 1 0 1.2l-.6.2z"/><path fill="#fff" d="M272.6 156.3h-14.7c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2h14.7c.2 0 .4 0 .6.2l.2.6a.8.8 0 0 1-.8.8zm16.8 10.3H260c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6c0-.2.1-.5.3-.6.1-.2.4-.3.6-.3h29.3a.8.8 0 0 1 .8.9c0 .2 0 .4-.2.6l-.6.2z"/><path fill="#85C241" d="M317.1 166.6h-20.3c-.2 0-.4 0-.6-.2a.8.8 0 0 1 0-1.2l.6-.3h20.3a.8.8 0 0 1 .9.9l-.3.6-.6.2zm28.1 0h-25.1c-.3 0-.5 0-.6-.2a.8.8 0 0 1 0-1.2c.1-.2.3-.3.6-.3h25.1a.8.8 0 0 1 .9.9l-.3.6-.6.2z"/><path fill="#fff" d="M304 176.9h-42.6a.8.8 0 0 1-.9-.9c0-.2.1-.4.3-.5.1-.2.3-.3.6-.3H304l.6.3.2.5c0 .3 0 .5-.2.6l-.6.3z"/><path fill="#85C241" d="M328.7 176.9h-19.2a.8.8 0 0 1-.8-.9c0-.2 0-.4.2-.5l.6-.3h19.2l.6.3.2.5c0 .3 0 .5-.2.6l-.6.3zm60.3 0h-45a.8.8 0 0 1-.8-.9c0-.2 0-.4.2-.5l.6-.3h45l.6.3.2.5c0 .3 0 .5-.2.6l-.6.3zM353.9 105h-19.8a.8.8 0 0 1-.9-.8c0-.3.1-.5.3-.6.1-.2.4-.3.6-.3h19.8l.6.3.2.6a.8.8 0 0 1-.8.8zm14.7.1c-6.9 0-7.1-.1-7.3-.2a.8.8 0 0 1-.3-1.1l.4-.4h22.9c.2 0 .4 0 .6.2.2.2.2.4.2.6 0 .2 0 .4-.2.6-.2.2-.4.2-.6.2l-15.7.1zm-17.9-20.6H322c-.3 0-.5-.1-.6-.3a.8.8 0 0 1 0-1.2l.5-.2h28.8c.3 0 .5 0 .6.3a.8.8 0 0 1 0 1.1c-.1.2-.3.3-.6.3zm34.4 0h-28.6l-.6-.3a.8.8 0 0 1 0-1.2l.6-.2h28.6a.8.8 0 0 1 .9.8c0 .3-.1.5-.3.6-.1.2-.3.3-.6.3zm-60.8-10.2H314a.8.8 0 0 1-.6-1c.1-.3.2-.4.4-.5.2-.2.4-.2.6-.2h33c.2 0 .5.1.6.3.2.1.2.3.2.5 0 .3 0 .5-.2.6l-.6.3h-23.1z"/><path fill="#fff" d="M355.3 74.2h-.4a.7.7 0 0 1-.3-.3.9.9 0 0 1-.2-.6l.3-.6c.3-.2.7-.5 20.3-.2l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2a313.4 313.4 0 0 0-19.7 0z"/><path fill="#85C241" d="M327.5 146h-14.8c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.3h14.9c.2 0 .4.1.5.3.2.1.3.4.3.6v.3l-.3.3-.3.2a1 1 0 0 1-.3 0zm-34.1 10.3h-10.9a.8.8 0 0 1-.8-.8.8.8 0 0 1 .8-.8h11a.8.8 0 0 1 .8.8.8.8 0 0 1-.9.8z"/><path fill="#fff" d="M323.5 156.3h-26c-.2 0-.4 0-.5-.2a.8.8 0 0 1 0-1.2l.6-.2h25.9c.2 0 .4 0 .6.2l.2.6a.8.8 0 0 1-.8.8z"/><path fill="#85C241" d="M379 156.3h-50.3c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2H379c.2 0 .4 0 .5.2l.3.6-.3.6c-.1.2-.3.2-.6.2z"/><path fill="#fff" d="M269.7 45.6h-14.6a.8.8 0 0 1-.9-.8l.3-.6.6-.2h14.6c.3 0 .5 0 .6.2l.3.6-.3.6-.6.2zm16.8 10.3h-29.3c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.6c0-.3 0-.5.3-.6.1-.2.3-.3.5-.3h29.3l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2z"/><path fill="#85C241" d="M314.4 55.9H294c-.3 0-.5 0-.6-.2a.9.9 0 0 1-.3-.6c0-.3.1-.5.3-.6.1-.2.3-.3.6-.3h20.3l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2zm28 0h-25.2a.8.8 0 0 1-.8-.8.8.8 0 0 1 .8-.9h25.2l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2z"/><path fill="#fff" d="M301.1 66.2h-42.6l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h42.6c.3 0 .5 0 .6.3a.8.8 0 0 1 0 1.1c-.1.2-.3.3-.6.3z"/><path fill="#85C241" d="M325.9 66.2h-19.2a.8.8 0 0 1-.6-1.5l.6-.2h19.2a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm60.3 0h-45c-.2 0-.5-.1-.6-.3a.8.8 0 0 1-.3-.6c0-.2.1-.4.3-.5.1-.2.4-.3.6-.3h45a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm-95.6-20.6h-11c-.1 0-.4 0-.5-.2a.8.8 0 0 1 0-1.2l.6-.2h10.9c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6-.2.2-.4.2-.6.2z"/><path fill="#fff" d="M320.7 45.6h-26a1 1 0 0 1-.5-.2 1 1 0 0 1-.3-.6.8.8 0 0 1 .8-.8h26c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6-.2.2-.4.2-.6.2z"/><path fill="#85C241" d="M376 45.6h-50a.8.8 0 0 1-.9-.8l.3-.6.6-.2h50c.2 0 .4 0 .5.2l.3.6-.3.6a1 1 0 0 1-.6.2zm-97.4 142.7H259c-.3 0-.5-.1-.6-.3a.8.8 0 0 1 0-1.2l.6-.2h19.6c.2 0 .4 0 .6.3a.8.8 0 0 1 0 1.1l-.6.3zm13.4 0h-6a.5.5 0 0 1-.5-.3.8.8 0 0 1 0-1.2l.6-.2h5.8l.6.3a.8.8 0 0 1 0 1.1l-.6.3zm-28.1 8.5h-9l-.6-.3a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2h9a.8.8 0 0 1 .8.8.8.8 0 0 1-.8.8z"/><path fill="#DBDBDB" d="M244.7 43.2h-2.5v2.5h2.5v-2.5zm0 10.1h-2.5v2.5h2.5v-2.5zm0 10.1h-2.5v2.5h2.5v-2.5zm0 10.1h-2.5V76h2.5v-2.5zm0 10.1h-2.5V86h2.5v-2.5zm0 10.1h-2.5v2.5h2.5v-2.5zm0 10.1h-2.5v2.5h2.5v-2.5zm0 10.1h-2.5v2.5h2.5V114zm0 10.1h-2.5v2.5h2.5V124zm0 10.1h-2.5v2.5h2.5v-2.5zm0 10.1h-2.5v2.5h2.5v-2.5zm0 10.1h-2.5v2.5h2.5v-2.5zm0 10.1h-2.5v2.5h2.5v-2.5zm0 10.1h-2.5v2.5h2.5v-2.5zm0 10.2h-2.5v2.5h2.5v-2.5zm0 10.1h-2.5v2.5h2.5v-2.5z"/><path fill="#fff" d="M172.9 60.6H166c-.2 0-.4 0-.5-.2a.8.8 0 0 1 0-1.2c.1-.2.3-.3.5-.3h6.9a.8.8 0 0 1 .8.9c0 .2 0 .4-.2.6l-.6.2z"/><path d="M190.1 60.6h-13.6a.8.8 0 0 1-.6-1.4c.1-.2.4-.3.6-.3H190l.6.3a.8.8 0 0 1 0 1.2l-.6.2zm4.1 6.7h-13.6c-.2 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6.8.8 0 0 1 .9-.8h13.6c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.3z"/><path fill="#fff" d="M174.5 67.3h-6.8a.8.8 0 0 1-.8-.8.8.8 0 0 1 .8-.8h6.8c.3 0 .5 0 .6.2l.3.6-.1.3a.8.8 0 0 1-.5.5h-.3zm.3 6.7h-5.5c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6l.3-.6.6-.2h5.4c.3 0 .5 0 .6.2a.8.8 0 0 1 0 1.2c-.1.2-.3.3-.6.3z"/><path d="M196.6 74h-17c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.3-.6l.3-.6.6-.2h17c.3 0 .5 0 .6.2a.8.8 0 0 1 0 1.2c-.1.2-.3.3-.6.3z"/><path fill="#fff" d="M181.2 80.8h-8.9a.8.8 0 0 1-.8-.8c0-.3 0-.5.2-.6l.6-.3h9l.5.3c.2.1.2.3.2.5 0 .3 0 .5-.2.6l-.6.3z"/><path d="M210.5 80.8H184l-.6-.3a.8.8 0 0 1 0-1.1c.1-.2.4-.3.6-.3h26.4l.6.3.2.5c0 .3 0 .5-.2.6l-.6.3z"/><path fill="#fff" d="M178.9 87.5h-9a.8.8 0 0 1-.8-.8c0-.3.1-.5.3-.6.1-.2.3-.3.6-.3h8.9l.6.3.2.6a.8.8 0 0 1-.8.8z"/><path d="M196.6 87.5h-14.3a.8.8 0 0 1-.9-.8c0-.3.1-.5.3-.6.1-.2.4-.3.6-.3h14.3l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2zm15.8 0H202c-.2 0-.4 0-.5-.2a.9.9 0 0 1-.3-.6c0-.3.1-.5.3-.6.1-.2.3-.3.6-.3h10.3c.3 0 .5.1.6.3.2.1.3.4.3.6l-.3.6-.6.2z"/><path fill="#fff" d="M173 94.2h-3c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6c0-.2.1-.5.3-.6.1-.2.3-.3.6-.3h3c.2 0 .5.1.6.3a.8.8 0 0 1 0 1.2l-.6.2z"/><path d="M196.6 94.2h-18.3c-.3 0-.5 0-.6-.2a.8.8 0 0 1 0-1.2c.1-.2.3-.3.5-.3h18.4a.8.8 0 0 1 .8.9c0 .2 0 .4-.2.6l-.6.2zm7.2 0h-5.1c-.2 0-.4 0-.6-.2a.8.8 0 0 1 0-1.2l.6-.3h5.1l.6.3a.8.8 0 0 1 0 1.2l-.6.2z"/><path fill="#fff" d="M174.8 101H170c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6c0-.2.1-.5.3-.6.1-.2.3-.3.6-.3h4.8l.6.3a.8.8 0 0 1 0 1.2l-.6.2z"/><path d="M201 101h-21.6a.8.8 0 0 1-.6-1.4c.1-.2.4-.3.6-.3H201c.2 0 .4.1.5.3a.8.8 0 0 1 0 1.2l-.5.2zm11.1 0h-8.9c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.3h9a.8.8 0 0 1 .8.9l-.3.6-.6.2z"/><path fill="#fff" d="M172.6 107.7h-4.7c-.2 0-.5-.1-.6-.3a.8.8 0 0 1 0-1.1c.1-.2.4-.3.6-.3h4.7l.6.3c.2.1.2.3.2.5 0 .3 0 .5-.2.6a1 1 0 0 1-.6.3z"/><path d="M198.7 107.7h-20.6a1 1 0 0 1-.6-.3 1 1 0 0 1-.3-.6.8.8 0 0 1 .9-.8h20.6l.6.3.2.5c0 .3 0 .5-.2.6a1 1 0 0 1-.6.3z"/><path fill="#fff" d="M176.8 114.3h-9c-.1 0-.3 0-.5-.2a.8.8 0 0 1-.3-.6l.3-.6.6-.2h8.9c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.3zm10.2 6.8h-17.8c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.3 0-.5.2-.6l.6-.3h17.7c.3 0 .5.1.6.3.2.1.3.3.3.6l-.3.6-.6.2z"/><path d="M203.8 121.1h-12.3a.8.8 0 0 1-.9-.8.8.8 0 0 1 .9-.9h12.3l.6.3c.2.1.2.3.2.6a.8.8 0 0 1-.8.8zm9 0h-7.2a.8.8 0 0 1-.9-.8.8.8 0 0 1 .9-.9h7.2c.3 0 .5.1.6.3.2.1.3.3.3.6l-.3.6-.6.2z"/><path fill="#fff" d="M195.8 127.8H170c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6c0-.2.1-.5.3-.6.1-.2.3-.3.6-.3h25.8a.8.8 0 0 1 .9.9l-.3.6-.6.2z"/><path d="M210.8 127.8h-11.7c-.2 0-.4 0-.5-.2a.8.8 0 0 1 0-1.2c.1-.2.3-.3.5-.3h11.7a.8.8 0 0 1 .8.9c0 .2 0 .4-.2.6l-.6.2zm-13.3-67.1h-4.2a1 1 0 0 1-.2-.3c-.1 0-.2-.1-.2-.3v-.3c0-.2 0-.4.2-.5l.6-.3h8.4c.2 0 .4 0 .5.3a.8.8 0 0 1 0 1.1c-.1.2-.3.3-.6.3h-4.5zm12.5 47h-9a.9.9 0 0 1-.5-.3.8.8 0 0 1 0-1.1c.1-.2.3-.3.5-.3h9c.3 0 .5.1.6.3a.8.8 0 0 1-.5 1.4zm-20.6 6.6h-6.7c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6.8.8 0 0 1 .8-.8h6.7c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.3z"/><path fill="#fff" d="M207.7 114.3H192c-.2 0-.4 0-.6-.2a1 1 0 0 1-.3-.6l.3-.6.6-.2h15.7c.2 0 .5 0 .6.2.2.2.2.4.2.6 0 .2 0 .4-.2.6l-.6.3zM173 28.5h-4.8a.8.8 0 0 1-.8-.9c0-.2.1-.4.3-.5.1-.2.3-.3.6-.3h4.8c.2 0 .4.1.5.3.2.1.3.3.3.5 0 .3 0 .5-.2.6l-.6.3z"/><path d="M199.4 28.5h-21.8c-.2 0-.5-.1-.6-.3a.8.8 0 0 1-.3-.6c0-.2.1-.4.3-.5l.6-.3h21.8l.6.3.2.5c0 .3 0 .5-.2.6l-.6.3zm11 0h-8.9a.8.8 0 0 1-.8-.9c0-.2 0-.4.2-.5l.6-.3h8.9l.6.3.2.5c0 .3 0 .5-.2.6l-.6.3z"/><path fill="#fff" d="M170.9 35.2h-4.7c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6c0-.2.1-.5.3-.6.1-.2.3-.3.6-.3h4.7l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2z"/><path d="M197 35.2h-20.6a.8.8 0 0 1-.9-.8l.3-.6c.1-.2.3-.3.6-.3H197a.8.8 0 0 1 .8.9c0 .2 0 .4-.2.6l-.6.2z"/><path fill="#fff" d="M175 42h-8.8a.8.8 0 0 1-.9-.9l.3-.6.6-.2h8.9c.2 0 .4 0 .5.2l.3.6-.3.6-.5.2zm5.8 6.6H167c-.2 0-.4 0-.5-.2a.9.9 0 0 1-.3-.6l.3-.6.6-.2h13.6c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6-.2.2-.4.2-.6.2z"/><path d="M193.7 48.6h-9.4c-.3 0-.5 0-.6-.2a.9.9 0 0 1-.3-.6l.3-.6.6-.2h9.4a.8.8 0 0 1 .9.8.8.8 0 0 1-.9.9z"/><path d="M201.8 48.6H195c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2h6.7c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6-.2.2-.4.2-.6.2z"/><path fill="#fff" d="M187.6 55.4h-19.9l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2h19.9a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3z"/><path d="M199.1 55.4h-9a.5.5 0 0 1-.5-.3.8.8 0 0 1-.3-.6l.3-.6.6-.2h8.9c.2 0 .4 0 .6.2a.8.8 0 0 1 0 1.2l-.6.3zm9.2-20.2h-9c-.1 0-.3 0-.5-.2a.9.9 0 0 1-.3-.6l.3-.6c.1-.2.4-.3.6-.3h9a.8.8 0 0 1 .6 1.5l-.3.2a1 1 0 0 1-.3 0zM187.7 42h-6.6a.9.9 0 0 1-.6-.3.8.8 0 0 1 0-1.2l.6-.2h6.6c.2 0 .5 0 .6.2.2.2.2.4.2.6 0 .2 0 .4-.2.6l-.6.2z"/><path fill="#fff" d="M206 42h-15.8a1 1 0 0 1-.6-.3.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2H206c.2 0 .4 0 .5.2l.3.6-.3.6-.6.2z"/><path d="M155 26.8h-1.2v1.7h1.2v-1.7zm0 6.6h-1.2v1.7h1.2v-1.7zm0 6.6h-1.2v1.7h1.2V40zm0 6.6h-1.2v1.7h1.2v-1.6zm0 6.7h-1.2v1.6h1.2v-1.6zm0 6.6h-1.2v1.6h1.2V60zm0 6.6h-1.2V68h1.2v-1.6zm0 6.5h-1.2v1.7h1.2v-1.6zm0 6.7h-1.2v1.6h1.2v-1.6zm0 6.6h-1.2V88h1.2v-1.7zm0 6.7h-1.2v1.6h1.2v-1.7zm0 6.5h-1.2v1.7h1.2v-1.7zm0 6.6h-1.2v1.7h1.2V106zm0 6.7h-1.2v1.6h1.2v-1.6zm0 6.6h-1.2v1.6h1.2v-1.6zm0 6.6h-1.2v1.6h1.2V126z"/><path fill="#fff" d="M173.9 167.5H166a.5.5 0 0 1-.5-.3.8.8 0 0 1 0-1.2l.6-.2h7.8c.2 0 .4 0 .5.2a.8.8 0 0 1 0 1.2c-.1.2-.3.3-.5.3z"/><path d="M193.6 167.5H178a.8.8 0 0 1-.6-1.5l.6-.2h15.6a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm4.7 6.7h-15.6a.8.8 0 0 1-.8-.8c0-.3 0-.5.2-.6l.6-.3h15.6l.6.3c.2.1.2.3.2.5 0 .3 0 .5-.2.6l-.6.3z"/><path fill="#fff" d="M175.7 174.2h-7.8a.8.8 0 0 1-.8-.8c0-.3 0-.5.2-.6l.6-.3h7.8l.6.3.2.5c0 .3 0 .5-.2.6l-.6.3zm.3 6.7h-6.2c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6.8.8 0 0 1 .8-.9h6.3c.2 0 .4.1.5.3.2.1.3.3.3.6a.8.8 0 0 1-.8.8z"/><path d="M201 180.9h-19.5c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.6.8.8 0 0 1 .8-.9h19.6c.2 0 .4.1.5.3.2.1.3.3.3.6a.8.8 0 0 1-.8.8z"/><path fill="#fff" d="M179.4 187.7h-7.8c-.2 0-.5-.1-.6-.3a.8.8 0 0 1 0-1.1c.1-.2.4-.3.6-.3h7.8l.6.3.2.5c0 .3 0 .5-.2.6l-.6.3z"/><path d="M205 187.7h-23l-.6-.3a.8.8 0 0 1-.3-.6c0-.2.2-.4.3-.5l.6-.3h23l.6.3.2.5c0 .3 0 .5-.2.6l-.6.3z"/><path fill="#fff" d="M177.3 194.3h-7.8c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.3-.6l.3-.6.6-.2h7.8c.2 0 .4 0 .6.2.2.2.2.4.2.6a.8.8 0 0 1-.8.8z"/><path d="M192.9 194.3h-12.6c-.2 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6l.3-.6.6-.2h12.6a.8.8 0 0 1 .8.8.8.8 0 0 1-.8.8zm13.9 0h-9a.8.8 0 0 1-.7-1.4l.6-.2h9.1c.3 0 .5 0 .6.2l.3.6-.1.3c0 .2-.1.2-.2.3l-.3.2a1 1 0 0 1-.3 0zm-4.8-26.8h-4.3a.8.8 0 0 1-.6-.3.8.8 0 0 1-.3-.6l.1-.3a.8.8 0 0 1 .5-.4h9.9c.2 0 .4 0 .5.2.2.1.3.4.3.6a.8.8 0 0 1-.8.8H202z"/><path fill="#fff" d="M172.2 135.3H168c-.2 0-.5 0-.6-.2a.8.8 0 0 1 0-1.2l.6-.2h4.2c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6-.2.2-.4.2-.6.2z"/><path d="M195.3 135.3h-19.1a1 1 0 0 1-.6-.2 1 1 0 0 1-.3-.6.8.8 0 0 1 .9-.8h19.1c.2 0 .4 0 .6.2.2.2.2.4.2.6 0 .2 0 .4-.2.6-.2.2-.4.2-.6.2zm9.7 0h-7.8a1 1 0 0 1-.6-.2 1 1 0 0 1-.3-.6.8.8 0 0 1 .9-.8h7.8c.2 0 .4 0 .6.2.2.2.2.4.2.6 0 .2 0 .4-.2.6a1 1 0 0 1-.6.2z"/><path fill="#fff" d="M170.3 142H166c-.2 0-.4 0-.5-.2a.9.9 0 0 1-.3-.6l.3-.6.6-.2h4c.3 0 .5 0 .7.2l.2.6c0 .2 0 .5-.2.6-.2.2-.4.2-.6.2z"/><path d="M193.2 142h-18a.8.8 0 0 1-1-.8l.3-.6.6-.2h18.1c.2 0 .4 0 .6.2l.2.6a.8.8 0 0 1-.8.9z"/><path fill="#fff" d="M174 148.8h-8a.5.5 0 0 1-.5-.3.8.8 0 0 1 0-1.2l.5-.2h7.8c.3 0 .5 0 .6.3a.8.8 0 0 1 0 1.1c-.1.2-.3.3-.6.3zm8.9 6.7h-15.6a.8.8 0 0 1-.8-.8c0-.3 0-.5.2-.6l.6-.3h15.6l.6.3.2.6c0 .2 0 .4-.2.5l-.6.3z"/><path d="M197.7 155.5H187c-.2 0-.5-.1-.6-.3a.8.8 0 0 1 0-1.1c.1-.2.4-.3.6-.3h10.8c.2 0 .5.1.6.3.2.1.2.3.2.6 0 .2 0 .4-.2.5l-.6.3z"/><path d="M207 155.5h-7.8a.8.8 0 0 1-.8-.8c0-.3.1-.5.3-.6.1-.2.3-.3.6-.3h7.6l.6.3c.2.1.2.3.2.6 0 .2 0 .4-.2.5l-.6.3z"/><path fill="#fff" d="M190.7 162.2H168c-.2 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6c0-.3.1-.5.3-.6.1-.2.4-.3.6-.3h22.7l.6.3.2.6a.8.8 0 0 1-.8.8z"/><path d="M203.9 162.2h-10.3c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.6c0-.3.1-.5.3-.6.1-.2.3-.3.5-.3H204c.2 0 .4.1.5.3.2.1.3.3.3.6 0 .2 0 .4-.2.6l-.6.2zm-.7-20.2h-7.9c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2h7.9c.2 0 .4 0 .6.2l.2.6a.8.8 0 0 1-.8.9zm-18.2 6.8h-5.8a.5.5 0 0 1-.5-.3.8.8 0 0 1 0-1.2l.5-.2h5.9a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3z"/><path fill="#fff" d="M201 148.8h-13.7c-.3 0-.5-.1-.6-.3a.8.8 0 0 1 0-1.2l.5-.2h13.9c.2 0 .4 0 .5.3a.8.8 0 0 1 0 1.1c-.1.2-.3.3-.5.3z"/><path d="M155 133.7h-1.2v1.6h1.2v-1.6zm0 6.6h-1.2v1.6h1.2v-1.6zm0 6.6h-1.2v1.6h1.2V147zm0 6.6h-1.2v1.6h1.2v-1.6zm0 6.6h-1.2v1.6h1.2v-1.6zm0 6.6h-1.2v1.7h1.2v-1.7zm0 6.6h-1.2v1.7h1.2v-1.7zm0 6.7h-1.2v1.6h1.2v-1.7zm0 6.5h-1.2v1.7h1.2v-1.7zm0 6.7h-1.2v1.6h1.2v-1.6z"/><path fill="#242424" d="M81.2 266.6c-2.1 0-4.2-.2-6.2-.6a.7.7 0 0 1-.5-.3.7.7 0 0 1-.2-.6l.4-.5h.6s11.4 2.3 18.1-3.1c3.3-2.6 5-6.7 5-12a5.6 5.6 0 0 0-2-5c-3.7-2.4-11 1.1-11 1.1H85a.8.8 0 0 1-.4-.3v-.6l.2-.4c.4-.2 8.1-3.9 12.4-1.2 2 1.2 2.8 3.4 2.8 6.4 0 5.9-1.9 10.3-5.5 13.3-3.9 2.7-8.5 4-13.3 3.8z"/><path fill="#fff" d="M50.9 299.4c27.6 0 50-6.3 50-14 0-7.8-22.4-14.1-50-14.1-27.7 0-50 6.3-50 14 0 7.8 22.3 14.1 50 14.1z"/><path fill="#242424" d="M50.9 300.2c-28.6 0-50.9-6.5-50.9-14.9 0-8.3 22.3-14.9 50.9-14.9 28.5 0 50.8 6.6 50.8 15 0 8.3-22.3 14.8-50.9 14.8zm0-28.1c-29.5 0-49.2 6.8-49.2 13.2 0 6.4 19.7 13.3 49.1 13.3 29.5 0 49.3-6.9 49.3-13.3 0-6.3-19.8-13.2-49.2-13.2z"/><path fill="#DBDBDB" d="M50.9 288.4c11.7 0 21.2-2 21.2-4.3 0-2.5-9.5-4.5-21.3-4.5-11.7 0-21.2 2-21.2 4.5 0 2.4 9.5 4.3 21.2 4.3z"/><path fill="#fff" d="M91 229.3c0 7.2-3.9 56.4-40.2 56.4-36.2 0-40.1-49.1-40.1-56.3 0-7.3 18-13 40.1-13 22.2 0 40.3 5.8 40.3 13z"/><path fill="#242424" d="M50.9 286.5c-15.4 0-27.3-9-34.4-26a92 92 0 0 1-6.6-31.1c0-7.8 18-13.8 41-13.8 22.9 0 41 6 41 13.8a92.7 92.7 0 0 1-6.6 31.1c-7.1 17-19 26-34.4 26zm0-69.4c-21.4 0-39.5 5.6-39.5 12.3 0 .5 1.7 55.6 39.5 55.6 37.7 0 39.4-55 39.4-55.6 0-6.7-18-12.3-39.5-12.3z"/><path fill="#242424" d="M50.9 242.4c22.1 0 40.1-5.8 40.1-13s-18-13-40.2-13c-22.1 0-40.1 5.8-40.1 13s18 13 40.1 13z"/><path fill="#242424" d="M50.9 243.3c-23 0-41-6.2-41-14 0-7.7 18-13.8 41-13.8s41 6.1 41 13.8c0 7.8-18 14-41 14zm0-26.1c-23.6 0-39.4 6.3-39.4 12.2 0 5.9 15.8 12.2 39.4 12.2 23.5 0 39.3-6.3 39.3-12.3 0-5.9-15.8-12.1-39.4-12.1z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/laptop-cybersecurity.svg b/static/img/flatline/laptop-cybersecurity.svg
new file mode 100644 (file)
index 0000000..514c60b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 600 601"><path fill="#101828" d="M109 470.8h382v10.9c0 3.2-2.6 5.8-5.7 5.8H114.7a5.8 5.8 0 0 1-5.7-5.8v-11Z"/><path fill="#FBFBFB" d="M484.6 478H115.4a6.5 6.5 0 0 1-6-8.7l33-97.9c3-8.7 11.2-14.5 20.3-14.5h274.5c9.2 0 17.4 5.9 20.2 14.5l33.2 98a6.5 6.5 0 0 1-6 8.6Z"/><path fill="#101828" d="M484.6 478.7H115.4a7.3 7.3 0 0 1-7-9.6l33.2-98c3-9 11.5-15 21-15H437c9.5 0 18 6 21 15l33.2 98a7.2 7.2 0 0 1-6.6 9.6Zm-321.9-121c-8.9 0-16.8 5.7-19.5 14l-33.2 98c-1 3 .5 6.2 3.5 7.3.6.3 1.3.4 2 .4h369c3 0 5.7-2.5 5.7-5.8a5 5 0 0 0-.4-2l-33-97.8a20.7 20.7 0 0 0-19.6-14H162.7Z"/><path fill="#DBDBDB" d="M447 420.5H153.8a5.4 5.4 0 0 1-5.1-7l11.7-39.7a6 6 0 0 1 5.8-4.2h267.2c3 0 5.6 2 6.4 4.8l11.9 40c.7 2.5-.7 5.1-3.3 5.9-.6.2-1 .3-1.4.2Zm-281-49.2a4.3 4.3 0 0 0-4 3L150.2 414c-.6 2 .5 4 2.4 4.7l1.2.1H447c1 0 2-.5 2.5-1.2.6-.8.9-2 .5-2.9l-11.9-40a4.9 4.9 0 0 0-4.8-3.5H166.1Zm184.9 93.5H249.2a5.8 5.8 0 0 1-5.7-5.8l.1-1.2 4.8-22c.8-4 4.4-7 8.5-7h86a9 9 0 0 1 8.7 7l4.8 22a5.8 5.8 0 0 1-4.3 6.9h-1.2ZM257 430.6a7.2 7.2 0 0 0-7 5.5l-4.7 22c-.3 1.3 0 2.5.8 3.4a4 4 0 0 0 3.1 1.6H351a4 4 0 0 0 3.1-1.6c.7-1 1-2.1.8-3.3L350 436a7 7 0 0 0-7-5.5h-86Z"/><path fill="#101828" d="M155 145.8h289.8c4.4 0 7.8 3.5 7.8 7.8v195.5c0 4.3-3.4 7.8-7.8 7.8H155a7.8 7.8 0 0 1-7.8-7.8V153.6c0-4.3 3.5-7.8 7.8-7.8Z"/><path fill="#101828" d="M441.7 357.7H158c-6.4 0-11.7-5.2-11.7-11.7V156.7c0-6.4 5.3-11.7 11.7-11.7h283.7c6.5 0 11.8 5.3 11.8 11.7V346c0 6.5-5.3 11.7-11.8 11.7ZM158 146.7a10 10 0 0 0-10 10V346a10 10 0 0 0 10 10h283.7c5.5 0 10.1-4.5 10.1-10V156.7a10 10 0 0 0-10-10H158Z"/><path fill="#85C241" d="M436.3 160.3H162.8V342h273.5V160.3Z"/><path fill="#FBFBFB" d="M182.3 115h235.5c3 0 5.4 2.4 5.4 5.4V342H176.8V120.4c0-3 2.5-5.4 5.5-5.4Z"/><path fill="#101828" d="M423.2 342.9H176.8a.8.8 0 0 1-.8-.8V122.5c0-4.6 3.8-8.4 8.4-8.4h231.2c4.6 0 8.4 3.8 8.4 8.4V342c0 .5-.3.9-.8.9Zm-245.6-1.6h244.8V122.5c0-3.7-3-6.8-6.8-6.8H184.4c-3.7 0-6.8 3-6.8 6.8v218.8Z"/><path fill="#101828" d="M423.2 139H176.8c-.5 0-.9-.1-.9-.6s.3-.9.7-.9h246.6c.5 0 .9.3.9.8 0 .4-.3.8-.7.8h-.2Z"/><path fill="#DBDBDB" d="M198.5 155.5H264c3.4 0 6.1 2.8 6.1 6.2v25.9a6 6 0 0 1-6.1 6h-65.6a6.1 6.1 0 0 1-6.2-6v-26a6.3 6.3 0 0 1 6.3-6Zm0 48.5H264c3.4 0 6.1 2.8 6.1 6.1v111a6 6 0 0 1-6.1 6h-65.6a6.1 6.1 0 0 1-6.2-6V210a6.3 6.3 0 0 1 6.3-6Zm87.9-48.5h115.1a6 6 0 0 1 6 6.2V321a6 6 0 0 1-6 6h-115a6.1 6.1 0 0 1-6.2-6V161.5c.1-3.2 2.8-6 6.1-6Zm-88.8-25.8a3.6 3.6 0 1 0 0-7.2 3.6 3.6 0 0 0 0 7.2Zm14.2 0a3.6 3.6 0 1 0 0-7.2 3.6 3.6 0 0 0 0 7.2Zm14 0a3.6 3.6 0 1 0 0-7.2 3.6 3.6 0 0 0 0 7.2ZM404 127h-38.6c-.5 0-.7-.4-.7-.7 0-.4.3-.8.7-.8h38.5c.5 0 .7.4.7.8.2.3-.2.7-.7.7ZM299.8 402.9c20.4 0 37-3.4 37-7.6 0-4.2-16.6-7.6-37-7.6-20.5 0-37 3.4-37 7.6 0 4.2 16.5 7.6 37 7.6Z"/><path fill="#85C241" d="M394.2 178.3V240A165 165 0 0 1 361 341.4a147 147 0 0 1-58.5 47.8c-1.5.8-3.2.8-4.8 0a155.3 155.3 0 0 1-78.3-82.5 158 158 0 0 1-13.5-66.4c.3-19.4 0-38.7 0-58V178H221c16.1-.2 32.2-1 48-5a94 94 0 0 0 29-12.5c1.2-1.1 3-1.1 4.3 0a95.9 95.9 0 0 0 45 15.2c14.5 1.3 29 1.7 43.7 2.4l3.2.1Z"/><path fill="#101828" d="M300 390.5c-1 0-2-.2-2.8-.7a157 157 0 0 1-78.7-82.8c-9.2-21-13.8-43.8-13.4-66.7.2-13.5.1-27 .1-40.2v-22c0-.5.4-.7.7-.7h15c15.4-.3 31.8-1 47.8-5a91.3 91.3 0 0 0 28.7-12.3 4.1 4.1 0 0 1 5.1 0 95.7 95.7 0 0 0 44.7 15.1c10 1 20.4 1.3 30.4 1.8l13.2.6h3.4c.5 0 .7.4.7.7v22c0 13-.1 26.5.1 39.7.5 36.5-10.8 70.8-33.4 101.8a147.6 147.6 0 0 1-58.8 48c-.9.5-1.8.7-2.8.7Zm-93.4-211.7V200c0 13.2.2 26.8 0 40.2a159 159 0 0 0 13.2 66.2 155.3 155.3 0 0 0 78 82c1.2.8 2.8.8 4.1 0a146.7 146.7 0 0 0 58.2-47.5 164.4 164.4 0 0 0 33.1-101V179h-2.7l-13.2-.6c-10.1-.4-20.4-.8-30.5-1.8a98.8 98.8 0 0 1-45.4-15.3c-1-.9-2.5-.9-3.4 0a98 98 0 0 1-29.2 12.5c-16 4-32.6 4.8-48.1 5h-10.2l-3.9.1Z"/><path fill="#FBFBFB" d="M300 379.3h-.4a144.6 144.6 0 0 1-71.5-76.5c-8.6-19.7-13-41-12.6-62.4.3-13.6.1-27.1.1-40.3v-11.3c0-.5.4-.7.8-.7h4.6c16-.3 33.2-1.1 50.2-5.3a102 102 0 0 0 28.3-11.5c.3-.2.6-.2.9 0a109 109 0 0 0 45.8 14.6c10.4 1 20.9 1.3 31 1.8l6.3.2c.4 0 .7.4.7.8v11.8c0 13 0 26.4.2 39.6.4 34.7-9.9 66-31.5 95.4a137 137 0 0 1-52.7 43.7l-.2.1Zm-82.8-189.8V200c0 13.2.1 26.8-.1 40.4-.4 21.2 4 42.2 12.5 61.7a143.2 143.2 0 0 0 70.4 75.6 135.5 135.5 0 0 0 51.7-43.1 152.1 152.1 0 0 0 31.1-94.6l-.1-39.7v-11.1l-5.7-.3c-10.2-.5-20.6-.8-31-1.8-16.4-1.3-32-6.3-46.1-14.6-8.9 5.1-18.4 9-28.3 11.4a224 224 0 0 1-50.6 5.3c-1.2.2-2.5.2-3.8.2Z"/><path fill="#FBFBFB" d="M289.7 311.7c-3 0-5.9-1.4-7.8-3.5l-32-35c-4-4.1-3.9-10.9.3-15a10.6 10.6 0 0 1 15.2.7l24.4 26.6 59.3-62.9a10.6 10.6 0 0 1 15.3 14.7l-67 71.1a10 10 0 0 1-7.7 3.3Z"/></svg>
\ No newline at end of file
diff --git a/static/img/flatline/new-message.svg b/static/img/flatline/new-message.svg
new file mode 100644 (file)
index 0000000..ee8e044
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 299.6 400.9"><g class="layer"><path fill="#FBFBFB" d="M258 388.5 281.4 272l7.8-71.6s-78.3-76.9-100.7-102c-22.3-25.2-47.5-61.4-59-58.7-11.5 2.7-13.7 15.9-6.2 32 3.1 6.7 7.8 14.1 10 21 1.7 5.6 1.1 21.3-4.3 25.3-6.5 4.7-12.7-18.2-21-14.1-4.3 2.1-8.6 13.2-4.9 25.2 2.2 5.7 5 11.2 8.4 16.3 6.8 11 6.8 17.8 11.2 29.8 4.4 12.3 3.3-4.4-.9 7-5 13.6-12.1 29.7-12.5 44.5-.4 23.7 28.2 62.2 40 81 11.7 18.7-11 63.2-11 63.2l119.5 17.6z"/><path fill="#101828" d="M258 389.4h-.2l-119.5-17.6a.9.9 0 0 1-.7-1.3c.2-.5 22.3-44.2 11-62.3l-7-10.7c-13.3-20.2-33.4-50.6-33-70.8.2-12.7 5.4-26.3 10-38.3l2.5-6.5c.4-1.3 1-2.6 1.8-3.8a133 133 0 0 1-4.4-13.4c-1.6-6.6-4.2-13-7.8-18.7a91.7 91.7 0 0 1-8.4-16.6c-3.9-12.5.6-24 5.4-26.3 4.8-2.4 9 3 12.6 8 1.4 2 3 3.9 4.7 5.6 1.8 1.5 2.8 1.1 3.6.6 4.9-3.6 5.6-18.7 3.9-24.4a84.5 84.5 0 0 0-6.3-13.6l-3.6-7.2c-4.8-10.4-5.8-19.6-2.7-25.9a13.6 13.6 0 0 1 9.5-7.4c9.2-2 24.8 16.8 42.9 38.7 5.6 6.8 11.5 13.9 17 20.2 22.1 24.9 99.8 101.2 100.6 102l.2.3v.4l-7.7 71.6-23.6 116.6c0 .2-.1.5-.3.6a1 1 0 0 1-.6.2zm-118.2-19.2 117.4 17.3 23.4-115.7 7.7-71.1C283 195.3 209.3 123 188 99A751.4 751.4 0 0 1 171 78.7c-16.2-19.6-33-40-41-38a11.8 11.8 0 0 0-8.4 6.4c-2.8 5.7-1.8 14.6 2.7 24.3 1 2.3 2.3 4.6 3.6 7a87 87 0 0 1 6.4 14c1.8 5.6 1.4 22-4.6 26.4-1.8 1.3-3.7 1-5.8-.7a34.4 34.4 0 0 1-5-6c-3.2-4.5-6.7-9.2-10.3-7.4-3.5 1.8-8 12.3-4.4 24.1 2.2 5.7 5 11.1 8.2 16.2a66 66 0 0 1 8 19.3c.9 3.2 1.8 6.6 3.3 10.6.3 1 .6 1.7.9 2.2h.4a2.3 2.3 0 0 1 1.6 2.4c0 .3 0 .6-.2.9-.2.3-.5.4-.8.5-.5 0-1-.1-1.6-1a485.6 485.6 0 0 1-3.6 9c-4.5 12-9.7 25.4-10 37.9-.3 19.5 19.7 49.7 32.8 69.7l7 10.7c11 17.4-6.8 55.8-10.4 63z"/><path fill="#FBFBFB" d="m77.5 276.2 120.3 37.4a9.2 9.2 0 0 0 11.6-6l80-257.3a9.2 9.2 0 0 0-6-11.5L163 1.3a9.2 9.2 0 0 0-11.5 6l-80 257.4a9.2 9.2 0 0 0 6 11.5z"/><path fill="#101828" d="M200.6 315c-1 0-2-.2-3-.5L77.3 277a10.1 10.1 0 0 1-6.7-12.6l80-257.3A10.1 10.1 0 0 1 163.4.4L283.6 38a10.1 10.1 0 0 1 6.7 12.6l-80 257.3a10.1 10.1 0 0 1-9.7 7.1zM77.8 275.2l120.3 37.4a8.3 8.3 0 0 0 10.4-5.4l80-257.3a8.3 8.3 0 0 0-5.3-10.4L162.9 2.2a8.3 8.3 0 0 0-10.4 5.4l-80 257.3c-.8 2.1-.6 4.4.5 6.3 1 2 2.7 3.4 4.8 4.1z"/><path fill="#DBDBDB" d="M87.7 237.2 211 275.6 276.9 64 153.5 25.6 87.7 237.2zM152.3 290.9c-.7 0-1.3-.1-2-.3l-23.4-7.3a6.8 6.8 0 0 1-3.8-3.3 6.4 6.4 0 0 1-.5-5l2.8-9a6.6 6.6 0 0 1 8.3-4.3L157 269a6.5 6.5 0 0 1 4.3 8.2l-2.8 9a6.6 6.6 0 0 1-6.3 4.6zm-20.7-27.6a4.7 4.7 0 0 0-4.5 3.3l-2.8 9a4.8 4.8 0 0 0 .3 3.6 4.8 4.8 0 0 0 2.8 2.4l23.4 7.3a4.6 4.6 0 0 0 3.7-.3 4.7 4.7 0 0 0 2.3-2.9l2.8-9a4.8 4.8 0 0 0-3.2-6l-23.4-7.2c-.4-.2-1-.2-1.4-.2zM244.2 41h-.2l-35.2-11a1 1 0 0 1-.6-1.1 1 1 0 0 1 1.2-.7l35.1 11c.2 0 .4.2.5.4.2.2.2.5.1.7 0 .2-.2.4-.3.5a1 1 0 0 1-.6.2zM204.3 28h-.3l-4.7-1.4a1 1 0 0 1-.6-1.2c0-.2.2-.4.5-.5.2-.1.4-.2.7 0l4.7 1.4c.2 0 .4.2.5.4v.7c0 .2 0 .4-.2.5a1 1 0 0 1-.6.2z"/><path fill="#FBFBFB" d="M141.7 127.7a12.6 12.6 0 0 1-10.8 9.2c-6.3.8-12.6-.9-17.7-4.5-3-2.1-5.5-4.7-7.4-7.8-3.4-5.2-4.5-11.1-2.4-15.7 3.4-7.5 15-9.2 25.1-4.8 9.4 4.1 14.8 16.6 13.2 23.6z"/><path fill="#101828" d="M127.8 138c-5.4 0-10.7-1.8-15.1-4.9-3-2.1-5.7-4.8-7.7-8-3.6-5.7-4.5-11.9-2.4-16.6 3.5-7.7 15.3-10 26.3-5.2 9.6 4.2 15.4 16.9 13.7 24.6a13.4 13.4 0 0 1-11.6 9.9c-1 .2-2 .3-3.2.3zm-10.4-35.4c-6 0-11.2 2.4-13.2 6.7-2 4.3-1 9.7 2.3 14.9 1.9 2.9 4.3 5.4 7.2 7.4 5 3.6 11 5.2 17 4.4a11.7 11.7 0 0 0 10.1-8.5c1.4-6.3-3.3-18.5-12.6-22.6a27 27 0 0 0-10.8-2.3z"/><path fill="#FBFBFB" d="M129.1 161.8a11.9 11.9 0 0 1-1.4 10.3 14 14 0 0 1-5.2 3.9c-5.4 2.6-11.8 3.6-17.2 1-3.2-1.8-6-4.2-8.1-7.2-4-5-7.4-10.8-7.2-17.1.2-9.2 10-19.5 19.6-15.2a46.4 46.4 0 0 1 19.5 24.3z"/><path fill="#101828" d="M112.3 179.4c-2.6 0-5.1-.5-7.4-1.6a25 25 0 0 1-8.4-7.5c-5.2-6.6-7.5-12.2-7.4-17.7a19.2 19.2 0 0 1 8.8-15 12.5 12.5 0 0 1 12-1c8.1 3.6 17.8 16.8 20 25a12.7 12.7 0 0 1-1.5 11 14.7 14.7 0 0 1-5.4 4.2c-3.3 1.7-7 2.6-10.7 2.6zm-7.2-42.1c-2.2 0-4.4.6-6.2 1.8a17.4 17.4 0 0 0-8 13.4c-.1 5.1 2.1 10.4 7 16.6 2 2.9 4.7 5.3 7.8 7 4.6 2.2 10.6 1.8 16.5-1 1.8-.8 3.5-2 4.8-3.6a11 11 0 0 0 1.3-9.5 46.6 46.6 0 0 0-19-23.9 10 10 0 0 0-4.3-.8z"/><path fill="#FBFBFB" d="M115.9 187.3c1.5 2 2.5 4.1 3 6.5a14.3 14.3 0 0 1-6 14.1 20.2 20.2 0 0 1-15.6 2.9 22.9 22.9 0 0 1-15.4-10.6 18.4 18.4 0 0 1-.2-18.3c8.7-14.7 26.5-4.9 34.2 5.4z"/><path fill="#101828" d="M101.8 212.2a25.4 25.4 0 0 1-13.8-4.3 24 24 0 0 1-6.9-7.2 19.4 19.4 0 0 1-.2-19.3 14.8 14.8 0 0 1 12.1-7.8c8.7-.5 18.5 6.3 23.6 13.2 1.6 2 2.7 4.3 3.3 6.8a15.5 15.5 0 0 1-6.5 15 20.2 20.2 0 0 1-11.6 3.6zm-8-36.8h-.7a13 13 0 0 0-10.7 6.9 17.7 17.7 0 0 0 .3 17.4A22 22 0 0 0 97.5 210a19.3 19.3 0 0 0 14.9-2.7A13.6 13.6 0 0 0 118 194c-.5-2.3-1.5-4.4-3-6.2-4.7-6.3-13.4-12.4-21.2-12.4zM273 400l3.8-73.4-139.8 1.8-27.8 71.6H273z"/><path fill="#101828" d="M273 400.9H109.2a1 1 0 0 1-.4-.1 1 1 0 0 1-.3-.3l-.2-.4v-.4l27.8-71.6.4-.5.5-.1 139.9-1.8h.3l.3.3c.1 0 .2.1.2.3v.3L274 400v.4l-.3.2a1 1 0 0 1-.3.2h-.4zM110.5 399h161.7l3.7-71.6-138.3 1.8-27 69.7z"/><path fill="#FBFBFB" d="M280.2 276s22-74 18-91.2c-4-17.3-12-87.2-19.2-90-7.2-2.6-21.6 17.3-21.3 39 .1 12.9 2.2 25.6 6.2 37.8 0 0-23.9 10.5-26.6 69.1"/><path fill="#101828" d="M280.2 277h-.3a1 1 0 0 1-.5-.5.9.9 0 0 1 0-.7c.2-.7 21.9-73.9 18-90.8-1.3-5.4-3-15.6-4.8-27.4-3.6-22.5-9.4-60.1-14-61.8a5.7 5.7 0 0 0-4.9 1.3c-7.4 5.2-15.3 20.7-15 36.8a126 126 0 0 0 6 38c0 .3-.2.5-.4.6 0 0-6 2.7-12 12.4-5.6 9-12.6 26-14 55.9l-.1.3a.9.9 0 0 1-.5.5h-.4a1 1 0 0 1-.6-.2 1 1 0 0 1-.2-.7c2.4-53.4 22.1-67.2 26.3-69.5a129.8 129.8 0 0 1-6-37.4c-.2-16.6 8.1-32.8 16-38.3a7.2 7.2 0 0 1 6.5-1.5c5.1 2 9.5 27.4 15.1 63.2 1.8 11.8 3.5 22 4.7 27.3 4 17.4-17.1 88.7-18 91.8 0 .2-.2.4-.3.5a1 1 0 0 1-.6.2z"/><path fill="#FBFBFB" d="M186.7 36H17A16 16 0 0 0 .9 52v112.1a16 16 0 0 0 16 16h144l23.6 30.2v-30.1h2.2a16 16 0 0 0 16-16.1v-112a16 16 0 0 0-16-16.1z"/><path fill="#101828" d="M184.6 211.2h-.4a.9.9 0 0 1-.4-.3L160.4 181H17a17 17 0 0 1-17-17v-112a17 17 0 0 1 17-17h169.7a17 17 0 0 1 17 17v112a17 17 0 0 1-17 17h-1.3v29.2l-.1.5a1 1 0 0 1-.5.4h-.3zM17 37A15.2 15.2 0 0 0 1.8 52v112A15.2 15.2 0 0 0 17 179.3h143.9a1 1 0 0 1 .7.3l22 28.1v-27.5c0-.2.1-.5.3-.6l.6-.3h2.2a15.2 15.2 0 0 0 15.1-15.2v-112a15.2 15.2 0 0 0-15.1-15.2H17z"/><path fill="#101828" d="m157.1 92.6-52-39.2a5.5 5.5 0 0 0-6.5 0l-52 39.2v65.9H157v-66z"/><path fill="#101828" d="M157.1 159.4H46.2a.9.9 0 0 1-.5-.8V92.1l.3-.3 52-39.2a6.3 6.3 0 0 1 7.6 0l52 39.2c.2 0 .2.2.3.3l.1.4v66.2l-.3.3a1 1 0 0 1-.6.3zm-109.7-1.8h108.8V93l-51.7-38.9a4.5 4.5 0 0 0-5.4 0l-51.7 39v64.5z"/><path fill="#FBFBFB" d="M144 71H57v82.6H144V71z"/><path fill="#101828" d="M144 154.4H56.5a.8.8 0 0 1-.2-.2l-.2-.3V70.7l.2-.3.2-.2H144c.3 0 .5 0 .6.2l.3.6v82.6l-.3.6-.6.2zm-86.4-1.6h85.6v-81H57.7v81z"/><path fill="#DBDBDB" d="M131.2 115H69.7a1 1 0 0 1-1-.9l.3-.6c.2-.2.4-.3.7-.3h61.5c.3 0 .5.1.7.3a.9.9 0 0 1 0 1.3 1 1 0 0 1-.7.2zM103.3 123.8H69.7a1 1 0 0 1-.7-.2.9.9 0 0 1-.2-.7c0-.2 0-.4.2-.6.2-.2.4-.3.7-.3h33.6l.6.3.3.6c0 .3-.1.5-.3.7a1 1 0 0 1-.6.2zM131.2 88.6H69.7c-.3 0-.5 0-.7-.3a.9.9 0 0 1-.2-.6c0-.2 0-.5.2-.6.2-.2.4-.3.7-.3h61.5a1 1 0 0 1 1 .9l-.3.6c-.2.2-.4.3-.7.3zM131.2 97.4H69.7a1 1 0 0 1-1-.9c0-.2.1-.5.3-.6.2-.2.4-.3.7-.3h61.5a1 1 0 0 1 1 1l-.3.5a1 1 0 0 1-.7.3zM131.2 106.2H69.7a1 1 0 0 1-1-.9l.3-.6c.2-.2.4-.3.7-.3h61.5c.3 0 .5.1.7.3a.9.9 0 0 1 0 1.3 1 1 0 0 1-.7.2z"/><path fill="#FBFBFB" d="M157.1 92.6v70.8H46.5V92.6l55.3 41.6 55.3-41.6z"/><path fill="#101828" d="M157.1 164.2H46.2a.7.7 0 0 1-.3-.2l-.1-.3V92.2l.4-.4a.8.8 0 0 1 .8 0l54.8 41.3 54.8-41.3h.9l.3.3.1.5v70.8c0 .2 0 .4-.2.6-.2.2-.4.2-.6.2zm-109.8-1.6h109V94.2l-54 40.6-.6.2c-.2 0-.3 0-.5-.2L47.3 94.2v68.4z"/><path fill="#101828" d="M46.5 164.2a1 1 0 0 1-.3 0 .8.8 0 0 1-.3-.3.9.9 0 0 1-.2-.6c0-.2.1-.4.3-.5l46.2-36.2c.2-.1.4-.2.6-.1a.8.8 0 0 1 .7.5v.7l-.3.2-46.1 36.2-.6.1zM157.1 164.2l-.5-.1-47-35.4a.8.8 0 0 1-.4-.6l.2-.5a.8.8 0 0 1 1.1-.3l47.1 35.5.3.4v.5l-.3.4-.5.1z"/><path fill="#85C241" d="M157.1 151.1a23.1 23.1 0 1 0 0-46.2 23.1 23.1 0 0 0 0 46.2z"/><path fill="#FBFBFB" d="m157.1 120.2-7.2 3.6v-5.6l7.5-3.8h5.2v21.8H157l.1-16z"/><path fill="#DBDBDB" d="M34 87.2h-.2l-20.7-5a1 1 0 0 1-.6-.3 1 1 0 0 1 .3-1.3c.2-.1.5-.2.7-.1l20.7 4.9.3.1.3.3.1.3v.4c0 .2-.2.4-.3.5l-.6.2zM39.6 75.3c-.2 0-.4 0-.5-.2L18.9 59.5a.8.8 0 0 1-.3-.6v-.3l.1-.3.6-.4c.3 0 .5 0 .7.2l20.2 15.6.3.5v.5l-.4.5-.5.1zM51.8 62.6a1 1 0 0 1-.8-.6l-5.3-14.4v-.7l.5-.5h.7l.5.6 5.3 14.4v.7l-.3.3-.3.1h-.3z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/security.svg b/static/img/flatline/security.svg
new file mode 100644 (file)
index 0000000..f479abd
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 441.6 339.2"><g class="layer"><path fill="#DBDBDB" d="M384.5 331.6c13.7 0 24.8-2.9 24.8-6.5 0-3.5-11.1-6.4-24.8-6.4-13.6 0-24.7 2.9-24.7 6.4 0 3.6 11 6.5 24.7 6.5zm-321.3 7.6c34 0 61.6-4 61.6-9 0-4.9-27.5-8.9-61.6-8.9-34 0-61.6 4-61.6 9 0 4.9 27.6 8.9 61.6 8.9zm163.6-27.7c53.6 0 97.2-3.8 97.2-8.4 0-4.7-43.5-8.5-97.2-8.5s-97.2 3.8-97.2 8.5c0 4.6 43.5 8.4 97.2 8.4z"/><path fill="#fff" d="M277.3 248.2h-101v42.2h101v-42.2z"/><path fill="#242424" d="M277.3 291.1h-101c-.2 0-.4 0-.6-.2a.7.7 0 0 1-.2-.5v-42.2c0-.2 0-.4.2-.5.2-.2.4-.2.6-.2h101c.2 0 .4 0 .5.2.2.1.2.3.2.5v42.2c0 .2 0 .4-.2.5l-.5.2zM177 289.6h99.5V249H177v40.6z"/><path fill="#fff" d="M305.5 289.7H148a7 7 0 0 0 0 13.8h157.5a7 7 0 1 0 0-13.8z"/><path fill="#242424" d="M305.4 304.3H148.1a7.8 7.8 0 0 1-5.7-2.1 7.7 7.7 0 0 1 2.6-12.8c1-.4 2-.5 3-.5h157.4a7.5 7.5 0 0 1 5.7 2.1 7.6 7.6 0 0 1 1.8 8.6 7.6 7.6 0 0 1-4.4 4.2c-1 .4-2 .5-3 .5zM148 290.4a6.2 6.2 0 0 0-4.4 10.6 6.2 6.2 0 0 0 4.4 1.8h157.4a6.2 6.2 0 0 0 4.4-10.6 6.2 6.2 0 0 0-4.4-1.8H148zm129.3-42.2v4.6c-30.9 3.1-80 15.6-101 21.1v-25.7h101z"/><path fill="#242424" d="M176.3 274.7c-.2 0-.4 0-.5-.2l-.2-.2v-26.1l.1-.5.6-.2h101c.2 0 .4 0 .5.2l.2.5v4.6a.7.7 0 0 1-.6.7c-31 3.2-81 15.8-101 21.1h-.1zm.7-25.7v24c20.5-5.4 68.9-17.6 99.5-20.8V249H177z"/><path fill="#fff" d="M424.2.8H29.3c-9.2 0-16.6 7.4-16.6 16.6v214.3c0 9.2 7.4 16.6 16.6 16.6h395c9.1 0 16.6-7.4 16.6-16.6V17.4c0-9.2-7.5-16.6-16.7-16.6z"/><path fill="#242424" d="M424.2 249H29.3A17.4 17.4 0 0 1 12 231.8V17.4A17.4 17.4 0 0 1 29.3 0h395a17.4 17.4 0 0 1 17.3 17.4v214.3a17.4 17.4 0 0 1-17.4 17.4zM29.3 1.6a15.9 15.9 0 0 0-15.8 16v214.2a15.9 15.9 0 0 0 15.8 15.8h395a15.9 15.9 0 0 0 15.9-15.8V17.4a15.8 15.8 0 0 0-16-15.9H29.3z"/><path fill="#242424" d="M435.6 33.6H13.8c-.2 0-.4 0-.6-.2a.7.7 0 0 1 0-1l.6-.3h421.8a.7.7 0 0 1 .8.8.8.8 0 0 1-.8.8z"/><path fill="#85C241" d="M227.7 222.4h-1.9l-1.9-1a138 138 0 0 1-65-57.4 126 126 0 0 1-16.2-63.7c0-1.2.6-1.8 2-2l5.9-1.4a37.6 37.6 0 0 0 22.7-15.5 32.2 32.2 0 0 0 5.2-19.8c-.1-1.2.3-1.7 1.6-2 9.1-1.5 18.1-3.1 27.2-4.5 10.5-1.9 21.1-2.1 31.7-.9 11.5 1.6 23 3.7 34.5 5.5 1.2.2 1.4.7 1.4 1.6a33.2 33.2 0 0 0 14.2 29.4 46.2 46.2 0 0 0 19 7.5c2.2.4 2.6 1.3 2.7 3a113 113 0 0 1-5.2 37 129.8 129.8 0 0 1-62.8 76.5c-4.9 2.8-10 5.2-15.1 7.7z"/><path fill="#fff" d="M261.6 116.5H192c-7 0-12.7 5.7-12.7 12.7v35.2c0 7 5.7 12.7 12.7 12.7h69.6c7 0 12.7-5.7 12.7-12.7v-35.1c0-7-5.7-12.8-12.7-12.8z"/><path fill="#fff" d="M250.5 127.3H203c-.9 0-1.7-.3-2.3-1-.7-.6-1-1.4-1-2.3v-18.8a27.1 27.1 0 0 1 54.2 0V124a3.3 3.3 0 0 1-3.4 3.3zm-44.1-6.6h40.8v-15.5a20.4 20.4 0 0 0-40.9 0v15.5z"/><path fill="#85C241" d="M226.8 146.5a9.1 9.1 0 1 0 0-18.2 9.1 9.1 0 0 0 0 18.2z"/><path fill="#85C241" d="M229.3 139.2h-5v21.2h5V139zM34.9 24a5.6 5.6 0 1 0 0-11.2 5.6 5.6 0 0 0 0 11.1z"/><path fill="#DBDBDB" d="M54.4 24a5.6 5.6 0 1 0 0-11.2 5.6 5.6 0 0 0 0 11.1zm19.5 0a5.6 5.6 0 1 0 0-11.2 5.6 5.6 0 0 0 0 11.1zM299 217.8a.7.7 0 0 1-.8-.4.7.7 0 0 1 .2-.8l107-113 .6-.2c.2 0 .4.1.5.3a.8.8 0 0 1 0 1l-107 113-.2.1h-.4zM108.8 91.2l-.5-.1a.8.8 0 0 1-.2-.4.3.3 0 0 1 0-.4l.1-.4 45.6-44.7.2-.1.3-.1h.3l.3.2.2.6c0 .2-.1.4-.3.5L109.3 91l-.2.2h-.3zM336.6 119a1 1 0 0 1-.3-.1l-.3-.2a.7.7 0 0 1-.2-.5l.2-.6L389.5 62a.8.8 0 0 1 1 0c.2 0 .3.3.3.5s0 .4-.2.5l-53.5 55.8c-.1.2-.3.2-.5.2z"/><path fill="#fff" d="m17.7 216.2 1.3 8.4s5 2.2 5.2 3.6c.3 1.4 1.7 5.3 1.4 6.4-.7 1.8-3.1 1.1-3.1 1.1.2 1.1.3 2.3.2 3.4-.4.7-11.7 1.6-13.4-.7-1.6-2.3-5.4-26.5-5.4-26.5"/><path fill="#242424" d="M16 240.7c-2.8 0-6.3-.4-7.3-1.8a184.1 184.1 0 0 1-5.5-27.4l.3-.2.2-.1H4l.3.1.2.2.1.3c1.4 9.3 4.1 24.6 5.3 26.2 1.1 1.5 10.4 1.2 12.1.6 0-.9 0-1.8-.3-2.6v-.4l.2-.3a.8.8 0 0 1 .8-.2s1.6.4 2.2-.8c-.1-1.5-.5-3-1-4.4l-.4-1.5c-1.4-1.3-3-2.4-4.8-3a.8.8 0 0 1-.5-.7l-1.2-8.3.1-.5c.1-.2.3-.3.5-.3l.6.1.3.5 1.1 8c1.7.8 5 2.5 5.4 4l.4 1.4c.7 2.5 1.2 4.4.9 5.4-.3.5-.7 1-1.2 1.3-.5.4-1.1.5-1.7.5.2.9.2 1.8 0 2.7-.1.3-.4.7-3.4 1l-4 .1z"/><path fill="#fff" d="M22.4 235.8a18 18 0 0 1-1.8-4.6l1.8 4.6z"/><path fill="#242424" d="m22.4 236.6-.3-.1a.7.7 0 0 1-.3-.3 19 19 0 0 1-2-4.9l.1-.6c.2-.1.3-.3.5-.3h.6c.2.2.3.3.3.5a17.7 17.7 0 0 0 1.8 4.9v.4l-.3.2-.4.1z"/><path fill="#fff" d="m111.7 216.2-1.2 8.4s-5 2.2-5.3 3.6c-.3 1.4-1.7 5.3-1.3 6.4.7 1.8 3.1 1.1 3.1 1.1a9.8 9.8 0 0 0-.2 3.4c.3.7 11.7 1.6 13.3-.7 1.7-2.3 5.4-26.5 5.4-26.5"/><path fill="#242424" d="M113.4 240.7c-2 0-3.7-.2-3.9-.2-3-.4-3.3-.8-3.4-1.1-.2-.9-.2-1.8 0-2.7a2.9 2.9 0 0 1-2.9-1.8c-.4-1 .2-2.9 1-5.4l.3-1.4c.4-1.5 3.6-3.2 5.3-4l1.2-8c0-.2.2-.4.3-.5l.6-.1c.2 0 .4.1.5.3.1.1.2.3.1.5l-1.2 8.4-.1.3-.4.3c-1.8.6-3.4 1.7-4.8 3 0 .4-.2 1-.4 1.5-.5 1.5-.9 3-1 4.5.5 1.2 2.2.7 2.2.7a.7.7 0 0 1 1 .5v.4a11 11 0 0 0-.3 2.6c1.7.6 10.9 1 12.1-.6a175.6 175.6 0 0 0 5.6-26.7h.3l.3-.1.2.1.3.2v.3l.1.3c-.4 2.5-3.8 24.4-5.6 26.8-1 1.5-4.6 1.9-7.4 1.9z"/><path fill="#fff" d="M108.8 235.8c.8-1.4 1.4-3 1.8-4.6l-1.8 4.6z"/><path fill="#242424" d="M108.8 236.6c-.2 0-.3 0-.4-.2a.7.7 0 0 1-.4-.4l.1-.6a17 17 0 0 0 1.8-4.5.8.8 0 0 1 .9-.5l.3.1.2.2v.6a19 19 0 0 1-1.9 4.9l-.3.3h-.3z"/><path fill="#242424" d="M122.1 142.6s-6.2-22.2-13.4-30.2c-7.3-8-27-16.5-59.9-12.3 0 0-17 4.5-27.3 14.3s-14 27.1-14 27.1-12.3 45-5.4 77.8l20.3 1.2s-3-38.4 7.3-69c2 38.4 4.9 99.7 7 159.7l24-.5 6.8-77 2.5 76.2h24.5s7-96 3.6-162.6c12.4 31 9 73.3 9 73.3l20.2-1.2c6.4-29.9-3.4-70-5.2-76.8z"/><path fill="#fff" d="M54.2 73.6c-1-6-11-7.5-10.4-.4 0 2.5 1 4.8 2.6 6.7a6.2 6.2 0 0 0 6.7 1.5"/><path fill="#242424" d="M51 82.8a7.4 7.4 0 0 1-5.2-2.3c-1.8-2-2.8-4.6-2.9-7.3v-2l.9-1.8c.4-.5 1-1 1.5-1.2.6-.4 1.2-.6 1.9-.6a7.3 7.3 0 0 1 7.9 5.8v.4l-.1.3a.9.9 0 0 1-.6.4.8.8 0 0 1-.7-.2l-.2-.3v-.3a5.6 5.6 0 0 0-6-4.4c-1.2.1-3 .8-2.9 3.8 0 2.3 1 4.5 2.5 6.2a5.3 5.3 0 0 0 5.7 1.4h.7c.2 0 .4.2.5.4v.7c0 .2-.2.3-.4.4a6 6 0 0 1-2.5.5z"/><path fill="#fff" d="M79.2 73.6c1-6 11-7.5 10.5-.4-.1 2.5-1 4.8-2.7 6.7a6.2 6.2 0 0 1-6.7 1.5"/><path fill="#242424" d="M82.3 82.8c-.8 0-1.6-.2-2.4-.5a1 1 0 0 1-.5-.5V81c.1-.3.3-.4.5-.5h.7a5.3 5.3 0 0 0 5.8-1.4 9.7 9.7 0 0 0 2.4-6c.2-3-1.7-3.6-2.8-3.8a5.6 5.6 0 0 0-6 4.4l-.1.4-.2.3a1 1 0 0 1-.7.1 1 1 0 0 1-.3-.1 1 1 0 0 1-.3-.3 1 1 0 0 1-.1-.3v-.3a7.3 7.3 0 0 1 7.9-5.9 4.7 4.7 0 0 1 4.2 3.6c.2.6.2 1.3.1 2 0 2.6-1.1 5.1-2.9 7.1a7.5 7.5 0 0 1-5.2 2.4z"/><path fill="#85C241" d="m78.3 103.8-7 42-2.6 15.2-3.3-15.4-8.8-41.8h21.7z"/><path fill="#fff" d="m69.2 118.2 2 27.5-2.4 15.4-3.4-15.5 1.3-27-2.6-4.5 3-4.7 4.2 4.4-2.1 4.4z"/><path fill="#fff" d="M78.3 103.8a11.5 11.5 0 0 1-10.6 5.9 12.7 12.7 0 0 1-11.1-6l.3-4.2.8-9.8.7-9.1h18l.7 7.5.1 2.4 1.1 13.3z"/><path fill="#242424" d="M67.7 110.5a13.5 13.5 0 0 1-11.9-6.3v-.5l1.8-23.2c0-.2 0-.4.2-.5l.6-.3h18c.3 0 .5.1.6.3.2.1.3.3.3.5l1.9 23.2v.4a12.2 12.2 0 0 1-11.5 6.4zm-10.2-7a12 12 0 0 0 10.2 5.3 10.7 10.7 0 0 0 9.7-5.2l-1.7-22.2H59.2l-1.7 22.1z"/><path fill="#242424" d="M78.5 87.4a8.6 8.6 0 0 1-1.3 3.1c-1.5 2.2-3.5 4-5.9 5.2-3.9 2.1-9.7 4.6-14.4 3.8l.8-9.8c3.5.4 7 .4 10.4 0 3 0 6-.6 9-1.6l1.4-.7z"/><path fill="#242424" d="m58.8 100.5-2-.1a.8.8 0 0 1-.5-.3.8.8 0 0 1-.1-.6l.7-9.8c0-.3.2-.5.3-.6l.7-.2c3.4.4 6.8.4 10.2 0a29.5 29.5 0 0 0 10.5-2.4l.4.1.3.4v.4a9.6 9.6 0 0 1-1.3 3.3 16.7 16.7 0 0 1-6.2 5.5 28 28 0 0 1-13 4.3zm-1-1.7A27 27 0 0 0 71 95a15 15 0 0 0 5.6-5l.6-1.1c-3 1-6 1.5-9 1.6-3.2.4-6.5.4-9.7 0l-.6 8.3z"/><path fill="#fff" d="M68 92h-1.7a13.8 13.8 0 0 1-13.8-13.8V56.4l16 3.9 13.3-4v22A13.9 13.9 0 0 1 68 92z"/><path fill="#242424" d="M68 92.9h-1.7a14.7 14.7 0 0 1-14.6-14.7V56l.3-.3.4-.2h.4l15.6 3.9 13.2-3.9h.3c.2 0 .3 0 .4.2l.3.3v22.2A14.7 14.7 0 0 1 68 93zM53.4 57.4v20.8a13 13 0 0 0 13 13H68a13 13 0 0 0 13-13V57.5l-12.2 3.6h-.5l-14.9-3.6z"/><path d="M52.5 68.2V67h.3l2.3-.5a17.4 17.4 0 0 1 9.4.3c2 .4 3.9.5 5.8.2l4.3-.8c1-.2 2.2-.3 3.2-.2a44.7 44.7 0 0 1 5.2 1.2v1.6l-.2.2c-.3.2-.5.5-.6.8l-.3.7-.6 2.5a4.7 4.7 0 0 1-3.2 3.2 6 6 0 0 1-3.5.2 5.6 5.6 0 0 1-4.3-2.9l-1-2.4-.5-1.2-.2-.2-.2-.1h-1l-.3.1-.2.3-.4 1.1c-.3 1-.8 2-1.4 3a5.1 5.1 0 0 1-4.3 2.4c-1.3.2-2.7 0-3.9-.5-.8-.3-1.5-1-1.8-1.7a20 20 0 0 1-1.3-3.8 3 3 0 0 0-.7-1.2 2 2 0 0 1-.6-1z"/><path fill="#242424" d="M84.6 68.2h-.3a.9.9 0 0 1-.5-1.1 21.6 21.6 0 0 0 0-17 16.1 16.1 0 0 0-13.3-9.4 24 24 0 0 0-6.9 1c-2.6.4-5 1.4-7.3 2.9-3 2.4-5 5.8-5.6 9.6-.6 3.8-.7 7.8-.4 11.7 0 .2 0 .4-.2.6a.9.9 0 0 1-1.4-.2l-.1-.4c-.4-4-.2-8 .4-12.1a17 17 0 0 1 6.2-10.6c2.4-1.6 5-2.7 8-3.3a26 26 0 0 1 7.2-1 17.9 17.9 0 0 1 14.9 10.4A23.4 23.4 0 0 1 85 68l-.4.2zM69.3 82.3a15.8 15.8 0 0 1-2.5-.2.9.9 0 0 1-.5-.9s0-.2.2-.3c0 0 0-.2.2-.2 0-.1.1-.2.3-.2h3.9a28 28 0 0 0-2.4-9.5 1 1 0 0 1 .3-.7l.2-.1.4-.1h.3l.3.3.2.3c1 2.6 3.3 9 2.2 10.8l-.5.5-.5.2-2.1.1zm-5.9 3.9a.9.9 0 0 1-.5-.2.8.8 0 0 1-.2-.6l.1-.5.5-.4c.2 0 6.7-1.2 10.9-.2a.9.9 0 0 1 .6.7v.3c0 .3-.2.4-.4.6h-.7c-3.7-.9-10 .3-10.1.3h-.2z"/><path fill="#fff" d="m70.7 309.9-.2 15.8 11.1 2 .5-3.3c1.7 2.1 3.8 3.9 6.2 5.2 3.5 1.6 23.9 8.7 22.1 1.9-1.7-6.9-10.1-9.7-13.9-13.7a10.3 10.3 0 0 1-3-8.3"/><path fill="#242424" d="M106.7 335c-6.4 0-17.4-4.2-18.7-4.8a18 18 0 0 1-5.4-4.1l-.2 1.6c0 .2 0 .3-.2.3 0 .1 0 .2-.2.2l-.2.2h-.3l-11-2a.7.7 0 0 1-.5-.3.7.7 0 0 1-.2-.5l.2-15.8c0-.2 0-.4.2-.5.1-.2.3-.3.5-.3l.3.1.3.2.1.2V325l9.6 1.7.4-2.5c0-.2 0-.3.2-.4 0-.2.2-.2.4-.3h.4l.4.3a19 19 0 0 0 5.9 5c3.5 1.7 18 6.5 20.8 4.2.2-.3.5-.6.2-1.4-1-4.3-5-6.9-8.6-9.4a29.8 29.8 0 0 1-5-4 11 11 0 0 1-3.3-8.9c0-.2.2-.3.4-.4a.8.8 0 0 1 1 .1l.1.6a9.5 9.5 0 0 0 2.8 7.6c1.5 1.4 3 2.7 4.8 3.8 3.8 2.5 8 5.4 9.3 10.2.2.5.2 1 0 1.6 0 .5-.4 1-.8 1.4a6 6 0 0 1-3.7.9z"/><path fill="#fff" d="m59.8 309.9.1 15.8-11.1 2-.5-3.4c-1.7 2.1-3.8 4-6.2 5.2-3.5 1.7-23.9 8.8-22.1 2 1.7-7 10.2-9.8 13.9-13.8a10.4 10.4 0 0 0 3-8.3"/><path fill="#242424" d="M23.8 335c-1.3.2-2.6-.1-3.7-.8-.4-.4-.7-.9-.9-1.4-.1-.5 0-1 .1-1.6 1.2-4.8 5.5-7.7 9.3-10.2 1.7-1.1 3.3-2.4 4.8-3.8a9.6 9.6 0 0 0 2.8-7.6l.1-.6.5-.3h.3l.3.2.2.2v.2a11.3 11.3 0 0 1-3.1 9 29.8 29.8 0 0 1-5.1 3.9c-3.7 2.5-7.6 5.1-8.7 9.4-.2.8 0 1.1.3 1.3 2.8 2.3 17.3-2.4 20.8-4.1 2.3-1.3 4.3-3 6-5l.3-.3a.7.7 0 0 1 .8.3l.2.3.3 2.6 9.7-1.7-.1-15.2c0-.2 0-.4.2-.5a.8.8 0 0 1 1.3.5l.2 15.8c0 .2 0 .4-.2.5-.1.2-.3.3-.5.3l-11 2h-.4s-.2 0-.2-.2c-.1 0-.2 0-.2-.2l-.1-.3-.3-1.6a19 19 0 0 1-5.4 4.1c-1.3.6-12.3 4.9-18.6 4.9z"/><path fill="#fff" d="M94.2 201.9H75c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.4L69 182.6l-4.5 17.5c0 .2-.2.3-.3.4-.2.2-.3.2-.5.2l-26.4-.6a.8.8 0 0 1-.8-.9c0-.2 0-.4.2-.6l.6-.2 25.8.6 5-19.8a.8.8 0 0 1 .9-.6c.1 0 .3 0 .5.2l.3.4 5.8 21h18.6c.2 0 .5 0 .6.2l.3.6a.9.9 0 0 1-.3.6l-.3.2h-.3z"/><path fill="#242424" d="M384 239.2c.3-2.6-.3-5.3-1.6-7.6a57.5 57.5 0 0 1-3.4-4.8c-1.5-3.1-.4-6.8-.8-10.2-.3-2.8-1.5-5.5-3.5-7.5-1.8-1.8-4.1-3-5.8-4.9-2.8-3-3.6-7.4-5.2-11.2-2.2-5.5-6.1-10-11-13.1 3 6-4 13.8-.8 20 1 1.9 2.8 3.3 3.6 5.3 1.7 5-4.1 10.2-2.3 15.1 1 2.4 3.6 3.9 4.8 6.2 1.7 3 .4 6.8.5 10.4a19 19 0 0 0 6.7 12.5c2.1 2.1 4.6 3.9 7 5.8 2.8 2.2 4 4.6 6.4 1a32 32 0 0 0 5.5-17zm3.2 2.8c-.9-3.7-1.5-7.8 0-11.3 1.7-4 6-6.9 6.6-11.2.3-2.8-1.2-5.7-.6-8.5s2.9-4.7 4.8-6.8a28.7 28.7 0 0 0 7.3-17.3c2.9 3.5 5.2 7.3 7 11.5a14.8 14.8 0 0 1-1 13c-.8.9-1.4 1.9-1.8 3-.9 2.7 1.5 5.3 2.7 7.9a9.2 9.2 0 0 1-.9 9.4c-2.4 3-7.2 4.3-8.4 8-.3 1.4-.5 2.9-.4 4.3a12.7 12.7 0 0 1-9 10.8c-3 .7-3-.5-3.4-3-.8-3.3-2-6.5-2.9-9.8z"/><path fill="#242424" d="M378 215c-2.2-7.1-3-14.7-5.2-21.8-1.9-5.6-4.2-11.1-6.8-16.4l9 3.8c2.8 1.2 5.9 2.6 7.2 5.4 2.4 4.9-1.8 11.2.6 16 1.1 1.5 2.3 3 3.6 4.4 2.6 3.7 2.2 8.8.8 13-.7 2-3.4 11.5-5.8 8.8-1-1-1-5-1.4-6.4l-2-6.7zm4.7 95.7-7.4-53.6 1.7-.3c0 .5 5.6 42 7.4 53.7l-1.7.2z"/><path fill="#242424" d="M385 321.9h-1.7c0-14 6-67.5 9.3-71.1l1.2 1c-2.6 2.9-8.7 54.5-8.9 70z"/><path fill="#242424" d="m388 319.2-1.7-.1c1.3-30.1-5-93.3-5.1-94l1.7-.2c0 .6 6.4 64 5 94.3z"/><path fill="#fff" d="M367.5 282.4h33.2l-2.3 33.6a11 11 0 0 1-11 10.4h-6.5a11.1 11.1 0 0 1-11-10.4l-2.4-33.6z"/><path fill="#242424" d="M387.3 327.2H381a12 12 0 0 1-12-11.1l-2.3-33.7v-.3a.8.8 0 0 1 .5-.5l.4-.1H401l.3.3.2.3v.3l-2.3 33.7a12 12 0 0 1-12 11.1zm-18.9-44 2.3 32.8a10.3 10.3 0 0 0 10.2 9.5h6.4a10.3 10.3 0 0 0 10.3-9.5l2.2-32.8h-31.4z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/start-up.svg b/static/img/flatline/start-up.svg
new file mode 100644 (file)
index 0000000..447132e
--- /dev/null
@@ -0,0 +1,74 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 443.2 362.3">
+  <g class="layer">
+    <path fill="#fff" d="M49.8 97.3h343.7a25.7 25.7 0 0 1 25.7 25.7v209.9H24.1V123a25.7 25.7 0 0 1 25.7-25.7z" />
+    <path fill="#242424"
+      d="M419.2 333.7H24.1a.8.8 0 0 1-.8-.8V123a26.6 26.6 0 0 1 26.5-26.5h343.7A26.7 26.7 0 0 1 420 123v209.9c0 .2 0 .4-.2.6l-.6.2zM25 332.1h393.3V123a24.9 24.9 0 0 0-24.9-24.9H49.8A24.9 24.9 0 0 0 25 123v209z" />
+    <path fill="#fff" d="M394.6 118.4H48.8v214.5h345.8V118.4z" />
+    <path fill="#242424"
+      d="M394.5 333.7H48.8a.8.8 0 0 1-.8-.8V118.4a.8.8 0 0 1 .8-.8h345.7c.2 0 .5 0 .6.2l.3.6v214.5l-.1.3-.2.3a.8.8 0 0 1-.6.2zm-344.9-1.6h344.1V119.2h-344v212.9z" />
+    <path fill="#fff" d="M1 332.9h441.4v1.1a27.4 27.4 0 0 1-27.4 27.5H28.3A27.5 27.5 0 0 1 1 334v-1.1z" />
+    <path fill="#242424"
+      d="M415 362.3H28.3A28.3 28.3 0 0 1 0 334v-1.1c0-.2 0-.5.2-.6l.6-.3h441.5c.2 0 .5.1.6.3.2.1.3.4.3.6v1a28.4 28.4 0 0 1-28.2 28.4zM1.7 333.7v.3a26.7 26.7 0 0 0 26.7 26.7H415a26.7 26.7 0 0 0 26.7-26.7v-.3H1.7z" />
+    <path fill="#242424" d="M265 332.9h-86.7v7.5H265V333z" />
+    <path fill="#242424"
+      d="M265 341.3h-86.7l-.6-.3a.9.9 0 0 1-.2-.6V333c0-.2 0-.4.2-.6l.6-.2H265c.2 0 .4 0 .6.2l.2.6v7.5c0 .2 0 .5-.2.6-.2.2-.4.2-.6.2zm-85.9-1.7h85v-5.9h-85v5.9z" />
+    <path fill="#DBDBDB" d="M393 143.7H50.4a.8.8 0 0 1-.9-.8l.3-.6.6-.2H393c.2 0 .4 0 .6.2l.2.6a.8.8 0 0 1-.8.8z" />
+    <path fill="#85C241" d="M65.5 136.7a5.6 5.6 0 1 0 0-11.2 5.6 5.6 0 0 0 0 11.2z" />
+    <path fill="#DBDBDB"
+      d="M82.9 136.7a5.6 5.6 0 1 0 0-11.2 5.6 5.6 0 0 0 0 11.2zm17.4 0a5.6 5.6 0 1 0 0-11.2 5.6 5.6 0 0 0 0 11.2zM383 249.3h-95.2c-.2 0-.5-.1-.6-.3a.8.8 0 0 1-.3-.6v-67.6l.3-.6c.2-.2.4-.2.6-.2h95.1c.2 0 .5 0 .6.2l.3.6v67.6l-.1.3-.2.3-.3.2h-.3zm-94.4-1.7h93.5v-66h-93.5v66z" />
+    <path fill="#fff" d="M239.3 191.6H204v113.6h35.4V191.6z" />
+    <path fill="#242424"
+      d="M239.4 306H204c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6V191.6c0-.2.1-.4.3-.5.1-.2.3-.3.6-.3h35.4c.2 0 .4 0 .5.2l.3.6v113.6c0 .2 0 .4-.2.6l-.6.2zm-34.6-1.7h33.7V192.5h-33.7v111.8z" />
+    <path fill="#fff"
+      d="M69 332.9s7.7-43.1 36.8-55a36.4 36.4 0 0 1 45 12.5s7.5-40 53.7-40 57 31.5 57 31.5 9.5-19 30.3-17.7c21 1.3 24 27.4 24 27.4s18.6-9.3 38.7 0c20 9.3 28.4 41.3 28.4 41.3H69z" />
+    <path fill="#242424"
+      d="M383 333.7H68.5a.8.8 0 0 1-.3-.2l-.1-.4v-.3c1.6-8 4.2-15.9 7.5-23.3 5.2-11.3 14.5-26.1 29.8-32.3a37.3 37.3 0 0 1 44.9 11.3 53 53 0 0 1 54.1-39c40.2 0 54 24 57 30.5 2.9-4.5 12.7-17.8 30.4-16.7 18.8 1.2 23.7 22 24.6 27.1a49 49 0 0 1 38.3.5c20.2 9.4 28.6 40.5 29 41.8v.4s0 .2-.2.3l-.3.3h-.4zm-313-1.6h311.8c-1.6-5.6-10.3-31.6-27.7-39.7a47 47 0 0 0-38.2 0h-.4a1 1 0 0 1-.3-.3 1 1 0 0 1-.1-.3c0-.3-3.4-25.5-23.4-26.7-20-1.2-29.5 17-29.5 17.3-.1.1-.2.3-.4.3-.1.1-.3.2-.4.1l-.5-.1a.8.8 0 0 1-.3-.4c-.1-.3-11.1-31-56.1-31a52 52 0 0 0-53.2 39.8 1 1 0 0 1-.4.3h-.5a35.4 35.4 0 0 0-44.3-12.5c-14.8 6-23.9 20.3-28.9 31.4-3.1 7-5.6 14.3-7.2 21.8z" />
+    <path fill="#fff" d="M240.4 209.7H202l-4.6-18.5H245l-4.6 18.5z" />
+    <path fill="#242424"
+      d="M240.4 210.5h-38.3c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.3-.4l-4.5-18.5v-.4l.1-.3.3-.2.4-.1h47.9a.8.8 0 0 1 .4.6v.4l-4.6 18.5c0 .2-.2.3-.3.4l-.5.2zm-37.8-1.7h37.2l4.1-16.8h-45.5l4.2 16.8z" />
+    <path fill="#fff" d="M178.2 133.6S158 146.2 151 167.2s9 61.5 9 61.5l36.7-39.7-18.5-55.4z" />
+    <path fill="#242424"
+      d="M160 229.5h-.1l-.4-.2a1 1 0 0 1-.3-.3c-.6-1.7-16-41-9-62.1a73 73 0 0 1 27.5-34h.4a1 1 0 0 1 .9.5l18.4 55.4v.4c0 .2 0 .3-.2.4l-36.6 39.7-.6.2zm17.7-94.6a70 70 0 0 0-25.8 32.5c-6.2 18.3 5.8 52.7 8.4 59.7l35.4-38.3-18-54z" />
+    <path fill="#fff" d="M265.2 133.6s20.1 12.6 27.1 33.6-9 61.5-9 61.5L246.7 189l18.5-55.4z" />
+    <path fill="#242424"
+      d="M283.3 229.5a1 1 0 0 1-.3 0 .8.8 0 0 1-.3-.3l-36.6-39.7a.9.9 0 0 1-.2-.4v-.4l18.4-55.4.2-.3.3-.2h.8c.2.1 20.4 13 27.4 34s-8.3 60.4-9 62c0 .2 0 .3-.2.4l-.3.2h-.2zm-35.7-40.8 35.4 38.4c2.6-7 14.6-41.3 8.5-59.7-6-18-22-29.8-25.9-32.5l-18 53.9z" />
+    <path fill="#85C241"
+      d="M254.1 198.2c10-24 16.3-58.7 16.3-97.3 0-58.5-32.3-89-44.5-98.5a7.6 7.6 0 0 0-9.3 0C204.3 12 172 42.4 172 101c0 38.6 6.3 73.3 16.3 97.3 0 0 10 5 32.9 5s32.9-5 32.9-5z" />
+    <path fill="#fff" d="M216.6 2.4a114 114 0 0 0-34.3 45.4h77.8a114 114 0 0 0-34.2-45.3 7.7 7.7 0 0 0-9.3 0z" />
+    <path fill="#242424"
+      d="M260 48.6h-77.7a1 1 0 0 1-.4 0 .8.8 0 0 1-.3-.4.8.8 0 0 1 0-.7c7.4-18 19.3-33.7 34.4-45.7a8.4 8.4 0 0 1 10.4 0 114.3 114.3 0 0 1 34.5 46l-.1.4-.3.3-.4.1zM183.7 47h75.2a112.7 112.7 0 0 0-33.5-43.8 6.8 6.8 0 0 0-8.3 0A112.4 112.4 0 0 0 183.7 47z" />
+    <path fill="#fff" d="M223.1 121.3a30 30 0 1 0 0-60 30 30 0 0 0 0 60z" />
+    <path fill="#242424"
+      d="M223.1 122.2a30.8 30.8 0 1 1 0-61.7 30.8 30.8 0 0 1 0 61.6zm0-60A29.3 29.3 0 0 0 194.5 97 29.2 29.2 0 1 0 223 62.1z" />
+    <path fill="#242424" d="M223.1 109.8a18.5 18.5 0 1 0 0-37 18.5 18.5 0 0 0 0 37z" />
+    <path fill="#242424"
+      d="M223.1 110.7a19.3 19.3 0 1 1 0-38.7 19.3 19.3 0 0 1 0 38.6zm0-37a17.6 17.6 0 0 0-3.4 35 17.6 17.6 0 0 0 21.1-17.4 17.7 17.7 0 0 0-17.7-17.7z" />
+    <path fill="#fff"
+      d="M237.8 90.4a1 1 0 0 1-.5-.2.8.8 0 0 1-.3-.5 13.2 13.2 0 0 0-14.1-12.4 1 1 0 0 1-.3-.2l-.2-.2-.1-.3v-.4l.2-.2.3-.2.3-.1a15 15 0 0 1 15.5 14.1l-.1.3a.8.8 0 0 1-.6.3zm-21.1-11.3h-.4a.8.8 0 0 1-.4-.6V78l.3-.3c1-.7 2.2-1.2 3.4-1.4a.8.8 0 0 1 1 .7l-.2.6-.6.4a6 6 0 0 0-2.6 1c-.2.2-.3.2-.5.2zm33.8 111.1h-.3a.8.8 0 0 1-.5-1 430 430 0 0 0 12.9-50.8.8.8 0 0 1 .6-.2c.2 0 .4.2.5.4.2.2.2.4.2.6a426.8 426.8 0 0 1-13 50.8l-.4.2z" />
+    <path fill="#242424"
+      d="M226 236.8a1 1 0 0 1-.6-.2.9.9 0 0 1-.3-.6v-23.8c0-.2.1-.5.3-.6.1-.2.3-.3.5-.3.3 0 .5.1.6.3.2.1.3.4.3.6V236l-.3.6-.6.2zm-12.9 12.5-.6-.3a.9.9 0 0 1-.2-.6v-24.9c0-.2 0-.4.2-.5l.6-.3c.3 0 .5.1.6.3.2.1.3.3.3.5v25l-.1.2-.2.3-.2.2h-.4zm-76.4 61.2h-.2a.8.8 0 0 1-.5-.3.9.9 0 0 1-.2-.7c.1-.5 2.6-12.6 13.2-18.2 7.8-4 17.8-3.5 29.7 1.7l.3.2.1.3.1.3v.3l-.2.3-.3.1h-.7c-11.4-5-20.9-5.5-28.2-1.7a26.9 26.9 0 0 0-12.3 17.1.8.8 0 0 1-.8.6zM279 295.6h-.4a.8.8 0 0 1-.3-.3c-18-19.8-31.4-12-32-11.6h-.6a.9.9 0 0 1-.5-.3l-.1-.3v-.3l.1-.3.3-.2c.1-.1 15-9 34 12l.2.2v.6c0 .1 0 .2-.2.3l-.2.2a1 1 0 0 1-.4 0z" />
+    <path fill="#DBDBDB"
+      d="M122.3 181.6H69a.8.8 0 0 1-.9-.8.8.8 0 0 1 .9-.8h53.3c.2 0 .4 0 .6.2l.2.6a.8.8 0 0 1-.8.8zm0 19.9H69a.8.8 0 0 1-.9-.8.8.8 0 0 1 .9-.8h53.3c.2 0 .4 0 .6.2l.2.6a.8.8 0 0 1-.8.8zm0 19.9H69c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6l.3-.6.5-.2h53.4c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.3zm0 19.9H69c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6l.3-.6.5-.2h53.4c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.3zm23.4-208.8c-.3 0-.6 0-1-.2a3 3 0 0 1-2-2.8l-.2-6.4a1.4 1.4 0 0 0-.5-1l-5-4a3 3 0 0 1-1-1.4 3 3 0 0 1 0-1.9 3 3 0 0 1 2.8-2l6.4-.2.6-.1.5-.4 3.9-5a3 3 0 0 1 1.5-1 3.1 3.1 0 0 1 3.3 1c.4.6.6 1.2.6 1.8l.1 6.4c0 .2 0 .4.2.6 0 .2.2.3.4.5l5 3.9c.5.3.8.8 1 1.4a3 3 0 0 1 0 1.9 3 3 0 0 1-2.9 2l-6.3.2-.6.1-.5.4-3.9 5c-.3.4-.6.7-1 .9a3 3 0 0 1-1.4.3zm6.8-25-.6.1-.5.4-3.9 5a3 3 0 0 1-1 .9 3 3 0 0 1-1.3.3l-6.4.1a1.3 1.3 0 0 0-1.3 1 1.3 1.3 0 0 0 .5 1.5l5 3.9.8 1c.3.4.4.9.4 1.3v6.4c0 .3.2.6.3.8a1.4 1.4 0 0 0 2.3 0l3.8-5A3.1 3.1 0 0 1 153 24h6.4c.3 0 .5-.1.8-.3l.5-.7a1.4 1.4 0 0 0-.5-1.5l-5-4c-.4-.2-.7-.6-.9-1a3 3 0 0 1-.3-1.3V8.8a1.4 1.4 0 0 0-.5-1l-.5-.2-.5-.1zM327.1 45a3.5 3.5 0 0 1-3.2-2l-3.2-7.1a1.9 1.9 0 0 0-1.3-1l-7.5-2a3.5 3.5 0 0 1-2.6-3c-.1-.8 0-1.6.4-2.2.4-.6 1-1.1 1.6-1.4l7-3.3c.3 0 .5-.2.7-.5l.4-.7 1.8-7.5a3.6 3.6 0 0 1 3.2-2.7 3.5 3.5 0 0 1 3.5 2l3.2 7.1.6.7.7.4 7.6 1.8a3.5 3.5 0 0 1 .6 6.7l-7 3.2c-.3.2-.6.3-.7.5l-.4.8-1.9 7.5a3.5 3.5 0 0 1-3.1 2.7h-.4zm-2.4-31.8h-.1c-.4 0-.8.2-1.1.5a2 2 0 0 0-.6 1l-1.9 7.5a3.5 3.5 0 0 1-2 2.4l-7 3.2c-.4.2-.7.4-.8.8a2 2 0 0 0-.3 1.1 1.8 1.8 0 0 0 1.4 1.7l7.6 1.9a3.5 3.5 0 0 1 2.3 2l3.2 7a1.9 1.9 0 0 0 2 1A1.9 1.9 0 0 0 329 42l1.9-7.6a3.5 3.5 0 0 1 2-2.3l7-3.3c.3-.1.6-.4.8-.7.2-.4.3-.7.3-1.1 0-.4-.2-.8-.5-1.1-.2-.3-.6-.5-1-.6l-7.5-1.9a3.4 3.4 0 0 1-2.3-2l-3.3-7a1.8 1.8 0 0 0-1.7-1.1zM295 75a2.6 2.6 0 0 1-2.5-1.7l-2.2-5-.3-.3a1 1 0 0 0-.4-.2l-5.3-1.4c-.5-.1-1-.4-1.4-.8a2.7 2.7 0 0 1 1-4.3l4.9-2.2a1 1 0 0 0 .6-.7l1.3-5.2c.1-.6.4-1 .9-1.4a2.7 2.7 0 0 1 3-.3c.6.3 1 .7 1.2 1.2l2.2 5 .3.4.4.2 5.3 1.3c.5.1 1 .4 1.4.8.4.5.6 1 .6 1.6 0 .5 0 1-.3 1.6-.3.5-.7.9-1.3 1l-5 2.3-.3.3-.2.4-1.3 5.3a2.7 2.7 0 0 1-2.4 2l-.2.1zm-1.7-22a1 1 0 0 0-.7.2 1 1 0 0 0-.3.5L291 59a2 2 0 0 1-.6 1c-.2.4-.5.6-1 .8l-4.8 2.2a1 1 0 0 0-.5.4 1 1 0 0 0-.2.7l.3.6.6.3 5.2 1.3a2.8 2.8 0 0 1 1.7 1.5l2.2 5 .4.4c.2.1.4.2.7.1.2 0 .4 0 .5-.2l.4-.6 1.3-5.2a2.7 2.7 0 0 1 1.5-1.8l4.9-2.3a1 1 0 0 0 .4-1.6 1 1 0 0 0-.6-.3l-5-1.3a2.7 2.7 0 0 1-1.9-1.6l-2.2-4.9a1 1 0 0 0-.4-.4 1 1 0 0 0-.6-.2z" />
+    <path fill="#242424"
+      d="M233.3 246c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6v-10.3c0-.3 0-.5.3-.6.1-.2.3-.3.5-.3.3 0 .5.1.6.3.2.1.3.3.3.5v10.4a.8.8 0 0 1-.9.8z" />
+    <path fill="#fff"
+      d="m81.3 68.9 1.5-4.4.9-2.3a2.2 2.2 0 0 1 2.3-1.4c1.2.1 2.4.4 3.5.6l2 .2c.4 0 .9-.1 1.3-.4l4-4 .4-1v-.9l-1-4.3c-.2-.5-.2-1-.2-1.7 0-.2 0-.4.2-.6l.4-.4c2.2-1.5 4.6-2.6 7-3.4a1.8 1.8 0 0 1 2.1.8c.9 1.2 1.9 2.4 2.7 3.7.3.5.7.9 1.2 1.1.5.3 1 .4 1.6.3l4.7-.2c.3 0 .6-.1.8-.3.3-.1.5-.3.6-.6l1.7-2.5 1.4-2.1a1.8 1.8 0 0 1 2.2-.8l6.5 2.4a1.9 1.9 0 0 1 1.2 2c-.1 1.3-.4 2.5-.6 3.7l-.2 1.7a2.3 2.3 0 0 0 .7 2c1.2 1 2.3 2 3.4 3.3.3.3.7.6 1.1.7h1.4l4.7-1a2 2 0 0 1 1.5 0c.5.3.9.7 1 1.2 1 1.8 1.7 3.7 2.6 5.6.2.2.3.5.3.8v1l-.4.7a2 2 0 0 1-.7.6l-2.5 1.8-1.6 1.4c-.3.2-.5.4-.6.7a51.8 51.8 0 0 0 .3 7l1 1 2.7 1.6 1.6 1c.4.3.7.7.8 1.1V86a413.3 413.3 0 0 1-2.7 6.7c-.2.4-.5.6-.8.8-.3.1-.7.2-1 0l-4.3-.6h-.3a3 3 0 0 0-1.8 0 3 3 0 0 0-1.4 1.1c-.8 1-1.7 1.8-2.6 2.7a3 3 0 0 0-.8 3 81.7 81.7 0 0 1 1.1 5c0 .3 0 .6-.2.9 0 .2-.3.5-.5.6a143 143 0 0 1-6.6 3 2 2 0 0 1-2.6-.7l-2-2.9c-1.6-2.1-2-2.3-4.6-2.2l-3 .2a2.8 2.8 0 0 0-2.4 1.4l-2 3-1 1.5c-.3.3-.5.5-.8.5h-1l-6.1-2.3-.8-.5c-.3-.2-.6-.4-.8-.8-.1-.3-.2-.7 0-1l.6-4.2.1-1.3-.1-1-.6-.9-3.3-3c-.3-.4-.7-.6-1.1-.7H92l-4.2 1h-.1c-1.8.3-2.4 0-3.2-1.6a114 114 0 0 1-2.7-6.3 1.8 1.8 0 0 1 1-1.9l3.4-2.4a4 4 0 0 0 1.3-1.3c.3-.6.4-1.3.3-2l-.2-4.3a2 2 0 0 0-.8-1.5l-3.7-2.4a3.9 3.9 0 0 1-2-2V69zM128 77a14 14 0 0 0-4.2-10 13.8 13.8 0 0 0-19.5.3 14 14 0 0 0-4 9.7 13.9 13.9 0 0 0 26.6 5.3c.7-1.7 1-3.5 1-5.3z" />
+    <path fill="#DBDBDB"
+      d="m106 110.7-.8-.2-1.5-.6-4.6-1.6-.9-.5c-.4-.3-.8-.7-1-1.1-.3-.5-.4-1-.3-1.6l.3-2 .4-2.2v-1.2a1.4 1.4 0 0 0-.3-1.2l-3-2.8-.4-.3c-.2-.3-.5-.4-.8-.5h-.9l-2.9.7-1.2.3h-.2a3.2 3.2 0 0 1-2.5-.1 3.2 3.2 0 0 1-1.6-2c-.7-1.6-1.5-3.2-2.4-5.6a2.7 2.7 0 0 1 1-3.5l3.3-2.4c.5-.3.8-.6 1-1.1.3-.4.4-1 .3-1.4l-.1-2.8v-1.6c0-.2 0-.4-.2-.5a1 1 0 0 0-.3-.4l-1.5-1-2.2-1.3c-1-.6-1.8-1.4-2.3-2.5v-1l.5-1.3a147.4 147.4 0 0 1 2-5.4c.2-.7.6-1.2 1.2-1.6.6-.3 1.3-.5 2-.4.8 0 1.6.3 2.3.4l1.2.2h.5c.4.2.9.2 1.3.2.3 0 .5 0 .7-.2a84.5 84.5 0 0 0 4.2-4.5v-.6l-.5-1.9a105.4 105.4 0 0 1-.7-4.3 2.5 2.5 0 0 1 1-1.7c2.3-1.5 4.7-2.6 7.3-3.3a2.6 2.6 0 0 1 3 1l1 1.3 1.7 2.5.8.8c.4.2.8.3 1.2.2l3.1-.1h1.7l.4-.2.3-.3 1-1.5.9-1.4 1.2-1.8a2.6 2.6 0 0 1 3.1-1l6.6 2.3c.5.2 1 .7 1.3 1.2.3.5.4 1.2.3 1.8l-.3 2.4-.3 1.2-.2 1.7.1.7c0 .2.2.4.4.6l.8.7 2.6 2.6.8.5h1l2.3-.5 2.4-.6c.7-.2 1.4-.1 2 .2.7.3 1.2.8 1.5 1.5l2.6 5.6c.4.7.5 1.5.3 2.3a3 3 0 0 1-1.4 1.8l-1.5 1.1-1 .7a23 23 0 0 0-2 1.8v1.5a44.3 44.3 0 0 0 .3 4.7c.1.3.4.5.6.7l1.2.6 1.5 1 1.7 1c.5.4.9 1 1 1.6.3.6.2 1.2 0 1.8a320.7 320.7 0 0 1-2.7 6.8 2.6 2.6 0 0 1-2.7 1.3l-4.3-.7H136c-.4.2-.8.5-1 .9l-1.9 2-.7.7a2.2 2.2 0 0 0-.6 2.3 92.7 92.7 0 0 1 1.1 5.3c0 .3-.1.7-.3 1a2.9 2.9 0 0 1-1.6 1.5l-6 2.6a2.8 2.8 0 0 1-3.5-.9l-1.8-2.4-.4-.6c-1.4-1.9-1.5-2-3.8-1.8l-3 .2a2 2 0 0 0-1 .2 2 2 0 0 0-.7.8l-.7 1a88.3 88.3 0 0 1-2.5 3.6c-.5.4-1 .6-1.6.5zM92.8 93.2c.9 0 1.7.3 2.3.9l.3.3 3 2.8c.4.3.6.7.8 1.1.2.5.2 1 .2 1.4l-.1 1.4-.4 2.3-.3 1.9v.5l.5.5.6.3 4.6 1.7 1.6.6h.4l.3-.2c.4-.5.8-.9 1-1.4l1.3-2 .6-1a3.7 3.7 0 0 1 3-1.8l3.1-.2c3-.2 3.6.2 5.3 2.5l.4.6 1.6 2.3.3.4.5.2a1.1 1.1 0 0 0 .9-.1l5.8-2.6c1-.5 1-.7.8-1.9a129 129 0 0 0-.9-4c-.2-.7-.2-1.4 0-2 .1-.8.5-1.4 1-1.9l.8-.8 1.7-1.8a3 3 0 0 1 1.8-1.3 4 4 0 0 1 2.2-.1h.3l4.2.7.6-.1c.2 0 .3-.2.4-.4l.4-.7a1394.2 1394.2 0 0 0 2.2-6.6 1 1 0 0 0-.4-.6c-.5-.4-1-.8-1.6-1l-1.5-1-1.1-.7a3.3 3.3 0 0 1-1.7-2.8l-.1-3.9v-1c0-.4 0-.8.2-1.2.2-.4.4-.8.8-1 .5-.6 1.1-1 1.7-1.5l1.2-.5 1.5-1c.8-.8 1-1.2.5-2.2a187.2 187.2 0 0 0-2.8-6l-.4-.3-.5-.1h-.5l-2.3.6-2.4.5a3.3 3.3 0 0 1-3.3-1l-2.6-2.4-.8-.8a3.4 3.4 0 0 1-1-2.7c0-.6.2-1.1.3-1.7l.2-1.3.3-2.3v-.7l-.6-.5a235.3 235.3 0 0 0-7.2-2.4 1 1 0 0 0-.5.5l-1.2 1.7-.9 1.3-1 1.5c-.2.4-.5.7-.9 1l-1.2.3h-1.6l-3 .1a3.7 3.7 0 0 1-3.6-1.8l-1.7-2.3L105 46a1 1 0 0 0-.5-.4h-.6c-2.5.7-4.8 1.8-6.9 3.2l-.2.4a40.4 40.4 0 0 0 .7 3.8l.4 2a2.8 2.8 0 0 1-.6 2.6 86.9 86.9 0 0 1-4 4 3 3 0 0 1-1.9.7c-.5 0-1 0-1.6-.2h-.5l-1.2-.3c-.8-.1-1.5-.3-2.3-.3l-.9.1c-.3.2-.5.5-.6.8l-.8 2.2-1.1 3.1-.4 1.4a5 5 0 0 0 1.5 1.4l2.2 1.4 1.5 1a2.6 2.6 0 0 1 1.3 2.2v1.6c0 1 0 1.8.2 2.7a4.1 4.1 0 0 1-2 4L83.2 86c-.7.5-.8.8-.5 1.6l2.4 5.6c.6 1.3.8 1.4 2.3 1.1L89 94l2.8-.7h1.1zm21.2-1.4a14.6 14.6 0 0 1-10.2-25 14.6 14.6 0 0 1 25 10.3 14 14 0 0 1-4 10.1 14.8 14.8 0 0 1-10.7 4.6zm-.1-27.8A13.2 13.2 0 0 0 102 82a13 13 0 0 0 17.2 7 13 13 0 0 0-.3-24.1 13 13 0 0 0-5-1h-.1z" />
+    <path fill="#fff"
+      d="M348.5 135.9c-2-.7-4-1.5-6.1-2a5.9 5.9 0 0 1-4.8-6.7c.3-5.2-.6-10.3-2.6-15-2.6-7-2.4-14.8.6-21.7 6.3-14.4 21-19.2 35.7-12.7 21.5 9.6 20.1 34.8 3 46.9-4.5 3.3-9 6.4-12 11.3a5.6 5.6 0 0 1-7.4 2.1l-6.4-2.2z" />
+    <path fill="#DBDBDB"
+      d="M357.7 139.5c-1 0-2.1-.2-3-.6l-4.4-1.5-2-.7-2-.6-4.1-1.4a6.7 6.7 0 0 1-5.4-7.6c.2-5-.6-10-2.5-14.7a29.4 29.4 0 0 1 6.4-30.9c2.4-2.4 5.4-4.3 8.6-5.6a28.8 28.8 0 0 1 22.3 1.2c9.5 4.2 15.5 12 16.4 21.3a30 30 0 0 1-13.1 27c-4.4 3-8.9 6.3-12 11a6.1 6.1 0 0 1-5.2 3zm1-63.7a23.6 23.6 0 0 0-22.3 15 27.4 27.4 0 0 0-.6 21.1c2 4.9 3 10.1 2.7 15.4a5 5 0 0 0 4.1 5.8l4.3 1.4 1.9.7 2 .7c1.5.4 3 1 4.4 1.5 1 .5 2.4.7 3.5.3a4.9 4.9 0 0 0 2.9-2.1c3.3-5 7.9-8.4 12.3-11.5a28.4 28.4 0 0 0 12.5-25.5 24.4 24.4 0 0 0-15.4-20c-4-1.8-8.1-2.7-12.4-2.8z" />
+    <path fill="#fff"
+      d="m357.3 139.8-16.5-5.5c-1.4-.6-3 .2-3.5 1.7l-.3.9c-.5 1.5.3 3 1.8 3.6l16.4 5.5c1.5.5 3.1-.3 3.6-1.8l.3-.8c.5-1.5-.3-3.1-1.8-3.6z" />
+    <path fill="#DBDBDB"
+      d="m355.5 145.8-1.2-.1L338 140a3.7 3.7 0 0 1-2.3-4.6l.3-.8a3.6 3.6 0 0 1 4.6-2.3l16.4 5.5a3.6 3.6 0 0 1 2.3 4.6l-.2.8c-.3.8-.8 1.4-1.4 1.8-.6.5-1.3.7-2.1.7zm-.6-1.7a2 2 0 0 0 2.5-1.3l.3-.8a2 2 0 0 0-.6-2.2 2 2 0 0 0-.7-.3l-16.4-5.6a2 2 0 0 0-1.5.1 2 2 0 0 0-1 1.2l-.3.8a2 2 0 0 0 .1 1.5l.5.7.6.3 16.5 5.6z" />
+    <path fill="#fff"
+      d="m354.6 144.8-16.4-5.5c-1.5-.5-3.1.3-3.6 1.8l-.3.9c-.5 1.4.3 3 1.8 3.5l16.4 5.5c1.5.5 3.1-.3 3.6-1.7l.3-.9c.5-1.5-.3-3-1.8-3.6z" />
+    <path fill="#DBDBDB"
+      d="M353.3 152a4 4 0 0 1-1.1-.2l-16.5-5.5a3.7 3.7 0 0 1-2.3-4.6l.3-.9.7-1.2c.4-.4.7-.7 1.2-.9.8-.4 1.8-.5 2.7-.2l16.5 5.6a3.7 3.7 0 0 1 2.1 1.8 3.7 3.7 0 0 1 .2 2.8l-.3.8a3.6 3.6 0 0 1-3.5 2.5zm-.6-1.7a2 2 0 0 0 2.5-1.3l.3-.8.1-.8c0-.3 0-.5-.2-.8l-.5-.6-.6-.3-16.5-5.6a2 2 0 0 0-2.5 1.3l-.3.8a2 2 0 0 0 .1 1.5c.3.5.7.9 1.2 1l16.4 5.6z" />
+    <path fill="#fff" d="M352.7 151.2c-.7 2.3-5.2 2.9-9.8 1.3-4.7-1.5-7.8-4.7-7-7l16.8 5.6z" />
+    <path fill="#DBDBDB"
+      d="M347.8 154.2c-1.8 0-3.5-.3-5.2-1a15 15 0 0 1-5.9-3.3 4.6 4.6 0 0 1-1.6-4.7.8.8 0 0 1 1-.5l17 5.6.4.4v.7a4.7 4.7 0 0 1-4.2 2.7l-1.5.1zm-11.1-7.6c.2.8.7 1.5 1.3 2 1.5 1.5 3.3 2.5 5.2 3.1 3.8 1.3 7 1 8.3-.1l-14.8-5zm18.1-11.4h-.2l-.3-.1-.2-.3-.2-.3v-.3c1-5.3 2.4-10.6 4.6-15.6a21 21 0 0 1-6.6-1.6c-1.2 4.9-3 9.6-5.1 14.2l-.3.6a.8.8 0 0 1-1.5-.7l.3-.5c2.1-4.7 3.9-9.5 5.1-14.4a20.1 20.1 0 0 1-7.2-6.3 11 11 0 0 1-2.2-5.5 6.2 6.2 0 0 1 2.4-5.6 5.4 5.4 0 0 1 4.7-.6 5.6 5.6 0 0 1 3.6 3 26 26 0 0 1 1 10.4l-.5 3.6c2.2 1 4.5 1.6 7 1.7v-.3l.3-.5c1.8-3.8 4-8.6 8-10.9a6 6 0 0 1 4.8-.6c.5.2.9.5 1.2.9.3.4.4.9.5 1.4a8.9 8.9 0 0 1-2.6 7.6 14 14 0 0 1-7 3.6 20 20 0 0 1-4.2.5 67.6 67.6 0 0 0-4.9 16.3c-.2.2-.3.3-.6.3zm16.1-29.2c-.8 0-1.7.3-2.5.8-3.5 2-5.7 6.5-7.4 10.1 1 0 2.1-.1 3.1-.4 2.3-.4 4.5-1.5 6.2-3.1a7.1 7.1 0 0 0 2.1-6.2c-.1-.9-.5-1-.7-1.1-.2-.1-.5-.1-.8 0zm-24.5-6.4c-.8 0-1.5.2-2 .6a4 4 0 0 0-1.4 1.8c-.3.8-.4 1.5-.3 2.3.2 1.7.8 3.3 1.9 4.6 1.6 2.3 3.7 4.2 6.1 5.6a30.8 30.8 0 0 0-.5-12.6 4 4 0 0 0-2.5-2.1 5 5 0 0 0-1.4-.2zM69 29.1a.8.8 0 0 1-.8-.8V23c0-.2 0-.5.2-.6.1-.2.4-.3.6-.3l.6.3.2.6v5.3c0 .2 0 .4-.2.6l-.6.2zm0 11.1c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.3-.6v-5.3c0-.2.1-.5.3-.6.1-.2.4-.3.6-.3l.6.3.2.6v5.4a.9.9 0 0 1-.8.7zm8.2-8.2h-5.3c-.3 0-.5 0-.6-.2a.8.8 0 0 1 0-1.2c.1-.2.4-.2.6-.2h5.3c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.2zM66 32h-5.2c-.3 0-.5 0-.6-.2a.8.8 0 0 1 0-1.2c.1-.2.3-.2.6-.2H66c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.2zM50.4 70.7c-.3 0-.5 0-.6-.2a.9.9 0 0 1-.3-.6v-5.3l.3-.6c.1-.2.3-.2.6-.2.2 0 .4 0 .5.2l.3.6v5.3a.8.8 0 0 1-.9.8zm0 11.1c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6v-5.3l.3-.6c.1-.2.3-.2.6-.2.2 0 .4 0 .5.2l.3.6V81l-.3.6-.5.2zm8.2-8.2h-5.3a.8.8 0 0 1-.8-.8c0-.2 0-.4.2-.6l.6-.3h5.4c.2 0 .4.1.5.3.2.1.3.4.3.6v.3l-.3.3-.3.2h-.3zm-11.1 0H42a.8.8 0 0 1-.8-.8l.3-.6c.1-.2.3-.3.5-.3h5.4c.2 0 .4.1.5.3.2.1.3.4.3.6 0 .2 0 .4-.2.6l-.6.2zM376 52a.8.8 0 0 1-.9-.9v-5.3l.3-.6c.1-.2.3-.2.6-.2.2 0 .4 0 .6.2l.2.6v5.3c0 .3-.1.5-.3.6-.1.2-.3.2-.5.2zm0 11a.8.8 0 0 1-.9-.8V57l.3-.6c.1-.2.3-.2.6-.2.2 0 .4 0 .6.2l.2.6v5.3a.8.8 0 0 1-.8.8zm8.2-8.2h-5.3c-.2 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6.8.8 0 0 1 .9-.8h5.3c.2 0 .4 0 .6.2l.2.6a.8.8 0 0 1-.8.8zm-11.2 0h-5.3c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.6l.3-.6.6-.2h5.3c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.2z" />
+  </g>
+</svg>
\ No newline at end of file
diff --git a/static/img/flatline/team-meeting.svg b/static/img/flatline/team-meeting.svg
new file mode 100644 (file)
index 0000000..2607289
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 534.4 393"><g class="layer"><path fill="#242424" d="M341.8 196V77a19.2 19.2 0 0 0-12.2-17.7 17 17 0 0 0-7.4-1.3L218 61.2a19.1 19.1 0 0 0-18.4 20.6l10.3 123.5 132-9.4z"/><path fill="#242424" d="M210 206.1c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.5L198.8 81.8A19.8 19.8 0 0 1 218 60.3l104.2-3A20 20 0 0 1 342.6 77v118.8c0 .2 0 .4-.2.6-.1.2-.3.2-.5.3l-132 9.3zM322.7 59h-.6l-104.2 3a18.3 18.3 0 0 0-17.5 19.8l10.2 122.7 130.3-9.2V77a18.2 18.2 0 0 0-18.2-18.2z"/><path fill="#fff" d="M444 119.5s-15 5.7-14.1 25.8c1 20-4.2 41.8 13.1 40.2l1 11.8 36.7 4s3.9-61.6-3-71.8c-6.9-10.2-33.6-10-33.6-10z"/><path fill="#242424" d="M480.8 202h-.1l-36.7-3.9a.9.9 0 0 1-.5-.2.9.9 0 0 1-.2-.5l-1-11a11.1 11.1 0 0 1-8.6-2.6c-5-4.6-4.8-14.3-4.6-25.6 0-4.2.2-8.6 0-12.9a27.8 27.8 0 0 1 7-21c2.2-2.4 4.8-4.3 7.8-5.6h.3c1 0 27.3.1 34.3 10.5 7 10.4 3.3 69.6 3.2 72.1v.3l-.3.3c-.2.1-.4.2-.6.1zm-36-5.5 35.2 3.7c.4-7.5 3.2-61-3-70.2-6.2-9.1-30.6-9.7-32.8-9.7-1.5.6-14.4 6.5-13.5 25 .2 4.3.1 8.7 0 13-.2 10.4-.4 20.2 4 24.3 2 1.7 4.6 2.4 8.2 2l.6.3c.2.1.3.3.3.5l1 11.1z"/><path fill="#fff" d="M469.3 184.2c19.6 0 35.5-17.4 35.5-39 0-21.4-16-38.9-35.5-38.9-19.6 0-35.5 17.5-35.5 39s16 39 35.5 39z"/><path fill="#242424" d="M469.3 185c-20 0-36.3-17.8-36.3-39.7 0-22 16.3-39.8 36.3-39.8 20 0 36.2 17.9 36.2 39.8 0 22-16.2 39.8-36.2 39.8zm0-77.8c-19 0-34.6 17-34.6 38 0 21.1 15.5 38.2 34.6 38.2 19 0 34.6-17 34.6-38.1 0-21-15.5-38.1-34.6-38.1z"/><path fill="#fff" d="M302 15.2c-15.5-21.9-48.8-17-64.4 2.7-8.2 10.4-11.7 24.2-21.6 33-5.3 4.7-11.9 7.5-18 10.9a34.5 34.5 0 0 0-15.5 13.9c-3.2 6.3-2.2 15.1 3.8 18.9 5.2 3.3 12.4 2 17.7 5.2-6.7.9-11.1 9.3-8 15.3 2.6 5.1 8.7 7.2 14.2 8.6 19.7 5 40.6 6.8 60 1a67.7 67.7 0 0 0 37.5-27c7.7-12.4 4.9-35.8 3.8-50a68.2 68.2 0 0 0-9.4-32.5z"/><path fill="#242424" d="M244.3 129a136 136 0 0 1-34.2-4.5c-5.8-1.4-12.1-3.6-14.8-9a11.2 11.2 0 0 1 .3-10.4c1.3-2.5 3.5-4.5 6.1-5.6-2.1-.7-4.3-1.2-6.6-1.4a23 23 0 0 1-9.2-2.8c-6.6-4.2-7.3-13.6-4.2-20 3.5-7 10.3-11.3 15.9-14.3l4.2-2.2c5-2.3 9.5-5.1 13.7-8.5 5.6-5 9.3-12 12.8-18.6 2.5-5 5.4-9.8 8.7-14.3A46.7 46.7 0 0 1 274.2 0a35.1 35.1 0 0 1 30.3 17.5 69.7 69.7 0 0 1 7.9 30.2l.3 4c1.1 14.8 2.8 35-4.3 46.5a68 68 0 0 1-38 27.3 91.2 91.2 0 0 1-26.1 3.6zM273 1.8a45.2 45.2 0 0 0-34.8 16.6 90.8 90.8 0 0 0-8.6 14.1 65.2 65.2 0 0 1-13.1 19c-4.3 3.5-9 6.5-14 8.8l-4.2 2.2a34 34 0 0 0-15 13.5c-2.9 5.7-2.3 14.1 3.5 17.8a22 22 0 0 0 8.6 2.7 23 23 0 0 1 9 2.7c.2 0 .3.2.4.3v.5c0 .2 0 .4-.2.5l-.4.2a10.5 10.5 0 0 0-7.1 5.3 10.2 10.2 0 0 0-.3 8.8c2.4 4.8 8.3 6.8 13.7 8.2 22.7 5.7 42.7 6 59.5 1a66.3 66.3 0 0 0 37-26.7c6.8-11 5.2-30.8 4-45.3 0-1.5-.2-2.8-.3-4.1a67.9 67.9 0 0 0-7.6-29.5c-.5-1-1.1-1.8-1.7-2.7a33.5 33.5 0 0 0-27.2-14h-1z"/><path fill="#85C241" d="M322.5 79c-.4-2.4-63.8-13.2-95.6 1.8-11.4 43.6-5.1 129-5.1 129L335 209s1-47-12.5-130z"/><path fill="#242424" d="m252.6 81.9-2 126.8c0 .9 34 0 35-1.5.9-1.5 0-109.7 0-109.7l-28.2-6"/><path fill="#242424" d="M257 209.8a47 47 0 0 1-6.5-.2 1 1 0 0 1-.5-.4.9.9 0 0 1-.3-.6l2-126.8a.8.8 0 0 1 .6-.7h.6l.3.2.1.3.1.3-2 126.1c4.2.5 30.4-.2 33.3-1.4.6-4.3.2-78.8 0-108.4l-27.5-6-.3-.1-.3-.3-.1-.3v-.3l.1-.3.3-.2a1 1 0 0 1 .6-.2l28.1 6.1c.2 0 .4.2.5.3l.2.5c.2 32.6.7 108.6-.1 110.1-.3.5-.9 1.4-17.5 2-3.9.3-8.2.3-11.7.3z"/><path fill="#fff" d="m284.6 80 .8 20.6s-2.3 9.6-16.3 7c-14-2.7-16.5-12.2-16.5-12.2l-.1-38.6s21.1-12.6 17-34.7c0 0 9.2 17.1 29.6 13.5 0 0 1.3 19.8.1 30.6C298.1 77 284.6 80 284.6 80z"/><path fill="#242424" d="M273.7 108.8c-1.6 0-3.2-.1-4.7-.4-14.4-2.8-17-12.3-17.2-12.7v-.3l-.1-38.6v-.4c.1-.2.2-.3.4-.3.2-.2 20.5-12.6 16.6-33.8l.1-.6.5-.4h.6l.4.4a27.3 27.3 0 0 0 29 13.2l.4.1.2.3v.3c0 .2 1.3 20 .2 30.8-1 10-11.8 13.5-14.6 14.2l.8 20v.3c-.1 0-2.1 8-12.6 8zm-20.2-13.5c.3 1 3.1 9 15.8 11.4 12.3 2.4 15-5.2 15.3-6.2l-.8-20.5c0-.2 0-.4.2-.6l.5-.3c.1 0 13-3 14-13 1-9.2.2-25.5 0-29.5a29 29 0 0 1-27.6-11.2c1.4 18.6-14.7 30-17.5 31.8v38.1z"/><path fill="#fff" d="M259 55.4a9 9 0 0 0-3.4-4.7 15.9 15.9 0 0 0-7.9-2.6c-.7.1-1.3.4-2 .8a7 7 0 0 0-3.1 3.7 8 8 0 0 0 0 4c.2 1.4.7 2.8 1.3 4a11.2 11.2 0 0 0 6.3 5.7 10.7 10.7 0 0 0 8.5-.6"/><path fill="#242424" d="M253.8 67.7a11.7 11.7 0 0 1-10.6-6.7c-.6-1.4-1-2.9-1.3-4.4a7.9 7.9 0 0 1 0-4.3 7.8 7.8 0 0 1 3.5-4.1c.7-.5 1.4-.8 2.2-1 1.2 0 2.3 0 3.4.5a15 15 0 0 1 5.2 2.3c1.7 1.3 3 3 3.6 5.1v.7l-.6.4-.7-.1a.9.9 0 0 1-.4-.5 8.1 8.1 0 0 0-3-4.3A15.5 15.5 0 0 0 248 49c-.6.1-1.1.4-1.6.7a6.3 6.3 0 0 0-2.8 3.2 7.4 7.4 0 0 0 0 3.6 15 15 0 0 0 1.2 4 10.3 10.3 0 0 0 9.8 5.6c1.3-.1 2.6-.5 3.8-1a.8.8 0 0 1 1 .3c.2.2.2.4.1.6 0 .2-.1.4-.3.5a12 12 0 0 1-5.3 1.3z"/><path fill="#fff" d="M285.3 47.5s8.2 10.2 6.6 12.2c-1.6 2-6.5 1.2-6.5 1.2"/><path fill="#242424" d="M287.7 61.9c-.8 0-1.6 0-2.4-.2a.8.8 0 0 1-.7-1l.1-.3.3-.2.2-.1h.4c1.1.2 4.6.4 5.7-1 .5-.8-2.6-6-6.6-11l-.2-.4v-.3l.1-.3.2-.3.6-.1.6.3c2.6 3.2 8.3 11 6.7 13.2a6.2 6.2 0 0 1-5 1.7zm-8.5-18.4c0-1.4-.7-2.5-1.6-2.6-1 0-1.9 1-2 2.5 0 1.4.8 2.5 1.7 2.6 1 0 1.9-1 2-2.5zm13.1-.2c.2-1.3-.4-2.6-1.4-2.7-1-.2-2 .8-2.1 2.2-.3 1.4.4 2.6 1.3 2.8 1 .1 2-.9 2.2-2.3z"/><path fill="#fff" d="M291.9 65.4S274.2 76 271 59.6l20.8 5.8z"/><path fill="#242424" d="M280.8 69.6c-1.6 0-3-.3-4.5-.9-3.1-1.4-5.2-4.4-6-9v-.2l.1-.3.2-.3h1l.3.6c.8 4 2.5 6.6 5.1 7.7 5.8 2.6 14.3-2.5 14.4-2.6a.8.8 0 0 1 1.2.3v.7c0 .2-.1.4-.3.5-3.5 2-7.5 3.3-11.5 3.5zm3.8 10.4s-10.8.1-15.8-2.7c0 0 4.3 12.2 16 15l-.2-12.4z"/><path fill="#242424" d="M284.9 93.2h-.2c-12-3-16.5-15.2-16.7-15.7V77l.2-.4.5-.2.5.1c4.8 2.7 15.3 2.6 15.4 2.6.2 0 .4 0 .6.2.2.1.3.3.3.5l.3 12.5a.9.9 0 0 1-.2.6l-.3.2h-.4zm-14.4-14.3a24 24 0 0 0 13.6 12.4l-.3-10.5c-4.5 0-9-.6-13.3-1.9z"/><path fill="#fff" d="M425.6 89.5c-3.1-2.8-23.3 10-23.3 10 .9-8 1.9-14 0-14.2-2-.2-9.7 21.3-9.7 21.3s-25.9 37.7-28 38.8c-2 1-42.1-66.3-42.1-66.3-22.8 24.8-5.7 59.7-5.7 59.7s42.2 53.1 51 52.6c7.2-.4 31-43 39.9-59.4 0 0 6.1-10 8.6-13.7 2.5-3.7 10.7-11.4 14.4-15.8 3.6-4.3-1.9-10.2-5-13z"/><path fill="#242424" d="M367.7 192.2c-9.3 0-47.2-47.5-51.5-53-.3-.4-17.1-35.7 5.8-60.6l.2-.2h.7l.2.3c15 25 37.9 62.5 41.5 65.9a727 727 0 0 0 27.3-38.4c8-21.9 9.9-21.7 10.5-21.6l.6.1.5.4c1 1.4.8 4.6 0 11.1l-.2 1.9c6-3.8 19.8-11.9 22.9-9.2 6.2 5.6 8 10.6 5 14-1.5 2-3.8 4.3-6.2 6.8a96.7 96.7 0 0 0-8 9c-2.5 3.5-8.6 13.5-8.7 13.6-12 22.1-33.3 59.3-40.4 59.8h-.2zM322.4 80.4c-21.1 24-5 57.7-5 58 16.7 21 43.8 52.3 50.2 52.3h.2c4.5-.3 19.6-23 39.2-59 0-.2 6.2-10.2 8.7-13.8 2.5-3.2 5.2-6.3 8.1-9.2 2.4-2.5 4.7-4.9 6.2-6.7 3.2-3.7-1.8-9-5-12-1.7-1.4-12.9 4.2-22.4 10.2l-.4.1h-.4a.8.8 0 0 1-.3-.8l.4-3.4c.4-4 1-9.2.4-10-1.5 1.4-5.7 11.5-9 20.8v.2c-4.4 6.3-26.2 38-28.3 39-1 .5-2 1-22.9-33-8.8-14.4-17.5-29-19.7-32.7z"/><path fill="#242424" d="M407.4 112.3h-.3a.8.8 0 0 1-.4-1c2.5-6.2-4.5-10.8-4.7-11a.7.7 0 0 1-.5-.5v-.3l.1-.3.3-.2.3-.2h.3l.3.2s8.3 5.5 5.3 13l-.3.2-.4.1z"/><path fill="#fff" d="M403 179.1H131.3v213H403v-213z"/><path fill="#242424" d="M403 393H131.4l-.6-.3a.8.8 0 0 1-.2-.5v-213a.8.8 0 0 1 .8-.8H403c.2 0 .4 0 .6.2l.2.5v213c0 .3 0 .5-.2.6l-.6.3zm-271-1.5h270.3V179.8H132v211.7z"/><path fill="#DBDBDB" d="m257.8 335.7-87-3.5h-.3a1 1 0 0 1-.3-.2l-.2-.3v-.3l2.3-59.4.3-.6.6-.2 87 3.4.6.3.2.6-2.4 59.3c0 .3-.1.5-.3.6l-.2.2-.3.1zm-86.2-5 85.4 3.2 2.2-57.7L174 273l-2.4 57.7zm99-72-59.2-1.4-.6-.3a.9.9 0 0 1-.2-.6l1.4-57.2v-.3l.2-.3a.8.8 0 0 1 .6-.2l59.2 1.4h.4l.2.3.2.2v.4l-1.3 57.2-.3.6a1 1 0 0 1-.6.2zm-58.3-3 57.5 1.3 1.4-55.5-57.6-1.4-1.3 55.5z"/><path fill="#DBDBDB" d="m329.4 260-59.2-1.3a1 1 0 0 1-.3-.1l-.3-.2-.2-.3v-.3l1.3-57.2.1-.3.2-.3.3-.1h.3l59.2 1.3.3.1.3.2.2.3v.3l-1.4 57.2c0 .2 0 .4-.2.6l-.6.2zm-58.3-3 57.5 1.4 1.3-55.5-57.5-1.4L271 257zm-10.1-8.4-35-.8c-.2 0-.4 0-.6-.3a.9.9 0 0 1-.2-.5c0-.3 0-.5.2-.6l.6-.3 35 .9c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.3.6l-.5.2zm.2-9.6-35-.9a.8.8 0 0 1-.6-.2l-.1-.3-.1-.3v-.4a.8.8 0 0 1 .5-.4h.4l35 .8a.8.8 0 0 1 .8.8c0 .3-.1.5-.3.6-.1.2-.3.3-.6.3zm.2-9.7-35-.9h-.3a.8.8 0 0 1-.2-.2l-.2-.3v-.3c0-.2 0-.4.2-.6l.6-.2 35 .8.6.3.2.6-.3.6-.5.2zm.3-9.7-35-.8-.3-.1a.8.8 0 0 1-.3-.2l-.2-.3v-.3c0-.2 0-.4.2-.6l.6-.2 35 .8.3.1.3.2.2.3v.3a.8.8 0 0 1-.8.8zm.2-9.6-35-1a.8.8 0 0 1-.6-.2.8.8 0 0 1 0-1.1l.6-.3 35 .9h.4l.2.2.2.3v.6l-.2.3-.3.2h-.3z"/><path fill="#DBDBDB" d="m317.6 221-35-.9h-.4a.8.8 0 0 1-.5-.8v-.4a.8.8 0 0 1 .6-.4h.3l35 .8c.2 0 .4 0 .6.2l.2.6a.8.8 0 0 1-.5.8h-.3zm.2-9.7-35-.9a.8.8 0 0 1-.8-.8v-.3l.2-.3.3-.2h.3l35 .8c.2 0 .5.1.6.3.2.1.3.3.3.5 0 .3-.1.5-.3.6-.1.2-.4.3-.6.3zm-1 41-36-.8a.8.8 0 0 1-.6-.3.8.8 0 0 1-.2-.6l.6-22.6c0-.2 0-.5.2-.6.2-.2.4-.2.6-.2l36 .8.3.1.3.2.1.3v.3l-.5 22.6c0 .2 0 .4-.2.6l-.6.2zm-35.1-2.5 34.3.9.5-21-34.3-.9-.5 21z"/><path fill="#fff" d="M228 81.5s-46.5 55.9-52.5 74.7c-6 18.7 38.2 77.6 38.2 77.6s14.4 18.8 21.3 14.8c6.8-4 0-24.7 0-24.7s12 7 9.4 1.3c-2.6-5.6-18.5-10.3-18.5-10.3L206 156l16-19.8"/><path fill="#242424" d="M232.8 249.8c-7.5 0-18.3-13.8-19.7-15.6-1.8-2.4-44.3-59.4-38.3-78.3s50.7-72.6 52.6-74.9l.3-.2h.9a.8.8 0 0 1 .3.7l-.1.3-.2.2c-.4.6-46.5 56-52.4 74.3-5.8 18.4 37.7 76.5 38.1 77 3.9 5 15.1 17.6 20.3 14.6 5.2-3 1.5-18.2-.4-23.7v-.5l.3-.4.4-.1h.4c4 2.3 8.1 3.9 8.8 3.4l-.3-1c-2-4.5-13.8-8.7-18.1-10l-.3-.1-.2-.3-19.7-59v-.3l.1-.4 16-19.8c0-.1 0-.2.2-.2l.2-.1a.8.8 0 0 1 .6.2c.1 0 .3.3.3.5s0 .4-.2.5l-15.6 19.5 19.4 58.2c2.6.8 16.2 5.1 18.7 10.6.6 1.3.6 2.2 0 2.8-1.4 1.3-5.9-.6-8.8-2.2 1.5 5.3 5.2 20.2-1 23.7a5 5 0 0 1-2.6.6z"/><path fill="#fff" d="M142.5 129.6s-2-13.7-13-17.1c-11.2-3.5-43-2.8-46.4 21.6-3.4 24.5 8.6 42 18.6 47.1l24.5-2.5 16.3-49z"/><path fill="#242424" d="M101.7 182h-.3c-9.3-4.7-22.7-22-19.1-47.9a24.3 24.3 0 0 1 11.5-18 49.4 49.4 0 0 1 36-4.4c11.4 3.5 13.5 17.2 13.6 17.8v.4L127 179c0 .2-.2.3-.3.4l-.4.2-24.5 2.5h-.2zm15.8-70.2c-7.4 0-16.1 1.5-22.8 5.7a22.9 22.9 0 0 0-10.8 16.7c-3.4 24.9 9.1 41.4 18 46.1l23.6-2.3 16-48.5c-.2-1.6-2.6-13.3-12.4-16.2a41 41 0 0 0-11.6-1.5z"/><path fill="#fff" d="m126.3 135 2.2 12.8s-4.8-9.8-9.6-1.4c-4.7 8.4 9 19.3 9 19.3l-3 12-25.1 2.4-3.3 25s37.4 5.5 36.7 4.5c-.2-.3 2.6-24.7 2.6-24.7s6.8 2.8 10.6-8c3.8-11-3.9-47.4-3.9-47.4l-16.1 5.5z"/><path fill="#242424" d="M132.4 210.6a410.8 410.8 0 0 1-36.7-5 .8.8 0 0 1-.1-.5l3.3-25c0-.2.1-.4.3-.5l.4-.2 24.7-2.5 2.6-10.8c-2.4-2-13.4-12-8.8-20 1.5-2.6 3.3-3.8 5-3.8a5.5 5.5 0 0 1 3.9 2.1l-1.5-9.1v-.6l.5-.4 16.1-5.3.4-.1h.3l.3.3.1.3c.3 1.5 7.7 36.7 3.9 47.7-1.5 4.3-3.7 7-6.4 8.4a7 7 0 0 1-4.3.5 758 758 0 0 0-2.6 24.2s-.2.3-1.4.3zm-35-6.1c12.4 1.8 31.3 4.4 35 4.5a417.8 417.8 0 0 1 2.6-24.4l.2-.3h.8c1.3.4 2.8.3 4-.3 2.4-1 4.2-3.5 5.5-7.3 3.4-9.6-2.5-40.2-3.7-46l-14.6 5 2.1 12-.1.6c-.1.2-.3.3-.5.3h-.5a.9.9 0 0 1-.5-.4c-.5-1.2-2.5-4.2-4.6-4.3-1.2 0-2.3 1-3.5 3-4.3 7.6 8.6 18.2 8.7 18.3.2.1.3.3.3.4v.5l-2.8 11.8c0 .2-.2.4-.3.5l-.5.2-24.5 2.3-3.1 23.6z"/><path fill="#fff" d="M143.6 148.7s9.6 12.4 8.2 14.3c-1.5 1.9-6.4 2-6.4 2"/><path fill="#242424" d="M145.4 165.8c-.2 0-.5-.1-.6-.3a.8.8 0 0 1-.3-.5c0-.3.1-.5.3-.6.1-.2.3-.3.6-.3 1.6 0 4.8-.5 5.7-1.7.3-1.1-4-7.8-8.1-13.3a.9.9 0 0 1 .1-1.2.9.9 0 0 1 1.2.2c4.5 6 9.6 13.3 8.1 15.3s-6.4 2.3-7 2.3zm-7.2-18.2c.7-.2.9-2 .4-3.8-.5-2-1.4-3.4-2.1-3.2-.7.1-.8 1.8-.3 3.8.4 1.9 1.4 3.3 2 3.2zm5.8 29.8-.7-.1c-2.6-.6-2.6-6-2.6-7.6l.1-.4.3-.2.3-.2h.4l5.7 1.4a.9.9 0 0 1 .6 1c0 .1 0 .2-.2.3l-.2.2-.3.1a1 1 0 0 1-.3 0l-4.7-1.1c0 2.3.6 4.7 1.3 4.9h.5c.2 0 .4 0 .5-.2.7-.6 1.2-1.4 1.4-2.3l.1-.3.3-.2.3-.1h.3c.2 0 .4.2.5.4.1.2.2.4.1.6a6 6 0 0 1-2 3.3 3 3 0 0 1-1.6.5z"/><path fill="#fff" d="M187.7 298.3s9.3 8 16.3 4.2c7.1-3.8 9.1-7.8 9.1-7.8s2.4 10.4 5.1 7.6c.4-.4.6-.9.8-1.3a3.7 3.7 0 0 0-1-4.2s4.8 7.7 5.3 3.5c.4-4.3-2.9-8.7-2.9-8.7s14.4 10.7 13.7 4.2c-.6-6.4-13.3-14.6-22.8-14.6-9.4 0-27.2 5.1-27.2 5.1"/><path fill="#242424" d="M199.8 304.3c-6.3 0-12.4-5.1-12.7-5.4a.8.8 0 0 1-.3-.6c0-.2 0-.4.2-.6l.3-.2h.6l.3.2s9 7.6 15.4 4.1a21.9 21.9 0 0 0 9.1-7.7l.5-.1c.2 0 .3 0 .5.2l.2.4c.8 3.4 2.3 7.1 3.3 7.4 0 0 .3 0 .4-.2a2.7 2.7 0 0 0 .8-3 15 15 0 0 1-1-1.6.9.9 0 0 1-.2-.6.9.9 0 0 1 .8-.7c.2 0 .4 0 .6.2.5.5 1 1.1 1.2 1.8.7 1 1.6 2 2.6 2.7v-.4c.4-3.8-2.7-8-2.7-8a.9.9 0 0 1-.2-.6l.3-.6.5-.2c.2 0 .4 0 .6.2 4.7 3.5 10.7 6.8 12.1 6 .3-.2.3-.7.3-1-.7-6.2-13-14-22-14-9.3 0-26.8 5-27 5h-.6a.8.8 0 0 1-.4-.5v-.7c.1-.1.3-.3.5-.3.8-.3 18-5.2 27.5-5.2 9.9 0 23 8.5 23.6 15.4a2.5 2.5 0 0 1-1 2.6c-2.2 1.3-7.4-1.6-11-4a12 12 0 0 1 1.2 6c-.1 1.1-.6 1.8-1.3 2-.8.1-1.9-.6-2.8-1.6-.3.8-.7 1.5-1.2 2a2 2 0 0 1-2 .8c-2-.5-3.4-4.3-4-6.9-2.4 2.7-5.2 5-8.4 6.5-1.4.8-3 1.2-4.6 1.2z"/><path fill="#85C241" d="M131.3 363.2s0-32 2-67.1c1.9-35.2 15.2-49.3 3.9-83.9-11.3-34.5-44-30.2-60.2-16.7-32.9 27.3-63.3 110.7-46 169.8 0 0 37.6 15.9 100.3-2.1z"/><path fill="#85C241" d="M97.2 221.2C97.2 223 79 309 91 317s99.6-10.2 99.6-10.2l-1-24L138 277s14.6-65-11-82.3c-25.7-17.3-29.7 26.5-29.7 26.5z"/><path fill="#242424" d="M105 321.8c-9.6 0-19-2-22.8-9.4-8.4-16.5 14.4-103.6 15.4-107.3l.2-.3.2-.2.3-.2a1 1 0 0 1 .7.2.9.9 0 0 1 .3 1c-.3.8-23.7 90.1-15.6 106 8 15.6 46 5 46.4 5 .3-.2.5-.1.7 0l.4.5v.7l-.6.4c-8.4 2.2-17 3.5-25.7 3.6zm32.8-43.9c-2.1-.1-13-.7-14-4.7-1-3.6 10.9-38.3 13.3-45.1 0-.2.2-.4.4-.5h.7c.2 0 .3.2.4.4v.6c-5.4 15.8-13.8 41.8-13.3 44.2.5 2 7.7 3.2 12.5 3.4.3 0 .5 0 .6.2l.3.6-.3.6c-.1.2-.3.2-.6.2z"/><path fill="#242424" d="M20.3 227.2 59 229a18.7 18.7 0 0 1 17.7 17l9.4 95.8h45v37.9l-114.7-3.5-15.6-128a18.7 18.7 0 0 1 19.4-21z"/><path fill="#242424" d="m131.3 380.5-114.8-3.4-.6-.3a.8.8 0 0 1-.2-.5L0 248.3A19.7 19.7 0 0 1 12 228a21 21 0 0 1 8.2-1.5l38.9 1.8a19.6 19.6 0 0 1 18.5 17.6l9.2 95.2h44.8l.3.2.1.3.1.3V380l-.3.3-.5.2zm-114.1-5 113.3 3.3v-36.1H86a.8.8 0 0 1-.8-.8L76 246a18 18 0 0 0-16.9-16.2l-38.9-1.7a17.8 17.8 0 0 0-18.4 20l15.4 127.4z"/><path fill="#85C241" d="M416.8 201.7c-17.6 6.2-75 97.3-65 113.5 10 16.2 52 6.9 52 6.9l-.8 29.3 108.4-1.8s24.4-107.2 8.3-134.3c-16.1-26.9-85.3-19.9-102.9-13.6z"/><path fill="#242424" d="m514.6 227.2-39.9 1.8a18.2 18.2 0 0 0-17.2 16.5l-9.4 96.3H403v37.9l114.8-3.5 15.6-128.6a18.2 18.2 0 0 0-18.8-20.4z"/><path fill="#242424" d="M403 380.5c-.2 0-.4 0-.6-.2l-.2-.3v-38.5l.2-.3.3-.1.3-.1h44.4l9.2-95.6a19.2 19.2 0 0 1 18-17.2l40-1.8a19 19 0 0 1 18.8 13.2c.9 2.6 1.2 5.4.8 8l-15.6 128.7c0 .2 0 .4-.2.5-.2.2-.4.2-.6.2L403 380.5zm.8-37.8v36.1l113.3-3.3 15.5-128a17.2 17.2 0 0 0-10.6-18c-2.4-1-4.9-1.5-7.4-1.4l-39.9 1.8a17.5 17.5 0 0 0-16.4 15.7l-9.4 96.4c0 .2 0 .4-.2.5a1 1 0 0 1-.6.2h-44.3zm0-19.7a.9.9 0 0 1-.5-.4.8.8 0 0 1-.2-.6 66472.7 66472.7 0 0 0 8.3-74c.2-.2.4-.3.6-.2l.6.3c0 .2.2.4.1.6 0 .7-7.2 67.4-8 73.5 0 .2 0 .4-.3.5-.1.2-.3.2-.6.2z"/><path fill="#fff" d="M434.1 159a9 9 0 0 1 2.6-8.5c.5-.7 1.3-1 2.2-1.2.5 0 1 .1 1.5.4.4.2.8.6 1 1 .6.9 1 1.8 1.1 2.8.7 2.8.8 5.6.3 8.4-.5 2.8-2 5.3-4.1 7.1"/><path fill="#242424" d="m438.7 170-.4-.1a.7.7 0 0 1-.3-.3.8.8 0 0 1 .1-1.2c2-1.6 3.4-4 3.9-6.6a18 18 0 0 0-.3-8c-.1-1-.4-1.8-1-2.6-.1-.3-.4-.6-.7-.8l-1-.2c-.7 0-1.3.4-1.7.9a8.3 8.3 0 0 0-2.3 7.8.9.9 0 0 1-.1.6.7.7 0 0 1-.6.3.8.8 0 0 1-1-.6 10 10 0 0 1 2.8-9.3c.8-.8 1.7-1.3 2.8-1.4a4 4 0 0 1 3.3 1.7c.6 1 1 2 1.2 3 .7 3 .8 6 .3 8.8a13 13 0 0 1-4.7 7.9h-.3zm24.9-47.3c1.5 4.7 4.4 9 8.3 12.1 4.3 3.8 9.8 6 15.6 6.2 4.5 0 9.6-2.6 10.3-7 .5-3-1-5.9-2.9-8.3a41.3 41.3 0 0 0-22-15.7c-2.7-.7-6.5-1.5-8.7.7-2.7 2.9-1.7 8.7-.6 12z"/><path fill="#242424" d="M487.3 141.8a25 25 0 0 1-15.9-6.4c-4-3.2-7-7.6-8.6-12.5-.7-2-2.6-9.3.9-12.7 2.4-2.5 6.3-1.8 9.5-1 9 2.6 17 8.3 22.5 16 1.6 2.1 3.6 5.4 3 9-.8 5-6.2 7.5-11.1 7.6h-.3zM468.5 110c-.7 0-1.3 0-2 .3-.6.2-1.2.5-1.6 1-2.3 2.2-1.7 7.2-.5 11 1.5 4.6 4.3 8.7 8.1 11.7 4.1 3.7 9.4 5.8 15 6 4.1 0 8.8-2.3 9.5-6.3.4-2.2-.5-4.6-2.7-7.7a40.8 40.8 0 0 0-21.6-15.4c-1.4-.4-2.8-.6-4.2-.6z"/><path fill="#fff" d="M511 127.5c6.3-10.8 1.5-25.3-10.6-32.3-12.2-7-27.1-4-33.3 6.9-6.3 10.8-1.5 25.2 10.7 32.3 12.1 7 27 4 33.3-6.9z"/><path fill="#242424" d="M491.5 139a28.5 28.5 0 0 1-26.8-19 22 22 0 0 1 1.7-18.3c6.5-11.2 21.9-14.4 34.4-7.2 12.6 7.2 17.5 22.2 11 33.3a22.3 22.3 0 0 1-15 10.6c-1.7.3-3.5.5-5.3.6zm-4.9-46.7a21.3 21.3 0 0 0-18.8 10.2 20.5 20.5 0 0 0-1.5 17 26.9 26.9 0 0 0 30.2 17.3 20.5 20.5 0 0 0 13.8-9.7c6-10.4 1.4-24.4-10.4-31.1-4-2.4-8.6-3.7-13.3-3.7z"/><path fill="#DBDBDB" d="M364.7 368.4h-73.1c-.3 0-.5 0-.6-.2a.8.8 0 0 1-.3-.6v-42.4a.8.8 0 0 1 .9-.8h73a.8.8 0 0 1 .9.8v42.4c0 .2 0 .4-.3.6l-.5.2zm-72.3-1.6h71.4V326h-71.4v40.7z"/><path fill="#DBDBDB" d="M364.7 376h-73.1c-.3 0-.5-.2-.6-.3a.8.8 0 0 1-.3-.6v-7.5a.8.8 0 0 1 .9-.8h73a.8.8 0 0 1 .9.8v7.5c0 .2 0 .4-.3.6l-.5.2zm-72.3-1.7h71.4v-5.9h-71.4v5.9zm20.3-14.5h-12.2c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6v-26.6a.8.8 0 0 1 .8-.8h12.3l.5.2.3.6v26.9l-.3.3-.3.2h-.3zm-11.4-1.6H312v-25h-10.6v25zm21.1-53.9h-26.9a1 1 0 0 1-.6-.2 1 1 0 0 1-.2-.6v-18.2a.8.8 0 0 1 .8-.8h27c.1 0 .4.1.5.3.2.1.3.3.3.5v18.2l-.3.6-.6.2zm-26-1.6h25.2v-16.5h-25.3v16.5z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/flatline/team-work.svg b/static/img/flatline/team-work.svg
new file mode 100644 (file)
index 0000000..3eef76e
--- /dev/null
@@ -0,0 +1,147 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 592.6 500">
+  <g class="layer">
+    <path fill="#fff"
+      d="m166.7 286 6.8 6.1 24.5-29.3 7.8 8.1s-20.2 42.5-34.6 43.4a18.2 18.2 0 0 1-18.8-10.9l14.3-17.3z" />
+    <path fill="#242424"
+      d="M169.6 315.3a19.3 19.3 0 0 1-18.1-11.6 1 1 0 0 1 .2-1l14.1-17.3.8-.4h.4l.3.3 6 5.3 23.9-28.4.3-.2.4-.1h.4l.4.3 7.9 8 .2.6v.6c-.9 1.8-20.7 43-35.5 44l-1.7-.1zm-16-11.8a17.1 17.1 0 0 0 17.5 9.7c12.8-.8 31-36.9 33.5-42.2l-6.6-6.7-23.7 28.3-.3.3a1 1 0 0 1-.4 0c-.1.1-.2 0-.4 0a1 1 0 0 1-.3-.2l-6.1-5.3-13.2 16.1z" />
+    <path fill="#fff"
+      d="M117.4 460.6s-4 11-3.6 13.6c.4 2.8 13.5 16.5 17.1 16.5 3.7 0 14.2-1 14.8-3.2.7-2.3-9.2-4.3-10.7-5.1-1.4-.9-1.5-8.1-1.5-8.1l-16.1-13.7z" />
+    <path fill="#242424"
+      d="M131 491.7c-4.5 0-17.8-14.4-18.2-17.3-.4-3 3.2-13 3.6-14.2a1 1 0 0 1 1.2-.6c.2 0 .3 0 .4.2l16.2 13.7c.2 0 .2.2.3.3l.1.4c-.1 2.5.2 5 1 7.3l2.7.8c4.2 1.3 7.5 2.4 8.4 4a1.7 1.7 0 0 1 .1 1.5c-1.2 3.7-15.6 4-15.8 4zm-13.1-29.4a51.7 51.7 0 0 0-3 11.8 46.8 46.8 0 0 0 16 15.6c5.3 0 13.3-1.3 13.9-2.5-.4-.9-5.3-2.3-7.2-2.9l-3-1c-1.7-1-2-5.6-2-8.6l-14.7-12.4z" />
+    <path fill="#242424"
+      d="M141.3 347.9s20.4 59.4 17.5 68.5c-3 9-25.3 57.9-25.3 57.9l-16.2-13.7s11.4-43.6 10.4-50.7c-1-7-17.2-42-17.2-42S90.2 416 77.6 416.4c-12.6.3-55.3 4.6-55.3 4.6l5.1-18.7S70 392.7 73 388c3.1-4.6 13.4-55.1 13.4-55.1l52.4 10.8" />
+    <path fill="#242424"
+      d="M133.5 475.3a1 1 0 0 1-.7-.3l-16.2-13.6a1 1 0 0 1-.3-.5v-.6c4-15 11.2-44.8 10.4-50.2-.9-5.8-12.8-32-16.2-39.7-1.8 4-5.9 13.1-10.8 22.1-9 16.4-16.4 24.7-22 24.8-12.6.3-54.8 4.5-55.3 4.6h-.5a1 1 0 0 1-.4-.4l-.2-.4v-.5l5-18.7.3-.4.5-.3c16.2-3.6 43-10.6 45-13.7 2.5-3.7 10.4-40.8 13.2-54.8l.2-.4.3-.3c.2-.1.5-.2.7-.1l52.5 10.8a1.1 1.1 0 0 1 .6.5l.2.3v.4l-.2.4-.3.3a1 1 0 0 1-.3.2h-.4L87 334c-1.7 8.4-10.3 50.1-13.3 54.6-3 4.4-39.2 13-45.6 14.4l-4.6 16.7c7.6-.8 42.7-4 54-4.4 9.8-.3 26.3-34.6 32-47.8 0-.2.1-.3.3-.4l.5-.2a1 1 0 0 1 1 .6c.6 1.4 16.3 35.2 17.4 42.3 1 6.7-8.9 44.8-10.3 50.4l14.6 12.4c3.5-7.6 22-48.4 24.7-56.6 2.3-7.2-12-51.4-17.6-67.9l.1-.8.6-.5h.8c.3.2.5.4.6.7.8 2.4 20.5 59.8 17.5 69.2a1163.6 1163.6 0 0 1-25.6 58.3 1 1 0 0 1-.4.2h-.3z" />
+    <path fill="#85C241"
+      d="M173.6 292c-2.4 5.7-13.8 18-13.3 18.5-2.2-2.6-5.4-4.6-7.9-7.2-1.5-1.6-8.6-7.6-8.5-9.7-.4 18.2-1.1 36.1-2.6 54.3-16.2 8-59.2-1.1-59.7-3-2-7 1.8-19.3 2.6-26.4 1.5-13.6 2.1-27.3 4.2-40.7.4-3.9 1.6-7.6 3.5-10.9 4.2-6.5 14.4-9 21.6-6 10.8 4.4 26-2.2 35.8 3.5 2.4 1.5 4.5 3.4 6.3 5.7l10 11.4 5.3 5.9c.8.7 2.7 1.4 3 2.6 0 .7 0 1.4-.3 2z" />
+    <path fill="#fff"
+      d="M107.2 225.8c.6-.4 1.3-.6 2-.8 2.7-.6 2.8 0 4.7-2a20 20 0 0 1 10.6-5.7c7.7-1.5 14 1.7 13.2 10.5-.4 3.5-1.5 7-3.4 10-3.6 6.6-9.1 13-16.6 14.5-2.2.5-6.4.8-8.3-.8a20.4 20.4 0 0 1-6.6-18.9 13 13 0 0 1 1.6-4.1 8 8 0 0 1 2.8-2.7z" />
+    <path fill="#242424"
+      d="M113.9 253.6a8 8 0 0 1-5.2-1.5 21.4 21.4 0 0 1-7-19.8c.3-1.6.9-3.1 1.7-4.5a9 9 0 0 1 5.5-3.8l1.7-.3c1.1-.2 1.3-.3 2.5-1.5a21 21 0 0 1 11.1-6c4.7-.9 8.8-.1 11.4 2.2a10.8 10.8 0 0 1 3 9.4c-.3 3.7-1.6 7.2-3.5 10.3-3.2 6-8.8 13.4-17.3 15a20 20 0 0 1-4 .5zm14-35.7c-1 0-2.2 0-3.3.3a19 19 0 0 0-10.1 5.4 5 5 0 0 1-3.6 2l-1.6.3a5 5 0 0 0-1.7.7c-1 .5-1.9 1.3-2.5 2.3a9.8 9.8 0 0 0-1.4 3.7 19.3 19.3 0 0 0 6.2 18c1.3 1 4.7 1.1 7.5.5 7.7-1.5 12.9-8.5 16-14 1.7-3 2.8-6.2 3.2-9.5a8.7 8.7 0 0 0-2.4-7.7 9.2 9.2 0 0 0-6.2-2z" />
+    <path fill="#fff"
+      d="m131.8 257.1 1.5 11.9a8.6 8.6 0 0 1-10 5.8c-7.9-1-9.5-6.4-9.5-6.4l-2.4-21.9s5.3-3.7 2.2-16c6.7 2 13.8 2.2 20.5.5 0 0 4 13.3 4 19.5 0 6.1-6.2 6.5-6.3 6.6z" />
+    <path fill="#242424"
+      d="M125 276h-1.7c-8.6-1.1-10.4-7-10.5-7.2l-2.5-22 .1-.6.4-.4s4.7-3.6 1.8-15a1 1 0 0 1 .4-1l.4-.2h.6c6.4 2 13.3 2 19.9.5l.7.1c.2.1.4.3.5.6.1.6 4 13.6 4 19.8a7.5 7.5 0 0 1-6.2 7.4l1.4 11v.3a9.8 9.8 0 0 1-9.4 6.6zm-12.5-29 2.3 21.3s1.6 4.6 8.7 5.5a7.7 7.7 0 0 0 8.8-5l-1.5-11.5v-.5l.3-.3.7-.4a5.8 5.8 0 0 0 5.3-5.6c0-5-2.8-15.2-3.7-18.3-6 1.4-12.4 1.3-18.4-.2 2 9.5-1.3 13.7-2.5 15z" />
+    <path fill="#fff"
+      d="M115.8 245.6c-.3-1-1-2-2-2.5-.9-.5-1.8-.9-2.8-1-.6-.2-1.2-.3-1.7-.2-.4.1-.8.3-1 .6-.9.5-1.5 1.2-1.7 2.1-.2.8-.1 1.6.1 2.3.2.8.5 1.5.9 2.2a6.3 6.3 0 0 0 6.2 3.1 6 6 0 0 0 2.3-.8" />
+    <path fill="#242424"
+      d="M113 253.3a7.1 7.1 0 0 1-6.3-3.6c-.4-.8-.8-1.7-1-2.6-.2-.9-.3-1.8-.1-2.7a5 5 0 0 1 2-2.8l1.4-.7h2c1.2.3 2.3.7 3.2 1.2 1.2.8 2 1.8 2.5 3v.9l-.3.3-.3.2a1 1 0 0 1-.4 0h-.4a1 1 0 0 1-.5-.6c-.3-.9-.9-1.6-1.6-2a8.4 8.4 0 0 0-3.8-1.1c-.3 0-.5.2-.7.4-.6.3-1 .9-1.3 1.6a7.6 7.6 0 0 0 1 3.8 5.3 5.3 0 0 0 7.2 1.8l.3-.1h.4l.4.2.3.3c0 .2.1.5 0 .8 0 .2-.2.4-.4.6a7 7 0 0 1-3.6 1z" />
+    <path fill="#fff" d="M129.1 239.6s5 5.4 4 6.6c-.8 1.2-3.5 1-3.5 1" />
+    <path fill="#242424"
+      d="M130.4 248.2h-.8a1 1 0 0 1-.7-.4 1 1 0 0 1 .1-1.4c.2-.2.5-.3.8-.3.9.2 1.7 0 2.5-.3-1-2-2.4-3.9-4-5.5a1 1 0 0 1-.3-.7 1 1 0 0 1 1-1h.4l.3.3c5.5 6 4.6 7.4 4.3 7.8a4.4 4.4 0 0 1-3.6 1.5zm-4.7-8.1c.6 0 1-.7 1-1.5-.1-.7-.6-1.3-1.2-1.3-.5 0-1 .7-.9 1.5 0 .7.6 1.4 1.1 1.3zm8.8-1.1c.6 0 .9-.8.8-1.6-.2-.7-.8-1.3-1.3-1.2-.6.2-.9.9-.7 1.6.1.8.7 1.3 1.2 1.2zm-6.1 13c-2 0-3.8-.4-5.5-1.3a1 1 0 0 1-.4-.6 1 1 0 0 1 1.5-1.1c2.8 1.7 7.9.7 9.6.2h.5l.3.1c.2 0 .3.2.3.3l.2.3v.5a1 1 0 0 1-.3.7 24 24 0 0 1-6.2 1zm3.4 5.1s-7.1 2.7-11.8.8c0 0 6.1 9.2 12.8 7.4l-1-8.2z" />
+    <path fill="#242424"
+      d="M131 266.5c-6.5 0-11.6-7.7-11.8-8a1 1 0 0 1-.2-.7l.3-.6a1 1 0 0 1 1.1-.3c4.2 1.8 11-.7 11-.7l.5-.1.4.1c.2 0 .3.2.4.3l.1.4 1 8.1a1 1 0 0 1-.7 1.2l-2.1.3zm-8.4-7c2 2.3 5.5 5.4 9.2 5l-.8-6c-2.7.9-5.5 1.2-8.4 1z" />
+    <path fill="#fff" d="M27.4 402.2s-9.9-1.4-13.5-.6c-3.6.8-16.5 43-10.9 41.3 5.6-1.7 19.3-22 19.3-22l5.1-18.7z" />
+    <path fill="#242424"
+      d="M2.7 444c-.2 0-.5 0-.7-.2-.2 0-.4-.2-.5-.3-2.2-2.2.2-12.8 2.6-21.2 1-3.5 6.1-21 9.5-21.7a59.8 59.8 0 0 1 14.3.8l.3.3.1.4v.4l-5 18.6v.3c-1.5 2-14 20.7-19.9 22.5h-.7zM17 402.4c-1 0-2 0-3 .2-2 1.2-8.6 20-10.8 32.2-1 5.2-.5 6.7-.4 7.1 4.4-1.6 14.8-15.8 18.6-21.4L26 403c-3-.4-6-.7-9.1-.7z" />
+    <path fill="#fff"
+      d="M295.3 298.7s24.7 9.3 27.5 8c2.8-1.3-4.4-33.5-4.4-33.5l9.6-2.2s12.3 43 6.9 50.4c-5.4 7.3-33.2.4-39.6-7.2-6.3-7.5 0-15.5 0-15.5z" />
+    <path fill="#242424"
+      d="M325.2 325.5c-10.9 0-26-5.2-30.6-10.6-6.7-8.1 0-16.8 0-16.8l.6-.4h.6a132 132 0 0 0 26.6 8.1c1-2.2-1.7-18-4.9-32.4a.9.9 0 0 1 .2-.7c0-.2.1-.3.2-.3l.4-.2 9.6-2.2h.7l.5.7c1.3 4.4 12.1 43.7 6.7 51.3-1.6 2.1-4.8 3.3-9.5 3.5h-1zm-29.4-25.6a11.1 11.1 0 0 0 .4 13.7c4.3 5.1 19.7 10.1 30 9.9 4-.2 6.7-1.1 8-2.7 4-5.6-3.3-36.1-6.8-48.7l-7.7 1.8c4.7 21.3 6 32.6 3.6 33.7-3 1.2-21-5.2-27.6-7.7h.1z" />
+    <path fill="#fff"
+      d="m278.8 149.6 131.4 69.8A149.5 149.5 0 0 1 209 281a149.5 149.5 0 0 1-61.6-201.2 149.5 149.5 0 0 1 201.2-61.6c24.3 13 44.6 32.3 58.5 56l-128.3 75.4z" />
+    <path fill="#242424"
+      d="M278 299.3a148.8 148.8 0 0 1-142.1-106A149.6 149.6 0 0 1 408 74.7l-.2.4-.3.2-126.7 74.4 129.8 68.9c.2.1.4.3.4.6.1.3.1.5 0 .8a148.5 148.5 0 0 1-88.5 72.7 151.6 151.6 0 0 1-44.5 6.7zM279.6 2a149.3 149.3 0 0 0-105 43.6 147.5 147.5 0 1 0 234.3 174.2l-130.5-69.3-.4-.4a1 1 0 0 1 0-1l.4-.4 127.4-74.9A147.6 147.6 0 0 0 279.5 2z" />
+    <path fill="#fff"
+      d="M191.7 265.5a189 189 0 0 1-13.5 11.7s-19.3 37-28.4 37c-9 0-53.4-24.6-53.4-24.6s-5-4.7 0-13.2c5-8.6 47.4 17.2 47.4 17.2l24.8-24.9s2.2-6.6 2.6-9c.4-2.6.1-8.2 2.7-7.4 2.7.7 1 9 1 9s8.8-10.7 11.8-7.3c3 3.5 7.6 8.5 5 11.5z" />
+    <path fill="#242424"
+      d="M149.8 315.2c-9.2 0-52-23.7-53.8-24.7l-.2-.1c-.3-.2-5.5-5.4-.2-14.5a4.5 4.5 0 0 1 2.8-2c9.8-2.6 40.2 15.3 45.3 18.4l24-24c.4-1.2 2.2-6.6 2.5-8.7l.2-2c.2-2.3.4-4.9 1.9-5.9a2.3 2.3 0 0 1 2-.3c2.2.6 2.4 4 2.1 6.8 2.4-2.4 6.1-5.7 8.8-5.8a3.2 3.2 0 0 1 2.4 1l.3.4c3.2 3.7 7.7 8.9 4.7 12.5a178 178 0 0 1-13.5 11.6c-2.6 4.6-20 37.3-29.3 37.3zM97.1 289c15.3 8.5 45.8 24.3 52.7 24.3 7 0 22.2-26.3 27.5-36.5l.2-.3c.2 0 11-8.6 13.5-11.5 1.9-2.3-2-6.8-4.7-9.9l-.3-.3-.4-.2a1 1 0 0 0-.4-.1c-2.4 0-7.1 4.7-9.5 7.6a1 1 0 0 1-1.7-.2 1 1 0 0 1-.1-.6c.8-3.9.7-7.7-.2-8h-.3c-.6.6-.8 3-1 4.6l-.2 2a101.3 101.3 0 0 1-2.9 9.7l-24.7 24.8a1 1 0 0 1-.6.3 1 1 0 0 1-.7-.2c-9.6-5.8-36.4-20.6-44.4-18.6-.3 0-.6.2-.9.4l-.7.7c-4.2 7.2-.8 11.3-.2 12z" />
+    <path fill="#85C241" d="m129.1 281.2-13 22.3s-23.3-9.2-25.5-17.5c-2.2-8.3 2-22 7.5-20.6 5.4 1.5 31 15.8 31 15.8z" />
+    <path fill="#fff" d="m489.2 271-20.2-5.3-6-40-15.6-6.4s2 52.6 9.1 57.2c13.7 9 37.7 12.1 37.7 12.1l-5-17.6z" />
+    <path fill="#242424"
+      d="M494.2 289.7h-.1c-1-.1-24.3-3.3-38.1-12.4-7.2-4.7-9.3-52.5-9.5-58a1 1 0 0 1 .4-.8 1.1 1.1 0 0 1 1-.1l15.5 6.5c.2 0 .3.1.4.3l.2.4 6 39.3 19.4 5.1c.2 0 .3.2.5.3l.2.4 5.1 17.8v.4l-.2.5a1 1 0 0 1-.8.3zM448.6 221c.9 20.9 3.8 51.6 8.5 54.7a103 103 0 0 0 35.7 11.8l-4.5-15.7-19.5-5.1a1 1 0 0 1-.8-.8l-5.9-39.4-13.5-5.6z" />
+    <path fill="#fff"
+      d="M574.5 479.2c.4 1.1 4 7.3 3.2 8.5-.8 1.2-12.4 8.6-9 9.7a135 135 0 0 0 23.4-1.5l-12-31.6-5.6 15z" />
+    <path fill="#242424"
+      d="M571.9 498.7c-1.2 0-2.3 0-3.5-.3-.3 0-.6-.3-.8-.5-.3-.2-.4-.6-.5-.9-.3-1.7 2-3.8 7.3-7.9a29 29 0 0 0 2.5-2c-.6-2-1.4-3.8-2.4-5.6l-1-2v-.6l5.6-15c0-.2.2-.3.4-.5l.6-.1.5.1.4.5 12.2 31.6v.5l-.1.4-.3.3a1 1 0 0 1-.4.2c-1.8.2-14 1.8-20.5 1.8zm-2.7-2.2c2.7.6 13.8-.5 21.5-1.5l-10.6-27.9-4.5 12.2.7 1.3c2.2 4.4 3 6.5 2.3 7.7a15 15 0 0 1-3 2.5 34.3 34.3 0 0 0-6.4 5.7z" />
+    <path fill="#fff"
+      d="M518.3 473.1s7 19.9 5.8 20.4c-1.2.4-30.4 7.2-29.1 5.4a55.8 55.8 0 0 1 15-8.1l-1.8-9.7 10.1-8z" />
+    <path fill="#242424"
+      d="M495.8 500c-.9 0-1.5-.1-1.7-.3a1.2 1.2 0 0 1 0-1.4c1-1.5 11-7.1 14.8-8.3a180 180 0 0 1-1.7-9.2c0-.2.2-.3.3-.4l10.2-8.1a1 1 0 0 1 .9-.2c.1 0 .3 0 .4.2l.3.4c7.2 20.8 6.1 21.2 5.1 21.6a202 202 0 0 1-28.6 5.7zm13.8-8.2a82.7 82.7 0 0 0-11.9 6.2c6.3-.9 22-4.4 25.5-5.3-1.4-6.1-3.2-12-5.4-18l-8.5 6.9 1.7 9a1 1 0 0 1-.8 1.2h-.6zm-.4-.8h-.2l.2.4.2.2-.2-.6z" />
+    <path fill="#242424"
+      d="M507.4 356s-20.4 42.2-20.7 55.5c-.3 13.4 17.2 69.6 17.2 69.6l17.8-3s-13.3-56.1-11.3-62c2-5.9 17.4-43.7 17.4-43.7s6 32.5 10.3 44.4c4.2 12 31.4 63.1 31.4 63.1l18.6-3.6s-24.7-57.2-25.6-67.1l-5.8-62.8-49.3 9.5z" />
+    <path fill="#242424"
+      d="M504 482.1a1 1 0 0 1-.7-.1 1 1 0 0 1-.4-.6c-.7-2.3-17.5-56.5-17.2-69.9.2-13.4 20-54.3 20.8-56l.2-.4.5-.1 49.3-9.5h.5c.1 0 .2 0 .3.2a1 1 0 0 1 .4.7l5.8 62.8c.9 9.6 25.3 66.2 25.5 66.8l.1.4v.5l-.3.3a1 1 0 0 1-.4.2l-18.7 3.6a1 1 0 0 1-.7 0 1059.5 1059.5 0 0 1-31.9-63.7c-3.4-9.8-8-32.5-9.7-41.2-3.7 9.3-14.3 35.7-16 40.5-1.4 4 6 39 11.3 61.6v.4l-.1.3-.3.3a1 1 0 0 1-.4.2l-17.8 3-.2-.3zm4-125.3c-2.2 4.6-20.1 42.6-20.4 54.7-.2 12.2 14.8 61.4 17 68.5l15.8-2.7c-2.2-9.2-13-55.8-11-61.6 2-5.7 16.7-42.1 17.3-43.7l.5-.5h.6c.2 0 .4 0 .6.2a443.9 443.9 0 0 0 10.6 44.8c4 11 27.7 56.2 31 62.3l16.6-3.3c-3.6-8.3-24.3-57-25.2-66.3l-5.7-61.6-47.7 9.2z" />
+    <path fill="#85C241" d="m518.4 280.7-47.5-17.9 1.5 25.1 37.7 16.7 8.3-23.9z" />
+    <path fill="#85C241"
+      d="M505 284.7c1.4-2 30.8-8.7 39.6-1.3 8.9 7.3 14.8 59.3 16.2 75.4l-57.7 4.1s-6-67.5 1.9-78.2z" />
+    <path fill="#242424"
+      d="M502.6 358.3a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c-.1-1.9-3.6-47-1-58.3a1 1 0 0 1 .4-.6l.4-.1h.4l.3.1c.2 0 .2.2.3.3l.2.4v.4c-2.6 10.9 1 57.2 1 57.7v.4l-.2.3a1 1 0 0 1-.7.4z" />
+    <path fill="#fff"
+      d="M534.3 274.9c2.8 1 6 1 8.9.4 1.3-.3 2.5-1 3.5-2 .4-.4.7-1 .8-1.7 0-.7-.1-1.4-.5-2a4.6 4.6 0 0 0 3.8-2 8.3 8.3 0 0 0 1.5-4.2 5.6 5.6 0 0 0-1.7-5.2c1.4-.9 3-2 3.3-3.5 0-.9 0-1.7-.4-2.5-.5-1.5-1.2-3-2-4.5-.4-.7-1-1.6-1.9-1.5a8.4 8.4 0 0 0-2-8.7 7 7 0 0 0-4-2c-1.7 0-3.3.2-5 .6a8.4 8.4 0 0 0-7-2.9 5.9 5.9 0 0 0-4.4 4 13 13 0 0 0-5.4.8 6.3 6.3 0 0 0-3.8 3.8 4.2 4.2 0 0 0 1.9 4.8 4.4 4.4 0 0 0-3.5 4.8 5.4 5.4 0 0 0 4 4.5c.4 0 .7.1 1 .3l.4 1c.4 1.1 1.5 1.6 2 2.5a40 40 0 0 0 3.7 8.7 22 22 0 0 0 2.3 4.6c1 1.2 2 1.1 3.4 1.5l1 .4z" />
+    <path fill="#242424"
+      d="M539.7 276.7c-2 0-3.9-.3-5.7-.9l-1-.3-1-.2a4.9 4.9 0 0 1-3-1.6c-.7-1-1.3-2.1-1.7-3.3l-.7-1.6c-.6-1.2-1.4-2.7-2-4.2l-.5-1.5c-.3-1-.7-2-1.2-2.8l-.7-.8a4.8 4.8 0 0 1-1.4-2v-.2l-.1-.3h-.3a6.4 6.4 0 0 1-5-5.5 5.5 5.5 0 0 1 2.6-5.1 5.5 5.5 0 0 1-1-4.7 7.2 7.2 0 0 1 4.4-4.6 13 13 0 0 1 5.2-.8 7 7 0 0 1 4.8-4 9.4 9.4 0 0 1 7.6 2.7 26 26 0 0 1 4.7-.5 8 8 0 0 1 4.7 2.4 9.3 9.3 0 0 1 2.6 8.7c.6.4 1.2 1 1.5 1.7.8 1.5 1.5 3 2 4.7.4 1 .5 2 .4 3a5.7 5.7 0 0 1-2.6 3.5 7 7 0 0 1 1 5.1 9.2 9.2 0 0 1-1.6 4.7 6 6 0 0 1-3.2 2.2 4.5 4.5 0 0 1-1 3.5 7.4 7.4 0 0 1-4 2.3 17 17 0 0 1-3.8.4zm-5.2-2.8c2.7.9 5.6 1 8.4.4 1.1-.2 2.2-.8 3-1.6.3-.3.5-.7.6-1.2 0-.4 0-.9-.3-1.3a1 1 0 0 1-.1-.5l.1-.5.4-.5h.5a3.8 3.8 0 0 0 3-1.7c.8-1 1.2-2.3 1.3-3.6 0-.7.2-3.2-1.3-4.3a1 1 0 0 1-.3-.4 1 1 0 0 1 0-.5v-.5l.4-.3c1.2-.7 2.6-1.6 2.8-2.8 0-.7 0-1.4-.3-2a26 26 0 0 0-1.9-4.4c-.4-.7-.7-1-1-1a1 1 0 0 1-.5-.1.8.8 0 0 1-.3-.3 1 1 0 0 1-.2-.5v-.5a7.5 7.5 0 0 0-1.8-7.6c-1-1-2.2-1.6-3.5-1.8-.5 0-3.5.3-4.3.5-.2.1-.4.2-.6.1a1 1 0 0 1-.6-.3 7.7 7.7 0 0 0-6-2.5 5 5 0 0 0-2.3 1.1c-.7.6-1.1 1.4-1.4 2.2 0 .2-.2.4-.3.5a1 1 0 0 1-.7.2c-1.7-.1-3.4 0-5 .7a5.2 5.2 0 0 0-3.1 3.2c-.2.6-.2 1.3 0 2a4 4 0 0 0 1.3 1.6c.2 0 .3.2.4.4l.1.6a1 1 0 0 1-.8.9 3.5 3.5 0 0 0-2.6 3.6 4.3 4.3 0 0 0 3.3 3.6c.5 0 .9.3 1.2.6.4.3.6.8.7 1.2.2.5.5 1 1 1.3.4.4.8.8 1 1.2.6 1 1 2.1 1.4 3.2l.4 1.5a40.1 40.1 0 0 0 2.7 5.7c.3 1 .8 2 1.4 2.8.5.5 1.2.9 2 1l1 .2 1 .3h-.2z" />
+    <path fill="#fff" d="M520.8 257.2s-5.8 4.9-5.4 6.4c.5 1.5 3.5 1.5 3.5 1.5" />
+    <path fill="#242424"
+      d="M518.9 266.1c-.5 0-3.8 0-4.5-2.2-.4-1.4 1.5-4 5.7-7.5l.4-.1c.1 0 .2-.1.4 0h.3c.2 0 .3.2.4.3a1 1 0 0 1-.2 1.4c-2 1.5-3.7 3.3-5 5.4.1.3 1.4.7 2.5.7a1 1 0 0 1 1 1 1 1 0 0 1-1 1z" />
+    <path fill="#fff"
+      d="M526 244.3c-.4.1-.8.4-1.1.8a13 13 0 0 0-2.5 4 272.4 272.4 0 0 0-6.2 21.2c-.6 2.6 6 4.7 7.4 4.2l-4 9.8s2.8 1.8 8.9 1c6-1 6.5-2.2 6.5-2.2l3-11.8a8.6 8.6 0 0 1-5.4-7c0-1.1 0-2.2-.2-3.2-.5-1-1.5-1.6-1.6-2.9a3.8 3.8 0 0 1 1.1-3.2c.2-.2.5-.4.4-.7l-.3-.4c-.6-.6-1-1.4-1-2.3 0-.9.4-1.7 1-2.3-1.7-.5-2.3-2.5-2.6-4.2 0 .5-2.7-.7-2.7-.7h-.7z" />
+    <path fill="#242424"
+      d="M525.3 286.6c-2.2.2-4.3-.3-6.3-1.3a1 1 0 0 1-.4-.5v-.7l3.5-8.5c-2.1-.3-4.1-1.2-5.8-2.5a2.9 2.9 0 0 1-1-2.9c1-4 2-8 3.2-12.1l.2-.9a69 69 0 0 1 2.8-8.3c.6-1.6 1.5-3.2 2.7-4.5a3 3 0 0 1 2.7-1l.2.1 1.8.7h.6l.4.1.3.3.1.4c.3 1.4.8 3 2 3.4.2 0 .4.1.5.3l.2.5v.5c0 .2-.1.3-.3.4a2.3 2.3 0 0 0 0 3.2c.3.2.5.5.6.9v.9l-.6.7a2.8 2.8 0 0 0-.9 2.4c.1.5.4.9.7 1.2.4.4.7.9.9 1.4.2.7.3 1.5.3 2.2v1.2a7.7 7.7 0 0 0 4.7 6.4l.6.5v.7l-3 11.8c-.3 1-1.8 2-7.3 3h-3.4zm-4.5-2.7c2.5.8 5 1 7.6.5 2-.1 4-.6 5.7-1.6l2.8-10.7a10.1 10.1 0 0 1-5.3-9.1c0-.5 0-1-.2-1.6l-.5-.8c-.6-.7-1-1.4-1.1-2.3a4.7 4.7 0 0 1 1.3-4 3.9 3.9 0 0 1-1.1-2.7c0-.7.1-1.4.5-2-1-1-1.7-2.2-2-3.5a16 16 0 0 1-2.1-.7h-.2c-.2 0-.3.1-.6.4-1 1.1-1.7 2.4-2.2 3.8-1.1 2.7-2 5.4-2.7 8.1l-.3 1-3.2 12c0 .3.1.6.4 1a9.9 9.9 0 0 0 6.3 2l.4.4c.2.1.2.3.3.5l-.1.5-3.7 8.8z" />
+    <path fill="#fff"
+      d="M530.6 261.3c.4-1 1.2-1.8 2-2.4a8 8 0 0 1 2-1.4 2.7 2.7 0 0 1 2.4 0c.4.2.6.4.8.7l.5 1-.1 2.2a9 9 0 0 1-6.3 6.4l.3-.1" />
+    <path fill="#242424"
+      d="M531.8 268.8a1 1 0 0 1-.5-.1 1 1 0 0 1-.4-.5v-.7c0-.2.2-.4.4-.5l.3-.2.6-.2a8 8 0 0 0 5-5.5 4 4 0 0 0 0-1.7l-.3-.6-.5-.4-.7-.2c-.3 0-.5 0-.7.2-.7.3-1.3.7-1.8 1.2-.7.5-1.3 1.2-1.7 2 0 .3-.2.5-.4.6a1 1 0 0 1-.8 0 1 1 0 0 1-.6-.4 1 1 0 0 1 0-.8 6.5 6.5 0 0 1 2.1-2.8c.7-.7 1.5-1.2 2.3-1.6a3.7 3.7 0 0 1 3.3 0c.4.3.8.6 1 1 .4.4.6 1 .7 1.4a6 6 0 0 1-.1 2.6 10 10 0 0 1-7 7.2h-.2zm-8.2 5.9a10 10 0 0 0 6-2s-2 6.1-7.8 6.3l1.8-4.3z" />
+    <path fill="#242424"
+      d="M521.7 280h-.5a1 1 0 0 1-.3-.4l-.2-.5v-.5l1.9-4.3c0-.2.2-.4.4-.5l.5-.1c2 0 3.8-.7 5.4-1.7.2-.2.4-.2.6-.2.2 0 .5 0 .6.2.2.1.4.3.4.5v.6c0 .3-2.3 6.8-8.8 7zm2.5-4.3-.9 2a7.6 7.6 0 0 0 3.8-2.7l-2.8.7zm1.1-20.8c.2-.8.1-1.5-.2-1.6-.3 0-.7.5-1 1.3-.2.8 0 1.5.2 1.6.4 0 .8-.5 1-1.3zm-4.8 14.3a4.5 4.5 0 0 1-3.2-1.2.9.9 0 0 1-.2-.4l-.1-.4v-.4l.3-.3a1.1 1.1 0 0 1 .8-.3l.3.1.4.3c.1.2 1.6 1.5 4.3-.4.2-.1.5-.2.8-.1.3 0 .5.2.6.4l.2.4v.4l-.2.3c0 .2-.2.2-.3.3a6.7 6.7 0 0 1-3.8 1.3z" />
+    <path fill="#fff" d="m473.3 250-.4.4-120.1-87.7 137.4-57.2a149 149 0 0 1-17 144.5z" />
+    <path fill="#242424"
+      d="M473 251.4a1 1 0 0 1-.7-.1l-120-87.8a1 1 0 0 1-.4-.4 1 1 0 0 1 .1-1l.4-.4 137.4-57.1c.2-.1.5-.1.8 0 .2 0 .4.3.5.5a150.8 150.8 0 0 1-17 145.5l-.4.5-.3.3a1 1 0 0 1-.5 0zM354.8 163l117.8 86a148.7 148.7 0 0 0 17-142.1l-134.8 56z" />
+    <path fill="#fff"
+      d="M542.7 289.8s-44.8-17.4-46.8-22c-1.5-3.7-1.1-8.6-1.7-12.4-.8-6-.7-11.9-2-17.9-.2-.6-.2-1.3-.1-2l.8-1.5c.8-1 5.3-8.9 1.5-8.7-.4.1-.8.3-1 .7l-2 2c-.3-2.5-.7-5-1.3-7.4a4.4 4.4 0 0 0-5.3-2.8 6.3 6.3 0 0 0-4.8 3.7c-.2.8-.2 1.6-.2 2.4.6 5.5.8 11 .5 16.6a128 128 0 0 0-.4 29.6c.3 3.2.6 7.4 2.8 10 5.6 6.7 44.2 29.4 54.7 24.6 10.5-4.9 5.3-14.9 5.3-14.9z" />
+    <path fill="#242424"
+      d="M533.7 306.3a72 72 0 0 1-26-8.7 109 109 0 0 1-25.8-17c-2.1-2.6-2.6-6.5-3-9.7v-.7a130 130 0 0 1 .3-28l.2-1.8c.3-3.9.3-7.8-.1-11.6-.1-1.6-.3-3.3-.3-5-.1-.8 0-1.7.2-2.6a7.2 7.2 0 0 1 5.5-4.5 5.4 5.4 0 0 1 6.4 3.4 23 23 0 0 1 1.1 5.7l.6-.6c.5-.5 1-.8 1.7-.9a2.2 2.2 0 0 1 2.3 1c1.4 2.7-2.8 9.2-2.9 9.3a5 5 0 0 0-.7 1.1 79.5 79.5 0 0 1 1.4 12.2l.7 7.4c.2 1.3.3 2.6.3 4 0 2.7.5 5.4 1.3 8 1.3 3 27.8 14.4 46.2 21.5.3.1.5.3.6.5 1.4 3 1.7 6.3.8 9.5a11.6 11.6 0 0 1-10.8 7.5zM486 218.6l-1 .1a5.3 5.3 0 0 0-4 3 7 7 0 0 0-.1 2c0 1.7.2 3.3.3 4.9.4 4 .4 8 .1 12l-.2 1.8a117.2 117.2 0 0 0-.2 27.5v.7c.3 3 .7 6.6 2.5 8.7 5.8 7.1 43.8 28.8 53.5 24.3a9.6 9.6 0 0 0 5.5-5.5 11 11 0 0 0-.4-7.5c-8.4-3.3-45-17.8-47-22.5-1-2.8-1.4-5.7-1.5-8.6 0-1.4 0-2.8-.3-4l-.7-7.5a72 72 0 0 0-1.2-10.4c-.2-.8-.3-1.7 0-2.5.1-.6.4-1.2.8-1.7 1.5-2 3.4-6.5 2.8-7.2h-.3l-.4.3-2 2a1 1 0 0 1-1 .2 1 1 0 0 1-.5-.2l-.3-.5c-.2-2.4-.6-4.8-1.1-7.2a3.4 3.4 0 0 0-3.3-2.2z" />
+    <path fill="#85C241" d="m541.7 312-36.5-12.8 2.6-30.3s34 12.6 39.2 19.5c5.2 7 8.8 24.9-5.3 23.6z" />
+    <path fill="#242424"
+      d="M543.6 313.2c-8.3 0-30.6-10.8-33.3-12.1a1 1 0 0 1-.5-.6 1 1 0 0 1 0-.8l.3-.3.3-.2a1 1 0 0 1 .8 0c11.3 5.6 29.5 13.3 33.5 11.8a6.2 6.2 0 0 0 4-7.2v-.7c.2-.3.4-.4.7-.5.3 0 .6 0 .8.2.2.1.4.4.4.6a8.2 8.2 0 0 1-5.1 9.5 5 5 0 0 1-1.9.3z" />
+    <path fill="#fff"
+      d="m299.1 391.9-2 4c-5.5 10.7-9.2 33.2-20.4 43.7-4 3.8-42.4 30.5-42.4 30.5l-5-13.4 32-32.6c3.8-4 20.1-60.5 20.1-60.5l17.7 28.3z" />
+    <path fill="#242424"
+      d="M234.2 471h-.3a1 1 0 0 1-.4-.2 1 1 0 0 1-.2-.4l-5-13.4a1 1 0 0 1 .3-1l32-32.7c2.6-2.7 13.3-37.4 19.8-60l.4-.6.5-.2h.6l.4.5 17.7 28.3.1.5-.1.5-2 4c-2.1 4.5-3.9 9-5.3 13.8-3.6 10.8-7.7 23-15.3 30.2-4 3.9-41 29.5-42.6 30.6a1 1 0 0 1-.6.1zm-3.7-14.2 4.2 11.6c6.3-4.4 37.6-26.4 41.2-29.7 7.3-6.8 11.3-18.8 14.9-29.4 1.4-4.8 3.2-9.4 5.3-14l1.9-3.5-16.2-26c-3.3 11.5-16.2 55.2-19.8 58.8L230.5 457z" />
+    <path fill="#242424" d="M229.3 456.7s-11 1.8-11 3.5c.2 1.6 9 29.5 12.2 28.4 3.3-1.1 3.7-18.4 3.7-18.4l-4.9-13.5z" />
+    <path fill="#242424"
+      d="M230.3 489.4c-.4 0-.8-.1-1.1-.4-4.2-2.8-11.8-27.6-11.8-28.9 0-.7-.2-2.5 11.8-4.5l.7.1c.2.1.3.3.4.6l4.9 13.3v.4c-.1 4.2-.7 18-4.4 19.3l-.5.1zm-10.9-29.1c.7 3.4 8.3 26.1 11 27 1.2-.4 2.6-8.3 2.8-17.1l-4.5-12.4a36 36 0 0 0-9.3 2.5z" />
+    <path fill="#fff"
+      d="m312.4 383.5 1.3 4.4a622 622 0 0 1 13.2 50.6c.4 5.6-18 46.5-18 46.5l-14-2.5s10.2-43.8 10-48c0-5.6-25.1-58.5-25.1-58.5l32.6 7.5z" />
+    <path fill="#242424"
+      d="M308.8 486h-.1l-14-2.5a1 1 0 0 1-.5-.1 1 1 0 0 1-.3-.3 1 1 0 0 1-.1-.4v-.4a730.8 730.8 0 0 0 10.1-47.9c0-3.8-15-36.8-25-58a1 1 0 0 1-.2-.6 1 1 0 0 1 .7-.8h.6l32.5 7.5c.2 0 .3.1.5.3l.2.4 1.4 4.4c3.5 11 13 46 13.2 50.9.4 5.7-16.2 42.7-18.2 47l-.3.3a1 1 0 0 1-.5.2zm-12.8-4.3 12.2 2.2c7.3-16.4 17.9-41.4 17.6-45.3-.3-4.4-9.4-38.5-13.1-50.4l-1.2-3.9-30-7c5 10.6 24.4 52 24.5 57a759 759 0 0 1-10 47.4z" />
+    <path fill="#fff"
+      d="M261.2 263.7c-3 .2-5.8 1-8.5 2.4-4.6 2.2-9 5.8-10.1 10.8-.5 4.2.4 8.4 2.7 12a57 57 0 0 1 5.5 11.1c1 4 .6 8.8-2.6 11.5 4.3-1.6 8.3-4 11.8-6.9a11 11 0 0 0 3.9-6.8 14 14 0 0 0-1.6-6.4c-1.5-2.9-2.5-6-2.9-9.3a9 9 0 0 1 3.8-8.5c2.5-1.5 10.6-1.3 9.3-5.9-1-3.4-8.4-4.1-11.3-4z" />
+    <path fill="#242424"
+      d="M248.2 312.5a1 1 0 0 1-1-.7v-.5l.4-.6c3-2.6 3.1-7.2 2.2-10.4-.9-2.9-2.2-5.6-3.8-8.1l-1.6-2.8c-2.6-5-3.5-9-2.8-12.6 1.3-6.3 7.2-10 10.6-11.6a23 23 0 0 1 9-2.5s10.9-.4 12.3 4.8a3.8 3.8 0 0 1-.3 2.9c-1.1 2-4 2.6-6.4 3.2-1 .1-2 .4-3 .9a8 8 0 0 0-3.4 7.5c.4 3 1.3 6 2.7 8.6l.1.4c1.2 2.1 1.7 4.5 1.7 6.9-.4 3-1.9 5.6-4.2 7.5a44.3 44.3 0 0 1-12.5 7.1zm13-47.8c-2.8.2-5.5 1-8 2.3-3.1 1.5-8.5 4.7-9.6 10.1-.6 3.2.2 6.7 2.6 11.2l1.6 2.8c1.7 2.7 3 5.6 4 8.6s.8 6.3-.4 9.3c3-1.3 5.7-3 8.1-5.2a10 10 0 0 0 3.5-6c0-2.1-.5-4.1-1.5-6l-.1-.3c-1.5-3-2.4-6-2.8-9.3a10 10 0 0 1 4.3-9.4 11 11 0 0 1 3.6-1.2c2-.5 4.4-1 5.1-2.2a1.8 1.8 0 0 0 0-1.4c-.7-2.6-7-3.4-10.3-3.3z" />
+    <path fill="#242424"
+      d="M264.9 264.7a8.7 8.7 0 0 0-1.1 5.6 6 6 0 0 0 1.4 3.6 5.2 5.2 0 0 0 4.2 1.7c.7 0 1.4-.3 2-.8.3-.5.5-1 .6-1.6.9-4-2.1-16.5-7.1-8.5z" />
+    <path fill="#242424"
+      d="M269 276.6a6.1 6.1 0 0 1-4.6-2 7.4 7.4 0 0 1-1.6-4c-.3-2.2 0-4.4 1.2-6.3 2-3.3 3.9-3.4 5-3 3.3 1.4 4.7 9 4 12.2-.1.8-.5 1.5-1 2a3 3 0 0 1-2.5 1.2l-.5-.1zm-3.3-11.4a7.6 7.6 0 0 0-1 5c.2 1.1.6 2.2 1.2 3a4.2 4.2 0 0 0 3.4 1.4 2 2 0 0 0 1.3-.5c.2-.3.4-.7.4-1.1.6-2.9-.9-9.1-2.7-9.9-.9-.3-2.1 1.4-2.6 2v.1z" />
+    <path fill="#fff"
+      d="M291.4 291.3a6.4 6.4 0 0 1-6 1.9c-2.6-.4-5-1.3-7-2.8a26.1 26.1 0 0 1-10.8-25.2c1.7-9.8 11.3-19.4 21.7-15.7a12.7 12.7 0 0 1 7.7 7.6 3.9 3.9 0 0 1 4 1c2.7 2.7 2.6 5.6 1.2 8.8-2.4 5.3-5.3 10.4-7.4 15.8-1.2 3.1-1.6 6.5-3.4 8.6z" />
+    <path fill="#242424"
+      d="M286.6 294.3h-1.3a16 16 0 0 1-7.4-3 27 27 0 0 1-11.2-26.3 22.3 22.3 0 0 1 10.1-15.1 14.8 14.8 0 0 1 17.6 1.5 16 16 0 0 1 3.2 4.5 5.1 5.1 0 0 1 4.2 1.6 8 8 0 0 1 1.3 9.9l-3 6.4a109 109 0 0 0-5.4 12.3c-.5 2.1-1.3 4.1-2.6 5.9a6.8 6.8 0 0 1-5.5 2.3zm-1.8-44.6c-2.4 0-4.8.8-6.8 2a20.6 20.6 0 0 0-9.3 13.7 25.2 25.2 0 0 0 10.4 24.3 13 13 0 0 0 6.4 2.6 5.4 5.4 0 0 0 5.1-1.5c1-1.6 1.8-3.3 2.2-5.1l1.1-3.2c1.3-3.3 2.9-6.4 4.4-9.4l3-6.4c1.5-3.3 1.2-5.6-.9-7.7a2.8 2.8 0 0 0-3-.8 1 1 0 0 1-.7 0l-.4-.2-.2-.4a11.6 11.6 0 0 0-7-7c-1.4-.6-2.8-.9-4.3-1v.1z" />
+    <path fill="#fff" d="M299.1 268.9s6.3 5.4 5.8 7c-.5 1.6-3.7 1.6-3.7 1.6" />
+    <path fill="#242424"
+      d="M301.2 278.4a1 1 0 0 1-.4 0 1 1 0 0 1-.6-1c0-.2.1-.5.3-.7.2-.2.4-.3.7-.3 1 0 2.6-.3 2.8-.9a23.5 23.5 0 0 0-5.8-6.2 1 1 0 0 1-.1-.8c0-.2 0-.3.2-.4l.3-.3h.4a1 1 0 0 1 .8.2c3.1 2.7 6.7 6.2 6 8.1-.6 2.3-4 2.3-4.6 2.3z" />
+    <path fill="#fff"
+      d="M302.6 305.1c-7 .6-19.2-6.5-19.3-6.8-1.3-4.6-2.3-9.3-3.2-14a9.5 9.5 0 0 0 6-7.9c1.2-6.5 7.2-7.5 9.5-16 3.5 1.4 4 6.5 5 9.6l3.4 13.3c.7 2.9-6.6 5-8.1 4.6l6.7 17.2z" />
+    <path fill="#242424"
+      d="M302 306.2a40 40 0 0 1-19.6-7.6c-1.3-4.7-2.4-9.4-3.2-14.2v-.7c.2-.2.4-.4.7-.4a8.6 8.6 0 0 0 5.2-7.1c.7-3 2.2-5.6 4.4-7.6a20 20 0 0 0 5.2-8.6l.2-.4.3-.2.4-.1h.4c3.4 1.5 4.3 5.5 5.1 8.7l.4 1.7c1.3 4.4 2.4 9 3.5 13.4a3 3 0 0 1-.2 1.6 3 3 0 0 1-1 1.4c-1.8 1.5-4 2.4-6.4 2.7l6 15.9.2.4-.1.5-.4.3-.4.1-.8.2zm-17.8-8.5c1.7 1.1 10.8 6 17 6.4l-6.2-15.8v-.6c0-.1 0-.3.2-.5l.5-.3h.5c2.3 0 4.5-.8 6.3-2.3.4-.3.6-.7.5-1a316 316 0 0 0-3.4-13.3l-.5-1.7c-.3-2.5-1.3-4.8-2.9-6.7-1 3-2.9 5.9-5.2 8.1-2 1.8-3.3 4-3.9 6.6a10.9 10.9 0 0 1-5.8 8.3c.4 2.4 1.7 9 3 12.8z" />
+    <path fill="#fff" d="M303 280.1a3.7 3.7 0 0 1-4.4 1c-.5-.2-1-.6-1.3-1" />
+    <path fill="#242424"
+      d="M300 282.5a4.7 4.7 0 0 1-3.4-1.6 1 1 0 0 1-.4-.8l.1-.3.2-.4c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a2.5 2.5 0 0 0 2 1 3 3 0 0 0 2.2-1l.4-.3h.7c.2 0 .3.2.4.3.1.2.3.4.3.7l-.3.7c-1 1-2.3 1.6-3.7 1.7zm-4 5.5a8.3 8.3 0 0 1-6.3-1.3s2.2 6.8 8.5 7l-2.3-5.8z" />
+    <path fill="#242424"
+      d="M298.2 294.6c-7-.3-9.3-7.3-9.4-7.6a1 1 0 0 1 .3-1.2 1 1 0 0 1 1.3 0 6.9 6.9 0 0 0 5.3 1 1 1 0 0 1 1.2.6l2.3 5.8v.5c0 .2 0 .3-.2.5l-.3.3-.5.1zm-6.3-5.8c1 1.7 2.8 3 4.7 3.6l-1.3-3.4h-3.4v-.2zm5.5-20c.3 0 .5-.9.3-1.8-.2-.8-.7-1.5-1-1.4-.4 0-.5.8-.3 1.7.2.9.6 1.6 1 1.5z" />
+    <path fill="#fff"
+      d="M290.8 273.8a8 8 0 0 0-2-2.7 8.7 8.7 0 0 0-2.2-1.6 3 3 0 0 0-1.3-.3 3 3 0 0 0-1.3.3 2.7 2.7 0 0 0-1.3 2c-.2.7-.2 1.5 0 2.3a10 10 0 0 0 6.8 7.1l-.4-.2" />
+    <path fill="#242424"
+      d="M289.5 281.9h-.3a10.9 10.9 0 0 1-7.5-8c-.2-.8-.2-1.8 0-2.7 0-.5.3-1 .6-1.5a3 3 0 0 1 1.2-1 4 4 0 0 1 3.5 0 8 8 0 0 1 2.4 1.7c1.1.8 2 1.9 2.4 3.1v.8l-.3.3a1 1 0 0 1-1.1.1 1 1 0 0 1-.5-.6c-.4-.9-1-1.7-1.8-2.2-.6-.6-1.2-1-2-1.4a2 2 0 0 0-1.6 0 1.8 1.8 0 0 0-.9 1.2v2a8.8 8.8 0 0 0 5.5 6l.6.1.3.2.4.5a1 1 0 0 1-.3 1.2 1 1 0 0 1-.6.2z" />
+    <path fill="#85C241" d="M308.1 302.3s-20.6-10.5-28-3.5c-7.3 7-6.9 29.7-7.3 67.7l44.6-3s.8-55.7-9.3-61.3z" />
+    <path fill="#242424" d="m272.8 366.5-21.2 56.8s54.4 18.6 79.4 14.3l-13.5-74-44.7 3z" />
+    <path fill="#242424"
+      d="M322.3 439.4c-26.8 0-69-14.4-71-15l-.3-.3a1 1 0 0 1-.2-.3 1 1 0 0 1 0-.8l21.2-56.7c0-.2.2-.4.3-.5l.6-.2 44.5-3a1 1 0 0 1 1.1.8l13.5 74.2v.4l-.1.3-.3.3a52.5 52.5 0 0 1-9.3.7zm-69.4-16.7c7.4 2.5 54 17.5 77 14.2l-13.2-72.3-43.1 3-20.7 55.1zm41.9 59.8s-3.9 10.5-2.4 11.2c1.4.8 29.9 7.1 30.5 3.7.6-3.5-14-12.4-14-12.4l-14-2.5z" />
+    <path fill="#242424"
+      d="M319.1 499.4c-8.4 0-26.3-4.3-27.3-4.8s-2.3-1.1 2-12.5c.1-.2.2-.4.5-.5h.6l14 2.4.4.1c3.6 2.2 15.2 9.6 14.5 13.4a1.8 1.8 0 0 1-1 1.4c-1.2.4-2.4.6-3.7.5zm-26.2-6.5c3.3 1.2 26.8 6 29 4 .2-1.2-6-6.3-13.5-11l-13-2.3c-1.2 3-2 6.1-2.4 9.3z" />
+    <path fill="#fff"
+      d="M296.4 302c6.7 2.3 30.6 18.5 32.4 16.1 1.8-2.3 11-27.2 10.9-28.9 0-1.6-5.3-2.9-3.6-3.5l5.5-2s-1.6-10.4 4.9-11c2.5-.2 4.4 4.4 3.9 11.2-.3 3.8-5 42.8-10.7 50-5.8 7.1-15.2 5.4-32.7-4.3-17.4-9.7-25.6-17.5-23.3-23 2.4-5.7 4.9-7.4 12.7-4.7z" />
+    <path fill="#242424"
+      d="M330.4 339.2c-6.4 0-14.4-3.5-23.8-8.7-18.5-10.3-26.3-18.2-23.7-24.3 2.8-6.6 6-7.8 13.8-5 4.8 2.1 9.5 4.6 14 7.4 6.2 3.6 15.6 9.1 17.5 8.9 2-2.8 10.4-26 10.6-28.2a8 8 0 0 0-2-1.3c-1.2-.6-2-1-2-2a1.3 1.3 0 0 1 1-1.1l4.7-1.8c-.1-1.9-.3-6.4 1.8-9.1a5.5 5.5 0 0 1 4-2.2c.6 0 1 0 1.5.3.4.2.8.4 1.2.8 1.9 1.8 2.8 6 2.4 11.1 0 .4-4.5 42.7-11 50.6a12.4 12.4 0 0 1-10 4.6zm-40-37.5c-3 0-4.2 1.9-5.6 5.2-1.4 3.4 1.3 9.9 22.8 21.8 17.6 9.8 26 11 31.4 4.5 5.3-6.5 10.1-43.6 10.5-49.4.4-5.4-.7-8.5-1.8-9.6a1 1 0 0 0-.5-.3 1 1 0 0 0-.5-.1 3.4 3.4 0 0 0-2.7 1.4c-2 2.7-1.3 8.3-1.3 8.3v.7l-.6.4-4.3 1.6c1.4.8 3 1.6 3 3 0 1.8-9 27-11.1 29.6-1.5 1.8-5.8-.3-20-8.5A120 120 0 0 0 296 303a18 18 0 0 0-5.6-1.3z" />
+  </g>
+</svg>
\ No newline at end of file
diff --git a/static/img/flatline/timeline.svg b/static/img/flatline/timeline.svg
new file mode 100644 (file)
index 0000000..fb6e36a
--- /dev/null
@@ -0,0 +1,47 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 517.4 242.2">
+  <g class="layer">
+    <path fill="#fff"
+      d="M.8 241.3h67.3l39.4-38.7h126.4l16.4-31h113.1l6.4-24H428l2.7-18.9-83.6-.4-5.8 23.6H230.1l-16.6 29.3H89.4l-37.5 32.4H24.8" />
+    <path fill="#242424"
+      d="M68 242.2H.8l-.6-.3a.8.8 0 0 1 0-1.2l.6-.2h67L107 202c.1-.2.3-.3.6-.3h126l16-30.5.3-.4.4-.1h112.5l6.1-23.3c0-.2.2-.4.3-.5l.5-.2h57.6l2.5-17.2-82-.5-5.6 23c0 .2-.1.3-.3.5l-.5.2H230.5l-16.3 28.9-.3.3-.4.1H89.7l-37.3 32.2a1 1 0 0 1-.5.2H24.7a.8.8 0 0 1-.8-.8c0-.3.1-.5.3-.6.1-.2.3-.3.5-.3h26.9l37.2-32 .6-.2H213l16.3-29a.8.8 0 0 1 .7-.4h110.8l5.6-23 .3-.4.5-.2 83.6.5h.4l.3.3a1 1 0 0 1 .1.6l-2.7 19-.3.4c-.1.2-.3.2-.5.2h-57.8l-6.1 23.4a.8.8 0 0 1-.8.6H250.8L234.7 203l-.3.3a1 1 0 0 1-.5.1H108L68.5 242l-.2.1H68z" />
+    <path fill="#DBDBDB"
+      d="M58.3 228h-5l-.6-.3a.8.8 0 0 1-.2-.6.8.8 0 0 1 .8-.8h5a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm-10 0h-5l-.6-.3a.8.8 0 0 1-.2-.6.8.8 0 0 1 .8-.8h5c.2 0 .4 0 .6.2l.2.6c0 .3 0 .5-.2.6l-.6.3zm-10 0h-5l-.6-.3a.8.8 0 0 1-.2-.6.8.8 0 0 1 .8-.8h5c.2 0 .4 0 .6.2l.2.6c0 .3 0 .5-.2.6l-.6.3zm-10 0h-5l-.6-.3a.8.8 0 0 1-.2-.6.8.8 0 0 1 .8-.8h5c.2 0 .4 0 .6.2l.2.6c0 .3 0 .5-.2.6l-.6.3zm35-.2H63a.9.9 0 0 1-.5-.5.9.9 0 0 1 .2-1l3.6-3.3.3-.2h.7l.3.2.1.3v.7l-.2.2-3.7 3.4-.6.2h.1zm7.3-6.8a.9.9 0 0 1-.8-.5v-.7l.2-.2 3.7-3.4.3-.1h.6l.3.2.2.3v.6l-.3.3-3.6 3.3-.6.2zm7.4-6.8h-.4a.8.8 0 0 1-.2-.2.8.8 0 0 1-.3-.6c0-.3.1-.5.3-.6l3.6-3.4.6-.2a.8.8 0 0 1 .9.8l-.1.4-.2.2-3.7 3.4-.2.2h-.4zm7.3-6.8H85a.7.7 0 0 1-.3-.2l-.2-.3v-.6l.2-.3 3.7-3.3.2-.2a.9.9 0 0 1 1 .2l.1.2.1.4v.3l-.3.2-3.6 3.4-.6.2zm7.3-6.7-.4-.2a.8.8 0 0 1-.3-.9c0-.1 0-.3.2-.4l3.7-3.3.2-.2h.4a.9.9 0 0 1 .5.2c.2.1.3.3.3.6l-.3.6-3.6 3.3-.3.2h-.4zm7.4-6.8a1 1 0 0 1-.3-.1l-.3-.2a.9.9 0 0 1-.3-.6l.3-.6 1.4-1.3.5-.2h3.1a.8.8 0 0 1 .9.9c0 .2-.1.4-.3.5-.1.2-.3.3-.6.3h-2.7l-1.2 1c-.1.2-.3.3-.6.3h.1zm124-1.3h-4.5l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h4l.3-.3.3-.1h.7l.2.3.1.3v.4l-.1.3-.3.4a.8.8 0 0 1-.7.4zm-9.5 0h-5l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h5a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm-10 0h-5l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h5a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm-10 0h-5l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h5a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm-10 0h-5l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h5a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm-10 0h-5l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h5a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm-10 0h-5l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h5a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm-10 0h-5l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h5a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm-10 0h-5l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h5a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm-10 0h-5l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h5a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm-10 0h-5l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h5a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm-10 0h-5l-.6-.3a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.5l.6-.3h5a.8.8 0 0 1 .8.8c0 .3 0 .5-.2.6l-.6.3zm112.3-4.7-.4-.1a.9.9 0 0 1-.4-.6v-.6l2.6-4.3.2-.3h.3l.3-.1.3.1.3.2.1.3v.6l-2.6 4.4-.3.3h-.5zm5-8.7a1 1 0 0 1-.5 0 .8.8 0 0 1-.3-.6v-.6l2.6-4.3.2-.3.3-.1h.6l.4.6v.6l-2.6 4.3-.3.3-.4.1zm5-8.6-.4-.1a.9.9 0 0 1-.4-.5v-.7l2.6-4.3a.8.8 0 0 1 1.1-.2c.2 0 .4.3.4.5v.6l-2.5 4.3a.8.8 0 0 1-.8.4zm111-7.1h-5c-.3 0-.5 0-.7-.3a.8.8 0 0 1 0-1.1l.6-.3h5l.6.3c.2.1.2.3.2.6 0 .2 0 .4-.2.5-.1.2-.3.3-.6.3zm-10 0h-5c-.3 0-.5 0-.7-.3a.8.8 0 0 1 0-1.1l.6-.3h5l.6.3c.2.1.2.3.2.6 0 .2 0 .4-.2.5-.1.2-.3.3-.6.3zm-10 0h-5c-.3 0-.5 0-.7-.3a.8.8 0 0 1 0-1.1l.6-.3h5l.6.3c.2.1.2.3.2.6 0 .2 0 .4-.2.5-.1.2-.3.3-.6.3zm-10 0h-5c-.3 0-.5 0-.7-.3a.8.8 0 0 1 0-1.1l.6-.3h5l.6.3c.2.1.2.3.2.6 0 .2 0 .4-.2.5-.1.2-.3.3-.6.3zm-10 0h-5c-.3 0-.5 0-.7-.3a.8.8 0 0 1 0-1.1l.6-.3h5l.6.3c.2.1.2.3.2.6 0 .2 0 .4-.2.5-.1.2-.3.3-.6.3zm-10 0h-5c-.3 0-.5 0-.7-.3a.8.8 0 0 1 0-1.1l.6-.3h5l.6.3c.2.1.2.3.2.6 0 .2 0 .4-.2.5-.1.2-.3.3-.6.3zm-10 0h-5c-.3 0-.5 0-.7-.3a.8.8 0 0 1 0-1.1l.6-.3h5l.6.3c.2.1.2.3.2.6 0 .2 0 .4-.2.5-.1.2-.3.3-.6.3zm-10 0h-5c-.3 0-.5 0-.7-.3a.8.8 0 0 1 0-1.1l.6-.3h5l.6.3c.2.1.2.3.2.6 0 .2 0 .4-.2.5-.1.2-.3.3-.6.3zm-10 0h-5c-.3 0-.5 0-.7-.3a.8.8 0 0 1 0-1.1l.6-.3h5l.6.3c.2.1.2.3.2.6 0 .2 0 .4-.2.5-.1.2-.3.3-.6.3zm-10 0h-5c-.3 0-.5 0-.7-.3a.8.8 0 0 1 0-1.1l.6-.3h5l.6.3c.2.1.2.3.2.6 0 .2 0 .4-.2.5-.1.2-.3.3-.6.3zm-10 0h-5c-.3 0-.5 0-.7-.3a.8.8 0 0 1 0-1.1l.6-.3h5l.6.3c.2.1.2.3.2.6 0 .2 0 .4-.2.5-.1.2-.3.3-.6.3zm103.1-2.3h-.2s-.2 0-.3-.2l-.2-.2a.9.9 0 0 1 0-.6l1.2-4.9c0-.2.2-.4.4-.5h.7c.2 0 .4.1.5.3v.7l-1.2 4.8c0 .2-.2.3-.3.4l-.5.2zm2.6-9.7h-.2a.8.8 0 0 1-.5-.4.9.9 0 0 1-.1-.6l1.3-4.8c0-.3.2-.5.4-.6h.6l.6.3v.7l-1.2 4.8c0 .2-.2.3-.4.5l-.5.1zm2.6-9.6h-.2a1 1 0 0 1-.3-.2l-.2-.2-.2-.3v-.4l.6-2a.8.8 0 0 1 .8-.6h2.9c.2 0 .4 0 .6.2l.2.6a.8.8 0 0 1-.8.8h-2.2l-.4 1.5-.3.4-.5.2zm73.3-2.1h-5a.8.8 0 0 1-.8-.8c0-.3 0-.5.2-.6l.6-.3h5l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2zm-10 0h-5a.8.8 0 0 1-.8-.8c0-.3 0-.5.2-.6l.6-.3h5l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2zm-10 0h-5a.8.8 0 0 1-.8-.8c0-.3 0-.5.2-.6l.6-.3h5l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2zm-10 0h-5a.8.8 0 0 1-.8-.8c0-.3 0-.5.2-.6l.6-.3h5l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2zm-10 0h-5a.8.8 0 0 1-.8-.8c0-.3 0-.5.2-.6l.6-.3h5l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2zm-10 0h-5a.8.8 0 0 1-.8-.8c0-.3 0-.5.2-.6l.6-.3h5l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2zm-10 0h-5a.8.8 0 0 1-.8-.8c0-.3 0-.5.2-.6l.6-.3h5l.6.3.2.6c0 .2 0 .4-.2.6l-.6.2z" />
+    <path fill="#fff" d="m407.6 122 23.2 40.6 85.7-4.8-32.7-34.3-76.2-1.6z" />
+    <path fill="#242424"
+      d="M430.8 163.5a.8.8 0 0 1-.7-.4l-23.3-40.7a.8.8 0 0 1 0-.9l.3-.3.4-.1 76.3 1.7h.3l.2.2 32.7 34.3a.8.8 0 0 1 .2.9l-.3.3-.4.2-85.7 4.8zM409 122.8l22.3 39 83.3-4.7-31.2-32.7-74.4-1.6z" />
+    <path fill="#fff" d="M407.6 87.8v34.1l23.2 40.7h85.7v-34.3l-109-40.5z" />
+    <path fill="#242424"
+      d="M516.5 163.5h-85.7a.8.8 0 0 1-.7-.4l-23.3-40.7-.1-.5V87.4l.3-.3.4-.1h.4l108.9 40.5.4.3.1.5v34.3c0 .2 0 .4-.2.6-.1.1-.3.3-.5.3zm-85.2-1.7h84.3v-33L408.4 89v32.8l22.9 40z" />
+    <path fill="#fff" d="m407.6 87.8 24.2 40.5h84.7l-30-40.5h-79z" />
+    <path fill="#242424"
+      d="M516.5 129.1h-84.7l-.4-.1a.9.9 0 0 1-.3-.3l-24.3-40.5a.8.8 0 0 1 .3-1.1l.4-.2h79a.8.8 0 0 1 .7.4l30 40.5.1.4v.4l-.4.4-.4.1zm-84.2-1.7h82.5l-28.7-38.8h-77l23.2 38.8z" />
+    <path fill="#242424"
+      d="m430.8 163.5-.3-.1a.8.8 0 0 1-.3-.2l-.1-.3-.1-.3 1-34.3c0-.3.1-.5.3-.6.1-.2.3-.3.5-.3.3 0 .5.1.6.3.2.2.2.4.2.6l-1 34.4v.3a.8.8 0 0 1-.8.5zM54.5 224.2l-.6-.3a.8.8 0 0 1-.2-.6v-33.9a.8.8 0 0 1 .8-.8c.2 0 .5 0 .6.2l.3.6v34l-.3.5c-.1.2-.4.3-.6.3z" />
+    <path fill="#242424" d="M54.5 228a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.5z" />
+    <path fill="#242424"
+      d="M54.5 228.9a5.6 5.6 0 0 1-4-9.5 5.5 5.5 0 0 1 6.1-1.2 5.6 5.6 0 0 1 3.5 5.1 5.6 5.6 0 0 1-5.6 5.6zm0-9.5a4 4 0 0 0-3.6 2.4A3.9 3.9 0 0 0 56 227a4 4 0 0 0 1.3-6.4 3.9 3.9 0 0 0-2.8-1z" />
+    <path fill="#85C241" d="M54.5 192.9a36.7 36.7 0 1 0 0-73.5 36.7 36.7 0 0 0 0 73.5z" />
+    <path fill="#242424"
+      d="M204.2 191.5a.8.8 0 0 1-.9-.8v-34l.3-.5c.1-.2.3-.2.6-.2.2 0 .4 0 .5.2l.3.6v33.9l-.3.6-.5.2z" />
+    <path fill="#242424" d="M204.2 195.4a4.7 4.7 0 1 0 0-9.5 4.7 4.7 0 0 0 0 9.5z" />
+    <path fill="#242424"
+      d="M204.2 196.2a5.6 5.6 0 1 1 0-11 5.6 5.6 0 0 1 0 11zm0-9.4a3.9 3.9 0 1 0 0 7.8 3.9 3.9 0 0 0 0-7.8z" />
+    <path fill="#85C241" d="M204.2 160.2a36.7 36.7 0 1 0 0-73.4 36.7 36.7 0 0 0 0 73.4z" />
+    <path fill="#242424"
+      d="M324.2 161.5c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6v-33.9c0-.2 0-.4.2-.6a.8.8 0 0 1 1.2 0c.2.2.2.4.2.6v33.9a.9.9 0 0 1-.2.6l-.3.2h-.3z" />
+    <path fill="#242424" d="M324.2 165.4a4.7 4.7 0 1 0 0-9.4 4.7 4.7 0 0 0 0 9.4z" />
+    <path fill="#242424"
+      d="M324.2 166.3a5.5 5.5 0 0 1-5.4-6.7 5.5 5.5 0 0 1 4.3-4.4 5.5 5.5 0 0 1 5 9.4c-1 1-2.4 1.7-3.9 1.7zm0-9.5a3.9 3.9 0 0 0-3.6 2.4 4 4 0 0 0 .9 4.3 4 4 0 0 0 4.2.8 4 4 0 0 0 1.8-1.4 4 4 0 0 0 .3-3.7 4 4 0 0 0-3.6-2.4z" />
+    <path fill="#85C241" d="M324.2 130.3a36.7 36.7 0 1 0 0-73.5 36.7 36.7 0 0 0 0 73.5z" />
+    <path fill="#242424"
+      d="M463.5 104.8a1 1 0 0 1-.6-.3 1 1 0 0 1-.3-.6V70a.8.8 0 0 1 .9-.8c.2 0 .4 0 .6.2l.2.6v34c0 .1 0 .3-.3.5-.1.2-.3.3-.5.3z" />
+    <path fill="#242424" d="M463.5 108.7a4.7 4.7 0 1 0 0-9.5 4.7 4.7 0 0 0 0 9.5z" />
+    <path fill="#242424"
+      d="M463.5 109.5a5.5 5.5 0 0 1-5.2-3.5 5.5 5.5 0 0 1 1.2-6c.8-.8 1.8-1.3 2.9-1.6a5.6 5.6 0 0 1 5.7 2.4 5.5 5.5 0 0 1 .5 5.2 5.6 5.6 0 0 1-5.1 3.4zm0-9.5a3.9 3.9 0 1 0 0 7.8 3.9 3.9 0 0 0 0-7.8z" />
+    <path fill="#85C241" d="M463.5 73.5a36.7 36.7 0 1 0 0-73.5 36.7 36.7 0 0 0 0 73.5z" />
+    <path fill="#DBDBDB"
+      d="M83.7 69.8H12.5c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.3h71.2c.3 0 .5.1.6.3.2.1.3.4.3.6l-.3.6-.6.2zm0 14.2H12.5c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2h71.2c.3 0 .5 0 .6.2l.3.6-.3.6-.6.2zM67.6 98.3h-55a.8.8 0 0 1-.9-.9l.3-.6.6-.2h55c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.3zM235 26.7h-71.2c-.2 0-.4 0-.6-.2a.8.8 0 0 1-.2-.6c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2H235c.2 0 .5 0 .6.2l.3.6a.8.8 0 0 1-.9.8zm0 14.3h-71.2a.8.8 0 0 1-.6-1.5c.2-.2.4-.2.6-.2H235c.2 0 .5 0 .6.2a.8.8 0 0 1 0 1.2l-.6.2zm-16.1 14.2h-55c-.2 0-.5-.1-.6-.3a.9.9 0 0 1-.3-.6l.3-.6.6-.2h55c.2 0 .4 0 .6.2l.2.6a.8.8 0 0 1-.8.9zm145.7 150h-71.3a.8.8 0 0 1-.8-.8c0-.3 0-.5.3-.6.1-.2.3-.3.5-.3h71.3c.2 0 .4.1.5.3.2.1.3.3.3.6 0 .2-.1.4-.3.5-.1.2-.3.3-.5.3zm0 14.2h-71.3c-.2 0-.4 0-.5-.2a.8.8 0 0 1-.3-.6c0-.2 0-.4.2-.6.2-.2.4-.2.6-.2h71.3a.8.8 0 0 1 .8.8l-.3.6-.5.2zm-16.2 14.3h-55a1 1 0 0 1-.6-.3.9.9 0 0 1-.2-.6c0-.2 0-.4.2-.6l.6-.2h55c.2 0 .4 0 .6.2l.2.6c0 .2 0 .4-.2.6l-.6.3zM504.7 182h-71.2c-.2 0-.4 0-.6-.2a.9.9 0 0 1-.2-.6c0-.2 0-.5.2-.6l.6-.3h71.2c.2 0 .5.1.6.3.2.1.3.4.3.6l-.3.6-.6.2zm0 14.2h-71.2c-.2 0-.4 0-.6-.2a.8.8 0 0 1 0-1.2c.2-.2.4-.2.6-.2h71.2c.2 0 .5 0 .6.2a.8.8 0 0 1 0 1.2l-.6.2zm-16.1 14.2h-55.1a.8.8 0 0 1-.9-.8l.3-.6.6-.2h55.1c.3 0 .5 0 .6.2l.3.6-.3.6c-.1.2-.3.3-.6.3z" />
+    <path
+      d="M29.7 164v-2.7l5.2-4.2c2-1.6 2.7-2.5 2.7-3.8 0-1.3-.8-2-2-2-1.3 0-2.1.7-3.3 2l-2.4-1.8c1.6-2.1 3-3.3 5.8-3.3 3.2 0 5.4 2 5.4 4.8 0 2.7-1.3 4-4 6.1l-2.6 2h6.8v3H29.7zm20.3.3c-4.1 0-6.9-3.5-6.9-8 0-4.6 2.8-8.1 7-8.1 4 0 6.9 3.5 6.9 8 0 4.6-2.8 8-7 8zm0-3.1c2.1 0 3.5-2 3.5-5 0-2.8-1.4-5-3.5-5-2 0-3.3 2.2-3.3 5 0 2.9 1.3 5 3.4 5zm11.5 2.8v-12.2l-2.7.7-.8-2.8 4.5-1.4h2.3V164h-3.3zm5.9 0v-2.7l5.2-4.2c2-1.6 2.7-2.5 2.7-3.8 0-1.3-.9-2-2.1-2-1.2 0-2 .7-3.2 2l-2.4-1.8c1.5-2.1 3-3.3 5.8-3.3 3.2 0 5.4 2 5.4 4.8 0 2.7-1.4 4-4.1 6.1l-2.6 2H79v3H67.4zM435.3 44v-2.7l5.2-4.2c2-1.6 2.7-2.5 2.7-3.8 0-1.3-.9-2-2.1-2-1.2 0-2 .7-3.2 2l-2.4-1.8c1.5-2.1 3-3.3 5.8-3.3 3.2 0 5.4 2 5.4 4.8 0 2.7-1.4 4-4.1 6.1l-2.6 2h6.8v3h-11.5zm20.3.3c-4.2 0-6.9-3.5-6.9-8 0-4.6 2.8-8.1 7-8.1 4 0 6.8 3.5 6.8 8s-2.8 8-7 8zm0-3.1c2.1 0 3.4-2 3.4-5 0-2.8-1.4-5-3.4-5s-3.4 2.2-3.4 5c0 2.9 1.4 5 3.4 5zM464 44v-2.7l5.2-4.2c2-1.6 2.7-2.5 2.7-3.8 0-1.3-.8-2-2-2-1.3 0-2.1.7-3.3 2l-2.4-1.8c1.6-2.1 3-3.3 5.8-3.3 3.2 0 5.4 2 5.4 4.8 0 2.7-1.3 4-4 6.1l-2.6 2h6.8v3H464zm20.8 0v-3.3h-7.6l-.6-2.5 8.5-9.9h3V38h2v2.8h-2V44h-3.3zm-4.2-6.1h4.2V33l-4.2 4.9zm-185.3 63.9V99l5.2-4.3c2-1.6 2.7-2.4 2.7-3.7 0-1.3-.9-2-2.1-2-1.2 0-2 .7-3.2 2l-2.4-1.9c1.5-2 3-3.2 5.8-3.2 3.2 0 5.4 1.9 5.4 4.8 0 2.7-1.4 4-4.1 6l-2.6 2h6.8v3h-11.5zm20.3.2c-4.2 0-7-3.4-7-8 0-4.5 2.9-8 7-8s7 3.4 7 8c0 4.5-2.9 8-7 8zm0-3c2 0 3.4-2.1 3.4-5 0-2.8-1.4-5-3.4-5s-3.4 2.1-3.4 5 1.4 5 3.4 5zm8.4 2.8V99l5.2-4.3c2-1.6 2.7-2.4 2.7-3.7 0-1.3-.8-2-2-2-1.3 0-2.1.7-3.3 2l-2.4-1.9c1.6-2 3-3.2 5.8-3.2 3.2 0 5.4 1.9 5.4 4.8 0 2.7-1.3 4-4 6l-2.6 2h6.8v3H324zm20.3.2c-4.1 0-6.9-3.4-6.9-8 0-4.5 2.8-8 7-8 4 0 6.9 3.4 6.9 8 0 4.5-2.8 8-7 8zm0-3c2.1 0 3.5-2.1 3.5-5 0-2.8-1.4-5-3.5-5-2 0-3.3 2.1-3.3 5s1.3 5 3.4 5zm-165.7 32.8V129l5.2-4.3c2-1.6 2.7-2.4 2.7-3.7 0-1.3-.8-2-2-2-1.3 0-2.1.7-3.3 2l-2.4-1.9c1.6-2 3-3.2 5.8-3.2 3.2 0 5.4 1.9 5.4 4.8 0 2.7-1.4 4-4.1 6l-2.5 2h6.7v3h-11.5zm20.4.2c-4.3 0-7-3.4-7-8 0-4.5 2.8-8 7-8 4 0 6.9 3.4 6.9 8 0 4.5-2.8 8-7 8zm0-3c2 0 3.3-2.1 3.3-5 0-2.8-1.3-5-3.4-5-2 0-3.4 2.1-3.4 5s1.4 5 3.5 5zm11.3 2.8v-12.2l-2.7.7-.7-2.8 4.5-1.4h2.3v15.7h-3.3zm11.9.2c-3.4 0-6-1.8-6-4.5 0-2 .9-3 2.5-3.8-1.2-.7-2-1.7-2-3.4 0-2.4 2.2-4.3 5.5-4.3s5.5 1.9 5.5 4.3c0 1.7-.8 2.7-2 3.4 1.6.8 2.5 1.8 2.5 3.7 0 3-2.5 4.6-6 4.6zm0-9.4c1.4 0 2.2-.8 2.2-1.9 0-1-.8-1.9-2.2-1.9-1.4 0-2.2.9-2.2 1.8 0 1.2.9 2 2.2 2zm0 6.6c1.7 0 2.7-.8 2.7-2s-1.1-1.9-2.7-1.9-2.7.7-2.7 2c0 1 1 1.9 2.7 1.9z" />
+  </g>
+</svg>
\ No newline at end of file
diff --git a/static/img/logo-xen.svg b/static/img/logo-xen.svg
new file mode 100644 (file)
index 0000000..8e04555
--- /dev/null
@@ -0,0 +1,61 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 166 64" fill="none">
+  <g clip-path="url(#clip0_125_42723)">
+    <path
+      d="M117.049 21.5311C111.908 21.5311 107.752 24.1761 105.561 25.9228L106.19 22.5652H93.4495L88.9616 43.3506H102.279L104.553 31.2559C105.663 29.8406 107.513 28.0209 109.661 28.0209C113.171 28.0209 112.412 30.8217 112.12 33.0325L110.32 43.0291L123.307 43.0556C123.307 43.0556 124.821 35.0875 125.004 34.2124C126.823 25.4886 124.715 21.5344 117.042 21.5344L117.049 21.5311Z"
+      fill="black" />
+    <path
+      d="M88.6766 34.6499C88.6766 34.6499 93.7445 21.4781 75.0705 21.4781C56.3965 21.4781 54.948 34.6499 54.948 34.6499C54.948 34.6499 52.6312 44.2322 70.7252 44.2322C88.8191 44.2322 88.0965 37.1557 88.0965 37.1557H74.7788C74.7788 37.1557 73.7646 39.9565 71.0135 39.9565C68.2625 39.9565 66.5257 38.9257 67.2482 34.6499H88.6733H88.6766ZM73.622 26.2476C78.2524 26.2476 76.8073 30.5234 76.8073 30.5234H68.8458C68.8458 30.5234 68.9917 26.2476 73.6254 26.2476H73.622Z"
+      fill="black" />
+    <path
+      d="M88.6501 45.2564H95.1664C96.121 45.2564 96.9662 45.3757 97.702 45.6143C98.4378 45.853 99.0344 46.201 99.4985 46.6584C99.9592 47.1158 100.274 47.676 100.443 48.3422C100.609 49.0084 100.612 49.7608 100.45 50.6027L100.44 50.6458C100.264 51.544 99.9493 52.3329 99.4918 53.0124C99.0344 53.6918 98.471 54.2652 97.8014 54.7293C97.1319 55.1933 96.3729 55.5413 95.5244 55.77C94.6759 56.002 93.7809 56.1181 92.8396 56.1181H90.7548L89.9096 60.4601H85.6968L88.6534 45.2564H88.6501ZM93.3931 52.8135C94.1455 52.8135 94.772 52.6345 95.2658 52.2798C95.763 51.9219 96.0713 51.438 96.1906 50.8281L96.2005 50.785C96.3265 50.1287 96.2105 49.6315 95.8492 49.2901C95.4879 48.9488 94.9244 48.7764 94.1588 48.7764H92.1833L91.3978 52.8168H93.3964L93.3931 52.8135Z"
+      fill="#85C241" />
+    <path
+      d="M102.356 48.7101H106.505L106.045 51.0767C106.532 50.2812 107.112 49.6448 107.785 49.1642C108.458 48.6869 109.28 48.4682 110.257 48.5112L109.412 52.8566H109.064C107.977 52.8566 107.082 53.1748 106.379 53.8112C105.677 54.4475 105.193 55.4485 104.928 56.8075L104.218 60.4568H100.069L102.352 48.7068L102.356 48.7101Z"
+      fill="#85C241" />
+    <path
+      d="M115.305 60.7418C114.364 60.7418 113.529 60.5827 112.803 60.2645C112.077 59.9463 111.477 59.5088 111.006 58.952C110.536 58.3952 110.211 57.7455 110.039 57.0097C109.863 56.2705 109.856 55.4817 110.022 54.6431L110.032 54.6C110.194 53.7615 110.513 52.9693 110.983 52.2235C111.454 51.4778 112.034 50.8281 112.72 50.268C113.406 49.7111 114.182 49.2703 115.04 48.9422C115.899 48.6173 116.8 48.4516 117.742 48.4516C118.683 48.4516 119.515 48.614 120.241 48.9422C120.967 49.267 121.567 49.7045 122.037 50.2547C122.508 50.8049 122.833 51.4479 123.008 52.1871C123.184 52.9262 123.187 53.7151 123.025 54.5536L123.018 54.5967C122.856 55.4386 122.538 56.2308 122.067 56.9765C121.596 57.7223 121.016 58.3753 120.33 58.9321C119.644 59.4889 118.869 59.9298 118.01 60.2579C117.152 60.5827 116.25 60.7451 115.309 60.7451L115.305 60.7418ZM116.031 57.2251C116.409 57.2251 116.76 57.1555 117.092 57.0196C117.423 56.8837 117.715 56.6981 117.974 56.4595C118.229 56.2241 118.444 55.9457 118.623 55.6308C118.799 55.316 118.922 54.9845 118.991 54.6398L119.001 54.5967C119.071 54.2387 119.074 53.9007 119.014 53.5858C118.951 53.2709 118.832 52.9925 118.653 52.7572C118.474 52.5218 118.249 52.3296 117.97 52.1871C117.695 52.0445 117.374 51.9716 117.012 51.9716C116.651 51.9716 116.283 52.0412 115.952 52.1771C115.62 52.313 115.329 52.5019 115.07 52.7373C114.815 52.9726 114.596 53.251 114.42 53.5659C114.241 53.8808 114.122 54.2122 114.053 54.5569L114.043 54.6C113.973 54.9613 113.97 55.2961 114.029 55.6143C114.092 55.9291 114.212 56.2076 114.391 56.4429C114.57 56.6782 114.795 56.8705 115.073 57.013C115.348 57.1555 115.667 57.2284 116.031 57.2284V57.2251Z"
+      fill="#85C241" />
+    <path
+      d="M122.949 64C122.614 64 122.316 63.9801 122.047 63.947C121.779 63.9105 121.523 63.8773 121.285 63.8475L121.815 61.1097C121.898 61.123 121.987 61.1329 122.084 61.1329H122.355C122.76 61.1329 123.085 61.0302 123.327 60.828C123.568 60.6258 123.738 60.2712 123.837 59.764L125.985 48.7101H130.135L127.954 59.9397C127.811 60.6788 127.592 61.3086 127.304 61.829C127.012 62.3494 126.658 62.7703 126.24 63.0885C125.822 63.4067 125.335 63.6387 124.785 63.7845C124.231 63.9304 123.622 64.0033 122.952 64.0033L122.949 64ZM126.697 44.6068H131.02L130.43 47.6462H126.107L126.697 44.6068Z"
+      fill="#85C241" />
+    <path
+      d="M135.938 60.7418C135.01 60.7418 134.192 60.5927 133.482 60.2977C132.773 60.0027 132.19 59.5884 131.735 59.0613C131.281 58.5343 130.97 57.8913 130.807 57.1389C130.642 56.3865 130.648 55.5546 130.827 54.6431L130.837 54.6C131.003 53.7449 131.305 52.9461 131.739 52.2003C132.173 51.4545 132.71 50.8049 133.346 50.2447C133.983 49.6879 134.695 49.2504 135.481 48.9322C136.266 48.614 137.095 48.4549 137.963 48.4549C138.978 48.4549 139.823 48.6272 140.502 48.9753C141.179 49.3233 141.706 49.7906 142.077 50.3773C142.448 50.964 142.677 51.6435 142.766 52.4191C142.856 53.1947 142.813 54.0167 142.644 54.8851C142.617 55.0143 142.591 55.1535 142.564 55.2994C142.534 55.4452 142.501 55.591 142.458 55.7336H134.596C134.629 56.3865 134.835 56.8704 135.216 57.1886C135.597 57.5068 136.111 57.6659 136.764 57.6659C137.254 57.6659 137.728 57.5731 138.176 57.3842C138.623 57.1953 139.1 56.8937 139.601 56.4727L141.513 58.362C140.807 59.0879 139.995 59.6646 139.08 60.0988C138.162 60.533 137.118 60.7484 135.945 60.7484L135.938 60.7418ZM139.017 53.6189C139.071 52.9693 138.954 52.4489 138.666 52.0644C138.378 51.6799 137.954 51.4877 137.387 51.4877C136.82 51.4877 136.353 51.6799 135.928 52.0644C135.507 52.4489 135.173 52.966 134.931 53.6189H139.014H139.017Z"
+      fill="#85C241" />
+    <path
+      d="M148.925 60.7418C148.043 60.7418 147.254 60.5794 146.565 60.2546C145.875 59.9297 145.312 59.4922 144.878 58.942C144.443 58.3918 144.142 57.7455 143.973 56.9964C143.807 56.2506 143.804 55.4651 143.963 54.6398L143.973 54.5967C144.132 53.7714 144.44 52.9858 144.897 52.2401C145.355 51.4943 145.912 50.8447 146.571 50.2845C147.231 49.7277 147.977 49.2868 148.815 48.9587C149.654 48.6339 150.535 48.4715 151.463 48.4715C152.68 48.4715 153.648 48.7101 154.364 49.1874C155.083 49.6647 155.617 50.3011 155.968 51.0999L152.763 53.1847C152.547 52.7936 152.299 52.4887 152.007 52.2732C151.715 52.0545 151.318 51.9484 150.811 51.9484C150.479 51.9484 150.158 52.018 149.846 52.1539C149.538 52.2931 149.256 52.4787 149.007 52.7174C148.759 52.956 148.547 53.2311 148.368 53.5427C148.192 53.8542 148.069 54.189 147.996 54.5536L147.987 54.5967C147.914 54.9745 147.904 55.3259 147.957 55.6507C148.01 55.9755 148.112 56.2573 148.272 56.4959C148.427 56.7346 148.636 56.9235 148.901 57.0594C149.163 57.1986 149.468 57.2649 149.816 57.2649C150.31 57.2649 150.748 57.1555 151.129 56.9401C151.51 56.7213 151.904 56.4263 152.312 56.0485L154.682 58.0471C153.973 58.8592 153.16 59.5088 152.239 60.0027C151.318 60.4932 150.214 60.7418 148.925 60.7418Z"
+      fill="#85C241" />
+    <path
+      d="M160.313 60.6987C159.06 60.6987 158.146 60.4004 157.562 59.8071C156.979 59.2138 156.823 58.2128 157.098 56.8108L158.026 52.0313H156.637L157.284 48.7068H158.673L159.253 45.7304H163.402L162.822 48.7068H165.56L164.914 52.0313H162.179L161.407 56.0054C161.324 56.4263 161.361 56.7246 161.513 56.9069C161.666 57.0892 161.931 57.1787 162.309 57.1787C162.584 57.1787 162.859 57.1423 163.134 57.0693C163.409 56.9964 163.681 56.9036 163.949 56.7876L163.319 60.0226C162.905 60.2248 162.444 60.3872 161.944 60.5098C161.443 60.6324 160.9 60.6954 160.323 60.6954L160.313 60.6987Z"
+      fill="#85C241" />
+    <path
+      d="M70.2081 13.868H49.0747L37.1027 23.0359L30.1091 13.868H13.1719L26.4101 31.2261L0 51.4579H21.1367L34.2025 41.448L41.8358 51.4579H58.773L44.8951 33.2579L70.2081 13.868Z"
+      fill="black" />
+    <path
+      d="M21.6537 51.0601C18.0078 48.677 15.0678 45.3128 13.2083 41.3387L6.77819 46.264C7.77254 48.1135 8.94588 49.8536 10.275 51.4579H21.1334L21.6504 51.0601H21.6537Z"
+      fill="black" />
+    <path d="M15.7638 17.262C16.6985 16.029 17.7526 14.8921 18.9093 13.868H13.1752L15.7638 17.262Z" fill="black" />
+    <path
+      d="M46.6551 51.4579H58.6537C58.6736 51.4314 58.6968 51.4082 58.7167 51.385L53.7084 44.8189C51.8457 47.4904 49.4426 49.7575 46.6551 51.4579Z"
+      fill="black" />
+    <path
+      d="M34.4643 54.8685C30.056 54.8685 25.9328 53.6488 22.4094 51.5341L21.6438 52.1208L21.4184 52.2931H11.0009C16.7549 58.7531 25.1307 62.8267 34.4643 62.8267C43.798 62.8267 52.1738 58.7531 57.9278 52.2931H45.147C41.9419 53.9371 38.3125 54.8685 34.4643 54.8685Z"
+      fill="#85C241" />
+    <path
+      d="M56.771 24.1595L63.3736 19.1016C62.588 17.2587 61.6334 15.5053 60.5264 13.8646H50.0227C53.1085 16.6024 55.4684 20.1423 56.7744 24.1595H56.771Z"
+      fill="black" />
+    <path
+      d="M11.0075 31.415C11.0075 26.4134 12.5786 21.7797 15.2468 17.9713L12.5057 14.3751L11.4782 13.0294H19.907C23.9076 9.85737 28.9622 7.95815 34.461 7.95815C39.9598 7.95815 45.0178 9.85737 49.0151 13.0294H59.9231C54.2222 5.1375 44.9449 0 34.4643 0C17.1162 0 3.04935 14.0635 3.04935 31.415C3.04935 36.4829 4.25584 41.269 6.39039 45.505L12.857 40.5531C11.6671 37.7457 11.0108 34.6566 11.0108 31.415H11.0075Z"
+      fill="#85C241" />
+    <path
+      d="M62.2566 23.4403C63.0156 23.0259 63.7812 22.6746 64.5436 22.3829C64.2917 21.5443 64.0099 20.719 63.6918 19.9136L57.0263 25.0213C57.2251 25.724 57.3909 26.4399 57.5234 27.1658C58.7531 25.7704 60.3574 24.481 62.2533 23.4436L62.2566 23.4403Z"
+      fill="#85C241" />
+    <path
+      d="M56.0286 40.6293C55.5115 41.8325 54.905 42.9893 54.2023 44.0797L59.2503 50.7021C60.765 48.7565 62.0478 46.622 63.0786 44.3482C60.1021 43.6721 57.6063 42.3197 56.0286 40.6293Z"
+      fill="#85C241" />
+  </g>
+  <defs>
+    <clipPath id="clip0_125_42723">
+      <rect width="165.553" height="64" fill="white" />
+    </clipPath>
+  </defs>
+</svg>
\ No newline at end of file
diff --git a/static/img/logos/amd-logo.svg b/static/img/logos/amd-logo.svg
new file mode 100644 (file)
index 0000000..57f9860
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 248.7"><path fill-rule="evenodd" d="m316.3 13 13 12.9h42.3v42.4l13.1 13 13.1 13.2V0h-94.4l13 13M16.5 47 .1 88.3c-.1.4 1.8.5 10.8.5h11l.4-1 3.1-8.2 2.7-7.2h36.5l3.3 8.2 3.4 8.2h11.2c10.6 0 11.2 0 11-.6 0-.3-8.3-18.9-18.2-41.3L57.2 6.2h-24L16.5 47m86.3.5v41.3H123.6V63.3l.1-25.4 11 12.6 10.8 12.7h1.8l1.7-.2 10.8-12.5 10.8-12.6v25.4l.1 25.5h21V6.2h-18.4l-12.6 14.6L147.6 36c-.5.4-1.8-1-13.6-14.6L121 6.2h-18v41.3m103.8 0v41.3l20.9-.1c22.2-.2 23.2-.2 30-1.8a37.5 37.5 0 0 0 31-39.1c0-21.7-12.8-36.7-34.8-40.7-3.7-.7-4.5-.8-25.5-.9h-21.6v41.3M246.3 22c15.7 2.4 24.2 16.2 20.2 32.9-3.2 13.4-11.8 18.4-31.3 18.4h-7.5V21.5h7.8c5.3 0 8.8.2 10.8.5m-188 35.5c0 .2-24.4.1-24.4-.1l5.8-15.5 5.7-15.3L51.8 42l6.4 15.5M316 44.1l-13.3 13.4v37.4h37.5l13.4-13.4 13.4-13.4h-37.5V49.5l-.1-18.7-13.4 13.3M2.2 137.2a4641 4641 0 0 0 31.6 54c0 .3-7.1 12.6-16 27.5l-17 28.5-.9 1.5h15.7l12.7-21.8c7-12 12.9-22 13-22.4.5-.5 1.8 1.7 13.4 21.8l13 22.4h7.9c4.3 0 8 0 8-.2L66.3 220a355.7 355.7 0 0 1-16.9-29 21842.7 21842.7 0 0 0 31.3-52.9l.6-1h-16l-11.8 21c-9.6 17-11.9 21-12.2 20.5l-11.8-21L18 137.1h-8l-7.8.1M91.5 193v55.8h13.6V137H91.5V193m31.8 0v55.8h59.4v-12.3h-45.6V137h-13.9V193m70.3 0v55.8h13.9V137h-13.9V193m32 0v55.8H239.2l.1-42.7v-42.8l28.3 42.7 28.2 42.6 6.6.1 6.5.1V137.1h-13.9v42.5l-.1 42.5-28.2-42.5-28.2-42.4h-12.8v55.7m93-55.7a4440.2 4440.2 0 0 0 31.7 54c0 .3-7.5 13.2-16.7 28.7-9.3 15.6-17 28.4-17 28.6 0 0 3.4.2 7.7.2h7.8l12.7-21.9 13.1-22.3c.3-.5 2 2.3 13.3 21.8l13 22.4h7.9c4.3 0 7.9 0 7.9-.2L382.9 220a358.8 358.8 0 0 1-16.9-29c.3-.3 31.3-52.9 31.7-53.6.1-.2-3.4-.3-7.8-.3h-8l-11.8 21c-9.3 16.6-11.9 21-12.1 20.6l-12-21-11.5-20.6h-8l-7.9.1"/></svg>
\ No newline at end of file
diff --git a/static/img/logos/arm-logo.svg b/static/img/logos/arm-logo.svg
new file mode 100644 (file)
index 0000000..491fbde
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 237 73"><path fill="#0091BD" d="M53.6 2.4h15.9v68H53.6v-7c-7 8-15.5 9.1-20.4 9.1-21 0-33-17.5-33-36.2C.2 14.1 15.4.5 33.4.5c5 0 13.8 1.3 20.2 9.7zM16.5 36.8c0 11.7 7.4 21.7 18.9 21.7 10 0 19.3-7.3 19.3-21.5 0-15-9.2-22-19.3-22-11.5-.1-18.9 9.7-18.9 21.8zM88.4 2.4h15.9v6c1.8-2 4.4-4.3 6.6-5.6a18 18 0 0 1 9.7-2.3c3.9 0 8.1.6 12.5 3.2L126.6 18a14.1 14.1 0 0 0-8.1-2.5c-3.4 0-6.8.6-9.9 3.8-4.4 4.7-4.4 11.2-4.4 15.7v35.3H88.3zm54.9 0h15.9v6.3A20.8 20.8 0 0 1 176 .6a20 20 0 0 1 17.6 10 24 24 0 0 1 20.2-10c8.3 0 15.5 3.9 19.4 10.7 1.3 2.3 3.6 7.3 3.6 17.1v42.2h-15.9V33.2c0-7.6-.8-10.7-1.5-12.1a9 9 0 0 0-9.1-6c-3.9 0-7.3 2-9.4 5-2.8 3.9-3.1 9.7-3.1 15.5v35h-15.9V33.3c0-7.6-.8-10.7-1.5-12.1a9 9 0 0 0-9.1-6c-3.9 0-7.3 2-9.4 5-2.8 3.9-3.1 9.7-3.1 15.5v35h-15.5z"/></svg>
\ No newline at end of file
diff --git a/static/img/logos/aws-logo.svg b/static/img/logos/aws-logo.svg
new file mode 100644 (file)
index 0000000..807f949
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 300.7 179.8"><g class="layer"><path fill="#252f3e" d="M86.4 66.4c0 3.7.4 6.7 1.1 8.9.8 2.2 1.8 4.6 3.2 7.2.5.8.7 1.6.7 2.3 0 1-.6 2-1.9 3L83.2 92c-.9.6-1.8.9-2.6.9-1 0-2-.5-3-1.4a31 31 0 0 1-3.6-4.7l-3.1-5.9a37 37 0 0 1-29.4 13.8c-8.4 0-15.1-2.4-20-7.2a25.7 25.7 0 0 1-7.4-19.2c0-8.5 3-15.4 9.1-20.6a36.4 36.4 0 0 1 24.5-7.8c3.4 0 6.9.3 10.6.8 3.7.5 7.5 1.3 11.5 2.2v-7.3c0-7.6-1.6-12.9-4.7-16-3.2-3.1-8.6-4.6-16.3-4.6-3.5 0-7.1.4-10.8 1.3A79.7 79.7 0 0 0 23.7 21l-1.6.3c-1.4 0-2.1-1-2.1-3.1v-4.9c0-1.6.2-2.8.7-3.5.5-.7 1.4-1.4 2.8-2.1a60.6 60.6 0 0 1 28.2-6.4c11.9 0 20.6 2.7 26.2 8.1 5.5 5.4 8.3 13.6 8.3 24.6v32.4h.2zM45.8 81.6c3.3 0 6.7-.6 10.3-1.8 3.6-1.2 6.8-3.4 9.5-6.4 1.6-1.9 2.8-4 3.4-6.4.6-2.4 1-5.3 1-8.7v-4.2a83.5 83.5 0 0 0-18.6-2.3c-6.7 0-11.6 1.3-14.9 4-3.3 2.7-4.9 6.5-4.9 11.5 0 4.7 1.2 8.2 3.7 10.6 2.4 2.5 5.9 3.7 10.5 3.7zm80.3 10.8c-1.8 0-3-.3-3.8-1-.8-.6-1.5-2-2.1-3.9L96.7 10.2c-.6-2-.9-3.3-.9-4 0-1.6.8-2.5 2.4-2.5h9.8c1.9 0 3.2.3 3.9 1 .8.6 1.4 2 2 3.9l16.8 66.2 15.6-66.2c.5-2 1.1-3.3 1.9-3.9.8-.6 2.2-1 4-1h8c1.9 0 3.2.3 4 1 .8.6 1.5 2 1.9 3.9l15.8 67 17.3-67c.6-2 1.3-3.3 2-3.9.8-.6 2.1-1 3.9-1h9.3c1.6 0 2.5.8 2.5 2.5l-.2 1.6-.7 2.5-24.1 77.3c-.6 2-1.3 3.3-2.1 3.9-.8.6-2.1 1-3.8 1h-8.6c-1.9 0-3.2-.3-4-1-.8-.7-1.5-2-1.9-4L156 23l-15.4 64.4c-.5 2-1.1 3.3-1.9 4-.8.7-2.2 1-4 1h-8.6zm128.5 2.7a66.2 66.2 0 0 1-26.9-5.8c-1.6-.9-2.7-1.9-3.1-2.8a7 7 0 0 1-.6-2.8v-5.1c0-2.1.8-3.1 2.3-3.1l1.8.3 2.5 1a54.4 54.4 0 0 0 22.9 4.7 27 27 0 0 0 14.6-3.3c3.4-2.2 5.2-5.4 5.2-9.5 0-2.8-.9-5.1-2.7-7a25 25 0 0 0-10.1-5.2L246 52a30.5 30.5 0 0 1-16-10.2A23.8 23.8 0 0 1 234.9 8c3-2.3 6.4-4 10.4-5.2a43.6 43.6 0 0 1 19.3-1.3l6.5 1.1 5.7 1.6c1.8.6 3.2 1.2 4.2 1.8 1.4.8 2.4 1.6 3 2.5.6.8.9 1.9.9 3.3v4.7c0 2.1-.8 3.2-2.3 3.2-.8 0-2.1-.4-3.8-1.2a45.7 45.7 0 0 0-19.2-3.9c-5.7 0-10.2.9-13.3 2.8-3.1 1.9-4.7 4.8-4.7 8.9 0 2.8 1 5.2 3 7.1 2 1.9 5.7 3.8 11 5.5l14.2 4.5a30.4 30.4 0 0 1 15.5 9.6c3.1 4.1 4.6 8.8 4.6 14 0 4.3-.9 8.2-2.6 11.6a26.9 26.9 0 0 1-7.3 8.8 32.2 32.2 0 0 1-11.1 5.6 47.6 47.6 0 0 1-14.3 2.1z"/><g fill="#f90"><path d="M273.5 143.7c-32.9 24.3-80.7 37.2-121.8 37.2A220.3 220.3 0 0 1 3 124.2c-3.1-2.8-.3-6.6 3.4-4.4a299.9 299.9 0 0 0 148.8 39.5 297 297 0 0 0 113.5-23.2c5.5-2.5 10.2 3.6 4.8 7.6z" class="st1"/><path d="M287.2 128.1c-4.2-5.4-27.8-2.6-38.5-1.3-3.2.4-3.7-2.4-.8-4.5 18.8-13.2 49.7-9.4 53.3-5 3.6 4.5-1 35.4-18.6 50.2-2.7 2.3-5.3 1.1-4.1-1.9 4-9.9 12.9-32.2 8.7-37.5z"/></g></g></svg>
\ No newline at end of file
diff --git a/static/img/logos/epam-logo.svg b/static/img/logos/epam-logo.svg
new file mode 100644 (file)
index 0000000..b2e652c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" version="1.2" viewBox="0 0 1565 576"><g class="layer"><g id="svg_1"><path id="svg_2" fill="#464547" fill-rule="evenodd" d="m295.6 257.1.3 105.3c0 26.8 12.9 40 38.5 40h11.2c25.6 0 38.6-13.2 38.6-40v-51.8h58.9v49.2c0 67.7-32.8 102.2-97.8 102.2h-12.9c-65 0-97.8-34.3-97.8-94.1V110.4C234.6 34.7 267.4.5 332.4.5h12.9c65 0 97.8 34.2 97.8 101.8l-.3 154.5H295.6v.3zm86.5-61.2v-95.8c0-26.8-12.6-40.3-38.5-40.3h-9.8c-25.6 0-38.5 13.5-38.5 40.3v95.8h86.8z"/><path id="svg_3" fill="#464547" fill-rule="evenodd" d="M482.5 5.7h61V35A100 100 0 0 1 618 .8c52 0 77.6 35.9 77.6 89.5v282.5c0 53.5-25.6 89.5-77.6 89.5-35.4 0-60.1-17.6-74.5-32.5v145.5h-61V5.7zm61 372.6a83.7 83.7 0 0 0 56.1 23.3c22.4 0 35.3-10.9 35.3-36.8V97.2c0-25.9-12.9-36.8-35.3-36.8a84.2 84.2 0 0 0-56.1 23.3v294.6zm188.9-78.5c0-56.1 17.6-78.6 64.2-95.3l81.6-29.3v-75.1c0-26.8-12.9-40.9-38.5-40.9h-9.8c-25.6 0-38.5 14.1-38.5 40.9V164h-59.3v-61.3C732.1 35.1 764.9.8 829.9.8h11.5c65 0 97.8 34.3 97.8 101.9v354.4h-61v-28.4c-16.7 16.6-39.4 33.3-74.5 33.3-48.8 0-71.3-29.3-71.3-79.4v-82.8zM878.2 381V232.2L823 254.1c-22.4 9.2-29.6 21-29.6 46.9v68.5c0 21.8 10.3 32.5 29.6 32.5 18.4 0 35.4-6.7 55.2-21zm307.2 76.2h-61V93.5c0-22.4-10.4-32.5-28.8-32.5-16.6 0-34.5 6.6-56 22.5v373.7h-61V5.8h61v29.3C1057.4 17.6 1080.4.6 1114 .6c31.4 0 52.1 13.5 63.3 36.8 21.9-19.2 47.5-36.8 82.5-36.8 47.2 0 71.4 30.2 71.4 79.4v376.9h-61V93.5c0-22.4-10.4-32.5-28.8-32.5-16.6 0-34.5 6.6-56 22.5v373.7z"/></g><path id="svg_4" fill="#00abcd" d="M156.7 47.1v83.2L54.3 232.1l102.4 99.8v84.9L.2 263.5v-61L156.7 47.1z"/><path id="svg_5" fill="#00abcd" d="M1408.5 47.1 1565 202.5v61l-156.5 153.3v-84.6l102.4-100.1-102.4-101.8V47.1z"/></g></svg>
\ No newline at end of file
diff --git a/static/img/logos/logo-linux-foundation.svg b/static/img/logos/logo-linux-foundation.svg
new file mode 100644 (file)
index 0000000..654b9da
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 134.5"><g fill-rule="evenodd"><path fill="#0494d4" d="M2.7 93.5v39h78.1v-26.2H29V54.5H2.7v39"/><path fill="#043464" d="m2.8 2.6-.1 19.7v19.5H29V29h77.5V106.3h-13v26.2h39.2V2.5h-65l-65 .1M155 4.3v1.4h10v26.5h3V5.7h10V3h-23v1.3m25.3 13.3v14.6h3.2v-14H200.2V32h3.1V3H202c-2 0-1.7-.7-1.7 6.5v6H183.5V3h-3.2v14.6m28.5 0v14.6h20.5v-2.7H212v-11h16v-2.7h-16V5.7h17.2V3h-20.4v14.6M155 66.3v26h39V78.8h-23V40.3h-16v26m49 0v26h16.2v-52H204v26m27.8 0v26h15.4V64.6l.6 1.2a136 136 0 0 0 6 10.6l1 1.8a43.8 43.8 0 0 0 3 5.2 43.8 43.8 0 0 0 2.4 4.4 83.5 83.5 0 0 0 2.5 4.4l7.9.1h7.9v-52h-15.3V54l-.1 13.8-.7-1.4A68.3 68.3 0 0 0 259 60a55.9 55.9 0 0 1-3.1-5.8 287.5 287.5 0 0 1-7-13l-.6-.9h-16.4v26m58.2-8c0 21 0 20.6 2 25 3.5 7.4 12 11 24.3 10.2 13.4-.9 19.8-6.6 20.9-18.4.3-3.6.2-34.5-.1-34.7H321v16.5c-.1 17.2-.1 16.9-.8 19.3-1.6 5.2-10.6 5.7-12.9.7-1.2-2.6-1.3-4.3-1.3-22.8V40.3h-16v18m55.2-17.8c0 .2.1.5 1.6 2.4l.9 1.3.5.9a53.7 53.7 0 0 1 3.5 4.7l.7 1c0 .3.7 1.1 1.3 2a114.2 114.2 0 0 1 5.4 7.6l2 2.8 1 1.5-1.7 2.5a58.2 58.2 0 0 1-3.2 4.9 37.1 37.1 0 0 0-3.4 5 19.5 19.5 0 0 0-2 2.8 80 80 0 0 0-1.9 2.8l-1.8 2.7a135.1 135.1 0 0 0-4.5 6.7c0 .2 1.8.2 9.2.2h9.3l.6-1 1.1-2 1-1.6a52.6 52.6 0 0 1 3.3-5.6 41 41 0 0 0 2.8-4.7c.2 0 2 2.7 2 3l.7 1.4a56 56 0 0 1 3 5l.8 1.6 1.4 2.4 1 1.5h19.4l-1.7-2.7a134 134 0 0 1-4.8-7.1 80 80 0 0 0-3.4-5 83.5 83.5 0 0 1-4.3-6.4 40.8 40.8 0 0 0-3.3-4.9l-.9-1.3 1.7-2.5a427.3 427.3 0 0 0 7.2-10.6 717.4 717.4 0 0 0 7-10.2c1-1.4 1.5-1.3-8.4-1.2h-8.9l-1 1.6-.9 1.8-.7 1.3a62 62 0 0 0-3.4 6.2 29.6 29.6 0 0 0-1.5 2.9 20.8 20.8 0 0 1-2.3-4 60.2 60.2 0 0 1-3.7-6.5 53 53 0 0 1-1.2-2.2l-.6-1.2h-9.4c-6 0-9.4 0-9.5.2m-159 62.5c-3.5.6-7.4 3.2-8.7 5.6l-.7 1.5c-2.3 4.4-2.4 11-.3 15.3a11 11 0 0 0 3 4.2c5.8 5.7 16.5 4.5 20.6-2.4 4.8-8.1 2.3-19.4-5-23a16.1 16.1 0 0 0-9-1.2m168.2 0c-7.5 1.3-11.7 7-11.4 15.7.3 9.7 7 15.7 16.1 14.3 3.3-.5 7.3-3 8.3-5l.9-1.4c2.8-4.4 2.7-12.4-.2-17.5a13.6 13.6 0 0 0-13.7-6.2M155 118v14.5h2.8v-13.7h14v-2.6h-14v-10h15.7v-2.7H155V118m51.2-4.1c0 11.5 0 11.3 1.3 14 .6 1.3 2.5 3.3 3.5 3.8 6.4 3.1 14.6 1.1 16.7-4 1.2-2.9 1.2-2.4 1.3-13.8v-10.4H226l-.1 10.3V124l-.5 1.4a6.8 6.8 0 0 1-2.2 3.4c-2.6 2.1-8.8 2-11.2 0-2.4-2.3-2.4-2.5-2.5-15.1v-10.3H206l.1 10.4m28 4.1v14.5h3v-24l1 1.4a61.2 61.2 0 0 0 3 4.3c0 .2.9 1.3 1.6 2.5a35 35 0 0 0 2.2 3c0 .3 1.2 2 1.6 2.4l.7 1 .7 1.2a73 73 0 0 1 4.3 6.2l.9 1.2.5.8h3.5v-29H254v12l-.1 11.9-.7-1c-.5-.5-.8-1-.8-1.1l-1-1.6a61.6 61.6 0 0 1-2.8-3.9l-1-1.4a62.7 62.7 0 0 0-4.2-6.2l-1-1.5-.5-.7a65 65 0 0 1-4-5.8l-.6-.7h-3.2V118m28.3 0v14.5h5.8c9.7 0 12.5-.9 15.3-4.7 3-4.4 3.4-14 .5-18.7-2.6-4.5-5.7-5.6-15.6-5.6h-6V118m35.8-13.6-.7 1.7a54.7 54.7 0 0 0-3.3 8.4 46.8 46.8 0 0 0-2 5 93.9 93.9 0 0 0-3 7.3 1949.4 1949.4 0 0 0-2 5.3c-.2.4-.2.4 1.4.4h1.6l.8-2a96.5 96.5 0 0 0 2.3-5.9l.4-1h12.8l.5 1 .4 1.2 1.3 3.3 1.2 3.2c0 .2.4.2 1.7.2l1.6-.1-.4-1.2a397.9 397.9 0 0 1-6.6-17L305 111a89.3 89.3 0 0 0-2.6-6.7l-.2-.8h-3.5l-.4 1m11.5.3v1.4H320V132.5h2.8V106.2H333v-2.7h-23.2v1.3m25.7 13.2v14.5h3.2v-29h-3.2V118m38.8 0v14.5h3v-23.9l.8 1.1a144 144 0 0 1 4.6 6.6 170.4 170.4 0 0 0 5.9 8.6 98.8 98.8 0 0 1 4.8 7l.5.6h3.4v-29h-3.1v12c0 10.1 0 11.9-.3 11.7a50.5 50.5 0 0 1-3.4-5l-1-1.5a147.4 147.4 0 0 0-6-8.6l-1-1.5-1.3-2-2.4-3.4-1.2-1.7h-3.3V118m-183.1-12.3c10 2.1 11.3 20.3 1.9 24-8.6 3.2-16.1-3.5-15-13.4 1-7.7 6.3-12 13-10.6m168.7.3c6.9 2.4 9.6 11.4 5.8 19-3 6.2-11.6 7.4-16.3 2.5-5.4-5.6-4.2-17.3 2.1-20.7 2.6-1.3 6-1.7 8.4-.8m-83.7.6c5 1.4 6.8 4.5 6.8 11.4 0 6.2-1.2 8.8-5 10.7-1.7.9-2.5 1-7.6 1l-4.6.2V106l4.5.1c4 0 4.7.1 5.9.4m25.2 3.1a72.8 72.8 0 0 1 2.2 5.8l2 5.4-5.3.1h-5.4l.1-.5 1.2-3a83.2 83.2 0 0 0 2-5.4c.9-1.9 1.9-4.5 1.9-4.8 0-.7.3-.2 1.3 2.4"/></g></svg>
\ No newline at end of file
diff --git a/static/img/logos/vates-logo.svg b/static/img/logos/vates-logo.svg
new file mode 100644 (file)
index 0000000..d4d6bba
--- /dev/null
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" version="1.0" viewBox="17 20.9 682 153.9">
+  <g class="layer">
+    <path
+      d="M627 173c-23-6-36-19-39-41l-1-3h19l19 1 2 4c2 8 9 13 18 13 15 0 21-15 10-25-3-4-8-6-23-12-20-7-28-11-34-17-7-7-10-14-11-25-1-28 17-45 49-47 23-1 43 7 52 21 4 5 8 16 8 20v3h-39v-3c-2-8-9-13-17-13-12 0-18 10-13 20 3 5 8 9 27 15 9 4 20 8 23 10 7 4 15 12 19 20 2 5 3 7 3 17s-1 12-3 17c-6 12-14 19-27 24-9 3-31 4-42 1zm-559 0C62 155 17 24 17 23h38l12 37c21 63 25 76 25 77h1l5-16c3-8 11-34 18-56l14-41 19-1h19v1c-1 1-13 35-27 76l-25 74H69l-1-1zm102-5c2-4 14-37 28-75l25-69h42l27 75 28 75h-19c-10 0-19 0-19-1 0 0-9-25-19-55l-18-55h-2l-18 56-19 55h-38l2-6zm192-55V52h-41V23h118v29h-41v122h-36v-61zm106-14V23h93v29h-57v32h51v27h-51v34h57v29h-93V99z" />
+  </g>
+</svg>
\ No newline at end of file
diff --git a/static/img/logos/xenserver-logo.svg b/static/img/logos/xenserver-logo.svg
new file mode 100644 (file)
index 0000000..b46ea18
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 1044.2 163.6"><path fill="#273440" d="M221.4 136.9c-7 .3-12.8.5-17.3.5a31 31 0 0 1-13.9-2.6 14.2 14.2 0 0 1-7-9c-.5-1.7-1-3.7-1.3-6.1H215c12.3 0 21-2.2 26.1-6.7 5-4.5 7.6-11.3 7.4-20.5-.1-11.5-4-20.2-11.5-26-7.5-5.8-20-8.7-37.4-8.7a79 79 0 0 0-30.9 5 32 32 0 0 0-17 16.7 77.3 77.3 0 0 0-5.3 31.5 72 72 0 0 0 5.2 29.5 34.1 34.1 0 0 0 17.2 17.3c8 3.7 18.5 5.6 31.6 5.6 5.1 0 10.4-.3 15.8-.7 5.4-.5 10.7-1.3 15.8-2.5 5-1.1 9.7-2.7 13.9-4.7l-3-20.6c-7.4 1-14.6 1.6-21.6 2zm-38.5-46.6c1.2-4 3.1-6.6 5.9-8 2.8-1.3 6.7-2 11.9-2 5.7 0 9.7.8 12 2.4 2.4 1.7 3.7 4.6 3.8 9 0 3.5-.6 6.1-1.9 7.8-1.3 1.7-4.2 2.5-8.8 2.5h-24.5c.2-5 .8-8.8 1.6-11.7zm187.4-4.7v75.3H337V96c0-3.7-.7-6.4-2.2-7.9-1.4-1.5-4-2.2-7.6-2.2-4 0-8 .7-12.3 2a114 114 0 0 0-12.3 4.9v68.2h-33.3V60.4H296l3 15.1c6.6-5.7 13.5-10 20.5-13a56.3 56.3 0 0 1 22-4.7c19.3 0 28.9 9.2 28.9 27.8zm75-67.5c7 0 14.7.4 23 1.2a117 117 0 0 1 24.5 4.7l-2 22.8c-6.2-.3-13.3-.5-21.6-.6a1548.3 1548.3 0 0 0-24.4-.2c-3.4 0-6.3.1-8.7.4-2.4.3-4.4.7-5.8 1.4a6 6 0 0 0-3 3.4c-.7 1.5-1 3.6-1 6.1 0 4 1 7 3.2 8.9 2 2 5.8 3.8 11 5.6L467 81c11.3 4 19.2 9.4 23.6 15.9 4.4 6.5 6.6 15 6.6 25.5 0 7.9-.9 14.5-2.7 19.9a25.1 25.1 0 0 1-9 12.5c-4.2 3-9.8 5.3-16.6 6.6-6.8 1.4-15.2 2-25 2a197.8 197.8 0 0 1-50.2-5.7l2-24.3a1263.7 1263.7 0 0 1 37 1h11c5 0 9-.3 11.7-.9 2.7-.6 4.6-1.7 5.8-3.3 1.1-1.7 1.7-4 1.7-7.1 0-2.9-.4-5.2-1.2-6.8-.8-1.7-2.1-3.1-4-4.2-1.8-1-4.3-2.1-7.4-3l-28.2-10.4a49.2 49.2 0 0 1-23.3-15.9 42.5 42.5 0 0 1-6.8-25.1c0-8 1-14.6 3-19.8 2.1-5.3 5.2-9.3 9.4-12.1s9.7-4.9 16.4-6c6.7-1.2 14.8-1.8 24.4-1.8zM589.5 137c-7 .3-12.8.5-17.2.5a31 31 0 0 1-14-2.6 14.2 14.2 0 0 1-7-9c-.5-1.7-1-3.7-1.3-6.1h33.2c12.4 0 21-2.2 26.1-6.7 5.1-4.5 7.6-11.3 7.5-20.5-.2-11.5-4-20.2-11.5-26-7.5-5.8-20-8.7-37.5-8.7a79 79 0 0 0-30.9 5 32 32 0 0 0-17 16.7 77.2 77.2 0 0 0-5.3 31.5 72 72 0 0 0 5.3 29.5 34 34 0 0 0 17.1 17.3 75 75 0 0 0 31.6 5.6c5.2 0 10.4-.3 15.9-.7 5.4-.5 10.6-1.3 15.7-2.5s9.7-2.7 14-4.7l-3.1-20.6c-7.3 1-14.5 1.6-21.6 2zm-38.4-46.6c1.1-4 3-6.6 5.8-8 2.8-1.3 6.8-2 12-2 5.6 0 9.6.8 12 2.4 2.4 1.7 3.6 4.6 3.8 9 0 3.5-.7 6.1-2 7.8-1.2 1.7-4.2 2.5-8.8 2.5h-24.5c.3-5 .8-8.8 1.7-11.7zm161.3-32.5-3 30.4h-9c-4.3 0-9 .6-14 1.6-4.2 1-9.4 2.4-15.6 4.3v66.8h-33.3V60.4h26l3 15c6.5-5.6 13-10 19.7-12.9a51.5 51.5 0 0 1 21-4.7h5.2zM833 60.4 800.7 153a10.9 10.9 0 0 1-10.8 8h-28.6c-2.6 0-4.8-.8-6.7-2.2a11.6 11.6 0 0 1-4-5.8l-32.4-92.6h35.1l17 61 2 9.2 2 9h2.6a1020 1020 0 0 0 4-18.3l16.7-61H833zm64.6-2.6c17.4 0 30 2.9 37.4 8.7 7.5 5.8 11.4 14.5 11.5 26 .1 9.2-2.3 16-7.4 20.5-5 4.5-13.8 6.7-26.1 6.7H857V102h46.5c4.6 0 7.6-.8 8.9-2.5 1.3-1.7 2-4.3 2-7.8-.2-4.4-1.5-7.3-3.8-9-2.4-1.6-6.4-2.4-12.1-2.4-5.2 0-9.1.7-12 2-2.7 1.4-4.7 4-5.8 8-1.2 3.9-1.7 9.7-1.7 17.4 0 7.9.6 14 2 18.2 1.4 4.3 3.7 7.2 7 9a31 31 0 0 0 14 2.5c4.4 0 10.1-.2 17.2-.5a265.8 265.8 0 0 0 21.5-2l3 20.5c-4.1 2-8.8 3.7-13.8 4.8a118 118 0 0 1-15.8 2.5c-5.4.4-10.7.7-15.8.7a75 75 0 0 1-31.6-5.6c-8-3.7-13.7-9.5-17.2-17.3a72 72 0 0 1-5.3-29.5c0-13.3 1.8-23.8 5.3-31.5a32 32 0 0 1 17-16.7 79 79 0 0 1 31-5zm95.6 2.6 4 19.9 3.3 2.8V161h-33.3V60.4h26zm49-2.6-3 30.4h-9c-4.3 0-9 .6-14 1.6-5 1.1-11.4 2.9-19.1 5.3l-2.3-18.5c7-6.2 14-10.9 21.2-14a51.4 51.4 0 0 1 20.9-4.8h5.3z"/><path fill="#3c7ab5" d="m65 113.5 7 14.8-15.5 32.6h-14zm-5.8-92.7 12.9 28-7 15.2-20-43.2zM115.4 89l36.6 72h-14l-1.5-3.2-35-68.8 44-89h14z"/><path fill="#273440" d="m93.7 89 36.5 72h-35L65.9 99v-.1h-1.6l-29.5 62H0l36.6-71.8L2.9 20.7h34.5L64 78.5h2L102.5 0h35.2l-44 89zm928.4 56v3.3h-14.4v-3.4h14.4zm-5 0v16h-4.4v-16h4.4zm25 0c1 0 1.5.5 1.5 1.5l.6 14.4h-4l-.6-12.7h-.3l-2.4 9c-.2 1-.8 1.4-1.7 1.4h-2.6c-1 0-1.5-.5-1.7-1.4l-2.4-9h-.4l-.5 12.7h-4l.6-14.4c0-1 .6-1.6 1.5-1.6h4c.5 0 .9.2 1.1.4s.5.5.6 1l2 7.2.1 1.2.2 1.1h.3l.3-1.2.2-1.1 1.8-7.2c.2-1 .7-1.4 1.7-1.4h4z"/></svg>
\ No newline at end of file
diff --git a/static/img/others/governance-xen_projectstages.webp b/static/img/others/governance-xen_projectstages.webp
new file mode 100644 (file)
index 0000000..cd5f81e
Binary files /dev/null and b/static/img/others/governance-xen_projectstages.webp differ
diff --git a/static/img/others/unikraft-architecture.png b/static/img/others/unikraft-architecture.png
new file mode 100644 (file)
index 0000000..d332524
Binary files /dev/null and b/static/img/others/unikraft-architecture.png differ
diff --git a/static/img/others/xcp-ng-badge.webp b/static/img/others/xcp-ng-badge.webp
new file mode 100644 (file)
index 0000000..9c34864
Binary files /dev/null and b/static/img/others/xcp-ng-badge.webp differ
diff --git a/static/img/others/xcp-ng.png b/static/img/others/xcp-ng.png
new file mode 100644 (file)
index 0000000..27180b6
Binary files /dev/null and b/static/img/others/xcp-ng.png differ
diff --git a/static/img/others/xen-progress-certification.png b/static/img/others/xen-progress-certification.png
new file mode 100644 (file)
index 0000000..26cbdfd
Binary files /dev/null and b/static/img/others/xen-progress-certification.png differ
diff --git a/static/img/others/xen-team-photo-1.png b/static/img/others/xen-team-photo-1.png
new file mode 100644 (file)
index 0000000..c6426da
Binary files /dev/null and b/static/img/others/xen-team-photo-1.png differ
diff --git a/static/img/others/xen-team-photo-2.png b/static/img/others/xen-team-photo-2.png
new file mode 100644 (file)
index 0000000..09ac2c4
Binary files /dev/null and b/static/img/others/xen-team-photo-2.png differ
diff --git a/static/img/photos/xen-project-2023-group-photo.png b/static/img/photos/xen-project-2023-group-photo.png
new file mode 100644 (file)
index 0000000..6704938
Binary files /dev/null and b/static/img/photos/xen-project-2023-group-photo.png differ
diff --git a/static/tmp/news.json b/static/tmp/news.json
new file mode 100644 (file)
index 0000000..74eefe6
--- /dev/null
@@ -0,0 +1,26 @@
+[
+  {
+    "date": "Nov, 20th 2023",
+    "title": "Xen Project releases version 4.18 with new security, performance, and architecture enhancements for AI/ML application",
+    "tags": ["ANNOUNCEMENTS", "PRESSRELEASES", "RELEASES"],
+    "description": "The Xen Project, an open source hypervisor hosted at the Linux Foundation, today announced the release of Xen Project Hypervisor 4.18 with architecture enhancements for High Performance Computing (HPC) and...",
+    "author": "kchoi",
+    "link": "https://xen-project/1234"
+  },
+  {
+    "date": "Dec, 14th 2022",
+    "title": "Xen Project releases version 4.17 with enhanced security, higher performance, improved embedded static configuration and speculative mitigation support",
+    "tags": ["ANNOUNCEMENTS", "PRESSRELEASES", "RELEASES"],
+    "description": "New version includes adoption of MISRA-C rules, static allocation and at-boot partitioning, with improved device throughput SAN FRANCISCO - December 14, 2022 --The Xen Project, an open source hypervisor hosted...",
+    "author": "Georges Dunlap",
+    "link": "https://xen-project/1232"
+  },
+  {
+    "date": "Apr, 8th 2022",
+    "title": "Mirage OS announces latest release v4.0, dedicated to Lars Kurth",
+    "tags": ["ANNOUNCEMENTS", "PRESSRELEASES", "RELEASES"],
+    "description": "MirageOS core maintainers and the Linux Foundation announced the release of MirageOS version 4.0, the latest update since version 3.10 in December, 2020.",
+    "author": "Georges Dunlap",
+    "link": "https://xen-project/1231"
+  }
+]
diff --git a/stories/Configure.mdx b/stories/Configure.mdx
new file mode 100644 (file)
index 0000000..32fe631
--- /dev/null
@@ -0,0 +1,369 @@
+import { Meta } from "@storybook/blocks";
+
+import Github from "./assets/github.svg";
+import Discord from "./assets/discord.svg";
+import Youtube from "./assets/youtube.svg";
+import Tutorials from "./assets/tutorials.svg";
+import Styling from "./assets/styling.png";
+import Context from "./assets/context.png";
+import Assets from "./assets/assets.png";
+import Docs from "./assets/docs.png";
+import Share from "./assets/share.png";
+import FigmaPlugin from "./assets/figma-plugin.png";
+import Testing from "./assets/testing.png";
+import Accessibility from "./assets/accessibility.png";
+import Theming from "./assets/theming.png";
+import AddonLibrary from "./assets/addon-library.png";
+
+export const RightArrow = () => (
+  <svg
+    viewBox="0 0 14 14"
+    width="8px"
+    height="14px"
+    style={{
+      marginLeft: "4px",
+      display: "inline-block",
+      shapeRendering: "inherit",
+      verticalAlign: "middle",
+      fill: "currentColor",
+      "path fill": "currentColor",
+    }}
+  >
+    <path d="m11.1 7.35-5.5 5.5a.5.5 0 0 1-.7-.7L10.04 7 4.9 1.85a.5.5 0 1 1 .7-.7l5.5 5.5c.2.2.2.5 0 .7Z" />
+  </svg>
+);
+
+<Meta title="Configure your project" />
+
+<div className="sb-container">
+  <div className='sb-section-title'>
+    # Configure your project
+
+    Because Storybook works separately from your app, you'll need to configure it for your specific stack and setup. Below, explore guides for configuring Storybook with popular frameworks and tools. If you get stuck, learn how you can ask for help from our community.
+
+  </div>
+  <div className="sb-section">
+    <div className="sb-section-item">
+      <img
+        src={Styling}
+        alt="A wall of logos representing different styling technologies"
+      />
+      <h4 className="sb-section-item-heading">Add styling and CSS</h4>
+      <p className="sb-section-item-paragraph">Like with web applications, there are many ways to include CSS within Storybook. Learn more about setting up styling within Storybook.</p>
+      <a
+        href="https://storybook.js.org/docs/web-components/configure/styling-and-css"
+        target="_blank"
+      >Learn more<RightArrow /></a>
+    </div>
+    <div className="sb-section-item">
+      <img
+        src={Context}
+        alt="An abstraction representing the composition of data for a component"
+      />
+      <h4 className="sb-section-item-heading">Provide context and mocking</h4>
+      <p className="sb-section-item-paragraph">Often when a story doesn't render, it's because your component is expecting a specific environment or context (like a theme provider) to be available.</p>
+      <a
+        href="https://storybook.js.org/docs/web-components/writing-stories/decorators#context-for-mocking"
+        target="_blank"
+      >Learn more<RightArrow /></a>
+    </div>
+    <div className="sb-section-item">
+      <img src={Assets} alt="A representation of typography and image assets" />
+      <div>
+        <h4 className="sb-section-item-heading">Load assets and resources</h4>
+        <p className="sb-section-item-paragraph">To link static files (like fonts) to your projects and stories, use the
+        `staticDirs` configuration option to specify folders to load when
+        starting Storybook.</p>
+        <a
+          href="https://storybook.js.org/docs/web-components/configure/images-and-assets"
+          target="_blank"
+        >Learn more<RightArrow /></a>
+      </div>
+    </div>
+  </div>
+</div>
+<div className="sb-container">
+  <div className='sb-section-title'>
+    # Do more with Storybook
+
+    Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs.
+
+  </div>
+
+  <div className="sb-section">
+    <div className="sb-features-grid">
+      <div className="sb-grid-item">
+        <img src={Docs} alt="A screenshot showing the autodocs tag being set, pointing a docs page being generated" />
+        <h4 className="sb-section-item-heading">Autodocs</h4>
+        <p className="sb-section-item-paragraph">Auto-generate living,
+          interactive reference documentation from your components and stories.</p>
+        <a
+          href="https://storybook.js.org/docs/web-components/writing-docs/autodocs"
+          target="_blank"
+        >Learn more<RightArrow /></a>
+      </div>
+      <div className="sb-grid-item">
+        <img src={Share} alt="A browser window showing a Storybook being published to a chromatic.com URL" />
+        <h4 className="sb-section-item-heading">Publish to Chromatic</h4>
+        <p className="sb-section-item-paragraph">Publish your Storybook to review and collaborate with your entire team.</p>
+        <a
+          href="https://storybook.js.org/docs/web-components/sharing/publish-storybook#publish-storybook-with-chromatic"
+          target="_blank"
+        >Learn more<RightArrow /></a>
+      </div>
+      <div className="sb-grid-item">
+        <img src={FigmaPlugin} alt="Windows showing the Storybook plugin in Figma" />
+        <h4 className="sb-section-item-heading">Figma Plugin</h4>
+        <p className="sb-section-item-paragraph">Embed your stories into Figma to cross-reference the design and live
+          implementation in one place.</p>
+        <a
+          href="https://storybook.js.org/docs/web-components/sharing/design-integrations#embed-storybook-in-figma-with-the-plugin"
+          target="_blank"
+        >Learn more<RightArrow /></a>
+      </div>
+      <div className="sb-grid-item">
+        <img src={Testing} alt="Screenshot of tests passing and failing" />
+        <h4 className="sb-section-item-heading">Testing</h4>
+        <p className="sb-section-item-paragraph">Use stories to test a component in all its variations, no matter how
+          complex.</p>
+        <a
+          href="https://storybook.js.org/docs/web-components/writing-tests"
+          target="_blank"
+        >Learn more<RightArrow /></a>
+      </div>
+      <div className="sb-grid-item">
+        <img src={Accessibility} alt="Screenshot of accessibility tests passing and failing" />
+        <h4 className="sb-section-item-heading">Accessibility</h4>
+        <p className="sb-section-item-paragraph">Automatically test your components for a11y issues as you develop.</p>
+        <a
+          href="https://storybook.js.org/docs/web-components/writing-tests/accessibility-testing"
+          target="_blank"
+        >Learn more<RightArrow /></a>
+      </div>
+      <div className="sb-grid-item">
+        <img src={Theming} alt="Screenshot of Storybook in light and dark mode" />
+        <h4 className="sb-section-item-heading">Theming</h4>
+        <p className="sb-section-item-paragraph">Theme Storybook's UI to personalize it to your project.</p>
+        <a
+          href="https://storybook.js.org/docs/web-components/configure/theming"
+          target="_blank"
+        >Learn more<RightArrow /></a>
+      </div>
+    </div>
+  </div>
+</div>
+<div className='sb-addon'>
+  <div className='sb-addon-text'>
+    <h4>Addons</h4>
+    <p className="sb-section-item-paragraph">Integrate your tools with Storybook to connect workflows.</p>
+    <a
+        href="https://storybook.js.org/integrations/"
+        target="_blank"
+      >Discover all addons<RightArrow /></a>
+  </div>
+  <div className='sb-addon-img'>
+    <img src={AddonLibrary} alt="Integrate your tools with Storybook to connect workflows." />
+  </div>
+</div>
+
+<div className="sb-section sb-socials">
+    <div className="sb-section-item">
+      <img src={Github} alt="Github logo" className="sb-explore-image"/>
+      Join our contributors building the future of UI development.
+
+      <a
+        href="https://github.com/storybookjs/storybook"
+        target="_blank"
+      >Star on GitHub<RightArrow /></a>
+    </div>
+    <div className="sb-section-item">
+      <img src={Discord} alt="Discord logo" className="sb-explore-image"/>
+      <div>
+        Get support and chat with frontend developers.
+
+        <a
+          href="https://discord.gg/storybook"
+          target="_blank"
+        >Join Discord server<RightArrow /></a>
+      </div>
+    </div>
+    <div className="sb-section-item">
+      <img src={Youtube} alt="Youtube logo" className="sb-explore-image"/>
+      <div>
+        Watch tutorials, feature previews and interviews.
+
+        <a
+          href="https://www.youtube.com/@chromaticui"
+          target="_blank"
+        >Watch on YouTube<RightArrow /></a>
+      </div>
+    </div>
+    <div className="sb-section-item">
+      <img src={Tutorials} alt="A book" className="sb-explore-image"/>
+      <p>Follow guided walkthroughs on for key workflows.</p>
+
+      <a
+          href="https://storybook.js.org/tutorials/"
+          target="_blank"
+        >Discover tutorials<RightArrow /></a>
+    </div>
+
+</div>
+
+<style>
+  {`
+  .sb-container {
+    margin-bottom: 48px;
+  }
+
+  .sb-section {
+    width: 100%;
+    display: flex;
+    flex-direction: row;
+    gap: 20px;
+  }
+
+  img {
+    object-fit: cover;
+  }
+
+  .sb-section-title {
+    margin-bottom: 32px;
+  }
+
+  .sb-section a:not(h1 a, h2 a, h3 a) {
+    font-size: 14px;
+  }
+
+  .sb-section-item, .sb-grid-item {
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+  }
+
+  .sb-section-item-heading {
+    padding-top: 20px !important;
+    padding-bottom: 5px !important;
+    margin: 0 !important;
+  }
+  .sb-section-item-paragraph {
+    margin: 0;
+    padding-bottom: 10px;
+  }
+
+  .sb-chevron {
+    margin-left: 5px;
+  }
+
+  .sb-features-grid {
+    display: grid;
+    grid-template-columns: repeat(2, 1fr);
+    grid-gap: 32px 20px;
+  }
+
+  .sb-socials {
+    display: grid;
+    grid-template-columns: repeat(4, 1fr);
+  }
+
+  .sb-socials p {
+    margin-bottom: 10px;
+  }
+
+  .sb-explore-image {
+    max-height: 32px;
+    align-self: flex-start;
+  }
+
+  .sb-addon {
+    width: 100%;
+    display: flex;
+    align-items: center;
+    position: relative;
+    background-color: #EEF3F8;
+    border-radius: 5px;
+    border: 1px solid rgba(0, 0, 0, 0.05);
+    background: #EEF3F8;
+    height: 180px;
+    margin-bottom: 48px;
+    overflow: hidden;
+  }
+
+  .sb-addon-text {
+    padding-left: 48px;
+    max-width: 240px;
+  }
+
+  .sb-addon-text h4 {
+    padding-top: 0px;
+  }
+
+  .sb-addon-img {
+    position: absolute;
+    left: 345px;
+    top: 0;
+    height: 100%;
+    width: 200%;
+    overflow: hidden;
+  }
+
+  .sb-addon-img img {
+    width: 650px;
+    transform: rotate(-15deg);
+    margin-left: 40px;
+    margin-top: -72px;
+    box-shadow: 0 0 1px rgba(255, 255, 255, 0);
+    backface-visibility: hidden;
+  }
+
+  @media screen and (max-width: 800px) {
+    .sb-addon-img {
+      left: 300px;
+    }
+  }
+
+  @media screen and (max-width: 600px) {
+    .sb-section {
+      flex-direction: column;
+    }
+
+    .sb-features-grid {
+      grid-template-columns: repeat(1, 1fr);
+    }
+
+    .sb-socials {
+      grid-template-columns: repeat(2, 1fr);
+    }
+
+    .sb-addon {
+      height: 280px;
+      align-items: flex-start;
+      padding-top: 32px;
+      overflow: hidden;
+    }
+
+    .sb-addon-text {
+      padding-left: 24px;
+    }
+
+    .sb-addon-img {
+      right: 0;
+      left: 0;
+      top: 130px;
+      bottom: 0;
+      overflow: hidden;
+      height: auto;
+      width: 124%;
+    }
+
+    .sb-addon-img img {
+      width: 1200px;
+      transform: rotate(-12deg);
+      margin-left: 0;
+      margin-top: 48px;
+      margin-bottom: -40px;
+      margin-left: -24px;
+    }
+  }
+  `}
+</style>
diff --git a/stories/assets/accessibility.png b/stories/assets/accessibility.png
new file mode 100644 (file)
index 0000000..6ffe6fe
Binary files /dev/null and b/stories/assets/accessibility.png differ
diff --git a/stories/assets/accessibility.svg b/stories/assets/accessibility.svg
new file mode 100644 (file)
index 0000000..a328883
--- /dev/null
@@ -0,0 +1,5 @@
+<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+  <title>Accessibility</title>
+  <circle cx="24.334" cy="24" r="24" fill="#A849FF" fill-opacity="0.3"/>
+  <path fill-rule="evenodd" clip-rule="evenodd" d="M27.8609 11.585C27.8609 9.59506 26.2497 7.99023 24.2519 7.99023C22.254 7.99023 20.6429 9.65925 20.6429 11.585C20.6429 13.575 22.254 15.1799 24.2519 15.1799C26.2497 15.1799 27.8609 13.575 27.8609 11.585ZM21.8922 22.6473C21.8467 23.9096 21.7901 25.4788 21.5897 26.2771C20.9853 29.0462 17.7348 36.3314 17.3325 37.2275C17.1891 37.4923 17.1077 37.7955 17.1077 38.1178C17.1077 39.1519 17.946 39.9902 18.9802 39.9902C19.6587 39.9902 20.253 39.6293 20.5814 39.0889L20.6429 38.9874L24.2841 31.22C24.2841 31.22 27.5529 37.9214 27.9238 38.6591C28.2948 39.3967 28.8709 39.9902 29.7168 39.9902C30.751 39.9902 31.5893 39.1519 31.5893 38.1178C31.5893 37.7951 31.3639 37.2265 31.3639 37.2265C30.9581 36.3258 27.698 29.0452 27.0938 26.2771C26.8975 25.4948 26.847 23.9722 26.8056 22.7236C26.7927 22.333 26.7806 21.9693 26.7653 21.6634C26.7008 21.214 27.0231 20.8289 27.4097 20.7005L35.3366 18.3253C36.3033 18.0685 36.8834 16.9773 36.6256 16.0144C36.3678 15.0515 35.2722 14.4737 34.3055 14.7305C34.3055 14.7305 26.8619 17.1057 24.2841 17.1057C21.7062 17.1057 14.456 14.7947 14.456 14.7947C13.4893 14.5379 12.3937 14.9873 12.0715 15.9502C11.7493 16.9131 12.3293 18.0044 13.3604 18.3253L21.2873 20.7005C21.674 20.8289 21.9318 21.214 21.9318 21.6634C21.9174 21.9493 21.9053 22.2857 21.8922 22.6473Z" fill="#A470D5"/>
+</svg>
\ No newline at end of file
diff --git a/stories/assets/addon-library.png b/stories/assets/addon-library.png
new file mode 100644 (file)
index 0000000..95deb38
Binary files /dev/null and b/stories/assets/addon-library.png differ
diff --git a/stories/assets/assets.png b/stories/assets/assets.png
new file mode 100644 (file)
index 0000000..cfba681
Binary files /dev/null and b/stories/assets/assets.png differ
diff --git a/stories/assets/avif-test-image.avif b/stories/assets/avif-test-image.avif
new file mode 100644 (file)
index 0000000..530709b
Binary files /dev/null and b/stories/assets/avif-test-image.avif differ
diff --git a/stories/assets/context.png b/stories/assets/context.png
new file mode 100644 (file)
index 0000000..e5cd249
Binary files /dev/null and b/stories/assets/context.png differ
diff --git a/stories/assets/discord.svg b/stories/assets/discord.svg
new file mode 100644 (file)
index 0000000..1204df9
--- /dev/null
@@ -0,0 +1,15 @@
+<svg width="33" height="32" viewBox="0 0 33 32" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_10031_177575)">
+<mask id="mask0_10031_177575" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="33" height="25">
+<path d="M32.5034 4.00195H0.503906V28.7758H32.5034V4.00195Z" fill="white"/>
+</mask>
+<g mask="url(#mask0_10031_177575)">
+<path d="M27.5928 6.20817C25.5533 5.27289 23.3662 4.58382 21.0794 4.18916C21.0378 4.18154 20.9962 4.20057 20.9747 4.23864C20.6935 4.73863 20.3819 5.3909 20.1637 5.90358C17.7042 5.53558 15.2573 5.53558 12.8481 5.90358C12.6299 5.37951 12.307 4.73863 12.0245 4.23864C12.003 4.20184 11.9614 4.18281 11.9198 4.18916C9.63431 4.58255 7.44721 5.27163 5.40641 6.20817C5.38874 6.21578 5.3736 6.22848 5.36355 6.24497C1.21508 12.439 0.078646 18.4809 0.636144 24.4478C0.638667 24.477 0.655064 24.5049 0.677768 24.5227C3.41481 26.5315 6.06609 27.7511 8.66815 28.5594C8.70979 28.5721 8.75392 28.5569 8.78042 28.5226C9.39594 27.6826 9.94461 26.7968 10.4151 25.8653C10.4428 25.8107 10.4163 25.746 10.3596 25.7244C9.48927 25.3945 8.66058 24.9922 7.86343 24.5354C7.80038 24.4986 7.79533 24.4084 7.85333 24.3653C8.02108 24.2397 8.18888 24.109 8.34906 23.977C8.37804 23.9529 8.41842 23.9478 8.45249 23.963C13.6894 26.3526 19.359 26.3526 24.5341 23.963C24.5682 23.9465 24.6086 23.9516 24.6388 23.9757C24.799 24.1077 24.9668 24.2397 25.1358 24.3653C25.1938 24.4084 25.19 24.4986 25.127 24.5354C24.3298 25.0011 23.5011 25.3945 22.6296 25.7232C22.5728 25.7447 22.5476 25.8107 22.5754 25.8653C23.0559 26.7955 23.6046 27.6812 24.2087 28.5213C24.234 28.5569 24.2794 28.5721 24.321 28.5594C26.9357 27.7511 29.5869 26.5315 32.324 24.5227C32.348 24.5049 32.3631 24.4783 32.3656 24.4491C33.0328 17.5506 31.2481 11.5584 27.6344 6.24623C27.6256 6.22848 27.6105 6.21578 27.5928 6.20817ZM11.1971 20.8146C9.62043 20.8146 8.32129 19.3679 8.32129 17.5913C8.32129 15.8146 9.59523 14.368 11.1971 14.368C12.8115 14.368 14.0981 15.8273 14.0729 17.5913C14.0729 19.3679 12.7989 20.8146 11.1971 20.8146ZM21.8299 20.8146C20.2533 20.8146 18.9541 19.3679 18.9541 17.5913C18.9541 15.8146 20.228 14.368 21.8299 14.368C23.4444 14.368 24.7309 15.8273 24.7057 17.5913C24.7057 19.3679 23.4444 20.8146 21.8299 20.8146Z" fill="#5865F2"/>
+</g>
+</g>
+<defs>
+<clipPath id="clip0_10031_177575">
+<rect width="31.9995" height="32" fill="white" transform="translate(0.5)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/stories/assets/docs.png b/stories/assets/docs.png
new file mode 100644 (file)
index 0000000..a749629
Binary files /dev/null and b/stories/assets/docs.png differ
diff --git a/stories/assets/figma-plugin.png b/stories/assets/figma-plugin.png
new file mode 100644 (file)
index 0000000..8f79b08
Binary files /dev/null and b/stories/assets/figma-plugin.png differ
diff --git a/stories/assets/github.svg b/stories/assets/github.svg
new file mode 100644 (file)
index 0000000..158e026
--- /dev/null
@@ -0,0 +1,3 @@
+<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M16.0001 0C7.16466 0 0 7.17472 0 16.0256C0 23.1061 4.58452 29.1131 10.9419 31.2322C11.7415 31.3805 12.0351 30.8845 12.0351 30.4613C12.0351 30.0791 12.0202 28.8167 12.0133 27.4776C7.56209 28.447 6.62283 25.5868 6.62283 25.5868C5.89499 23.7345 4.8463 23.2419 4.8463 23.2419C3.39461 22.2473 4.95573 22.2678 4.95573 22.2678C6.56242 22.3808 7.40842 23.9192 7.40842 23.9192C8.83547 26.3691 11.1514 25.6609 12.0645 25.2514C12.2081 24.2156 12.6227 23.5087 13.0803 23.1085C9.52648 22.7032 5.7906 21.3291 5.7906 15.1886C5.7906 13.4389 6.41563 12.0094 7.43916 10.8871C7.27303 10.4834 6.72537 8.85349 7.59415 6.64609C7.59415 6.64609 8.93774 6.21539 11.9953 8.28877C13.2716 7.9337 14.6404 7.75563 16.0001 7.74953C17.3599 7.75563 18.7297 7.9337 20.0084 8.28877C23.0623 6.21539 24.404 6.64609 24.404 6.64609C25.2749 8.85349 24.727 10.4834 24.5608 10.8871C25.5868 12.0094 26.2075 13.4389 26.2075 15.1886C26.2075 21.3437 22.4645 22.699 18.9017 23.0957C19.4756 23.593 19.9869 24.5683 19.9869 26.0634C19.9869 28.2077 19.9684 29.9334 19.9684 30.4613C19.9684 30.8877 20.2564 31.3874 21.0674 31.2301C27.4213 29.1086 32 23.1037 32 16.0256C32 7.17472 24.8364 0 16.0001 0ZM5.99257 22.8288C5.95733 22.9084 5.83227 22.9322 5.71834 22.8776C5.60229 22.8253 5.53711 22.7168 5.57474 22.6369C5.60918 22.5549 5.7345 22.5321 5.85029 22.587C5.9666 22.6393 6.03284 22.7489 5.99257 22.8288ZM6.7796 23.5321C6.70329 23.603 6.55412 23.5701 6.45291 23.4581C6.34825 23.3464 6.32864 23.197 6.40601 23.125C6.4847 23.0542 6.62937 23.0874 6.73429 23.1991C6.83895 23.3121 6.85935 23.4605 6.7796 23.5321ZM7.31953 24.4321C7.2215 24.5003 7.0612 24.4363 6.96211 24.2938C6.86407 24.1513 6.86407 23.9804 6.96422 23.9119C7.06358 23.8435 7.2215 23.905 7.32191 24.0465C7.41968 24.1914 7.41968 24.3623 7.31953 24.4321ZM8.23267 25.4743C8.14497 25.5712 7.95818 25.5452 7.82146 25.413C7.68156 25.2838 7.64261 25.1004 7.73058 25.0035C7.81934 24.9064 8.00719 24.9337 8.14497 25.0648C8.28381 25.1938 8.3262 25.3785 8.23267 25.4743ZM9.41281 25.8262C9.37413 25.9517 9.19423 26.0088 9.013 25.9554C8.83203 25.9005 8.7136 25.7535 8.75016 25.6266C8.78778 25.5003 8.96848 25.4408 9.15104 25.4979C9.33174 25.5526 9.45044 25.6985 9.41281 25.8262ZM10.7559 25.9754C10.7604 26.1076 10.6067 26.2172 10.4165 26.2196C10.2252 26.2238 10.0704 26.1169 10.0683 25.9868C10.0683 25.8534 10.2185 25.7448 10.4098 25.7416C10.6001 25.7379 10.7559 25.8441 10.7559 25.9754ZM12.0753 25.9248C12.0981 26.0537 11.9658 26.1862 11.7769 26.2215C11.5912 26.2554 11.4192 26.1758 11.3957 26.0479C11.3726 25.9157 11.5072 25.7833 11.6927 25.7491C11.8819 25.7162 12.0512 25.7937 12.0753 25.9248Z" fill="#161614"/>
+</svg>
diff --git a/stories/assets/share.png b/stories/assets/share.png
new file mode 100644 (file)
index 0000000..8097a37
Binary files /dev/null and b/stories/assets/share.png differ
diff --git a/stories/assets/styling.png b/stories/assets/styling.png
new file mode 100644 (file)
index 0000000..d341e82
Binary files /dev/null and b/stories/assets/styling.png differ
diff --git a/stories/assets/testing.png b/stories/assets/testing.png
new file mode 100644 (file)
index 0000000..d4ac39a
Binary files /dev/null and b/stories/assets/testing.png differ
diff --git a/stories/assets/theming.png b/stories/assets/theming.png
new file mode 100644 (file)
index 0000000..1535eb9
Binary files /dev/null and b/stories/assets/theming.png differ
diff --git a/stories/assets/tutorials.svg b/stories/assets/tutorials.svg
new file mode 100644 (file)
index 0000000..4b2fc7c
--- /dev/null
@@ -0,0 +1,12 @@
+<svg width="33" height="32" viewBox="0 0 33 32" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_10031_177597)">
+<path opacity="0.7" fill-rule="evenodd" clip-rule="evenodd" d="M17 7.87059C17 6.48214 17.9812 5.28722 19.3431 5.01709L29.5249 2.99755C31.3238 2.64076 33 4.01717 33 5.85105V22.1344C33 23.5229 32.0188 24.7178 30.6569 24.9879L20.4751 27.0074C18.6762 27.3642 17 25.9878 17 24.1539L17 7.87059Z" fill="#B7F0EF"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M1 5.85245C1 4.01857 2.67623 2.64215 4.47507 2.99895L14.6569 5.01848C16.0188 5.28861 17 6.48354 17 7.87198V24.1553C17 25.9892 15.3238 27.3656 13.5249 27.0088L3.34311 24.9893C1.98119 24.7192 1 23.5242 1 22.1358V5.85245Z" fill="#87E6E5"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M15.543 5.71289C15.543 5.71289 16.8157 5.96289 17.4002 6.57653C17.9847 7.19016 18.4521 9.03107 18.4521 9.03107C18.4521 9.03107 18.4521 25.1106 18.4521 26.9629C18.4521 28.8152 19.3775 31.4174 19.3775 31.4174L17.4002 28.8947L16.2575 31.4174C16.2575 31.4174 15.543 29.0765 15.543 27.122C15.543 25.1674 15.543 5.71289 15.543 5.71289Z" fill="#61C1FD"/>
+</g>
+<defs>
+<clipPath id="clip0_10031_177597">
+<rect width="32" height="32" fill="white" transform="translate(0.5)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/stories/assets/youtube.svg b/stories/assets/youtube.svg
new file mode 100644 (file)
index 0000000..33a3a61
--- /dev/null
@@ -0,0 +1,4 @@
+<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M31.3313 8.44657C30.9633 7.08998 29.8791 6.02172 28.5022 5.65916C26.0067 5.00026 16 5.00026 16 5.00026C16 5.00026 5.99333 5.00026 3.4978 5.65916C2.12102 6.02172 1.03665 7.08998 0.668678 8.44657C0 10.9053 0 16.0353 0 16.0353C0 16.0353 0 21.1652 0.668678 23.6242C1.03665 24.9806 2.12102 26.0489 3.4978 26.4116C5.99333 27.0703 16 27.0703 16 27.0703C16 27.0703 26.0067 27.0703 28.5022 26.4116C29.8791 26.0489 30.9633 24.9806 31.3313 23.6242C32 21.1652 32 16.0353 32 16.0353C32 16.0353 32 10.9053 31.3313 8.44657Z" fill="#ED1D24"/>
+<path d="M12.7266 20.6934L21.0902 16.036L12.7266 11.3781V20.6934Z" fill="white"/>
+</svg>
diff --git a/stories/atoms/Colors.mdx b/stories/atoms/Colors.mdx
new file mode 100644 (file)
index 0000000..d4391d4
--- /dev/null
@@ -0,0 +1,62 @@
+import { Meta, ColorPalette } from "@storybook/blocks";
+import ColorItem from "../../.storybook/components/ColorItem";
+import colors from "../json/colors.json";
+
+<Meta title="Atoms/Colors" />
+
+export const CopyButton = () => {
+  const copyColors = () => {
+    const colorText = colors.flatMap(group => 
+      group.colors.map(color => `${color.variableName}: ${color.value}`)
+    ).join('\n');
+    
+    navigator.clipboard.writeText(colorText)
+      .then(() => console.info('Colors copied to clipboard'))
+      .catch(err => console.error('Error copying colors:', err));
+  };
+
+return (
+
+<button onClick={copyColors}>Copy all colors</button>
+); };
+
+# Colors
+
+<div>
+  {colors.map(({ name, colors }) => (
+    <div className={`mode-container ${name}`}>
+      <h1>{name}</h1>
+      <div>
+        <ColorItem
+          key={name}
+          className="story-color-item"
+          title={name}
+          colors={colors}
+        />
+      </div>
+    </div>
+  ))}
+</div>
+
+# Colors in a table
+<div><CopyButton/></div>
+<div>
+  <table>
+    <thead>
+      <tr>
+        <th>Variable</th>
+        <th>Color Code</th>
+      </tr>
+    </thead>
+    <tbody>
+      {colors.flatMap((group) =>
+        group.colors.map((color) => (
+          <tr key={color.variableName}>
+            <td>{color.variableName}</td>
+            <td>{color.value}</td>
+          </tr>
+        )),
+      )}
+    </tbody>
+  </table>
+</div>
diff --git a/stories/atoms/Images.mdx b/stories/atoms/Images.mdx
new file mode 100644 (file)
index 0000000..6991c1b
--- /dev/null
@@ -0,0 +1,9 @@
+import { Meta } from "@storybook/addon-docs/blocks";
+import images from "../json/images.json";
+import ImagesGallery from "../../.storybook/components/ImagesGallery";
+
+<Meta title="Atoms/Images" />
+
+# Images
+
+<ImagesGallery images={images} view="mosaic" path="/img" />
diff --git a/stories/atoms/Spacings.mdx b/stories/atoms/Spacings.mdx
new file mode 100644 (file)
index 0000000..ea99ec0
--- /dev/null
@@ -0,0 +1,123 @@
+import { Meta, Story, Canvas } from "@storybook/blocks";
+
+import React from "react";
+
+<Meta title="Atoms/Spacings" />
+
+# Spacings
+
+This document describes the spacings (`margin` and `padding`) defined in our design system.
+
+## mobile spacings
+
+if you want to use the mobile spacings, you have to add the prefix `mob-` to the class name.
+The margin/padding will only be applied on mobile devices.
+
+### Examples
+
+```html
+<div class="mob-mg-t-sm mg-t-lg">
+  <p>
+    In mobile I have a small margin-top and in table and desktop I have a large
+    margin-top
+  </p>
+</div>
+```
+
+## List of Spacing Names and Values
+
+| Name  | Value |
+| ----- | ----- |
+| xxxs  | 2px   |
+| xxs   | 4px   |
+| xs    | 8px   |
+| sm    | 12px  |
+| sm-md | 16px  |
+| sm-lg | 18px  |
+| md    | 24px  |
+| lg    | 40px  |
+| xl    | 80px  |
+| xxl   | 96px  |
+| xxxl  | 200px |
+| xxxxl | 400px |
+
+## CSS Variables
+
+| Variable   | Value |
+| ---------- | ----- |
+| --sp-xxxs  | 2px   |
+| --sp-xxs   | 4px   |
+| --sp-xs    | 8px   |
+| --sp-sm    | 12px  |
+| --sp-sm-md | 16px  |
+| --sp-sm-lg | 18px  |
+| --sp-md    | 24px  |
+| --sp-lg    | 40px  |
+| --sp-xl    | 80px  |
+| --sp-xxl   | 96px  |
+| --sp-xxxl  | 200px |
+| --sp-xxxxl | 400px |
+
+## Classes for Margins
+
+| Class       | Value | Top Class     | Bottom Class  | Left Class    | Right Class   | Vertical Class | Horizontal Class |
+| ----------- | ----- | ------------- | ------------- | ------------- | ------------- | -------------- | ---------------- |
+| `.mg-xxxs`  | 2px   | `.mg-t-xxxs`  | `.mg-b-xxxs`  | `.mg-l-xxxs`  | `.mg-r-xxxs`  | `.mg-v-xxxs`   | `.mg-h-xxxs`     |
+| `.mg-xxs`   | 4px   | `.mg-t-xxs`   | `.mg-b-xxs`   | `.mg-l-xxs`   | `.mg-r-xxs`   | `.mg-v-xxs`    | `.mg-h-xxs`      |
+| `.mg-xs`    | 8px   | `.mg-t-xs`    | `.mg-b-xs`    | `.mg-l-xs`    | `.mg-r-xs`    | `.mg-v-xs`     | `.mg-h-xs`       |
+| `.mg-sm`    | 12px  | `.mg-t-sm`    | `.mg-b-sm`    | `.mg-l-sm`    | `.mg-r-sm`    | `.mg-v-sm`     | `.mg-h-sm`       |
+| `.mg-sm-md` | 16px  | `.mg-t-sm-md` | `.mg-b-sm-md` | `.mg-l-sm-md` | `.mg-r-sm-md` | `.mg-v-sm-md`  | `.mg-h-sm-md`    |
+| `.mg-sm-lg` | 18px  | `.mg-t-sm-lg` | `.mg-b-sm-lg` | `.mg-l-sm-lg` | `.mg-r-sm-lg` | `.mg-v-sm-lg`  | `.mg-h-sm-lg`    |
+| `.mg-md`    | 24px  | `.mg-t-md`    | `.mg-b-md`    | `.mg-l-md`    | `.mg-r-md`    | `.mg-v-md`     | `.mg-h-md`       |
+| `.mg-lg`    | 40px  | `.mg-t-lg`    | `.mg-b-lg`    | `.mg-l-lg`    | `.mg-r-lg`    | `.mg-v-lg`     | `.mg-h-lg`       |
+| `.mg-xl`    | 80px  | `.mg-t-xl`    | `.mg-b-xl`    | `.mg-l-xl`    | `.mg-r-xl`    | `.mg-v-xl`     | `.mg-h-xl`       |
+| `.mg-xxl`   | 96px  | `.mg-t-xxl`   | `.mg-b-xxl`   | `.mg-l-xxl`   | `.mg-r-xxl`   | `.mg-v-xxl`    | `.mg-h-xxl`      |
+| `.mg-xxxl`  | 200px | `.mg-t-xxxl`  | `.mg-b-xxxl`  | `.mg-l-xxxl`  | `.mg-r-xxxl`  | `.mg-v-xxxl`   | `.mg-h-xxxl`     |
+| `.mg-xxxxl` | 400px | `.mg-t-xxxxl` | `.mg-b-xxxxl` | `.mg-l-xxxxl` | `.mg-r-xxxxl` | `.mg-v-xxxxl`  | `.mg-h-xxxxl`    |
+
+## Classes for Paddings
+
+| Class       | Value | Top Class     | Bottom Class  | Left Class    | Right Class   | Vertical Class | Horizontal Class |
+| ----------- | ----- | ------------- | ------------- | ------------- | ------------- | -------------- | ---------------- |
+| `.pd-xxxs`  | 2px   | `.pd-t-xxxs`  | `.pd-b-xxxs`  | `.pd-l-xxxs`  | `.pd-r-xxxs`  | `.pd-v-xxxs`   | `.pd-h-xxxs`     |
+| `.pd-xxs`   | 4px   | `.pd-t-xxs`   | `.pd-b-xxs`   | `.pd-l-xxs`   | `.pd-r-xxs`   | `.pd-v-xxs`    | `.pd-h-xxs`      |
+| `.pd-xs`    | 8px   | `.pd-t-xs`    | `.pd-b-xs`    | `.pd-l-xs`    | `.pd-r-xs`    | `.pd-v-xs`     | `.pd-h-xs`       |
+| `.pd-sm`    | 12px  | `.pd-t-sm`    | `.pd-b-sm`    | `.pd-l-sm`    | `.pd-r-sm`    | `.pd-v-sm`     | `.pd-h-sm`       |
+| `.pd-sm-md` | 16px  | `.pd-t-sm-md` | `.pd-b-sm-md` | `.pd-l-sm-md` | `.pd-r-sm-md` | `.pd-v-sm-md`  | `.pd-h-sm-md`    |
+| `.pd-sm-lg` | 18px  | `.pd-t-sm-lg` | `.pd-b-sm-lg` | `.pd-l-sm-lg` | `.pd-r-sm-lg` | `.pd-v-sm-lg`  | `.pd-h-sm-lg`    |
+| `.pd-md`    | 24px  | `.pd-t-md`    | `.pd-b-md`    | `.pd-l-md`    | `.pd-r-md`    | `.pd-v-md`     | `.pd-h-md`       |
+| `.pd-lg`    | 40px  | `.pd-t-lg`    | `.pd-b-lg`    | `.pd-l-lg`    | `.pd-r-lg`    | `.pd-v-lg`     | `.pd-h-lg`       |
+| `.pd-xl`    | 80px  | `.pd-t-xl`    | `.pd-b-xl`    | `.pd-l-xl`    | `.pd-r-xl`    | `.pd-v-xl`     | `.pd-h-xl`       |
+| `.pd-xxl`   | 96px  | `.pd-t-xxl`   | `.pd-b-xxl`   | `.pd-l-xxl`   | `.pd-r-xxl`   | `.pd-v-xxl`    | `.pd-h-xxl`      |
+| `.pd-xxxl`  | 200px | `.pd-t-xxxl`  | `.pd-b-xxxl`  | `.pd-l-xxxl`  | `.pd-r-xxxl`  | `.pd-v-xxxl`   | `.pd-h-xxxl`     |
+| `.pd-xxxxl` | 400px | `.pd-t-xxxxl` | `.pd-b-xxxxl` | `.pd-l-xxxxl` | `.pd-r-xxxxl` | `.pd-v-xxxxl`  | `.pd-h-xxxxl`    |
+
+## Visual Examples
+
+Here are some visual examples demonstrating the different spacing classes.
+
+    <div>
+      {Object.entries({
+
+"xxxs" : "2px" ,
+"xxs" : "4px" ,
+"xs" : "8px" ,
+"sm" : "12px" ,
+"sm-md" : "16px" ,
+"sm-lg" : "18px" ,
+"md" : "24px" ,
+"lg" : "40px" ,
+"xl" : "80px" ,
+"xxl" : "96px" ,
+"xxxl" : "200px",
+"xxxxl" : "400px",
+}).map(([key, value]) => (
+
+<div key={key} className="spacing-example">
+<div className="spacing-example-text">
+{key} : {value}
+</div>
+<div className="spacing-example-bar" style={{width: value }}></div>
+</div>
+))}
+</div>
diff --git a/stories/atoms/Typography.mdx b/stories/atoms/Typography.mdx
new file mode 100644 (file)
index 0000000..6d9c93c
--- /dev/null
@@ -0,0 +1,69 @@
+import { Meta, Story, Canvas } from "@storybook/blocks";
+
+<Meta title="Atoms/Typography" />
+
+# Typography
+
+Gotham Font is a Sans-serif font created by American designer Tobias Frere Jones and Jesse Ragan. It was released in 2000 with a broad design comprising wide x-height and founded by a New York foundry, Hoefler & Co. Since its release, it has been extensively used and is visible in different notable places.
+
+Want to make something surprising? Then combine this typeface with The Tropical Script Font, a great script typeface with an amazing ligature.
+
+It gained immense popularity after being used in Obama's campaign of 2008. It contains an extended family of fonts comprising 8 weights, 4 widths, and a rounded version same as we see in Avenir font. If you want to get access to more than 5 families of Gotham Font, you need to purchase a license first. Furthermore, you can create many Gotham font logos by using Gotham Font Generator free of cost.
+
+## Font Weights
+
+- **Gotham Bold**
+- **Gotham Medium**
+- **Gotham Book**
+
+## Font Decorations
+
+- **Gotham underline**
+
+## Font License
+
+The font is free to use for personal work. However, in order to get your hands on its extended family, you need to purchase a license first, after which you can use this font anywhere you want.
+
+## Font Scale
+
+| Element                                                               | Font        | Weight | Style     | Size | Line Height | Letter Spacing |
+| --------------------------------------------------------------------- | ----------- | ------ | --------- | ---- | ----------- | -------------- |
+| <h1>H1 - 40 Bold</h1>                                                 | Gotham Bold | Bold   | -         | 40px | 1.2em       | -              |
+| <h2>H2 - 36 Bold</h2>                                                 | Gotham Bold | Bold   | -         | 36px | 1.2em       | -              |
+| <h3>H3 - 24 Bold</h3>                                                 | Gotham Bold | Bold   | -         | 24px | 1.2em       | -              |
+| <span className="button-medium">Button - 20 Medium</span>             | Gotham Bold | Medium | -         | 20px | 1.5em       | -0.5px         |
+| <span className="p1-bold">P1 - 20 Bold</span>                         | Gotham Bold | Bold   | -         | 20px | 1.5em       | -0.5px         |
+| <span className="p1-bold-underline">P1 - 20 Bold underline</span>     | Gotham Bold | Bold   | Underline | 20px | 1.5em       | -0.5px         |
+| <span className="p1-medium">P1 - 20 Medium</span>                     | Gotham Bold | Medium | -         | 20px | 1.5em       | -0.5px         |
+| <span className="p1-medium-underline">P1 - 20 Medium underline</span> | Gotham Bold | Medium | Underline | 20px | 1.5em       | -0.5px         |
+| <span className="p1-book">P1 - 20 Book</span>                         | Gotham Bold | Book   | -         | 20px | 1.5em       | -0.5px         |
+| <span className="p1-book-underline">P1 - 20 Book underline</span>     | Gotham Bold | Book   | Underline | 20px | 1.5em       | -0.5px         |
+
+### Mobile
+
+<div style={{ fontSiz: "0.9rem" }}>
+
+| Element                                                               | Font        | Weight | Style     | Size | Line Height | Letter Spacing |
+| --------------------------------------------------------------------- | ----------- | ------ | --------- | ---- | ----------- | -------------- |
+| <h1>H1 - 36 Bold</h1>                                                 | Gotham Bold | Bold   | -         | 36px | 60px        | -              |
+| <h2>H2 - 32 Bold</h2>                                                 | Gotham Bold | Bold   | -         | 32px | 60px        | -              |
+| <h3>H3 - 20 Bold</h3>                                                 | Gotham Bold | Bold   | -         | 20px | 60px        | -              |
+| <span className="button-medium">Button - 18 Medium</span>             | Gotham Bold | Medium | -         | 18px | 1.2em       | -              |
+| <span className="p1-bold">P1 - 18 Bold</span>                         | Gotham Bold | Bold   | -         | 18px | 1.5em       | -0.5px         |
+| <span className="p1-bold-underline">P1 - 18 Bold underline</span>     | Gotham Bold | Bold   | Underline | 18px | 1.5em       | -0.5px         |
+| <span className="p1-medium">P1 - 18 Medium</span>                     | Gotham Bold | Medium | -         | 18px | 1.5em       | -0.5px         |
+| <span className="p1-medium-underline">P1 - 18 Medium underline</span> | Gotham Bold | Medium | Underline | 18px | 1.5em       | -0.5px         |
+| <span className="p1-book">P1 - 18 Book</span>                         | Gotham Bold | Book   | -         | 18px | 1.5em       | -0.5px         |
+| <span className="p1-book-underline">P1 - 18 Book underline</span>     | Gotham Bold | Book   | Underline | 18px | 1.5em       | -0.5px         |
+
+### Common
+
+| Element                                                               | Font        | Weight | Style       | Size | Line Height | Letter Spacing |
+| --------------------------------------------------------------------- | ----------- | ------ | ----------- | ---- | ----------- | -------------- |
+| <span className="p2-medium">P2 - 16 Medium</span>                     | Gotham Bold | Medium | -           | 16px | 1.5em       | -0.5px         |
+| <span className="p2-medium-underline">P2 - 16 Medium underline</span> | Gotham Bold | Medium | Underline   | 16px | 1.5em       | -0.5px         |
+| <span className="p2-book">P2 - 16 Book</span>                         | Gotham Bold | Book   | -           | 16px | 1.5em       | -0.5px         |
+| <span className="p2-book-underline">P2 - 16 Book underline</span>     | Gotham Bold | Book   | Underline   | 16px | 1.5em       | -0.5px         |
+| <span className="c1-bold">C1 - 16 BOLD</span>                         | Gotham Bold | Bold   | Capitalized | 16px | 1em         | 0.02px         |
+
+</div>
diff --git a/stories/json/colors.json b/stories/json/colors.json
new file mode 100644 (file)
index 0000000..3deaadd
--- /dev/null
@@ -0,0 +1,143 @@
+[
+  {
+    "name": "default",
+    "colors": [
+      {
+        "group": "default",
+        "name": "surface",
+        "variableName": "--color-surface",
+        "value": "#fbfbfb"
+      },
+      {
+        "group": "default",
+        "name": "surface-secondary",
+        "variableName": "--color-surface-secondary",
+        "value": "#ededed"
+      },
+      {
+        "group": "default",
+        "name": "border",
+        "variableName": "--color-border",
+        "value": "#dbdbdb"
+      },
+      {
+        "group": "default",
+        "name": "text",
+        "variableName": "--color-text",
+        "value": "#101828"
+      },
+      {
+        "group": "default",
+        "name": "text-secondary",
+        "variableName": "--color-text-secondary",
+        "value": "#475467"
+      }
+    ]
+  },
+  {
+    "name": "action",
+    "colors": [
+      {
+        "group": "action",
+        "name": "action-surface",
+        "variableName": "--color-action-surface",
+        "value": "#bcdef7"
+      },
+      {
+        "group": "action",
+        "name": "action-text",
+        "variableName": "--color-action-text",
+        "value": "#0062a7"
+      },
+      {
+        "group": "action",
+        "name": "action-text-hover",
+        "variableName": "--color-action-text-hover",
+        "value": "#004e86"
+      },
+      {
+        "group": "action",
+        "name": "action-text-pressed",
+        "variableName": "--color-action-text-pressed",
+        "value": "#003b64"
+      },
+      {
+        "group": "action",
+        "name": "action-fill",
+        "variableName": "--color-action-fill",
+        "value": "#0077cc"
+      },
+      {
+        "group": "action",
+        "name": "action-fill-hover",
+        "variableName": "--color-action-fill-hover",
+        "value": "#005fa3"
+      },
+      {
+        "group": "action",
+        "name": "action-fill-pressed",
+        "variableName": "--color-action-fill-pressed",
+        "value": "#00477a"
+      },
+      {
+        "group": "action",
+        "name": "action-on-fill",
+        "variableName": "--color-action-on-fill",
+        "value": "#f7fbfd"
+      }
+    ]
+  },
+  {
+    "name": "brand",
+    "colors": [
+      {
+        "group": "brand",
+        "name": "brand-surface",
+        "variableName": "--color-brand-surface",
+        "value": "#f3f9ec"
+      },
+      {
+        "group": "brand",
+        "name": "brand-text",
+        "variableName": "--color-brand-text",
+        "value": "#567c2a"
+      },
+      {
+        "group": "brand",
+        "name": "brand-text-hover",
+        "variableName": "--color-brand-text-hover",
+        "value": "#456322"
+      },
+      {
+        "group": "brand",
+        "name": "brand-text-pressed",
+        "variableName": "--color-brand-text-pressed",
+        "value": "#344a19"
+      },
+      {
+        "group": "brand",
+        "name": "brand-fill",
+        "variableName": "--color-brand-fill",
+        "value": "#85c241"
+      },
+      {
+        "group": "brand",
+        "name": "brand-fill-hover",
+        "variableName": "--color-brand-fill-hover",
+        "value": "#9dce67"
+      },
+      {
+        "group": "brand",
+        "name": "brand-fill-pressed",
+        "variableName": "--color-brand-fill-pressed",
+        "value": "#b6da8d"
+      },
+      {
+        "group": "brand",
+        "name": "brand-on-fill",
+        "variableName": "--color-brand-on-fill",
+        "value": "#1e2b0e"
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/stories/json/images.json b/stories/json/images.json
new file mode 100644 (file)
index 0000000..e7b19df
--- /dev/null
@@ -0,0 +1,174 @@
+{
+  "figures": [
+    {
+      "name": "cloud.png",
+      "path": "/figures/cloud.png"
+    },
+    {
+      "name": "small-cloud.png",
+      "path": "/figures/small-cloud.png"
+    },
+    {
+      "name": "xen-panda-kungfu.png",
+      "path": "/figures/xen-panda-kungfu.png"
+    },
+    {
+      "name": "xen-panda-winged.png",
+      "path": "/figures/xen-panda-winged.png"
+    },
+    {
+      "name": "xen-panda-zen.png",
+      "path": "/figures/xen-panda-zen.png"
+    }
+  ],
+  "flatline": [
+    {
+      "name": "brainstorming-session.svg",
+      "path": "/flatline/brainstorming-session.svg"
+    },
+    {
+      "name": "brainstorming.svg",
+      "path": "/flatline/brainstorming.svg"
+    },
+    {
+      "name": "coding.svg",
+      "path": "/flatline/coding.svg"
+    },
+    {
+      "name": "coding2.svg",
+      "path": "/flatline/coding2.svg"
+    },
+    {
+      "name": "data-analysis.svg",
+      "path": "/flatline/data-analysis.svg"
+    },
+    {
+      "name": "data-analyst.svg",
+      "path": "/flatline/data-analyst.svg"
+    },
+    {
+      "name": "data-center.svg",
+      "path": "/flatline/data-center.svg"
+    },
+    {
+      "name": "data-hosting.svg",
+      "path": "/flatline/data-hosting.svg"
+    },
+    {
+      "name": "data-process-with-xen-logo.svg",
+      "path": "/flatline/data-process-with-xen-logo.svg"
+    },
+    {
+      "name": "data-process.svg",
+      "path": "/flatline/data-process.svg"
+    },
+    {
+      "name": "data-process2.svg",
+      "path": "/flatline/data-process2.svg"
+    },
+    {
+      "name": "data_and_settings.svg",
+      "path": "/flatline/data_and_settings.svg"
+    },
+    {
+      "name": "error-404.svg",
+      "path": "/flatline/error-404.svg"
+    },
+    {
+      "name": "handshake.svg",
+      "path": "/flatline/handshake.svg"
+    },
+    {
+      "name": "java.svg",
+      "path": "/flatline/java.svg"
+    },
+    {
+      "name": "laptop-cybersecurity.svg",
+      "path": "/flatline/laptop-cybersecurity.svg"
+    },
+    {
+      "name": "security.svg",
+      "path": "/flatline/security.svg"
+    },
+    {
+      "name": "start-up.svg",
+      "path": "/flatline/start-up.svg"
+    },
+    {
+      "name": "team-meeting.svg",
+      "path": "/flatline/team-meeting.svg"
+    },
+    {
+      "name": "team-work.svg",
+      "path": "/flatline/team-work.svg"
+    },
+    {
+      "name": "timeline.svg",
+      "path": "/flatline/timeline.svg"
+    }
+  ],
+  ".": [
+    {
+      "name": "logo-xen.svg",
+      "path": "/logo-xen.svg"
+    }
+  ],
+  "logos": [
+    {
+      "name": "amd-logo.svg",
+      "path": "/logos/amd-logo.svg"
+    },
+    {
+      "name": "arm-logo.svg",
+      "path": "/logos/arm-logo.svg"
+    },
+    {
+      "name": "aws-logo.svg",
+      "path": "/logos/aws-logo.svg"
+    },
+    {
+      "name": "epam-logo.svg",
+      "path": "/logos/epam-logo.svg"
+    },
+    {
+      "name": "vates-logo.svg",
+      "path": "/logos/vates-logo.svg"
+    },
+    {
+      "name": "xenserver-logo.svg",
+      "path": "/logos/xenserver-logo.svg"
+    }
+  ],
+  "others": [
+    {
+      "name": "unikraft-architecture.png",
+      "path": "/others/unikraft-architecture.png"
+    },
+    {
+      "name": "xcp-ng-badge.webp",
+      "path": "/others/xcp-ng-badge.webp"
+    },
+    {
+      "name": "xcp-ng.png",
+      "path": "/others/xcp-ng.png"
+    },
+    {
+      "name": "xen-progress-certification.png",
+      "path": "/others/xen-progress-certification.png"
+    },
+    {
+      "name": "xen-team-photo-1.png",
+      "path": "/others/xen-team-photo-1.png"
+    },
+    {
+      "name": "xen-team-photo-2.png",
+      "path": "/others/xen-team-photo-2.png"
+    }
+  ],
+  "photos": [
+    {
+      "name": "xen-project-2023-group-photo.png",
+      "path": "/photos/xen-project-2023-group-photo.png"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/stories/molecules/Anchor.stories.js b/stories/molecules/Anchor.stories.js
new file mode 100644 (file)
index 0000000..404194d
--- /dev/null
@@ -0,0 +1,12 @@
+import { html } from "lit";
+
+// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
+export default {
+  title: "Molecules/Anchor",
+  tags: ["autodocs"],
+};
+
+// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
+export const Anchor = {
+  render: (args) => html` <a href="#" class="anchor">Anchor</a> `,
+};
diff --git a/stories/molecules/Button.stories.js b/stories/molecules/Button.stories.js
new file mode 100644 (file)
index 0000000..5ea4a2a
--- /dev/null
@@ -0,0 +1,37 @@
+import { html } from "lit";
+
+// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
+export default {
+  title: "Molecules/Button",
+  tags: ["autodocs"],
+};
+
+// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
+export const AllButtons = {
+  render: (args) => html`
+    <h2>Buttons as "button" tag</h2>
+    <button type="button" class="btn btn-primary">Primary button</button>
+    <button type="button" class="btn btn-secondary">Secondary button</button>
+    <button type="button" class="btn btn-tertiary">Tertiary button</button>
+
+    <h2>Buttons as "a" tag</h2>
+    <a href="#" class="btn btn-primary"> Primary button </a>
+    <a href="#" class="btn btn-secondary"> Secondary button </a>
+    <a href="#" class="btn btn-tertiary"> Tertiary button </a>
+
+    <h2>Buttons with icons</h2>
+    <button type="button" class="btn btn-primary">
+      Primary button with "arrow-right" icon
+      <i class="fas fa-arrow-right"></i>
+    </button>
+    <button type="button" class="btn btn-secondary">
+      Secondary button with "download" icon
+      <i class="fas fa-download"></i>
+    </button>
+
+    <a href="#" class="btn btn-tertiary">
+      Tertiary button with "arrow-up-right-from-square" icon
+      <i class="fas fa-arrow-up-right-from-square"></i>
+    </a>
+  `,
+};
diff --git a/stories/molecules/ConversationCard.stories.js b/stories/molecules/ConversationCard.stories.js
new file mode 100644 (file)
index 0000000..e06549d
--- /dev/null
@@ -0,0 +1,36 @@
+import { html } from "lit";
+
+export default {
+  title: "Molecules/ConversationCard",
+  tags: ["autodocs"],
+};
+
+export const ProjectCard = {
+  render: (args) => html`
+    <div class="story-row">
+      ${["", "small"].map(
+        (size) => html`
+        <div class="conversation-card ${size ? `conversation-card--${size}` : ""}">
+          <div class="label">Conversation Card ${size}</div>
+          <div class="tags">
+            <span class="tag">Tag 1</span>
+            <span class="tag">Tag 2</span>
+            <span class="tag">Tag 3</span>
+          </div>
+          <p class="content">
+            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum non
+            eros varius, tincidunt tellus sit amet, maximus urna.
+          </p>
+          <div class="actions">
+            <a href="TODO" class="btn btn-ternary join-button"
+              >Join <i class="fas fa-arrow-up-right-from-square"></i
+            ></a>
+            <a href="TODO" class="btn btn-ternary join-button">Join
+            <i class="fas fa-arrow-up-right-from-square"></i
+            ></a></a>
+          </div>
+        </div>`,
+      )}
+    </div>
+  `,
+};
diff --git a/stories/molecules/ProjectCard.stories.js b/stories/molecules/ProjectCard.stories.js
new file mode 100644 (file)
index 0000000..50fde23
--- /dev/null
@@ -0,0 +1,35 @@
+import { html } from "lit";
+
+// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
+export default {
+  title: "Molecules/ProjectCard",
+  tags: ["autodocs"],
+};
+
+// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
+export const ProjectCard = {
+  render: (args) => html`
+    <div class="story-row">
+      <div class="project-card">
+        <h3>Label</h3>
+        <div class="project-card__content">
+          Label Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+          Vestibulum non eros varius, tincidunt tellus sit amet, maximus urna.
+        </div>
+        <a href="/link" class="project-card__link btn btn-tertiary"
+          >Discover <i class="fas fa-arrow-right"></i
+        ></a>
+      </div>
+      <div class="project-card">
+        <h3>Label</h3>
+        <div class="project-card__content">
+          Label Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+          Vestibulum non eros varius, tincidunt tellus sit amet, maximus urna.
+        </div>
+        <a href="/link" class="project-card__link btn btn-tertiary"
+          >Discover <i class="fas fa-arrow-right"></i
+        ></a>
+      </div>
+    </div>
+  `,
+};
diff --git a/stories/molecules/Resources.stories.js b/stories/molecules/Resources.stories.js
new file mode 100644 (file)
index 0000000..7aeb496
--- /dev/null
@@ -0,0 +1,82 @@
+import { Description } from "@storybook/blocks";
+import { html } from "lit";
+
+// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
+
+// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
+export default {
+  title: "Molecules/BoxResources",
+  tags: ["autodocs"],
+  parameters: {
+    docs: {
+      source: {
+        code: null,
+      },
+      description: {
+        story: `
+## Description
+
+This component only show on the left side of some pages.
+
+## Usage
+
+In the \`.md\` file :
+
+- Add the parameter "resources" to the page parameters.
+- Add the parameter "layout" with the value "single-with-aside".
+
+
+\`\`\`yaml
+---
+title: Page title
+layout: single-with-aside
+resources:
+  - name: Example resource
+    url: https://example.com/docs
+  - name: Label 2
+    url: https://github.com/example/repo
+---
+\`\`\`
+
+## Example
+`,
+      },
+    },
+  },
+};
+
+export const Example = {
+  render: (args) => html`
+    <div class="page-single">
+      <div class="main-content page-single-aside with-aside">
+        <aside class="page-aside">
+          <div class="box-resources">
+            <h3 class="box-resources__title">Resources</h3>
+            <ul>
+              <li>
+                <a href="https://example.com/docs" target="_blank"
+                  >Exemple resource
+                  <i class="fas fa-arrow-up-right-from-square"></i>
+                </a>
+              </li>
+              <li>
+                <a href="https://github.com/example/repo" target="_blank"
+                  >Label 2 <i class="fas fa-arrow-up-right-from-square"></i>
+                </a>
+              </li>
+            </ul>
+          </div>
+        </aside>
+
+        <div class="page-content">
+          <h1>Page title</h1>
+
+          <div class="description">
+            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum
+            non eros varius, tincidunt tellus sit amet, maximus urna.
+          </div>
+        </div>
+      </div>
+    </div>
+  `,
+};
diff --git a/tests/.gitignore b/tests/.gitignore
new file mode 100644 (file)
index 0000000..224b128
--- /dev/null
@@ -0,0 +1,4 @@
+/backstop_data/html_report
+/backstop_data/bitmaps_test
+
+/report.7z
\ No newline at end of file
diff --git a/tests/backstop.json b/tests/backstop.json
new file mode 100644 (file)
index 0000000..a8febdf
--- /dev/null
@@ -0,0 +1,184 @@
+{
+  "id": "Xen-project",
+  "viewports": [
+    {
+      "label": "desktop",
+      "width": 1920,
+      "height": 1280
+    },
+    {
+      "label": "phone",
+      "width": 320,
+      "height": 640
+    }
+  ],
+  "//oldviewports": [
+    {
+      "label": "tablet",
+      "width": 1024,
+      "height": 768
+    }
+  ],
+  "onBeforeScript": "puppet/onBefore.js",
+  "onReadyScript": "puppet/onReady.js",
+  "scenarios": [
+    {
+      "label": "Home Page",
+      "url": "http://localhost:1313/",
+      "delay": 1000
+    },
+    {
+      "label": "More - Xen Server Branding",
+      "url": "http://localhost:1313/more/xen-server-branding/",
+      "delay": 500
+    },
+    {
+      "label": "About - Contact Us",
+      "url": "http://localhost:1313/about/contact-us/",
+      "delay": 500
+    },
+    {
+      "label": "404 Page",
+      "url": "http://localhost:1313/404/",
+      "delay": 500
+    },
+    {
+      "label": "More - Xen Summit 2024",
+      "url": "http://localhost:1313/more/xen-summit-2024/",
+      "delay": 500
+    },
+    {
+      "label": "Projects - All Projects",
+      "url": "http://localhost:1313/projects/all-projects/",
+      "delay": 500
+    },
+    {
+      "label": "Projects - Hypervisor",
+      "url": "http://localhost:1313/projects/hypervisor/",
+      "delay": 500
+    },
+    {
+      "label": "Projects - Embedded and Automative",
+      "url": "http://localhost:1313/projects/embedded-and-automative/",
+      "delay": 500
+    },
+    {
+      "label": "Projects - HVMI",
+      "url": "http://localhost:1313/projects/hvmi/",
+      "delay": 500
+    },
+    {
+      "label": "Projects - Mirage OS",
+      "url": "http://localhost:1313/projects/mirage-os/",
+      "delay": 500
+    },
+    {
+      "label": "Projects - Unikraft",
+      "url": "http://localhost:1313/projects/unikraft/",
+      "delay": 500
+    },
+    {
+      "label": "Projects - XAPI",
+      "url": "http://localhost:1313/projects/xapi/",
+      "delay": 500
+    },
+    {
+      "label": "Projects - XCP-ng",
+      "url": "http://localhost:1313/projects/xcp-ng/",
+      "delay": 500
+    },
+    {
+      "label": "Projects - Windows PV Drivers",
+      "url": "http://localhost:1313/projects/windows-pv-drivers/",
+      "delay": 500
+    },
+    {
+      "label": "Contribute - Code of Conduct",
+      "url": "http://localhost:1313/contribute/code-of-conduct/",
+      "delay": 500
+    },
+    {
+      "label": "Contribute - Get Started",
+      "url": "http://localhost:1313/contribute/get-started/",
+      "delay": 500
+    },
+    {
+      "label": "Contribute - Contribution Guidelines",
+      "url": "http://localhost:1313/contribute/contribution-guidelines/",
+      "delay": 500
+    },
+    {
+      "label": "Resources - Use Cases",
+      "url": "http://localhost:1313/resources/use-cases/",
+      "delay": 1000
+    },
+    {
+      "label": "Resources - Downloads",
+      "url": "http://localhost:1313/resources/downloads/",
+      "delay": 500
+    },
+    {
+      "label": "Resources - Matrix",
+      "url": "http://localhost:1313/resources/matrix/",
+      "delay": 500
+    },
+    {
+      "label": "Resources - Mailing Lists",
+      "url": "http://localhost:1313/resources/mailing-lists/",
+      "delay": 500
+    },
+    {
+      "label": "About Xen Project",
+      "url": "http://localhost:1313/about/",
+      "delay": 500
+    },
+    {
+      "label": "About - Xen Project Members",
+      "url": "http://localhost:1313/about/project-members/",
+      "delay": 500
+    },
+    {
+      "label": "About - Become a Member",
+      "url": "http://localhost:1313/about/become-a-member/",
+      "delay": 500
+    },
+    {
+      "label": "About - Governance",
+      "url": "http://localhost:1313/about/governance/",
+      "delay": 500,
+      "viewports": [
+        {
+          "label": "desktop",
+          "width": 1920,
+          "height": 10000
+        },
+        {
+          "label": "phone",
+          "width": 320,
+          "height": 20000
+        }
+      ]
+    },
+    {
+      "label": "About - Security Policy",
+      "url": "http://localhost:1313/about/security-policy/",
+      "delay": 500
+    }
+  ],
+  "paths": {
+    "bitmaps_reference": "backstop_data/bitmaps_reference",
+    "bitmaps_test": "backstop_data/bitmaps_test",
+    "engine_scripts": "backstop_data/engine_scripts",
+    "html_report": "backstop_data/html_report",
+    "ci_report": "backstop_data/ci_report"
+  },
+  "report": ["browser"],
+  "engine": "puppeteer",
+  "engineOptions": {
+    "args": ["--no-sandbox"]
+  },
+  "asyncCaptureLimit": 10,
+  "asyncCompareLimit": 50,
+  "debug": false,
+  "debugWindow": false
+}
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_404_Page_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_404_Page_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..0b8c4eb
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_404_Page_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_404_Page_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_404_Page_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..f30eb4e
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_404_Page_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Become_a_Member_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Become_a_Member_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..3d90b53
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Become_a_Member_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Become_a_Member_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Become_a_Member_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..13f0478
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Become_a_Member_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Contact_Us_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Contact_Us_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..83aba9c
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Contact_Us_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Contact_Us_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Contact_Us_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..eea0878
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Contact_Us_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Governance_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Governance_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..dc0889d
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Governance_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Governance_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Governance_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..e93c8cf
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Governance_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Security_Policy_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Security_Policy_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..c53f5cc
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Security_Policy_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Security_Policy_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Security_Policy_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..3814c6f
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Security_Policy_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Xen_Project_Members_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Xen_Project_Members_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..0a8392b
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Xen_Project_Members_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Xen_Project_Members_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Xen_Project_Members_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..9dc6dd3
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_About_-_Xen_Project_Members_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_About_Xen_Project_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_About_Xen_Project_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..467d516
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_About_Xen_Project_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_About_Xen_Project_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_About_Xen_Project_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..0fa362a
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_About_Xen_Project_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Code_of_Conduct_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Code_of_Conduct_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..de0c0f4
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Code_of_Conduct_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Code_of_Conduct_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Code_of_Conduct_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..c755346
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Code_of_Conduct_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Contribution_Guidelines_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Contribution_Guidelines_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..f94165b
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Contribution_Guidelines_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Contribution_Guidelines_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Contribution_Guidelines_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..f4b2ed6
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Contribution_Guidelines_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Get_Started_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Get_Started_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..489f7e9
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Get_Started_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Get_Started_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Get_Started_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..efc6f1f
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Contribute_-_Get_Started_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Home_Page_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Home_Page_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..7149655
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Home_Page_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Home_Page_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Home_Page_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..5434f6b
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Home_Page_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Server_Branding_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Server_Branding_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..cf99f05
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Server_Branding_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Server_Branding_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Server_Branding_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..dfc1d42
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Server_Branding_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Summit_2024_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Summit_2024_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..8fdffaa
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Summit_2024_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Summit_2024_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Summit_2024_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..d13fb39
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_More_-_Xen_Summit_2024_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_All_Projects_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_All_Projects_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..48e9830
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_All_Projects_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_All_Projects_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_All_Projects_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..5a751d7
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_All_Projects_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Embedded_and_Automative_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Embedded_and_Automative_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..6c00d60
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Embedded_and_Automative_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Embedded_and_Automative_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Embedded_and_Automative_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..c0ed193
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Embedded_and_Automative_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_HVMI_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_HVMI_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..2a24e09
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_HVMI_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_HVMI_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_HVMI_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..26c882c
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_HVMI_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Hypervisor_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Hypervisor_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..f76c20d
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Hypervisor_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Hypervisor_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Hypervisor_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..e22907e
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Hypervisor_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Mirage_OS_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Mirage_OS_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..e8db6a6
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Mirage_OS_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Mirage_OS_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Mirage_OS_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..bf4bee3
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Mirage_OS_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Unikraft_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Unikraft_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..eb316ce
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Unikraft_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Unikraft_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Unikraft_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..8761365
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Unikraft_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Windows_PV_Drivers_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Windows_PV_Drivers_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..418d3ed
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Windows_PV_Drivers_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Windows_PV_Drivers_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Windows_PV_Drivers_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..5f9f4bc
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_Windows_PV_Drivers_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XAPI_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XAPI_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..4d82add
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XAPI_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XAPI_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XAPI_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..133d2a0
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XAPI_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XCP-ng_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XCP-ng_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..f587344
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XCP-ng_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XCP-ng_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XCP-ng_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..5fb0a41
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Projects_-_XCP-ng_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Downloads_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Downloads_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..698a6bb
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Downloads_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Downloads_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Downloads_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..05bebb4
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Downloads_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Mailing_Lists_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Mailing_Lists_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..05711f6
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Mailing_Lists_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Mailing_Lists_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Mailing_Lists_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..faf3b42
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Mailing_Lists_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Matrix_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Matrix_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..dfa0ed9
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Matrix_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Matrix_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Matrix_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..e52b52f
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Matrix_0_document_1_phone.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Use_Cases_0_document_0_desktop.png b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Use_Cases_0_document_0_desktop.png
new file mode 100644 (file)
index 0000000..ce2765d
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Use_Cases_0_document_0_desktop.png differ
diff --git a/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Use_Cases_0_document_1_phone.png b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Use_Cases_0_document_1_phone.png
new file mode 100644 (file)
index 0000000..646f395
Binary files /dev/null and b/tests/backstop_data/bitmaps_reference/Xen-project_Resources_-_Use_Cases_0_document_1_phone.png differ
diff --git a/tests/backstop_data/engine_scripts/cookies.json b/tests/backstop_data/engine_scripts/cookies.json
new file mode 100644 (file)
index 0000000..4123a5d
--- /dev/null
@@ -0,0 +1,14 @@
+[
+  {
+    "domain": ".www.yourdomain.com",
+    "path": "/",
+    "name": "yourCookieName",
+    "value": "yourCookieValue",
+    "expirationDate": 1798790400,
+    "hostOnly": false,
+    "httpOnly": false,
+    "secure": false,
+    "session": false,
+    "sameSite": "Lax"
+  }
+]
diff --git a/tests/backstop_data/engine_scripts/imageStub.jpg b/tests/backstop_data/engine_scripts/imageStub.jpg
new file mode 100644 (file)
index 0000000..3e526b4
Binary files /dev/null and b/tests/backstop_data/engine_scripts/imageStub.jpg differ
diff --git a/tests/backstop_data/engine_scripts/playwright/clickAndHoverHelper.js b/tests/backstop_data/engine_scripts/playwright/clickAndHoverHelper.js
new file mode 100644 (file)
index 0000000..8a0e8f0
--- /dev/null
@@ -0,0 +1,43 @@
+module.exports = async (page, scenario) => {
+  const hoverSelector = scenario.hoverSelectors || scenario.hoverSelector;
+  const clickSelector = scenario.clickSelectors || scenario.clickSelector;
+  const keyPressSelector = scenario.keyPressSelectors || scenario.keyPressSelector;
+  const scrollToSelector = scenario.scrollToSelector;
+  const postInteractionWait = scenario.postInteractionWait; // selector [str] | ms [int]
+
+  if (keyPressSelector) {
+    for (const keyPressSelectorItem of [].concat(keyPressSelector)) {
+      await page.waitForSelector(keyPressSelectorItem.selector);
+      await page.type(keyPressSelectorItem.selector, keyPressSelectorItem.keyPress);
+    }
+  }
+
+  if (hoverSelector) {
+    for (const hoverSelectorIndex of [].concat(hoverSelector)) {
+      await page.waitForSelector(hoverSelectorIndex);
+      await page.hover(hoverSelectorIndex);
+    }
+  }
+
+  if (clickSelector) {
+    for (const clickSelectorIndex of [].concat(clickSelector)) {
+      await page.waitForSelector(clickSelectorIndex);
+      await page.click(clickSelectorIndex);
+    }
+  }
+
+  if (postInteractionWait) {
+    if (parseInt(postInteractionWait) > 0) {
+      await page.waitForTimeout(postInteractionWait);
+    } else {
+      await page.waitForSelector(postInteractionWait);
+    }
+  }
+
+  if (scrollToSelector) {
+    await page.waitForSelector(scrollToSelector);
+    await page.evaluate(scrollToSelector => {
+      document.querySelector(scrollToSelector).scrollIntoView();
+    }, scrollToSelector);
+  }
+};
diff --git a/tests/backstop_data/engine_scripts/playwright/interceptImages.js b/tests/backstop_data/engine_scripts/playwright/interceptImages.js
new file mode 100644 (file)
index 0000000..4077e76
--- /dev/null
@@ -0,0 +1,31 @@
+/**
+ * INTERCEPT IMAGES
+ * Listen to all requests. If a request matches IMAGE_URL_RE
+ * then stub the image with data from IMAGE_STUB_URL
+ *
+ * Use this in an onBefore script E.G.
+  ```
+  module.exports = async function(page, scenario) {
+    require('./interceptImages')(page, scenario);
+  }
+  ```
+ *
+ */
+
+const fs = require('fs');
+const path = require('path');
+
+const IMAGE_URL_RE = /\.gif|\.jpg|\.png/i;
+const IMAGE_STUB_URL = path.resolve(__dirname, '../../imageStub.jpg');
+const IMAGE_DATA_BUFFER = fs.readFileSync(IMAGE_STUB_URL);
+const HEADERS_STUB = {};
+
+module.exports = async function (page, scenario) {
+  page.route(IMAGE_URL_RE, route => {
+    route.fulfill({
+      body: IMAGE_DATA_BUFFER,
+      headers: HEADERS_STUB,
+      status: 200
+    });
+  });
+};
diff --git a/tests/backstop_data/engine_scripts/playwright/loadCookies.js b/tests/backstop_data/engine_scripts/playwright/loadCookies.js
new file mode 100644 (file)
index 0000000..6a9044e
--- /dev/null
@@ -0,0 +1,16 @@
+const fs = require('fs');
+
+module.exports = async (browserContext, scenario) => {
+  let cookies = [];
+  const cookiePath = scenario.cookiePath;
+
+  // Read Cookies from File, if exists
+  if (fs.existsSync(cookiePath)) {
+    cookies = JSON.parse(fs.readFileSync(cookiePath));
+  }
+
+  // Add cookies to browser
+  browserContext.addCookies(cookies);
+
+  console.log('Cookie state restored with:', JSON.stringify(cookies, null, 2));
+};
diff --git a/tests/backstop_data/engine_scripts/playwright/onBefore.js b/tests/backstop_data/engine_scripts/playwright/onBefore.js
new file mode 100644 (file)
index 0000000..f163c2d
--- /dev/null
@@ -0,0 +1,3 @@
+module.exports = async (page, scenario, viewport, isReference, browserContext) => {
+  await require('./loadCookies')(browserContext, scenario);
+};
diff --git a/tests/backstop_data/engine_scripts/playwright/onReady.js b/tests/backstop_data/engine_scripts/playwright/onReady.js
new file mode 100644 (file)
index 0000000..a944d91
--- /dev/null
@@ -0,0 +1,6 @@
+module.exports = async (page, scenario, viewport, isReference, browserContext) => {
+  console.log('SCENARIO > ' + scenario.label);
+  await require('./clickAndHoverHelper')(page, scenario);
+
+  // add more ready handlers here...
+};
diff --git a/tests/backstop_data/engine_scripts/playwright/overrideCSS.js b/tests/backstop_data/engine_scripts/playwright/overrideCSS.js
new file mode 100644 (file)
index 0000000..a61cbef
--- /dev/null
@@ -0,0 +1,27 @@
+/**
+ * OVERRIDE CSS
+ * Apply this CSS to the loaded page, as a way to override styles.
+ *
+ * Use this in an onReady script E.G.
+  ```
+  module.exports = async function(page, scenario) {
+    await require('./overrideCSS')(page, scenario);
+  }
+  ```
+ *
+ */
+
+const BACKSTOP_TEST_CSS_OVERRIDE = `
+  html {
+    background-image: none;
+  }
+`;
+
+module.exports = async (page, scenario) => {
+  // inject arbitrary css to override styles
+  await page.addStyleTag({
+    content: BACKSTOP_TEST_CSS_OVERRIDE
+  });
+
+  console.log('BACKSTOP_TEST_CSS_OVERRIDE injected for: ' + scenario.label);
+};
diff --git a/tests/backstop_data/engine_scripts/puppet/clickAndHoverHelper.js b/tests/backstop_data/engine_scripts/puppet/clickAndHoverHelper.js
new file mode 100644 (file)
index 0000000..d848fcf
--- /dev/null
@@ -0,0 +1,39 @@
+module.exports = async (page, scenario) => {
+  const hoverSelector = scenario.hoverSelectors || scenario.hoverSelector;
+  const clickSelector = scenario.clickSelectors || scenario.clickSelector;
+  const keyPressSelector = scenario.keyPressSelectors || scenario.keyPressSelector;
+  const scrollToSelector = scenario.scrollToSelector;
+  const postInteractionWait = scenario.postInteractionWait; // selector [str] | ms [int]
+
+  if (keyPressSelector) {
+    for (const keyPressSelectorItem of [].concat(keyPressSelector)) {
+      await page.waitForSelector(keyPressSelectorItem.selector);
+      await page.type(keyPressSelectorItem.selector, keyPressSelectorItem.keyPress);
+    }
+  }
+
+  if (hoverSelector) {
+    for (const hoverSelectorIndex of [].concat(hoverSelector)) {
+      await page.waitForSelector(hoverSelectorIndex);
+      await page.hover(hoverSelectorIndex);
+    }
+  }
+
+  if (clickSelector) {
+    for (const clickSelectorIndex of [].concat(clickSelector)) {
+      await page.waitForSelector(clickSelectorIndex);
+      await page.click(clickSelectorIndex);
+    }
+  }
+
+  if (postInteractionWait) {
+    await page.waitForTimeout(postInteractionWait);
+  }
+
+  if (scrollToSelector) {
+    await page.waitForSelector(scrollToSelector);
+    await page.evaluate(scrollToSelector => {
+      document.querySelector(scrollToSelector).scrollIntoView();
+    }, scrollToSelector);
+  }
+};
diff --git a/tests/backstop_data/engine_scripts/puppet/ignoreCSP.js b/tests/backstop_data/engine_scripts/puppet/ignoreCSP.js
new file mode 100644 (file)
index 0000000..1dea285
--- /dev/null
@@ -0,0 +1,65 @@
+/**
+ * IGNORE CSP HEADERS
+ * Listen to all requests. If a request matches scenario.url
+ * then fetch the request again manually, strip out CSP headers
+ * and respond to the original request without CSP headers.
+ * Allows `ignoreHTTPSErrors: true` BUT... requires `debugWindow: true`
+ *
+ * see https://github.com/GoogleChrome/puppeteer/issues/1229#issuecomment-380133332
+ * this is the workaround until Page.setBypassCSP lands... https://github.com/GoogleChrome/puppeteer/pull/2324
+ *
+ * @param      {REQUEST}  request
+ * @return     {VOID}
+ *
+ * Use this in an onBefore script E.G.
+  ```
+  module.exports = async function(page, scenario) {
+    require('./removeCSP')(page, scenario);
+  }
+  ```
+ *
+ */
+
+const fetch = require('node-fetch');
+const https = require('https');
+const agent = new https.Agent({
+  rejectUnauthorized: false
+});
+
+module.exports = async function (page, scenario) {
+  const intercept = async (request, targetUrl) => {
+    const requestUrl = request.url();
+
+    // FIND TARGET URL REQUEST
+    if (requestUrl === targetUrl) {
+      const cookiesList = await page.cookies(requestUrl);
+      const cookies = cookiesList.map(cookie => `${cookie.name}=${cookie.value}`).join('; ');
+      const headers = Object.assign(request.headers(), { cookie: cookies });
+      const options = {
+        headers,
+        body: request.postData(),
+        method: request.method(),
+        follow: 20,
+        agent
+      };
+
+      const result = await fetch(requestUrl, options);
+
+      const buffer = await result.buffer();
+      const cleanedHeaders = result.headers._headers || {};
+      cleanedHeaders['content-security-policy'] = '';
+      await request.respond({
+        body: buffer,
+        headers: cleanedHeaders,
+        status: result.status
+      });
+    } else {
+      request.continue();
+    }
+  };
+
+  await page.setRequestInterception(true);
+  page.on('request', req => {
+    intercept(req, scenario.url);
+  });
+};
diff --git a/tests/backstop_data/engine_scripts/puppet/interceptImages.js b/tests/backstop_data/engine_scripts/puppet/interceptImages.js
new file mode 100644 (file)
index 0000000..2b02be9
--- /dev/null
@@ -0,0 +1,37 @@
+/**
+ * INTERCEPT IMAGES
+ * Listen to all requests. If a request matches IMAGE_URL_RE
+ * then stub the image with data from IMAGE_STUB_URL
+ *
+ * Use this in an onBefore script E.G.
+  ```
+  module.exports = async function(page, scenario) {
+    require('./interceptImages')(page, scenario);
+  }
+  ```
+ *
+ */
+
+const fs = require('fs');
+const path = require('path');
+
+const IMAGE_URL_RE = /\.gif|\.jpg|\.png/i;
+const IMAGE_STUB_URL = path.resolve(__dirname, '../imageStub.jpg');
+const IMAGE_DATA_BUFFER = fs.readFileSync(IMAGE_STUB_URL);
+const HEADERS_STUB = {};
+
+module.exports = async function (page, scenario) {
+  const intercept = async (request, targetUrl) => {
+    if (IMAGE_URL_RE.test(request.url())) {
+      await request.respond({
+        body: IMAGE_DATA_BUFFER,
+        headers: HEADERS_STUB,
+        status: 200
+      });
+    } else {
+      request.continue();
+    }
+  };
+  await page.setRequestInterception(true);
+  page.on('request', intercept);
+};
diff --git a/tests/backstop_data/engine_scripts/puppet/loadCookies.js b/tests/backstop_data/engine_scripts/puppet/loadCookies.js
new file mode 100644 (file)
index 0000000..01570cb
--- /dev/null
@@ -0,0 +1,42 @@
+const fs = require("fs");
+
+module.exports = async (page, scenario) => {
+  let cookies = [];
+  const cookiePath = scenario.cookiePath;
+
+  // READ COOKIES FROM FILE IF EXISTS
+  if (fs.existsSync(cookiePath)) {
+    cookies = JSON.parse(fs.readFileSync(cookiePath));
+  }
+
+  // MUNGE COOKIE DOMAIN
+  cookies = cookies.map((cookie) => {
+    if (cookie.domain.startsWith("http://") || cookie.domain.startsWith("https://")) {
+      cookie.url = cookie.domain;
+    } else {
+      cookie.url = "https://" + cookie.domain;
+    }
+    delete cookie.domain;
+    return cookie;
+  });
+
+  console.log("cookies", cookies);
+
+  // SET COOKIES
+  const setCookies = async () => {
+    return Promise.all(
+      cookies.map(async (cookie) => {
+        await page.setCookie(cookie);
+      }),
+    );
+  };
+  await setCookies();
+
+  await page.setCookie({
+    name: "mockup",
+    value: "disabled",
+    url: "http://localhost:1313",
+  });
+
+  console.log("Cookie state restored with:", JSON.stringify(cookies, null, 2));
+};
diff --git a/tests/backstop_data/engine_scripts/puppet/onBefore.js b/tests/backstop_data/engine_scripts/puppet/onBefore.js
new file mode 100644 (file)
index 0000000..a1c374c
--- /dev/null
@@ -0,0 +1,3 @@
+module.exports = async (page, scenario, vp) => {
+  await require('./loadCookies')(page, scenario);
+};
diff --git a/tests/backstop_data/engine_scripts/puppet/onReady.js b/tests/backstop_data/engine_scripts/puppet/onReady.js
new file mode 100644 (file)
index 0000000..517c0e4
--- /dev/null
@@ -0,0 +1,6 @@
+module.exports = async (page, scenario, vp) => {
+  console.log('SCENARIO > ' + scenario.label);
+  await require('./clickAndHoverHelper')(page, scenario);
+
+  // add more ready handlers here...
+};
diff --git a/tests/backstop_data/engine_scripts/puppet/overrideCSS.js b/tests/backstop_data/engine_scripts/puppet/overrideCSS.js
new file mode 100644 (file)
index 0000000..d568205
--- /dev/null
@@ -0,0 +1,15 @@
+const BACKSTOP_TEST_CSS_OVERRIDE = 'html {background-image: none;}';
+
+module.exports = async (page, scenario) => {
+  // inject arbitrary css to override styles
+  await page.evaluate(`window._styleData = '${BACKSTOP_TEST_CSS_OVERRIDE}'`);
+  await page.evaluate(() => {
+    const style = document.createElement('style');
+    style.type = 'text/css';
+    const styleNode = document.createTextNode(window._styleData);
+    style.appendChild(styleNode);
+    document.head.appendChild(style);
+  });
+
+  console.log('BACKSTOP_TEST_CSS_OVERRIDE injected for: ' + scenario.label);
+};
diff --git a/tests/package-lock.json b/tests/package-lock.json
new file mode 100644 (file)
index 0000000..e91c0e6
--- /dev/null
@@ -0,0 +1,6323 @@
+{
+  "name": "tests",
+  "version": "1.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "tests",
+      "version": "1.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "7zip-min": "^1.4.5",
+        "backstop-crawl": "^2.3.1",
+        "backstopjs": "^6.3.23",
+        "sharp": "^0.33.5"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+      "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/highlight": "^7.24.7",
+        "picocolors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+      "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+      "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.24.7",
+        "chalk": "^2.4.2",
+        "js-tokens": "^4.0.0",
+        "picocolors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "license": "MIT"
+    },
+    "node_modules/@babel/highlight/node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@emnapi/runtime": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz",
+      "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "tslib": "^2.4.0"
+      }
+    },
+    "node_modules/@img/sharp-darwin-arm64": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz",
+      "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-darwin-arm64": "1.0.4"
+      }
+    },
+    "node_modules/@img/sharp-darwin-x64": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz",
+      "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-darwin-x64": "1.0.4"
+      }
+    },
+    "node_modules/@img/sharp-libvips-darwin-arm64": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz",
+      "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==",
+      "cpu": [
+        "arm64"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-darwin-x64": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz",
+      "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linux-arm": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz",
+      "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==",
+      "cpu": [
+        "arm"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linux-arm64": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz",
+      "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==",
+      "cpu": [
+        "arm64"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linux-s390x": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz",
+      "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==",
+      "cpu": [
+        "s390x"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linux-x64": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz",
+      "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz",
+      "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==",
+      "cpu": [
+        "arm64"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz",
+      "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-linux-arm": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz",
+      "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==",
+      "cpu": [
+        "arm"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linux-arm": "1.0.5"
+      }
+    },
+    "node_modules/@img/sharp-linux-arm64": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz",
+      "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==",
+      "cpu": [
+        "arm64"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linux-arm64": "1.0.4"
+      }
+    },
+    "node_modules/@img/sharp-linux-s390x": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz",
+      "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==",
+      "cpu": [
+        "s390x"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linux-s390x": "1.0.4"
+      }
+    },
+    "node_modules/@img/sharp-linux-x64": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz",
+      "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linux-x64": "1.0.4"
+      }
+    },
+    "node_modules/@img/sharp-linuxmusl-arm64": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz",
+      "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==",
+      "cpu": [
+        "arm64"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linuxmusl-arm64": "1.0.4"
+      }
+    },
+    "node_modules/@img/sharp-linuxmusl-x64": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz",
+      "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linuxmusl-x64": "1.0.4"
+      }
+    },
+    "node_modules/@img/sharp-wasm32": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz",
+      "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==",
+      "cpu": [
+        "wasm32"
+      ],
+      "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
+      "optional": true,
+      "dependencies": {
+        "@emnapi/runtime": "^1.2.0"
+      },
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-win32-ia32": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz",
+      "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==",
+      "cpu": [
+        "ia32"
+      ],
+      "license": "Apache-2.0 AND LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-win32-x64": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz",
+      "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "Apache-2.0 AND LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@mirzazeyrek/node-resemble-js": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@mirzazeyrek/node-resemble-js/-/node-resemble-js-1.2.1.tgz",
+      "integrity": "sha512-+z1c7HpC5ysdSVVyUVz67hctVLl337VlRJP/MBwpvXHkKJdlnSUVrBhlRzxgal7xpm1uDE2JeUhWbQh6wPRC4w==",
+      "license": "MIT",
+      "dependencies": {
+        "jpeg-js": "^0.4.2",
+        "pngjs": "^6.0.0"
+      }
+    },
+    "node_modules/@puppeteer/browsers": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz",
+      "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "debug": "^4.3.5",
+        "extract-zip": "^2.0.1",
+        "progress": "^2.0.3",
+        "proxy-agent": "^6.4.0",
+        "semver": "^7.6.3",
+        "tar-fs": "^3.0.6",
+        "unbzip2-stream": "^1.4.3",
+        "yargs": "^17.7.2"
+      },
+      "bin": {
+        "browsers": "lib/cjs/main-cli.js"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@puppeteer/browsers/node_modules/debug": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@puppeteer/browsers/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "license": "MIT"
+    },
+    "node_modules/@tootallnate/quickjs-emscripten": {
+      "version": "0.23.0",
+      "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
+      "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
+      "license": "MIT"
+    },
+    "node_modules/@types/node": {
+      "version": "22.5.1",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.1.tgz",
+      "integrity": "sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "undici-types": "~6.19.2"
+      }
+    },
+    "node_modules/@types/yauzl": {
+      "version": "2.10.3",
+      "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+      "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/7zip-bin": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz",
+      "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==",
+      "license": "MIT"
+    },
+    "node_modules/7zip-min": {
+      "version": "1.4.5",
+      "resolved": "https://registry.npmjs.org/7zip-min/-/7zip-min-1.4.5.tgz",
+      "integrity": "sha512-S+FzNwJFKF5LgQYs+hPQo+qeffdi+259Ak63rWEfkHP9arsU8gbe5K+4HscuWN1ih1lP1gTjDNPddbU0qhPtHQ==",
+      "license": "MIT",
+      "dependencies": {
+        "7zip-bin": "5.1.1"
+      }
+    },
+    "node_modules/accepts": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+      "license": "MIT",
+      "dependencies": {
+        "mime-types": "~2.1.34",
+        "negotiator": "0.6.3"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/agent-base": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+      "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^4.3.4"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/agent-base/node_modules/debug": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/agent-base/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "license": "MIT"
+    },
+    "node_modules/aggregate-error": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+      "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+      "license": "MIT",
+      "dependencies": {
+        "clean-stack": "^2.0.0",
+        "indent-string": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-align": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+      "integrity": "sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==",
+      "license": "ISC",
+      "dependencies": {
+        "string-width": "^2.0.0"
+      }
+    },
+    "node_modules/ansi-align/node_modules/ansi-regex": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+      "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ansi-align/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ansi-align/node_modules/string-width": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+      "license": "MIT",
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ansi-align/node_modules/strip-ansi": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+      "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "license": "Python-2.0"
+    },
+    "node_modules/array-buffer-byte-length": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+      "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.5",
+        "is-array-buffer": "^3.0.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/array-find-index": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+      "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-flatten": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+      "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+      "license": "MIT"
+    },
+    "node_modules/arraybuffer.prototype.slice": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+      "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+      "license": "MIT",
+      "dependencies": {
+        "array-buffer-byte-length": "^1.0.1",
+        "call-bind": "^1.0.5",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.22.3",
+        "es-errors": "^1.2.1",
+        "get-intrinsic": "^1.2.3",
+        "is-array-buffer": "^3.0.4",
+        "is-shared-array-buffer": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/ast-types": {
+      "version": "0.13.4",
+      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+      "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+      "license": "MIT",
+      "dependencies": {
+        "tslib": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/async": {
+      "version": "2.6.4",
+      "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
+      "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
+      "license": "MIT",
+      "dependencies": {
+        "lodash": "^4.17.14"
+      }
+    },
+    "node_modules/available-typed-arrays": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+      "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+      "license": "MIT",
+      "dependencies": {
+        "possible-typed-array-names": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/b4a": {
+      "version": "1.6.6",
+      "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
+      "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==",
+      "license": "Apache-2.0"
+    },
+    "node_modules/backstop-crawl": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/backstop-crawl/-/backstop-crawl-2.3.1.tgz",
+      "integrity": "sha512-8sffvt2a+gyS/IHMBIz2P40kkUYpuUY0kaHVbnycJ4S0zkvtUpum1HfreICBj9cbASs7MA00BSVQn21e+BPC1w==",
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "1.1.3",
+        "cheerio": "^1.0.0-rc.2",
+        "cli-truncate": "1.0.0",
+        "jsonfile": "^3.0.0",
+        "meow": "3.7.0",
+        "mkpath": "1.0.0",
+        "normalize-url": "^1.9.1",
+        "object.entries": "1.0.4",
+        "ora": "^1.3.0",
+        "simplecrawler": "^1.1.3",
+        "update-notifier": "^2.2.0",
+        "url-parse": "^1.1.9",
+        "valid-url": "1.0.9"
+      },
+      "bin": {
+        "backstop-crawl": "index.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/backstop-crawl/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+      "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/backstop-crawl/node_modules/ansi-styles": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+      "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/backstop-crawl/node_modules/chalk": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+      "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^2.2.1",
+        "escape-string-regexp": "^1.0.2",
+        "has-ansi": "^2.0.0",
+        "strip-ansi": "^3.0.0",
+        "supports-color": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/backstop-crawl/node_modules/jsonfile": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz",
+      "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==",
+      "license": "MIT",
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "node_modules/backstop-crawl/node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+      "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/backstop-crawl/node_modules/supports-color": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+      "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/backstopjs": {
+      "version": "6.3.23",
+      "resolved": "https://registry.npmjs.org/backstopjs/-/backstopjs-6.3.23.tgz",
+      "integrity": "sha512-GRSth3jEWI0goJ5ETA+D6QsK7ZZi0+qvZ0AAroGoLODCb20Y7NG3gc0Egnf4Qdrqg4D+seJHVjfZwqm3nuYqZg==",
+      "license": "MIT",
+      "dependencies": {
+        "@mirzazeyrek/node-resemble-js": "^1.2.1",
+        "chalk": "^4.1.2",
+        "diverged": "^0.1.3",
+        "fs-extra": "^11.2.0",
+        "jump.js": "^1.0.2",
+        "junit-report-builder": "^3.1.0",
+        "lodash": "^4.17.21",
+        "minimist": "^1.2.8",
+        "object-hash": "3.0.0",
+        "opn": "^6.0.0",
+        "os": "^0.1.2",
+        "p-map": "^4.0.0",
+        "path": "^0.12.7",
+        "playwright": "^1.40.1",
+        "portfinder": "^1.0.32",
+        "puppeteer": "^22.1.0",
+        "super-simple-web-server": "^1.1.4",
+        "temp": "^0.9.4"
+      },
+      "bin": {
+        "backstop": "cli/index.js"
+      },
+      "engines": {
+        "node": ">=16.0.0 <=20.x.x",
+        "npm": ">=8.0.0"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "license": "MIT"
+    },
+    "node_modules/bare-events": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz",
+      "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==",
+      "license": "Apache-2.0",
+      "optional": true
+    },
+    "node_modules/bare-fs": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.2.tgz",
+      "integrity": "sha512-Kcq/FG3lhspzGHK+Q0IMfImuFOmaW/jFofBAUJuuG7H67879JeaPUppUHhgLjJKenfxiO6Ix2AGSd47Pf7mRxg==",
+      "license": "Apache-2.0",
+      "optional": true,
+      "dependencies": {
+        "bare-events": "^2.0.0",
+        "bare-path": "^2.0.0",
+        "bare-stream": "^2.0.0"
+      }
+    },
+    "node_modules/bare-os": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.1.tgz",
+      "integrity": "sha512-yQC/blMP/eUdULsF7hrcC9tUFXlUmAWRbSQndEln77nOIh/N4Loaqch/MA4hyoDKhw1Zd1Wj+uLV/bT6lC/4BQ==",
+      "license": "Apache-2.0",
+      "optional": true
+    },
+    "node_modules/bare-path": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz",
+      "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==",
+      "license": "Apache-2.0",
+      "optional": true,
+      "dependencies": {
+        "bare-os": "^2.1.0"
+      }
+    },
+    "node_modules/bare-stream": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.2.0.tgz",
+      "integrity": "sha512-+o9MG5bPRRBlkVSpfFlMag3n7wMaIZb4YZasU2+/96f+3HTQ4F9DKQeu3K/Sjz1W0umu6xvVq1ON0ipWdMlr3A==",
+      "license": "Apache-2.0",
+      "optional": true,
+      "dependencies": {
+        "streamx": "^2.18.0"
+      }
+    },
+    "node_modules/base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/basic-ftp": {
+      "version": "5.0.5",
+      "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz",
+      "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "node_modules/body-parser": {
+      "version": "1.20.2",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+      "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+      "license": "MIT",
+      "dependencies": {
+        "bytes": "3.1.2",
+        "content-type": "~1.0.5",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "on-finished": "2.4.1",
+        "qs": "6.11.0",
+        "raw-body": "2.5.2",
+        "type-is": "~1.6.18",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
+    "node_modules/body-parser/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/body-parser/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+      "license": "MIT"
+    },
+    "node_modules/boolbase": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+      "license": "ISC"
+    },
+    "node_modules/boxen": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+      "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-align": "^2.0.0",
+        "camelcase": "^4.0.0",
+        "chalk": "^2.0.1",
+        "cli-boxes": "^1.0.0",
+        "string-width": "^2.0.0",
+        "term-size": "^1.2.0",
+        "widest-line": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/boxen/node_modules/ansi-regex": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+      "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/boxen/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/boxen/node_modules/camelcase": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+      "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/boxen/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/boxen/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/boxen/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "license": "MIT"
+    },
+    "node_modules/boxen/node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/boxen/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/boxen/node_modules/string-width": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+      "license": "MIT",
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/boxen/node_modules/strip-ansi": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+      "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/boxen/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/buffer": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.1.13"
+      }
+    },
+    "node_modules/buffer-crc32": {
+      "version": "0.2.13",
+      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+      "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/bytes": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+      "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+      "license": "MIT",
+      "dependencies": {
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.4",
+        "set-function-length": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/camelcase": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+      "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/camelcase-keys": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+      "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==",
+      "license": "MIT",
+      "dependencies": {
+        "camelcase": "^2.0.0",
+        "map-obj": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/capture-stack-trace": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz",
+      "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/cheerio": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz",
+      "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==",
+      "license": "MIT",
+      "dependencies": {
+        "cheerio-select": "^2.1.0",
+        "dom-serializer": "^2.0.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.1.0",
+        "encoding-sniffer": "^0.2.0",
+        "htmlparser2": "^9.1.0",
+        "parse5": "^7.1.2",
+        "parse5-htmlparser2-tree-adapter": "^7.0.0",
+        "parse5-parser-stream": "^7.1.2",
+        "undici": "^6.19.5",
+        "whatwg-mimetype": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=18.17"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+      }
+    },
+    "node_modules/cheerio-select": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
+      "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-select": "^5.1.0",
+        "css-what": "^6.1.0",
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/chromium-bidi": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz",
+      "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "mitt": "3.0.1",
+        "urlpattern-polyfill": "10.0.0",
+        "zod": "3.23.8"
+      },
+      "peerDependencies": {
+        "devtools-protocol": "*"
+      }
+    },
+    "node_modules/ci-info": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
+      "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
+      "license": "MIT"
+    },
+    "node_modules/clean-stack": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+      "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/cli-boxes": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+      "integrity": "sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/cli-cursor": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+      "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
+      "license": "MIT",
+      "dependencies": {
+        "restore-cursor": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cli-spinners": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz",
+      "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cli-truncate": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.0.0.tgz",
+      "integrity": "sha512-+cxMUt7b2i8DsiH5gfBw2YDiLKzQaYLR1hFQHqA7Jdr3IIbTzfmAXKiJ/T/GKJTTWsE/elHHuWXU34FPZjH6AQ==",
+      "license": "MIT",
+      "dependencies": {
+        "slice-ansi": "0.0.4",
+        "string-width": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cli-truncate/node_modules/ansi-regex": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+      "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cli-truncate/node_modules/string-width": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+      "license": "MIT",
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cli-truncate/node_modules/strip-ansi": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+      "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cliui": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+      "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+      "license": "ISC",
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.1",
+        "wrap-ansi": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/color": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+      "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1",
+        "color-string": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=12.5.0"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "license": "MIT"
+    },
+    "node_modules/color-string": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+      "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "license": "MIT"
+    },
+    "node_modules/configstore": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz",
+      "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "dot-prop": "^4.2.1",
+        "graceful-fs": "^4.1.2",
+        "make-dir": "^1.0.0",
+        "unique-string": "^1.0.0",
+        "write-file-atomic": "^2.0.0",
+        "xdg-basedir": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/configstore/node_modules/make-dir": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+      "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+      "license": "MIT",
+      "dependencies": {
+        "pify": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/configstore/node_modules/pify": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+      "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/content-disposition": {
+      "version": "0.5.4",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+      "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "5.2.1"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/content-type": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+      "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+      "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+      "license": "MIT"
+    },
+    "node_modules/cosmiconfig": {
+      "version": "9.0.0",
+      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
+      "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
+      "license": "MIT",
+      "dependencies": {
+        "env-paths": "^2.2.1",
+        "import-fresh": "^3.3.0",
+        "js-yaml": "^4.1.0",
+        "parse-json": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/d-fischer"
+      },
+      "peerDependencies": {
+        "typescript": ">=4.9.5"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/create-error-class": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+      "integrity": "sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==",
+      "license": "MIT",
+      "dependencies": {
+        "capture-stack-trace": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/cross-spawn": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+      "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
+      "license": "MIT",
+      "dependencies": {
+        "lru-cache": "^4.0.1",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      }
+    },
+    "node_modules/cross-spawn/node_modules/lru-cache": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+      "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+      "license": "ISC",
+      "dependencies": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "node_modules/crypto-random-string": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+      "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/css-select": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+      "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-what": "^6.1.0",
+        "domhandler": "^5.0.2",
+        "domutils": "^3.0.1",
+        "nth-check": "^2.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/css-what": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+      "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">= 6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/currently-unhandled": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+      "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==",
+      "license": "MIT",
+      "dependencies": {
+        "array-find-index": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/data-uri-to-buffer": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
+      "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/data-view-buffer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+      "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "es-errors": "^1.3.0",
+        "is-data-view": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/data-view-byte-length": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+      "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "es-errors": "^1.3.0",
+        "is-data-view": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/data-view-byte-offset": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+      "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "es-errors": "^1.3.0",
+        "is-data-view": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/date-format": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.3.tgz",
+      "integrity": "sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/debug": {
+      "version": "3.2.7",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/deep-extend": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/define-data-property": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+      "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+      "license": "MIT",
+      "dependencies": {
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "gopd": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/define-properties": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+      "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+      "license": "MIT",
+      "dependencies": {
+        "define-data-property": "^1.0.1",
+        "has-property-descriptors": "^1.0.0",
+        "object-keys": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/degenerator": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
+      "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+      "license": "MIT",
+      "dependencies": {
+        "ast-types": "^0.13.4",
+        "escodegen": "^2.1.0",
+        "esprima": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/depd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/destroy": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
+    "node_modules/detect-libc": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+      "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/devtools-protocol": {
+      "version": "0.0.1312386",
+      "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz",
+      "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/diff": {
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+      "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.3.1"
+      }
+    },
+    "node_modules/diverged": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/diverged/-/diverged-0.1.3.tgz",
+      "integrity": "sha512-W8BLyp4Eo+YW9uQ3F5c9BXDT9ITCARA2CFQVb+v57FWYfkr0XjwNOASZacDCq+syk1i/obZ4BZ3w1qtlRO6hQw==",
+      "license": "ISC",
+      "dependencies": {
+        "diff": "^3.5.0",
+        "pixelmatch": "^4.0.2",
+        "pngjs": "^3.3.3",
+        "super-simple-web-server": "^1.0.0"
+      }
+    },
+    "node_modules/diverged/node_modules/pngjs": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+      "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/dom-serializer": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+      "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+      "license": "MIT",
+      "dependencies": {
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.2",
+        "entities": "^4.2.0"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+      }
+    },
+    "node_modules/domelementtype": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/domhandler": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+      "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "domelementtype": "^2.3.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domhandler?sponsor=1"
+      }
+    },
+    "node_modules/domutils": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+      "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "dom-serializer": "^2.0.0",
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domutils?sponsor=1"
+      }
+    },
+    "node_modules/dot-prop": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
+      "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
+      "license": "MIT",
+      "dependencies": {
+        "is-obj": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/duplexer3": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
+      "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+      "license": "MIT"
+    },
+    "node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "license": "MIT"
+    },
+    "node_modules/encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/encoding-sniffer": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz",
+      "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==",
+      "license": "MIT",
+      "dependencies": {
+        "iconv-lite": "^0.6.3",
+        "whatwg-encoding": "^3.1.1"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
+      }
+    },
+    "node_modules/encoding-sniffer/node_modules/iconv-lite": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/end-of-stream": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+      "license": "MIT",
+      "dependencies": {
+        "once": "^1.4.0"
+      }
+    },
+    "node_modules/entities": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+      "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=0.12"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/env-paths": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+      "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "license": "MIT",
+      "dependencies": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "node_modules/error-ex/node_modules/is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+      "license": "MIT"
+    },
+    "node_modules/es-abstract": {
+      "version": "1.23.3",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
+      "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+      "license": "MIT",
+      "dependencies": {
+        "array-buffer-byte-length": "^1.0.1",
+        "arraybuffer.prototype.slice": "^1.0.3",
+        "available-typed-arrays": "^1.0.7",
+        "call-bind": "^1.0.7",
+        "data-view-buffer": "^1.0.1",
+        "data-view-byte-length": "^1.0.1",
+        "data-view-byte-offset": "^1.0.0",
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "es-object-atoms": "^1.0.0",
+        "es-set-tostringtag": "^2.0.3",
+        "es-to-primitive": "^1.2.1",
+        "function.prototype.name": "^1.1.6",
+        "get-intrinsic": "^1.2.4",
+        "get-symbol-description": "^1.0.2",
+        "globalthis": "^1.0.3",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.2",
+        "has-proto": "^1.0.3",
+        "has-symbols": "^1.0.3",
+        "hasown": "^2.0.2",
+        "internal-slot": "^1.0.7",
+        "is-array-buffer": "^3.0.4",
+        "is-callable": "^1.2.7",
+        "is-data-view": "^1.0.1",
+        "is-negative-zero": "^2.0.3",
+        "is-regex": "^1.1.4",
+        "is-shared-array-buffer": "^1.0.3",
+        "is-string": "^1.0.7",
+        "is-typed-array": "^1.1.13",
+        "is-weakref": "^1.0.2",
+        "object-inspect": "^1.13.1",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.5",
+        "regexp.prototype.flags": "^1.5.2",
+        "safe-array-concat": "^1.1.2",
+        "safe-regex-test": "^1.0.3",
+        "string.prototype.trim": "^1.2.9",
+        "string.prototype.trimend": "^1.0.8",
+        "string.prototype.trimstart": "^1.0.8",
+        "typed-array-buffer": "^1.0.2",
+        "typed-array-byte-length": "^1.0.1",
+        "typed-array-byte-offset": "^1.0.2",
+        "typed-array-length": "^1.0.6",
+        "unbox-primitive": "^1.0.2",
+        "which-typed-array": "^1.1.15"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/es-define-property": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+      "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+      "license": "MIT",
+      "dependencies": {
+        "get-intrinsic": "^1.2.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-errors": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-object-atoms": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+      "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+      "license": "MIT",
+      "dependencies": {
+        "es-errors": "^1.3.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-set-tostringtag": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+      "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+      "license": "MIT",
+      "dependencies": {
+        "get-intrinsic": "^1.2.4",
+        "has-tostringtag": "^1.0.2",
+        "hasown": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-to-primitive": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+      "license": "MIT",
+      "dependencies": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/escalade": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+      "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+      "license": "MIT"
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/escodegen": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+      "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "esprima": "^4.0.1",
+        "estraverse": "^5.2.0",
+        "esutils": "^2.0.2"
+      },
+      "bin": {
+        "escodegen": "bin/escodegen.js",
+        "esgenerate": "bin/esgenerate.js"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "optionalDependencies": {
+        "source-map": "~0.6.1"
+      }
+    },
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "license": "BSD-2-Clause",
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/execa": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+      "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==",
+      "license": "MIT",
+      "dependencies": {
+        "cross-spawn": "^5.0.1",
+        "get-stream": "^3.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/execa/node_modules/get-stream": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+      "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/express": {
+      "version": "4.19.2",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
+      "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
+      "license": "MIT",
+      "dependencies": {
+        "accepts": "~1.3.8",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.20.2",
+        "content-disposition": "0.5.4",
+        "content-type": "~1.0.4",
+        "cookie": "0.6.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "1.2.0",
+        "fresh": "0.5.2",
+        "http-errors": "2.0.0",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "2.4.1",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.7",
+        "qs": "6.11.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.2.1",
+        "send": "0.18.0",
+        "serve-static": "1.15.0",
+        "setprototypeof": "1.2.0",
+        "statuses": "2.0.1",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/express/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/express/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+      "license": "MIT"
+    },
+    "node_modules/extract-zip": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+      "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "debug": "^4.1.1",
+        "get-stream": "^5.1.0",
+        "yauzl": "^2.10.0"
+      },
+      "bin": {
+        "extract-zip": "cli.js"
+      },
+      "engines": {
+        "node": ">= 10.17.0"
+      },
+      "optionalDependencies": {
+        "@types/yauzl": "^2.9.1"
+      }
+    },
+    "node_modules/extract-zip/node_modules/debug": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/extract-zip/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "license": "MIT"
+    },
+    "node_modules/fast-fifo": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+      "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+      "license": "MIT"
+    },
+    "node_modules/fd-slicer": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+      "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+      "license": "MIT",
+      "dependencies": {
+        "pend": "~1.2.0"
+      }
+    },
+    "node_modules/finalhandler": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "2.4.1",
+        "parseurl": "~1.3.3",
+        "statuses": "2.0.1",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/finalhandler/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/finalhandler/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+      "license": "MIT"
+    },
+    "node_modules/find-up": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+      "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
+      "license": "MIT",
+      "dependencies": {
+        "path-exists": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/for-each": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+      "license": "MIT",
+      "dependencies": {
+        "is-callable": "^1.1.3"
+      }
+    },
+    "node_modules/forwarded": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fs-extra": {
+      "version": "11.2.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
+      "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=14.14"
+      }
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "license": "ISC"
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+      "hasInstallScript": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/function.prototype.name": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+      "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1",
+        "functions-have-names": "^1.2.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/functions-have-names": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "license": "ISC",
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+      "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+      "license": "MIT",
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "has-proto": "^1.0.1",
+        "has-symbols": "^1.0.3",
+        "hasown": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-stdin": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+      "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/get-stream": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+      "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+      "license": "MIT",
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/get-symbol-description": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+      "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.5",
+        "es-errors": "^1.3.0",
+        "get-intrinsic": "^1.2.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-uri": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz",
+      "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==",
+      "license": "MIT",
+      "dependencies": {
+        "basic-ftp": "^5.0.2",
+        "data-uri-to-buffer": "^6.0.2",
+        "debug": "^4.3.4",
+        "fs-extra": "^11.2.0"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/get-uri/node_modules/debug": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/get-uri/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "license": "MIT"
+    },
+    "node_modules/glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "deprecated": "Glob versions prior to v9 are no longer supported",
+      "license": "ISC",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/global-dirs": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+      "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==",
+      "license": "MIT",
+      "dependencies": {
+        "ini": "^1.3.4"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/globalthis": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+      "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+      "license": "MIT",
+      "dependencies": {
+        "define-properties": "^1.2.1",
+        "gopd": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/gopd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+      "license": "MIT",
+      "dependencies": {
+        "get-intrinsic": "^1.1.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/got": {
+      "version": "6.7.1",
+      "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+      "integrity": "sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==",
+      "license": "MIT",
+      "dependencies": {
+        "create-error-class": "^3.0.0",
+        "duplexer3": "^0.1.4",
+        "get-stream": "^3.0.0",
+        "is-redirect": "^1.0.0",
+        "is-retry-allowed": "^1.0.0",
+        "is-stream": "^1.0.0",
+        "lowercase-keys": "^1.0.0",
+        "safe-buffer": "^5.0.1",
+        "timed-out": "^4.0.0",
+        "unzip-response": "^2.0.1",
+        "url-parse-lax": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/got/node_modules/get-stream": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+      "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/graceful-fs": {
+      "version": "4.2.11",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+      "license": "ISC"
+    },
+    "node_modules/has": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
+      "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/has-ansi": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+      "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-ansi/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+      "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-bigints": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/has-property-descriptors": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+      "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+      "license": "MIT",
+      "dependencies": {
+        "es-define-property": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-proto": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+      "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-tostringtag": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+      "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+      "license": "MIT",
+      "dependencies": {
+        "has-symbols": "^1.0.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/hasown": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+      "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+      "license": "MIT",
+      "dependencies": {
+        "function-bind": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/hosted-git-info": {
+      "version": "2.8.9",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+      "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+      "license": "ISC"
+    },
+    "node_modules/htmlparser2": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz",
+      "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==",
+      "funding": [
+        "https://github.com/fb55/htmlparser2?sponsor=1",
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.1.0",
+        "entities": "^4.5.0"
+      }
+    },
+    "node_modules/http-errors": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+      "license": "MIT",
+      "dependencies": {
+        "depd": "2.0.0",
+        "inherits": "2.0.4",
+        "setprototypeof": "1.2.0",
+        "statuses": "2.0.1",
+        "toidentifier": "1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/http-proxy-agent": {
+      "version": "7.0.2",
+      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+      "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+      "license": "MIT",
+      "dependencies": {
+        "agent-base": "^7.1.0",
+        "debug": "^4.3.4"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/http-proxy-agent/node_modules/debug": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/http-proxy-agent/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "license": "MIT"
+    },
+    "node_modules/https-proxy-agent": {
+      "version": "7.0.5",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+      "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
+      "license": "MIT",
+      "dependencies": {
+        "agent-base": "^7.0.2",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/https-proxy-agent/node_modules/debug": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/https-proxy-agent/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "license": "MIT"
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+      "license": "MIT",
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/import-lazy": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+      "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/indent-string": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+      "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+      "license": "ISC",
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "license": "ISC"
+    },
+    "node_modules/ini": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+      "license": "ISC"
+    },
+    "node_modules/internal-slot": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+      "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+      "license": "MIT",
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "hasown": "^2.0.0",
+        "side-channel": "^1.0.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/ip-address": {
+      "version": "9.0.5",
+      "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+      "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+      "license": "MIT",
+      "dependencies": {
+        "jsbn": "1.1.0",
+        "sprintf-js": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 12"
+      }
+    },
+    "node_modules/ipaddr.js": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-array-buffer": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+      "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-arrayish": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+      "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+      "license": "MIT"
+    },
+    "node_modules/is-bigint": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+      "license": "MIT",
+      "dependencies": {
+        "has-bigints": "^1.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-boolean-object": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-callable": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-ci": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
+      "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
+      "license": "MIT",
+      "dependencies": {
+        "ci-info": "^1.5.0"
+      },
+      "bin": {
+        "is-ci": "bin.js"
+      }
+    },
+    "node_modules/is-core-module": {
+      "version": "2.15.1",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
+      "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
+      "license": "MIT",
+      "dependencies": {
+        "hasown": "^2.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-data-view": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+      "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+      "license": "MIT",
+      "dependencies": {
+        "is-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-date-object": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+      "license": "MIT",
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-finite": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+      "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-installed-globally": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+      "integrity": "sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==",
+      "license": "MIT",
+      "dependencies": {
+        "global-dirs": "^0.1.0",
+        "is-path-inside": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/is-negative-zero": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+      "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-npm": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+      "integrity": "sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number-object": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+      "license": "MIT",
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-obj": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+      "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-path-inside": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+      "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==",
+      "license": "MIT",
+      "dependencies": {
+        "path-is-inside": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-plain-obj": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+      "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-redirect": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
+      "integrity": "sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-regex": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-retry-allowed": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
+      "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-shared-array-buffer": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+      "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.7"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+      "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-string": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+      "license": "MIT",
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-symbol": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+      "license": "MIT",
+      "dependencies": {
+        "has-symbols": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-typed-array": {
+      "version": "1.1.13",
+      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+      "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+      "license": "MIT",
+      "dependencies": {
+        "which-typed-array": "^1.1.14"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-utf8": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+      "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
+      "license": "MIT"
+    },
+    "node_modules/is-weakref": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+      "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-wsl": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+      "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/isarray": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+      "license": "MIT"
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "license": "ISC"
+    },
+    "node_modules/jpeg-js": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
+      "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "license": "MIT"
+    },
+    "node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "license": "MIT",
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsbn": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+      "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
+      "license": "MIT"
+    },
+    "node_modules/json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+      "license": "MIT"
+    },
+    "node_modules/jsonfile": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+      "license": "MIT",
+      "dependencies": {
+        "universalify": "^2.0.0"
+      },
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "node_modules/jump.js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/jump.js/-/jump.js-1.0.2.tgz",
+      "integrity": "sha512-oUkJJ/Y4ATU5qjkXBntCZSKctbSyS3ewe2jrLaUu/cc9jsQiAn0fnTUxQnZz3mJdDdem1Q279zrD6h3n+Cgxtg==",
+      "license": "MIT"
+    },
+    "node_modules/junit-report-builder": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/junit-report-builder/-/junit-report-builder-3.2.1.tgz",
+      "integrity": "sha512-IMCp5XyDQ4YESDE4Za7im3buM0/7cMnRfe17k2X8B05FnUl9vqnaliX6cgOEmPIeWKfJrEe/gANRq/XgqttCqQ==",
+      "license": "MIT",
+      "dependencies": {
+        "date-format": "4.0.3",
+        "lodash": "^4.17.21",
+        "make-dir": "^3.1.0",
+        "xmlbuilder": "^15.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/latest-version": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+      "integrity": "sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==",
+      "license": "MIT",
+      "dependencies": {
+        "package-json": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/lines-and-columns": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+      "license": "MIT"
+    },
+    "node_modules/load-json-file": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+      "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^2.2.0",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0",
+        "strip-bom": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/load-json-file/node_modules/parse-json": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+      "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
+      "license": "MIT",
+      "dependencies": {
+        "error-ex": "^1.2.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+      "license": "MIT"
+    },
+    "node_modules/log-symbols": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+      "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/log-symbols/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/log-symbols/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/log-symbols/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/log-symbols/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "license": "MIT"
+    },
+    "node_modules/log-symbols/node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/log-symbols/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/loud-rejection": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+      "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==",
+      "license": "MIT",
+      "dependencies": {
+        "currently-unhandled": "^0.4.1",
+        "signal-exit": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/lowercase-keys": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+      "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/lru-cache": {
+      "version": "7.18.3",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+      "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/make-dir": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+      "license": "MIT",
+      "dependencies": {
+        "semver": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/make-dir/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/map-obj": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+      "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/meow": {
+      "version": "3.7.0",
+      "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+      "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==",
+      "license": "MIT",
+      "dependencies": {
+        "camelcase-keys": "^2.0.0",
+        "decamelize": "^1.1.2",
+        "loud-rejection": "^1.0.0",
+        "map-obj": "^1.0.1",
+        "minimist": "^1.1.3",
+        "normalize-package-data": "^2.3.4",
+        "object-assign": "^4.0.1",
+        "read-pkg-up": "^1.0.1",
+        "redent": "^1.0.0",
+        "trim-newlines": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
+      "license": "MIT"
+    },
+    "node_modules/methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "license": "MIT",
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "license": "MIT",
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mimic-fn": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+      "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/mitt": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+      "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+      "license": "MIT"
+    },
+    "node_modules/mkdirp": {
+      "version": "0.5.6",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.6"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/mkpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-1.0.0.tgz",
+      "integrity": "sha512-PbNHr7Y/9Y/2P5pKFv5XOGBfNQqZ+fdiHWcuf7swLACN5ZW5LU7J5tMU8LSBjpluAxAxKYGD9nnaIbdRy9+m1w==",
+      "license": "MIT"
+    },
+    "node_modules/ms": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+      "license": "MIT"
+    },
+    "node_modules/negotiator": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/netmask": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
+      "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/normalize-package-data": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "node_modules/normalize-package-data/node_modules/semver": {
+      "version": "5.7.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/normalize-url": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
+      "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==",
+      "license": "MIT",
+      "dependencies": {
+        "object-assign": "^4.0.1",
+        "prepend-http": "^1.0.0",
+        "query-string": "^4.1.0",
+        "sort-keys": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npm-run-path": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+      "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/nth-check": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/nth-check?sponsor=1"
+      }
+    },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-hash": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+      "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/object-inspect": {
+      "version": "1.13.2",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
+      "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object.assign": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+      "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.5",
+        "define-properties": "^1.2.1",
+        "has-symbols": "^1.0.3",
+        "object-keys": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object.entries": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz",
+      "integrity": "sha512-mGYNJ4IFu7v8qEya1mtMfOlOLE603v+UTSl7fL4yzoTwGXGnMBoxz6WZo0fbWY7PebTd+gdFqAtU4XmNaEHEVg==",
+      "license": "MIT",
+      "dependencies": {
+        "define-properties": "^1.1.2",
+        "es-abstract": "^1.6.1",
+        "function-bind": "^1.1.0",
+        "has": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/on-finished": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+      "license": "MIT",
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "license": "ISC",
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/onetime": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+      "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
+      "license": "MIT",
+      "dependencies": {
+        "mimic-fn": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/opn": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/opn/-/opn-6.0.0.tgz",
+      "integrity": "sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==",
+      "deprecated": "The package has been renamed to `open`",
+      "license": "MIT",
+      "dependencies": {
+        "is-wsl": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ora": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz",
+      "integrity": "sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==",
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^2.1.0",
+        "cli-cursor": "^2.1.0",
+        "cli-spinners": "^1.0.1",
+        "log-symbols": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ora/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ora/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ora/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/ora/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "license": "MIT"
+    },
+    "node_modules/ora/node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ora/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/os": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/os/-/os-0.1.2.tgz",
+      "integrity": "sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ==",
+      "license": "MIT"
+    },
+    "node_modules/p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+      "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/p-map": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+      "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+      "license": "MIT",
+      "dependencies": {
+        "aggregate-error": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/pac-proxy-agent": {
+      "version": "7.0.2",
+      "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz",
+      "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==",
+      "license": "MIT",
+      "dependencies": {
+        "@tootallnate/quickjs-emscripten": "^0.23.0",
+        "agent-base": "^7.0.2",
+        "debug": "^4.3.4",
+        "get-uri": "^6.0.1",
+        "http-proxy-agent": "^7.0.0",
+        "https-proxy-agent": "^7.0.5",
+        "pac-resolver": "^7.0.1",
+        "socks-proxy-agent": "^8.0.4"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/pac-proxy-agent/node_modules/debug": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/pac-proxy-agent/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "license": "MIT"
+    },
+    "node_modules/pac-resolver": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
+      "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
+      "license": "MIT",
+      "dependencies": {
+        "degenerator": "^5.0.0",
+        "netmask": "^2.0.2"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/package-json": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
+      "integrity": "sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA==",
+      "license": "MIT",
+      "dependencies": {
+        "got": "^6.7.1",
+        "registry-auth-token": "^3.0.1",
+        "registry-url": "^3.0.3",
+        "semver": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/package-json/node_modules/semver": {
+      "version": "5.7.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "license": "MIT",
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parse-json": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/parse5": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+      "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+      "license": "MIT",
+      "dependencies": {
+        "entities": "^4.4.0"
+      },
+      "funding": {
+        "url": "https://github.com/inikulin/parse5?sponsor=1"
+      }
+    },
+    "node_modules/parse5-htmlparser2-tree-adapter": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
+      "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
+      "license": "MIT",
+      "dependencies": {
+        "domhandler": "^5.0.2",
+        "parse5": "^7.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/inikulin/parse5?sponsor=1"
+      }
+    },
+    "node_modules/parse5-parser-stream": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
+      "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
+      "license": "MIT",
+      "dependencies": {
+        "parse5": "^7.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/inikulin/parse5?sponsor=1"
+      }
+    },
+    "node_modules/parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/path": {
+      "version": "0.12.7",
+      "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
+      "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==",
+      "license": "MIT",
+      "dependencies": {
+        "process": "^0.11.1",
+        "util": "^0.10.3"
+      }
+    },
+    "node_modules/path-exists": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+      "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
+      "license": "MIT",
+      "dependencies": {
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-is-inside": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+      "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
+      "license": "(WTFPL OR MIT)"
+    },
+    "node_modules/path-key": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "license": "MIT"
+    },
+    "node_modules/path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
+      "license": "MIT"
+    },
+    "node_modules/path-type": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+      "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pend": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+      "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+      "license": "MIT"
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
+      "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
+      "license": "ISC"
+    },
+    "node_modules/pify": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pinkie": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+      "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
+      "license": "MIT",
+      "dependencies": {
+        "pinkie": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pixelmatch": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz",
+      "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==",
+      "license": "ISC",
+      "dependencies": {
+        "pngjs": "^3.0.0"
+      },
+      "bin": {
+        "pixelmatch": "bin/pixelmatch"
+      }
+    },
+    "node_modules/pixelmatch/node_modules/pngjs": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+      "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/playwright": {
+      "version": "1.46.1",
+      "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.46.1.tgz",
+      "integrity": "sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "playwright-core": "1.46.1"
+      },
+      "bin": {
+        "playwright": "cli.js"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "optionalDependencies": {
+        "fsevents": "2.3.2"
+      }
+    },
+    "node_modules/playwright-core": {
+      "version": "1.46.1",
+      "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.46.1.tgz",
+      "integrity": "sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==",
+      "license": "Apache-2.0",
+      "bin": {
+        "playwright-core": "cli.js"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/pngjs": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz",
+      "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=12.13.0"
+      }
+    },
+    "node_modules/portfinder": {
+      "version": "1.0.32",
+      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz",
+      "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==",
+      "license": "MIT",
+      "dependencies": {
+        "async": "^2.6.4",
+        "debug": "^3.2.7",
+        "mkdirp": "^0.5.6"
+      },
+      "engines": {
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/possible-typed-array-names": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+      "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/prepend-http": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+      "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+      "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/progress": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/proxy-addr": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+      "license": "MIT",
+      "dependencies": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/proxy-agent": {
+      "version": "6.4.0",
+      "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz",
+      "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==",
+      "license": "MIT",
+      "dependencies": {
+        "agent-base": "^7.0.2",
+        "debug": "^4.3.4",
+        "http-proxy-agent": "^7.0.1",
+        "https-proxy-agent": "^7.0.3",
+        "lru-cache": "^7.14.1",
+        "pac-proxy-agent": "^7.0.1",
+        "proxy-from-env": "^1.1.0",
+        "socks-proxy-agent": "^8.0.2"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/proxy-agent/node_modules/debug": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/proxy-agent/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "license": "MIT"
+    },
+    "node_modules/proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+      "license": "MIT"
+    },
+    "node_modules/pseudomap": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+      "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
+      "license": "ISC"
+    },
+    "node_modules/pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/puppeteer": {
+      "version": "22.15.0",
+      "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.15.0.tgz",
+      "integrity": "sha512-XjCY1SiSEi1T7iSYuxS82ft85kwDJUS7wj1Z0eGVXKdtr5g4xnVcbjwxhq5xBnpK/E7x1VZZoJDxpjAOasHT4Q==",
+      "hasInstallScript": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@puppeteer/browsers": "2.3.0",
+        "cosmiconfig": "^9.0.0",
+        "devtools-protocol": "0.0.1312386",
+        "puppeteer-core": "22.15.0"
+      },
+      "bin": {
+        "puppeteer": "lib/esm/puppeteer/node/cli.js"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/puppeteer-core": {
+      "version": "22.15.0",
+      "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz",
+      "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@puppeteer/browsers": "2.3.0",
+        "chromium-bidi": "0.6.3",
+        "debug": "^4.3.6",
+        "devtools-protocol": "0.0.1312386",
+        "ws": "^8.18.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/puppeteer-core/node_modules/debug": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/puppeteer-core/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "license": "MIT"
+    },
+    "node_modules/qs": {
+      "version": "6.11.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "side-channel": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/query-string": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
+      "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==",
+      "license": "MIT",
+      "dependencies": {
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/querystringify": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+      "license": "MIT"
+    },
+    "node_modules/queue-tick": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
+      "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
+      "license": "MIT"
+    },
+    "node_modules/range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+      "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+      "license": "MIT",
+      "dependencies": {
+        "bytes": "3.1.2",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/rc": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+      "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
+      "dependencies": {
+        "deep-extend": "^0.6.0",
+        "ini": "~1.3.0",
+        "minimist": "^1.2.0",
+        "strip-json-comments": "~2.0.1"
+      },
+      "bin": {
+        "rc": "cli.js"
+      }
+    },
+    "node_modules/read-pkg": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+      "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
+      "license": "MIT",
+      "dependencies": {
+        "load-json-file": "^1.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/read-pkg-up": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+      "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^1.0.0",
+        "read-pkg": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/redent": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+      "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==",
+      "license": "MIT",
+      "dependencies": {
+        "indent-string": "^2.1.0",
+        "strip-indent": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/redent/node_modules/indent-string": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+      "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==",
+      "license": "MIT",
+      "dependencies": {
+        "repeating": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/regexp.prototype.flags": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
+      "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "define-properties": "^1.2.1",
+        "es-errors": "^1.3.0",
+        "set-function-name": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/registry-auth-token": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz",
+      "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==",
+      "license": "MIT",
+      "dependencies": {
+        "rc": "^1.1.6",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/registry-url": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+      "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==",
+      "license": "MIT",
+      "dependencies": {
+        "rc": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/repeating": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+      "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==",
+      "license": "MIT",
+      "dependencies": {
+        "is-finite": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+      "license": "MIT"
+    },
+    "node_modules/resolve": {
+      "version": "1.22.8",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+      "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+      "license": "MIT",
+      "dependencies": {
+        "is-core-module": "^2.13.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      },
+      "bin": {
+        "resolve": "bin/resolve"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/restore-cursor": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+      "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
+      "license": "MIT",
+      "dependencies": {
+        "onetime": "^2.0.0",
+        "signal-exit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/rimraf": {
+      "version": "2.6.3",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+      "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+      "deprecated": "Rimraf versions prior to v4 are no longer supported",
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/robots-parser": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-2.4.0.tgz",
+      "integrity": "sha512-oO8f2SI04dJk3pbj2KOMJ4G6QfPAgqcGmrYGmansIcpRewIPT2ljWEt5I+ip6EgiyaLo+RXkkUWw74M25HDkMA==",
+      "license": "MIT"
+    },
+    "node_modules/safe-array-concat": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+      "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "get-intrinsic": "^1.2.4",
+        "has-symbols": "^1.0.3",
+        "isarray": "^2.0.5"
+      },
+      "engines": {
+        "node": ">=0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/safe-regex-test": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+      "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "es-errors": "^1.3.0",
+        "is-regex": "^1.1.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "license": "MIT"
+    },
+    "node_modules/semver": {
+      "version": "7.6.3",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/semver-diff": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+      "integrity": "sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw==",
+      "license": "MIT",
+      "dependencies": {
+        "semver": "^5.0.3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/semver-diff/node_modules/semver": {
+      "version": "5.7.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/send": {
+      "version": "0.18.0",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "2.0.0",
+        "mime": "1.6.0",
+        "ms": "2.1.3",
+        "on-finished": "2.4.1",
+        "range-parser": "~1.2.1",
+        "statuses": "2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/send/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/send/node_modules/debug/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+      "license": "MIT"
+    },
+    "node_modules/serve-static": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+      "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+      "license": "MIT",
+      "dependencies": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.18.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/set-function-length": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+      "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+      "license": "MIT",
+      "dependencies": {
+        "define-data-property": "^1.1.4",
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.4",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/set-function-name": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+      "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+      "license": "MIT",
+      "dependencies": {
+        "define-data-property": "^1.1.4",
+        "es-errors": "^1.3.0",
+        "functions-have-names": "^1.2.3",
+        "has-property-descriptors": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/setprototypeof": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+      "license": "ISC"
+    },
+    "node_modules/sharp": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
+      "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
+      "hasInstallScript": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "color": "^4.2.3",
+        "detect-libc": "^2.0.3",
+        "semver": "^7.6.3"
+      },
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-darwin-arm64": "0.33.5",
+        "@img/sharp-darwin-x64": "0.33.5",
+        "@img/sharp-libvips-darwin-arm64": "1.0.4",
+        "@img/sharp-libvips-darwin-x64": "1.0.4",
+        "@img/sharp-libvips-linux-arm": "1.0.5",
+        "@img/sharp-libvips-linux-arm64": "1.0.4",
+        "@img/sharp-libvips-linux-s390x": "1.0.4",
+        "@img/sharp-libvips-linux-x64": "1.0.4",
+        "@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
+        "@img/sharp-libvips-linuxmusl-x64": "1.0.4",
+        "@img/sharp-linux-arm": "0.33.5",
+        "@img/sharp-linux-arm64": "0.33.5",
+        "@img/sharp-linux-s390x": "0.33.5",
+        "@img/sharp-linux-x64": "0.33.5",
+        "@img/sharp-linuxmusl-arm64": "0.33.5",
+        "@img/sharp-linuxmusl-x64": "0.33.5",
+        "@img/sharp-wasm32": "0.33.5",
+        "@img/sharp-win32-ia32": "0.33.5",
+        "@img/sharp-win32-x64": "0.33.5"
+      }
+    },
+    "node_modules/shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+      "license": "MIT",
+      "dependencies": {
+        "shebang-regex": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/side-channel": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+      "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "es-errors": "^1.3.0",
+        "get-intrinsic": "^1.2.4",
+        "object-inspect": "^1.13.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "license": "ISC"
+    },
+    "node_modules/simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+      "license": "MIT",
+      "dependencies": {
+        "is-arrayish": "^0.3.1"
+      }
+    },
+    "node_modules/simplecrawler": {
+      "version": "1.1.9",
+      "resolved": "https://registry.npmjs.org/simplecrawler/-/simplecrawler-1.1.9.tgz",
+      "integrity": "sha512-IY5YmeJWvfc1zpy9so1p/EknCqNum3Y9tmnzuLWZqKEwbntGXPGvN0SOtr+XqT4BHjfek2C12g3Tg1yK7Hoh8g==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "async": "^3.1.0",
+        "iconv-lite": "^0.5.0",
+        "robots-parser": "^2.1.1",
+        "urijs": "^1.19.1"
+      },
+      "bin": {
+        "crawl": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/simplecrawler/node_modules/async": {
+      "version": "3.2.6",
+      "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+      "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+      "license": "MIT"
+    },
+    "node_modules/simplecrawler/node_modules/iconv-lite": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz",
+      "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==",
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/slice-ansi": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
+      "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/smart-buffer": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6.0.0",
+        "npm": ">= 3.0.0"
+      }
+    },
+    "node_modules/socks": {
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz",
+      "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==",
+      "license": "MIT",
+      "dependencies": {
+        "ip-address": "^9.0.5",
+        "smart-buffer": "^4.2.0"
+      },
+      "engines": {
+        "node": ">= 10.0.0",
+        "npm": ">= 3.0.0"
+      }
+    },
+    "node_modules/socks-proxy-agent": {
+      "version": "8.0.4",
+      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz",
+      "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==",
+      "license": "MIT",
+      "dependencies": {
+        "agent-base": "^7.1.1",
+        "debug": "^4.3.4",
+        "socks": "^2.8.3"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/socks-proxy-agent/node_modules/debug": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/socks-proxy-agent/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "license": "MIT"
+    },
+    "node_modules/sort-keys": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+      "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
+      "license": "MIT",
+      "dependencies": {
+        "is-plain-obj": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "license": "BSD-3-Clause",
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/spdx-correct": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+      "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "node_modules/spdx-exceptions": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+      "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
+      "license": "CC-BY-3.0"
+    },
+    "node_modules/spdx-expression-parse": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+      "license": "MIT",
+      "dependencies": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "node_modules/spdx-license-ids": {
+      "version": "3.0.20",
+      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz",
+      "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==",
+      "license": "CC0-1.0"
+    },
+    "node_modules/sprintf-js": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+      "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/statuses": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/streamx": {
+      "version": "2.19.0",
+      "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.19.0.tgz",
+      "integrity": "sha512-5z6CNR4gtkPbwlxyEqoDGDmWIzoNJqCBt4Eac1ICP9YaIT08ct712cFj0u1rx4F8luAuL+3Qc+RFIdI4OX00kg==",
+      "license": "MIT",
+      "dependencies": {
+        "fast-fifo": "^1.3.2",
+        "queue-tick": "^1.0.1",
+        "text-decoder": "^1.1.0"
+      },
+      "optionalDependencies": {
+        "bare-events": "^2.2.0"
+      }
+    },
+    "node_modules/strict-uri-encode": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+      "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/string.prototype.trim": {
+      "version": "1.2.9",
+      "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+      "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.0",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trimend": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+      "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-object-atoms": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trimstart": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+      "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-bom": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+      "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
+      "license": "MIT",
+      "dependencies": {
+        "is-utf8": "^0.2.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-eof": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+      "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-indent": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+      "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==",
+      "license": "MIT",
+      "dependencies": {
+        "get-stdin": "^4.0.1"
+      },
+      "bin": {
+        "strip-indent": "cli.js"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+      "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/super-simple-web-server": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/super-simple-web-server/-/super-simple-web-server-1.1.4.tgz",
+      "integrity": "sha512-sQdVXz8ZDBMloocL63mifyVVzhxP55MlO2F0MiYJAJQiHTp42M2C3m2dZBIxGkcC7NUDr1/p0UhvGQvOsxZLpw==",
+      "license": "MIT",
+      "dependencies": {
+        "express": "^4.16.3"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/tar-fs": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz",
+      "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==",
+      "license": "MIT",
+      "dependencies": {
+        "pump": "^3.0.0",
+        "tar-stream": "^3.1.5"
+      },
+      "optionalDependencies": {
+        "bare-fs": "^2.1.1",
+        "bare-path": "^2.1.0"
+      }
+    },
+    "node_modules/tar-stream": {
+      "version": "3.1.7",
+      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+      "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+      "license": "MIT",
+      "dependencies": {
+        "b4a": "^1.6.4",
+        "fast-fifo": "^1.2.0",
+        "streamx": "^2.15.0"
+      }
+    },
+    "node_modules/temp": {
+      "version": "0.9.4",
+      "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz",
+      "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==",
+      "license": "MIT",
+      "dependencies": {
+        "mkdirp": "^0.5.1",
+        "rimraf": "~2.6.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/term-size": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+      "integrity": "sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==",
+      "license": "MIT",
+      "dependencies": {
+        "execa": "^0.7.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/text-decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.1.tgz",
+      "integrity": "sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "b4a": "^1.6.4"
+      }
+    },
+    "node_modules/through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+      "license": "MIT"
+    },
+    "node_modules/timed-out": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+      "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/toidentifier": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/trim-newlines": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+      "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/tslib": {
+      "version": "2.6.3",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+      "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+      "license": "0BSD"
+    },
+    "node_modules/type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "license": "MIT",
+      "dependencies": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/typed-array-buffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+      "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "es-errors": "^1.3.0",
+        "is-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/typed-array-byte-length": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+      "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-proto": "^1.0.3",
+        "is-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/typed-array-byte-offset": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
+      "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+      "license": "MIT",
+      "dependencies": {
+        "available-typed-arrays": "^1.0.7",
+        "call-bind": "^1.0.7",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-proto": "^1.0.3",
+        "is-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/typed-array-length": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+      "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-proto": "^1.0.3",
+        "is-typed-array": "^1.1.13",
+        "possible-typed-array-names": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/unbox-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-bigints": "^1.0.2",
+        "has-symbols": "^1.0.3",
+        "which-boxed-primitive": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/unbzip2-stream": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+      "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+      "license": "MIT",
+      "dependencies": {
+        "buffer": "^5.2.1",
+        "through": "^2.3.8"
+      }
+    },
+    "node_modules/undici": {
+      "version": "6.19.8",
+      "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz",
+      "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18.17"
+      }
+    },
+    "node_modules/undici-types": {
+      "version": "6.19.8",
+      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+      "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/unique-string": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+      "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==",
+      "license": "MIT",
+      "dependencies": {
+        "crypto-random-string": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/universalify": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+      "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
+    "node_modules/unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/unzip-response": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+      "integrity": "sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/update-notifier": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
+      "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boxen": "^1.2.1",
+        "chalk": "^2.0.1",
+        "configstore": "^3.0.0",
+        "import-lazy": "^2.1.0",
+        "is-ci": "^1.0.10",
+        "is-installed-globally": "^0.1.0",
+        "is-npm": "^1.0.0",
+        "latest-version": "^3.0.0",
+        "semver-diff": "^2.0.0",
+        "xdg-basedir": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/update-notifier/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/update-notifier/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/update-notifier/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/update-notifier/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "license": "MIT"
+    },
+    "node_modules/update-notifier/node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/update-notifier/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/urijs": {
+      "version": "1.19.11",
+      "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz",
+      "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==",
+      "license": "MIT"
+    },
+    "node_modules/url-parse": {
+      "version": "1.5.10",
+      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+      "license": "MIT",
+      "dependencies": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "node_modules/url-parse-lax": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+      "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==",
+      "license": "MIT",
+      "dependencies": {
+        "prepend-http": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/urlpattern-polyfill": {
+      "version": "10.0.0",
+      "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
+      "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==",
+      "license": "MIT"
+    },
+    "node_modules/util": {
+      "version": "0.10.4",
+      "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+      "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "2.0.3"
+      }
+    },
+    "node_modules/util/node_modules/inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+      "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+      "license": "ISC"
+    },
+    "node_modules/utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/valid-url": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
+      "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA=="
+    },
+    "node_modules/validate-npm-package-license": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "node_modules/vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/whatwg-encoding": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
+      "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
+      "license": "MIT",
+      "dependencies": {
+        "iconv-lite": "0.6.3"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/whatwg-encoding/node_modules/iconv-lite": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/whatwg-mimetype": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
+      "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "which": "bin/which"
+      }
+    },
+    "node_modules/which-boxed-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+      "license": "MIT",
+      "dependencies": {
+        "is-bigint": "^1.0.1",
+        "is-boolean-object": "^1.1.0",
+        "is-number-object": "^1.0.4",
+        "is-string": "^1.0.5",
+        "is-symbol": "^1.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/which-typed-array": {
+      "version": "1.1.15",
+      "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
+      "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+      "license": "MIT",
+      "dependencies": {
+        "available-typed-arrays": "^1.0.7",
+        "call-bind": "^1.0.7",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-tostringtag": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/widest-line": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
+      "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
+      "license": "MIT",
+      "dependencies": {
+        "string-width": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/widest-line/node_modules/ansi-regex": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+      "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/widest-line/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/widest-line/node_modules/string-width": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+      "license": "MIT",
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/widest-line/node_modules/strip-ansi": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+      "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/wrap-ansi": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+      }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "license": "ISC"
+    },
+    "node_modules/write-file-atomic": {
+      "version": "2.4.3",
+      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
+      "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
+      "license": "ISC",
+      "dependencies": {
+        "graceful-fs": "^4.1.11",
+        "imurmurhash": "^0.1.4",
+        "signal-exit": "^3.0.2"
+      }
+    },
+    "node_modules/ws": {
+      "version": "8.18.0",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+      "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/xdg-basedir": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+      "integrity": "sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/xmlbuilder": {
+      "version": "15.1.1",
+      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
+      "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/y18n": {
+      "version": "5.0.8",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yallist": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+      "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+      "license": "ISC"
+    },
+    "node_modules/yargs": {
+      "version": "17.7.2",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+      "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+      "license": "MIT",
+      "dependencies": {
+        "cliui": "^8.0.1",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
+        "require-directory": "^2.1.1",
+        "string-width": "^4.2.3",
+        "y18n": "^5.0.5",
+        "yargs-parser": "^21.1.1"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "21.1.1",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+      "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/yauzl": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+      "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+      "license": "MIT",
+      "dependencies": {
+        "buffer-crc32": "~0.2.3",
+        "fd-slicer": "~1.1.0"
+      }
+    },
+    "node_modules/zod": {
+      "version": "3.23.8",
+      "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
+      "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/colinhacks"
+      }
+    }
+  }
+}
diff --git a/tests/package.json b/tests/package.json
new file mode 100644 (file)
index 0000000..4aaf6ad
--- /dev/null
@@ -0,0 +1,23 @@
+{
+  "name": "tests",
+  "version": "1.0.0",
+  "main": "index.js",
+  "scripts": {
+    "test": "backstop test",
+    "approve": "backstop approve",
+    "crawl": "backstop-crawl http://localhost:1313",
+    "report": "node report.js"
+  },
+  "author": "",
+  "license": "ISC",
+  "description": "",
+  "dependencies": {
+    "7zip-min": "^1.4.5",
+    "backstop-crawl": "^2.3.1",
+    "backstopjs": "^6.3.23",
+    "sharp": "^0.33.5"
+  },
+  "volta": {
+    "node": "22.7.0"
+  }
+}
diff --git a/tests/report.js b/tests/report.js
new file mode 100644 (file)
index 0000000..bb884eb
--- /dev/null
@@ -0,0 +1,131 @@
+const fs = require("fs");
+const path = require("path");
+const sharp = require("sharp");
+const _7z = require("7zip-min");
+
+const imageFolder = "backstop_data/bitmaps_reference";
+const reportFolder = "report";
+
+if (!fs.existsSync(reportFolder)) {
+  fs.mkdirSync(reportFolder);
+}
+
+function processAndConvertFile(fileName) {
+  const fullPath = path.join(imageFolder, fileName);
+  const ext = path.extname(fileName);
+
+  if (ext.toLowerCase() === ".png") {
+    let newName = path
+      .basename(fileName, ext)
+      .replace("_0_document_0_desktop", "_desktop")
+      .replace("_0__0_desktop", "_desktop")
+      .replace("_0_document_0_phone", "_phone")
+      .replace("_0__0_phone", "_phone")
+      .replace(/_/g, " ");
+
+    newName += ".webp";
+
+    const newPath = path.join(reportFolder, newName);
+
+    return sharp(fullPath)
+      .webp({
+        quality: 70,
+        lossless: false,
+        nearLossless: false,
+        reductionEffort: 10,
+        smartSubsample: true,
+      })
+      .toFile(newPath)
+      .then(() => {
+        console.log(`${fileName} converted to WebP: ${newPath}`);
+        return newName;
+      })
+      .catch((err) => {
+        console.error(`Error converting ${fileName} to WebP:`, err);
+        const jpgName = path.basename(newName, ".webp") + ".jpg";
+        const jpgPath = path.join(reportFolder, jpgName);
+        return sharp(fullPath)
+          .jpeg({ quality: 75 })
+          .toFile(jpgPath)
+          .then(() => {
+            console.log(`${fileName} converted to JPG: ${jpgPath}`);
+            return jpgName;
+          })
+          .catch((jpgErr) => {
+            console.error(`Error converting ${fileName} to JPG:`, jpgErr);
+            return null;
+          });
+      });
+  }
+  return Promise.resolve(null);
+}
+
+function compressFolder() {
+  const archiveName = "report.7z";
+  const params = ["a", "-t7z", "-m0=lzma2", "-mx=9", "-mfb=64", "-md=32m", "-ms=on", archiveName, reportFolder];
+
+  _7z.cmd(params, (err) => {
+    if (err) {
+      console.error("Error during compression:", err);
+    } else {
+      console.log(`Compression completed: ${archiveName}`);
+    }
+  });
+}
+
+function generateDifferentialReport(oldFiles, newFiles) {
+  const added = newFiles.filter((file) => !oldFiles.includes(file));
+  const removed = oldFiles.filter((file) => !newFiles.includes(file));
+  const unchanged = oldFiles.filter((file) => newFiles.includes(file));
+
+  console.log("\nDifferential Report:");
+  console.log("Added files:", added);
+  console.log("Removed files:", removed);
+  console.log("Unchanged files:", unchanged);
+
+  const report = `
+Differential Report:
+
+Added files:
+${added.join("\n")}
+
+Removed files:
+${removed.join("\n")}
+
+Unchanged files:
+${unchanged.join("\n")}
+  `;
+
+  fs.writeFileSync(path.join(reportFolder, "differential_report.txt"), report);
+  console.log("Differential report written to differential_report.txt");
+}
+
+fs.readdir(imageFolder, (err, oldFiles) => {
+  if (err) {
+    console.error("Error reading source folder:", err);
+    return;
+  }
+
+  Promise.all(oldFiles.map(processAndConvertFile)).then((processedFiles) => {
+    processedFiles = processedFiles.filter((name) => name !== null);
+    console.log("\nFiles processed and converted to WebP:");
+    processedFiles.forEach((name) => console.log(name));
+
+    fs.readdir(reportFolder, (err, newFiles) => {
+      if (err) {
+        console.error("Error reading report folder:", err);
+        return;
+      }
+
+      // Filter out the differential_report.txt file
+      const filteredNewFiles = newFiles.filter((file) => file !== "differential_report.txt");
+
+      generateDifferentialReport(
+        oldFiles.map((file) => path.basename(file, path.extname(file))),
+        filteredNewFiles.map((file) => path.basename(file, path.extname(file))),
+      );
+
+      compressFolder();
+    });
+  });
+});
diff --git a/tests/report/Xen-project 404 Page 0 document 1 phone.webp b/tests/report/Xen-project 404 Page 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..f63103d
Binary files /dev/null and b/tests/report/Xen-project 404 Page 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project 404 Page desktop.webp b/tests/report/Xen-project 404 Page desktop.webp
new file mode 100644 (file)
index 0000000..c21c91b
Binary files /dev/null and b/tests/report/Xen-project 404 Page desktop.webp differ
diff --git a/tests/report/Xen-project About - Become a Member 0 document 1 phone.webp b/tests/report/Xen-project About - Become a Member 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..202d23c
Binary files /dev/null and b/tests/report/Xen-project About - Become a Member 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project About - Become a Member desktop.webp b/tests/report/Xen-project About - Become a Member desktop.webp
new file mode 100644 (file)
index 0000000..30a83c5
Binary files /dev/null and b/tests/report/Xen-project About - Become a Member desktop.webp differ
diff --git a/tests/report/Xen-project About - Contact Us 0 document 1 phone.webp b/tests/report/Xen-project About - Contact Us 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..f6714d4
Binary files /dev/null and b/tests/report/Xen-project About - Contact Us 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project About - Contact Us desktop.webp b/tests/report/Xen-project About - Contact Us desktop.webp
new file mode 100644 (file)
index 0000000..0f2ec91
Binary files /dev/null and b/tests/report/Xen-project About - Contact Us desktop.webp differ
diff --git a/tests/report/Xen-project About - Governance 0 document 1 phone.jpg b/tests/report/Xen-project About - Governance 0 document 1 phone.jpg
new file mode 100644 (file)
index 0000000..10c921a
Binary files /dev/null and b/tests/report/Xen-project About - Governance 0 document 1 phone.jpg differ
diff --git a/tests/report/Xen-project About - Governance desktop.jpg b/tests/report/Xen-project About - Governance desktop.jpg
new file mode 100644 (file)
index 0000000..8303dc2
Binary files /dev/null and b/tests/report/Xen-project About - Governance desktop.jpg differ
diff --git a/tests/report/Xen-project About - Security Policy 0 document 1 phone.jpg b/tests/report/Xen-project About - Security Policy 0 document 1 phone.jpg
new file mode 100644 (file)
index 0000000..514da05
Binary files /dev/null and b/tests/report/Xen-project About - Security Policy 0 document 1 phone.jpg differ
diff --git a/tests/report/Xen-project About - Security Policy desktop.webp b/tests/report/Xen-project About - Security Policy desktop.webp
new file mode 100644 (file)
index 0000000..abf1e6d
Binary files /dev/null and b/tests/report/Xen-project About - Security Policy desktop.webp differ
diff --git a/tests/report/Xen-project About - Xen Project Members 0 document 1 phone.webp b/tests/report/Xen-project About - Xen Project Members 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..5393c59
Binary files /dev/null and b/tests/report/Xen-project About - Xen Project Members 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project About - Xen Project Members desktop.webp b/tests/report/Xen-project About - Xen Project Members desktop.webp
new file mode 100644 (file)
index 0000000..2246fa7
Binary files /dev/null and b/tests/report/Xen-project About - Xen Project Members desktop.webp differ
diff --git a/tests/report/Xen-project About Xen Project 0 document 1 phone.webp b/tests/report/Xen-project About Xen Project 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..90fe683
Binary files /dev/null and b/tests/report/Xen-project About Xen Project 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project About Xen Project desktop.webp b/tests/report/Xen-project About Xen Project desktop.webp
new file mode 100644 (file)
index 0000000..643751d
Binary files /dev/null and b/tests/report/Xen-project About Xen Project desktop.webp differ
diff --git a/tests/report/Xen-project Contribute - Code of Conduct 0 document 1 phone.webp b/tests/report/Xen-project Contribute - Code of Conduct 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..509aa95
Binary files /dev/null and b/tests/report/Xen-project Contribute - Code of Conduct 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Contribute - Code of Conduct desktop.webp b/tests/report/Xen-project Contribute - Code of Conduct desktop.webp
new file mode 100644 (file)
index 0000000..1bf11f2
Binary files /dev/null and b/tests/report/Xen-project Contribute - Code of Conduct desktop.webp differ
diff --git a/tests/report/Xen-project Contribute - Contribution Guidelines 0 document 1 phone.webp b/tests/report/Xen-project Contribute - Contribution Guidelines 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..f514137
Binary files /dev/null and b/tests/report/Xen-project Contribute - Contribution Guidelines 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Contribute - Contribution Guidelines desktop.webp b/tests/report/Xen-project Contribute - Contribution Guidelines desktop.webp
new file mode 100644 (file)
index 0000000..7cc5ac1
Binary files /dev/null and b/tests/report/Xen-project Contribute - Contribution Guidelines desktop.webp differ
diff --git a/tests/report/Xen-project Contribute - Get Started 0 document 1 phone.webp b/tests/report/Xen-project Contribute - Get Started 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..4b31cff
Binary files /dev/null and b/tests/report/Xen-project Contribute - Get Started 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Contribute - Get Started desktop.webp b/tests/report/Xen-project Contribute - Get Started desktop.webp
new file mode 100644 (file)
index 0000000..f110eba
Binary files /dev/null and b/tests/report/Xen-project Contribute - Get Started desktop.webp differ
diff --git a/tests/report/Xen-project Home Page 0 document 1 phone.webp b/tests/report/Xen-project Home Page 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..ed896cc
Binary files /dev/null and b/tests/report/Xen-project Home Page 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Home Page desktop.webp b/tests/report/Xen-project Home Page desktop.webp
new file mode 100644 (file)
index 0000000..f86a8ec
Binary files /dev/null and b/tests/report/Xen-project Home Page desktop.webp differ
diff --git a/tests/report/Xen-project More - Xen Server Branding 0 document 1 phone.webp b/tests/report/Xen-project More - Xen Server Branding 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..49c4d64
Binary files /dev/null and b/tests/report/Xen-project More - Xen Server Branding 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project More - Xen Server Branding desktop.webp b/tests/report/Xen-project More - Xen Server Branding desktop.webp
new file mode 100644 (file)
index 0000000..927b8da
Binary files /dev/null and b/tests/report/Xen-project More - Xen Server Branding desktop.webp differ
diff --git a/tests/report/Xen-project More - Xen Summit 2024 0 document 1 phone.webp b/tests/report/Xen-project More - Xen Summit 2024 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..c0a78a2
Binary files /dev/null and b/tests/report/Xen-project More - Xen Summit 2024 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project More - Xen Summit 2024 desktop.webp b/tests/report/Xen-project More - Xen Summit 2024 desktop.webp
new file mode 100644 (file)
index 0000000..21cceaf
Binary files /dev/null and b/tests/report/Xen-project More - Xen Summit 2024 desktop.webp differ
diff --git a/tests/report/Xen-project Projects - All Projects 0 document 1 phone.webp b/tests/report/Xen-project Projects - All Projects 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..0a4cbfe
Binary files /dev/null and b/tests/report/Xen-project Projects - All Projects 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Projects - All Projects desktop.webp b/tests/report/Xen-project Projects - All Projects desktop.webp
new file mode 100644 (file)
index 0000000..37bc136
Binary files /dev/null and b/tests/report/Xen-project Projects - All Projects desktop.webp differ
diff --git a/tests/report/Xen-project Projects - Embedded and Automative 0 document 1 phone.webp b/tests/report/Xen-project Projects - Embedded and Automative 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..a0a484f
Binary files /dev/null and b/tests/report/Xen-project Projects - Embedded and Automative 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Projects - Embedded and Automative desktop.webp b/tests/report/Xen-project Projects - Embedded and Automative desktop.webp
new file mode 100644 (file)
index 0000000..4878e46
Binary files /dev/null and b/tests/report/Xen-project Projects - Embedded and Automative desktop.webp differ
diff --git a/tests/report/Xen-project Projects - HVMI 0 document 1 phone.webp b/tests/report/Xen-project Projects - HVMI 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..e09eb08
Binary files /dev/null and b/tests/report/Xen-project Projects - HVMI 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Projects - HVMI desktop.webp b/tests/report/Xen-project Projects - HVMI desktop.webp
new file mode 100644 (file)
index 0000000..f9c9351
Binary files /dev/null and b/tests/report/Xen-project Projects - HVMI desktop.webp differ
diff --git a/tests/report/Xen-project Projects - Hypervisor 0 document 1 phone.webp b/tests/report/Xen-project Projects - Hypervisor 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..402d507
Binary files /dev/null and b/tests/report/Xen-project Projects - Hypervisor 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Projects - Hypervisor desktop.webp b/tests/report/Xen-project Projects - Hypervisor desktop.webp
new file mode 100644 (file)
index 0000000..4f60dc9
Binary files /dev/null and b/tests/report/Xen-project Projects - Hypervisor desktop.webp differ
diff --git a/tests/report/Xen-project Projects - Mirage OS 0 document 1 phone.webp b/tests/report/Xen-project Projects - Mirage OS 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..bbd942e
Binary files /dev/null and b/tests/report/Xen-project Projects - Mirage OS 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Projects - Mirage OS desktop.webp b/tests/report/Xen-project Projects - Mirage OS desktop.webp
new file mode 100644 (file)
index 0000000..d7d22d6
Binary files /dev/null and b/tests/report/Xen-project Projects - Mirage OS desktop.webp differ
diff --git a/tests/report/Xen-project Projects - Unikraft 0 document 1 phone.webp b/tests/report/Xen-project Projects - Unikraft 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..ec8088e
Binary files /dev/null and b/tests/report/Xen-project Projects - Unikraft 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Projects - Unikraft desktop.webp b/tests/report/Xen-project Projects - Unikraft desktop.webp
new file mode 100644 (file)
index 0000000..793257b
Binary files /dev/null and b/tests/report/Xen-project Projects - Unikraft desktop.webp differ
diff --git a/tests/report/Xen-project Projects - Windows PV Drivers 0 document 1 phone.webp b/tests/report/Xen-project Projects - Windows PV Drivers 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..ab66e8f
Binary files /dev/null and b/tests/report/Xen-project Projects - Windows PV Drivers 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Projects - Windows PV Drivers desktop.webp b/tests/report/Xen-project Projects - Windows PV Drivers desktop.webp
new file mode 100644 (file)
index 0000000..be8741e
Binary files /dev/null and b/tests/report/Xen-project Projects - Windows PV Drivers desktop.webp differ
diff --git a/tests/report/Xen-project Projects - XAPI 0 document 1 phone.webp b/tests/report/Xen-project Projects - XAPI 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..579e01f
Binary files /dev/null and b/tests/report/Xen-project Projects - XAPI 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Projects - XAPI desktop.webp b/tests/report/Xen-project Projects - XAPI desktop.webp
new file mode 100644 (file)
index 0000000..8e4b5ad
Binary files /dev/null and b/tests/report/Xen-project Projects - XAPI desktop.webp differ
diff --git a/tests/report/Xen-project Projects - XCP-ng 0 document 1 phone.webp b/tests/report/Xen-project Projects - XCP-ng 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..edb9bc7
Binary files /dev/null and b/tests/report/Xen-project Projects - XCP-ng 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Projects - XCP-ng desktop.webp b/tests/report/Xen-project Projects - XCP-ng desktop.webp
new file mode 100644 (file)
index 0000000..3f4b570
Binary files /dev/null and b/tests/report/Xen-project Projects - XCP-ng desktop.webp differ
diff --git a/tests/report/Xen-project Resources - Downloads 0 document 1 phone.webp b/tests/report/Xen-project Resources - Downloads 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..afd4b4c
Binary files /dev/null and b/tests/report/Xen-project Resources - Downloads 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Resources - Downloads desktop.webp b/tests/report/Xen-project Resources - Downloads desktop.webp
new file mode 100644 (file)
index 0000000..4da4961
Binary files /dev/null and b/tests/report/Xen-project Resources - Downloads desktop.webp differ
diff --git a/tests/report/Xen-project Resources - Mailing Lists 0 document 1 phone.webp b/tests/report/Xen-project Resources - Mailing Lists 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..f56fa90
Binary files /dev/null and b/tests/report/Xen-project Resources - Mailing Lists 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Resources - Mailing Lists desktop.webp b/tests/report/Xen-project Resources - Mailing Lists desktop.webp
new file mode 100644 (file)
index 0000000..eac1bb0
Binary files /dev/null and b/tests/report/Xen-project Resources - Mailing Lists desktop.webp differ
diff --git a/tests/report/Xen-project Resources - Matrix 0 document 1 phone.webp b/tests/report/Xen-project Resources - Matrix 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..bcfebed
Binary files /dev/null and b/tests/report/Xen-project Resources - Matrix 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Resources - Matrix desktop.webp b/tests/report/Xen-project Resources - Matrix desktop.webp
new file mode 100644 (file)
index 0000000..68e0f3b
Binary files /dev/null and b/tests/report/Xen-project Resources - Matrix desktop.webp differ
diff --git a/tests/report/Xen-project Resources - Use Cases 0 document 1 phone.webp b/tests/report/Xen-project Resources - Use Cases 0 document 1 phone.webp
new file mode 100644 (file)
index 0000000..043f7fd
Binary files /dev/null and b/tests/report/Xen-project Resources - Use Cases 0 document 1 phone.webp differ
diff --git a/tests/report/Xen-project Resources - Use Cases desktop.webp b/tests/report/Xen-project Resources - Use Cases desktop.webp
new file mode 100644 (file)
index 0000000..7f179d6
Binary files /dev/null and b/tests/report/Xen-project Resources - Use Cases desktop.webp differ
diff --git a/tests/report/differential_report.txt b/tests/report/differential_report.txt
new file mode 100644 (file)
index 0000000..9407fd4
--- /dev/null
@@ -0,0 +1,114 @@
+
+Differential Report:
+
+Added files:
+Xen-project 404 Page 0 document 1 phone
+Xen-project 404 Page desktop
+Xen-project About - Become a Member 0 document 1 phone
+Xen-project About - Become a Member desktop
+Xen-project About - Contact Us 0 document 1 phone
+Xen-project About - Contact Us desktop
+Xen-project About - Governance 0 document 1 phone
+Xen-project About - Governance desktop
+Xen-project About - Security Policy 0 document 1 phone
+Xen-project About - Security Policy desktop
+Xen-project About - Xen Project Members 0 document 1 phone
+Xen-project About - Xen Project Members desktop
+Xen-project About Xen Project 0 document 1 phone
+Xen-project About Xen Project desktop
+Xen-project Contribute - Code of Conduct 0 document 1 phone
+Xen-project Contribute - Code of Conduct desktop
+Xen-project Contribute - Contribution Guidelines 0 document 1 phone
+Xen-project Contribute - Contribution Guidelines desktop
+Xen-project Contribute - Get Started 0 document 1 phone
+Xen-project Contribute - Get Started desktop
+Xen-project Home Page 0 document 1 phone
+Xen-project Home Page desktop
+Xen-project More - Xen Server Branding 0 document 1 phone
+Xen-project More - Xen Server Branding desktop
+Xen-project More - Xen Summit 2024 0 document 1 phone
+Xen-project More - Xen Summit 2024 desktop
+Xen-project Projects - All Projects 0 document 1 phone
+Xen-project Projects - All Projects desktop
+Xen-project Projects - Embedded and Automative 0 document 1 phone
+Xen-project Projects - Embedded and Automative desktop
+Xen-project Projects - HVMI 0 document 1 phone
+Xen-project Projects - HVMI desktop
+Xen-project Projects - Hypervisor 0 document 1 phone
+Xen-project Projects - Hypervisor desktop
+Xen-project Projects - Mirage OS 0 document 1 phone
+Xen-project Projects - Mirage OS desktop
+Xen-project Projects - Unikraft 0 document 1 phone
+Xen-project Projects - Unikraft desktop
+Xen-project Projects - Windows PV Drivers 0 document 1 phone
+Xen-project Projects - Windows PV Drivers desktop
+Xen-project Projects - XAPI 0 document 1 phone
+Xen-project Projects - XAPI desktop
+Xen-project Projects - XCP-ng 0 document 1 phone
+Xen-project Projects - XCP-ng desktop
+Xen-project Resources - Downloads 0 document 1 phone
+Xen-project Resources - Downloads desktop
+Xen-project Resources - Mailing Lists 0 document 1 phone
+Xen-project Resources - Mailing Lists desktop
+Xen-project Resources - Matrix 0 document 1 phone
+Xen-project Resources - Matrix desktop
+Xen-project Resources - Use Cases 0 document 1 phone
+Xen-project Resources - Use Cases desktop
+
+Removed files:
+Xen-project_404_Page_0_document_0_desktop
+Xen-project_404_Page_0_document_1_phone
+Xen-project_About_-_Become_a_Member_0_document_0_desktop
+Xen-project_About_-_Become_a_Member_0_document_1_phone
+Xen-project_About_-_Contact_Us_0_document_0_desktop
+Xen-project_About_-_Contact_Us_0_document_1_phone
+Xen-project_About_-_Governance_0_document_0_desktop
+Xen-project_About_-_Governance_0_document_1_phone
+Xen-project_About_-_Security_Policy_0_document_0_desktop
+Xen-project_About_-_Security_Policy_0_document_1_phone
+Xen-project_About_-_Xen_Project_Members_0_document_0_desktop
+Xen-project_About_-_Xen_Project_Members_0_document_1_phone
+Xen-project_About_Xen_Project_0_document_0_desktop
+Xen-project_About_Xen_Project_0_document_1_phone
+Xen-project_Contribute_-_Code_of_Conduct_0_document_0_desktop
+Xen-project_Contribute_-_Code_of_Conduct_0_document_1_phone
+Xen-project_Contribute_-_Contribution_Guidelines_0_document_0_desktop
+Xen-project_Contribute_-_Contribution_Guidelines_0_document_1_phone
+Xen-project_Contribute_-_Get_Started_0_document_0_desktop
+Xen-project_Contribute_-_Get_Started_0_document_1_phone
+Xen-project_Home_Page_0_document_0_desktop
+Xen-project_Home_Page_0_document_1_phone
+Xen-project_More_-_Xen_Server_Branding_0_document_0_desktop
+Xen-project_More_-_Xen_Server_Branding_0_document_1_phone
+Xen-project_More_-_Xen_Summit_2024_0_document_0_desktop
+Xen-project_More_-_Xen_Summit_2024_0_document_1_phone
+Xen-project_Projects_-_All_Projects_0_document_0_desktop
+Xen-project_Projects_-_All_Projects_0_document_1_phone
+Xen-project_Projects_-_Embedded_and_Automative_0_document_0_desktop
+Xen-project_Projects_-_Embedded_and_Automative_0_document_1_phone
+Xen-project_Projects_-_HVMI_0_document_0_desktop
+Xen-project_Projects_-_HVMI_0_document_1_phone
+Xen-project_Projects_-_Hypervisor_0_document_0_desktop
+Xen-project_Projects_-_Hypervisor_0_document_1_phone
+Xen-project_Projects_-_Mirage_OS_0_document_0_desktop
+Xen-project_Projects_-_Mirage_OS_0_document_1_phone
+Xen-project_Projects_-_Unikraft_0_document_0_desktop
+Xen-project_Projects_-_Unikraft_0_document_1_phone
+Xen-project_Projects_-_Windows_PV_Drivers_0_document_0_desktop
+Xen-project_Projects_-_Windows_PV_Drivers_0_document_1_phone
+Xen-project_Projects_-_XAPI_0_document_0_desktop
+Xen-project_Projects_-_XAPI_0_document_1_phone
+Xen-project_Projects_-_XCP-ng_0_document_0_desktop
+Xen-project_Projects_-_XCP-ng_0_document_1_phone
+Xen-project_Resources_-_Downloads_0_document_0_desktop
+Xen-project_Resources_-_Downloads_0_document_1_phone
+Xen-project_Resources_-_Mailing_Lists_0_document_0_desktop
+Xen-project_Resources_-_Mailing_Lists_0_document_1_phone
+Xen-project_Resources_-_Matrix_0_document_0_desktop
+Xen-project_Resources_-_Matrix_0_document_1_phone
+Xen-project_Resources_-_Use_Cases_0_document_0_desktop
+Xen-project_Resources_-_Use_Cases_0_document_1_phone
+
+Unchanged files:
+
+  
\ No newline at end of file
diff --git a/themes/xen-project/LICENSE b/themes/xen-project/LICENSE
new file mode 100644 (file)
index 0000000..8aa2645
--- /dev/null
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) [year] [fullname]
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/themes/xen-project/README.md b/themes/xen-project/README.md
new file mode 100644 (file)
index 0000000..7cec74e
--- /dev/null
@@ -0,0 +1,7 @@
+# Theme Name
+
+## Features
+
+## Installation
+
+## Configuration
diff --git a/themes/xen-project/assets/css/backgrounds.scss b/themes/xen-project/assets/css/backgrounds.scss
new file mode 100644 (file)
index 0000000..d7cc1ef
--- /dev/null
@@ -0,0 +1,98 @@
+.background-curve,
+.background-curve-reverse,
+.background-curve-reverse-top {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+
+  --bg-top-height: 8.072vw;
+  --bg-bottom-height: 8.072vw;
+  --bg-top-height: 8.072vw;
+
+  --bottom: calc(100% - var(--bg-bottom-height));
+
+  padding-top: calc(var(--bg-top-height) + 4vw);
+  padding-bottom: calc(var(--bg-top-height) + 4vw);
+}
+@include tablet {
+  .background-curve {
+    padding-top: calc(var(--bg-top-height) + 6.3vw);
+
+    // margin-top: calc(var(--section-space) - 25rem);
+  }
+  .section-space + .background-curve.section-space {
+    margin-top: calc(var(--section-space) * -1);
+  }
+}
+
+@include tablet {
+  .background-curve-reverse {
+    padding-top: calc(var(--bg-top-height) + 6.3vw);
+  }
+
+  .section-space.background-curve-reverse + section-space {
+    margin-top: calc(var(--section-space) * -0.55);
+  }
+
+  .background-curve-reverse.section-space + .section-space {
+    margin-top: calc(var(--section-space) * -1);
+  }
+}
+
+.background-normal {
+  background-color: var(--color-brand-surface);
+  padding-top: var(--sp-xl);
+  padding-bottom: var(--sp-xl);
+}
+
+.background-curve {
+  background:
+    no-repeat
+      url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1920 155" fill="none"><path d="M0 0C0 0 576.434 151.211 953.5 152C1335.58 152.799 1920 0 1920 0V155H0V0Z" fill="%23f3f9ec"/></svg>')
+      top center / 100% var(--bg-top-height),
+    linear-gradient(
+        to bottom,
+        transparent calc(var(--bg-top-height) - 1px),
+        var(--color-brand-surface) calc(var(--bg-top-height) - 1px),
+        var(--color-brand-surface) var(--bottom),
+        transparent var(--bottom)
+      ) / auto,
+    no-repeat
+      url('data:image/svg+xml,<svg width="1920" height="155" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"><g class="layer"><title>Layer 1</title><path d="m0,0c0,0 576.43,151.21 953.5,152c382.08,0.8 966.5,-152 966.5,-152l-1920,0z" fill="%23f3f9ec" id="svg_1"/></g></svg>')
+      bottom center / 100% var(--bg-bottom-height);
+}
+
+.background-curve-reverse {
+  background:
+    no-repeat
+      url('data:image/svg+xml,<svg viewBox="0 0 1920 155" xmlns="http://www.w3.org/2000/svg"><g class="layer"><path d="M1920 152.003S1343.57.793 966.5.003c-382.08-.8-966.5 152-966.5 152h1920z" fill="%23f3f9ec"/></g></svg>')
+      top center / 100% var(--bg-top-height),
+    linear-gradient(
+        to bottom,
+        transparent calc(var(--bg-top-height) - 5px),
+        var(--color-brand-surface) calc(var(--bg-top-height) - 1px),
+        var(--color-brand-surface) var(--bottom),
+        transparent var(--bottom)
+      ) / auto,
+    no-repeat
+      url('data:image/svg+xml,<svg viewBox="0 0 1920 155" xmlns="http://www.w3.org/2000/svg"><g class="layer"><path d="M1920 155S1343.57 3.79 966.5 3C584.42 2.2 0 155 0 155V0h1920v155z" fill="%23f3f9ec"/></g></svg>')
+      bottom center / 100% var(--bg-bottom-height);
+}
+
+.background-curve-reverse-top {
+  padding-top: var(--bg-top-height);
+  padding-bottom: var(--sp-md);
+
+  --bottom: calc(100% - var(--bg-bottom-height));
+  background:
+    no-repeat
+      url('data:image/svg+xml,<svg viewBox="0 0 1920 155" xmlns="http://www.w3.org/2000/svg"><g class="layer"><path d="M1920 152.003S1343.57.793 966.5.003c-382.08-.8-966.5 152-966.5 152h1920z" fill="%23f3f9ec"/></g></svg>')
+      top center / 100% var(--bg-top-height),
+    linear-gradient(
+        to bottom,
+        transparent calc(var(--bg-top-height) - 5px),
+        var(--color-brand-surface) calc(var(--bg-top-height) - 1px),
+        var(--color-brand-surface) 100%
+      ) / auto;
+}
diff --git a/themes/xen-project/assets/css/base.scss b/themes/xen-project/assets/css/base.scss
new file mode 100644 (file)
index 0000000..e98665e
--- /dev/null
@@ -0,0 +1,61 @@
+*,
+::before,
+::after {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+}
+
+html,
+body {
+  background: var(--color-surface);
+  color: var(--color-text);
+}
+
+html {
+  font-size: var(--font-size);
+  font-family: var(--font-family);
+  font-weight: 300;
+}
+
+html {
+  overflow: auto;
+}
+
+body {
+  font-size: 1rem;
+  line-height: 1.8;
+  letter-spacing: 0.0125em;
+}
+
+img {
+  max-width: 100%;
+}
+
+address {
+  font-style: normal;
+  display: inline;
+}
+
+strong {
+  font-weight: 600;
+}
+
+ul {
+  list-style: disc;
+  margin-top: var(--sp-sm);
+  margin-bottom: var(--sp-sm);
+}
+
+li {
+  margin-left: 24px;
+  margin-top: 4px;
+
+  p:first-child {
+    margin-top: 0;
+  }
+}
+
+a {
+  color: var(--color-action-text);
+}
diff --git a/themes/xen-project/assets/css/colors.scss b/themes/xen-project/assets/css/colors.scss
new file mode 100644 (file)
index 0000000..0c8fd48
--- /dev/null
@@ -0,0 +1,43 @@
+// Primary color variables in SASS
+$color-surface: #fbfbfb;
+$color-surface-secondary: #ededed;
+$color-border: #dbdbdb;
+$color-text: #101828;
+$color-text-secondary: #475467;
+$color-action-surface: #bcdef7;
+$color-action-text: #0062a7;
+$color-action-fill: #0077cc;
+$color-brand-surface: #f3f9ec;
+$color-brand-text: #567c2a;
+$color-brand-fill: #85c241;
+$color-brand-on-fill: #1e2b0e;
+
+// CSS Variables
+:root {
+  // Primary colors
+  --color-surface: #{$color-surface};
+  --color-surface-secondary: #{$color-surface-secondary};
+  --color-border: #{$color-border};
+  --color-text: #{$color-text};
+  --color-text-secondary: #{$color-text-secondary};
+
+  // action colors
+  --color-action-surface: #{$color-action-surface};
+  --color-action-text: #{$color-action-text};
+  --color-action-text-hover: #{mix(#000, $color-action-text, 20%)};
+  --color-action-text-pressed: #{mix(#000, $color-action-text, 40%)};
+  --color-action-fill: #{$color-action-fill};
+  --color-action-fill-hover: #{mix(#000, $color-action-fill, 20%)}; //#005FA3
+  --color-action-fill-pressed: #{mix(#000, $color-action-fill, 40%)};
+  --color-action-on-fill: #f7fbfd;
+
+  // brand colors
+  --color-brand-surface: #{$color-brand-surface};
+  --color-brand-text: #{$color-brand-text};
+  --color-brand-text-hover: #{mix(#000000, $color-brand-text, 20%)};
+  --color-brand-text-pressed: #{mix(#000000, $color-brand-text, 40%)};
+  --color-brand-fill: #{$color-brand-fill};
+  --color-brand-fill-hover: #{mix(#ffffff, $color-brand-fill, 20%)};
+  --color-brand-fill-pressed: #{mix(#ffffff, $color-brand-fill, 40%)};
+  --color-brand-on-fill: #{$color-brand-on-fill};
+}
diff --git a/themes/xen-project/assets/css/components/box-members.scss b/themes/xen-project/assets/css/components/box-members.scss
new file mode 100644 (file)
index 0000000..1afc22a
--- /dev/null
@@ -0,0 +1,12 @@
+.box-members {
+  ul {
+    list-style: none;
+    padding: 0;
+    margin: 0;
+
+    li {
+      padding: 0;
+      margin: var(--sp-xs) 0;
+    }
+  }
+}
diff --git a/themes/xen-project/assets/css/components/box-resources.scss b/themes/xen-project/assets/css/components/box-resources.scss
new file mode 100644 (file)
index 0000000..00105b8
--- /dev/null
@@ -0,0 +1,28 @@
+.box-resources {
+  background-color: var(--color-brand-surface);
+  padding: var(--sp-md);
+
+  .box-resources__title {
+    margin-top: 0;
+    line-height: 1.2em;
+  }
+
+  ul {
+    list-style: none;
+    padding: 0;
+    margin: 0;
+
+    li {
+      padding: 0;
+      margin: var(--sp-xs) 0;
+    }
+
+    a {
+      text-decoration: none;
+
+      &:hover {
+        text-decoration: underline;
+      }
+    }
+  }
+}
diff --git a/themes/xen-project/assets/css/components/carousel.scss b/themes/xen-project/assets/css/components/carousel.scss
new file mode 100644 (file)
index 0000000..33414a1
--- /dev/null
@@ -0,0 +1,104 @@
+@use "sass:math";
+
+.carousel-container {
+  overflow: hidden;
+  --min-height: 100px;
+  --content-padding: 12px;
+  --item-width: auto;
+  --item-position: 0;
+  --max-width: none;
+  --number-of-items: 1;
+  --space-between-items: 40px;
+  --height: auto;
+
+  @include phone {
+    --number-of-items: 2;
+  }
+
+  @include tablet {
+    --number-of-items: 2;
+    --max-width: 1668px;
+    --content-padding: 80px;
+  }
+
+  @include tablet-up {
+    --number-of-items: 3;
+  }
+
+  @include desktop {
+    --number-of-items: 4;
+  }
+
+  .carousel-content {
+    position: relative;
+    max-width: var(--max-width);
+    padding-left: var(--content-padding);
+    padding-right: var(--content-padding);
+    margin: 0 auto;
+  }
+
+  .carousel {
+    display: flex;
+    flex-wrap: wrap;
+    gap: var(--space-between-items);
+    align-items: stretch;
+    position: relative;
+    height: var(--height);
+
+    &-item {
+      --index: 0;
+      --transform: calc(var(--item-position) * (var(--index)));
+      flex: 1 0 calc(100% / var(--number-of-items) - var(--space-between-items));
+      top: 0;
+      min-height: var(--min-height);
+      left: 0;
+      width: var(--item-width);
+    }
+  }
+
+  .carousel-buttons {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    max-width: 100px;
+    margin-left: auto;
+    margin-right: auto;
+    margin-top: var(--sp-sm-md);
+
+    @include tablet {
+      position: absolute;
+      top: 50%;
+      transform: translateY(-50%);
+      z-index: 10;
+      width: 100%;
+      max-width: none;
+      left: 0;
+      padding: 0 calc(var(--content-padding) - 50px);
+    }
+  }
+
+  .carousel-button {
+    background-color: var(--color-action-fill);
+    color: var(--color-action-on-fill);
+    border-radius: 100%;
+    border: none;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    cursor: pointer;
+    width: 2.25rem;
+    height: 2.25rem;
+    font-size: 1.25rem;
+  }
+}
+
+.carousel-initialized .carousel-item {
+  position: absolute;
+  transform: translateX(var(--transform));
+  opacity: 0;
+  display: none;
+  transition:
+    transform 0.5s ease,
+    opacity 0.8s ease;
+  height: 100%;
+}
diff --git a/themes/xen-project/assets/css/components/images-in-circle.scss b/themes/xen-project/assets/css/components/images-in-circle.scss
new file mode 100644 (file)
index 0000000..9080352
--- /dev/null
@@ -0,0 +1,81 @@
+:root {
+}
+
+[class*="background-"] {
+  .images-in-circle {
+    --bg-color: var(--color-brand-surface);
+  }
+}
+
+.images-in-circle {
+  --padding: 30px;
+  --circle-dimensions: 80%;
+  --img-width: 30%;
+  --translate: -100%;
+
+  --size: calc(var(--circle-dimensions) + (var(--padding) * 2));
+  --bg-color: #fff;
+  --index: 0;
+  --total: 1;
+  --start-angle: 0deg;
+  --img-padding: 0.6rem;
+
+  position: relative;
+  width: var(--size);
+  height: var(--size);
+  margin: 0 auto;
+  padding: var(--padding);
+  aspect-ratio: 1;
+  list-style-type: none;
+  background-color: inherit;
+
+  &::before {
+    content: "";
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    width: var(--circle-dimensions);
+    aspect-ratio: 1;
+    border: 8px solid var(--color-action-fill);
+    border-radius: 50%;
+    transform: translate(-50%, -50%);
+  }
+
+  li {
+    --angle: calc(var(--start-angle) + (360deg / var(--total)) * var(--index));
+    --scale: 1;
+
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    width: var(--img-width);
+    margin: 0;
+    padding: 0;
+    aspect-ratio: 1;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    transform: translate(-50%, -50%) rotate(var(--angle))
+      translate(var(--translate), var(--translate))
+      rotate(calc(-1 * var(--angle))) scale(var(--scale));
+
+    img {
+      width: 100%;
+      padding: var(--img-padding);
+      background-color: var(--bg-color);
+    }
+
+    @for $i from 2 through 8 {
+      &:first-child:nth-last-child(#{$i}),
+      &:first-child:nth-last-child(#{$i}) ~ li {
+        --total: #{$i};
+      }
+    }
+
+    @for $i from 2 through 8 {
+      &:nth-of-type(#{$i}) {
+        --index: #{$i - 1};
+      }
+    }
+  }
+}
diff --git a/themes/xen-project/assets/css/components/news-card.scss b/themes/xen-project/assets/css/components/news-card.scss
new file mode 100644 (file)
index 0000000..cd8a046
--- /dev/null
@@ -0,0 +1,102 @@
+.news-card {
+  --font-size-small: 14px;
+  --font-size-medium: 16px;
+  --font-size-large: 20px;
+  --font-size-xlarge: 24px;
+  // 12 16 18
+  --mg-sm: 12px;
+  --mg-md: 16px;
+  --mg-lg: 18px;
+  --pad-horizontal: var(--mg-sm);
+  --pad-vertical: var(--mg-lg);
+  display: flex;
+  gap: 0;
+  flex-direction: column;
+  justify-content: space-between;
+
+  @include tablet {
+    --mg-sm: 16px;
+    --mg-lg: 24px;
+  }
+
+  background-color: var(--color-surface);
+  border: 1px solid var(--color-border);
+  padding: var(--pad-vertical) var(--pad-horizontal);
+  color: var(--color-text-secondary);
+
+  &__date,
+  &__label,
+  &__tag,
+  &__description,
+  &__author {
+    font-style: normal;
+  }
+
+  &__date {
+    font-size: var(--font-size-xlarge);
+    font-weight: 700;
+    line-height: 1.2;
+  }
+
+  &__label,
+  &__description {
+    font-size: var(--font-size-large);
+    line-height: 1.4;
+    letter-spacing: -1px;
+  }
+
+  &__label {
+    font-weight: 500;
+    margin-top: 8px;
+  }
+
+  &__tag {
+    font-size: var(--font-size-medium);
+    font-weight: 700;
+    line-height: 1;
+    letter-spacing: 0.52px;
+    text-transform: uppercase;
+    margin-top: var(--mg-md);
+  }
+
+  &__description {
+    font-weight: 400;
+    margin-top: 7px;
+    letter-spacing: -1px;
+    line-height: 1.42;
+    margin-top: var(--mg-sm);
+  }
+
+  &__author {
+    font-size: var(--font-size-medium);
+    font-weight: 500;
+    line-height: 1.5;
+    letter-spacing: -0.5px;
+    margin-top: var(--mg-sm);
+    margin-bottom: var(--mg-sm);
+  }
+
+  &__read-more {
+    margin-top: auto;
+    color: var(--color-action-text);
+    text-align: right;
+    transition: color 0.2s ease;
+    margin-bottom: 0;
+    a {
+      text-decoration: none;
+    }
+
+    &:hover {
+      color: var(--color-action-text-hover);
+    }
+
+    &:active {
+      color: var(--color-action-text-pressed);
+    }
+
+    svg {
+      width: var(--font-size-medium);
+      height: var(--font-size-medium);
+    }
+  }
+}
diff --git a/themes/xen-project/assets/css/components/news-container.scss b/themes/xen-project/assets/css/components/news-container.scss
new file mode 100644 (file)
index 0000000..de4d5fa
--- /dev/null
@@ -0,0 +1,23 @@
+.news-container {
+  --cols: 1;
+  --gap: 24px;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: space-between;
+  align-items: stretch;
+  gap: var(--gap);
+
+  --col-width: calc((100% / var(--cols)) - var(--gap));
+  > * {
+    flex: 1 1 var(--col-width);
+  }
+
+  @include tablet {
+    --cols: 2;
+  }
+
+  @include desktop {
+    --cols: 3;
+  }
+}
diff --git a/themes/xen-project/assets/css/content-markdown.scss b/themes/xen-project/assets/css/content-markdown.scss
new file mode 100644 (file)
index 0000000..eb7c663
--- /dev/null
@@ -0,0 +1,55 @@
+.content-markdown {
+  table {
+    width: 100%;
+    border-collapse: collapse;
+    font-family: Arial, sans-serif;
+  }
+
+  th,
+  td {
+    padding: 10px;
+    text-align: left;
+    border-bottom: 1px solid #ddd;
+  }
+
+  th {
+    background-color: #f2f2f2;
+    font-weight: bold;
+  }
+
+  tr {
+    &:nth-child(even) {
+      background-color: var(--color-surface-secondary);
+    }
+
+    &:hover {
+      background-color: var(--color-border);
+    }
+  }
+
+  td {
+    &:first-child {
+      font-weight: bold;
+    }
+
+    &:last-child {
+      font-style: italic;
+    }
+  }
+
+  h1,
+  h2,
+  h3 {
+    margin-top: 1.5em;
+    margin-bottom: 0.8em;
+  }
+
+  pre code {
+    background: var(--color-surface-secondary);
+    display: block;
+    padding: var(--sp-sm) var(--sp-lg);
+    line-height: 1.4;
+    margin-top: var(--sp-sm);
+    margin-bottom: var(--sp-sm);
+  }
+}
diff --git a/themes/xen-project/assets/css/fonts.scss b/themes/xen-project/assets/css/fonts.scss
new file mode 100644 (file)
index 0000000..34d6772
--- /dev/null
@@ -0,0 +1,26 @@
+@font-face {
+  font-family: "gotham";
+  src:
+    url("/fonts/gotham_book-webfont.woff2") format("woff2"),
+    url("/fonts/gotham_book-webfont.woff") format("woff");
+  font-weight: normal;
+  font-style: normal;
+}
+
+@font-face {
+  font-family: "gotham";
+  src:
+    url("/fonts/gotham_bold-webfont.woff2") format("woff2"),
+    url("/fonts/gotham_bold-webfont.woff") format("woff");
+  font-weight: 700;
+  font-style: normal;
+}
+
+@font-face {
+  font-family: "gotham";
+  src:
+    url("/fonts/gotham_medium-webfont.woff2") format("woff2"),
+    url("/fonts/gotham_medium-webfont.woff") format("woff");
+  font-weight: 500;
+  font-style: normal;
+}
diff --git a/themes/xen-project/assets/css/footer.scss b/themes/xen-project/assets/css/footer.scss
new file mode 100644 (file)
index 0000000..ab50e0a
--- /dev/null
@@ -0,0 +1,153 @@
+.footer {
+  --footer-padding: 24px 12px;
+  --gap: 24px;
+  --gap-lg: 40px;
+  --footer-max-height: none;
+  --footer-menu-cols: 1;
+
+  @include phone {
+    --footer-menu-cols: 1;
+  }
+
+  @include tablet {
+    --footer-menu-cols: 2;
+    --footer-max-height: 1300px;
+  }
+
+  @include tablet-up {
+    --footer-max-height: 1000px;
+  }
+
+  @include desktop {
+    --footer-menu-cols: 2;
+  }
+
+  @include desktop-up {
+    --footer-menu-cols: 3;
+    --footer-max-height: 700px;
+  }
+
+  border-top: 1px solid var(--color-brand-fill);
+  background: var(--color-brand-surface);
+
+  padding: var(--footer-padding);
+}
+
+.footer__col {
+  display: flex;
+  flex-direction: column;
+  gap: var(--gap-lg);
+
+  > div {
+    display: flex;
+    flex-direction: column;
+    gap: var(--gap);
+  }
+
+  p {
+    margin: 0;
+  }
+
+  h2 {
+    &:first-child {
+      margin-top: 0;
+    }
+  }
+
+  .footer__text {
+    flex: 0 1 auto;
+  }
+
+  &.footer__menu {
+    ul,
+    li {
+      margin: 0;
+      padding: 0;
+      list-style: none;
+    }
+    ul {
+      display: flex;
+      flex: 1 0;
+      flex-direction: column;
+      gap: 24px;
+    }
+
+    li {
+      font-size: 20px;
+      font-weight: 700;
+    }
+
+    li a {
+      color: var(--color-text);
+      text-decoration: none;
+      display: block;
+    }
+
+    ul ul {
+      gap: 13px;
+      margin-top: 16px;
+    }
+    li li {
+      font-size: 18px;
+      font-weight: 500;
+
+      a {
+        color: var(--color-action-text);
+      }
+
+      a::after {
+        font-family: var(--font-family-icons);
+        margin-left: 10px;
+        content: var(--icon-arrow-right);
+      }
+
+      a[target="_blank"]::after {
+        content: var(--arrow-up-right-from-square);
+      }
+    }
+  }
+}
+@include tablet {
+  .footer {
+    --footer-padding: 40px;
+    --gap: 80px;
+
+    .footer-content {
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+      max-width: 1920px;
+      margin: 0 auto;
+      gap: var(--gap);
+
+      @include tablet {
+        flex-direction: row;
+      }
+    }
+
+    .footer__text {
+      flex: 0 1 40%;
+
+      > div {
+        gap: 20px;
+      }
+    }
+
+    .footer__menu {
+      flex: 1;
+      > ul {
+        display: flex;
+        flex-direction: column;
+        flex-wrap: wrap;
+        max-height: var(--footer-max-height);
+        align-content: flex-start;
+        gap: 40px var(--gap);
+
+        > li {
+          flex: 0 1 0;
+          width: calc(100% / var(--footer-menu-cols) - var(--gap));
+        }
+      }
+    }
+  }
+}
diff --git a/themes/xen-project/assets/css/grid.scss b/themes/xen-project/assets/css/grid.scss
new file mode 100644 (file)
index 0000000..46d8f2a
--- /dev/null
@@ -0,0 +1,63 @@
+.container,
+.container-small {
+  max-width: calc(var(--container-width) + var(--container-paddings, 0) * 2);
+  margin-left: var(--container-margins, auto);
+  margin-right: var(--container-margins, auto);
+  padding-left: var(--container-paddings);
+  padding-right: var(--container-paddings);
+}
+
+.container-full {
+  max-width: none;
+  padding: 0;
+  margin-left: 0;
+  margin-right: 0;
+}
+
+.container-small {
+  --container-width: 1120px;
+}
+
+section {
+  position: relative;
+  z-index: 1;
+}
+
+.section-space {
+  margin-top: var(--section-space);
+  margin-bottom: var(--section-space);
+}
+
+.block-space {
+  margin-top: var(--block-space);
+}
+
+.cols {
+  display: flex;
+  flex-direction: row;
+  gap: var(--sp-lg);
+  justify-content: space-between;
+
+  .col {
+    flex: 1;
+  }
+}
+
+.row {
+  display: flex;
+  flex-direction: row;
+  gap: var(--sp-lg);
+  justify-content: flex-start;
+  align-items: stretch;
+  flex-wrap: wrap;
+
+  > *,
+  > .col {
+    flex: 1;
+
+    // Ajout de la gestion des colonnes
+    @supports (--cols: 0) {
+      flex: 0 0 calc((100% - (var(--cols, 1) - 1) * var(--sp-lg)) / var(--cols, 1));
+    }
+  }
+}
diff --git a/themes/xen-project/assets/css/header-mobile.scss b/themes/xen-project/assets/css/header-mobile.scss
new file mode 100644 (file)
index 0000000..8d1fa45
--- /dev/null
@@ -0,0 +1,211 @@
+.header {
+  --header-height: 52px;
+  display: flex;
+  flex-direction: row-reverse;
+  justify-content: space-between;
+  align-items: center;
+  border-bottom: 1px solid var(--color-brand-fill);
+  position: relative;
+  padding: var(--sp-xs) var(--sp-sm);
+  height: var(--header-height);
+}
+
+.header-logo {
+  flex: 1;
+  display: flex;
+  justify-content: center;
+
+  img {
+    width: 94px;
+  }
+}
+
+.header-content {
+  display: none;
+}
+
+@include media-max("header-breakpoint") {
+  .menu-toggle {
+    color: var(--color-action-text);
+    font-size: 20px;
+    font-style: normal;
+    font-weight: 900;
+    line-height: normal;
+    display: flex;
+    width: 36px;
+    height: 36px;
+    padding: var(--sp-xxs);
+    align-items: center;
+    justify-content: center;
+    gap: 10px;
+    position: absolute;
+    left: 10px;
+
+    &::before {
+      content: var(--icon-bars);
+      font-family: var(--font-family-icons);
+    }
+  }
+
+  .header.active {
+    .header-content {
+      display: flex;
+    }
+
+    .menu-toggle,
+    .header-content::before,
+    .menu li.active > a {
+      height: var(--header-height);
+      display: flex;
+      align-items: center;
+      position: absolute;
+      top: 0;
+      padding: var(--sp-xs) var(--sp-sm);
+      font-size: 20px;
+      z-index: 11;
+    }
+
+    .header-content::before,
+    .menu li.active > a {
+      font-weight: 500;
+      left: 0;
+      width: auto;
+    }
+
+    .header-content::before {
+      content: attr(data-menu-title);
+    }
+
+    .menu li.active > a {
+      z-index: 13;
+      color: inherit;
+      gap: var(--sp-sm);
+      pointer-events: none;
+      cursor: default;
+
+      &::after {
+        content: none;
+      }
+      &::before {
+        pointer-events: all;
+        content: var(--icon-arrow-left);
+        font-family: var(--font-family-icons);
+        color: var(--color-action-text);
+        cursor: pointer;
+      }
+    }
+
+    /** transform the toggle menu into a cross */
+    .menu-toggle {
+      left: auto;
+      right: var(--sp-sm);
+      color: inherit;
+      font-weight: 900;
+
+      &::before {
+        content: var(--icon-xmark);
+      }
+    }
+  }
+
+  .header-content {
+    position: fixed;
+
+    inset: 0;
+    background: var(--color-surface);
+    z-index: 10;
+    flex-direction: column;
+  }
+
+  .header-nav {
+    display: flex;
+    flex-direction: column;
+    gap: var(--sp-xs);
+    flex: 1;
+    position: relative;
+    display: flex;
+
+    .menu {
+      font-weight: 500;
+      flex: 1;
+
+      &,
+      li,
+      ul {
+        list-style: none;
+        margin: 0;
+        padding: 0;
+      }
+
+      a {
+        text-decoration: none;
+      }
+    }
+
+    // level 1
+    .menu {
+      position: relative;
+
+      &,
+      ul {
+        padding: var(--sp-lg) var(--sp-sm);
+        padding-top: calc(var(--header-height) + var(--sp-lg));
+        display: flex;
+        flex-direction: column;
+        gap: var(--sp-md);
+      }
+      > li {
+        > a {
+          display: flex;
+          align-items: center;
+          gap: var(--sp-xs);
+          &::after {
+            content: var(--icon-arrow-right);
+            font-family: var(--font-family-icons);
+          }
+
+          &[target="_blank"]::after {
+            content: var(--arrow-up-right-from-square);
+          }
+        }
+      }
+      // level 2
+      ul a {
+        width: 100%;
+        display: block;
+      }
+    }
+
+    // level 2 {
+    .menu ul {
+      position: absolute;
+      inset: 0;
+      background: var(--color-surface);
+      display: none;
+      z-index: 12;
+    }
+  }
+
+  .menu li.active ul {
+    display: flex;
+  }
+}
+
+.menu {
+  position: relative;
+  a {
+    &::after {
+      content: var(--icon-arrow-right);
+      font-family: var(--font-family-icons);
+    }
+
+    &[target="_blank"]::after {
+      content: var(--arrow-up-right-from-square);
+    }
+  }
+  // level 2
+  ul a {
+    width: 100%;
+    display: block;
+  }
+}
diff --git a/themes/xen-project/assets/css/header.scss b/themes/xen-project/assets/css/header.scss
new file mode 100644 (file)
index 0000000..cc4d6c7
--- /dev/null
@@ -0,0 +1,154 @@
+@include media-min("header-breakpoint") {
+  .header {
+    --gap: 20px;
+    --header-nav-flex: 0;
+    --header-padding: 12px 20px;
+    --logo-width: 13.8vw;
+    --nav-margin-left: 0;
+    --header-height: 84px;
+    --header-font-size: 16px;
+
+    @include desktop {
+      --gap: 40px;
+      --header-font-size: 20px;
+      --logo-width: 13.8vw;
+      --header-padding: 12px 40px;
+    }
+
+    flex-direction: row;
+    gap: var(--gap);
+    height: var(--header-height);
+    justify-content: space-between;
+    padding: var(--header-padding);
+    z-index: 10;
+    font-size: var(--header-font-size);
+
+    &-content {
+      display: flex;
+      flex: 0 1 auto;
+      gap: var(--gap);
+      align-items: center;
+    }
+
+    &-logo {
+      flex: 0 0 auto;
+      position: relative;
+
+      img {
+        width: var(--logo-width);
+        max-width: 164px;
+        display: block;
+      }
+    }
+
+    &-nav {
+      font-weight: 500;
+      margin-left: var(--nav-margin-left);
+    }
+
+    .menu-toggle {
+      display: none;
+    }
+
+    .header-nav {
+      flex: var(--header-nav-flex) 0 auto;
+
+      &,
+      ul,
+      li {
+        align-items: stretch;
+        display: flex;
+      }
+
+      .menu {
+        display: flex;
+        flex: 1 0 auto;
+        flex-direction: row;
+        gap: var(--gap);
+        justify-content: space-between;
+        list-style: none;
+        margin: 0;
+        padding: 12px 0;
+
+        > li {
+          flex: 0 1 auto;
+          min-height: 40px;
+        }
+
+        li:has(ul) a::after,
+        li a[target="_blank"]::after {
+          font-family: var(--font-family-icons);
+          margin-left: 10px;
+        }
+
+        li:has(ul) > a::after {
+          content: var(--icon-arrow-down);
+        }
+
+        li a[target="_blank"]::after {
+          content: var(--arrow-up-right-from-square);
+        }
+      }
+
+      li {
+        align-items: center;
+        margin: 0;
+        padding: 0;
+        position: relative;
+
+        &:hover ul {
+          visibility: visible;
+        }
+      }
+
+      > ul ul {
+        align-items: flex-start;
+        background: var(--Default-surface, #fbfbfb);
+        border: 1px solid var(--Brand-fill, #85c241);
+        display: flex;
+        flex-direction: column;
+        gap: 8px;
+        right: 0;
+        list-style: none;
+        margin: 0;
+        padding: 24px;
+        position: absolute;
+        top: 100%;
+        visibility: hidden;
+
+        a {
+          white-space: nowrap;
+        }
+      }
+    }
+
+    .menu {
+      list-style: none;
+
+      a {
+        color: var(--color-action-text);
+        font-weight: 500;
+        text-decoration: none;
+
+        &:hover {
+          color: var(--color-action-text-hover);
+        }
+      }
+
+      ul {
+        list-style: none;
+        margin: 0;
+      }
+
+      li {
+        margin: 0;
+        padding: 0;
+      }
+    }
+
+    .socials {
+      margin-left: 0;
+      padding: 0;
+    }
+  }
+}
diff --git a/themes/xen-project/assets/css/layout/aside.scss b/themes/xen-project/assets/css/layout/aside.scss
new file mode 100644 (file)
index 0000000..cf29763
--- /dev/null
@@ -0,0 +1,6 @@
+.page-aside {
+  padding: var(--sp-lg);
+  display: flex;
+  flex-direction: column;
+  gap: var(--sp-lg);
+}
diff --git a/themes/xen-project/assets/css/layout/page-404.scss b/themes/xen-project/assets/css/layout/page-404.scss
new file mode 100644 (file)
index 0000000..cb1d746
--- /dev/null
@@ -0,0 +1,68 @@
+.page-404 > main {
+  padding-bottom: 0;
+}
+
+.page-404-content {
+  overflow: hidden;
+  display: flex;
+  position: relative;
+
+  .container {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: space-between;
+    gap: var(--sp-lg);
+    flex: 1;
+    width: 100%;
+    max-width: 1920px;
+  }
+
+  .list-no-style {
+    flex-direction: row;
+    gap: var(--sp-lg);
+    margin-top: var(--sp-lg);
+  }
+
+  .page-404__text {
+    flex: 1 0 27%;
+  }
+
+  .container::after {
+    content: url("/img/flatline/error-404.svg");
+    display: inline-block;
+    flex: 0 70%;
+    width: 100%;
+    max-width: 1021px;
+    z-index: 1;
+  }
+
+  &::before {
+    content: url("/img/flatline/error-404.svg");
+    position: absolute;
+    bottom: -4.68vw;
+    right: -10.775vw;
+    opacity: 0.2;
+    width: 53vw;
+    z-index: 0;
+  }
+
+  @include tablet {
+    .list-no-style {
+      display: flex;
+    }
+    .container {
+      padding-left: 100px;
+      padding-right: 80px;
+    }
+  }
+
+  @include desktop {
+    .list-no-style {
+      display: block;
+    }
+    .container {
+      flex-direction: row;
+    }
+  }
+}
diff --git a/themes/xen-project/assets/css/layout/page-single-aside.scss b/themes/xen-project/assets/css/layout/page-single-aside.scss
new file mode 100644 (file)
index 0000000..7fdfc48
--- /dev/null
@@ -0,0 +1,25 @@
+.page-single-aside {
+  flex-direction: column;
+  display: flex;
+  gap: 0;
+  justify-content: stretch;
+  align-items: flex-start;
+
+  .page-aside {
+    flex: 0 0 auto;
+    padding: var(--sp-lg);
+  }
+
+  .page-content {
+    flex: 1;
+  }
+
+  @include tablet {
+    flex-direction: row;
+
+    .page-aside {
+      flex: 0 0 320px;
+      padding: var(--sp-lg) var(--sp-lg) var(--sp-xl);
+    }
+  }
+}
diff --git a/themes/xen-project/assets/css/lists.scss b/themes/xen-project/assets/css/lists.scss
new file mode 100644 (file)
index 0000000..ff41ef0
--- /dev/null
@@ -0,0 +1,10 @@
+.list-no-style {
+  list-style: none;
+  margin: 0;
+  padding: 0;
+
+  li {
+    margin: 1em 0;
+    padding: 0;
+  }
+}
diff --git a/themes/xen-project/assets/css/main.scss b/themes/xen-project/assets/css/main.scss
new file mode 100644 (file)
index 0000000..e67df34
--- /dev/null
@@ -0,0 +1,40 @@
+@import "./mediaqueries.scss";
+@import "./variables.scss";
+@import "./colors.scss";
+@import "./fonts.scss";
+@import "./base.scss";
+@import "./typography.scss";
+@import "./text-align.scss";
+@import "./spaces.scss";
+@import "./grid.scss";
+@import "./backgrounds.scss";
+@import "./socials.scss";
+@import "./structure.scss";
+@import "./footer.scss";
+@import "./lists.scss";
+@import "./molecules/buttons.scss";
+@import "./molecules/media-block.scss";
+@import "./molecules/features-list.scss";
+@import "./molecules/anchor.scss";
+@import "./molecules/full-width-image.scss";
+@import "./molecules/project-card.scss";
+@import "./molecules/vertical-lists.scss";
+@import "./molecules/list-pages.scss";
+@import "./molecules/video-container.scss";
+@import "./molecules/conversation-card.scss";
+@import "./molecules/slideshare-container.scss";
+@import "./molecules/conversation-card.scss";
+@import "./molecules/center.scss";
+@import "./molecules/hero-block.scss";
+@import "./components/box-resources.scss";
+@import "./components/box-members.scss";
+@import "./components/carousel.scss";
+@import "./components/news-card.scss";
+@import "./components/news-container.scss";
+@import "./components/images-in-circle.scss";
+@import "./content-markdown.scss";
+@import "./layout/page-404.scss";
+@import "./layout/page-single-aside.scss";
+@import "./layout/aside.scss";
+@import "./header-mobile.scss";
+@import "./header.scss";
diff --git a/themes/xen-project/assets/css/mediaqueries.scss b/themes/xen-project/assets/css/mediaqueries.scss
new file mode 100644 (file)
index 0000000..f1b2aa3
--- /dev/null
@@ -0,0 +1,50 @@
+$breakpoints: (
+  "phone": 600px,
+  "header-breakpoint": 980px,
+  "tablet": 768px,
+  "tablet-up": 1024px,
+  "desktop": 1280px,
+  "desktop-up": 1440px,
+);
+
+@mixin media-min($_key) {
+  @media (min-width: map-get($breakpoints, $_key)) {
+    @content;
+  }
+}
+
+@mixin media-max($_key) {
+  @media (max-width: map-get($breakpoints, $_key)) {
+    @content;
+  }
+}
+
+@mixin phone {
+  @include media-min("phone") {
+    @content;
+  }
+}
+
+@mixin tablet {
+  @include media-min("tablet") {
+    @content;
+  }
+}
+
+@mixin tablet-up {
+  @include media-min("tablet-up") {
+    @content;
+  }
+}
+
+@mixin desktop {
+  @include media-min("desktop") {
+    @content;
+  }
+}
+
+@mixin desktop-up {
+  @include media-min("desktop-up") {
+    @content;
+  }
+}
diff --git a/themes/xen-project/assets/css/molecules/anchor.scss b/themes/xen-project/assets/css/molecules/anchor.scss
new file mode 100644 (file)
index 0000000..4c74c5e
--- /dev/null
@@ -0,0 +1,45 @@
+.anchor {
+  display: inline-block;
+  text-decoration: none;
+  color: var(--color-action-text);
+  font-size: 18px;
+
+  &::after {
+    font-family: var(--font-family-icons);
+    content: var(--icon-arrow-down);
+    display: block;
+    text-align: center;
+    margin-top: 10px;
+    transition: all 0.3s ease-in-out;
+    transform: translateX(0);
+  }
+
+  &:hover {
+    color: var(--color-action-text-hover);
+
+    &::after {
+      transform: translateY(6px);
+    }
+  }
+
+  &:focus {
+    color: var(--color-action-text);
+
+    &::after {
+      transform: translateY(6px);
+    }
+  }
+
+  &:active {
+    color: var(--color-action-text-pressed);
+    &::after {
+      transform: translateY(12px);
+    }
+  }
+}
+
+@include tablet {
+  .anchor-placement-bottom {
+    //margin-top: calc(var(--section-space) - 16.8rem);
+  }
+}
diff --git a/themes/xen-project/assets/css/molecules/buttons.scss b/themes/xen-project/assets/css/molecules/buttons.scss
new file mode 100644 (file)
index 0000000..4847ff8
--- /dev/null
@@ -0,0 +1,83 @@
+.btn {
+  --border-radius: 0.125rem;
+  --border-size: 0.125rem;
+  --color-active: var(--color-action-fill-pressed);
+  --color-disabled: var(--color-border);
+  --color-focus: var(--color-action-fill);
+  --color-hover: var(--color-action-fill-hover);
+  --color-primary: var(--color-action-fill);
+  --color-secondary: var(--color-action-on-fill);
+
+  display: inline-block;
+  position: relative;
+  padding: 0.444em 1em;
+
+  font-size: 1.125rem;
+  letter-spacing: 0.00555555em;
+  line-height: 1.2;
+  text-decoration: none;
+
+  background: var(--color-primary);
+  border: var(--border-size) solid var(--color-primary);
+  border-radius: var(--border-radius);
+  color: var(--color-secondary);
+  cursor: pointer;
+
+  transition:
+    background-color 0.3s,
+    box-shadow 0.3s;
+
+  @include tablet {
+    font-size: 1.25rem;
+    padding: 0.75rem 1.5rem;
+  }
+
+  &::after {
+    --space: 0.375rem;
+    content: "";
+    position: absolute;
+    inset: calc(var(--space) * -1);
+    border: 0.125rem solid var(--color-primary);
+    border-radius: var(--border-radius);
+    opacity: 0;
+    transition: opacity 0.3s ease-in-out;
+    z-index: 100;
+  }
+
+  // States
+  &:focus::after,
+  &.focus::after {
+    opacity: 1;
+  }
+
+  &:hover,
+  &.hover {
+    --color-primary: var(--color-hover);
+  }
+
+  &:active,
+  &.active {
+    --color-primary: var(--color-active);
+  }
+
+  &:focus,
+  &.focus {
+    --color-primary: var(--color-focus);
+  }
+
+  &:disabled,
+  &.disabled {
+    --color-primary: var(--color-disabled);
+  }
+
+  &-secondary,
+  &-tertiary {
+    background-color: var(--color-surface);
+    color: var(--color-primary);
+  }
+
+  &-tertiary {
+    background-color: transparent;
+    border: none;
+  }
+}
diff --git a/themes/xen-project/assets/css/molecules/center.scss b/themes/xen-project/assets/css/molecules/center.scss
new file mode 100644 (file)
index 0000000..ecf3da6
--- /dev/null
@@ -0,0 +1,3 @@
+.text-center {
+  text-align: center;
+}
diff --git a/themes/xen-project/assets/css/molecules/conversation-card.scss b/themes/xen-project/assets/css/molecules/conversation-card.scss
new file mode 100644 (file)
index 0000000..40588ad
--- /dev/null
@@ -0,0 +1,55 @@
+.conversation-card {
+  padding: var(--sp-sm-md);
+  border: 1px solid var(--color-border);
+  border-radius: var(--sp-xxs);
+  font-family: Arial, sans-serif;
+  background-color: var(--color-brand-surface);
+  color: var(--color-text);
+  font-size: 1rem;
+  display: flex;
+  gap: 0.8em;
+  flex-direction: column;
+
+  .label {
+    font-weight: bold;
+    font-size: 1.2em;
+  }
+
+  .tags {
+    display: flex;
+    gap: var(--sp-xs);
+  }
+
+  .tag {
+    background-color: var(--color-surface);
+    color: var(--color-action-text);
+    padding: 0.1em 0.6em;
+    font-size: 1em;
+    border: 1px solid var(--color-action-text);
+    border-radius: 1.5em;
+  }
+
+  .content {
+    color: var(--color-text-secondary);
+    flex: 1;
+  }
+
+  .actions {
+    display: flex;
+    justify-content: flex-start;
+    gap: 0.8em;
+  }
+
+  .join-button {
+    padding: 0;
+    font-size: 1em;
+  }
+
+  /** versions */
+  @include desktop {
+    font-size: 1.25rem;
+  }
+  &--small {
+    font-size: 1rem;
+  }
+}
diff --git a/themes/xen-project/assets/css/molecules/discover-link.scss b/themes/xen-project/assets/css/molecules/discover-link.scss
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/themes/xen-project/assets/css/molecules/features-list.scss b/themes/xen-project/assets/css/molecules/features-list.scss
new file mode 100644 (file)
index 0000000..238837c
--- /dev/null
@@ -0,0 +1,92 @@
+// Mixins
+@mixin flex-center {
+  display: flex;
+  align-items: flex-start;
+}
+
+// Styles
+.features-list {
+  --gap: var(--sp-sm-lg);
+  @include tablet {
+    --gap: var(--sp-lg);
+  }
+
+  display: grid;
+  grid-template-columns: repeat(3, 1fr);
+  gap: var(--gap);
+  list-style: none;
+  padding: 0;
+  margin: 0;
+
+  li {
+    margin: 0;
+    padding: 0;
+  }
+
+  @media (max-width: 1024px) {
+    grid-template-columns: repeat(2, 1fr);
+  }
+
+  @media (max-width: 768px) {
+    grid-template-columns: 1fr;
+  }
+
+  &--cols-2 {
+    grid-template-columns: repeat(1, 1fr);
+
+    .with-aside & {
+      @include tablet-up {
+        grid-template-columns: repeat(2, 1fr);
+      }
+    }
+  }
+  &--cols-4 {
+    grid-template-columns: repeat(4, 1fr);
+  }
+}
+
+.feature-item {
+  --item-title-font-size: 2rem;
+  --item-title-gap: 0.5rem;
+
+  @include tablet {
+    --item-title-font-size: 2.5rem;
+    --item-title-gap: 1.3rem;
+  }
+
+  @include flex-center;
+  padding: 1.5rem;
+  border-radius: 8px;
+
+  .feature-item__icon {
+    font-size: 0.8em;
+  }
+
+  i {
+    font-size: 1.5rem;
+    color: var(--color-action-fill);
+  }
+
+  &-content {
+    flex: 1;
+  }
+
+  .feature-item__title {
+    display: flex;
+    gap: var(--item-title-gap);
+    font-size: var(--item-title-font-size);
+    align-items: center;
+    font-weight: 700;
+    color: var(--color-action-fill);
+    margin: 0 0 0.75rem;
+    padding-bottom: 0.28em;
+    border-bottom: 2px solid var(--color-brand-fill);
+  }
+
+  p {
+    font-size: 1.2rem;
+    color: var(--color-text);
+    margin: 0;
+    line-height: 150%;
+  }
+}
diff --git a/themes/xen-project/assets/css/molecules/full-width-image.scss b/themes/xen-project/assets/css/molecules/full-width-image.scss
new file mode 100644 (file)
index 0000000..daac7e8
--- /dev/null
@@ -0,0 +1,18 @@
+.full-width-image {
+  img {
+    width: 100%;
+    height: auto;
+    object-fit: cover;
+    object-position: center;
+  }
+
+  &.image-ratio-large {
+    overflow: hidden;
+    aspect-ratio: 100/26;
+
+    img {
+      display: block;
+      margin-top: -5%;
+    }
+  }
+}
diff --git a/themes/xen-project/assets/css/molecules/hero-block.scss b/themes/xen-project/assets/css/molecules/hero-block.scss
new file mode 100644 (file)
index 0000000..491e718
--- /dev/null
@@ -0,0 +1,18 @@
+.hero-block {
+  --margin-top: var(--sp-xs);
+  --margin-bottom: var(--sp-xxl);
+
+  @include tablet {
+    --margin-top: var(--sp-xxxl);
+    --margin-bottom: var(--sp-sm);
+    --title-font-size: 4rem;
+  }
+
+  margin-top: var(--margin-top);
+  margin-bottom: var(--margin-bottom);
+  --title-font-size: 2.25rem;
+
+  .media-block__title {
+    font-size: var(--title-font-size);
+  }
+}
diff --git a/themes/xen-project/assets/css/molecules/list-pages.scss b/themes/xen-project/assets/css/molecules/list-pages.scss
new file mode 100644 (file)
index 0000000..741222f
--- /dev/null
@@ -0,0 +1,21 @@
+.list-pages {
+  --gap: var(--sp-md);
+  --cols: 2;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  gap: var(--gap);
+
+  @include tablet {
+    --cols: 3;
+  }
+
+  @include tablet-up {
+    --cols: 4;
+  }
+
+  > * {
+    --basis: calc((100% / var(--cols)) - var(--gap));
+    flex: 0 0 var(--basis);
+  }
+}
diff --git a/themes/xen-project/assets/css/molecules/media-block.scss b/themes/xen-project/assets/css/molecules/media-block.scss
new file mode 100644 (file)
index 0000000..4fb94eb
--- /dev/null
@@ -0,0 +1,101 @@
+.media-block {
+  --gap: 1.7rem;
+  --content-gap: var(--sp-sm);
+  --content-line-height: 1.66;
+  --flex-direction: column-reverse;
+  --media-max-width: 100%;
+  --media-max-height: none;
+  --basis: 100%;
+  --col-width: 100%;
+  --padding-v: 20px;
+  --media-h-padding: 6.9vw;
+  --media-v-padding: 0;
+
+  @include tablet {
+    padding-top: var(--padding-v);
+    padding-bottom: var(--padding-v);
+  }
+
+  display: flex;
+  flex-wrap: nowrap;
+  flex-direction: var(--flex-direction);
+  justify-content: center;
+  align-items: center;
+  gap: var(--gap);
+
+  @include media-max("tablet") {
+    &.media-block--mobile-bottom {
+      --flex-direction: column;
+    }
+
+    &.media-block--mobile-top {
+      --flex-direction: column-reverse;
+    }
+  }
+
+  @include tablet {
+    --gap: var(--sp-xl);
+    --content-gap: var(--sp-md);
+    --content-line-height: 1.67;
+    --flex-direction: row-reverse;
+    --media-max-width: 100%;
+    --media-max-height: 427px;
+    --media-h-padding: 0;
+    --basis: calc(50% - var(--gap) * 1);
+    --col-width: var(--basis);
+    &.media-block--right {
+      --flex-direction: row;
+    }
+  }
+
+  &__label {
+    font-size: 1rem;
+    color: var(--color-action-text);
+    letter-spacing: -0.00125em;
+    font-weight: 700;
+    text-transform: uppercase;
+    line-height: 67%;
+  }
+
+  &__content,
+  &__media {
+    flex: 1 1 var(--basis);
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+  }
+
+  &__content {
+    align-items: flex-start;
+    letter-spacing: 0.00625em;
+    gap: var(--content-gap);
+    line-height: var(--content-line-height);
+
+    .media-block__title {
+      margin: 0;
+    }
+  }
+
+  &__media {
+    width: var(--col-width);
+    align-items: center;
+    padding: var(--media-v-padding) var(--media-h-padding);
+
+    .youtube-video-container,
+    video {
+      width: 100%;
+    }
+
+    video {
+      height: auto;
+    }
+
+    img {
+      max-height: var(--media-max-height);
+      max-width: var(--media-max-width);
+      width: 100%;
+      height: auto;
+      object-fit: contain;
+    }
+  }
+}
diff --git a/themes/xen-project/assets/css/molecules/project-card.scss b/themes/xen-project/assets/css/molecules/project-card.scss
new file mode 100644 (file)
index 0000000..ca987f2
--- /dev/null
@@ -0,0 +1,49 @@
+.project-card {
+  --title-font-size: 1.25rem;
+  --title-paddings: 0.25rem 0.5rem;
+  --content-paddings: 0.75rem;
+  --link-font-size: 1rem;
+  border: 0.0625rem solid var(--color-border);
+  display: flex;
+  flex-direction: column;
+  justify-content: flex-start;
+  align-items: flex-start;
+
+  @include tablet {
+    --title-font-size: 1.5rem;
+    --content-paddings: 1.5rem 1rem;
+    --link-font-size: 1.25rem;
+  }
+
+  &__title {
+    margin: 0;
+    background: var(--color-brand-fill);
+    padding: var(--title-paddings);
+    width: 100%;
+    font-size: var(--title-font-size);
+    font-weight: 700;
+    line-height: 150%;
+  }
+
+  &__content {
+    padding: var(--content-paddings);
+    line-height: 2;
+
+    p:first-child,
+    p:last-child {
+      margin: 0;
+    }
+  }
+
+  p {
+    color: #444;
+  }
+
+  &__link {
+    margin: auto 0.5rem 0 auto;
+    font-weight: 500;
+    font-size: var(--link-font-size);
+    padding-top: 0;
+    padding-right: 0;
+  }
+}
diff --git a/themes/xen-project/assets/css/molecules/slideshare-container.scss b/themes/xen-project/assets/css/molecules/slideshare-container.scss
new file mode 100644 (file)
index 0000000..976d496
--- /dev/null
@@ -0,0 +1,14 @@
+.slideshare-container {
+  position: relative;
+  width: 100%;
+  padding-bottom: 65%; /* 16:9 Aspect Ratio */
+}
+
+.slideshare-container iframe {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  max-width: 100%;
+}
diff --git a/themes/xen-project/assets/css/molecules/vertical-lists.scss b/themes/xen-project/assets/css/molecules/vertical-lists.scss
new file mode 100644 (file)
index 0000000..b5112e0
--- /dev/null
@@ -0,0 +1,62 @@
+.vertical-lists {
+  --cols: 4;
+  display: flex;
+  justify-content: space-between;
+  flex-wrap: wrap;
+  flex-direction: row;
+  gap: var(--sp-lg) var(--sp-md);
+  margin-top: var(--sp-md);
+
+  .list-column {
+    flex-basis: calc((100% / var(--cols)) - var(--sp-md));
+  }
+}
+.list-column {
+  flex: 1;
+  --border-left: 2px solid var(--color-brand-fill);
+  padding-left: var(--sp-sm-md);
+  border-left: var(--border-left);
+
+  ul,
+  li {
+    list-style: none;
+    padding: 0;
+    margin: 0;
+  }
+
+  *:first-child {
+    margin-top: 0;
+  }
+
+  &--sublists {
+    border-left: none;
+    padding-left: 0;
+
+    > ul {
+      margin-left: 0;
+    }
+
+    ul {
+      margin-top: var(--sp-sm-md);
+    }
+
+    ul li {
+      border-left: none;
+      margin-top: var(--sp-sm-md);
+    }
+
+    ul ul {
+      border-left: var(--border-left);
+      margin-left: var(--sp-md);
+      padding-left: var(--sp-sm);
+      padding-right: var(--sp-sm);
+    }
+  }
+
+  h2,
+  h3,
+  h4,
+  h5 {
+    margin-bottom: 1em;
+  }
+}
diff --git a/themes/xen-project/assets/css/molecules/video-container.scss b/themes/xen-project/assets/css/molecules/video-container.scss
new file mode 100644 (file)
index 0000000..9f1d95d
--- /dev/null
@@ -0,0 +1,14 @@
+.video-container {
+  position: relative;
+  padding-bottom: 56.25%; /* 16:9 Aspect Ratio */
+  overflow: hidden;
+  max-width: 100%;
+}
+
+.video-container iframe {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
diff --git a/themes/xen-project/assets/css/socials.scss b/themes/xen-project/assets/css/socials.scss
new file mode 100644 (file)
index 0000000..c848745
--- /dev/null
@@ -0,0 +1,40 @@
+.socials {
+  display: flex;
+  margin: 0;
+  list-style: none;
+  flex-direction: row;
+  padding: var(--sp-sm) var(--sp-xs);
+  justify-content: center;
+  gap: var(--sp-md);
+
+  &-footer {
+    gap: 8px;
+    justify-content: flex-start;
+    padding: 0;
+  }
+
+  @include tablet {
+    gap: 8px;
+  }
+
+  li {
+    margin: 0;
+  }
+
+  a {
+    display: flex;
+    padding: 8px;
+    border-radius: 50%;
+    background: var(--color-action-fill);
+    width: 32px;
+    height: 32px;
+    align-items: center;
+    justify-content: center;
+    text-decoration: none;
+    color: var(--color-action-on-fill);
+  }
+
+  a:hover {
+    background: var(--color-action-fill-hover);
+  }
+}
diff --git a/themes/xen-project/assets/css/spaces.scss b/themes/xen-project/assets/css/spaces.scss
new file mode 100644 (file)
index 0000000..19ec34e
--- /dev/null
@@ -0,0 +1,85 @@
+// Spacings declaration
+$spacings: (
+  /* 2px */ xxxs: 0.125rem,
+  /* 4px */ xxs: 0.25rem,
+  /* 8px */ xs: 0.5rem,
+  /* 12px */ sm: 0.75rem,
+  /* 16px */ sm-md: 1rem,
+  /* 18px */ sm-lg: 1.125rem,
+  /* 24px */ md: 1.5rem,
+  /* 40px */ lg: 2.5rem,
+  /* 80px */ xl: 5rem,
+  /* 96px */ xxl: 6rem,
+  /* 200px */ xxxl: 12.5rem,
+  /* 400px */ xxxxl: 25rem
+);
+
+// variables
+:root {
+  @each $name, $value in $spacings {
+    --sp-#{$name}: #{$value};
+  }
+}
+
+// margins
+@mixin generate-spacing-classes($prefix: "") {
+  // margins
+  @each $name, $value in $spacings {
+    .#{$prefix}mg-#{$name} {
+      margin: $value;
+    }
+    .#{$prefix}mg-t-#{$name} {
+      margin-top: $value;
+    }
+    .#{$prefix}mg-b-#{$name} {
+      margin-bottom: $value;
+    }
+    .#{$prefix}mg-l-#{$name} {
+      margin-left: $value;
+    }
+    .#{$prefix}mg-r-#{$name} {
+      margin-right: $value;
+    }
+    .#{$prefix}mg-v-#{$name} {
+      margin-top: $value;
+      margin-bottom: $value;
+    }
+    .#{$prefix}mg-h-#{$name} {
+      margin-left: $value;
+      margin-right: $value;
+    }
+  }
+
+  // paddings
+  @each $name, $value in $spacings {
+    .#{$prefix}pd-#{$name} {
+      padding: $value;
+    }
+    .#{$prefix}pd-t-#{$name} {
+      padding-top: $value;
+    }
+    .#{$prefix}pd-b-#{$name} {
+      padding-bottom: $value;
+    }
+    .#{$prefix}pd-l-#{$name} {
+      padding-left: $value;
+    }
+    .#{$prefix}pd-r-#{$name} {
+      padding-right: $value;
+    }
+    .#{$prefix}pd-v-#{$name} {
+      padding-top: $value;
+      padding-bottom: $value;
+    }
+    .#{$prefix}pd-h-#{$name} {
+      padding-left: $value;
+      padding-right: $value;
+    }
+  }
+}
+
+@include generate-spacing-classes();
+
+@include media-max("phone") {
+  @include generate-spacing-classes("mob-");
+}
diff --git a/themes/xen-project/assets/css/structure.scss b/themes/xen-project/assets/css/structure.scss
new file mode 100644 (file)
index 0000000..18a510b
--- /dev/null
@@ -0,0 +1,44 @@
+.main {
+  // break margin
+  &::before,
+  &::after {
+    content: "";
+    display: table;
+  }
+  padding-top: 0;
+  padding-bottom: 0;
+}
+
+.page-single {
+  &.with-aside {
+    display: flex;
+    flex-direction: column;
+    gap: var(--sp-lg);
+    margin-left: auto;
+    margin-right: auto;
+    max-width: 1920px;
+
+    @include tablet {
+      flex-direction: row;
+      gap: 0;
+
+      > .article,
+      > .page-aside {
+        padding-top: var(--sp-xl);
+      }
+
+      > .article h1 {
+        margin-top: 0;
+      }
+    }
+  }
+
+  @include tablet {
+    .single-content {
+      margin-top: var(--sp-lg);
+      .section-space:first-child {
+        margin-top: 0;
+      }
+    }
+  }
+}
diff --git a/themes/xen-project/assets/css/text-align.scss b/themes/xen-project/assets/css/text-align.scss
new file mode 100644 (file)
index 0000000..62b1224
--- /dev/null
@@ -0,0 +1,26 @@
+.txt-c {
+  text-align: center;
+}
+
+.txt-l {
+  text-align: left;
+}
+
+.txt-r {
+  text-align: right;
+}
+
+.txt-j {
+  text-align: justify;
+}
+.v-top {
+  vertical-align: top;
+}
+
+.v-mid {
+  vertical-align: middle;
+}
+
+.v-bot {
+  vertical-align: bottom;
+}
diff --git a/themes/xen-project/assets/css/typography.scss b/themes/xen-project/assets/css/typography.scss
new file mode 100644 (file)
index 0000000..c7bce54
--- /dev/null
@@ -0,0 +1,212 @@
+/* General Typography Styles */
+body {
+  font-family: "Gotham", sans-serif;
+  font-size: 1rem; /* Base font size */
+}
+
+/* Line heights and common styles for paragraphs and buttons */
+h1,
+h2,
+h3,
+.button-medium,
+.p1-bold,
+.p1-bold-underline,
+.p1-medium,
+.p1-medium-underline,
+.p1-book,
+.p1-book-underline {
+  line-height: var(--title-line-height);
+}
+
+.p1-bold,
+.p1-bold-underline,
+.p1-medium,
+.p1-medium-underline,
+.p1-book,
+.p1-book-underline {
+  font-size: 1.125rem; /* 18px */
+}
+
+.p1-medium,
+.p1-medium-underline,
+.p1-book,
+.p1-book-underline,
+.p2-medium,
+.p2-medium-underline,
+.p2-book,
+.p2-book-underline {
+  letter-spacing: -0.03125rem; /* -0.5px */
+}
+
+/* Headings */
+h1 {
+  font-size: var(--h1-font-size);
+  margin-top: var(--sp-md);
+  margin-bottom: var(--sp-md);
+  font-weight: 700;
+  line-height: 119%;
+  letter-spacing: -0.027em;
+}
+
+h2 {
+  font-weight: bold;
+  font-size: 2rem; /* 32px */
+  margin-top: 0.66em;
+  margin-bottom: 0.66em;
+  letter-spacing: -0.0194em;
+}
+
+h3 {
+  font-weight: bold;
+  font-size: 1.25rem; /* 24px */
+  line-height: 120%;
+}
+
+h1,
+h2,
+h3 {
+  strong {
+    color: var(--color-action-text);
+  }
+
+  a {
+    font-size: 1em;
+    text-decoration: none;
+
+    &:hover {
+      text-decoration: underline;
+    }
+  }
+}
+
+strong {
+  font-weight: 700;
+}
+
+/* Buttons */
+.button-medium {
+  font-weight: medium;
+  font-size: 1.125rem; /* 18px */
+}
+
+.button-medium-mobile {
+  font-weight: medium;
+  font-size: 1.125rem; /* 18px */
+  line-height: 1.2em;
+}
+
+/* Paragraphs */
+.p1-bold {
+  font-weight: bold;
+}
+
+.p1-bold-underline {
+  font-weight: bold;
+  text-decoration: underline;
+}
+
+.p1-medium {
+  font-weight: medium;
+}
+
+.p1-medium-underline {
+  font-weight: medium;
+  text-decoration: underline;
+}
+
+.p1-book {
+  line-height: 150%;
+  font-weight: book;
+}
+
+.p1-book-underline {
+  font-weight: book;
+  text-decoration: underline;
+}
+
+/* Common Styles */
+.p2-medium {
+  font-weight: medium;
+  font-size: 1rem; /* 16px */
+  line-height: 1.5em;
+}
+
+.p2-medium-underline {
+  font-weight: medium;
+  font-size: 1rem; /* 16px */
+  line-height: 1.5em;
+  text-decoration: underline;
+}
+
+.p2-book {
+  font-weight: book;
+  font-size: 1rem; /* 16px */
+  line-height: 1.5em;
+}
+
+.p2-book-underline {
+  font-weight: book;
+  font-size: 1rem; /* 16px */
+  line-height: 1.5em;
+  text-decoration: underline;
+}
+
+.c1-bold {
+  font-weight: bold;
+  font-size: 1rem; /* 16px */
+  text-transform: capitalize;
+  line-height: 1em;
+  letter-spacing: 0.00125rem; /* 0.02px */
+}
+
+.title-external-link {
+  color: var(--color-action-text);
+  font-size: 18px;
+  font-style: normal;
+  font-weight: 500;
+  line-height: 120%;
+  display: block;
+  margin-top: 10px;
+
+  @include tablet {
+    display: inline-block;
+    margin-left: 2rem;
+    vertical-align: middle;
+  }
+}
+
+p {
+  margin-bottom: var(--sp-xs);
+}
+
+/* Desktop Styles */
+@media (min-width: 768px) {
+  h1 {
+    font-size: 2.5rem; /* 40px */
+    line-height: 1.2em;
+  }
+
+  h2 {
+    font-size: 2.25rem; /* 36px */
+    line-height: 1.2em;
+  }
+
+  .button-medium {
+    font-size: 1.25rem; /* 20px */
+  }
+
+  .p1-bold,
+  .p1-bold-underline,
+  .p1-medium,
+  .p1-medium-underline,
+  .p1-book,
+  .p1-book-underline {
+    font-size: 1.25rem; /* 20px */
+  }
+}
+
+.page-top {
+  h1 {
+    color: var(--color-action-text);
+  }
+}
diff --git a/themes/xen-project/assets/css/variables.scss b/themes/xen-project/assets/css/variables.scss
new file mode 100644 (file)
index 0000000..522e42c
--- /dev/null
@@ -0,0 +1,35 @@
+:root {
+  --font-size: 1em;
+  --font-family: "gotham", sans-serif;
+
+  // icons
+  --font-family-icons: "Font Awesome 6 Pro";
+  --icon-arrow-right: "\f061";
+  --icon-arrow-down: "\f063";
+  --icon-arrow-left: "\f060";
+  --arrow-up-right-from-square: "\f08e";
+  --icon-bars: "\f0c9";
+  --icon-xmark: "\f00d";
+
+  // mobile
+  --section-space: var(--sp-lg);
+  --container-paddings: 12px;
+  --block-space: var(--sp-lg);
+  --container-width: 1520px;
+
+  --h1-font-size: 2.25rem; /* 40px */
+  --h2-font-size: 2rem; /* 32px */
+  --h3-font-size: 1.25rem; /* 20px */
+  --title-line-height: 1.5em;
+  --p1-font-size: 1.125rem; /* 18px */
+
+  @include tablet {
+    --container-paddings: var(--sp-lg);
+    --section-space: 160px;
+    --block-space: 160px;
+    --h1-font-size: 2.5rem; /* 40px */
+    --h2-font-size: 2.25rem; /* 36px */
+    --h3-font-size: 1.5rem; /* 24px */
+    --p1-font-size: 1.25rem; /* 20px */
+  }
+}
diff --git a/themes/xen-project/assets/js/carousel.js b/themes/xen-project/assets/js/carousel.js
new file mode 100644 (file)
index 0000000..f9e2fee
--- /dev/null
@@ -0,0 +1,185 @@
+(() => {
+  var selector = ".carousel-container";
+  const itemsBefore = 2;
+  const itemsAfter = 1;
+
+  const carousel = (element) => {
+    const carouselElement = element.querySelector(".carousel");
+
+    const carouselClone = carouselElement.cloneNode(true);
+    carouselClone.classList.add("carousel-clone");
+    carouselClone.style.setProperty("position", "absolute");
+    carouselClone.style.setProperty("left", "0");
+    carouselClone.style.setProperty("top", "-100px");
+    carouselClone.style.setProperty("width", "100%");
+    carouselClone.style.setProperty("overflow", "hidden");
+    carouselClone.style.setProperty("flex-wrap", "wrap");
+    carouselClone.style.setProperty("pointer-events", "none");
+    carouselClone.style.setProperty("visibility", "hidden");
+    carouselClone.style.setProperty("height", "100");
+    const getItemInformations = () => {
+      carouselElement.before(carouselClone);
+      carouselClone.style.setProperty("width", carouselElement.offsetWidth + "px");
+      const items = carouselClone.querySelectorAll(".carousel-item");
+      if (!items.length) return 0;
+      const item2 = items[1];
+      let occupiedSpace = item2.offsetLeft;
+
+      if (occupiedSpace === 0 && item2.offsetTop > 0) occupiedSpace = item2.offsetWidth + 40;
+      const width = item2.offsetWidth;
+      const height = [...items].reduce((acc, item) => (acc < item.offsetHeight ? item.offsetHeight : acc), 0);
+      carouselClone.remove();
+
+      return {
+        occupiedSpace,
+        width,
+        height,
+      };
+    };
+
+    // element.classList.add("carousel-start-init");
+
+    let prev = element.querySelector(".prev");
+    let next = element.querySelector(".next");
+    let items = element.querySelectorAll(".carousel-item");
+
+    // add the clone the last item to the first place and for the first item to the last place
+    // generic function to clone N last items to the first place and N first items to the last place
+
+    const cloneItems = (items, clones) => {
+      for (let i = 0; i <= clones; i++) {
+        carouselElement.appendChild(items[i].cloneNode(true));
+      }
+    };
+    cloneItems(items, itemsBefore);
+
+    const cloneItemsReverse = (items, clones) => {
+      for (let i = 0; i <= clones; i++) {
+        carouselElement.prepend(items[items.length - 1 - i].cloneNode(true));
+      }
+    };
+
+    cloneItemsReverse(items, itemsAfter);
+
+    const moveNext = function () {
+      let items = element.querySelectorAll(".carousel-item");
+      carouselElement.appendChild(items[0]);
+    };
+    next.addEventListener("click", moveNext);
+
+    const movePrev = function () {
+      let items = element.querySelectorAll(".carousel-item");
+      carouselElement.prepend(items[items.length - 1]);
+    };
+    prev.addEventListener("click", movePrev);
+
+    // mobile
+    let startX, moveX;
+
+    carouselElement.addEventListener("touchstart", (e) => {
+      startX = e.touches[0].clientX;
+    });
+
+    carouselElement.addEventListener("touchend", (e) => {
+      moveX = e.changedTouches[0].clientX - startX;
+      if (Math.abs(moveX) > 50) {
+        // Seuil de 50px pour considérer comme un swipe
+        if (moveX > 0) {
+          movePrev();
+        } else {
+          moveNext();
+        }
+      }
+    });
+
+    /** The rules are generated from the element width and container width
+     *  The rules are :
+     *  - nth-child(1) is opacity:0 and index -2
+     *  - nth-child(2) is opacity:0 and index -1
+     *  - nth-child(3) is opacity:1 and index 0
+     *  - nth-child(4) is opacity:1 and index 1
+     *  - ...
+     *  - nth-child(maxItems) is opacity:1 and index maxItems - 1
+     *
+     */
+    let styleTag;
+    let lastWindowWidth = -1;
+    const generateStyles = (element) => {
+      const windowWidth = window.innerWidth;
+      if (windowWidth === lastWindowWidth) return;
+      lastWindowWidth = windowWidth;
+      const rules = [];
+
+      // add carousel styles generated from the element width
+      if (!styleTag) {
+        styleTag = document.createElement("style");
+        document.head.appendChild(styleTag);
+      }
+
+      const { occupiedSpace, width: itemWidth, height } = getItemInformations();
+
+      if (occupiedSpace < 100) {
+        console.error("Error in the carousel, no item width detected");
+        return;
+      }
+
+      rules.push(`
+        .carousel-container {
+          --item-width: ${itemWidth}px;
+          --item-position: ${occupiedSpace}px;
+          --height: ${height}px;
+        }
+      `);
+
+      const itemsBefore = 3;
+      const itemsAfter = 2;
+
+      const carouselWidth = carouselElement.offsetWidth;
+      const maxItems = Math.floor(carouselWidth / occupiedSpace) + 1 + itemsBefore + itemsAfter;
+
+      let opacity = 0;
+      for (let i = 1; i <= maxItems; i++) {
+        if ((i >= itemsBefore && i < maxItems - itemsAfter) || i - itemsBefore === 0) {
+          opacity = 1;
+        } else if (i === maxItems - itemsAfter) {
+          opacity = 0.2;
+        } else {
+          opacity = 0;
+        }
+
+        const index = i - itemsBefore;
+        rules.push(`
+          .carousel-item:nth-child(${i}) {
+            --index: ${index};
+            opacity: ${opacity}; 
+            display: flex;
+          }
+        `);
+      }
+
+      styleTag.innerHTML = rules.join("\n");
+    };
+
+    const debounce = (func, delay) => {
+      let timeoutId;
+      return (...args) => {
+        clearTimeout(timeoutId);
+        timeoutId = setTimeout(() => func(...args), delay);
+      };
+    };
+
+    window.addEventListener(
+      "resize",
+      debounce(() => {
+        generateStyles(element);
+      }, 50),
+    );
+    generateStyles(element);
+
+    carouselElement.classList.add("carousel-initialized");
+  };
+
+  [...document.querySelectorAll(selector)].forEach((elm) => {
+    carousel(elm);
+  });
+})();
diff --git a/themes/xen-project/assets/js/latest-news.js b/themes/xen-project/assets/js/latest-news.js
new file mode 100644 (file)
index 0000000..76923fe
--- /dev/null
@@ -0,0 +1,60 @@
+(() => {
+  const selector = ".latest-news";
+  const blogs = [
+    {
+      id: "vates",
+      name: "Vates blog",
+      url: "http://localhost:2368",
+      API_KEY: "2e157e7c6896c98386e1022189",
+    },
+  ];
+
+  const createTemplate = (() => {
+    let template = "";
+    return () => {
+      if (!template) {
+        template = document.querySelector(".latest-news-template").innerHTML;
+      }
+      return new Function("_", "return `" + template + "`");
+    };
+  })();
+
+  const newsCardTemplate = createTemplate();
+
+  const latestnews = async (element) => {
+    const container = element.querySelector(".latest-news_container");
+    const { maxCards, blogFilter, tagFilter } = container.dataset;
+    const blogIds = blogFilter?.split(",") || blogs.map((blog) => blog.id);
+    const tags = (tagFilter?.split(",") || []).filter((tag) => tag !== "");
+    const posts = await getLatestPost({ maxCards: maxCards * 1 || 3, blogFilter: blogIds, tagFilter: tags });
+    container.innerHTML = posts.map(newsCardTemplate).join("");
+  };
+
+  const getLatestPost = async ({ maxCards, blogFilter, tagFilter }) => {
+    const blogsPosts = [];
+    for (const { url, API_KEY, name } of blogs.filter((blog) => blogFilter.includes(blog.id))) {
+      try {
+        const res = await fetch(
+          `${url}/ghost/api/content/posts/?key=${API_KEY}&limit=${tagFilter.length > 0 ? 100 : maxCards}&include=authors,tags${
+            tagFilter.length > 0 ? `&filter=tags:${tagFilter}` : ""
+          }`,
+        );
+        const { posts } = await res.json();
+        blogsPosts.push(
+          ...posts.map((post) => ({
+            ...post,
+            blogName: name,
+            blogUrl: url,
+          })),
+        );
+      } catch (e) {
+        console.error("Error on fetch blog posts for blog", url);
+      }
+    }
+    return blogsPosts.sort((a, b) => new Date(b.published_at) - new Date(a.published_at)).slice(0, maxCards);
+  };
+
+  [...document.querySelectorAll(selector)].forEach((elm) => {
+    latestnews(elm);
+  });
+})();
diff --git a/themes/xen-project/assets/js/main.js b/themes/xen-project/assets/js/main.js
new file mode 100644 (file)
index 0000000..b7937fa
--- /dev/null
@@ -0,0 +1,4 @@
+import "./utils.js";
+import "./menu.js";
+import "./carousel.js";
+import "./latest-news.js";
diff --git a/themes/xen-project/assets/js/menu.js b/themes/xen-project/assets/js/menu.js
new file mode 100644 (file)
index 0000000..5f8b6d4
--- /dev/null
@@ -0,0 +1,58 @@
+(() => {
+  /** mobile only **/
+  /** Menu events
+   * the menuToggle button only appears on mobile, then
+   * the menu is toggled on click on the menuToggle button
+   * and the events are applied to the menu or removed when
+   * the menu is toggled
+   */
+  const mobileMenu = () => {
+    const header = document.querySelector(".header");
+    const menuToggle = header.querySelector(".menu-toggle");
+
+    menuToggle.addEventListener("click", (e) => {
+      e.preventDefault();
+      toggleMenu();
+    });
+
+    const toggleMenu = () => {
+      header.classList.toggle("active");
+      applyHeaderEvents();
+    };
+
+    const manageClick = (menu) => (e) => {
+      const li = e.target.closest("li");
+      if (e.target.matches("a") && li.parentElement === menu && e.target.target !== "_blank") {
+        e.preventDefault();
+        li.classList.toggle("active");
+      }
+    };
+
+    const menu = header.querySelector(".header-nav .menu");
+    let eventHandler = manageClick(menu);
+    const applyHeaderEvents = () => {
+      if (header.classList.contains("active")) {
+        menu.addEventListener("click", eventHandler);
+      } else {
+        menu.removeEventListener("click", eventHandler);
+      }
+    };
+  };
+  mobileMenu();
+
+  const menu = document.querySelector(".header .menu");
+  let hasTouchCapability, hasMouseCapability;
+  const menuFirstLevelEventHandler = (e) => {
+    hasTouchCapability = "ontouchstart" in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;
+    if (!hasTouchCapability) return;
+
+    const li = e.target.closest("li");
+    if (e.target.matches("a") && li.parentElement === menu && e.target.target !== "_blank" && li.querySelector("ul")) {
+      e.preventDefault();
+    }
+  };
+
+  document.addEventListener("DOMContentLoaded", () => {
+    menu.addEventListener("click", menuFirstLevelEventHandler);
+  });
+})();
diff --git a/themes/xen-project/assets/js/mockup/mockup-blend-mode.js b/themes/xen-project/assets/js/mockup/mockup-blend-mode.js
new file mode 100644 (file)
index 0000000..418b6a3
--- /dev/null
@@ -0,0 +1,151 @@
+const mockupBlendMode = {
+  html: `
+    <div class="custom-select-wrapper">
+      <div class="custom-select" title="Blend mode (Ctrl+B)">
+        <div class="custom-select__trigger"><span>Normal</span></div>
+        <div class="custom-options">
+          <span class="custom-option selected" data-value="normal">Normal</span>
+          <span class="custom-option" data-value="difference">Difference</span>
+          <span class="custom-option" data-value="exclusion">Exclusion</span>
+        </div>
+      </div>
+    </div>
+  `,
+  css: `
+    .mockup-toolbar .custom-select-wrapper {
+      position: relative;
+      user-select: none;
+      width: 100%;
+    }
+    .custom-select {
+      position: relative;
+      display: flex;
+      flex-direction: column;
+      border: 1px solid #ccc;
+      border-radius: 3px;
+    }
+    .custom-select__trigger {
+      position: relative;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding: 0 8px;
+      font-size: 12px;
+      font-weight: 300;
+      color: #3b3b3b;
+      height: 24px;
+      line-height: 24px;
+      background: #ffffff;
+      cursor: pointer;
+      border-radius: 3px;
+    }
+    .custom-options {
+      position: absolute;
+      display: block;
+      top: 100%;
+      left: 0;
+      right: 0;
+      border: 1px solid #ccc;
+      border-top: 0;
+      background: #fff;
+      transition: all 0.3s;
+      opacity: 0;
+      visibility: hidden;
+      pointer-events: none;
+      z-index: 2;
+    }
+    .custom-select.open .custom-options {
+      opacity: 1;
+      visibility: visible;
+      pointer-events: all;
+    }
+    .custom-option {
+      position: relative;
+      display: block;
+      padding: 0 8px;
+      font-size: 12px;
+      font-weight: 300;
+      color: #3b3b3b;
+      line-height: 24px;
+      cursor: pointer;
+      transition: all 0.3s;
+    }
+    .custom-option:hover {
+      cursor: pointer;
+      background-color: #f0f0f0;
+    }
+    .custom-option.selected {
+      color: #ffffff;
+      background-color: #305c91;
+    }
+  `,
+  js: ({ toolbar, mockup, saveToLocalStorage, loadFromLocalStorage }) => {
+    const customSelect = toolbar.querySelector(".custom-select");
+    const customSelectTrigger = customSelect.querySelector(
+      ".custom-select__trigger",
+    );
+    const customOptions = customSelect.querySelectorAll(".custom-option");
+    let currentModeIndex = 0;
+
+    function closeSelectCustom() {
+      customSelect.classList.remove("open");
+    }
+
+    function updateBlendMode(mode) {
+      if (mockup.image) {
+        mockup.image.style.mixBlendMode = mode;
+        saveToLocalStorage("mockupMockupBlendMode", mode);
+      }
+    }
+
+    function selectOption(option) {
+      customSelectTrigger.textContent = option.textContent;
+      customOptions.forEach((opt) => opt.classList.remove("selected"));
+      option.classList.add("selected");
+      closeSelectCustom();
+      updateBlendMode(option.getAttribute("data-value"));
+    }
+
+    function cycleBlendMode() {
+      currentModeIndex = (currentModeIndex + 1) % customOptions.length;
+      selectOption(customOptions[currentModeIndex]);
+    }
+
+    customSelectTrigger.addEventListener("click", () => {
+      customSelect.classList.toggle("open");
+    });
+
+    customOptions.forEach((option, index) => {
+      option.addEventListener("click", () => {
+        currentModeIndex = index;
+        selectOption(option);
+      });
+    });
+
+    document.addEventListener("click", (e) => {
+      const isClickInside = customSelect.contains(e.target);
+      if (!isClickInside) closeSelectCustom();
+    });
+
+    document.addEventListener("keydown", (e) => {
+      if (e.key === "b" || e.key === "B") {
+        cycleBlendMode();
+      }
+    });
+
+    window.addEventListener("load", () => {
+      const savedBlendMode = loadFromLocalStorage("mockupMockupBlendMode");
+      if (savedBlendMode) {
+        const savedOption = Array.from(customOptions).find(
+          (option) => option.getAttribute("data-value") === savedBlendMode,
+        );
+        if (savedOption) {
+          currentModeIndex = Array.from(customOptions).indexOf(savedOption);
+          selectOption(savedOption);
+        }
+      }
+    });
+  },
+};
+
+export default mockupBlendMode;
diff --git a/themes/xen-project/assets/js/mockup/mockup-hide.js b/themes/xen-project/assets/js/mockup/mockup-hide.js
new file mode 100644 (file)
index 0000000..c6d971a
--- /dev/null
@@ -0,0 +1,46 @@
+/** Hide the toolbar
+ * Ctrl+I : Toggle the visibility of the mockup toolbar
+ */
+
+const mockupHide = {
+  toolbarHtml:
+    '<button type="button" class="mockup-button hide-mockup hidden-when-closed" title="Hide mockup (Ctrl+I)"></button>',
+  css: `
+    .mockup-toolbar.hidden { visibility:hidden;}
+    .mockup-toolbar .mockup-button.hide-mockup:before {
+      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 298 298'%3E%3Cpath d='M290 119.1h-11.3a36.9 36.9 0 0 0-30-22.7C237 94.5 206 94.1 206 94.1H92s-31 .4-42.8 2.3a36.9 36.9 0 0 0-30 22.7H8a8 8 0 0 0 0 16h7.6A74.2 74.2 0 0 0 25.8 177c17.6 29 55.2 41.2 93.4 2a76.3 76.3 0 0 0 21-33.4s.4-2.5.7-3.3c1.1-3.4 4.3-6.2 8-6.2h.2c3.6 0 6.7 2.7 8 6l.7 3.3a76.7 76.7 0 0 0 21 33.7c38.2 39.2 75.8 26.8 93.4-2.2a77.7 77.7 0 0 0 10-41.8h7.8a8 8 0 0 0 0-16zm-132.9 2.4c-2.5-.8-5.2-1.4-8-1.4h-.2c-2.8 0-5.5.6-8 1.4-1-4.2-2.8-7.4-5.2-11.4h26.6c-2.4 4-4.1 7.2-5.2 11.4z' fill='white'/%3E%3C/svg%3E");
+    }
+  `,
+  js: ({ toolbar, mockup, saveToLocalStorage, loadFromLocalStorage }) => {
+    let isMockupVisible = true;
+
+    const applyVisible = (state) => {
+      isMockupVisible = state;
+      if (mockup.image) {
+        mockup.image.style.visibility = isMockupVisible ? "visible" : "hidden";
+      }
+      toolbar.classList.toggle("hidden", !isMockupVisible);
+      saveToLocalStorage("mockupMockupVisible", isMockupVisible);
+    };
+
+    const toggleVisibility = () => applyVisible(!isMockupVisible);
+
+    toolbar
+      .querySelector(".hide-mockup")
+      .addEventListener("click", toggleVisibility);
+
+    document.addEventListener("keydown", (event) => {
+      if (event.ctrlKey && event.key === "i") {
+        event.preventDefault();
+        toggleVisibility();
+      }
+    });
+
+    mockup.imageOnload(() => {
+      const savedVisible = loadFromLocalStorage("mockupMockupVisible");
+      applyVisible(savedVisible !== null ? savedVisible : true);
+    });
+  },
+};
+
+export default mockupHide;
diff --git a/themes/xen-project/assets/js/mockup/mockup-opacity.js b/themes/xen-project/assets/js/mockup/mockup-opacity.js
new file mode 100644 (file)
index 0000000..b84eff5
--- /dev/null
@@ -0,0 +1,87 @@
+const mockupOpacity = {
+  html: `
+    <div class="module-content">
+      <input name="opacity" type="range" min="0" max="100" value="80" class="opacity-slider" title="Image opacity (Ctrl+J/L)"/>
+      <button type="button" class="mockup-button toggle-mockup" title="Toggle image visibility (Ctrl+K)"></button>
+    </div>
+  `,
+  css: `
+    .mockup-toolbar .mockup-button.toggle-mockup::before {
+      background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z'/%3E%3C/svg%3E");
+    }
+    .mockup-toolbar .mockup-button.toggle-mockup.hidden::before {
+      background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z'/%3E%3C/svg%3E");
+    }
+    .mockup-toolbar .opacity-slider {width: 60px;}
+  `,
+  js: ({ toolbar, mockup, saveToLocalStorage, loadFromLocalStorage }) => {
+    let isMockupVisible;
+    const toggleButton = toolbar.querySelector(".toggle-mockup");
+    const opacitySlider = toolbar.querySelector(".opacity-slider");
+
+    const toggleMockup = () => {
+      if (mockup.image) {
+        isMockupVisible = !isMockupVisible;
+        mockup.image.style.display = isMockupVisible ? "block" : "none";
+        toggleButton.classList.toggle("hidden", !isMockupVisible);
+        saveToLocalStorage("mockupMockupVisible", isMockupVisible);
+      }
+    };
+
+    const changeOpacity = (delta) => {
+      if (mockup.image) {
+        let newValue = parseInt(opacitySlider.value) + delta;
+        newValue = Math.max(0, Math.min(100, newValue));
+        opacitySlider.value = newValue;
+        mockup.image.style.opacity = newValue / 100;
+        saveToLocalStorage("mockupMockupOpacity", newValue);
+      }
+    };
+
+    toggleButton.addEventListener("click", toggleMockup);
+
+    opacitySlider.addEventListener("input", (e) => {
+      if (mockup.image) {
+        mockup.image.style.opacity = e.target.value / 100;
+        saveToLocalStorage("mockupMockupOpacity", e.target.value);
+      }
+    });
+
+    document.addEventListener("keydown", (e) => {
+      if (e.ctrlKey) {
+        switch (e.key) {
+          case "j":
+            changeOpacity(-5);
+            break;
+          case "l":
+            changeOpacity(5);
+            break;
+          case "k":
+            toggleMockup();
+            break;
+        }
+      }
+    });
+
+    mockup.imageOnload(() => {
+      const savedOpacity = loadFromLocalStorage("mockupMockupOpacity");
+      if (savedOpacity !== null) {
+        opacitySlider.value = savedOpacity;
+        if (mockup.image) {
+          mockup.image.style.opacity = savedOpacity / 100;
+        }
+      }
+
+      const savedVisible = loadFromLocalStorage("mockupMockupVisible");
+      if (savedVisible !== null) {
+        isMockupVisible = savedVisible;
+        if (mockup.image) {
+          mockup.image.style.display = isMockupVisible ? "block" : "none";
+          toggleButton.classList.toggle("hidden", !isMockupVisible);
+        }
+      }
+    });
+  },
+};
+
+export default mockupOpacity;
diff --git a/themes/xen-project/assets/js/mockup/mockup-position.js b/themes/xen-project/assets/js/mockup/mockup-position.js
new file mode 100644 (file)
index 0000000..727c1ae
--- /dev/null
@@ -0,0 +1,147 @@
+const imagePosition = {
+  html: `
+    <div class="module-content">
+      <input type="number" class="position-input" name="position-input" placeholder="Image position" size="3" title="Image position (Ctrl+Arrows, Shift+Arrows=step 10)"/>
+      <button type="button" class="mockup-button toggle-pointer-events" title="Toggle pointer events (Ctrl+P)"></button>
+    </div>
+  `,
+  css: `
+    .mockup-toolbar .mockup-button.toggle-pointer-events:before {
+      background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z"/></svg>');
+    }
+    .mockup-toolbar .mockup-button.toggle-pointer-events.active {
+      background: #3a7c3c;
+    }
+    .mockup-toolbar .position-input {
+      padding: 1px 2px;
+      width: 60px;
+    }
+  `,
+  js: ({ toolbar, mockup, saveToLocalStorage, loadFromLocalStorage }) => {
+    let isPointerEventsEnabled = false;
+    let isDragging = false;
+    let startY, startTop;
+    let lastPosition;
+    const positionInput = toolbar.querySelector(".position-input");
+    const togglePointerEventsButton = toolbar.querySelector(
+      ".toggle-pointer-events",
+    );
+
+    function updateImagePosition(position) {
+      lastPosition = position;
+      if (mockup.image) {
+        mockup.image.style.top = `${position}px`;
+        positionInput.value = position;
+        saveToLocalStorage("mockupMockupPosition", position);
+      }
+    }
+
+    function togglePointerEvents() {
+      if (mockup.image) {
+        isPointerEventsEnabled = !isPointerEventsEnabled;
+        mockup.image.style.pointerEvents = isPointerEventsEnabled
+          ? "auto"
+          : "none";
+        togglePointerEventsButton.style.background = isPointerEventsEnabled;
+        togglePointerEventsButton.classList.toggle(
+          "active",
+          isPointerEventsEnabled,
+        );
+
+        saveToLocalStorage("mockupMockupPointerEvents", isPointerEventsEnabled);
+      }
+    }
+
+    positionInput.addEventListener("change", (e) => {
+      updateImagePosition(parseInt(e.target.value));
+    });
+
+    togglePointerEventsButton.addEventListener("click", togglePointerEvents);
+
+    // Add keyboard shortcuts
+    document.addEventListener("keydown", (e) => {
+      if (e.ctrlKey && e.key === "p") {
+        togglePointerEvents();
+      }
+      if (isPointerEventsEnabled && mockup.image) {
+        if (e.key === "ArrowDown" || e.key === "ArrowUp") {
+          e.preventDefault(); // Prevent default page scrolling
+          if (e.shiftKey) {
+            // Shift + Arrow keys for 10px movement
+            if (e.key === "ArrowDown") {
+              updateImagePosition(lastPosition + 10);
+            } else if (e.key === "ArrowUp") {
+              updateImagePosition(lastPosition - 10);
+            }
+          } else {
+            // Regular Arrow keys for 1px movement
+            if (e.key === "ArrowDown") {
+              updateImagePosition(lastPosition + 1);
+            } else if (e.key === "ArrowUp") {
+              updateImagePosition(lastPosition - 1);
+            }
+          }
+        }
+      }
+    });
+
+    // Add event listeners for dragging (mouse and touch)
+    const startDrag = (e) => {
+      if (
+        isPointerEventsEnabled &&
+        mockup.image &&
+        (e.target === mockup.image || e.touches)
+      ) {
+        isDragging = true;
+        startY = e.clientY || e.touches[0].clientY;
+        startTop = lastPosition;
+        e.preventDefault();
+      }
+    };
+
+    const drag = (e) => {
+      if (isDragging) {
+        const clientY = e.clientY || e.touches[0].clientY;
+        const deltaY = clientY - startY;
+        const newPosition = startTop + deltaY;
+        updateImagePosition(newPosition);
+      }
+    };
+
+    const endDrag = () => {
+      isDragging = false;
+    };
+
+    document.addEventListener("mousedown", startDrag);
+    document.addEventListener("touchstart", startDrag);
+
+    document.addEventListener("mousemove", drag);
+    document.addEventListener("touchmove", drag);
+
+    document.addEventListener("mouseup", endDrag);
+    document.addEventListener("touchend", endDrag);
+
+    window.addEventListener("load", () => {
+      const savedPosition = loadFromLocalStorage("mockupMockupPosition");
+      updateImagePosition(savedPosition || 0);
+
+      const savedPointerEvents = loadFromLocalStorage(
+        "mockupMockupPointerEvents",
+      );
+      if (savedPointerEvents !== null) {
+        isPointerEventsEnabled = savedPointerEvents;
+        if (mockup.image) {
+          mockup.image.style.pointerEvents = isPointerEventsEnabled
+            ? "auto"
+            : "none";
+          togglePointerEventsButton.classList.toggle(
+            "active",
+            isPointerEventsEnabled,
+          );
+        }
+      }
+    });
+  },
+};
+
+export default imagePosition;
diff --git a/themes/xen-project/assets/js/mockup/mockup-style.js b/themes/xen-project/assets/js/mockup/mockup-style.js
new file mode 100644 (file)
index 0000000..3f1cc27
--- /dev/null
@@ -0,0 +1,113 @@
+const style = `
+.mockup-toolbar {
+  align-items: center;
+  background: #f0f0f0;
+  border: 1px solid #000;
+  border-radius: 8px;
+  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
+  display: flex;
+  flex-direction: column;
+  gap: 5px;
+  align-items: stretch;
+  justify-content: flex-end;
+  padding: 5px;
+  position: fixed;
+  right: 5px;
+  scale: 0.8;
+  top: 20px;
+  transform-origin: top right;
+  z-index: 99999;
+  letter-spacing: 0em;
+}
+.mockup-toolbar .buttons {
+  display: flex;
+  flex-direction: column;
+  align-items: flex-end;
+  gap: 5px;
+}
+
+.mockup-toolbar .mockup-button {
+  align-items: center;
+  background: #4caf50;
+  border: none;
+  border-radius: 5px;
+  color: white;
+  cursor: pointer;
+  display: flex;
+  font-family: inherit;
+  font-size: 1em;
+  justify-content: center;
+  padding: 8px;
+  text-align: center;
+  position: relative;
+}
+.mockup-toolbar .mockup-button.no-before:before {
+  content: none;
+  display: none;
+}
+.mockup-toolbar .mockup-button:before {
+  background-repeat: no-repeat;
+  background-size: contain;
+  content: "";
+  display: inline-block;
+  height: 1em;
+  width: 1em;
+}
+.mockup-toolbar .mockup-button:hover {
+  background: #45a049;
+}
+
+.mockup-toolbar .mockup-toolbar-buttons {
+  display: flex;
+  gap: 5px;
+  flex-direction: row;
+  align-items: center;
+  justify-content: right;
+  margin-left: auto;
+}
+.mockup-toolbar .mockup-toolbar-buttons .mockup-button {
+  font-size: 1em;
+  position: relative;
+  width: 1.5em;
+  aspect-ratio: 1;
+}
+  
+.mockup-toolbar .mockup-toolbar-buttons .mockup-button:before {
+  position: absolute;
+  inset: 0.2em;
+  background-size: contain;
+  width: auto;
+  height: auto; 
+}
+
+.mockup-toolbar-content {
+  display: flex;
+  flex-direction: column;
+  gap: 5px;
+}
+
+.mockupMockup-image {
+  left: 0;
+  opacity: 0.8;
+  pointer-events: none;
+  position: absolute;
+  top: 0;
+  width: 100%;
+  z-index: 9000;
+}
+.mockup-toolbar .module-content {
+  display: flex;
+  flex-direction: row;
+  gap: 4px;
+  justify-content: flex-end;
+  align-items: center;
+}
+`;
+
+const mockupStyle = (addStyle) => {
+  const styleEl = document.createElement("style");
+  styleEl.innerHTML = style + "\n" + addStyle;
+  document.head.appendChild(styleEl);
+};
+
+export default mockupStyle;
diff --git a/themes/xen-project/assets/js/mockup/mockup-toggle-toolbar.js b/themes/xen-project/assets/js/mockup/mockup-toggle-toolbar.js
new file mode 100644 (file)
index 0000000..d23b913
--- /dev/null
@@ -0,0 +1,78 @@
+const mockupWindowSize = {
+  toolbarHtml: `
+  <button type="button" class="mockup-button toggle-toolbar"></button>
+  `,
+  css: `
+    .mockup-toolbar.collapsed .mockup-toolbar-content,
+    .mockup-toolbar.collapsed .hidden-when-closed{
+      display: none;
+    }
+    .mockup-toolbar .mockup-button.toggle-toolbar:before {
+      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z' fill='white'/%3E%3C/svg%3E");
+    }
+
+  `,
+  js: ({ toolbar, mockup, saveToLocalStorage, loadFromLocalStorage }) => {
+    const toggleToolbarButton = toolbar.querySelector(".toggle-toolbar");
+
+    let isToolbarCollapsed = false;
+    let isDragging = false;
+    let startX, startY, startLeft, startTop;
+
+    toggleToolbarButton.addEventListener("mousedown", (e) => {
+      isDragging = true;
+      startX = e.clientX;
+      startY = e.clientY;
+      startTop = parseInt(getComputedStyle(toolbar).top);
+      e.preventDefault();
+    });
+
+    document.addEventListener("mousemove", (e) => {
+      if (!isDragging) return;
+      const dx = e.clientX - startX;
+      const dy = e.clientY - startY;
+      toolbar.style.top = `${startTop + dy}px`;
+    });
+
+    document.addEventListener("mouseup", () => {
+      if (isDragging) {
+        isDragging = false;
+        saveToLocalStorage("mockupToolbarPosition", {
+          top: parseFloat(toolbar.style.top, 10),
+        });
+      }
+    });
+
+    const toggleToolbar = () => {
+      if (isDragging) return;
+      isToolbarCollapsed = !isToolbarCollapsed;
+      toolbar.classList.toggle("collapsed", isToolbarCollapsed);
+      saveToLocalStorage("mockupToolbarCollapsed", isToolbarCollapsed);
+    };
+
+    toggleToolbarButton.addEventListener("click", toggleToolbar);
+
+    document.addEventListener("keydown", (e) => {
+      if (e.ctrlKey && e.key === "m") {
+        e.preventDefault();
+        toggleToolbar();
+      }
+    });
+
+    const savedToolbarState = loadFromLocalStorage("mockupToolbarCollapsed");
+    if (savedToolbarState !== null) {
+      isToolbarCollapsed = savedToolbarState;
+      toolbar.classList.toggle("collapsed", isToolbarCollapsed);
+    }
+    const savedToolbarPosition = loadFromLocalStorage("mockupToolbarPosition");
+
+    if (savedToolbarPosition) {
+      if (savedToolbarPosition.top > window.innerHeight) {
+        savedToolbarPosition.top = 10;
+      }
+      toolbar.style.top = savedToolbarPosition.top + "px";
+    }
+  },
+};
+
+export default mockupWindowSize;
diff --git a/themes/xen-project/assets/js/mockup/mockup-toolbar-scale.js b/themes/xen-project/assets/js/mockup/mockup-toolbar-scale.js
new file mode 100644 (file)
index 0000000..859c64b
--- /dev/null
@@ -0,0 +1,45 @@
+const mockupToolbarScale = {
+  toolbarHtml: `
+    <button type="button" class="mockup-button scale-up hidden-when-closed" title="Scale up (Ctrl+G)"></button>
+    <button type="button" class="mockup-button scale-down hidden-when-closed" title="Scale down (Ctrl+H)"></button>
+  `,
+  css: `
+    .mockup-toolbar .mockup-button.scale-up:before {
+      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z' fill='white'/%3E%3C/svg%3E");
+    }
+    .mockup-toolbar .mockup-button.scale-down:before {
+      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M19 13H5v-2h14v2z' fill='white'/%3E%3C/svg%3E");
+    }
+  `,
+  js: ({ toolbar, mockup, saveToLocalStorage, loadFromLocalStorage }) => {
+    const scaleUpButton = toolbar.querySelector(".scale-up");
+    const scaleDownButton = toolbar.querySelector(".scale-down");
+    let scale = loadFromLocalStorage("mockupToolbarScale") || 1;
+    function updateToolbarScale() {
+      toolbar.style.transform = `scale(${scale})`;
+      saveToLocalStorage("mockupToolbarScale", scale);
+    }
+    function scaleUp() {
+      scale += 0.5;
+      updateToolbarScale();
+    }
+    function scaleDown() {
+      scale = Math.max(0.8, scale - 0.5);
+      updateToolbarScale();
+    }
+    scaleUpButton.addEventListener("click", scaleUp);
+    scaleDownButton.addEventListener("click", scaleDown);
+    document.addEventListener("keydown", (event) => {
+      if (event.ctrlKey && event.key === "g") {
+        event.preventDefault();
+        scaleUp();
+      } else if (event.ctrlKey && event.key === "h") {
+        event.preventDefault();
+        scaleDown();
+      }
+    });
+    updateToolbarScale();
+  },
+};
+
+export default mockupToolbarScale;
diff --git a/themes/xen-project/assets/js/mockup/mockup-upload.js b/themes/xen-project/assets/js/mockup/mockup-upload.js
new file mode 100644 (file)
index 0000000..7f9c184
--- /dev/null
@@ -0,0 +1,90 @@
+const mockupUpload = {
+  html: `
+    <label class="input-file-container" title="Load image (Ctrl+U)">
+      <span class="input-file-label">Load image</span>
+      <span class="input-file">
+        <input type="file" accept="image/*"/>
+        <span class="mockup-button choose-mockup"></span>
+      </span>
+    </label>
+  `,
+  css: `
+    .mockup-toolbar .input-file {
+      display: inline-block;
+    }
+    .mockup-toolbar .input-file-container .input-file-label {
+      font-size: 0.8em;
+    }
+    .mockup-toolbar .input-file input {
+      display: none;
+    }
+    .mockup-toolbar .mockup-button.choose-mockup:before {
+      background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpolyline points='14 2 14 8 20 8' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
+    }
+  `,
+  js: ({ toolbar, mockup, saveToLocalStorage, loadFromLocalStorage }) => {
+    const input = toolbar.querySelector(".input-file input");
+    async function processAndSaveImage(file) {
+      const arrayBuffer = await file.arrayBuffer();
+      const blob = new Blob([arrayBuffer], { type: file.type });
+      const imageBitmap = await createImageBitmap(blob);
+      const canvas = document.createElement("canvas");
+      canvas.width = imageBitmap.width;
+      canvas.height = imageBitmap.height;
+      const ctx = canvas.getContext("2d");
+      ctx.drawImage(imageBitmap, 0, 0);
+      const webpBlob = await new Promise((resolve) =>
+        canvas.toBlob(resolve, "image/webp", 0.8),
+      );
+      const base64 = await new Promise((resolve) => {
+        const reader = new FileReader();
+        reader.onloadend = () => resolve(reader.result);
+        reader.readAsDataURL(webpBlob);
+      });
+      console.log(base64.length);
+      saveToLocalStorage("mockupMockupImage", base64);
+      createImage(base64);
+    }
+
+    input.addEventListener("change", async (e) => {
+      const file = e.target.files[0];
+      await processAndSaveImage(file);
+    });
+
+    function createImage(base64) {
+      if (!mockup.image) {
+        mockup.image = document.createElement("img");
+        mockup.image.className = "mockupMockup-image";
+        document.body.appendChild(mockup.image);
+      }
+      mockup.image.addEventListener("load", () => {
+        mockup.imageOnload();
+      });
+      mockup.image.src = base64;
+      mockup.image.style.display = "block";
+      let isVisibleFromlocation = loadFromLocalStorage("mockupMockupVisible");
+      isVisibleFromlocation =
+        isVisibleFromlocation === null ? true : isVisibleFromlocation;
+      if (isVisibleFromlocation !== null) {
+        isMockupVisible = isVisibleFromlocation;
+        mockup.image.style.display = isMockupVisible ? "block" : "none";
+      }
+    }
+
+    window.addEventListener("load", () => {
+      const savedImage = loadFromLocalStorage("mockupMockupImage");
+      if (savedImage) {
+        createImage(savedImage);
+      }
+    });
+
+    document.addEventListener("keydown", (e) => {
+      if (e.ctrlKey && e.key === "u") {
+        e.preventDefault();
+        input.click();
+      }
+    });
+  },
+};
+
+export default mockupUpload;
diff --git a/themes/xen-project/assets/js/mockup/mockup-window-size.js b/themes/xen-project/assets/js/mockup/mockup-window-size.js
new file mode 100644 (file)
index 0000000..e9c7126
--- /dev/null
@@ -0,0 +1,87 @@
+const mockupWindowSize = {
+  html: `
+    <div class="mockup-window-size">
+      <div>
+        <span class="comparison-sign"></span>
+        <span class="size-display"></span>
+      </div>
+      <span class="image-size"></span>
+    </div>
+  `,
+  css: `
+    .mockup-toolbar .mockup-window-size {
+      display: flex;
+      flex-direction: column;
+      align-items: flex-end;
+      justify-content: center;
+      font-size: 10px;
+    }
+    .mockup-toolbar .mockup-window-size .comparison-sign {
+      margin-right: 5px;
+      font-weight: bold;
+      font-size:1.2em;
+    }
+    .mockup-toolbar .mockup-window-size .size-display {
+      display: inline-block;
+      padding: 2px 13px;
+      color: white;
+      border-radius: 3px;
+      background-color: rgba(255, 0, 0, 0.7);
+    }
+    .mockup-toolbar .mockup-window-size .size-display.natural-width {
+      background-color: rgba(0, 128, 0, 0.7);
+    }
+    .mockup-toolbar .mockup-window-size .image-size {
+      margin-left: 10px;
+      color: #888;
+    }
+  `,
+  js: ({ toolbar, mockup, saveToLocalStorage, loadFromLocalStorage }) => {
+    const windowSizeElement = toolbar.querySelector(".mockup-window-size");
+    const comparisonSignElement =
+      windowSizeElement.querySelector(".comparison-sign");
+    const sizeDisplayElement = windowSizeElement.querySelector(".size-display");
+    const imageSizeElement = windowSizeElement.querySelector(".image-size");
+
+    function updateWindowSize() {
+      const windowWidth = window.innerWidth;
+      const windowHeight = window.innerHeight;
+
+      if (mockup.image === null) {
+        comparisonSignElement.textContent = "";
+        sizeDisplayElement.textContent = `${windowWidth} x ${windowHeight}`;
+        imageSizeElement.textContent = "";
+        return;
+      }
+
+      const imageWidth = mockup.image.naturalWidth;
+      const imageHeight = mockup.image.naturalHeight;
+      let comparisonSign = "=";
+
+      if (windowWidth < imageWidth) {
+        comparisonSign = "<";
+      } else if (windowWidth > imageWidth) {
+        comparisonSign = ">";
+      } else {
+        comparisonSign = "=";
+      }
+
+      comparisonSignElement.textContent = comparisonSign;
+      sizeDisplayElement.textContent = `${windowWidth} x ${windowHeight}`;
+      imageSizeElement.textContent = `(Image: ${imageWidth} x ${imageHeight})`;
+
+      if (windowWidth === imageWidth) {
+        sizeDisplayElement.classList.add("natural-width");
+      } else {
+        sizeDisplayElement.classList.remove("natural-width");
+      }
+    }
+
+    window.addEventListener("load", updateWindowSize);
+    window.addEventListener("resize", updateWindowSize);
+
+    mockup.imageOnload(updateWindowSize);
+  },
+};
+
+export default mockupWindowSize;
diff --git a/themes/xen-project/assets/js/mockup/mockup.js b/themes/xen-project/assets/js/mockup/mockup.js
new file mode 100644 (file)
index 0000000..d971133
--- /dev/null
@@ -0,0 +1,74 @@
+import style from "./mockup-style.js";
+import mockupHide from "./mockup-hide.js";
+import mockupUpload from "./mockup-upload.js";
+import mockupOpacity from "./mockup-opacity.js";
+import mockupPosition from "./mockup-position.js";
+import mockupBlendMode from "./mockup-blend-mode.js";
+import mockupWindowSize from "./mockup-window-size.js";
+import mockupToolbarScale from "./mockup-toolbar-scale.js";
+import mockupToggleToolbar from "./mockup-toggle-toolbar.js";
+
+const modules = [
+  // mockupHide,
+  mockupToolbarScale,
+  mockupToggleToolbar,
+  mockupWindowSize,
+  mockupUpload,
+  mockupOpacity,
+  mockupPosition,
+  mockupBlendMode,
+];
+(() => {
+  // read the cookie mockup
+  return;
+  const mockupCookie = document.cookie.split("; ").find((cookie) => cookie.startsWith("mockup"));
+  if (mockupCookie) {
+    if (mockupCookie.split("=")[1] === "disabled") {
+      return null;
+    }
+  }
+
+  const html = `
+    <div class="mockup-toolbar-buttons">
+      {{toolbarModules}}
+    </div>
+    <div class="mockup-toolbar-content">
+      <div class="buttons">
+        {{modules}}
+      </div>
+    </div>
+  `;
+  const toolbar = document.createElement("div");
+  toolbar.className = "mockup-toolbar";
+
+  const imageOnlockCallbacks = [];
+  const mockup = {
+    image: null,
+    imageOnload: (callback) => {
+      if (callback) {
+        imageOnlockCallbacks.push(callback);
+      } else {
+        imageOnlockCallbacks.forEach((callback) => callback());
+      }
+    },
+  };
+
+  // apply modules
+  toolbar.innerHTML = html
+    .replace("{{modules}}", modules.map((module) => module.html).join(""))
+    .replace("{{toolbarModules}}", modules.map((module) => module.toolbarHtml || "").join(""));
+
+  style(modules.map((module) => module.css).join(""));
+  modules.forEach((module) => module.js({ toolbar, mockup, saveToLocalStorage, loadFromLocalStorage }));
+
+  function saveToLocalStorage(key, value) {
+    localStorage.setItem(key, JSON.stringify(value));
+  }
+
+  function loadFromLocalStorage(key) {
+    const value = localStorage.getItem(key);
+    return value ? JSON.parse(value) : null;
+  }
+
+  document.body.appendChild(toolbar);
+})();
diff --git a/themes/xen-project/assets/js/utils.js b/themes/xen-project/assets/js/utils.js
new file mode 100644 (file)
index 0000000..3fcb589
--- /dev/null
@@ -0,0 +1,27 @@
+(() => {
+  /**
+   * Format a date to a specific format, default is "YYYY-MM-DD"
+   * @param {string} date - The date to format
+   * @param {string} format - The format to use
+   * @returns {string} The formatted date
+   */
+  const formatDate = (date, format = "YYYY-MM-DD") => {
+    const dateObj = new Date(date);
+    return format.replace(/YYYY|MM|DD/g, (match) => {
+      switch (match) {
+        case "YYYY":
+          return dateObj.getFullYear();
+        case "MM":
+          return (dateObj.getMonth() + 1).toString().padStart(2, "0");
+        case "DD":
+          return dateObj.getDate().toString().padStart(2, "0");
+        default:
+          return "";
+      }
+    });
+  };
+
+  window.XenSiteUtils = {
+    formatDate,
+  };
+})();
diff --git a/themes/xen-project/layouts/_default/404.html b/themes/xen-project/layouts/_default/404.html
new file mode 100644 (file)
index 0000000..a316262
--- /dev/null
@@ -0,0 +1,30 @@
+{{ define "main" }}
+  <div class="page-404-content background-curve-reverse-top">
+    <div class="container">
+      <div class="page-404__text">
+        <h1>Page not found!</h1>
+        <p>It seems the resource you want to access does not exist...</p>
+        <ul class="list-no-style">
+          <li>
+            <a href="/" class="btn btn-primary">
+              Back to homepage
+              <i class="fas fa-arrow-right"></i>
+            </a>
+          </li>
+          <li>
+            <a href="/projects" class="btn btn-secondary">
+              Discover projects
+              <i class="fas fa-arrow-right"></i>
+            </a>
+          </li>
+          <li>
+            <a href="/documentation" class="btn btn-secondary">
+              Access documentation
+              <i class="fas fa-arrow-up-right-from-square"></i>
+            </a>
+          </li>
+        </ul>
+      </div>
+    </div>
+  </div>
+{{ end }}
diff --git a/themes/xen-project/layouts/_default/_markup/render-link.html b/themes/xen-project/layouts/_default/_markup/render-link.html
new file mode 100644 (file)
index 0000000..4147e69
--- /dev/null
@@ -0,0 +1,9 @@
+<a
+  href="{{.Destination | safeURL}}"
+  {{with .Title}}
+    title="{{.}}"
+  {{end}}{{if strings.HasPrefix .Destination "http"}}
+    target="_blank" rel="noopener noreferrer"
+  {{end}}
+  >{{.Text | safeHTML}}</a
+>
diff --git a/themes/xen-project/layouts/_default/baseof.html b/themes/xen-project/layouts/_default/baseof.html
new file mode 100644 (file)
index 0000000..dd09023
--- /dev/null
@@ -0,0 +1,17 @@
+<!doctype html>
+<html
+  lang="{{ or site.Language.LanguageCode }}"
+  dir="{{ or site.Language.LanguageDirection `ltr` }}"
+>
+  <head>
+    {{ partial "head.html" . }}
+  </head>
+  <body class="{{ block "bodyClass" . }}{{ end }} {{ .Params.bodyClass }}">
+    {{ partial "header.html" . }}
+    <main class="main">
+      {{ block "main" . }}{{ end }}
+    </main>
+    {{ partial "footer.html" . }}
+    {{ partial "foot.html" . }}
+  </body>
+</html>
diff --git a/themes/xen-project/layouts/_default/content-only.html b/themes/xen-project/layouts/_default/content-only.html
new file mode 100644 (file)
index 0000000..7d5c15b
--- /dev/null
@@ -0,0 +1,18 @@
+{{ define "bodyClass" }}page-content-only{{ end }}
+{{ define "main" }}
+  <div class="container">
+    <h1>{{ .Title }}</h1>
+    {{ if .Description }}
+      <div class="description">
+        {{ .Description }}
+      </div>
+    {{ end }}
+  </div>
+
+  <div class="single-content">
+    <section class="container-small content-markdown">
+      {{ .Content }}
+    </section>
+  </div>
+  {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }}
+{{ end }}
diff --git a/themes/xen-project/layouts/_default/home.html b/themes/xen-project/layouts/_default/home.html
new file mode 100644 (file)
index 0000000..9e76ea0
--- /dev/null
@@ -0,0 +1,3 @@
+{{define "main"}}
+  {{.Content}}
+{{end}}
diff --git a/themes/xen-project/layouts/_default/list.html b/themes/xen-project/layouts/_default/list.html
new file mode 100644 (file)
index 0000000..50fc92d
--- /dev/null
@@ -0,0 +1,8 @@
+{{ define "main" }}
+  <h1>{{ .Title }}</h1>
+  {{ .Content }}
+  {{ range .Pages }}
+    <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+    {{ .Summary }}
+  {{ end }}
+{{ end }}
diff --git a/themes/xen-project/layouts/_default/redirect.html b/themes/xen-project/layouts/_default/redirect.html
new file mode 100644 (file)
index 0000000..5246c3b
--- /dev/null
@@ -0,0 +1,20 @@
+<!doctype html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8" />
+    <title>Redirecting&hellip;</title>
+    <link rel="canonical" href="{{ .Params.redirect | absURL }}" />
+    <script>location="{{ .Params.redirect | absURL }}"</script>
+    <meta
+      http-equiv="refresh"
+      content="0; url={{ .Params.redirect | absURL }}"
+    />
+    <meta name="robots" content="noindex" />
+  </head>
+  <body>
+    <h1>Redirecting&hellip;</h1>
+    <a href="{{ .Params.redirect | absURL }}"
+      >Click here if you are not redirected.</a
+    >
+  </body>
+</html>
diff --git a/themes/xen-project/layouts/_default/single.html b/themes/xen-project/layouts/_default/single.html
new file mode 100644 (file)
index 0000000..3481eda
--- /dev/null
@@ -0,0 +1,28 @@
+{{ define "main" }}
+  {{ $class := (.Page.Params.class | default "")  | add " page-single " }}
+  {{ if .Page.Params.aside }}
+    {{ $class = "with-aside " | add $class }}
+  {{ end }}
+  <div class="{{ $class }}">
+    {{ $asidePosition := .Page.Params.asidePosition | default "before" }}
+    {{ if eq $asidePosition "before" }}
+      {{ partial "aside.html" . }}
+    {{ end }}
+    <article class="article">
+      <div class="container page-top">
+        <h1>{{ .Title }}</h1>
+        <div class="description">
+          {{ .Description }}
+        </div>
+      </div>
+
+      <div class="single-content">
+        {{ .Content }}
+      </div>
+      {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }}
+    </article>
+    {{ if eq $asidePosition "after" }}
+      {{ partial "aside.html" . }}
+    {{ end }}
+  </div>
+{{ end }}
diff --git a/themes/xen-project/layouts/partials/aside.html b/themes/xen-project/layouts/partials/aside.html
new file mode 100644 (file)
index 0000000..563fc36
--- /dev/null
@@ -0,0 +1,43 @@
+{{ if .Params.aside }}
+  <aside class="page-aside">
+    {{ range .Params.aside }}
+      {{ if eq .type "resource" }}
+        <div class="box-resources">
+          <h3 class="box-resources__title">Resources</h3>
+          <ul>
+            {{ range .items }}
+              {{ if .title }}
+                <li>
+                  <h4>{{ .title }}</h4>
+                  <ul>
+                    {{ range .items }}
+                      {{ partial "layout/link-item.html" . }}
+                    {{ end }}
+                  </ul>
+                </li>
+              {{ else }}
+                {{ partial "layout/link-item.html" . }}
+              {{ end }}
+            {{ end }}
+          </ul>
+        </div>
+      {{ else if eq .type "members-list" }}
+        <div class="box-members">
+          <h3 class="box-members__title">{{ .name }}</h3>
+          <ul>
+            {{ range .items }}
+              <li>
+                {{ if .icon }}<i class="fa {{ .icon }}"></i>{{ end }}
+                {{ .name | markdownify }}
+              </li>
+            {{ end }}
+          </ul>
+        </div>
+      {{ else if eq .type "custom" }}
+        <div class="box-custom">
+          {{ .content | safeHTML }}
+        </div>
+      {{ end }}
+    {{ end }}
+  </aside>
+{{ end }}
diff --git a/themes/xen-project/layouts/partials/blocks/logos-circle.html b/themes/xen-project/layouts/partials/blocks/logos-circle.html
new file mode 100644 (file)
index 0000000..62265e6
--- /dev/null
@@ -0,0 +1,9 @@
+{{ $images := slice
+  (dict "name" "AMD" "src" "/img/logos/amd-logo.svg")
+  (dict "name" "AWS" "src" "/img/logos/aws-logo.svg")
+  (dict "name" "ARM" "src" "/img/logos/arm-logo.svg")
+  (dict "name" "EPAM" "src" "/img/logos/epam-logo.svg")
+  (dict "name" "XenServer" "src" "/img/logos/xenserver-logo.svg" "scale" "1.2")
+  (dict "name" "VATES" "src" "/img/logos/vates-logo.svg")
+}}
+{{ partial "images-in-circle.html" (dict "class" "mg-t-lg" "images" $images) }}
diff --git a/themes/xen-project/layouts/partials/feature-item.html b/themes/xen-project/layouts/partials/feature-item.html
new file mode 100644 (file)
index 0000000..e100ec5
--- /dev/null
@@ -0,0 +1,8 @@
+<li class="feature-item">
+  <div class="feature-content">
+    <h2 class="feature-item__title">
+      <i class="feature-item__icon {{ .icon }}"></i> {{ .title }}
+    </h2>
+    <p>{{ .description }}</p>
+  </div>
+</li>
diff --git a/themes/xen-project/layouts/partials/foot.html b/themes/xen-project/layouts/partials/foot.html
new file mode 100644 (file)
index 0000000..8d80673
--- /dev/null
@@ -0,0 +1 @@
+{{partialCached "js.html" .}}
diff --git a/themes/xen-project/layouts/partials/footer.html b/themes/xen-project/layouts/partials/footer.html
new file mode 100644 (file)
index 0000000..6e6e323
--- /dev/null
@@ -0,0 +1,40 @@
+<div class="footer">
+  <div class="footer-content">
+    <div class="footer__col footer__text">
+      <div>
+
+        <h3>About Xen Project</h3>
+        <p class="p1-book">
+          The mission of the Xen Project is to advance virtualization technology
+          across a wide range of commercial and open-source domains.
+        </p>
+        {{ partial "socials.html"  (dict "class" "socials-footer") }}
+      </div>
+
+
+      <div>
+        <h3>A Linux Foundation Project</h3>
+        <p class="p1-book">
+          The Linux Foundation provides a neutral, trusted hub for developers to
+          code, manage, and scale open technology projects.
+        </p>
+        <p><a href="https://www.linuxfoundation.org/">Visit the Linux Foundation
+ <i class="fas fa-arrow-up-right-from-square"></i></a></p>
+        <p><a href="TODO">Privacy Policy <i class="fas fa-arrow-up-right-from-square"></i></a></p>
+        <p><a href="TODO">Terms of Use <i class="fas fa-arrow-up-right-from-square"></i></a></p>
+      </div>
+    </div>
+
+    <div class="footer__col footer__menu">
+      <ul>
+        {{- $menuID := "main" }}  <!-- ID du menu que vous souhaitez utiliser -->
+        {{- $menu := index .Site.Menus $menuID }}
+        {{- if $menu }}
+          {{- partial "menu/walk.html" (dict "page" . "menuEntries" $menu "isFooter" true) }}  
+        {{- end }}
+      </ul>
+    </div>
+  </div>
+</footer>
+
+{{/*  <p>Copyright {{ now.Year }}. All rights reserved.</p>  */}}
diff --git a/themes/xen-project/layouts/partials/head.html b/themes/xen-project/layouts/partials/head.html
new file mode 100644 (file)
index 0000000..1ec3484
--- /dev/null
@@ -0,0 +1,10 @@
+<meta charset="utf-8" />
+<meta name="viewport" content="width=device-width" />
+<title>
+  {{ if .IsHome }}
+    {{ site.Title }}
+  {{ else }}
+    {{ printf "%s | %s" .Title site.Title }}
+  {{ end }}
+</title>
+{{ partialCached "head/css.html" . }}
diff --git a/themes/xen-project/layouts/partials/head/css.html b/themes/xen-project/layouts/partials/head/css.html
new file mode 100644 (file)
index 0000000..260d4f5
--- /dev/null
@@ -0,0 +1,15 @@
+{{/* {{ $opts := dict "transpiler" "libsass" "targetPath" "css/style.css" }}
+*/}}
+{{ $opts := dict "transpiler" "libsass" "targetPath" "css/style.css" "enableSourceMap" (not hugo.IsProduction) }}
+
+{{ with resources.Get "css/main.scss" | toCSS $opts | minify | fingerprint }}
+  <!-- prettier-ignore -->
+  <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous" />
+{{ end }}
+
+
+<!-- Font awesome pro (to delete after) -->
+<link rel="stylesheet" href="/font-awesomepro/fontawesome.css" />
+<link rel="stylesheet" href="/font-awesomepro/regular.css" />
+<link rel="stylesheet" href="/font-awesomepro/solid.css" />
+<link rel="stylesheet" href="/font-awesomepro/brands.css" />
diff --git a/themes/xen-project/layouts/partials/header.html b/themes/xen-project/layouts/partials/header.html
new file mode 100644 (file)
index 0000000..3492d35
--- /dev/null
@@ -0,0 +1,12 @@
+<header class="header">
+  <div class="header-logo">
+    <a href="/">
+      <img src="/img/logo-xen.svg" alt="Xen-Project" />
+    </a>
+  </div>
+  <button class="menu-toggle btn btn-tertiary" title="Toggle menu"></button>
+  <div class="header-content" data-menu-title="Menu">
+    {{ partial "menu.html" (dict "menuID" "main" "page" .) }}
+    {{ partial "socials.html" }}
+  </div>
+</header>
diff --git a/themes/xen-project/layouts/partials/images-in-circle.html b/themes/xen-project/layouts/partials/images-in-circle.html
new file mode 100644 (file)
index 0000000..6853a41
--- /dev/null
@@ -0,0 +1,11 @@
+<ul class="images-in-circle {{ .class }}">
+  {{ range .images }}
+    <li>
+      <img
+        src="{{ .src }}"
+        alt="{{ .name }}"
+        style="transform: scale({{ .scale }});"
+      />
+    </li>
+  {{ end }}
+</ul>
diff --git a/themes/xen-project/layouts/partials/js.html b/themes/xen-project/layouts/partials/js.html
new file mode 100644 (file)
index 0000000..5d3e1a1
--- /dev/null
@@ -0,0 +1,25 @@
+{{- with resources.Get "js/main.js" }}
+  {{- if eq hugo.Environment "development" }}
+    {{- $opts := dict "sourceMap" "inline" }}
+    {{- with . | js.Build $opts }}
+      <script src="{{ .RelPermalink }}"></script>
+    {{- end }}
+  {{- else }}
+    {{- $opts := dict "minify" true }}
+    {{- with . | js.Build $opts | fingerprint }}
+      <script
+        src="{{ .RelPermalink }}"
+        integrity="{{- .Data.Integrity }}"
+        crossorigin="anonymous"
+      ></script>
+    {{- end }}
+  {{- end }}
+{{- end }}
+
+{{- with resources.Get "js/mockup/mockup.js" }}
+  {{- if eq hugo.Environment "development" }}
+    {{- with . | js.Build }}
+      <script src="{{ .RelPermalink }}"></script>
+    {{- end }}
+  {{- end }}
+{{- end }}
diff --git a/themes/xen-project/layouts/partials/latest-news.html b/themes/xen-project/layouts/partials/latest-news.html
new file mode 100644 (file)
index 0000000..455c51e
--- /dev/null
@@ -0,0 +1,32 @@
+<div class="latest-news">
+  <h2>
+    Latest <strong>news</strong>
+    <a href="htttps://blog.xen-project.org" class="title-external-link"
+      >Read all news <i class="fas fa-arrow-up-right-from-square"></i
+    ></a>
+  </h2>
+  <script type="text/html" class="latest-news-template">
+    <div class="news-card">
+      <div class="news-card__date">${XenSiteUtils.formatDate(_.published_at)}</div>
+      <h3 class="news-card__label">${_.title}</h3>
+      ${_.tags ? `
+      <div class="news-card__tag">
+        ${_.tags.map(tag => `<a href="${tag.url}" target="_blank">${tag.name}</a>`).join(" ")}
+      </div>
+      ` : ""}
+      <p class="news-card__description">${_.excerpt}</p>
+      ${_.authors ? `
+      <div class="news-card__author">
+        By ${_.authors.map(author => `<a href="${author.url}" target="_blank">${author.name}</a>`).join(", ")}
+      </div>
+      ` : ""}
+      <p class="news-card__read-more p1-bold">
+        <a href="${_.url}">
+          Read more
+          <i class="fas fa-arrow-up-right-from-square"></i>
+        </a>
+      </p>
+    </div>
+  </script>
+  <div class="latest-news_container news-container"></div>
+</div>
diff --git a/themes/xen-project/layouts/partials/layout/link-item.html b/themes/xen-project/layouts/partials/layout/link-item.html
new file mode 100644 (file)
index 0000000..785a272
--- /dev/null
@@ -0,0 +1,10 @@
+<li>
+  <a href="{{ .link }}" target="_blank">
+    {{ .name }}
+    {{ if .icon }}
+      <i class="{{ .icon }}"></i>
+    {{ else }}
+      <i class="fas fa-arrow-up-right-from-square"></i>
+    {{ end }}
+  </a>
+</li>
diff --git a/themes/xen-project/layouts/partials/media-block.html b/themes/xen-project/layouts/partials/media-block.html
new file mode 100644 (file)
index 0000000..1bf2803
--- /dev/null
@@ -0,0 +1,64 @@
+{{ $title := .Title }}
+{{ $title := $title | replaceRE "\\*\\*(.+?)\\*\\*" "<strong>$1</strong>" }}
+{{ $title := $title | replaceRE "\\*(.+?)\\*" "<em>$1</em>" }}
+{{ $titleLevel := .TitleLevel | default "2" }}
+{{ $class := .Class | default "" }}
+
+<div
+  class="media-block {{ if eq .MediaPosition "left" }} 
+    media-block--left
+  {{ else }}
+    media-block--right
+  {{ end }}
+  {{ if eq .MobileMediaPosition "top" }}
+    media-block--mobile-top
+  {{ end }}
+  {{ if eq .MobileMediaPosition "bottom" }}
+    media-block--mobile-bottom
+  {{ end }}
+    {{ $class }}
+  "
+>
+  <div class="media-block__content">
+    {{ if .Label }}
+      <div class="media-block__label">{{ .Label }}</div>
+    {{ end }}
+    {{ if .Title }}
+      <h{{ $titleLevel }} class="media-block__title">{{ $title | safeHTML }}</h{{ $titleLevel }}>
+    {{ end }}
+    <div class="media-block__text">
+      {{ .Content  | safeHTML }}
+    </div>
+  </div>
+  <div class="media-block__media">
+    {{ if .Image }}
+      <img
+        src="{{ .Site.BaseURL }}{{ .Image }}"
+        alt="{{ .ImageAlt }}"
+        {{ if .ImageSize }}width="{{ .ImageSize }}" height="auto"{{ end }}
+      />
+    {{ else if .Media }}
+      {{ $trimmedMedia := trim .Media " \n\r\t" }}
+      {{ $lowerMedia := lower $trimmedMedia }}
+      {{ if or (findRE "\\.png$|\\.jpg$|\\.jpeg$|\\.avif$|\\.webp$|\\.gif$|\\.svg$" $lowerMedia) }}
+        <img
+          src="{{ $trimmedMedia }}"
+          alt="{{ .ImageAlt | default "Media image" }}"
+          {{ if .ImageSize }}width="{{ .ImageSize }}" height="auto"{{ end }}
+        />
+      {{ else if findRE "\\.mp4$" $lowerMedia }}
+        {{ partial "video-player.html" (dict "url" $trimmedMedia) }}
+      {{ else if in $lowerMedia "youtube.com" }}
+        {{ partial "youtube.html" (dict "id" (index (last 1 (split $trimmedMedia "=")) 0)) }}
+      {{ else if in $lowerMedia "slideshare.net" }}
+        {{ partial "slideshare.html" (dict "url" $trimmedMedia) }}
+      {{ else }}
+        {{ if hasPrefix $trimmedMedia "{{<" }}
+          {{ $trimmedMedia | markdownify | replaceRE "</?pre>" "" | replaceRE "</?code>" "" | safeHTML }}
+        {{ else }}
+          {{ $trimmedMedia | safeHTML }}
+        {{ end }}
+      {{ end }}
+    {{ end }}
+  </div>
+</div>
diff --git a/themes/xen-project/layouts/partials/menu.html b/themes/xen-project/layouts/partials/menu.html
new file mode 100644 (file)
index 0000000..6d81ed5
--- /dev/null
@@ -0,0 +1,19 @@
+{{- /*
+  Renders a menu for the given menu ID.
+
+  @context {page} page The current page.
+  @context {string} menuID The menu ID.
+
+  @example: {{ partial "menu.html" (dict "menuID" "main" "page" . "isFooter" false)
+}}
+}} */}}
+{{- $page := .page }}
+{{- $menuID := .menuID }}
+
+{{- with index site.Menus $menuID }}
+  <nav class="header-nav">
+    <ul class="menu">
+      {{ partial "menu/walk.html" (dict "page" $page "menuEntries" . "isFooter" false) }}
+    </ul>
+  </nav>
+{{- end }}
diff --git a/themes/xen-project/layouts/partials/menu/walk.html b/themes/xen-project/layouts/partials/menu/walk.html
new file mode 100644 (file)
index 0000000..7105a9e
--- /dev/null
@@ -0,0 +1,36 @@
+{{- $page := .page -}}
+{{- $isFooter := .isFooter | default false -}}
+{{- range .menuEntries -}}
+  {{- $showInFooterOnly := false -}}
+  {{- with .Page -}}{{- $showInFooterOnly = .Params.showInFooterOnly -}}{{- end -}}
+  {{- $shouldDisplay := or (and (not $isFooter) (not $showInFooterOnly)) (and $isFooter (or (not $showInFooterOnly) $showInFooterOnly)) -}}
+  {{- if eq .Name "More" -}}
+    {{- $visibleChildren := 0 -}}
+    {{- range .Children -}}{{- if or $isFooter (not .Page.Params.showInFooterOnly) -}}{{- $visibleChildren = add $visibleChildren 1 -}}{{- end -}}{{- end -}}
+    {{- if and $shouldDisplay (gt $visibleChildren 0) -}}
+      <li>
+        {{- $attrs := dict "href" .URL -}}
+        {{- if .Params.target -}}{{- $attrs = merge $attrs (dict "target" .Params.target) -}}{{- end -}}
+        {{- if $page.IsMenuCurrent .Menu . -}}{{- $attrs = merge $attrs (dict "class" "active" "aria-current" "page") -}}
+        {{- else if $page.HasMenuCurrent .Menu . -}}{{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") -}}{{- end -}}
+        {{- $name := .Name | safeHTML -}}
+        {{- with .Identifier -}}{{- with T . -}}{{- $name = . | safeHTML -}}{{- end -}}{{- end -}}
+        <a{{- range $k, $v := $attrs -}}{{- with $v }} {{ printf "%s=%q" $k $v | safeHTMLAttr }}{{- end -}}{{- end -}}>{{ $name }}</a>
+        <ul>
+          {{- range .Children -}}{{- if or $isFooter (not .Page.Params.showInFooterOnly) -}}<li><a href="{{ .URL }}">{{ .Name }}</a></li>{{- end -}}{{- end -}}
+        </ul>
+      </li>
+    {{- end -}}
+  {{- else if $shouldDisplay -}}
+    <li>
+      {{- $attrs := dict "href" .URL -}}
+      {{- if .Params.target -}}{{- $attrs = merge $attrs (dict "target" .Params.target) -}}{{- end -}}
+      {{- if $page.IsMenuCurrent .Menu . -}}{{- $attrs = merge $attrs (dict "class" "active" "aria-current" "page") -}}
+      {{- else if $page.HasMenuCurrent .Menu . -}}{{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") -}}{{- end -}}
+      {{- $name := .Name | safeHTML -}}
+      {{- with .Identifier -}}{{- with T . -}}{{- $name = . | safeHTML -}}{{- end -}}{{- end -}}
+      <a{{- range $k, $v := $attrs -}}{{- with $v }} {{ printf "%s=%q" $k $v | safeHTMLAttr }}{{- end -}}{{- end -}}>{{ $name }}</a>
+      {{- with .Children }}<ul>{{ partial "menu/walk.html" (dict "page" $page "menuEntries" . "isFooter" $isFooter) }}</ul>{{- end -}}
+    </li>
+  {{- end -}}
+{{- end -}}
\ No newline at end of file
diff --git a/themes/xen-project/layouts/partials/news-card.html b/themes/xen-project/layouts/partials/news-card.html
new file mode 100644 (file)
index 0000000..f617cc8
--- /dev/null
@@ -0,0 +1,17 @@
+<div class="card">
+  <div class="card__date">{{.Date}}</div>
+  <h2 class="card__label">{{.Title}}</h2>
+  {{with .Tags}}
+    <div class="card__tag">{{delimit . ", "}}</div>
+  {{end}}
+  <p class="card__description">
+    {{.Summary | truncate 160}}
+  </p>
+  {{with .Author}}
+    <div class="card__author">By {{.Author}}</div>
+  {{end}}
+  <a href="{{.Permalink}}" class="card__read-more">
+    {{.LinkTitle}}
+    <i class="fas fa-arrow-up-right-from-square"></i>
+  </a>
+</div>
diff --git a/themes/xen-project/layouts/partials/project-card.html b/themes/xen-project/layouts/partials/project-card.html
new file mode 100644 (file)
index 0000000..56661d1
--- /dev/null
@@ -0,0 +1,7 @@
+<div class="project-card {{ .class }}">
+  <h3 class="project-card__title">{{ .title | safeHTML }}</h3>
+  <div class="project-card__content">{{ .description | safeHTML }}</div>
+  <a href="{{ .link }}" class="project-card__link btn btn-tertiary">
+    {{ .linkText | default "Discover" }} <i class="fas fa-arrow-right"></i>
+  </a>
+</div>
diff --git a/themes/xen-project/layouts/partials/slideshare.html b/themes/xen-project/layouts/partials/slideshare.html
new file mode 100644 (file)
index 0000000..e0abc6d
--- /dev/null
@@ -0,0 +1,17 @@
+{{- $url := .url -}}
+{{- $width := default "595" .width -}}
+{{- $height := default "485" .height -}}
+
+
+<div class="slideshare-container">
+  <iframe
+    src="{{ $url }}"
+    width="{{ $width }}"
+    height="{{ $height }}"
+    frameborder="0"
+    marginwidth="0"
+    marginheight="0"
+    scrolling="no"
+    allowfullscreen
+  ></iframe>
+</div>
diff --git a/themes/xen-project/layouts/partials/socials.html b/themes/xen-project/layouts/partials/socials.html
new file mode 100644 (file)
index 0000000..ce82b4d
--- /dev/null
@@ -0,0 +1,38 @@
+<ul class="socials {{ .class | default "" }}">
+  <li>
+    <a
+      href="https://www.twitter.com/xen_org"
+      target="_blank"
+      rel="noopener noreferrer"
+    >
+      <i class="fab fa-twitter"></i>
+    </a>
+  </li>
+  <li>
+    <a
+      href="https://www.linkedin.com/company/xen-project"
+      target="_blank"
+      rel="noopener noreferrer"
+    >
+      <i class="fab fa-linkedin"></i>
+    </a>
+  </li>
+  <li>
+    <a
+      href="https://www.youtube.com/user/XenProjectOrg"
+      target="_blank"
+      rel="noopener noreferrer"
+    >
+      <i class="fab fa-youtube"></i>
+    </a>
+  </li>
+  <li>
+    <a
+      href="https://comments.xenproject.org"
+      target="_blank"
+      rel="noopener noreferrer"
+    >
+      <i class="far fa-comments"></i>
+    </a>
+  </li>
+</ul>
diff --git a/themes/xen-project/layouts/partials/terms.html b/themes/xen-project/layouts/partials/terms.html
new file mode 100644 (file)
index 0000000..8a6ebec
--- /dev/null
@@ -0,0 +1,23 @@
+{{- /*
+For a given taxonomy, renders a list of terms assigned to the page.
+
+@context {page} page The current page.
+@context {string} taxonomy The taxonomy.
+
+@example: {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }}
+*/}}
+
+{{- $page := .page }}
+{{- $taxonomy := .taxonomy }}
+
+{{- with $page.GetTerms $taxonomy }}
+  {{- $label := (index . 0).Parent.LinkTitle }}
+  <div>
+    <div>{{ $label }}:</div>
+    <ul>
+      {{- range . }}
+        <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
+      {{- end }}
+    </ul>
+  </div>
+{{- end }}
diff --git a/themes/xen-project/layouts/partials/vertical-lists.html b/themes/xen-project/layouts/partials/vertical-lists.html
new file mode 100644 (file)
index 0000000..bfb41b5
--- /dev/null
@@ -0,0 +1,60 @@
+{{ define "partials/link-with-arrow" }}
+
+{{ if .link}}
+<a href="{{ .link }}">{{ .title | markdownify }} <i class="fas fa-arrow-right"></i></a>
+{{ else }}
+<span>{{ .title | markdownify }}</span>
+{{ end }}
+{{ if .items }}
+<ul>
+  {{ range .items }}
+  <li>
+    {{ if reflect.IsMap . }}
+      {{ if and .link }}
+          {{ template "partials/link-with-arrow" . }}
+      {{ end }}
+    {{ else }}
+      {{ . | markdownify }}
+    {{ end }}
+  </li>
+  {{ end }}
+</ul>
+{{ end }}
+{{ end }}
+
+{{ $headerLevel := .headerLevel  }}
+
+<!-- Le reste du contenu du fichier suit ici -->
+<div class="vertical-lists" {{ if .cols }}style="--cols:{{ .cols }};"{{ end }}>
+  {{ range .lists }}
+    <div class="list-column {{ with $.colClass }}{{ . }}{{ end }}">
+      {{ if $headerLevel }}
+        <h{{ $headerLevel }}>{{ .title | markdownify }}</h{{ $headerLevel }}>
+      {{ else }}
+        <h2>{{ .title | markdownify }}</h2>
+      {{ end }}
+     
+      {{ if .items }}
+        <ul>
+          {{ range .items }}
+            <li>
+              {{ if reflect.IsMap . }}
+                {{ template "partials/link-with-arrow" . }}
+                {{ .text | markdownify }}
+              {{ else }}
+                {{ . | markdownify }}
+              {{ end }}
+            </li>
+          {{ end }}
+        </ul>
+      {{ end }}
+      {{ if .text }}
+        {{ if findRE "<[^>]*>" .text }}
+          {{ .text | safeHTML }}
+        {{ else }}
+          {{ .text | markdownify }}
+        {{ end }}
+      {{ end }}
+    </div>
+  {{ end }}
+</div>
diff --git a/themes/xen-project/layouts/partials/video-player.html b/themes/xen-project/layouts/partials/video-player.html
new file mode 100644 (file)
index 0000000..bb3932e
--- /dev/null
@@ -0,0 +1,20 @@
+{{- $url := .url -}}
+{{- $width := default "640" .width -}}
+{{- $height := default "360" .height -}}
+{{- $autoplay := default false .autoplay -}}
+{{- $controls := default true .controls -}}
+{{- $loop := default false .loop -}}
+{{- $muted := default false .muted -}}
+
+
+<video
+  width="{{ $width }}"
+  height="{{ $height }}"
+  {{ if $autoplay }}autoplay{{ end }}
+  {{ if $controls }}controls{{ end }}
+  {{ if $loop }}loop{{ end }}
+  {{ if $muted }}muted{{ end }}
+>
+  <source src="{{ $url }}" type="video/mp4" />
+  Your browser does not support the video tag.
+</video>
diff --git a/themes/xen-project/layouts/partials/youtube.html b/themes/xen-project/layouts/partials/youtube.html
new file mode 100644 (file)
index 0000000..a3153fd
--- /dev/null
@@ -0,0 +1,34 @@
+{{- $src := .src -}}
+{{- $id := .id -}}
+{{- $title := .title | default "YouTube video player" -}}
+{{- $class := .class | default "" -}}
+
+{{- if not $src -}}
+  {{- if $id -}}
+    {{- $src = printf "https://www.youtube.com/embed/%s" $id -}}
+  {{- else -}}
+    {{- errorf "YouTube partial: either 'src' or 'id' parameter must be provided" -}}
+  {{- end -}}
+{{- end -}}
+
+{{ if hasPrefix $src "https://www.youtube.com/watch" }}
+  <div class="youtube-warning">
+    <strong>Warning:</strong> It looks like you provided a standard YouTube URL.
+    For proper embedding, please use an embed URL instead. Example:
+    <code>https://www.youtube.com/embed/VIDEO_ID</code>
+  </div>
+{{ else }}
+  <div class="youtube-video-container {{ $class }}">
+    <div class="video-container">
+      <iframe
+        src="{{ $src }}"
+        title="{{ $title }}"
+        frameborder="0"
+        allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
+        referrerpolicy="strict-origin-when-cross-origin"
+        allowfullscreen
+      >
+      </iframe>
+    </div>
+  </div>
+{{ end }}
diff --git a/themes/xen-project/layouts/shortcodes/carousel.html b/themes/xen-project/layouts/shortcodes/carousel.html
new file mode 100644 (file)
index 0000000..b278f9e
--- /dev/null
@@ -0,0 +1,24 @@
+{{ $items := .Inner | transform.Unmarshal }}
+<div class="carousel-container {{ with .Get "class" }}{{ . }}{{ end }}">
+  <div class="carousel-content">
+    <div class="carousel">
+      {{ range $items }}
+        {{ partial "project-card.html" (dict
+          "title" .title
+          "description" .description
+          "link" .link
+          "class" "carousel-item"
+          )
+        }}
+      {{ end }}
+    </div>
+    <div class="carousel-buttons">
+      <button class="carousel-button prev">
+        <i class="fas fa-arrow-left"></i>
+      </button>
+      <button class="carousel-button next">
+        <i class="fas fa-arrow-right"></i>
+      </button>
+    </div>
+  </div>
+</div>
diff --git a/themes/xen-project/layouts/shortcodes/center.html b/themes/xen-project/layouts/shortcodes/center.html
new file mode 100644 (file)
index 0000000..360a01e
--- /dev/null
@@ -0,0 +1,3 @@
+<div class="text-center {{ .Get "class" }}">
+  {{ .Inner | markdownify }}
+</div>
diff --git a/themes/xen-project/layouts/shortcodes/col.html b/themes/xen-project/layouts/shortcodes/col.html
new file mode 100644 (file)
index 0000000..305a945
--- /dev/null
@@ -0,0 +1,3 @@
+<div class="col">
+  {{ .Inner }}
+</div>
diff --git a/themes/xen-project/layouts/shortcodes/cols.html b/themes/xen-project/layouts/shortcodes/cols.html
new file mode 100644 (file)
index 0000000..980ba7e
--- /dev/null
@@ -0,0 +1,3 @@
+<div class="cols">
+  {{ .Inner }}
+</div>
diff --git a/themes/xen-project/layouts/shortcodes/container.html b/themes/xen-project/layouts/shortcodes/container.html
new file mode 100644 (file)
index 0000000..bd0b313
--- /dev/null
@@ -0,0 +1,13 @@
+{{ $type := .Get "type" | default "" }}
+{{ $md := .Get "md" | default "false" }}
+<div
+  class="container{{ if $type }}-{{ $type }}{{ end }}{{ with .Get "class" }}
+    {{ . }}
+  {{ end }}"
+>
+  {{ if eq $md "true" }}
+    {{ .Inner | markdownify }}
+  {{ else }}
+    {{ .Inner }}
+  {{ end }}
+</div>
diff --git a/themes/xen-project/layouts/shortcodes/conversation-card.html b/themes/xen-project/layouts/shortcodes/conversation-card.html
new file mode 100644 (file)
index 0000000..afb25ee
--- /dev/null
@@ -0,0 +1,25 @@
+{{ define "partials/conversation-card.html" }}
+  {{ $size := .size }}
+  <div
+    class="conversation-card {{ if $size }}
+      conversation-card--{{ $size }}
+    {{ end }}"
+  >
+    <div class="label">{{ .label }}</div>
+    <div class="tags">
+      {{ range .tags }}
+        <span class="tag">{{ . }}</span>
+      {{ end }}
+    </div>
+    <p class="content">
+      {{ .content }}
+    </p>
+    <div class="actions">
+      {{ range .actions }}
+        <a href="{{ .url }}" class="btn btn-ternary join-button">
+          {{ .text }} <i class="fas fa-arrow-up-right-from-square"></i>
+        </a>
+      {{ end }}
+    </div>
+  </div>
+{{ end }}
diff --git a/themes/xen-project/layouts/shortcodes/features-list.html b/themes/xen-project/layouts/shortcodes/features-list.html
new file mode 100644 (file)
index 0000000..41095a0
--- /dev/null
@@ -0,0 +1,9 @@
+<ul
+  class="features-list {{ with .Get "cols" }}
+    features-list--cols-{{ . }}
+  {{ end }}"
+>
+  {{ range .Inner | transform.Unmarshal }}
+    {{ partial "feature-item.html" . }}
+  {{ end }}
+</ul>
diff --git a/themes/xen-project/layouts/shortcodes/full-width-image.html b/themes/xen-project/layouts/shortcodes/full-width-image.html
new file mode 100644 (file)
index 0000000..2054472
--- /dev/null
@@ -0,0 +1,16 @@
+{{ $class := .Get "class" }}
+<div class="full-width-image {{ with $class }}{{ . }}{{ end }}">
+  {{ $src := .Get "src" }}
+  {{ $alt := .Get "alt" | default "Full width image" }}
+  {{ $title := .Get "title" }}
+  {{ $imgClass := .Get "imgClass" }}
+
+
+  <img
+    src="{{ $src }}"
+    alt="{{ $alt }}"
+    {{ with $title }}title="{{ . }}"{{ end }}
+    {{ with $imgClass }}class="{{ . }}"{{ end }}
+    loading="lazy"
+  />
+</div>
diff --git a/themes/xen-project/layouts/shortcodes/get-downloads-links.html b/themes/xen-project/layouts/shortcodes/get-downloads-links.html
new file mode 100644 (file)
index 0000000..c16d9cc
--- /dev/null
@@ -0,0 +1,32 @@
+{{/* DO NOT FORMAT THIS FILE! Formatting may break the template functionality. */}}
+{{ $data := dict }}
+{{ $p := "data/downloads-latest.json" }}
+{{ $jsonResource := resources.Get $p }}
+{{ if $jsonResource }}
+  {{ $data := $jsonResource.Content | transform.Unmarshal }}
+
+{{ range $item := $data }}
+- title: {{ $item.name }}
+  items:
+  {{ range $version := $item.versions }}
+    - title: {{ $item.name }} {{ $version.name }} Series
+      link: {{ $version.link }}
+      items:
+    {{- if $version.subversions -}}
+      {{ range $subversion := $version.subversions }}
+        - title: {{ $item.name }} {{ $subversion.name }}
+          link: {{ $subversion.link }}
+      {{ end }}
+    {{- else -}}
+      {{ range $file := $version.files }}
+        - title: {{ $file.name }}
+          link: {{ $file.url }}
+      {{ end }}
+    {{- end -}}
+  {{ end }}
+{{ end }}
+
+
+{{ else }}
+  {{ errorf "Unable to get resource %q" $p }}
+{{ end }}
\ No newline at end of file
diff --git a/themes/xen-project/layouts/shortcodes/getpages.html b/themes/xen-project/layouts/shortcodes/getpages.html
new file mode 100644 (file)
index 0000000..3325712
--- /dev/null
@@ -0,0 +1,9 @@
+{{ $currentPage := .Page }}
+{{ $section := default "projects" (.Get 0) }}
+{{ $projects := where (where .Site.RegularPages "Section" $section) "Permalink" "ne" $currentPage.Permalink }}
+
+{{ range $projects }}
+  - title: {{ .Title }}
+    description: {{ .Description }}
+    link: {{ .Permalink }}
+{{ end }}
diff --git a/themes/xen-project/layouts/shortcodes/html.html b/themes/xen-project/layouts/shortcodes/html.html
new file mode 100644 (file)
index 0000000..8152acd
--- /dev/null
@@ -0,0 +1 @@
+{{.Inner | safeHTML}}
diff --git a/themes/xen-project/layouts/shortcodes/images-in-circle.html b/themes/xen-project/layouts/shortcodes/images-in-circle.html
new file mode 100644 (file)
index 0000000..bc8cd87
--- /dev/null
@@ -0,0 +1,3 @@
+{{$class := .Get "class"}}
+{{$images := .Inner | transform.Unmarshal}}
+{{partial "images-in-circle.html" (dict "class" $class "images" $images)}}
diff --git a/themes/xen-project/layouts/shortcodes/latest-news.html b/themes/xen-project/layouts/shortcodes/latest-news.html
new file mode 100644 (file)
index 0000000..74dd4f5
--- /dev/null
@@ -0,0 +1 @@
+{{partial "latest-news.html"}}
diff --git a/themes/xen-project/layouts/shortcodes/link.html b/themes/xen-project/layouts/shortcodes/link.html
new file mode 100644 (file)
index 0000000..cbcb498
--- /dev/null
@@ -0,0 +1,7 @@
+<a
+  href="{{.Get "link"}}"
+  class="btn btn-tertiary"
+  {{with .Get "target"}}target="{{.}}"{{end}}
+>
+  {{.Get "text"}}
+</a>
diff --git a/themes/xen-project/layouts/shortcodes/list-pages.html b/themes/xen-project/layouts/shortcodes/list-pages.html
new file mode 100644 (file)
index 0000000..9ef0f0f
--- /dev/null
@@ -0,0 +1,17 @@
+{{ $currentPage := .Page }}
+{{ $section := default "projects" (.Get 0) }}
+{{ $projects := where (where .Site.RegularPages "Section" $section) "Permalink" "ne" $currentPage.Permalink }}
+
+
+<div class="list-pages">
+  {{ range $projects }}
+    {{ partial "project-card.html" (dict
+      "title" .Title
+      "description" .Description
+      "link" .Permalink
+      "linkText" "Discover"
+      "class" "project-card"
+      )
+    }}
+  {{ end }}
+</div>
diff --git a/themes/xen-project/layouts/shortcodes/md.html b/themes/xen-project/layouts/shortcodes/md.html
new file mode 100644 (file)
index 0000000..bc997e8
--- /dev/null
@@ -0,0 +1,8 @@
+{{ $container := .Get "container" }}
+{{ if $container }}
+<div class="container container-{{ $container }}">
+{{ end }}
+  {{ .Inner | markdownify }}
+{{ if $container }}
+</div>
+{{ end }}
\ No newline at end of file
diff --git a/themes/xen-project/layouts/shortcodes/media-block.html b/themes/xen-project/layouts/shortcodes/media-block.html
new file mode 100644 (file)
index 0000000..eed844e
--- /dev/null
@@ -0,0 +1,27 @@
+{{ $content := .Inner }}
+{{ $image := .Get "image" | default "" }}
+{{ $imageAlt := .Get "imageAlt" | default "" }}
+{{ $imageSize := .Get "imageSize" | default "" }}
+{{ $label := .Get "label" | default "" }}
+{{ $media := .Get "media" | default "" }}
+{{ $mediaPosition := .Get "mediaPosition" | default "left" }}
+{{ $mobileMediaPosition := .Get "mobileMediaPosition" | default "left" }}
+{{ $title := .Get "title" | default "" }}
+{{ $titleLevel := .Get "titleLevel" | default "2" }}
+{{ $class := .Get "class" | default "" }}
+
+{{ partial "media-block.html" (dict
+  "Content" $content
+  "Image" $image
+  "ImageAlt" $imageAlt
+  "ImageSize" $imageSize
+  "Label" $label
+  "Media" $media
+  "MediaPosition" $mediaPosition
+  "MobileMediaPosition" $mobileMediaPosition
+  "Site" .Site
+  "Title" $title
+  "TitleLevel" $titleLevel
+  "Class" $class
+  )
+}}
diff --git a/themes/xen-project/layouts/shortcodes/partial.html b/themes/xen-project/layouts/shortcodes/partial.html
new file mode 100644 (file)
index 0000000..32d0db7
--- /dev/null
@@ -0,0 +1,8 @@
+{{ $name := .Get 0 }}
+{{ $context := .Get 1 | default "." }}
+
+{{ if eq $context "." }}
+  {{ partial $name . }}
+{{ else }}
+  {{ partial $name (index . $context) }}
+{{ end }}
diff --git a/themes/xen-project/layouts/shortcodes/row-from-list.html b/themes/xen-project/layouts/shortcodes/row-from-list.html
new file mode 100644 (file)
index 0000000..8fc1663
--- /dev/null
@@ -0,0 +1,14 @@
+{{ $component := .Get "component" }}
+{{ $cols := .Get "cols" }}
+{{ $class := .Get "class" }}
+{{ $yamlData := .Inner | unmarshal }}
+
+
+<div
+  class="row {{ if $class }}{{ $class }}{{ end }}"
+  {{ if $cols }}style="--cols: {{ $cols }};"{{ end }}
+>
+  {{ range $yamlData }}
+    {{ partial $component . }}
+  {{ end }}
+</div>
diff --git a/themes/xen-project/layouts/shortcodes/row.html b/themes/xen-project/layouts/shortcodes/row.html
new file mode 100644 (file)
index 0000000..9426864
--- /dev/null
@@ -0,0 +1,6 @@
+<div
+  class="row {{ with .Get "class" }}{{ . }}{{ end }}"
+  {{ with .Get "cols" }}style="--cols: {{ . }};"{{ end }}
+>
+  {{ .Inner }}
+</div>
diff --git a/themes/xen-project/layouts/shortcodes/section.html b/themes/xen-project/layouts/shortcodes/section.html
new file mode 100644 (file)
index 0000000..6825af9
--- /dev/null
@@ -0,0 +1,14 @@
+{{- $containerType := .Get "container" | default "" -}}
+<section
+  class="{{- with .Get "class" }}{{ . }}{{ end }}{{- with .Get "background" }}
+    background-{{ . }}
+  {{ end }} section-space"
+>
+  <div class="container{{- if $containerType }}-{{ $containerType }}{{- end }}">
+    {{- if eq (.Get "md") "true" -}}
+      {{- .Inner | markdownify -}}
+    {{- else -}}
+      {{- .Inner -}}
+    {{- end -}}
+  </div>
+</section>
diff --git a/themes/xen-project/layouts/shortcodes/vertical-lists.html b/themes/xen-project/layouts/shortcodes/vertical-lists.html
new file mode 100644 (file)
index 0000000..5b0e18e
--- /dev/null
@@ -0,0 +1,5 @@
+{{ $yaml := .Inner | transform.Unmarshal }}
+{{ $cols := .Get "cols" }}
+{{ $colClass := .Get "col-class" }}
+{{ $headerLevel := .Get "headerLevel" }}
+{{ partial "vertical-lists.html" (dict "lists" $yaml "cols" $cols "colClass" $colClass "headerLevel" $headerLevel) }}
diff --git a/themes/xen-project/layouts/shortcodes/video-player.html b/themes/xen-project/layouts/shortcodes/video-player.html
new file mode 100644 (file)
index 0000000..a515de9
--- /dev/null
@@ -0,0 +1,18 @@
+{{- $url := .Get "url" -}}
+{{- $width := .Get "width" -}}
+{{- $height := .Get "height" -}}
+{{- $autoplay := .Get "autoplay" | eq "true" -}}
+{{- $controls := .Get "controls" | ne "false" -}}
+{{- $loop := .Get "loop" | eq "true" -}}
+{{- $muted := .Get "muted" | eq "true" -}}
+
+{{ partial "video-player.html" (dict
+  "url" $url
+  "width" $width
+  "height" $height
+  "autoplay" $autoplay
+  "controls" $controls
+  "loop" $loop
+  "muted" $muted
+  )
+}}
diff --git a/themes/xen-project/layouts/shortcodes/youtube.html b/themes/xen-project/layouts/shortcodes/youtube.html
new file mode 100644 (file)
index 0000000..fd81d24
--- /dev/null
@@ -0,0 +1,12 @@
+{{- $src := .Get "src" -}}
+{{- $id := .Get "id" -}}
+{{- $title := .Get "title" -}}
+{{- $class := .Get "class" -}}
+
+{{ partial "youtube.html" (dict
+  "src" $src
+  "id" $id
+  "title" $title
+  "class" $class
+  )
+}}
diff --git a/themes/xen-project/theme.toml b/themes/xen-project/theme.toml
new file mode 100644 (file)
index 0000000..6d18c2f
--- /dev/null
@@ -0,0 +1,31 @@
+name = 'Xen Project'
+license = 'MIT'
+licenselink = 'https://github.com/owner/repo/LICENSE'
+description = 'Theme description'
+
+# The home page of the theme, where the source can be found
+homepage = 'https://github.com/xenproject/repo'
+
+# If you have a running demo of the theme
+demosite = 'https://owner.github.io/repo'
+
+# Taxonomy terms
+tags = ['blog', 'company']
+features = ['some', 'awesome', 'features']
+
+# If the theme has multiple authors
+authors = [
+  {name = 'Name of author', homepage = 'Website of author'},
+]
+
+# If the theme has a single author
+[author]
+  name = 'Xen Project'
+  homepage = 'xen-project.org'
+
+# If porting an existing theme
+[original]
+  author = 'Name of original author'
+  homepage = 'Website of original author'
+  repo = 'https://github.com/owner/repo'
+