summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Fred K. Schott <fkschott@gmail.com> 2022-02-28 21:38:17 -0800
committerGravatar GitHub <noreply@github.com> 2022-02-28 21:38:17 -0800
commit918f1ea4f72850c650282c134de94548ef2fcad5 (patch)
treecac396f9e7be425b59cdbfea7725b3915acf3406
parenta217c6608df684ddf3672bbef73bd7efc9a6a191 (diff)
downloadastro-918f1ea4f72850c650282c134de94548ef2fcad5.tar.gz
astro-918f1ea4f72850c650282c134de94548ef2fcad5.tar.zst
astro-918f1ea4f72850c650282c134de94548ef2fcad5.zip
Make smoke tests more deterministic (#2618)
* sync first remote smoke tests * update smoke test scripts
-rw-r--r--.github/workflows/nightly.yml34
-rw-r--r--package.json2
-rw-r--r--scripts/smoke/index.js117
-rw-r--r--scripts/smoke/sync.js97
-rw-r--r--smoke/astro.build-main/.gitignore130
-rw-r--r--smoke/astro.build-main/README.md5
-rw-r--r--smoke/astro.build-main/astro.config.ts33
-rw-r--r--smoke/astro.build-main/package.json27
-rw-r--r--smoke/astro.build-main/public/_redirects4
-rw-r--r--smoke/astro.build-main/public/assets/blog/astro-018/lit-logo.svg18
-rw-r--r--smoke/astro.build-main/public/assets/blog/astro-018/named-slots.pngbin0 -> 636112 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/astro-018/responsive-hydration.jpgbin0 -> 29903 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/astro-018/solid-logo-dark.svg1
-rw-r--r--smoke/astro.build-main/public/assets/blog/astro-021-preview/hero.pngbin0 -> 1771348 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/astro-021-preview/social.pngbin0 -> 490519 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/astro-021-release/hero.pngbin0 -> 2563451 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/astro-021-release/social.pngbin0 -> 713530 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/astro-023/social.jpgbin0 -> 34833 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/astro-netlify-social.jpgbin0 -> 112044 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/astro-repl/astro-repl-hero.jpgbin0 -> 147633 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/astro-repl/astro-repl-screenshot.jpgbin0 -> 30182 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/astro-repl/astro-repl-social.jpgbin0 -> 68935 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/demo-day-2021-09/discord-chat.jpgbin0 -> 41959 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/demo-day-2021-09/hero.pngbin0 -> 1771348 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/demo-day-2021-09/social.pngbin0 -> 384584 bytes
-rw-r--r--smoke/astro.build-main/public/assets/blog/introducing-astro.jpgbin0 -> 127833 bytes
-rw-r--r--smoke/astro.build-main/public/authors/drew.jpgbin0 -> 2302 bytes
-rw-r--r--smoke/astro.build-main/public/authors/fred.jpgbin0 -> 9004 bytes
-rw-r--r--smoke/astro.build-main/public/authors/jon.jpgbin0 -> 8953 bytes
-rw-r--r--smoke/astro.build-main/public/authors/matthew.jpgbin0 -> 8599 bytes
-rw-r--r--smoke/astro.build-main/public/authors/nate.jpgbin0 -> 8128 bytes
-rw-r--r--smoke/astro.build-main/public/favicon.icobin0 -> 4286 bytes
-rw-r--r--smoke/astro.build-main/public/favicon.svg11
-rw-r--r--smoke/astro.build-main/public/fonts/RTAliasMedium-Bold.woff2bin0 -> 56104 bytes
-rw-r--r--smoke/astro.build-main/public/fonts/RTAliasMedium-BoldOblique.woff2bin0 -> 60616 bytes
-rw-r--r--smoke/astro.build-main/public/fonts/RTAliasMedium-Regular.woff2bin0 -> 47876 bytes
-rw-r--r--smoke/astro.build-main/public/fonts/RTAliasMedium-RegularOblique.woff2bin0 -> 49660 bytes
-rw-r--r--smoke/astro.build-main/public/pixel.worklet.js59
-rw-r--r--smoke/astro.build-main/public/robots.txt6
-rw-r--r--smoke/astro.build-main/public/scripts/defer.js3
-rw-r--r--smoke/astro.build-main/public/scripts/konami.js59
-rw-r--r--smoke/astro.build-main/public/social.pngbin0 -> 176399 bytes
-rw-r--r--smoke/astro.build-main/public/stars-mask.pngbin0 -> 31505 bytes
-rw-r--r--smoke/astro.build-main/public/stars.pngbin0 -> 1950 bytes
-rw-r--r--smoke/astro.build-main/public/styles/main.css1117
-rw-r--r--smoke/astro.build-main/public/styles/sanitize.css356
-rw-r--r--smoke/astro.build-main/src/components/ArrowLink.astro62
-rw-r--r--smoke/astro.build-main/src/components/Author.astro57
-rw-r--r--smoke/astro.build-main/src/components/Banner.astro11
-rw-r--r--smoke/astro.build-main/src/components/BaseHead.astro62
-rw-r--r--smoke/astro.build-main/src/components/BaseLayout.astro26
-rw-r--r--smoke/astro.build-main/src/components/Blockquote.astro48
-rw-r--r--smoke/astro.build-main/src/components/Checklist.astro7
-rw-r--r--smoke/astro.build-main/src/components/ChecklistItem.astro43
-rw-r--r--smoke/astro.build-main/src/components/ContributorAvatar.astro61
-rw-r--r--smoke/astro.build-main/src/components/ContributorsAvatarList.astro25
-rw-r--r--smoke/astro.build-main/src/components/Date.astro21
-rw-r--r--smoke/astro.build-main/src/components/Footer.astro229
-rw-r--r--smoke/astro.build-main/src/components/Header.astro7
-rw-r--r--smoke/astro.build-main/src/components/Mention.astro58
-rw-r--r--smoke/astro.build-main/src/components/Nav.astro40
-rw-r--r--smoke/astro.build-main/src/components/Note.astro58
-rw-r--r--smoke/astro.build-main/src/components/Panel.astro59
-rw-r--r--smoke/astro.build-main/src/components/PixelLink.astro102
-rw-r--r--smoke/astro.build-main/src/components/Scripts.astro19
-rw-r--r--smoke/astro.build-main/src/components/Shell.astro28
-rw-r--r--smoke/astro.build-main/src/components/SkipLink.astro1
-rw-r--r--smoke/astro.build-main/src/components/Starfield.astro33
-rw-r--r--smoke/astro.build-main/src/components/Tweet.astro14
-rw-r--r--smoke/astro.build-main/src/components/Wrapper.astro9
-rw-r--r--smoke/astro.build-main/src/components/blog/Card.astro106
-rw-r--r--smoke/astro.build-main/src/components/blog/Outro.astro53
-rw-r--r--smoke/astro.build-main/src/components/careers/Card.astro88
-rw-r--r--smoke/astro.build-main/src/components/landing/Award.astro34
-rw-r--r--smoke/astro.build-main/src/components/landing/Callout.astro31
-rw-r--r--smoke/astro.build-main/src/components/landing/Community.astro71
-rw-r--r--smoke/astro.build-main/src/components/landing/Demo.astro68
-rw-r--r--smoke/astro.build-main/src/components/landing/DemoIllustration.astro166
-rw-r--r--smoke/astro.build-main/src/components/landing/DemoPartialHydration.astro177
-rw-r--r--smoke/astro.build-main/src/components/landing/DemoTTI.astro206
-rw-r--r--smoke/astro.build-main/src/components/landing/Grid.astro82
-rw-r--r--smoke/astro.build-main/src/components/landing/Hero.astro206
-rw-r--r--smoke/astro.build-main/src/components/landing/Integrations.astro89
-rw-r--r--smoke/astro.build-main/src/components/landing/Performance.astro148
-rw-r--r--smoke/astro.build-main/src/components/landing/Quote.astro83
-rw-r--r--smoke/astro.build-main/src/components/landing/Section.astro19
-rw-r--r--smoke/astro.build-main/src/components/landing/Sponsors.astro187
-rw-r--r--smoke/astro.build-main/src/components/landing/Title.astro30
-rw-r--r--smoke/astro.build-main/src/components/landing/Trusted.astro69
-rw-r--r--smoke/astro.build-main/src/config.ts17
-rw-r--r--smoke/astro.build-main/src/data/contributors.json1
-rw-r--r--smoke/astro.build-main/src/icons/after.svg48
-rw-r--r--smoke/astro.build-main/src/icons/before.svg37
-rw-r--r--smoke/astro.build-main/src/icons/frameworks/alpine.svg4
-rw-r--r--smoke/astro.build-main/src/icons/frameworks/js.svg3
-rw-r--r--smoke/astro.build-main/src/icons/frameworks/lit.svg4
-rw-r--r--smoke/astro.build-main/src/icons/frameworks/preact.svg6
-rw-r--r--smoke/astro.build-main/src/icons/frameworks/react.svg4
-rw-r--r--smoke/astro.build-main/src/icons/frameworks/solid.svg6
-rw-r--r--smoke/astro.build-main/src/icons/frameworks/svelte.svg3
-rw-r--r--smoke/astro.build-main/src/icons/frameworks/vue.svg4
-rw-r--r--smoke/astro.build-main/src/icons/img.svg9
-rw-r--r--smoke/astro.build-main/src/icons/logo-single-color.svg4
-rw-r--r--smoke/astro.build-main/src/icons/logo.svg4
-rw-r--r--smoke/astro.build-main/src/icons/logos/alpinejs.svg12
-rw-r--r--smoke/astro.build-main/src/icons/logos/cloudflare.svg16
-rw-r--r--smoke/astro.build-main/src/icons/logos/contentful.svg24
-rw-r--r--smoke/astro.build-main/src/icons/logos/devtoolsfm.svg13
-rw-r--r--smoke/astro.build-main/src/icons/logos/divriots.svg1
-rw-r--r--smoke/astro.build-main/src/icons/logos/github.svg9
-rw-r--r--smoke/astro.build-main/src/icons/logos/google.svg1
-rw-r--r--smoke/astro.build-main/src/icons/logos/javascript.svg3
-rw-r--r--smoke/astro.build-main/src/icons/logos/lit.svg12
-rw-r--r--smoke/astro.build-main/src/icons/logos/markdown.svg4
-rw-r--r--smoke/astro.build-main/src/icons/logos/monogram.svg11
-rw-r--r--smoke/astro.build-main/src/icons/logos/navillus.svg4
-rw-r--r--smoke/astro.build-main/src/icons/logos/netlify-grid.svg4
-rw-r--r--smoke/astro.build-main/src/icons/logos/netlify.svg6
-rw-r--r--smoke/astro.build-main/src/icons/logos/postcss.svg4
-rw-r--r--smoke/astro.build-main/src/icons/logos/preact.svg14
-rw-r--r--smoke/astro.build-main/src/icons/logos/prismic.svg11
-rw-r--r--smoke/astro.build-main/src/icons/logos/react.svg21
-rw-r--r--smoke/astro.build-main/src/icons/logos/rss.svg3
-rw-r--r--smoke/astro.build-main/src/icons/logos/sass.svg3
-rw-r--r--smoke/astro.build-main/src/icons/logos/sentry.svg3
-rw-r--r--smoke/astro.build-main/src/icons/logos/seo.svg3
-rw-r--r--smoke/astro.build-main/src/icons/logos/shopify.svg19
-rw-r--r--smoke/astro.build-main/src/icons/logos/sitemap.svg3
-rw-r--r--smoke/astro.build-main/src/icons/logos/solid.svg10
-rw-r--r--smoke/astro.build-main/src/icons/logos/solidjs.svg10
-rw-r--r--smoke/astro.build-main/src/icons/logos/stackblitz.svg13
-rw-r--r--smoke/astro.build-main/src/icons/logos/strapi.svg6
-rw-r--r--smoke/astro.build-main/src/icons/logos/svelte.svg5
-rw-r--r--smoke/astro.build-main/src/icons/logos/tailwindcss.svg11
-rw-r--r--smoke/astro.build-main/src/icons/logos/trivago.svg15
-rw-r--r--smoke/astro.build-main/src/icons/logos/typescript.svg3
-rw-r--r--smoke/astro.build-main/src/icons/logos/vercel-grid.svg3
-rw-r--r--smoke/astro.build-main/src/icons/logos/vercel.svg3
-rw-r--r--smoke/astro.build-main/src/icons/logos/vue.svg11
-rw-r--r--smoke/astro.build-main/src/icons/logos/wordpress.svg11
-rw-r--r--smoke/astro.build-main/src/icons/sponsors/divriots.svg1
-rw-r--r--smoke/astro.build-main/src/icons/sponsors/netlify.svg10
-rw-r--r--smoke/astro.build-main/src/icons/sponsors/sentry.svg1
-rw-r--r--smoke/astro.build-main/src/icons/sponsors/stackup.svg1
-rw-r--r--smoke/astro.build-main/src/icons/sponsors/vercel.svg3
-rw-r--r--smoke/astro.build-main/src/icons/wordmark-single-color.svg7
-rw-r--r--smoke/astro.build-main/src/icons/wordmark.svg7
-rw-r--r--smoke/astro.build-main/src/layouts/Legal.astro69
-rw-r--r--smoke/astro.build-main/src/layouts/Page.astro49
-rw-r--r--smoke/astro.build-main/src/layouts/Post.astro88
-rw-r--r--smoke/astro.build-main/src/mentions.ts33
-rw-r--r--smoke/astro.build-main/src/pages/404.astro97
-rw-r--r--smoke/astro.build-main/src/pages/about.astro118
-rw-r--r--smoke/astro.build-main/src/pages/blog/[...slug].astro32
-rw-r--r--smoke/astro.build-main/src/pages/blog/index.astro84
-rw-r--r--smoke/astro.build-main/src/pages/company.astro123
-rw-r--r--smoke/astro.build-main/src/pages/index.astro183
-rw-r--r--smoke/astro.build-main/src/pages/privacy.md91
-rw-r--r--smoke/astro.build-main/src/pages/terms.md112
-rw-r--r--smoke/astro.build-main/src/posts/astro-018.md74
-rw-r--r--smoke/astro.build-main/src/posts/astro-019.md168
-rw-r--r--smoke/astro.build-main/src/posts/astro-021-preview.md107
-rw-r--r--smoke/astro.build-main/src/posts/astro-021-release.md50
-rw-r--r--smoke/astro.build-main/src/posts/astro-023.md98
-rw-r--r--smoke/astro.build-main/src/posts/astro-repl.md27
-rw-r--r--smoke/astro.build-main/src/posts/demo-day-2021-09.md29
-rw-r--r--smoke/astro.build-main/src/posts/experimental-static-build.md25
-rw-r--r--smoke/astro.build-main/src/posts/index.ts32
-rw-r--r--smoke/astro.build-main/src/posts/introducing-astro.md101
-rw-r--r--smoke/astro.build-main/src/posts/netlify-astro-hosting-sponsorship.md51
-rw-r--r--smoke/astro.build-main/src/posts/the-astro-technology-company.md39
-rw-r--r--smoke/astro.build-main/src/scripts/animations.ts21
-rw-r--r--smoke/astro.build-main/src/scripts/nav.ts18
-rw-r--r--smoke/astro.build-main/src/scripts/quicklink.ts3
-rw-r--r--smoke/astro.build-main/src/scripts/spa.ts335
-rw-r--r--smoke/astro.build-main/src/utils.ts8
-rw-r--r--smoke/astro.build-main/update-contributors.mjs22
-rw-r--r--smoke/astro.build-main/yarn.lock3755
-rw-r--r--smoke/docs-main/.editorconfig15
-rw-r--r--smoke/docs-main/.github/labeler.yml12
-rw-r--r--smoke/docs-main/.gitignore19
-rw-r--r--smoke/docs-main/.nvmrc1
-rw-r--r--smoke/docs-main/.prettierignore5
-rw-r--r--smoke/docs-main/.prettierrc16
-rw-r--r--smoke/docs-main/.stackblitzrc6
-rw-r--r--smoke/docs-main/CHANGELOG.md55
-rw-r--r--smoke/docs-main/README.md98
-rw-r--r--smoke/docs-main/astro.config.mjs12
-rw-r--r--smoke/docs-main/jsconfig.json8
-rw-r--r--smoke/docs-main/netlify.toml2
-rw-r--r--smoke/docs-main/package.json33
-rw-r--r--smoke/docs-main/public/code.css101
-rw-r--r--smoke/docs-main/public/default-og-image.pngbin0 -> 748347 bytes
-rw-r--r--smoke/docs-main/public/favicon.icobin0 -> 4286 bytes
-rw-r--r--smoke/docs-main/public/favicon.svg11
-rw-r--r--smoke/docs-main/public/index.css390
-rw-r--r--smoke/docs-main/public/make-scrollable-code-focusable.js3
-rw-r--r--smoke/docs-main/public/theme.css123
-rw-r--r--smoke/docs-main/reference/api-reference.md195
-rw-r--r--smoke/docs-main/src/components/Card.astro57
-rw-r--r--smoke/docs-main/src/components/Footer/AvatarList.astro155
-rw-r--r--smoke/docs-main/src/components/Footer/Footer.astro16
-rw-r--r--smoke/docs-main/src/components/HeadCommon.astro42
-rw-r--r--smoke/docs-main/src/components/HeadSEO.astro46
-rw-r--r--smoke/docs-main/src/components/Header/AstroLogo.astro29
-rw-r--r--smoke/docs-main/src/components/Header/Header.astro172
-rw-r--r--smoke/docs-main/src/components/Header/LanguageSelect.css50
-rw-r--r--smoke/docs-main/src/components/Header/LanguageSelect.tsx97
-rw-r--r--smoke/docs-main/src/components/Header/Search.css75
-rw-r--r--smoke/docs-main/src/components/Header/Search.tsx82
-rw-r--r--smoke/docs-main/src/components/Header/SidebarToggle.tsx27
-rw-r--r--smoke/docs-main/src/components/Header/SkipToContent.astro22
-rw-r--r--smoke/docs-main/src/components/LeftSidebar/LeftSidebar.astro170
-rw-r--r--smoke/docs-main/src/components/PageContent/PageContent.astro73
-rw-r--r--smoke/docs-main/src/components/RightSidebar/MoreMenu.astro74
-rw-r--r--smoke/docs-main/src/components/RightSidebar/RightSidebar.astro27
-rw-r--r--smoke/docs-main/src/components/RightSidebar/TableOfContents.tsx45
-rw-r--r--smoke/docs-main/src/components/RightSidebar/ThemeToggleButton.css38
-rw-r--r--smoke/docs-main/src/components/RightSidebar/ThemeToggleButton.tsx71
-rw-r--r--smoke/docs-main/src/config.ts215
-rw-r--r--smoke/docs-main/src/data/components.json29
-rw-r--r--smoke/docs-main/src/data/themes.json80
-rw-r--r--smoke/docs-main/src/layouts/MainLayout.astro124
-rw-r--r--smoke/docs-main/src/layouts/SplashLayout.astro50
-rw-r--r--smoke/docs-main/src/pages/404.astro9
-rw-r--r--smoke/docs-main/src/pages/[...slug].astro19
-rw-r--r--smoke/docs-main/src/pages/[slug].astro19
-rw-r--r--smoke/docs-main/src/pages/ar/getting-started.md79
-rw-r--r--smoke/docs-main/src/pages/bg/getting-started.md60
-rw-r--r--smoke/docs-main/src/pages/bn/getting-started.md59
-rw-r--r--smoke/docs-main/src/pages/da/getting-started.md74
-rw-r--r--smoke/docs-main/src/pages/de/404.astro9
-rw-r--r--smoke/docs-main/src/pages/de/comparing-astro-vs-other-tools.md233
-rw-r--r--smoke/docs-main/src/pages/de/core-concepts/astro-components.md386
-rw-r--r--smoke/docs-main/src/pages/de/core-concepts/astro-pages.md67
-rw-r--r--smoke/docs-main/src/pages/de/core-concepts/component-hydration.md113
-rw-r--r--smoke/docs-main/src/pages/de/core-concepts/layouts.md155
-rw-r--r--smoke/docs-main/src/pages/de/core-concepts/project-structure.md58
-rw-r--r--smoke/docs-main/src/pages/de/core-concepts/routing.md102
-rw-r--r--smoke/docs-main/src/pages/de/getting-started.md74
-rw-r--r--smoke/docs-main/src/pages/de/guides/styling.md644
-rw-r--r--smoke/docs-main/src/pages/de/installation.md178
-rw-r--r--smoke/docs-main/src/pages/de/migration/0.21.0.md229
-rw-r--r--smoke/docs-main/src/pages/de/quick-start.md78
-rw-r--r--smoke/docs-main/src/pages/de/themes.astro53
-rw-r--r--smoke/docs-main/src/pages/en/comparing-astro-vs-other-tools.md233
-rw-r--r--smoke/docs-main/src/pages/en/core-concepts/astro-components.md382
-rw-r--r--smoke/docs-main/src/pages/en/core-concepts/astro-pages.md134
-rw-r--r--smoke/docs-main/src/pages/en/core-concepts/component-hydration.md116
-rw-r--r--smoke/docs-main/src/pages/en/core-concepts/layouts.md155
-rw-r--r--smoke/docs-main/src/pages/en/core-concepts/project-structure.md58
-rw-r--r--smoke/docs-main/src/pages/en/core-concepts/routing.md102
-rw-r--r--smoke/docs-main/src/pages/en/getting-started.md74
-rw-r--r--smoke/docs-main/src/pages/en/guides/aliases.md46
-rw-r--r--smoke/docs-main/src/pages/en/guides/data-fetching.md56
-rw-r--r--smoke/docs-main/src/pages/en/guides/debugging.md7
-rw-r--r--smoke/docs-main/src/pages/en/guides/deploy.md528
-rw-r--r--smoke/docs-main/src/pages/en/guides/environment-variables.md48
-rw-r--r--smoke/docs-main/src/pages/en/guides/imports.md142
-rw-r--r--smoke/docs-main/src/pages/en/guides/markdown-content.md357
-rw-r--r--smoke/docs-main/src/pages/en/guides/pagination.md108
-rw-r--r--smoke/docs-main/src/pages/en/guides/publish-to-npm.md216
-rw-r--r--smoke/docs-main/src/pages/en/guides/rss.md53
-rw-r--r--smoke/docs-main/src/pages/en/guides/styling.md640
-rw-r--r--smoke/docs-main/src/pages/en/installation.md176
-rw-r--r--smoke/docs-main/src/pages/en/migrate.md198
-rw-r--r--smoke/docs-main/src/pages/en/migration/0.21.0.astro1
-rw-r--r--smoke/docs-main/src/pages/en/quick-start.md77
-rw-r--r--smoke/docs-main/src/pages/en/reference/api-reference.md329
-rw-r--r--smoke/docs-main/src/pages/en/reference/builtin-components.md70
-rw-r--r--smoke/docs-main/src/pages/en/reference/cli-reference.md72
-rw-r--r--smoke/docs-main/src/pages/en/reference/configuration-reference.md80
-rw-r--r--smoke/docs-main/src/pages/en/reference/renderer-reference.md229
-rw-r--r--smoke/docs-main/src/pages/en/themes.astro53
-rw-r--r--smoke/docs-main/src/pages/es/comparing-astro-vs-other-tools.md232
-rw-r--r--smoke/docs-main/src/pages/es/core-concepts/astro-components.md378
-rw-r--r--smoke/docs-main/src/pages/es/core-concepts/astro-pages.md66
-rw-r--r--smoke/docs-main/src/pages/es/core-concepts/component-hydration.md112
-rw-r--r--smoke/docs-main/src/pages/es/core-concepts/layouts.md154
-rw-r--r--smoke/docs-main/src/pages/es/core-concepts/project-structure.md57
-rw-r--r--smoke/docs-main/src/pages/es/core-concepts/routing.md101
-rw-r--r--smoke/docs-main/src/pages/es/getting-started.md59
-rw-r--r--smoke/docs-main/src/pages/es/guides/aliases.md45
-rw-r--r--smoke/docs-main/src/pages/es/guides/data-fetching.md64
-rw-r--r--smoke/docs-main/src/pages/es/guides/debugging.md6
-rw-r--r--smoke/docs-main/src/pages/es/guides/deploy.md369
-rw-r--r--smoke/docs-main/src/pages/es/guides/imports.md139
-rw-r--r--smoke/docs-main/src/pages/es/guides/markdown-content.astro12
-rw-r--r--smoke/docs-main/src/pages/es/guides/pagination.astro12
-rw-r--r--smoke/docs-main/src/pages/es/guides/publish-to-npm.astro12
-rw-r--r--smoke/docs-main/src/pages/es/guides/rss.md42
-rw-r--r--smoke/docs-main/src/pages/es/guides/styling.astro12
-rw-r--r--smoke/docs-main/src/pages/es/installation.md170
-rw-r--r--smoke/docs-main/src/pages/es/quick-start.md76
-rw-r--r--smoke/docs-main/src/pages/es/reference/api-reference.md293
-rw-r--r--smoke/docs-main/src/pages/es/reference/builtin-components.md70
-rw-r--r--smoke/docs-main/src/pages/es/reference/cli-reference.md66
-rw-r--r--smoke/docs-main/src/pages/es/reference/configuration-reference.md28
-rw-r--r--smoke/docs-main/src/pages/es/reference/renderer-reference.astro12
-rw-r--r--smoke/docs-main/src/pages/fi/getting-started.md57
-rw-r--r--smoke/docs-main/src/pages/fi/installation.md93
-rw-r--r--smoke/docs-main/src/pages/fi/quick-start.md52
-rw-r--r--smoke/docs-main/src/pages/fr/getting-started.md59
-rw-r--r--smoke/docs-main/src/pages/fr/installation.md159
-rw-r--r--smoke/docs-main/src/pages/fr/quick-start.md72
-rw-r--r--smoke/docs-main/src/pages/hu/getting-started.md76
-rw-r--r--smoke/docs-main/src/pages/hu/installation.md176
-rw-r--r--smoke/docs-main/src/pages/hu/quick-start.md77
-rw-r--r--smoke/docs-main/src/pages/index.astro20
-rw-r--r--smoke/docs-main/src/pages/it/getting-started.md72
-rw-r--r--smoke/docs-main/src/pages/ja/comparing-astro-vs-other-tools.md236
-rw-r--r--smoke/docs-main/src/pages/ja/core-concepts/project-structure.md59
-rw-r--r--smoke/docs-main/src/pages/ja/getting-started.md75
-rw-r--r--smoke/docs-main/src/pages/ja/installation.md178
-rw-r--r--smoke/docs-main/src/pages/ja/quick-start.md74
-rw-r--r--smoke/docs-main/src/pages/ja/themes.astro53
-rw-r--r--smoke/docs-main/src/pages/kr/getting-started.md59
-rw-r--r--smoke/docs-main/src/pages/nl/getting-started.md57
-rw-r--r--smoke/docs-main/src/pages/nl/quick-start.md75
-rw-r--r--smoke/docs-main/src/pages/pl/getting-started.md74
-rw-r--r--smoke/docs-main/src/pages/pt-br/getting-started.md59
-rw-r--r--smoke/docs-main/src/pages/ru/getting-started.md73
-rw-r--r--smoke/docs-main/src/pages/ru/quick-start.md74
-rw-r--r--smoke/docs-main/src/pages/zh-CN/comparing-astro-vs-other-tools.md204
-rw-r--r--smoke/docs-main/src/pages/zh-CN/examples.md8
-rw-r--r--smoke/docs-main/src/pages/zh-CN/getting-started.md60
-rw-r--r--smoke/docs-main/src/pages/zh-CN/installation.md170
-rw-r--r--smoke/docs-main/src/pages/zh-CN/quick-start.md73
-rw-r--r--smoke/docs-main/src/pages/zh-TW/examples.md8
-rw-r--r--smoke/docs-main/src/pages/zh-TW/getting-started.md72
-rw-r--r--smoke/docs-main/src/pages/zh-TW/installation.md162
-rw-r--r--smoke/docs-main/src/pages/zh-TW/quick-start.md72
-rw-r--r--smoke/docs-main/src/pages/zh-TW/themes.astro53
-rw-r--r--smoke/docs-main/src/util.ts14
-rw-r--r--smoke/docs-main/yarn.lock5608
-rw-r--r--yarn.lock1300
336 files changed, 34315 insertions, 147 deletions
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index edd351f7b..3017cdd91 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -60,11 +60,31 @@ jobs:
body: >
This PR is auto-generated by a nightly GitHub action.
It should automatically be merged if tests pass.
-
- - name: Mark Pull Request for Auto-Merge
- if: steps.createpr.outputs.pull-request-operation == 'created'
- uses: peter-evans/enable-pull-request-automerge@v1
+
+ smoke-sync:
+ if: github.repository_owner == 'withastro'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out code using Git
+ uses: actions/checkout@v2
+ - name: Set Node version to 16
+ uses: actions/setup-node@v2
with:
- token: ${{ secrets.NIGHTLY_PERSONAL_GITHUB_TOKEN }}
- pull-request-number: ${{ steps.createpr.outputs.pull-request-number }}
- merge-method: squash
+ node-version: 16
+ cache: 'yarn'
+ - name: Install dependencies
+ run: yarn install --frozen-lockfile --ignore-engines --ignore-scripts
+ - name: Sync smoke tests
+ run: node scripts/smoke/sync.js
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Create Pull Request
+ id: createpr
+ uses: peter-evans/create-pull-request@v3
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ commit-message: '[ci] update smoke tests (remote)'
+ title: '[ci] update smoke tests (remote)'
+ body: >
+ This PR is auto-generated by a nightly GitHub action.
+ It should automatically be merged if tests pass. \ No newline at end of file
diff --git a/package.json b/package.json
index 6e8225303..3c2c8659b 100644
--- a/package.json
+++ b/package.json
@@ -28,7 +28,7 @@
"examples/component/demo",
"examples/component/packages/*",
"scripts",
- "scripts/smoke/*",
+ "smoke/*",
"packages/astro/test/fixtures/builtins/packages/*",
"packages/astro/test/fixtures/builtins-polyfillnode",
"packages/astro/test/fixtures/custom-elements/my-component-lib",
diff --git a/scripts/smoke/index.js b/scripts/smoke/index.js
index 69e0c889a..c0600e2b7 100644
--- a/scripts/smoke/index.js
+++ b/scripts/smoke/index.js
@@ -1,8 +1,6 @@
/** @file Runs all smoke tests and may add extra smoke-test dependencies to `yarn.lock`. */
-
// @ts-check
-import Zip from 'adm-zip';
import { execa } from 'execa';
import { polyfill } from '@astropub/webapi';
import { fileURLToPath } from 'node:url';
@@ -10,38 +8,32 @@ import { promises as fs } from 'node:fs';
polyfill(globalThis, { exclude: 'window document' });
-/* Configuration
-/* -------------------------------------------------------------------------- */
-
-/** URL directory containing this current script. */
-const scriptDir = new URL('./', import.meta.url);
-
/** URL directory containing the entire project. */
const rootDir = new URL('../../', import.meta.url);
/** URL directory containing the example subdirectories. */
const exampleDir = new URL('examples/', rootDir);
+const smokeDir = new URL('smoke/', rootDir);
-/** URL directory containing the Astro package. */
-const astroDir = new URL('packages/astro/', rootDir);
-
-/** GitHub configuration for the external "docs" Astro project. */
-// const docGithubConfig = { org: 'withastro', name: 'docs', branch: 'main' };
+/** Returns all child directories of the given directory. */
+const getChildDirectories = async (/** @type {URL} */ dir) => {
+ /** @type {URL[]} */
+ const dirs = [];
-/** GitHub configuration for the external "astro.build" Astro project. */
-// const wwwGithubConfig = { org: 'withastro', name: 'astro.build', branch: 'main' };
+ for await (const dirent of await fs.opendir(dir)) {
+ if (dirent.isDirectory()) {
+ dirs.push(new URL(dirent.name, dir));
+ }
+ }
-/* Application
-/* -------------------------------------------------------------------------- */
+ return dirs;
+};
/** Runs all smoke tests. */
async function run() {
console.log('');
- const directories = await getChildDirectories(exampleDir);
-
- // TODO Skipped the docs-main test since it is failing at the moment.
- // TODO Skipped the www test since it is failing at the moment.
+ const directories = [...await getChildDirectories(exampleDir), ...await getChildDirectories(smokeDir)];
console.log('🤖', 'Preparing', 'yarn');
@@ -54,13 +46,11 @@ async function run() {
await execa('yarn', ['run', 'build'], { cwd: fileURLToPath(directory), stdio: 'inherit' });
} catch (err) {
console.log(err);
-
process.exit(1);
}
- // Run with the static build too
- if (directory.pathname.includes('astro.build')) {
- // astro.build uses the static build, so rerunning with the flag actually negates it.
+ // Run with the static build too (skip for remote repos)
+ if (directory.pathname.includes(smokeDir.pathname)) {
continue;
}
@@ -68,7 +58,6 @@ async function run() {
await execa('yarn', ['build', '--', '--experimental-static-build'], { cwd: fileURLToPath(directory), stdout: 'inherit', stderr: 'inherit' });
} catch (err) {
console.log(err);
-
process.exit(1);
}
@@ -76,78 +65,4 @@ async function run() {
}
}
-/* Functionality
-/* -------------------------------------------------------------------------- */
-
-/** Returns the URL to the ZIP of the given GitHub project. */
-const getGithubZipURL = (/** @type {GithubOpts} */ opts) => `https://github.com/${opts.org}/${opts.name}/archive/refs/heads/${opts.branch}.zip`;
-
-/** Returns the awaited ZIP Buffer from the given GitHub project. */
-const fetchGithubZip = (/** @type {GithubOpts} */ opts) =>
- fetch(getGithubZipURL(opts))
- .then((response) => response.arrayBuffer())
- .then((arrayBuffer) => Buffer.from(arrayBuffer));
-
-/** Downloads a ZIP from the given GitHub project. */
-const downloadGithubZip = async (/** @type {GithubOpts} */ opts) => {
- /** Expected directory when the zip is downloaded. */
- const githubDir = new URL(`${opts.name}-${opts.branch}`, scriptDir);
-
- console.log('🤖', 'Downloading', `${opts.org}/${opts.name}#${opts.branch}`);
-
- const buffer = await fetchGithubZip(opts);
-
- console.log('🤖', 'Extracting', `${opts.org}/${opts.name}#${opts.branch}`);
-
- new Zip(buffer).extractAllTo(fileURLToPath(scriptDir), true);
-
- console.log('🤖', 'Preparing', `${opts.org}/${opts.name}#${opts.branch}`);
-
- const astroPackage = await readDirectoryPackage(astroDir);
-
- const githubPackage = await readDirectoryPackage(githubDir);
-
- if ('astro' in Object(githubPackage.dependencies)) {
- githubPackage.dependencies['astro'] = astroPackage.version;
- }
-
- if ('astro' in Object(githubPackage.devDependencies)) {
- githubPackage.devDependencies['astro'] = astroPackage.version;
- }
-
- if ('astro' in Object(githubPackage.peerDependencies)) {
- githubPackage.peerDependencies['astro'] = astroPackage.version;
- }
-
- await writeDirectoryPackage(githubDir, githubPackage);
-
- return githubDir;
-};
-
-/** Returns the parsed package.json of the given directory. */
-const readDirectoryPackage = async (/** @type {URL} */ dir) => JSON.parse(await fs.readFile(new URL('package.json', dir + '/'), 'utf-8'));
-
-/** Returns upon completion of writing a package.json to the given directory. */
-const writeDirectoryPackage = async (/** @type {URL} */ dir, /** @type {any} */ data) =>
- await fs.writeFile(new URL('package.json', dir + '/'), JSON.stringify(data, null, ' ') + '\n');
-
-/** Returns all child directories of the given directory. */
-const getChildDirectories = async (/** @type {URL} */ dir) => {
- /** @type {URL[]} */
- const dirs = [];
-
- for await (const dirent of await fs.opendir(dir)) {
- if (dirent.isDirectory()) {
- dirs.push(new URL(dirent.name, dir));
- }
- }
-
- return dirs;
-};
-
-/* Execution
-/* -------------------------------------------------------------------------- */
-
-run();
-
-/** @typedef {{ org: string, name: string, branch: string }} GithubOpts */
+run(); \ No newline at end of file
diff --git a/scripts/smoke/sync.js b/scripts/smoke/sync.js
new file mode 100644
index 000000000..fbba9cc80
--- /dev/null
+++ b/scripts/smoke/sync.js
@@ -0,0 +1,97 @@
+/** @file Runs all smoke tests and may add extra smoke-test dependencies to `yarn.lock`. */
+
+// @ts-check
+
+import Zip from 'adm-zip';
+import rimraf from 'rimraf';
+import { execa } from 'execa';
+import { polyfill } from '@astropub/webapi';
+import { fileURLToPath } from 'node:url';
+import { promises as fs } from 'node:fs';
+
+polyfill(globalThis, { exclude: 'window document' });
+
+/* Configuration
+/* -------------------------------------------------------------------------- */
+
+/** URL directory containing this current script. */
+// const scriptDir = new URL('./', import.meta.url);
+
+/** URL directory containing the entire project. */
+const rootDir = new URL('../../', import.meta.url);
+
+/** URL directory containing the example subdirectories. */
+const exampleDir = new URL('examples/', rootDir);
+const smokeDir = new URL('smoke/', rootDir);
+
+/** URL directory containing the Astro package. */
+const astroDir = new URL('packages/astro/', rootDir);
+
+/** GitHub configuration for the external "docs" Astro project. */
+const docGithubConfig = { org: 'withastro', name: 'docs', branch: 'main' };
+
+/** GitHub configuration for the external "astro.build" Astro project. */
+const wwwGithubConfig = { org: 'withastro', name: 'astro.build', branch: 'main' };
+
+/* Application
+/* -------------------------------------------------------------------------- */
+
+/** Runs all smoke tests. */
+async function run() {
+ await downloadGithubZip(docGithubConfig);
+ await downloadGithubZip(wwwGithubConfig);
+ await execa('yarn', [], { cwd: fileURLToPath(rootDir), stdout: 'inherit', stderr: 'inherit' });
+}
+
+/* Functionality
+/* -------------------------------------------------------------------------- */
+
+/** Returns the URL to the ZIP of the given GitHub project. */
+const getGithubZipURL = (/** @type {GithubOpts} */ opts) => `https://github.com/${opts.org}/${opts.name}/archive/refs/heads/${opts.branch}.zip`;
+
+/** Returns the awaited ZIP Buffer from the given GitHub project. */
+const fetchGithubZip = (/** @type {GithubOpts} */ opts) =>
+ fetch(getGithubZipURL(opts))
+ .then((response) => response.arrayBuffer())
+ .then((arrayBuffer) => Buffer.from(arrayBuffer));
+
+/** Downloads a ZIP from the given GitHub project. */
+const downloadGithubZip = async (/** @type {GithubOpts} */ opts) => {
+ /** Expected directory when the zip is downloaded. */
+ const githubDir = new URL(`${opts.name}-${opts.branch}`, smokeDir);
+ /** Whether the expected directory is already available */
+ rimraf.sync(fileURLToPath(githubDir));
+ console.log('🤖', 'Downloading', `${opts.org}/${opts.name}#${opts.branch}`);
+ const buffer = await fetchGithubZip(opts);
+ console.log('🤖', 'Extracting', `${opts.org}/${opts.name}#${opts.branch}`);
+ new Zip(buffer).extractAllTo(fileURLToPath(smokeDir), true);
+ console.log('🤖', 'Preparing', `${opts.org}/${opts.name}#${opts.branch}`);
+ const astroPackage = await readDirectoryPackage(astroDir);
+ const githubPackage = await readDirectoryPackage(githubDir);
+ if ('astro' in Object(githubPackage.dependencies)) {
+ githubPackage.dependencies['astro'] = astroPackage.version;
+ }
+ if ('astro' in Object(githubPackage.devDependencies)) {
+ githubPackage.devDependencies['astro'] = astroPackage.version;
+ }
+ if ('astro' in Object(githubPackage.peerDependencies)) {
+ githubPackage.peerDependencies['astro'] = astroPackage.version;
+ }
+ await writeDirectoryPackage(githubDir, githubPackage);
+ rimraf.sync(fileURLToPath(new URL(`yarn.lock`, githubDir)));
+ rimraf.sync(fileURLToPath(new URL(`package-lock.json`, githubDir)));
+};
+
+/** Returns the parsed package.json of the given directory. */
+const readDirectoryPackage = async (/** @type {URL} */ dir) => JSON.parse(await fs.readFile(new URL('package.json', dir + '/'), 'utf-8'));
+
+/** Returns upon completion of writing a package.json to the given directory. */
+const writeDirectoryPackage = async (/** @type {URL} */ dir, /** @type {any} */ data) =>
+ await fs.writeFile(new URL('package.json', dir + '/'), JSON.stringify(data, null, ' ') + '\n');
+
+/* Execution
+/* -------------------------------------------------------------------------- */
+
+run();
+
+/** @typedef {{ org: string, name: string, branch: string }} GithubOpts */
diff --git a/smoke/astro.build-main/.gitignore b/smoke/astro.build-main/.gitignore
new file mode 100644
index 000000000..15054dbc4
--- /dev/null
+++ b/smoke/astro.build-main/.gitignore
@@ -0,0 +1,130 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional stylelint cache
+.stylelintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variable files
+.env
+.env.development.local
+.env.test.local
+.env.production.local
+.env.local
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+.temp
+.cache
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v2
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
+
+# macOS-specific files
+.DS_Store
diff --git a/smoke/astro.build-main/README.md b/smoke/astro.build-main/README.md
new file mode 100644
index 000000000..0ec71cfef
--- /dev/null
+++ b/smoke/astro.build-main/README.md
@@ -0,0 +1,5 @@
+[![Netlify Status](https://api.netlify.com/api/v1/badges/3442658e-265e-48ac-b3bc-e270853129c8/deploy-status)](https://app.netlify.com/sites/astro-build/deploys)
+
+# [astro.build](https://astro.build)
+
+The source code for [astro.build](https://astro.build), built with [Astro](https://github.com/withastro/astro).
diff --git a/smoke/astro.build-main/astro.config.ts b/smoke/astro.build-main/astro.config.ts
new file mode 100644
index 000000000..88954292a
--- /dev/null
+++ b/smoke/astro.build-main/astro.config.ts
@@ -0,0 +1,33 @@
+import type { AstroUserConfig } from "astro";
+
+const config: AstroUserConfig = {
+ buildOptions: {
+ site: "https://astro.build",
+ sitemap: true,
+ },
+ renderers: [],
+ markdownOptions: {
+ render: [
+ "@astrojs/markdown-remark",
+ {
+ remarkPlugins: [
+ "remark-smartypants",
+ ["remark-autolink-headings", { behavior: "wrap" }],
+ ],
+ rehypePlugins: [
+ "rehype-slug",
+ ["rehype-autolink-headings", { behavior: "wrap" }],
+ ],
+ syntaxHighlight: 'shiki',
+ },
+ ],
+ },
+ vite: {
+ ssr: {
+ noExternal: ['smartypants'],
+ external: ["svgo"],
+ },
+ },
+};
+
+export default config;
diff --git a/smoke/astro.build-main/package.json b/smoke/astro.build-main/package.json
new file mode 100644
index 000000000..7013272c1
--- /dev/null
+++ b/smoke/astro.build-main/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "astro.build",
+ "version": "0.0.1",
+ "private": true,
+ "scripts": {
+ "start": "astro dev --experimental-static-build",
+ "dev": "astro dev",
+ "build": "astro build --experimental-static-build",
+ "preview": "astro preview",
+ "update-contributors": "node ./update-contributors.mjs"
+ },
+ "devDependencies": {
+ "astro": "0.23.0-next.10",
+ "astro-icon": "^0.6.0"
+ },
+ "volta": {
+ "node": "14.18.3"
+ },
+ "dependencies": {
+ "date-fns": "^2.28.0",
+ "quicklink": "^2.2.0",
+ "rehype-autolink-headings": "^6.1.0",
+ "remark-autolink-headings": "^7.0.1",
+ "remark-smartypants": "^2.0.0",
+ "smartypants": "^0.1.6"
+ }
+}
diff --git a/smoke/astro.build-main/public/_redirects b/smoke/astro.build-main/public/_redirects
new file mode 100644
index 000000000..2478caf5a
--- /dev/null
+++ b/smoke/astro.build-main/public/_redirects
@@ -0,0 +1,4 @@
+# Netlify Redirects
+/chat https://discord.gg/grF4GTXXYm
+/play/* https://play.astro.build/play/:splat 200
+/v0.21 /blog/astro-021-release/ 301
diff --git a/smoke/astro.build-main/public/assets/blog/astro-018/lit-logo.svg b/smoke/astro.build-main/public/assets/blog/astro-018/lit-logo.svg
new file mode 100644
index 000000000..a09b15cdf
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/astro-018/lit-logo.svg
@@ -0,0 +1,18 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 425 200">
+ <view id="flame" viewBox="0 0 160 200" />
+ <view id="name" viewBox="240 78 185 122" />
+
+ <path d="M394.5 78v28.8H425v15.6h-30.5V158c0 3.6.1 7.2.5 10.3.8 5.3 4 10.5 8.4 12.5 5.7 2.6 9.7 2.1 21.6 1.7l-2.9 17.2c-.8.4-4 .3-7 .3-7 0-33.4 2.5-38.8-24.7-.9-4.7-.7-9.5-.7-16.9v-35.8H362l.2-15.9h13.4V78zm-51.7 28.7v91.5H324v-91.5zm0-28.7v16.3h-19V78zm-83.6 102.2h48.2l-18 18H240V78h19.2z"/>
+
+ <path fill="#324fff" d="M0 80v80a70.3 70.3 0 0040-40z"/>
+ <path fill="#283198" d="M40 120c5.7 27.3 5.3 47 0 80L0 160z"/>
+ <path fill="#0ff" d="M40 120v80l40-40a149.9 149.9 0 00-40-40z"/>
+ <path fill="#324fff" d="M80 0v80S48.3 55.7 40 40z"/>
+ <path fill="#324fff" d="M40 40v80a84.8 84.8 0 0040-40z"/>
+ <path fill="#00e8ff" d="M80 80a182 182 0 010 80l-40-40z"/>
+ <path fill="#283198" d="M80 80v80c17-7.5 31.5-19 40-40-5.9-17-18.1-30.9-40-40z"/>
+ <path fill="#283198" d="M120 40v80L80 80z"/>
+ <path fill="#00e8ff" d="M120 120c6.1 27 4.9 53.6 0 80l-40-40z"/>
+ <path fill="#324fff" d="M120 120v80l40-40c-5.4-15-18.3-27.9-40-40z"/>
+ <path fill="#324fff" d="M160 80v80l-40-40z"/>
+</svg>
diff --git a/smoke/astro.build-main/public/assets/blog/astro-018/named-slots.png b/smoke/astro.build-main/public/assets/blog/astro-018/named-slots.png
new file mode 100644
index 000000000..01c805261
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/astro-018/named-slots.png
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/astro-018/responsive-hydration.jpg b/smoke/astro.build-main/public/assets/blog/astro-018/responsive-hydration.jpg
new file mode 100644
index 000000000..ee98e769c
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/astro-018/responsive-hydration.jpg
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/astro-018/solid-logo-dark.svg b/smoke/astro.build-main/public/assets/blog/astro-018/solid-logo-dark.svg
new file mode 100644
index 000000000..5917b2292
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/astro-018/solid-logo-dark.svg
@@ -0,0 +1 @@
+<svg enable-background="new 0 0 341.7 155.3" viewBox="0 0 341.7 155.3" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="27.513" x2="152.027" y1="3.551" y2="63.991"><stop offset=".118" stop-color="#bbbdbf"/><stop offset=".299" stop-color="#f1f1f2"/><stop offset="1" stop-color="#d0d2d3"/></linearGradient><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="95.792" x2="73.994" y1="33.088" y2="105.748"><stop offset="0" stop-color="#bbbdbf"/><stop offset=".475" stop-color="#929497"/><stop offset="1" stop-color="#58595b"/></linearGradient><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="18.417" x2="144.251" y1="64.728" y2="150.269"><stop offset="0" stop-color="#58595b"/><stop offset=".539" stop-color="#929497"/><stop offset="1" stop-color="#58595b"/></linearGradient><linearGradient id="d" gradientUnits="userSpaceOnUse" x1="75.248" x2="24.386" y1="75.009" y2="261.284"><stop offset="0" stop-color="#4377bb"/><stop offset="0" stop-color="#808184"/><stop offset=".475" stop-color="#404041"/><stop offset="1" stop-color="#231f20"/></linearGradient></defs><path d="m169.2 100.9s3.2 3.4 8.1 3.4c3.4 0 6.2-2 6.2-5.4 0-7.8-15.5-5.9-15.5-15.5 0-4.5 4-8.3 9.7-8.3 5.4 0 8.3 3 8.3 3l-1.5 2.6s-2.7-2.7-6.8-2.7c-4 0-6.5 2.6-6.6 5.3 0 7.4 15.5 5.3 15.5 15.5 0 4.6-3.6 8.4-9.4 8.4-6.4 0-9.8-4-9.8-4zm49.1-25.6c8.8 0 15.8 7 15.8 15.9.1 8.8-7 16.1-15.8 16.2h-.1c-8.8-.1-15.9-7.4-15.8-16.2v-.1c.1-8.9 7.1-15.9 15.9-15.8zm-.1 29.3c7.2-.2 12.9-6.1 12.7-13.3v-.1c0-7.4-5.6-13.1-12.6-13.1s-12.7 5.6-12.7 13c0 7.6 5.6 13.4 12.6 13.5zm33.9-28.7h3l-.1 28.3h14.4v2.7h-17.5zm33.9.1h3l-.1 31.1h-3zm23.2 0h10c9.3 0 15.6 5.7 15.6 15.6s-6.3 15.5-15.6 15.5h-10zm9.6 28.4c7.6 0 12.7-4.5 12.8-12.8 0-8.3-5.1-12.8-12.7-12.8h-6.7l-.1 25.6z" fill="#fff"/><path d="m163 35.8s-52.7-39.8-93.6-30.5c-1.2.3-2.5.6-3.6 1-6.3 2-11 5.5-13.9 9.7-.6.8-1 1.7-1.5 2.5l-15.1 25.7 26.1 5.1c10.3 7.4 24.8 10.5 37.2 7.3l46.5 9.1z" fill="#bbbdbf"/><path d="m163 35.8s-52.7-39.8-93.6-30.5c-1.2.3-2.5.6-3.6 1-6.3 2-11 5.5-13.9 9.7-.6.8-1 1.7-1.5 2.5l-15.1 25.7 26.1 5.1c10.3 7.4 24.8 10.5 37.2 7.3l46.5 9.1z" fill="url(#a)" opacity=".29"/><path d="m51.5 35.3c-1.2.3-2.5.6-3.6 1-16.7 5.4-22.4 21-12.8 34.7s30.9 20.4 47.6 15l62.3-20.2s-52.6-39.8-93.5-30.5z" fill="#929497"/><path d="m51.5 35.3c-1.2.3-2.5.6-3.6 1-16.7 5.4-22.4 21-12.8 34.7s30.9 20.4 47.6 15l62.3-20.2s-52.6-39.8-93.5-30.5z" fill="url(#b)" opacity=".34"/><path d="m133.6 80.3c-9.6-13.7-30.9-20.5-47.6-15.1l-62.4 20.2-19.6 35 111.6 19.1 20-35.6c4-7 3.6-15.6-2-23.6z" fill="url(#c)"/><path d="m114 115.2c-9.6-13.7-30.9-20.5-47.6-15.1l-62.4 20.3s52.7 39.8 93.6 30.5c1.2-.3 2.5-.6 3.6-1 16.7-5.4 22.4-21 12.8-34.7z" fill="url(#d)"/></svg> \ No newline at end of file
diff --git a/smoke/astro.build-main/public/assets/blog/astro-021-preview/hero.png b/smoke/astro.build-main/public/assets/blog/astro-021-preview/hero.png
new file mode 100644
index 000000000..ca9067ecf
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/astro-021-preview/hero.png
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/astro-021-preview/social.png b/smoke/astro.build-main/public/assets/blog/astro-021-preview/social.png
new file mode 100644
index 000000000..b1cf7b1d8
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/astro-021-preview/social.png
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/astro-021-release/hero.png b/smoke/astro.build-main/public/assets/blog/astro-021-release/hero.png
new file mode 100644
index 000000000..290928c4a
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/astro-021-release/hero.png
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/astro-021-release/social.png b/smoke/astro.build-main/public/assets/blog/astro-021-release/social.png
new file mode 100644
index 000000000..15957b8f1
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/astro-021-release/social.png
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/astro-023/social.jpg b/smoke/astro.build-main/public/assets/blog/astro-023/social.jpg
new file mode 100644
index 000000000..ee46972a2
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/astro-023/social.jpg
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/astro-netlify-social.jpg b/smoke/astro.build-main/public/assets/blog/astro-netlify-social.jpg
new file mode 100644
index 000000000..4a926cc57
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/astro-netlify-social.jpg
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/astro-repl/astro-repl-hero.jpg b/smoke/astro.build-main/public/assets/blog/astro-repl/astro-repl-hero.jpg
new file mode 100644
index 000000000..175d51f69
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/astro-repl/astro-repl-hero.jpg
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/astro-repl/astro-repl-screenshot.jpg b/smoke/astro.build-main/public/assets/blog/astro-repl/astro-repl-screenshot.jpg
new file mode 100644
index 000000000..03bfb3634
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/astro-repl/astro-repl-screenshot.jpg
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/astro-repl/astro-repl-social.jpg b/smoke/astro.build-main/public/assets/blog/astro-repl/astro-repl-social.jpg
new file mode 100644
index 000000000..c7ea9e97d
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/astro-repl/astro-repl-social.jpg
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/demo-day-2021-09/discord-chat.jpg b/smoke/astro.build-main/public/assets/blog/demo-day-2021-09/discord-chat.jpg
new file mode 100644
index 000000000..3a0fb3615
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/demo-day-2021-09/discord-chat.jpg
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/demo-day-2021-09/hero.png b/smoke/astro.build-main/public/assets/blog/demo-day-2021-09/hero.png
new file mode 100644
index 000000000..ca9067ecf
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/demo-day-2021-09/hero.png
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/demo-day-2021-09/social.png b/smoke/astro.build-main/public/assets/blog/demo-day-2021-09/social.png
new file mode 100644
index 000000000..cb390cc6e
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/demo-day-2021-09/social.png
Binary files differ
diff --git a/smoke/astro.build-main/public/assets/blog/introducing-astro.jpg b/smoke/astro.build-main/public/assets/blog/introducing-astro.jpg
new file mode 100644
index 000000000..08f686cbb
--- /dev/null
+++ b/smoke/astro.build-main/public/assets/blog/introducing-astro.jpg
Binary files differ
diff --git a/smoke/astro.build-main/public/authors/drew.jpg b/smoke/astro.build-main/public/authors/drew.jpg
new file mode 100644
index 000000000..6d6b562ae
--- /dev/null
+++ b/smoke/astro.build-main/public/authors/drew.jpg
Binary files differ
diff --git a/smoke/astro.build-main/public/authors/fred.jpg b/smoke/astro.build-main/public/authors/fred.jpg
new file mode 100644
index 000000000..ae8b2762d
--- /dev/null
+++ b/smoke/astro.build-main/public/authors/fred.jpg
Binary files differ
diff --git a/smoke/astro.build-main/public/authors/jon.jpg b/smoke/astro.build-main/public/authors/jon.jpg
new file mode 100644
index 000000000..072dbc789
--- /dev/null
+++ b/smoke/astro.build-main/public/authors/jon.jpg
Binary files differ
diff --git a/smoke/astro.build-main/public/authors/matthew.jpg b/smoke/astro.build-main/public/authors/matthew.jpg
new file mode 100644
index 000000000..9df387d42
--- /dev/null
+++ b/smoke/astro.build-main/public/authors/matthew.jpg
Binary files differ
diff --git a/smoke/astro.build-main/public/authors/nate.jpg b/smoke/astro.build-main/public/authors/nate.jpg
new file mode 100644
index 000000000..4074a07c2
--- /dev/null
+++ b/smoke/astro.build-main/public/authors/nate.jpg
Binary files differ
diff --git a/smoke/astro.build-main/public/favicon.ico b/smoke/astro.build-main/public/favicon.ico
new file mode 100644
index 000000000..578ad458b
--- /dev/null
+++ b/smoke/astro.build-main/public/favicon.ico
Binary files differ
diff --git a/smoke/astro.build-main/public/favicon.svg b/smoke/astro.build-main/public/favicon.svg
new file mode 100644
index 000000000..542f90aec
--- /dev/null
+++ b/smoke/astro.build-main/public/favicon.svg
@@ -0,0 +1,11 @@
+<svg width="256" height="256" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <style>
+ #flame { fill: #FF5D01; }
+ #a { fill: #000014; }
+ @media (prefers-color-scheme: dark) {
+ #a { fill: #fff; }
+ }
+ </style>
+ <path id="a" fill-rule="evenodd" clip-rule="evenodd" d="M163.008 18.929c1.944 2.413 2.935 5.67 4.917 12.181l43.309 142.27a180.277 180.277 0 00-51.778-17.53l-28.198-95.29a3.67 3.67 0 00-7.042.01l-27.857 95.232a180.225 180.225 0 00-52.01 17.557l43.52-142.281c1.99-6.502 2.983-9.752 4.927-12.16a15.999 15.999 0 016.484-4.798c2.872-1.154 6.271-1.154 13.07-1.154h31.085c6.807 0 10.211 0 13.086 1.157a16.004 16.004 0 016.487 4.806z" />
+ <path id="flame" fill-rule="evenodd" clip-rule="evenodd" d="M168.19 180.151c-7.139 6.105-21.39 10.268-37.804 10.268-20.147 0-37.033-6.272-41.513-14.707-1.602 4.835-1.961 10.367-1.961 13.902 0 0-1.056 17.355 11.015 29.426 0-6.268 5.081-11.349 11.349-11.349 10.743 0 10.731 9.373 10.721 16.977v.679c0 11.542 7.054 21.436 17.086 25.606a23.27 23.27 0 01-2.339-10.2c0-11.008 6.463-15.107 13.974-19.87 5.976-3.79 12.616-8.001 17.192-16.449a31.024 31.024 0 003.743-14.82c0-3.299-.513-6.479-1.463-9.463z" />
+</svg>
diff --git a/smoke/astro.build-main/public/fonts/RTAliasMedium-Bold.woff2 b/smoke/astro.build-main/public/fonts/RTAliasMedium-Bold.woff2
new file mode 100644
index 000000000..adaabb21d
--- /dev/null
+++ b/smoke/astro.build-main/public/fonts/RTAliasMedium-Bold.woff2
Binary files differ
diff --git a/smoke/astro.build-main/public/fonts/RTAliasMedium-BoldOblique.woff2 b/smoke/astro.build-main/public/fonts/RTAliasMedium-BoldOblique.woff2
new file mode 100644
index 000000000..352bcb1e7
--- /dev/null
+++ b/smoke/astro.build-main/public/fonts/RTAliasMedium-BoldOblique.woff2
Binary files differ
diff --git a/smoke/astro.build-main/public/fonts/RTAliasMedium-Regular.woff2 b/smoke/astro.build-main/public/fonts/RTAliasMedium-Regular.woff2
new file mode 100644
index 000000000..dd764f2d1
--- /dev/null
+++ b/smoke/astro.build-main/public/fonts/RTAliasMedium-Regular.woff2
Binary files differ
diff --git a/smoke/astro.build-main/public/fonts/RTAliasMedium-RegularOblique.woff2 b/smoke/astro.build-main/public/fonts/RTAliasMedium-RegularOblique.woff2
new file mode 100644
index 000000000..981965a79
--- /dev/null
+++ b/smoke/astro.build-main/public/fonts/RTAliasMedium-RegularOblique.woff2
Binary files differ
diff --git a/smoke/astro.build-main/public/pixel.worklet.js b/smoke/astro.build-main/public/pixel.worklet.js
new file mode 100644
index 000000000..4df22728e
--- /dev/null
+++ b/smoke/astro.build-main/public/pixel.worklet.js
@@ -0,0 +1,59 @@
+// @ts-nocheck
+class Pixel {
+ static get inputProperties() {
+ return ['--border-radius', '--border-color', '--pixel-size', '--variant'];
+ }
+ paint(ctx, size, styleMap) {
+ ctx.fillStyle = "black";
+ const variant = styleMap.get("--variant").toString().trim();
+ const corner = styleMap.get("--border-radius").toString();
+ const px = styleMap.get("--pixel-size").toString();
+ const w = size.width;
+ const h = size.height;
+
+ switch (variant) {
+ case 'primary': {
+ ctx.fillRect(corner, 0, w - corner * 2, h);
+
+ for (let i = 0; i < Math.round(corner / px); i++) {
+ let v = px * i;
+ let x = v;
+ let y = corner - v;
+ ctx.fillRect(x, y, px, h - corner * 2 + (v * 2));
+ }
+ for (let i = 0; i < Math.round(corner / px); i++) {
+ let v = px * i;
+ let x = w - (px * (i + 1));
+ let y = corner - v;
+ ctx.fillRect(x, y, px, h - corner * 2 + (v * 2));
+ }
+ return;
+ }
+ case 'outline': {
+ // top + right + bottom + left border
+ ctx.fillRect(corner, 0, w - corner * 2, px);
+ ctx.fillRect(w - px, corner, px, h - (corner * 2));
+ ctx.fillRect(corner, h - px, w - corner * 2, px);
+ ctx.fillRect(0, corner, px, h - (corner * 2));
+
+ for (let i = 0; i < Math.round(corner / px) + 1; i++) {
+ let v = px * i;
+ let x = v;
+ let y = corner - v;
+ ctx.fillRect(x, y, px, px * 2);
+ ctx.fillRect(x, h - y - (px * 2), px, px * 2);
+ }
+ for (let i = 0; i < Math.round(corner / px) + 1; i++) {
+ let v = px * i;
+ let x = w - (px * (i + 1));
+ let y = corner - v;
+ ctx.fillRect(x, y, px, px * 2);
+ ctx.fillRect(x, h - y - (px * 2), px, px * 2);
+ }
+ return;
+ }
+ }
+ }
+}
+
+registerPaint("pixel", Pixel);
diff --git a/smoke/astro.build-main/public/robots.txt b/smoke/astro.build-main/public/robots.txt
new file mode 100644
index 000000000..bdce67ff8
--- /dev/null
+++ b/smoke/astro.build-main/public/robots.txt
@@ -0,0 +1,6 @@
+# I, for one, welcome our new robotic overlords
+
+User-agent: *
+Allow: /
+
+Sitemap: https://astro.build/sitemap.xml
diff --git a/smoke/astro.build-main/public/scripts/defer.js b/smoke/astro.build-main/public/scripts/defer.js
new file mode 100644
index 000000000..dd9ec7784
--- /dev/null
+++ b/smoke/astro.build-main/public/scripts/defer.js
@@ -0,0 +1,3 @@
+if (window.matchMedia('(hover: hover)').matches) {
+ import('/scripts/konami.js').then(mod => mod.init());
+}
diff --git a/smoke/astro.build-main/public/scripts/konami.js b/smoke/astro.build-main/public/scripts/konami.js
new file mode 100644
index 000000000..7995842a8
--- /dev/null
+++ b/smoke/astro.build-main/public/scripts/konami.js
@@ -0,0 +1,59 @@
+// Aha! These are not analytics at all!
+class KonamiCode {
+ enabled = false;
+ keys = ["ArrowUp", "ArrowUp", "ArrowDown", "ArrowDown", "ArrowLeft", "ArrowRight", "ArrowLeft", "ArrowRight", "b", "a"];
+ accepted = [...new Set(this.keys)];
+ inputs = [];
+
+ constructor({ enable, disable }) {
+ this.enable = enable;
+ this.disable = disable;
+ this.handleKey = this.handleKey.bind(this);
+ document.addEventListener('keydown', this.handleKey);
+ }
+
+ handleKey({ key }) {
+ if (this.enabled) {
+ this.reset();
+ return;
+ }
+ if (!this.accepted.includes(key)) return;
+
+ if (this.keys[this.inputs.length] === key) {
+ this.handleInput(key)
+ } else {
+ this.reset();
+ }
+ }
+
+ handleInput(key) {
+ this.inputs.push(key);
+
+ if (this.inputs.length === 10) {
+ this.handleMatch();
+ }
+ }
+
+ handleMatch() {
+ this.enabled = true;
+ this.enable();
+ this.inputs = [];
+ }
+
+ reset() {
+ if (this.enabled) {
+ this.enabled = false;
+ this.disable();
+ }
+ if (this.inputs.length) {
+ this.inputs = [];
+ }
+ }
+}
+
+export function init() {
+ new KonamiCode({
+ enable: () => document.body.classList.add('🥚'),
+ disable: () => document.body.classList.remove('🥚'),
+ });
+}
diff --git a/smoke/astro.build-main/public/social.png b/smoke/astro.build-main/public/social.png
new file mode 100644
index 000000000..3faeac77c
--- /dev/null
+++ b/smoke/astro.build-main/public/social.png
Binary files differ
diff --git a/smoke/astro.build-main/public/stars-mask.png b/smoke/astro.build-main/public/stars-mask.png
new file mode 100644
index 000000000..fe304606f
--- /dev/null
+++ b/smoke/astro.build-main/public/stars-mask.png
Binary files differ
diff --git a/smoke/astro.build-main/public/stars.png b/smoke/astro.build-main/public/stars.png
new file mode 100644
index 000000000..59daaa1a5
--- /dev/null
+++ b/smoke/astro.build-main/public/stars.png
Binary files differ
diff --git a/smoke/astro.build-main/public/styles/main.css b/smoke/astro.build-main/public/styles/main.css
new file mode 100644
index 000000000..36bebacac
--- /dev/null
+++ b/smoke/astro.build-main/public/styles/main.css
@@ -0,0 +1,1117 @@
+@font-face {
+ font-family: 'RT Alias Medium';
+ font-style: normal;
+ font-weight: 400;
+ src: local(''), url('/fonts/RTAliasMedium-Regular.woff2') format('woff2');
+ font-display: swap;
+}
+@font-face {
+ font-family: 'RT Alias Medium';
+ font-style: italic;
+ font-weight: 400;
+ src: local(''), url('/fonts/RTAliasMedium-RegularOblique.woff2') format('woff2');
+ font-display: swap;
+}
+@font-face {
+ font-family: 'RT Alias Medium';
+ font-style: normal;
+ font-weight: 700;
+ src: local(''), url('/fonts/RTAliasMedium-Bold.woff2') format('woff2');
+ font-display: swap;
+}
+@font-face {
+ font-family: 'RT Alias Medium';
+ font-style: italic;
+ font-weight: 700;
+ src: local(''), url('/fonts/RTAliasMedium-BoldOblique.woff2') format('woff2');
+ font-display: swap;
+}
+
+/** sanitize.css makes the line-height 1.5 globally, fix this for headers */
+h1,h2,h3,h4,h5,h6 {
+ line-height: 1.11;
+}
+
+* {
+ box-sizing: border-box;
+ padding: 0;
+ margin: 0;
+}
+
+:focus:not(:focus-visible) {
+ outline: none
+}
+
+:focus-visible {
+ outline: 2px dashed var(--color-blue);
+}
+
+:root {
+ --color-tan: #f4efed;
+ --color-tan-rgb: 244, 239, 237;
+ --color-dawn: #f3e9fa;
+ --color-dusk: #514375;
+ --color-midnight: #31274a;
+ --color-midnight-rgb: 49, 39, 74;
+ --color-blue: #205eff;
+ --color-red: #ff5050;
+ --color-yellow: #ffd542;
+ --color-purple: #af43ff;
+ --color-pink: #FDB2B7;
+
+ --gradient-pop-1: linear-gradient(180deg, #205eff 0%, #c238bd 115%);
+ --gradient-pop-2: repeating-linear-gradient(
+ 135deg,
+ #ff9776 0em,
+ #769cff 1em,
+ #c238bd 2em,
+ #ff9776 3em
+ );
+ --gradient-pop-3: linear-gradient(180deg, #ffb4b4 0%, #c487f0 100%);
+ --gradient-pop-4: linear-gradient(
+ 0deg,
+ #632cca -33%,
+ #62289e 10%,
+ #30216b 50%,
+ #1f1638 100%
+ );
+ --gradient-pop-5: linear-gradient(
+ 180deg,
+ #ffd542 0%,
+ #ff5050 25%,
+ #af43ff 100%
+ );
+ --gradient-mood: linear-gradient(
+ 180deg,
+ #d8c5ef 0%,
+ rgba(225, 213, 238, 0) 100%
+ );
+
+ --shadow-sm: 0px 19px 53px 0px rgba(var(--color-midnight-rgb), 0.03),
+ 0px 10px 28px 0px rgba(var(--color-midnight-rgb), 0.05),
+ 0px 6px 16px 0px rgba(var(--color-midnight-rgb), 0.05),
+ 0px 3px 9px 0px rgba(var(--color-midnight-rgb), 0.075),
+ 0px 1px 4px 0px rgba(var(--color-midnight-rgb), 0.1);
+ --shadow-md: 0px 2px 2px 0px rgba(var(--color-midnight-rgb), 0.04),
+ 0px 6px 5px 0px rgba(var(--color-midnight-rgb), 0.06),
+ 0px 15px 14px 0px rgba(var(--color-midnight-rgb), 0.08),
+ 0px 50px 46px 0px rgba(var(--color-midnight-rgb), 0.12);
+ --shadow-xl: 0px 3px 2px 0px rgba(var(--color-midnight-rgb), 0.02),
+ 0px 6px 5px 0px rgba(var(--color-midnight-rgb), 0.03),
+ 0px 12px 10px 0px rgba(var(--color-midnight-rgb), 0.04),
+ 0px 22px 18px 0px rgba(var(--color-midnight-rgb), 0.04),
+ 0px 42px 34px 0px rgba(var(--color-midnight-rgb), 0.05),
+ 0px 100px 80px 0px rgba(var(--color-midnight-rgb), 0.07);
+
+ --blur-md: blur(10px);
+ --blur-xl: blur(128px);
+
+ --font-base: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
+ Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
+ --font-body: var(--font-base);
+ --font-display: "RT Alias Medium", var(--font-base);
+ --font-mono: Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace;
+
+ --corner-md: 12px;
+
+ --size-300: clamp(0.7rem, 0.66rem + 0.2vw, 0.8rem);
+ --size-400: clamp(0.88rem, 0.83rem + 0.24vw, 1rem);
+ --size-500: clamp(1.09rem, 1rem + 0.47vw, 1.33rem);
+ --size-600: clamp(1.37rem, 1.21rem + 0.8vw, 1.78rem);
+ --size-700: clamp(1.71rem, 1.45rem + 1.29vw, 2.37rem);
+ --size-800: clamp(2.14rem, 1.74rem + 1.99vw, 3.16rem);
+ --size-900: clamp(2.67rem, 2.07rem + 3vw, 4.21rem);
+ --size-1000: clamp(3.34rem, 2.45rem + 4.43vw, 5.61rem);
+
+ /* @property fallbacks */
+ --border-radius: 4;
+ --pixel-size: 4;
+ --link-color-stop-a: #205eff;
+ --link-color-stop-b: #c238bd;
+
+ background: var(--color-tan);
+}
+
+body {
+ display: flex;
+ flex-direction: column;
+}
+
+.transition #root {
+ opacity: 0;
+}
+
+@property --border-radius {
+ syntax: '<integer>';
+ inherits: true;
+ initial-value: 4;
+}
+@property --pixel-size {
+ syntax: '<integer>';
+ inherits: true;
+ initial-value: 4;
+}
+@property --link-color-stop-a {
+ syntax: '<color>';
+ inherits: false;
+ initial-value: #205eff;
+}
+@property --link-color-stop-b {
+ syntax: '<color>';
+ inherits: false;
+ initial-value: #c238bd;
+}
+
+a {
+ color: var(--color-blue);
+ text-decoration: none;
+}
+a:visited {
+ color: #7D4796;
+}
+a:is(:hover, :focus) {
+ text-decoration: underline;
+}
+a:active {
+ color: var(--color-purple);
+}
+
+.logo a {
+ color: var(--color-midnight);
+}
+
+small {
+ font-size: 0.75em;
+}
+
+.pixel {
+ --border-radius: 8;
+ --pixel-size: 4;
+ --background: var(--gradient-pop-1);
+ position: relative;
+ border-radius: calc(var(--border-radius) * 1px);
+}
+.pixel::before {
+ content: '';
+ position: absolute;
+ top: calc(var(--pixel-size) * 1px);
+ right: 0;
+ bottom: calc(var(--pixel-size) * 1px);
+ left: 0;
+ background: var(--background);
+ z-index: -1;
+}
+.pixel::after {
+ content: '';
+ position: absolute;
+ top: 0;
+ right: calc(var(--pixel-size) * 1px);
+ bottom: 0;
+ left: calc(var(--pixel-size) * 1px);
+ background: var(--background);
+ z-index: -1;
+}
+.pixel.variant-outline {
+ background: rgba(255, 255, 255, 0);
+ border-radius: 0;
+}
+.pixel.variant-outline::before {
+ background: rgba(255, 255, 255, 0);
+ border: calc(var(--pixel-size) * 1px) solid var(--background);
+ border-top: 0;
+ border-bottom: 0;
+}
+.pixel.variant-outline::after {
+ background: rgba(255, 255, 255, 0);
+ border: calc(var(--pixel-size) * 1px) solid var(--background);
+ border-right: 0;
+ border-left: 0;
+}
+
+@supports (background: paint(pixel)) {
+ .js .pixel {
+ background: none !important;
+ }
+ .js .pixel::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ z-index: -1;
+ overflow: hidden;
+ border-radius: 0;
+ background: var(--background);
+ -webkit-mask-image: paint(pixel);
+ mask-image: paint(pixel);
+ }
+ .js .pixel::after {
+ content: none;
+ }
+}
+
+html {
+ font-family: var(--font-body);
+ color: var(--color-midnight);
+ min-height: 100vh;
+ overflow-y: auto;
+ overflow-x: hidden;
+}
+
+::selection {
+ background: var(--color-blue);
+ color: white;
+}
+
+.text-gradient::selection {
+ --fill: white;
+ color: var(--fill);
+ -webkit-background-clip: initial;
+ -webkit-text-fill-color: initial;
+}
+
+.text-gradient {
+ background: var(--fill, var(--gradient-pop-1));
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+}
+
+.visually-hidden {
+ clip: rect(0 0 0 0);
+ clip-path: inset(50%);
+ height: 1px;
+ overflow: hidden;
+ position: absolute;
+ white-space: nowrap;
+ width: 1px;
+}
+
+.container {
+ max-width: 40rem;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+@media (min-width: 40rem) {
+ .container {
+ padding-left: 1em;
+ padding-right: 1em;
+ }
+}
+
+@media (min-width: 52rem) {
+ .container {
+ max-width: 50rem;
+ }
+}
+
+@media (min-width: 64rem) {
+ .container {
+ max-width: 62rem;
+ }
+}
+
+@media (min-width: 82rem) {
+ .container {
+ max-width: 80rem;
+ }
+}
+
+@media (min-width: 92rem) {
+ .container {
+ max-width: 90rem;
+ }
+}
+
+.head-sm {
+ font-family: var(--font-display);
+ font-size: var(--size-600);
+ letter-spacing: -0.5px;
+ line-height: 1.2;
+}
+
+.head-md {
+ font-family: var(--font-display);
+ font-size: var(--size-700);
+ letter-spacing: -0.5px;
+ line-height: 1.2;
+}
+
+p, .body-md {
+ font-family: var(--font-body);
+ font-size: var(--size-500);
+ line-height: 1.3;
+}
+
+.elevation-xl {
+ box-shadow: var(--shadow-xl);
+}
+
+.elevation-md {
+ box-shadow: var(--shadow-md);
+}
+
+.container {
+ width: 100%;
+}
+
+#article :is(h1, h2, h3, h4, h5, h6) {
+ font-family: var(--font-display);
+ line-height: 1.1;
+ margin-bottom: 1.25rem;
+ color: var(--color-dusk);
+}
+#article hr {
+ border: 0;
+ border-top: 1px solid var(--color-dawn);
+ margin-left: -2rem;
+ margin-right: -2rem;
+ margin-top: 1rem;
+ margin-bottom: 2rem;
+}
+#article h1 {
+ --fill: var(--gradient-pop-1);
+ font-size: 3rem;
+ font-size: var(--size-800);
+
+}
+#article h2 {
+ font-size: 2rem;
+ font-size: var(--size-600);
+ margin-top: 2em;
+ margin-bottom: -0.25em;
+}
+
+#article code {
+ font-family: var(--font-mono);
+ font-weight: 400;
+ white-space: pre-wrap;
+ word-break: break-word;
+}
+
+#article code:not([class]) {
+ font-size: 0.85em;
+ color: var(--color-purple);
+}
+
+#article code:not([class])::before {
+ content: '\`';
+}
+#article code:not([class])::after {
+ content: '\`';
+}
+
+.astro-code > code::before,
+.astro-code > code::after {
+ content: none !important;
+}
+
+#article img {
+ max-width: 100%;
+}
+
+#article :is(h2, h3, h4, h5, h6) a {
+ font: inherit;
+ color: inherit;
+ text-decoration: none !important;
+ display: flex;
+}
+
+#article :is(h2, h3, h4, h5, h6) a::before {
+ content: "#";
+ width: 1em;
+ margin-left: 0.25em;
+ color: inherit;
+ opacity: 0;
+ transition: opacity 200ms cubic-bezier(0.23, 1, 0.320, 1);
+ order: 999;
+}
+
+@media (min-width: 50rem) {
+ #content :is(h2, h3, h4, h5, h6) a::before {
+ order: initial;
+ margin-left: -1em;
+ }
+}
+
+#article :is(h2, h3, h4, h5, h6) a:is(:active, :visited, :hover, :focus) {
+ color: var(--color-dusk);
+}
+
+#article :is(h2, h3, h4, h5, h6) a:active::before,
+#article :is(h2, h3, h4, h5, h6) a:hover::before,
+#article :is(h2, h3, h4, h5, h6) a:focus::before {
+ opacity: 0.6 !important;
+}
+
+#article :is(strong, b) {
+ font-family: inherit;
+ font-weight: 600;
+}
+
+#article :is(em, i) {
+ font-weight: 400;
+ font-style: normal;
+}
+
+#article :is(ul:not([role="list"]), ol:not([role="list"])) {
+ padding-left: 1.5em;
+}
+
+#article :where(ul:not([role="list"])) {
+ list-style-type: square;
+}
+
+#article :where(ul:not([role="list"]) > li + li) {
+ margin-top: 0.25em;
+}
+
+#article ::marker {
+ color: rgba(var(--color-midnight-rgb), 0.5);
+}
+
+#article pre > code:not([class*='language']) {
+ background-color: transparent;
+ padding: 0;
+ margin: 0;
+ border-radius: 0;
+ color: inherit;
+}
+
+#article pre > code {
+ font-size: 1em;
+}
+
+#article pre {
+ position: relative;
+ --padding-block: 1rem;
+ --padding-inline: 2rem;
+ padding: var(--padding-block) var(--padding-inline);
+ padding-right: calc(var(--padding-inline) * 2);
+ margin-left: calc(var(--padding-inline) * -1);
+ margin-right: calc(var(--padding-inline) * -1);
+ font-family: var(--font-mono);
+
+ line-height: 1.5;
+ font-size: 0.85em;
+ overflow-y: hidden;
+ overflow-x: auto;
+}
+
+#article pre {
+ background: linear-gradient(to bottom, var(--color-midnight), #1F1638);
+ color: white;
+}
+
+#article table {
+ width: 100%;
+ padding: var(--padding-block) 0;
+ margin: 0;
+ border-collapse: collapse;
+}
+
+/* Zebra striping */
+#article tr:nth-of-type(odd) {
+ background: var(--theme-bg-hover);
+}
+#article th {
+ background: var(--color-black);
+ color: var(--theme-color);
+ font-weight: bold;
+}
+#article td,
+#article th {
+ padding: 6px;
+ text-align: left;
+}
+
+/* Code */
+
+.language-css > code,
+.language-sass > code,
+.language-scss > code {
+ color: #fd9170;
+}
+
+.language-diff .token.prefix.deleted,
+.language-diff .token.prefix.inserted {
+ user-select: none;
+}
+
+[class*='language-'] .namespace {
+ opacity: 0.7;
+}
+
+.token.plain-text,
+[class*='language-bash'] span.token,
+[class*='language-shell'] span.token {
+ color: hsla(var(--color-gray-90), 1);
+}
+
+[class*='language-bash'] span.token,
+[class*='language-shell'] span.token {
+ font-style: bold;
+}
+
+.token.prolog,
+.token.comment,
+[class*='language-bash'] span.token.comment,
+[class*='language-shell'] span.token.comment {
+ color: rgba(255, 255, 255, 0.67);
+}
+
+.token.front-matter-block {
+ color: white;
+ opacity: 0.8;
+}
+
+.token.selector,
+.token.tag,
+.token.unit,
+.token.url,
+.token.variable,
+.token.entity,
+.token.deleted {
+ color: #fa5e5b;
+}
+
+.token.boolean,
+.token.constant,
+.token.doctype,
+.token.number,
+.token.regex,
+.token.builtin,
+.token.class,
+.token.hexcode,
+.token.class-name,
+.token.attr-name {
+ color: hsla(var(--color-yellow), 1);
+}
+
+.token.atrule,
+.token.attribute,
+.token.attr-value .token.punctuation,
+.token.attr-value,
+.token.pseudo-class,
+.token.pseudo-element,
+.token.string {
+ color: hsla(var(--color-green), 1);
+}
+
+.token.symbol,
+.token.function,
+.token.id,
+.token.important {
+ color: hsla(var(--color-blue), 1);
+}
+
+.token.important,
+.token.id {
+ font-weight: bold;
+}
+
+.token.cdata,
+.token.char,
+.token.property {
+ color: #23b1af;
+}
+
+.token.inserted {
+ color: hsla(var(--color-green), 1);
+}
+
+.token.keyword {
+ color: #ff657c;
+ font-style: italic;
+}
+
+.token.operator {
+ color: hsla(var(--color-gray-70), 1);
+}
+
+.token.attr-value .token.attr-equals,
+.token.punctuation {
+ color: hsla(var(--color-gray-80), 1);
+}
+
+#nav {
+ --offset-height: calc(var(--offset) * 1rem);
+ width: 100%;
+ position: sticky;
+ top: calc((var(--offset-height) * -1) - 1px);
+ margin-top: -2rem;
+ padding: 0.5rem 0;
+ background: linear-gradient(0deg, rgba(var(--color-tan-rgb), 0.7), rgba(var(--color-tan-rgb), 1));
+ -webkit-backdrop-filter: blur(10px);
+ backdrop-filter: blur(10px);
+ z-index: 2;
+}
+#nav.margin-bottom {
+ margin-bottom: -4.5rem;
+}
+#nav.invert {
+ background: transparent;
+ color: white;
+ -webkit-backdrop-filter: none;
+ backdrop-filter: none;
+}
+#nav.invert a {
+ color: white;
+}
+
+#nav::before {
+ content: '';
+ display: block;
+ width: 100%;
+ height: var(--offset-height);
+ z-index: -2;
+}
+#nav.invert::before {
+ background: #1f1638;
+ margin-top: -0.5rem;
+}
+
+#nav::after {
+ position: absolute;
+ content: '';
+ top: var(--offset-height);
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: flex;
+ box-shadow: var(--shadow-md);
+ opacity: 0;
+ transition-property: opacity;
+ transition-duration: 200ms;
+ transition-timing-function: cubic-bezier(0.23, 1, 0.320, 1);
+ z-index: -1;
+}
+
+#nav[stuck]::after {
+ opacity: 0.5;
+ transition-duration: 600ms;
+}
+
+#nav ul {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 1.33rem;
+ padding: 0 0.5rem;
+}
+#nav li {
+ color: var(--color-dusk);
+ font-family: var(--font-display);
+ font-weight: 400;
+ font-size: var(--size-500);
+}
+#nav.invert li {
+ color: white;
+}
+#nav li + li {
+ margin-left: 0;
+}
+#nav [aria-current="page"] {
+ font-weight: 700;
+}
+#nav .logo {
+ font-size: 1rem;
+ margin-right: auto;
+}
+#nav .logo a {
+ display: flex;
+ align-items: center;
+ color: var(--color-midnight);
+}
+#nav .logo a:hover,
+#nav .logo a:focus {
+ color: var(--color-midnight);
+}
+#nav .logo a:active {
+ color: var(--color-midnight);
+}
+#nav .logo svg {
+ transform: scale(0.8);
+}
+#nav .logomark {
+ color: inherit;
+}
+#nav.invert .logo svg {
+ color: white;
+ fill: white;
+}
+#nav .wordmark {
+ display: none;
+ color: inherit;
+ margin-top: -0.5rem;
+}
+#nav .hidden-mobile {
+ display: none;
+}
+
+@media (min-width: 52rem) {
+ #nav {
+ /* height: calc(2px + 4.5rem); */
+ }
+ #nav .logo svg {
+ transform: scale(1);
+ }
+ #nav .wordmark {
+ display: block;
+ }
+ #nav .hidden-mobile {
+ display: block;
+ }
+}
+#nav a {
+ display: flex;
+ height: 100%;
+ color: var(--color-midnight);
+ text-decoration: none;
+ transition: all 200ms cubic-bezier(0.165, 0.84, 0.44, 1);
+ transition-property: transform, color;
+ padding: 0 0.5rem;
+}
+#nav a:focus,
+#nav a:hover {
+ color: var(--color-purple);
+}
+#nav a:active {
+ color: var(--color-blue);
+}
+
+#nav .icon a svg {
+ transform: scale(0.9);
+}
+
+#nav .icon a:focus svg,
+#nav .icon a:hover svg {
+ transform: scale(1);
+}
+
+#nav [astro-icon="logo"] {
+ margin-right: 0.25em;
+ transform: translateY(0.5em);
+}
+
+.checklist {
+ font-size: var(--size-500);
+ --marker-size: 3rem;
+ display: grid;
+ gap: 0.75rem;
+ margin: 0 auto;
+ padding: 0;
+ list-style: none;
+ grid-template-columns: repeat(1, minmax(0, 1fr));
+ justify-content: center;
+ width: 100%;
+ max-width: 72rem;
+ list-style: none;
+}
+
+@media (min-width: 24rem) {
+ .checklist {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ justify-content: flex-start;
+ }
+ .checklist-item {
+ margin-left: 2rem;
+ }
+}
+
+@media (min-width: 40rem) {
+ .checklist {
+ padding: 0 1.5rem;
+ }
+}
+
+@media (min-width: 52rem) {
+ .checklist {
+ grid-template-columns: repeat(var(--cols), minmax(0, 1fr));
+ }
+}
+
+.checklist > li {
+ position: relative;
+ display: flex;
+ align-items: center;
+}
+
+.checklist-marker {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--marker-size);
+ height: var(--marker-size);
+ background: var(--color-dawn);
+ color: var(--color-midnight);
+ border-radius: 50%;
+ margin-right: 1rem;
+}
+
+.checklist-text {
+ font-size: var(--size-600);
+}
+
+.checklist > li > svg {
+ width: var(--marker-size);
+ height: var(--marker-size);
+}
+
+.egg {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 10;
+ pointer-events: none;
+}
+
+noscript {
+ order: -1;
+ height: 100vh;
+ width: 100vw;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ font-family: var(--font-display);
+ font-size: var(--size-600);
+ text-align: center;
+ color: var(--color-midnight);
+ background: linear-gradient(to bottom, var(--color-tan), white);
+}
+noscript::before {
+ --size: var(--size-1000);
+ padding-top: var(--size);
+ padding-left: 1rem;
+ padding-right: 1rem;
+ content: 'You need to enable JavaScript to view this site.';
+ background-size: var(--size);
+ background-position: center top;
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 140 140'%3E%3Cg fill='%23514375'%3E%3Cpath d='M129.7 100v20h-10v-20z'/%3E%3Cpath d='M119.69 100h20v10h-20zM10 100v20h10v-20z'/%3E%3Cpath d='M20 100H0v10h20zm0-90H0v10h20z'/%3E%3Cpath d='M20 20V0H10v20zm79.69 30h20v10h-20zm-39.21 0h20v10h-20zM29.73 20h80v10h-80zm-9.97 50h99.93v10H19.76zm10 10h79.93v10H29.76zm-.03 10h20v10h-20zm30.75 0h20v10h-20zm29.21 0h20v10h-20zM19.73 30h100v10h-100zm0 10h100v10h-100zm0 20h100v10h-100zm0-10h20v10h-20zM120 10h20v10h-20z'/%3E%3Cpath d='M120 20V0h10v20z'/%3E%3C/g%3E%3C/svg%3E%0A");
+}
+noscript::after {
+ --size: var(--size-1000);
+ content: 'Just kidding—you\'re going to love Astro!';
+ font-size: 0.75em;
+ padding-bottom: var(--size);
+ background-size: var(--size);
+ background-position: 50% 100%;
+ background-image: url("data:image/svg+xml,%3Csvg width='140' height='141' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23af43ff' d='M85 80.325v-20h10v20zM45 80.325v-20h10v20zM65 40.325h10v60H65z'/%3E%3Cpath fill='%23af43ff' d='M55 80.325h30v10H55z'/%3E%3C/svg%3E");
+ animation: bounce 1s steps(4) alternate-reverse infinite;
+}
+
+@keyframes bounce {
+ from {
+ background-position: 50% 100%;
+ }
+ to {
+ background-position: 50% calc(100% - 0.5em);
+ }
+}
+
+not-marquee {
+ --color: var(--color-midnight);
+ --height: 2rem;
+ --speed: 25;
+ --gap: var(--size-1000);
+ display: flex;
+ position: relative;
+ width: 100vw;
+ height: var(--height);
+ overflow: hidden;
+
+ border-top: 1px solid var(--color);
+ margin-top: -1px;
+ border-bottom: 1px solid var(--color);
+ font-family: var(--font-display);
+ text-transform: uppercase;
+ font-size: 0.75em;
+ font-weight: 700;
+ letter-spacing: 1px;
+ background: white;
+ z-index: 3;
+
+}
+
+not-marquee::before,
+not-marquee::after {
+ content: "";
+ width: var(--gap);
+ height: var(--height);
+ position: absolute;
+ top: 0;
+ right: var(--right, auto);
+ bottom: 0;
+ left: var(--left, auto);
+ background: linear-gradient(var(--dir, to right), white, white 5%, rgba(255, 255, 255, 0));
+ z-index: 2;
+}
+
+not-marquee::before {
+ --left: calc(var(--height) - 4px);
+ --dir: to right;
+}
+not-marquee::after {
+ --right: 0;
+ --dir: to left;
+}
+
+not-marquee input[type="checkbox"] {
+ --size: var(--height);
+ -webkit-appearance: none;
+ appearance: none;
+ width: var(--size);
+ height: var(--size);
+ border-radius: 0;
+ z-index: 2;
+ background: white;
+ margin-top: -1px;
+ margin-left: -1px;
+ border: 1px solid var(--color);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+not-marquee input[type="checkbox"]:hover,
+not-marquee input[type="checkbox"]:focus {
+ background: var(--color-dusk);
+}
+
+not-marquee input[type="checkbox"]:active {
+ background: var(--color-purple);
+}
+
+not-marquee input[type="checkbox"]:hover::before,
+not-marquee input[type="checkbox"]:focus::before,
+not-marquee input[type="checkbox"]:active::before {
+ filter: saturate(0) brightness(0) invert(1);
+}
+
+not-marquee input[type="checkbox"]::before {
+ content: "";
+ width: calc(var(--size) * 0.75);
+ height: calc(var(--size) * 0.75);
+}
+
+not-marquee input[type="checkbox"]::before {
+ /* Pause */
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M14 19h4V5h-4M6 19h4V5H6v14z' fill='%2331274a'%3E%3C/path%3E%3C/svg%3E");
+}
+
+not-marquee input[type="checkbox"]:checked::before {
+ /* Play */
+ background-position: -1px center;
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M8 5.14v14l11-7l-11-7z' fill='%2331274a'%3E%3C/path%3E%3C/svg%3E");
+}
+
+not-marquee input[type="checkbox"]:checked ~ .track,
+not-marquee .track:hover {
+ animation-play-state: paused;
+}
+
+not-marquee .track {
+ height: 100%;
+ width: 100%;
+ display: flex;
+ align-items: center;
+
+ position: relative;
+ white-space: nowrap;
+ text-decoration: none;
+ color: var(--color);
+ transition: color 300ms cubic-bezier(0.23, 1, 0.320, 1);
+}
+
+not-marquee a.track:hover,
+not-marquee a.track:focus {
+ color: var(--color-purple);
+}
+
+not-marquee a.track:active {
+ color: var(--color-blue);
+}
+
+not-marquee .group {
+ position: absolute;
+ display: block;
+ animation: marquee calc(var(--speed) * 1s) linear infinite;
+ animation-play-state: inherit;
+ user-select: none;
+ padding-left: var(--gap);
+}
+
+@media (prefers-reduced-motion: reduce) {
+ not-marquee .track {
+ animation-play-state: paused;
+ justify-content: flex-start;
+ }
+}
+
+not-marquee .group > span + span {
+ padding-left: var(--gap);
+}
+
+@keyframes marquee {
+ from { transform: translateX(calc(100% * var(--i, 0))) }
+ to { transform: translateX(calc(100% * calc(var(--i, 0) - 1))) }
+}
+
+.skip-link {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: fixed;
+ top: 0;
+ right: 0;
+ left: 0;
+ overflow-x: hidden;
+ text-align: center;
+
+ background-color: white;
+ border-bottom: 1px solid transparent;
+ font-family: var(--font-display);
+ text-transform: uppercase;
+ font-size: 1em;
+ font-weight: 700;
+ letter-spacing: 1px;
+ background: white;
+ z-index: 5;
+
+ /* Visually hidden */
+ clip: rect(0 0 0 0);
+ clip-path: inset(50%);
+ height: 1px;
+ overflow: hidden;
+ position: absolute;
+ white-space: nowrap;
+ width: 1px;
+}
+.skip-link:focus {
+ width: 100vw;
+ height: 48px;
+ position: fixed;
+ clip: initial;
+ clip-path: initial;
+
+ background: var(--color-purple);
+ color: white;
+}
+
+.🥚 {
+ --cursor-default: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='%2331274a' viewBox='0 0 128 128'%3E%3Cpath fill='%23fff' d='M3.37 0 .11.01C-.05 24.95.04 49.9 0 74.82c.05 13.23-.1 26.46.09 39.68 4.48 0 8.97.04 13.46 0 .12-1.92.15-3.86.15-5.8v-.88h.87c1.91.02 3.82 0 5.72-.01.04-1.96.18-3.92-.03-5.88l-.12-1.1 1.09.15c1.97.25 3.95.08 5.92.04.04-1.88.08-3.77.1-5.65v-.86h.87c1.49.02 2.98 0 4.47-.08l.99-.05-.08.98c-.3 4.12.39 8.24.16 12.36 1.95.06 3.89.09 5.83.1l.85.02.01.84c.04 4.18.03 8.35.1 12.52 1.92.04 3.84.06 5.76.07h.86l.01.85c.03 1.95.05 3.88.04 5.83 4.52.06 9.04.05 13.56.03.16-1.92.24-3.86.1-5.81l-.07-.96.96.03c1.91.05 3.84.03 5.73-.02.07-4.5.04-9 0-13.49-1.94-.05-3.87-.08-5.8-.1h-.84l-.01-.85c-.07-4.18-.04-8.35-.06-12.53-1.93-.07-3.88-.1-5.83-.06l-.92.03.03-.92c.07-1.62.1-3.22.09-4.82v-.87h.87c8.63-.01 17.27 0 25.91-.1.06-4.48.07-8.96-.01-13.44-1.94 0-3.88-.02-5.82-.05h-.85v-.85c-.03-1.94-.05-3.89-.04-5.83a252.3 252.3 0 0 0-5.8-.07h-.85l-.01-.85c-.03-1.93-.04-3.85-.08-5.78-1.93-.09-3.87-.14-5.82-.12l-.88.01v-.88a567 567 0 0 0-.03-5.84 226 226 0 0 1-5.83-.04l-.85-.02v-.85c0-1.9-.02-3.8-.07-5.71-1.92-.1-3.85-.12-5.78-.13h-.86v-.86c-.04-1.94-.06-3.88-.05-5.83-1.95 0-3.89-.02-5.83-.05l-.82-.01-.04-.83c-.07-1.94-.14-3.9-.15-5.84-1.9-.04-3.8-.05-5.7-.05h-.85l-.02-.85a170.8 170.8 0 0 1-.05-5.82c-1.95-.02-3.89-.03-5.83-.06l-.83-.01-.03-.83c-.07-1.94-.1-3.88-.1-5.84-1.94-.04-3.87-.05-5.8-.06h-.86l-.01-.86c-.01-1.93-.03-3.87-.07-5.8l-5.84-.03-.84-.01-.01-.85-.04-5.83c-1.94-.06-3.9-.04-5.86-.03h-.86v-.86A162 162 0 0 0 6.63.01L3.37 0Z'/%3E%3Cpath d='M.1.02C2.3-.01 4.48 0 6.66.02c.1 2.22.14 4.45.14 6.68 2.24-.02 4.48-.02 6.71.05 0 2.22.01 4.45.04 6.67-2.26-.02-4.51-.01-6.77 0-.01 31.42.07 62.83.04 94.25 2.23.02 4.46.03 6.68-.02-.02-2.22 0-4.44.01-6.66 2.23-.03 4.48-.23 6.69.17.36 2.2.16 4.44.1 6.65-2.18.03-4.37.05-6.56.02.02 2.23-.04 4.46-.18 6.68-4.48.03-8.97-.01-13.46 0-.18-13.23-.03-26.46-.08-39.69C.05 49.9-.05 24.96.11.03Z'/%3E%3Cpath d='m13.54 13.42 6.69.04c.05 2.21.06 4.43.08 6.65 2.22 0 4.44.02 6.66.07 0 2.22 0 4.45.11 6.67 2.23.04 4.45.05 6.68.07-.02 2.22 0 4.44.06 6.66 2.19 0 4.38.01 6.57.07 0 2.22.1 4.44.17 6.66 2.21.04 4.44.05 6.66.06-.01 2.22 0 4.44.04 6.66 2.22 0 4.44.03 6.65.15.07 2.2.09 4.38.09 6.58 2.22.06 4.44.07 6.66.06.02 2.22.04 4.45.04 6.68-2.25.12-4.5.1-6.75.04v-6.69c-2.25-.03-4.51-.02-6.77 0 .03-2.26.04-4.51 0-6.76h-6.7l.02-6.7c-2.26-.05-4.52-.04-6.77 0 0-2.26.01-4.52-.01-6.77h-6.7c-.03-2.24-.02-4.49-.04-6.73-2.25 0-4.49 0-6.73-.05.02-2.23.02-4.45 0-6.68-2.22-.02-4.44-.02-6.66 0-.07-2.25-.06-4.5-.05-6.74ZM60.7 60.5a93.2 93.2 0 0 1 6.69.14c.04 2.2.06 4.42.09 6.62 2.22 0 4.43.02 6.65.08-.01 2.22 0 4.45.04 6.68 2.22.03 4.45.05 6.67.05.08 4.48.07 8.95.02 13.43-8.93.1-17.86.1-26.78.12 0 2.2.02 4.4-.1 6.59-2.25.11-4.5.08-6.76.07-.06-4.5-.06-8.99 0-13.48 8.97-.05 17.95.03 26.92-.01.03-2.25.03-4.5 0-6.74-2.24-.02-4.5-.01-6.73-.05v-6.68a296.6 296.6 0 0 0-6.67 0c-.09-2.27-.09-4.54-.04-6.82ZM27 87.48c2.23-.02 4.46-.01 6.69 0 .08 2.3.18 4.62-.13 6.91-2.1.17-4.2.15-6.3.12 0 2.17-.05 4.34-.1 6.51-2.23.05-4.49.28-6.7-.14-.46-2.18-.24-4.44-.2-6.65l6.7-.01c0-2.25 0-4.5.04-6.74Zm6.56 6.92c2.3-.26 4.6-.18 6.9-.14.06 4.47.01 8.95.04 13.43 2.24 0 4.49 0 6.73.04.02 4.46-.04 8.92.03 13.38 4.5.07 9-.14 13.5.12.26 2.24.12 4.5-.07 6.75-4.52.02-9.03.04-13.55-.02 0-2.23-.01-4.45-.06-6.68-2.2 0-4.42-.03-6.63-.07-.07-4.46-.05-8.92-.1-13.37a270.1 270.1 0 0 1-6.67-.12c.24-4.45-.64-8.9-.12-13.33Z'/%3E%3Cpath d='M53.98 94.2a79.3 79.3 0 0 1 6.72.05c.02 4.45-.03 8.91.05 13.38 2.22.02 4.43.04 6.65.1.05 4.5.08 9 .01 13.5-2.21.05-4.44.1-6.65 0-.25-4.48-.04-8.97-.09-13.45-2.25-.05-4.5-.04-6.76-.06 0-4.5-.05-9.01.07-13.51Z'/%3E%3C/svg%3E%0A") 0 0, default;
+ --cursor-pointer: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='%2331274a' viewBox='0 0 128 128'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='%23fff' d='M29.14.42a426.8 426.8 0 0 0-.05 5.06l-.01.71-.7.03c-1.7.05-3.38.07-5.08.08-.09 17.14-.04 34.27-.04 51.4v.74l-.74.01c-1.42.02-2.86.03-4.29.07l-.77.01v-.77c.04-1.67.03-3.35-.01-5.01-5.81-.05-11.63-.08-17.44.02 0 5.79-.02 11.58 0 17.37 1.68.03 3.39.1 5.1-.01l.92-.07-.14.93c-.24 1.67-.08 3.36-.07 5.04 1.6.08 3.23.1 4.85.1h.7l.05.69c.27 3.58.14 7.17.2 10.77 1.67.07 3.35.1 5.03.11l.73.01v.73c.03 3.6.02 7.18.08 10.77 1.69.03 3.38.11 5.09.01l.86-.05-.07.85c-.28 3.6-.04 7.21-.07 10.81 1.65.03 3.29.06 4.93.07h.74v.73c.08 5.55.05 11.1.12 16.65 9.57.13 19.15.15 28.73.14 9.8-.02 19.6.06 29.41-.17-.15-5.53.34-11.06.11-16.59l-.02-.8.79.03c1.64.04 3.3.01 4.93-.04.06-5.5.07-11 .07-16.51v-.68l.67-.07c1.68-.16 3.36-.17 5.05-.16.04-6.16-.07-12.32.12-18.48v-.03c-.2-7.4-.06-14.81-.15-22.22-1.66.01-3.32 0-4.97-.03h-.72l-.02-.73a135.9 135.9 0 0 1-.02-4.91c-1.7-.05-3.4 0-5.1-.1l-.64-.03-.05-.66c-.12-1.7-.06-3.41-.09-5.13-3.6-.02-7.22.01-10.82-.04h-.73l-.01-.74c-.03-1.63-.05-3.26-.03-4.9-5.54-.29-11.1-.1-16.64-.16l-.71-.01-.03-.7c-.07-1.68-.1-3.37-.1-5.06-3.6-.02-7.2 0-10.8-.07l-.73-.02v-.72c-.08-7.46-.04-14.92-.06-22.38a371.76 371.76 0 0 0-5.03 0h-.77l.01-.76c.03-1.72.02-3.43-.14-5.13-3.81.01-7.62.02-11.43 0Z'/%3E%3Cpath d='M29.13.42c3.81.02 7.63.01 11.44 0 .18 1.92.17 3.84.14 5.75-3.88.04-7.75 0-11.63.04.02-1.93.02-3.86.05-5.79ZM23.3 6.3c1.93-.01 3.86 0 5.78-.09 0 21.32.04 42.63.02 63.95-1.94.04-3.88.04-5.83 0-.03-1.9-.03-3.82 0-5.73-1.94-.08-3.87-.07-5.8-.06a81.5 81.5 0 0 1 0-5.85c1.93-.07 3.86-.05 5.79-.08 0-17.38-.05-34.76.04-52.14Zm17.43 0c1.92-.02 3.84 0 5.77.01.02 7.7-.03 15.42.05 23.12 3.85.1 7.7.05 11.54.07 0 1.92 0 3.84.11 5.77 5.79.09 11.59-.14 17.37.16-.02 1.88-.01 3.76.03 5.64 3.85.07 7.71.02 11.57.04.02 1.93-.1 3.87.1 5.8 1.92.16 3.84.06 5.76.12-.03 1.88-.01 3.76.04 5.64 1.9.03 3.8.05 5.7.03.09 7.42-.06 14.83.15 22.23-.2 6.17-.08 12.34-.12 18.5a43.63 43.63 0 0 0-5.72.22c0 5.73-.01 11.47-.07 17.2-1.9.06-3.82.12-5.72.03-.21-5.83-.11-11.67-.06-17.51 1.92.02 3.84.02 5.76 0L93 52.72c-1.92-.03-3.83-.02-5.75 0-.1-1.89.02-3.78-.13-5.66-1.9-.37-3.85-.15-5.77-.15-.04 5.8.07 11.62-.04 17.44h-5.7c-.13-7.75 0-15.5-.04-23.26-3.89-.02-7.78 0-11.66 0 0 5.81.06 11.62 0 17.43-1.93.04-3.86.04-5.78 0-.04-7.75-.04-15.5.05-23.24-3.89-.02-7.78-.03-11.67.02-.04 7.74.03 15.48 0 23.22-1.94.05-3.9.06-5.84 0 0-17.4.02-34.8.05-52.21ZM0 52.76c5.82-.1 11.64-.06 17.45-.01.04 1.92.07 3.84.02 5.77-3.86.1-7.71.02-11.57.05-.14 3.84.2 7.7-.05 11.53-1.95.22-3.9.07-5.85.03V52.76Zm6 17.47c1.87-.3 3.77-.18 5.65-.13.04 1.94.04 3.88.02 5.82 1.95.01 3.88 0 5.82.03.05 3.87 0 7.73.03 11.6 1.91-.02 3.83-.01 5.75.01-.03 3.88.25 7.79-.14 11.64-1.9.17-3.79.04-5.67 0-.06-3.82-.05-7.65-.09-11.48-1.92-.01-3.84-.05-5.76-.13-.06-3.81.13-7.63-.22-11.44a115 115 0 0 1-5.57-.12c0-1.94-.26-3.9.18-5.8Z'/%3E%3Cpath d='M23.39 99.23c1.9-.15 3.8-.06 5.7-.05.06 3.86.01 7.71.02 11.57 1.94-.01 3.88-.01 5.82.06.03 3.85-.04 7.71.02 11.57 15.46.04 30.92.03 46.38.02.06-3.86-.01-7.72.03-11.58 1.98-.03 3.95-.05 5.93.06.32 5.78-.25 11.57-.09 17.37-9.8.23-19.6.15-29.4.16-9.59.01-19.16 0-28.73-.13-.08-5.8-.04-11.59-.13-17.37-1.89 0-3.78-.04-5.67-.07.03-3.87-.28-7.77.12-11.61Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h128v128H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E") 8 0, pointer;
+
+ cursor: var(--cursor-default);
+}
+
+.🥚 :is(a, button, input[type="checkbox"]) {
+ cursor: var(--cursor-pointer);
+}
diff --git a/smoke/astro.build-main/public/styles/sanitize.css b/smoke/astro.build-main/public/styles/sanitize.css
new file mode 100644
index 000000000..53de7e951
--- /dev/null
+++ b/smoke/astro.build-main/public/styles/sanitize.css
@@ -0,0 +1,356 @@
+/* Document
+ * ========================================================================== */
+
+/**
+ * 1. Add border box sizing in all browsers (opinionated).
+ * 2. Backgrounds do not repeat by default (opinionated).
+ */
+
+*,
+::before,
+::after {
+ box-sizing: border-box; /* 1 */
+ background-repeat: no-repeat; /* 2 */
+}
+
+/**
+ * 1. Add text decoration inheritance in all browsers (opinionated).
+ * 2. Add vertical alignment inheritance in all browsers (opinionated).
+ */
+
+::before,
+::after {
+ text-decoration: inherit; /* 1 */
+ vertical-align: inherit; /* 2 */
+}
+
+/**
+ * 1. Use the default cursor in all browsers (opinionated).
+ * 2. Change the line height in all browsers (opinionated).
+ * 3. Breaks words to prevent overflow in all browsers (opinionated).
+ * 4. Use a 4-space tab width in all browsers (opinionated).
+ * 5. Remove the grey highlight on links in iOS (opinionated).
+ * 6. Prevent adjustments of font size after orientation changes in iOS.
+ */
+
+:where(:root) {
+ cursor: default; /* 1 */
+ line-height: 1.5; /* 2 */
+ overflow-wrap: break-word; /* 3 */
+ -moz-tab-size: 4; /* 4 */
+ tab-size: 4; /* 4 */
+ -webkit-tap-highlight-color: transparent; /* 5 */
+ -webkit-text-size-adjust: 100%; /* 6 */
+ text-size-adjust: 100%; /* 6 */
+}
+
+/* Sections
+ * ========================================================================== */
+
+/**
+ * Remove the margin in all browsers (opinionated).
+ */
+
+:where(body) {
+ margin: 0;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Edge, Firefox, and Safari.
+ */
+
+:where(h1) {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/* Grouping content
+ * ========================================================================== */
+
+/**
+ * Remove the margin on nested lists in Chrome, Edge, and Safari.
+ */
+
+:where(dl, ol, ul) :where(dl, ol, ul) {
+ margin: 0;
+}
+
+/**
+ * 1. Correct the inheritance of border color in Firefox.
+ * 2. Add the correct box sizing in Firefox.
+ */
+
+:where(hr) {
+ color: inherit; /* 1 */
+ height: 0; /* 2 */
+}
+
+/**
+ * Remove the list style on navigation lists in all browsers (opinionated).
+ */
+
+:where(nav) :where(ol, ul) {
+ list-style-type: none;
+ padding: 0;
+}
+
+/**
+ * Prevent VoiceOver from ignoring list semantics in Safari (opinionated).
+ */
+
+:where(nav li)::before {
+ content: "\200B";
+ float: left;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ * 3. Prevent overflow of the container in all browsers (opinionated).
+ */
+
+:where(pre) {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+ overflow: auto; /* 3 */
+}
+
+/* Text-level semantics
+ * ========================================================================== */
+
+/**
+ * Add the correct text decoration in Safari.
+ */
+
+:where(abbr[title]) {
+ text-decoration: underline;
+ text-decoration: underline dotted;
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+:where(b, strong) {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+:where(code, kbd, samp) {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+:where(small) {
+ font-size: 80%;
+}
+
+/* Embedded content
+ * ========================================================================== */
+
+/*
+ * Change the alignment on media elements in all browsers (opinionated).
+ */
+
+:where(audio, canvas, iframe, img, svg, video) {
+ vertical-align: middle;
+}
+
+/**
+ * Remove the border on iframes in all browsers (opinionated).
+ */
+
+:where(iframe) {
+ border-style: none;
+}
+
+/**
+ * Change the fill color to match the text color in all browsers (opinionated).
+ */
+
+:where(svg:not([fill])) {
+ fill: currentColor;
+}
+
+/* Tabular data
+ * ========================================================================== */
+
+/**
+ * 1. Collapse border spacing in all browsers (opinionated).
+ * 2. Correct table border color in Chrome, Edge, and Safari.
+ * 3. Remove text indentation from table contents in Chrome, Edge, and Safari.
+ */
+
+:where(table) {
+ border-collapse: collapse; /* 1 */
+ border-color: currentColor; /* 2 */
+ text-indent: 0; /* 3 */
+}
+
+/* Forms
+ * ========================================================================== */
+
+/**
+ * Remove the margin on controls in Safari.
+ */
+
+:where(button, input, select) {
+ margin: 0;
+}
+
+/**
+ * Correct the inability to style buttons in iOS and Safari.
+ */
+
+:where(button, [type="button" i], [type="reset" i], [type="submit" i]) {
+ -webkit-appearance: button;
+}
+
+/**
+ * Change the inconsistent appearance in all browsers (opinionated).
+ */
+
+:where(fieldset) {
+ border: 1px solid #a0a0a0;
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Edge, and Firefox.
+ */
+
+:where(progress) {
+ vertical-align: baseline;
+}
+
+/**
+ * 1. Remove the margin in Firefox and Safari.
+ * 3. Change the resize direction in all browsers (opinionated).
+ */
+
+:where(textarea) {
+ margin: 0; /* 1 */
+ resize: vertical; /* 3 */
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome, Edge, and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+:where([type="search" i]) {
+ -webkit-appearance: textfield; /* 1 */
+ outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Safari.
+ */
+
+::-webkit-inner-spin-button,
+::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * Correct the text style of placeholders in Chrome, Edge, and Safari.
+ */
+
+::-webkit-input-placeholder {
+ color: inherit;
+ opacity: 0.54;
+}
+
+/**
+ * Remove the inner padding in Chrome, Edge, and Safari on macOS.
+ */
+
+::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style upload buttons in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button; /* 1 */
+ font: inherit; /* 2 */
+}
+
+/* Interactive
+ * ========================================================================== */
+
+/*
+ * Add the correct styles in Safari.
+ */
+
+:where(dialog) {
+ background-color: white;
+ border: solid;
+ color: black;
+ height: -moz-fit-content;
+ height: fit-content;
+ left: 0;
+ margin: auto;
+ padding: 1em;
+ position: absolute;
+ right: 0;
+ width: -moz-fit-content;
+ width: fit-content;
+}
+
+:where(dialog:not([open])) {
+ display: none;
+}
+
+/*
+ * Add the correct display in Safari.
+ */
+
+:where(details > summary:first-of-type) {
+ display: list-item;
+}
+
+/* Accessibility
+ * ========================================================================== */
+
+/**
+ * Change the cursor on busy elements in all browsers (opinionated).
+ */
+
+:where([aria-busy="true" i]) {
+ cursor: progress;
+}
+
+/*
+ * Change the cursor on disabled, not-editable, or otherwise
+ * inoperable elements in all browsers (opinionated).
+ */
+
+:where([aria-disabled="true" i], [disabled]) {
+ cursor: not-allowed;
+}
+
+/*
+ * Change the display on visually hidden accessible elements
+ * in all browsers (opinionated).
+ */
+
+:where([aria-hidden="false" i][hidden]) {
+ display: initial;
+}
+
+:where([aria-hidden="false" i][hidden]:not(:focus)) {
+ clip: rect(0, 0, 0, 0);
+ position: absolute;
+}
diff --git a/smoke/astro.build-main/src/components/ArrowLink.astro b/smoke/astro.build-main/src/components/ArrowLink.astro
new file mode 100644
index 000000000..fdeee15ce
--- /dev/null
+++ b/smoke/astro.build-main/src/components/ArrowLink.astro
@@ -0,0 +1,62 @@
+---
+import { Sprite } from 'astro-icon';
+
+const { icon, href, title, always = false } = Astro.props;
+---
+
+<a class={always ? 'always' : undefined} href={href} label={title} rel="noopener noreferrer">
+ {icon && <Sprite aria-hidden="true" name={icon} size="1.5em" />}
+ <span><slot /></span>
+ <Sprite aria-hidden="true" class="arrow" pack="mdi" name="arrow-right" size="1.5em" />
+</a>
+
+<style>
+a {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-decoration: none;
+ margin-right: -1.5em;
+ transition: transform 200ms cubic-bezier(0.23, 1, 0.320, 1);
+ color: var(--color-dusk);
+}
+a > :global(* + *) {
+ margin-left: 0.5rem;
+}
+a > span {
+ font-family: var(--font-display);
+ font-size: var(--size-500);
+}
+.arrow {
+ opacity: 0;
+ transform: translateX(-0.5em);
+ margin-left: 0.25em;
+ transition: transform 200ms cubic-bezier(0.23, 1, 0.320, 1);
+ transition-property: transform, opacity;
+}
+a:hover,
+a:focus {
+ transform: translateX(-0.25em);
+ color: var(--color-purple);
+}
+a:active {
+ color: var(--color-blue);
+}
+a:hover .arrow,
+a:focus .arrow {
+ opacity: 1;
+ transform: translateX(0em);
+}
+.always .arrow {
+ opacity: 1;
+ transform: translateX(0);
+}
+.always:hover,
+.always:focus {
+ transform: translateX(0);
+}
+.always:hover .arrow,
+.always:focus .arrow {
+ transform: translateX(0.25em);
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/Author.astro b/smoke/astro.build-main/src/components/Author.astro
new file mode 100644
index 000000000..1ec072cc3
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Author.astro
@@ -0,0 +1,57 @@
+---
+import { Sprite } from 'astro-icon';
+import { mentions } from '../mentions.ts';
+const { name } = Astro.props;
+
+const author = mentions[name];
+if (!author) {
+ throw new Error(`Could not find author "${name}"!`)
+}
+---
+
+<span class="author">
+ <img aria-hidden="true" src={author.avatar} alt={author.name} width="32" height="32" loading="lazy">
+ <span>{author.name}</span>
+ <a href={author.twitter} title={`Follow ${author.name} on Twitter`}>
+ <span>
+ <Sprite role="img" pack="mdi" name="twitter" width="20" height="20" />
+ </span>
+ </a>
+</span>
+
+<style>
+ .author {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ font: inherit;
+ }
+ img {
+ --size: 2rem;
+ display: block;
+ width: var(--size);
+ height: var(--size);
+ border-radius: 50%;
+ overflow: hidden;
+ margin-right: 0.5em;
+ }
+ a, a > span {
+ --size: 1.5rem;
+ width: var(--size);
+ height: var(--size);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: inherit;
+ }
+ a {
+ margin-left: 0.25em;
+ color: var(--color-dusk);
+ opacity: 0.7;
+ }
+ a:hover,
+ a:focus {
+ color: var(--color-dusk);
+ opacity: 1;
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/Banner.astro b/smoke/astro.build-main/src/components/Banner.astro
new file mode 100644
index 000000000..23bab5700
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Banner.astro
@@ -0,0 +1,11 @@
+---
+const { href, items = [] } = Astro.props;
+const Tag = href ? 'a' : 'div';
+---
+
+<not-marquee role="marquee" aria-labelledby="not-marquee-label">
+ <input id="marquee-pause" type="checkbox" aria-label="Toggle marquee">
+ <Tag {href} class="track">
+ {Array.from({ length: 6 }, (_, i) => <span class="group" style={`--i: ${i};`} id={i === 0 ? 'not-marquee-label' : undefined} aria-hidden={i > 0 ? 'true' : undefined}>{items.map(item => <span>{item}</span>)}</span>)}
+ </Tag>
+</not-marquee>
diff --git a/smoke/astro.build-main/src/components/BaseHead.astro b/smoke/astro.build-main/src/components/BaseHead.astro
new file mode 100644
index 000000000..4ef9f8750
--- /dev/null
+++ b/smoke/astro.build-main/src/components/BaseHead.astro
@@ -0,0 +1,62 @@
+---
+export interface Props {
+ title: string;
+ description: string;
+ canonicalURL: URL | string,
+ image?: string;
+}
+const { title, description, canonicalURL } = Astro.props;
+const image = new URL(Astro.props.image || './social.png', Astro.site);
+---
+
+<!-- Blocking script -->
+<script>
+ const marqueePaused = (localStorage.getItem('astro:marquee-paused') || 'false') === 'true';
+ window.addEventListener('DOMContentLoaded', () => {
+ const checkbox = document.querySelector('#marquee-pause');
+ if(checkbox) {
+ checkbox.checked = marqueePaused;
+ document.body.classList.add('js');
+ }
+ });
+ if ('paintWorklet' in CSS) {
+ CSS.paintWorklet.addModule('/pixel.worklet.js');
+ }
+</script>
+
+<!-- Global Metadata -->
+<meta charset="utf-8" />
+<meta name="viewport" content="width=device-width" />
+<meta name="theme-color" content="#8D46E7">
+<link rel="icon" type="image/svg+xml" href="/favicon.svg">
+<link rel="mask-icon" href="/favicon.svg" color="#8D46E7">
+<link rel="sitemap" href="/sitemap.xml">
+<link rel="alternate" type="application/rss+xml" href="/rss.xml" title="RSS" />
+
+<!-- Preload -->
+<link rel="preload" as="style" href="/styles/sanitize.css">
+<link rel="preload" as="style" href="/styles/main.css">
+
+<!-- Primary Meta Tags -->
+<title>{title}</title>
+<meta name="title" content={title} />
+<meta name="description" content={description} />
+<link rel="canonical" href={canonicalURL}/>
+
+<!-- Open Graph / Facebook -->
+<meta property="og:type" content="website" />
+<meta property="og:url" content={canonicalURL} />
+<meta property="og:title" content={title} />
+<meta property="og:description" content={description} />
+<meta property="og:image" content={image} />
+
+<!-- Twitter -->
+<meta property="twitter:card" content="summary_large_image" />
+<meta property="twitter:url" content={canonicalURL} />
+<meta property="twitter:title" content={title} />
+<meta property="twitter:description" content={description} />
+<meta property="twitter:image" content={image} />
+
+<!-- Assets -->
+<link rel="stylesheet" href="/styles/sanitize.css" />
+<link rel="stylesheet" href="/styles/main.css" />
diff --git a/smoke/astro.build-main/src/components/BaseLayout.astro b/smoke/astro.build-main/src/components/BaseLayout.astro
new file mode 100644
index 000000000..0f58a5cd3
--- /dev/null
+++ b/smoke/astro.build-main/src/components/BaseLayout.astro
@@ -0,0 +1,26 @@
+---
+import { Sprite } from 'astro-icon';
+import Header from '../components/Header.astro';
+import Scripts from '../components/Scripts.astro';
+
+const { wrapper: Wrapper = Fragment, container = false } = Astro.props;
+---
+
+<Sprite.Provider>
+ <Header>
+ <slot name="nav" />
+ </Header>
+
+ <div id="root">
+ <Wrapper>
+ <slot name="start" />
+ <main id="content" class:list={{ container }}>
+ <slot />
+ </main>
+ </Wrapper>
+
+ <slot name="footer" />
+ </div>
+</Sprite.Provider>
+
+<Scripts />
diff --git a/smoke/astro.build-main/src/components/Blockquote.astro b/smoke/astro.build-main/src/components/Blockquote.astro
new file mode 100644
index 000000000..d04ad368e
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Blockquote.astro
@@ -0,0 +1,48 @@
+
+
+<section class="quote">
+
+ <div class="logo">
+ <slot name="logo" />
+ </div>
+ <blockquote class="container">
+ <p class=""><slot name="quote" /></p>
+ <cite class="head-sm"><slot name="cite" /></cite>
+ </blockquote>
+</section>
+
+<style>
+.quote {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ color: var(--color, var(--color-dusk));
+ margin-top: 4rem;
+ margin-bottom: 4rem;
+}
+blockquote {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ font-weight: bold;
+ padding: 2rem 0 0;
+ font-size: inherit;
+ max-width: 36rem;
+}
+cite {
+ margin-top: 1rem;
+ font-style: normal;
+ font-size: var(--size-500);
+}
+cite > :global(*) {
+ font: inherit;
+}
+.logo > :global(a) {
+ padding: 1rem;
+ display: inline-flex;
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/Checklist.astro b/smoke/astro.build-main/src/components/Checklist.astro
new file mode 100644
index 000000000..f0bada688
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Checklist.astro
@@ -0,0 +1,7 @@
+---
+const { cols = 2 } = Astro.props;
+---
+
+<ul class="checklist" style={`--cols: ${cols};`} role="list">
+ <slot />
+</ul>
diff --git a/smoke/astro.build-main/src/components/ChecklistItem.astro b/smoke/astro.build-main/src/components/ChecklistItem.astro
new file mode 100644
index 000000000..5c0c764ec
--- /dev/null
+++ b/smoke/astro.build-main/src/components/ChecklistItem.astro
@@ -0,0 +1,43 @@
+---
+import { Sprite } from 'astro-icon'
+const { href } = Astro.props;
+const Wrapper = href ? 'a' : Fragment;
+const wrapperProps = href ? { href, target: '_blank', rel: 'noopener noreferrer' } : {};
+---
+
+<li class="checklist-item" role="listitem">
+ <Wrapper {...wrapperProps}>
+ <span class="checklist-marker">
+ <slot name="icon" />
+ </span>
+ <span class="checklist-text"><slot /></span>
+ <Sprite aria-hidden="true" class="arrow" pack="mdi" name="arrow-right" size="1em" />
+ </Wrapper>
+</li>
+
+<style>
+a {
+ display: inline-flex;
+ align-items: center;
+ color: inherit;
+ text-decoration: none;
+}
+.checklist-marker {
+ transition: transform 200ms cubic-bezier(0.23, 1, 0.320, 1);
+ transition-property: transform, background, color;
+}
+a:is(:hover, :focus) .checklist-marker {
+ color: var(--color-dawn);
+ background: var(--color-purple);
+ transform: scale(1.10);
+}
+a .arrow {
+ opacity: 0;
+ transition: transform 200ms cubic-bezier(0.23, 1, 0.320, 1);
+ transition-property: transform, opacity;
+}
+a:is(:hover, :focus) .arrow {
+ transform: translateX(0.25em);
+ opacity: 1;
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/ContributorAvatar.astro b/smoke/astro.build-main/src/components/ContributorAvatar.astro
new file mode 100644
index 000000000..24debe31f
--- /dev/null
+++ b/smoke/astro.build-main/src/components/ContributorAvatar.astro
@@ -0,0 +1,61 @@
+---
+const {obj, size, type} = Astro.props;
+let color, label;
+switch (type) {
+ case 'staff':
+ color= 'var(--color-red)';
+ label= 'Staff';
+ break;
+ case 'l3':
+ color= 'var(--color-purple)';
+ label= 'Core';
+ break;
+ case 'l2':
+ color= 'var(--color-blue)';
+ label= 'Maintainer';
+ break;
+ default:
+ color = 'none';
+ break;
+}
+---
+<a class="avatar" title={`@${obj.login}`} href={obj.html_url}>
+ <div class="avatar-image-border" style={`
+ box-shadow:
+ 0px 0px 4px 0px ${color};`}>
+ <div class="avatar-image" style={`
+ width: ${size}px;
+ height: ${size}px;
+ background-image: url("${obj.avatar_url}"); `}>
+ </div>
+ </div>
+ {label && <div class="badge" style={`background-color: ${color}`}>{label}</div>}
+</a>
+
+<style>
+.avatar {
+ position: relative;
+ display: block;
+}
+.avatar-image-border {
+ overflow: hidden;
+ border-radius: 50%;
+
+}
+.avatar-image {
+ background-size: 100% 100%;
+ background-position: center center;
+ transition: background-size 400ms ease-out, filter 200ms ease-out;
+}
+ .badge {
+ position: absolute;
+ right: -6px;
+ bottom: 0;
+ border-radius: 6px;
+ background-color: limegreen;
+ padding: 2px 6px;
+ font-size: 11px;
+ color: white;
+ font-weight: bold;
+ }
+</style> \ No newline at end of file
diff --git a/smoke/astro.build-main/src/components/ContributorsAvatarList.astro b/smoke/astro.build-main/src/components/ContributorsAvatarList.astro
new file mode 100644
index 000000000..707ec033b
--- /dev/null
+++ b/smoke/astro.build-main/src/components/ContributorsAvatarList.astro
@@ -0,0 +1,25 @@
+---
+import ContributorAvatar from './ContributorAvatar.astro';
+import ArrowLink from '../components/ArrowLink.astro';
+import contributors from '../data/contributors.json';
+
+const {staff, l3, l2, l1} = contributors;
+---
+<ul class="avatar-list">
+ {staff.map(obj => <li><ContributorAvatar size={72} obj={obj} type="staff" /></li>)}
+ {l3.map(obj => <li><ContributorAvatar size={72} obj={obj} type="l3" /></li>)}
+ {l2.map(obj => <li><ContributorAvatar size={72} obj={obj} type="l2" /></li>)}
+ {l1.map(obj => <li><ContributorAvatar size={72} obj={obj} highlight="255, 255, 255" /></li>)}
+ <ArrowLink always href="https://github.com/withastro/astro/graphs/contributors">See all 200+ contributors</ArrowLink>
+
+</ul>
+<style>
+ .avatar-list {
+ list-style: none;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+ gap: 2.5rem;
+ margin: 2.5rem -2.5rem;
+ }
+</style> \ No newline at end of file
diff --git a/smoke/astro.build-main/src/components/Date.astro b/smoke/astro.build-main/src/components/Date.astro
new file mode 100644
index 000000000..b1503952f
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Date.astro
@@ -0,0 +1,21 @@
+---
+import { parse, startOfDay, intlFormat, formatISO } from 'date-fns';
+
+const { value } = Astro.props;
+let date;
+if (typeof value === 'string') {
+ date = parse(value, 'MMMM d, yyyy', new Date());
+} else {
+ date = value;
+}
+const dateISO = formatISO(startOfDay(date), { representation: 'date' });
+const dateFormatted = intlFormat(date, {
+ year: 'numeric',
+ month: 'long',
+ day: 'numeric',
+}, {
+ locale: 'en-US',
+})
+---
+
+<time datetime={dateISO}>{dateFormatted}</time>
diff --git a/smoke/astro.build-main/src/components/Footer.astro b/smoke/astro.build-main/src/components/Footer.astro
new file mode 100644
index 000000000..bf853e1a2
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Footer.astro
@@ -0,0 +1,229 @@
+---
+import { Sprite } from 'astro-icon';
+import Quote from './landing/Quote.astro';
+import Grid from './landing/Grid.astro';
+import Community from './landing/Community.astro';
+
+import { social } from '../config.ts';
+
+const { quote } = Astro.slots;
+const YYYY = new Date().getFullYear();
+---
+
+<footer class={!quote ? 'has-card' : ''}>
+ <div class="background">
+ <div class="blob" />
+ <Grid class="footer-grid" />
+ </div>
+
+ {!quote && <Community />}
+
+ {quote && (
+ <Quote color="white" blobs={false}>
+ <Fragment slot="logo">
+ <slot name="logo" />
+ </Fragment>
+ <Fragment slot="quote"><slot name="quote" /></Fragment>
+ <Fragment slot="cite"><slot name="cite" /></Fragment>
+ </Quote>
+ )}
+
+ <div class="container content">
+ <ul class="links">
+ <li>&copy; {YYYY} The Astro Technology Company</li>
+ <li><a href="/about">About</a></li>
+ <li><a href="/company">We're Hiring!</a></li>
+ <li><a href="/blog">Blog</a></li>
+ </ul>
+ </div>
+</footer>
+
+<style>
+ footer {
+ overflow: hidden;
+ --height: clamp(min-content, 75vh, 56rem);
+ min-height: var(--height);
+ position: relative;
+ background: var(--color-tan) linear-gradient(180deg, #E8ADB7, #C776BE, #9039CF, #7D32DE);
+ }
+ .has-card {
+ /* background: var(--color-tan) var(--gradient-pop-3); */
+ }
+ footer::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: radial-gradient(200% 100% at 50% 100%, #0029FF 0%, #6D39FF 30%, rgba(255, 153, 0, 0) 100%);
+ }
+ footer > :global(.quote) {
+ z-index: 1;
+ background: none;
+ margin-bottom: 10vh;
+ }
+ .footer-grid {
+ position: absolute;
+ bottom: -10% !important;
+ height: 40% !important;
+ z-index: 1 !important;
+ }
+ .background {
+ --height: 1350px;
+ pointer-events: none;
+ position: absolute;
+ width: 100vw;
+ bottom: 0;
+ margin-top: calc(var(--height) * -0.9);
+ height: calc(var(--height) * 1.25);
+ overflow: hidden;
+ }
+ .content {
+ position: relative;
+ z-index: 1;
+ color: white;
+ margin-bottom: 6.5rem;
+ display: grid;
+ grid-template-columns: 1fr;
+ }
+ .content ul {
+ list-style: none;
+ display: flex;
+ flex-flow: row wrap;
+ align-items: center;
+ }
+ .content a {
+ color: white;
+ text-decoration: none;
+ }
+ .content a:hover,
+ .content a:focus,
+ .content a:active {
+ text-decoration: underline;
+ }
+ ul > li + li {
+ margin-left: 1rem;
+ }
+ ul.main > li:nth-child(2) {
+ margin-left: auto !important;
+ }
+ .logo .logomark {
+ display: none;
+ }
+ .logo .wordmark {
+ display: block;
+ margin-left: 1rem;
+ }
+ .icon {
+ transform: scale(0.8);
+ }
+ .links {
+ order: 9;
+ margin-top: 1rem;
+ margin-left: 1rem;
+ font-size: var(--size-400);
+ justify-content: center;
+ }
+ .links > li + li {
+ margin-left: 1rem;
+ padding-left: 1rem;
+ border-left: 1px solid rgba(255, 255, 255, 0.6);
+ }
+ .links > li:first-child {
+ width: 100%;
+ margin-bottom: 2rem;
+ text-align: center;
+ }
+ .links > li + li:nth-child(2) {
+ margin-left: 0;
+ padding-left: 0;
+ border: none;
+ }
+ .content ul.mark {
+ flex-direction: column;
+ align-items: flex-start;
+ max-width: max-content;
+ margin-left: 1rem;
+ }
+ .mark li:first-child {
+ display: none;
+ }
+ .mark > li:nth-child(2) {
+ margin-left: 0;
+ margin-top: 1rem;
+ }
+ .mark address {
+ font-style: normal;
+ display: flex;
+ }
+ .mark address p {
+ font-size: var(--size-400);
+ opacity: 0.75;
+ }
+ .mark address p + p {
+ margin-left: 1rem;
+ }
+
+ @media (min-width: 52rem) {
+ .icon {
+ transform: scale(1);
+ }
+ .logo {
+ padding: 0;
+ }
+ .logo .logomark {
+ display: block;
+ }
+ .logo .wordmark {
+ display: none;
+ }
+ .content {
+ grid-template-columns: 1fr max-content;
+ }
+ .content ul.mark {
+ grid-row: 1 / 3;
+ margin-top: 0;
+ margin-left: auto;
+ padding-right: 2rem;
+ }
+ ul.main {
+ height: 6rem;
+ }
+ ul.main > li:nth-child(2) {
+ margin-left: 2rem !important;
+ }
+ .links {
+ order: initial;
+ grid-row: 2;
+ }
+ .links > li:first-child {
+ width: initial;
+ margin-bottom: 0;
+ }
+ .links > li + li:nth-child(2) {
+ margin-left: 1rem;
+ padding-left: 1rem;
+ border-left: 1px solid rgba(255, 255, 255, 0.6);
+ }
+ .mark {
+ margin-top: 3rem;
+ }
+ .mark li:first-child {
+ display: block;
+ }
+ .mark address {
+ flex-direction: column;
+ }
+ .mark address p + p {
+ margin-left: 0;
+ margin-top: 1rem;
+ }
+ }
+
+ @media (min-width: 64rem) {
+ .content ul.mark {
+ padding-right: 6rem;
+ }
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/Header.astro b/smoke/astro.build-main/src/components/Header.astro
new file mode 100644
index 000000000..c829b34aa
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Header.astro
@@ -0,0 +1,7 @@
+---
+import SkipLink from './SkipLink.astro';
+// import { getStars } from '../utils.ts';
+---
+
+<SkipLink />
+<slot />
diff --git a/smoke/astro.build-main/src/components/Mention.astro b/smoke/astro.build-main/src/components/Mention.astro
new file mode 100644
index 000000000..bec9dd666
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Mention.astro
@@ -0,0 +1,58 @@
+---
+import { Sprite } from 'astro-icon';
+import { mentions } from '../mentions.ts';
+const { name } = Astro.props;
+
+const mention = mentions[name];
+if (!mention) {
+ throw new Error(`Could not find mentioned user "${name}"!`)
+}
+---
+
+<span class="mention">
+ <a href={mention.twitter} title={`Follow ${mention.name} on Twitter`}>
+ <img aria-hidden="true" alt={mention.name} src={mention.avatar} loading="lazy">
+ <span>{mention.name}</span>
+ </a>
+</span>
+
+<style>
+ .mention {
+ --padding-block: 0.125rem;
+ --padding-inline: 0.33rem;
+ display: inline-flex;
+ align-self: baseline;
+ white-space: nowrap;
+ margin: calc(var(--padding-block) * -1) calc(var(--padding-inline) / -2);
+ background: var(--color-dawn);
+ text-decoration: none;
+ border-radius: 2rem;
+ }
+ a {
+ display: flex;
+ font-family: var(--font-display);
+ letter-spacing: 0.5px;
+ font-size: 0.8em;
+ flex-direction: row;
+ align-items: center;
+ padding: var(--padding-block) var(--padding-inline);
+ text-decoration: none;
+ color: var(--color-purple);
+ border-radius: inherit;
+ box-shadow: var(--shadow-sm);
+ }
+ a:hover,
+ a:focus {
+ background: var(--color-purple);
+ color: white;
+ }
+ .mention img {
+ --size: 1rem;
+ display: block;
+ width: var(--size);
+ height: var(--size);
+ border-radius: 50%;
+ overflow: hidden;
+ margin-right: 0.25em;
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/Nav.astro b/smoke/astro.build-main/src/components/Nav.astro
new file mode 100644
index 000000000..e2cfb3fc3
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Nav.astro
@@ -0,0 +1,40 @@
+---
+import { Sprite } from 'astro-icon';
+import { social } from '../config.ts';
+
+const { invert = false, marginBottom = false } = Astro.props;
+
+const items = [
+ { href: '/blog', title: 'Blog' },
+ { href: 'https://docs.astro.build', title: 'Docs' },
+ { href: '/play', title: 'Playground', hiddenMobile: true }
+]
+---
+
+<nav id="nav" class={`main ${invert ? 'invert' : ''} ${marginBottom ? 'margin-bottom' : ''}`.trim()} style={`--offset: 2.5;`}>
+ <ul class="container" role="list">
+ <li class="logo">
+ <a href="/">
+ <h1 class="visually-hidden">Astro</h1>
+ <Sprite class="logomark" name="logo" size="3em" />
+ <Sprite class="wordmark" name="wordmark" height="3.5em" width="6em" />
+ </a>
+ </li>
+
+ {items.map(item => (
+ <li class={`${item.hiddenMobile ? 'hidden-mobile' : ''}`}>
+ <a aria-current={Astro.request.url.pathname.startsWith(item.href) ? 'page' : undefined} href={item.href}>
+ {item.title}
+ </a>
+ </li>
+ ))}
+
+ {social.map(item => (
+ <li class="icon">
+ <a href={item.href} title={item.title}>
+ <Sprite name={item.icon} size="1.5em" role="presentation" />
+ </a>
+ </li>
+ ))}
+ </ul>
+</nav>
diff --git a/smoke/astro.build-main/src/components/Note.astro b/smoke/astro.build-main/src/components/Note.astro
new file mode 100644
index 000000000..1db4af6d4
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Note.astro
@@ -0,0 +1,58 @@
+---
+export interface Props {
+ title?: string;
+ type?: 'tip' | 'warning' | 'error';
+}
+const { type = 'tip', title } = Astro.props;
+---
+
+<aside class={`note type-${type}`}>
+ {title && <h3 class="head-sm">{title}</h3>}
+ <slot />
+</aside>
+
+<style>
+ .note {
+ --padding-block: 2rem;
+ --padding-inline: 2rem;
+
+ display: flex;
+ flex-direction: column;
+
+ padding: var(--padding-block) var(--padding-inline);
+ margin-left: calc(var(--padding-inline) * -1);
+ margin-right: calc(var(--padding-inline) * -1);
+ margin-top: 4rem !important;
+
+ background: var(--color-dawn);
+ color: var(--color-midnight);
+ box-shadow: var(--shadow-md);
+ }
+
+ @media (min-width: 64rem) {
+ .note {
+ border-radius: var(--corner-md);
+ }
+ }
+
+ .note > :global(* + *) {
+ margin-top: 1em;
+ }
+
+ .note h3 {
+ font-weight: 700;
+ font-size: var(--size-500);
+ color: var(--color-accent);
+ margin: 0;
+ }
+
+ .note.type-tip {
+ --color-accent: var(--color-blue);
+ }
+ .note.type-warning {
+ --color-accent: var(--color-yellow);
+ }
+ .note.type-error {
+ --color-accent: var(--color-red);
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/Panel.astro b/smoke/astro.build-main/src/components/Panel.astro
new file mode 100644
index 000000000..98afe736f
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Panel.astro
@@ -0,0 +1,59 @@
+---
+const { class: className, background = 'color-tan', offset = 0, size = "lg", pad = 1 } = Astro.props;
+let style = `--pad: ${pad}; `;
+if (offset !== 0) {
+ style += `--offset-block: ${offset};`
+}
+---
+
+<div class="container" style={style}>
+ <article class={`panel elevation-xl size-${size} ${className}`} style={`--background: ${background};`}>
+ {Astro.slots.title && <div class="title">
+ <slot name="title" />
+ </div>}
+ <slot />
+ </article>
+</div>
+
+<style>
+ .container {
+ position: relative;
+ z-index: 1;
+ margin-top: calc(var(--offset-block, 0) * -1rem);
+ }
+ .panel {
+ --offset-inline: 0.5rem;
+ background: var(--background);
+ border-radius: var(--corner-md);
+ padding: calc(1.25rem * var(--pad, 1)) 1.5rem;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ margin-left: calc(var(--offset-inline) * -1);
+ margin-right: calc(var(--offset-inline) * -1);
+ }
+ .panel.size-md {
+ max-width: 64rem;
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ @media (min-width: 45rem) {
+ .panel {
+ padding: calc(3.25rem * var(--pad, 1)) 2rem;
+ --offset-inline: 1.625rem;
+ }
+ }
+
+ .title {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ text-align: center;
+ color: var(--color-dusk);
+ }
+
+ .panel > :not(p):nth-child(2) {
+ margin-top: 3rem;
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/PixelLink.astro b/smoke/astro.build-main/src/components/PixelLink.astro
new file mode 100644
index 000000000..6ad18f26a
--- /dev/null
+++ b/smoke/astro.build-main/src/components/PixelLink.astro
@@ -0,0 +1,102 @@
+---
+const { class: className = '', href } = Astro.props;
+// Wrap in <span> because Houdini is disabled for a[href] for security
+
+const { variant = 'primary' } = Astro.props;
+const { before, after } = Astro.slots;
+---
+
+<span class={`link pixel variant-${variant} ${before ? 'has-before' : ''} ${after ? 'has-after' : ''} ${className}`.trim()}>
+ <a {href}>
+ <slot name="before" />
+ <span><slot /></span>
+ <slot name="after" />
+ </a>
+</span>
+
+<style>
+ .link {
+ --border-radius: 8;
+ --duration: 200ms;
+ --delay: 30ms;
+ --background: linear-gradient(180deg, var(--link-color-stop-a), var(--link-color-stop-b));
+ display: flex;
+ color: white;
+ font-family: var(--font-display);
+ font-size: 1.5rem;
+ width: max-content;
+ transition-property: transform, --link-color-stop-a, --link-color-stop-b;
+ transition-duration: var(--duration);
+ transition-delay: var(--delay);
+ transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
+ }
+ .link:hover,
+ .link:focus-within {
+ transform: translateY(calc(var(--pixel-size) * -0.5px));
+ }
+ .link:active {
+ transform: translateY(0);
+ }
+ .has-before a :first-child {
+ margin-left: -1rem;
+ margin-right: 0.25rem;
+ }
+ .has-before a :last-child {
+ margin-left: 0.25rem;
+ margin-right: -1rem;
+ }
+ a {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0.67rem 2.5rem;
+ width: 100%;
+ height: 100%;
+ text-decoration: none;
+ color: inherit !important;
+ }
+ a > :global(* + *) {
+ margin-left: 0.25rem;
+ }
+
+ .variant-primary {
+ --variant: primary;
+ --background: linear-gradient(180deg, var(--link-color-stop-a), var(--link-color-stop-b));
+ }
+ .variant-primary:hover,
+ .variant-primary:focus-within {
+ --link-color-stop-a: #6D39FF;
+ --link-color-stop-b: #AF43FF;
+ }
+ .variant-primary:active {
+ --link-color-stop-a: #5F31E1;
+ --link-color-stop-b: #A740F3;
+ }
+
+ .variant-outline {
+ --variant: outline;
+ --background: none;
+ color: var(--background);
+ }
+ .variant-outline > a::before {
+ position: absolute;
+ top: 0;
+ right: calc(var(--pixel-size) * 1px);
+ bottom: calc(var(--pixel-size) * 1px);
+ left: calc(var(--pixel-size) * 1px);
+ content: "";
+ display: block;
+ transform-origin: bottom center;
+ background: linear-gradient(to top, var(--background), rgba(255, 255, 255, 0));
+ opacity: 0.3;
+ transform: scaleY(0);
+ transition: transform 200ms cubic-bezier(0.22, 1, 0.36, 1);
+ }
+ .variant-outline:hover > a::before,
+ .variant-outline:focus-within > a::before {
+ transform: scaleY(1);
+ }
+ .variant-outline:active > a::before {
+ transform: scaleY(1);
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/Scripts.astro b/smoke/astro.build-main/src/components/Scripts.astro
new file mode 100644
index 000000000..8bbef9147
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Scripts.astro
@@ -0,0 +1,19 @@
+{Astro.request.url.pathname === '/' && <noscript></noscript>}
+<script type="module" hoist>
+ import "../scripts/nav.ts";
+</script>
+<script type="module" src="/scripts/defer.js"></script>
+<script type="module">
+const checkbox = document.querySelector('#marquee-pause');
+if(checkbox) {
+ function onChange(element) {
+ const paused = element.checked;
+ localStorage.setItem('astro:marquee-paused', `${paused}`);
+ }
+ checkbox.addEventListener('change', ({ target }) => onChange(target))
+ checkbox.addEventListener('keydown', ({ target, key }) => {
+ if (key !== 'Enter') return;
+ onChange(target);
+ });
+}
+</script>
diff --git a/smoke/astro.build-main/src/components/Shell.astro b/smoke/astro.build-main/src/components/Shell.astro
new file mode 100644
index 000000000..09d4e0aeb
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Shell.astro
@@ -0,0 +1,28 @@
+---
+export interface Props {
+ code: string;
+}
+const { code } = Astro.props;
+---
+
+<pre><code>{String(code).trim().split('\n').map(
+ line => <span class="line">{
+ line.startsWith('#') ? <span class="comment">{line}</span> : line
+ }</span>)
+}</code></pre>
+
+<style>
+ pre,
+ code {
+ white-space: pre;
+ }
+ .comment {
+ color: var(--color-gray-400);
+ }
+ .line {
+ display: block;
+ }
+ .line:empty::after {
+ content: ' ';
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/SkipLink.astro b/smoke/astro.build-main/src/components/SkipLink.astro
new file mode 100644
index 000000000..b46beff69
--- /dev/null
+++ b/smoke/astro.build-main/src/components/SkipLink.astro
@@ -0,0 +1 @@
+<a href="#content" class="skip-link">Skip to main content</a>
diff --git a/smoke/astro.build-main/src/components/Starfield.astro b/smoke/astro.build-main/src/components/Starfield.astro
new file mode 100644
index 000000000..51ed5ed5d
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Starfield.astro
@@ -0,0 +1,33 @@
+---
+const { height = 50 } = Astro.props;
+---
+
+<div class="starfield" style={`--height: ${height}%;`} />
+
+<style>
+.starfield {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: calc(100% - var(--height));
+ left: 0;
+ background-image: url(/stars.png);
+ background-repeat: repeat;
+ -webkit-mask-image: url(/stars-mask.png);
+ -webkit-mask-repeat: repeat;
+ mask-image: url(/stars-mask.png);
+ mask-repeat: repeat;
+ animation: sparkle 10s linear infinite alternate-reverse;
+ pointer-events: none;
+}
+@keyframes sparkle {
+ from {
+ -webkit-mask-position: top right;
+ mask-position: top right;
+ }
+ to {
+ -webkit-mask-position: bottom left;
+ mask-position: bottom left;
+ }
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/Tweet.astro b/smoke/astro.build-main/src/components/Tweet.astro
new file mode 100644
index 000000000..1d9f32889
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Tweet.astro
@@ -0,0 +1,14 @@
+---
+import Panel from './Panel.astro'
+---
+
+<Panel class="tweet" background="var(--color-dawn)">
+ <slot />
+</Panel>
+
+<style>
+.tweet {
+ margin-top: 2rem;
+ display: block !important;
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/Wrapper.astro b/smoke/astro.build-main/src/components/Wrapper.astro
new file mode 100644
index 000000000..10e5edf94
--- /dev/null
+++ b/smoke/astro.build-main/src/components/Wrapper.astro
@@ -0,0 +1,9 @@
+<div class="wrapper">
+ <slot />
+</div>
+
+<style>
+ .wrapper {
+ background: var(--color-tan) linear-gradient(to bottom, var(--color-tan) 0%, var(--color-tan) calc(100% - 50vh), #E8ADB7 100%);
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/blog/Card.astro b/smoke/astro.build-main/src/components/blog/Card.astro
new file mode 100644
index 000000000..fe2ee9894
--- /dev/null
+++ b/smoke/astro.build-main/src/components/blog/Card.astro
@@ -0,0 +1,106 @@
+---
+import DateTime from '../../components/Date.astro';
+import Author from '../../components/Author.astro';
+import { smartypants } from 'smartypants';
+
+const { post = {}, variant = 'summary' } = Astro.props;
+const Title = variant === 'summary' ? 'h2' : 'h1';
+---
+
+<div class="wrapper">
+ <Title class="title text-gradient" set:html={smartypants(post.title, 1)} />
+
+ <div class="authors">
+ <h3>Written by</h3>
+ <ul role="list">
+ {post.authors.map(author => (
+ <li><Author name={author} /></li>
+ ))}
+ </ul>
+ </div>
+
+ <div class="date">
+ <h3>Published on</h3>
+ <p><DateTime value={post.publishDate} /></p>
+ </div>
+</div>
+
+<style>
+.wrapper {
+ width: 100%;
+ max-width: 48rem;
+ margin: 0 auto;
+ display: flex;
+ flex-flow: row wrap;
+ --space: 0.5rem;
+}
+@media (min-width: 40rem) {
+ .wrapper {
+ --space: 1rem;
+ }
+}
+.title {
+ font-family: var(--font-display);
+ margin: 0 auto;
+ flex-grow: 1;
+ width: 100%;
+ line-height: 1.1;
+}
+h1.title {
+ font-size: var(--size-800);
+}
+h2.title {
+ --fill: var(--color-dusk);
+ font-size: var(--size-600);
+}
+.description {
+ flex-grow: 1;
+ width: 100%;
+ margin-top: var(--space);
+}
+.description > p {
+ max-width: 48ch;
+}
+.post > div {
+ margin-top: calc(var(--space) * 2);
+}
+.authors {
+ flex-grow: 2;
+ width: 100%;
+}
+@media (min-width: 52rem) {
+ .authors {
+ width: initial;
+ }
+}
+.authors ul {
+ display: flex;
+ flex-flow: column nowrap;
+ list-style: none;
+}
+.authors ul > li + li {
+ margin-top: 0.5rem;
+}
+.date {
+ flex-grow: 1;
+}
+h3 {
+ margin: 0;
+ margin-bottom: var(--size-300);
+ font-family: var(--font-display);
+ font-size: var(--size-300);
+ font-weight: 700;
+ color: var(--color-dusk);
+ text-transform: uppercase;
+ letter-spacing: 1px;
+}
+.date, .authors {
+ margin-top: calc(var(--space) * 2);
+ font-size: var(--size-400);
+}
+:is(.date, .authors) p {
+ margin: 0;
+ font-size: inherit;
+ height: 2rem;
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/blog/Outro.astro b/smoke/astro.build-main/src/components/blog/Outro.astro
new file mode 100644
index 000000000..44f9fbc51
--- /dev/null
+++ b/smoke/astro.build-main/src/components/blog/Outro.astro
@@ -0,0 +1,53 @@
+---
+import { Sprite } from 'astro-icon';
+
+const { tweet: { title, href } } = Astro.props;
+---
+
+<section class="outro">
+ <div class="container">
+ <div class="content">
+ <a class="return" href="/blog">
+ <Sprite pack="mdi" name="arrow-left" size="32" aria-hidden="true" />
+ <span>Return to Blog</span>
+ </a>
+ <a class="share-on-twitter" title="Share on Twitter" href={`https://twitter.com/intent/tweet?text=${encodeURIComponent(title)}&url=${encodeURIComponent(href)}&via=astrodotbuild`}>
+ <Sprite pack="mdi" name="twitter" size="16" />
+ <span>Share</span>
+ </a>
+ </div>
+ </div>
+</section>
+
+<style>
+ .outro {
+ padding: 8rem 0 2rem;
+ width: 100%;
+ }
+ .content {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ max-width: 48rem;
+ padding: 0;
+ margin: 0 auto;
+ }
+ .return {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: var(--size-600);
+ font-family: var(--font-display);
+ color: var(--color-purple);
+ gap: 0.25em;
+ }
+ .share-on-twitter {
+ background: var(--color-blue);
+ color: white;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0.25em 0.5em;
+ gap: 0.25em;
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/careers/Card.astro b/smoke/astro.build-main/src/components/careers/Card.astro
new file mode 100644
index 000000000..0e2614880
--- /dev/null
+++ b/smoke/astro.build-main/src/components/careers/Card.astro
@@ -0,0 +1,88 @@
+---
+import { smartypants } from 'smartypants';
+
+const { career = {}, variant = 'summary' } = Astro.props;
+const Title = variant === 'summary' ? 'h2' : 'h1';
+---
+
+<div class="wrapper">
+ <Title class="title text-gradient">{smartypants(career.title, 1)}</Title>
+ <div class="description">
+ <p>{career.description}</p>
+ </div>
+</div>
+
+<style>
+.wrapper {
+ width: 100%;
+ max-width: 48rem;
+ margin: 0 auto;
+ display: flex;
+ flex-flow: row wrap;
+}
+.title {
+ font-family: var(--font-display);
+ margin: 0 auto;
+ flex-grow: 1;
+ width: 100%;
+ line-height: 1.1;
+}
+h1.title {
+ font-size: var(--size-800);
+}
+h2.title {
+ --fill: var(--color-dusk);
+ font-size: var(--size-600);
+}
+.description {
+ flex-grow: 1;
+ width: 100%;
+ margin-top: 0.5em;
+}
+.description > p {
+ max-width: 48ch;
+ color: #999;
+}
+.post > div {
+ margin-top: 2em;
+}
+.authors {
+ flex-grow: 2;
+ width: 100%;
+}
+@media (min-width: 52rem) {
+ .authors {
+ width: initial;
+ }
+}
+.authors ul {
+ display: flex;
+ flex-flow: column nowrap;
+ list-style: none;
+}
+.authors ul > li + li {
+ margin-top: 0.5rem;
+}
+.date {
+ flex-grow: 1;
+}
+h3 {
+ margin: 0;
+ margin-bottom: var(--size-300);
+ font-family: var(--font-display);
+ font-size: var(--size-300);
+ font-weight: 700;
+ color: var(--color-dusk);
+ text-transform: uppercase;
+ letter-spacing: 1px;
+}
+.date, .authors {
+ margin-top: 2rem;
+ font-size: var(--size-400);
+}
+:is(.date, .authors) p {
+ margin: 0;
+ font-size: inherit;
+ height: 2rem;
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/Award.astro b/smoke/astro.build-main/src/components/landing/Award.astro
new file mode 100644
index 000000000..30df3302e
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/Award.astro
@@ -0,0 +1,34 @@
+---
+import Section from './Section.astro';
+import Title from './Title.astro';
+import Panel from '../Panel.astro';
+---
+
+<Section {...Astro.props}>
+ <Panel background="var(--gradient-pop-4)">
+ <div class="container">
+ <div class="content">
+ <h3 class="head-md"><slot name="title" /></h3>
+ <div class="body">
+ <slot />
+ </div>
+ </div>
+ </div>
+ </Panel>
+</Section>
+
+<style>
+ .content {
+ color: var(--color-dawn);
+ text-align: center;
+ }
+ .body {
+ max-width: 75ch;
+ margin: 2em auto 0;
+ }
+
+ .body :global(a) {
+ text-decoration: underline;
+ color: white;
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/Callout.astro b/smoke/astro.build-main/src/components/landing/Callout.astro
new file mode 100644
index 000000000..17e6a2fc7
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/Callout.astro
@@ -0,0 +1,31 @@
+---
+import Panel from '../Panel.astro';
+import Checklist from '../Checklist.astro';
+---
+
+<section>
+ <Panel background="var(--gradient-pop-3)">
+ <Fragment slot="title">
+ <h3 class="head-md">Batteries Included.</h3>
+ <p>Astro does the heavy lifting in the background&mdash;no plugins required.</p>
+ </Fragment>
+
+ <Checklist>
+ <li>Markdown Support</li>
+ <li>TypeScript</li>
+ <li>CSS Modules</li>
+ <li>PostCSS, Sass, Less, Stylus</li>
+ <li>Built-in SEO</li>
+ <li>Sitemaps</li>
+ <li>RSS Feeds</li>
+ <li>Pagination</li>
+ </Checklist>
+ </Panel>
+</section>
+
+<style>
+ section {
+ background: var(--color-tan);
+ padding-bottom: 20rem;
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/Community.astro b/smoke/astro.build-main/src/components/landing/Community.astro
new file mode 100644
index 000000000..2e47e0256
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/Community.astro
@@ -0,0 +1,71 @@
+---
+import Section from './Section.astro';
+import Title from './Title.astro';
+import ArrowLink from '../ArrowLink.astro';
+import Panel from '../Panel.astro';
+import { social } from '../../config.ts';
+
+const { style } = Astro.props;
+---
+
+<Section class="community" style={style} pad={1.0}>
+ <Panel size="md" background="var(--color-dawn)">
+ <Fragment slot="title">
+ <h3 class="head-md"><Title id="community"><slot name="title">Connect with Astro</slot></Title></h3>
+ <div class="description">
+ <slot>
+ <p>Learn more about Astro, get support, and meet thousands of other devs in our Discord community!</p>
+ </slot>
+ </div>
+ </Fragment>
+
+ <ul class="links">
+ <li class="social">
+ <ArrowLink icon="mdi:book" href="https://docs.astro.build">
+ Documentation
+ </ArrowLink>
+ </li>
+ {social.map(item => (
+ <li class="social">
+ <ArrowLink icon={item.icon} href={item.href}>
+ {item.title}
+ </ArrowLink>
+ </li>
+ ))}
+ </ul>
+ </Panel>
+</Section>
+
+<style>
+.community {
+ padding-top: var(--size-1000);
+ background: var(--background, rgba(255, 255, 255, 0));
+}
+.description {
+ margin-top: 1rem;
+ max-width: 48ch;
+}
+.links {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ list-style: none;
+ display: flex;
+ flex-flow: row wrap;
+ align-items: center;
+ justify-content: space-evenly;
+ gap: 0.5rem;
+}
+.links > :global(li) {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ width: 100%;
+}
+@media (min-width: 52rem) {
+ .links > :global(li) {
+ width: auto;
+ }
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/Demo.astro b/smoke/astro.build-main/src/components/landing/Demo.astro
new file mode 100644
index 000000000..5a930ec33
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/Demo.astro
@@ -0,0 +1,68 @@
+---
+import Section from './Section.astro';
+const { reverse, gradient = false } = Astro.props;
+---
+<Section pad={2} class={"demo" + (gradient ? ' gradient' : '')}>
+ <div class="container">
+ <div class="content">
+ <h3 class="head-md title"><slot name="title" /></h3>
+ <slot />
+ </div>
+
+ <div class={['illo', reverse ? 'reverse' : ''].filter(x => x).join(' ')}>
+ <slot name="illustration" />
+ </div>
+ </div>
+</Section>
+
+<style>
+.demo:nth-child(3) {
+ padding-top: 4rem;
+}
+.reverse {
+ padding-bottom: var(--size-1000);
+}
+.gradient {
+ background: var(--color-tan) linear-gradient(180deg, #E5DAEE 0%, rgba(255, 255, 255, 0) 100%);
+}
+.container {
+ display: grid;
+ gap: 4rem;
+}
+
+.content > :global(p) {
+ margin-top: 0.5rem;
+ margin-bottom: 0.5rem;
+ max-width: 52ch;
+}
+.content {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: center;
+}
+.illo {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+@media (min-width: 64rem) {
+ .reverse {
+ order: -1;
+ }
+ .title {
+ margin-top: -2.5ex;
+ }
+ .container {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+ .content {
+ padding: 2rem;
+ }
+}
+@media (min-width: 82rem) {
+ .illo :global(svg) {
+ transform: scale(1);
+ }
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/DemoIllustration.astro b/smoke/astro.build-main/src/components/landing/DemoIllustration.astro
new file mode 100644
index 000000000..fe538f785
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/DemoIllustration.astro
@@ -0,0 +1,166 @@
+---
+import { Sprite } from 'astro-icon';
+
+const { before, after, name } = Astro.props;
+---
+<div class="illustration" role="img" data-name={name}>
+ <div class="before-astro">
+ <div class="screen">
+ <slot name="before" />
+ </div>
+ <div class="label">
+ <div class="badge">
+ <Sprite pack="ic" name="close" size={24} />
+ </div>
+ <div class="text">
+ <h4>{before}</h4>
+ <h5>Before Astro</h5>
+ </div>
+ </div>
+ </div>
+
+ <div class="after-astro">
+ <div class="screen">
+ <slot name="after" />
+ </div>
+ <div class="label">
+ <div class="badge">
+ <Sprite name="logo-single-color" size={20} />
+ </div>
+ <div class="text">
+ <h4>{after}</h4>
+ <h5>With Astro</h5>
+ </div>
+ </div>
+ </div>
+</div>
+
+<style>
+.illustration {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 2rem;
+ z-index: 1;
+}
+.screen {
+ position: relative;
+ height: 248px;
+ width: 165px;
+ border-radius: var(--corner-md);
+ box-shadow: var(--shadow-xl);
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+}
+@media (min-width: 40rem) {
+ .screen {
+ height: 330px;
+ width: 220px;
+ }
+}
+.before-astro {
+ --color: #E3CFC7;
+ --color-rgb: 227, 207, 199;
+}
+.after-astro {
+ --color: #E8D6F3;
+ --color-rgb: 232, 214, 243;
+}
+.before-astro :is(.label, .screen) {
+ background: #FAFAFA linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, #F4EFED 100%);
+}
+.after-astro :is(.label, .screen) {
+ background: #FAFAFA linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, #F3E9FA 100%);
+}
+.after-astro .screen::before {
+ content: "";
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: var(--gradient-pop-5);
+ filter: blur(10px);
+ z-index: -1;
+}
+.before-astro {
+ z-index: 0;
+}
+.after-astro {
+ z-index: 1;
+}
+.after-astro .screen {
+ margin-left: -24px;
+ margin-top: 64px;
+}
+@media (min-width: 40rem) {
+ .after-astro .screen {
+ margin-top: initial;
+ margin-left: initial;
+ }
+}
+.label {
+ position: relative;
+ width: 165px;
+ margin: -1.5rem 0 0;
+ display: flex;
+ align-items: center;
+ padding: 0.5rem 1rem;
+ z-index: 2;
+ border-radius: 2rem;
+ box-shadow: var(--shadow-md);
+}
+.after-astro .label {
+ margin-left: -1.5rem;
+}
+@media (min-width: 40rem) {
+ .label {
+ margin: -1.5rem auto 0;
+ width: 175px;
+ }
+ .after-astro .label {
+ margin-left: auto;
+ }
+}
+.text {
+ margin-left: 0.5rem;
+}
+.text h4,
+.text h5 {
+ font-family: var(--font-display);
+ margin: 0;
+ line-height: 1;
+}
+.text h4 {
+ font-size: var(--size-400);
+ color: var(--color-midnight);
+}
+.text h5 {
+ font-size: var(--size-300);
+ color: #7C678B;
+ margin-top: 0.25em;
+}
+.before-astro .text h5 {
+ color: #CC2727;
+}
+.after-astro .text h5 {
+ color: #4a54ee;
+}
+.badge {
+ --size: 2rem;
+ width: var(--size);
+ height: var(--size);
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: white;
+ z-index: 2;
+}
+.before-astro .badge {
+ background: linear-gradient(180deg, #FA8C5D 0%, #CC2727 100%);
+}
+.after-astro .badge {
+ background: linear-gradient(180.2deg, #205EFF 0.17%, #C238BD 114.76%);
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/DemoPartialHydration.astro b/smoke/astro.build-main/src/components/landing/DemoPartialHydration.astro
new file mode 100644
index 000000000..1dd005e83
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/DemoPartialHydration.astro
@@ -0,0 +1,177 @@
+---
+import Illustration from './DemoIllustration.astro';
+---
+
+<Illustration before="255 kB" after="10.7 kB" name="hydration">
+ <Fragment slot="before">
+ <div class="ph-content before">
+ <header>
+ <div class="logo" style="--i: 0" />
+ <div class="cart dynamic" style="--i: 0.5" />
+ </header>
+ <ul role="list">
+ {[0, 1, 2].map((i) => {
+ return (
+ <li>
+ <div class="img" style={`--i: ${(i * 0.5) + 1}`}>
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none"width="48" height="44" viewBox="0 0 64 59" role="img">
+ <path fill="#FAFAFA" d="M13 1h5v1h2v1h2v2h1v3h3v2h1v5h-1v2h-3v2h-1v3h-2v1h-2v1h-5v-1h-2v-1H8v-3H7v-2H5v-2H4v-5h1V8h2V5h1V3h3V2h2V1ZM1 54h3v-4h3v-3h3v-3h3v-3h2v-3h5v3h4v3h2v3h5v-3h2v-4h3v-4h1v-5h2v-3h2v-3h2v-3h2v3h2v3h2v3h2v5h2v4h2v4h2v3h3v4h1v4h2v4H1v-5Z"/>
+ </svg>
+ </div>
+ <span class="group">
+ <div style={`--i: ${(i * 0.5) + 1.33}`} />
+ <div class="dynamic" style={`--i: ${(i * 0.5) + 1.67}`} />
+ </span>
+ </li>
+ )
+ })}
+ </ul>
+ </div>
+ </Fragment>
+ <Fragment slot="after">
+ <div class="ph-content after">
+ <header>
+ <div class="logo" />
+ <div class="cart dynamic" style="--i: 0" />
+ </header>
+ <ul role="list">
+ {[0, 1, 2].map((i) => {
+ return (
+ <li>
+ <div class="img">
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" width="48" height="44" viewBox="0 0 64 59" role="img">
+ <path fill="#FAFAFA" d="M13 1h5v1h2v1h2v2h1v3h3v2h1v5h-1v2h-3v2h-1v3h-2v1h-2v1h-5v-1h-2v-1H8v-3H7v-2H5v-2H4v-5h1V8h2V5h1V3h3V2h2V1ZM1 54h3v-4h3v-3h3v-3h3v-3h2v-3h5v3h4v3h2v3h5v-3h2v-4h3v-4h1v-5h2v-3h2v-3h2v-3h2v3h2v3h2v3h2v5h2v4h2v4h2v3h3v4h1v4h2v4H1v-5Z"/>
+ </svg>
+ </div>
+ <span class="group">
+ <div />
+ <div class="dynamic" style={`--i: ${i * 0.5}`} />
+ </span>
+ </li>
+ )
+ })}
+ </ul>
+ </div>
+ </Fragment>
+</Illustration>
+
+
+<style>
+ .before {
+ --accent: 94, 81, 76;
+ --accent-bg: linear-gradient(to bottom, #DFC9C0 0%, #A8938A 100%);
+ --delay: 100ms;
+ }
+ .after {
+ --accent: 175, 67, 255;
+ --accent-bg: var(--gradient-pop-3);
+ --delay: 200ms;
+ }
+ .ph-content {
+ color: var(--color);
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ padding: 1rem;
+ }
+ .ph-content > * + * {
+ margin-top: 1rem;
+ }
+ ul {
+ list-style: none;
+ display: grid;
+ grid-template-rows: repeat(3, 1fr);
+ gap: 1rem;
+ }
+ li {
+ width: 100%;
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ flex-flow: row nowrap;
+ }
+ .group {
+ margin-left: 1rem;
+ flex-grow: 1;
+ display: flex;
+ flex-direction: column;
+ }
+ .group div {
+ width: 100%;
+ flex-grow: 1;
+ height: 1.5rem;
+ }
+ .group div:last-child {
+ margin-top: 0.5rem;
+ width: 67%;
+ }
+ header {
+ --size: 2rem;
+ display: flex;
+ justify-content: space-between;
+ width: 100%;
+ height: var(--size);
+ }
+ :where(.ph-content div) {
+ border-radius: 8px;
+ background: var(--color);
+ width: 100%;
+ height: var(--height, var(--size, 1rem));
+ position: relative;
+ z-index: 2;
+ }
+ .img {
+ position: relative;
+ border-radius: 8px;
+ z-index: 2;
+ height: 64px;
+ width: 64px;
+ padding: 0.5rem;
+ }
+ .logo {
+ width: calc(var(--size) * 3);
+ height: var(--size);
+ }
+ .cart {
+ width: var(--size);
+ height: var(--size);
+ border-radius: 50%;
+ }
+ .ph-content .dynamic {
+ background: var(--accent-bg);
+ }
+ .ph-content div[style*="--i"]::after {
+ content: "";
+ position: absolute;
+ display: block;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: -1;
+ border-radius: inherit;
+ opacity: 1;
+ }
+ .ph-content div[style*="--i"]::after {
+ box-shadow: 0 0 0 2px rgba(var(--accent), 1);
+ opacity: 0;
+ animation: hydrate-border 3s calc(var(--delay) + calc(var(--i) * 250ms)) ease-out forwards;
+ }
+ @keyframes hydrate-border {
+ 0% {
+ opacity: 0;
+ }
+ 50%, 80% {
+ opacity: 1;
+ }
+ 100% {
+ opacity: 0;
+ }
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/DemoTTI.astro b/smoke/astro.build-main/src/components/landing/DemoTTI.astro
new file mode 100644
index 000000000..6068e01ae
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/DemoTTI.astro
@@ -0,0 +1,206 @@
+---
+import Illustration from './DemoIllustration.astro';
+---
+
+<Illustration before="4.0s TTI" after="2.3s TTI" name="tti">
+ <Fragment slot="before">
+ <div class="spinner-container before">
+ <svg class="spinner" viewBox="0 0 100 100" width="128" height="128" fill="none" role="status">
+ <circle cx="50" cy="50" r="25" stroke="currentColor" stroke-width="8" />
+ </svg>
+ </div>
+ <div class="tti-content before">
+ <svg class="img" xmlns="http://www.w3.org/2000/svg" fill="none" width="188" height="148" role="img" viewBox="0 0 198 156">
+ <path fill="url(#tti-before-a)" fill-rule="evenodd" d="M7 0C3 0 0 3 0 7v141c0 4 3 7 7 7h183c4 0 7-3 7-7V7c0-4-3-7-7-7H7Zm65 19h-9v2h-5v2h-5v5h-2v5h-5v5h-2v9h2v5h5v5h2v4h5v3h5v2h9v-2h5v-3h5v-4h2v-5h5v-5h2v-9h-2v-5h-5v-5h-2v-5h-5v-2h-5v-2ZM45 128h-7v9h128v-8h-4v-8h-3v-7h-5v-7h-4v-9h-4v-7h-5V81h-4v-7h-4v-5h-3v-7h-6v7h-4v5h-3v7h-4v10h-3v7h-5v9h-6v7h-9v-7h-5v-6h-7v-7H67v7h-5v6h-5v7h-6v6h-6v8Z" clip-rule="evenodd"/>
+ <defs>
+ <linearGradient id="tti-before-a" x1="98.7" x2="98.7" y1="0" y2="155.2" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#DFC9C0"/>
+ <stop offset="1" stop-color="#A8938A"/>
+ </linearGradient>
+ </defs>
+ </svg>
+ <div />
+ <div />
+ <div />
+ </div>
+ </Fragment>
+ <Fragment slot="after">
+ <div class="spinner-container after">
+ <svg class="spinner" viewBox="0 0 100 100" width="128" height="128" fill="none" role="status">
+ <circle cx="50" cy="50" r="25" stroke="currentColor" stroke-width="8" />
+ </svg>
+ </div>
+ <div class="tti-content after">
+ <svg class="img" xmlns="http://www.w3.org/2000/svg" fill="none" width="188" height="148" viewBox="0 0 198 156" role="img">
+ <path fill="url(#tti-after-a)" fill-rule="evenodd" d="M8 1C4 1 0 4 0 8v140c0 5 4 8 8 8h182c5 0 8-3 8-8V8c0-4-3-7-8-7H8Zm65 18H63v3h-5v2h-4v5h-3v5h-4v4h-3v10h3v5h4v4h3v5h4v2h5v3h10v-3h4v-2h5v-5h3v-4h4v-5h3V38h-3v-4h-4v-5h-3v-5h-5v-2h-4v-3ZM45 129h-6v9h128v-8h-4v-8h-4v-8h-4v-6h-5v-9h-4v-8h-4V81h-5v-6h-3v-6h-4v-6h-5v6h-4v6h-4v6h-3v10h-4v8h-5v9h-5v6h-9v-6h-6v-7h-7v-6H67v6h-5v7h-5v6h-6v7h-6v8Z" clip-rule="evenodd"/>
+ <defs>
+ <linearGradient id="tti-after-a" x1="70.4" x2="70.4" y1=".6" y2="155.8" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#FFB4B4"/>
+ <stop offset="1" stop-color="#C487F0"/>
+ </linearGradient>
+ </defs>
+ </svg>
+ <div />
+ <div />
+ <div />
+ </div>
+ </Fragment>
+</Illustration>
+
+
+<style>
+ .spinner {
+ --size: 8rem;
+ --len: 156px;
+ --rot: 360deg;
+ transform-origin: center center;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--size);
+ height: var(--size);
+ margin: auto;
+ color: var(--color);
+ stroke-dasharray: var(--len);
+ stroke-dashoffset: calc(var(--len) * 0.25);
+ animation: spin 1.5s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
+ }
+ @media (min-width: 40rem) {
+ .spinner {
+ --size: 12rem;
+ }
+ }
+ .spinner > circle {
+ transform-origin: center center;
+ animation: rotate 6s linear infinite;
+ }
+ .spinner-container {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ }
+ .before,
+ .after {
+ animation: fade-out 10s linear infinite both;
+ }
+ .spinner-container.before {
+ animation-name: fade-out-before;
+ }
+ .tti-content.before {
+ animation-name: fade-in-before;
+ }
+ .spinner-container.after {
+ animation-name: fade-out-after;
+ }
+ .tti-content.after {
+ animation-name: fade-in-after;
+ }
+ .tti-content {
+ opacity: 0;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ padding: 1rem;
+ }
+ .img {
+ width: 100%;
+ }
+ .tti-content > * + * {
+ margin-top: 1rem;
+ }
+
+
+ .tti-content > div {
+ height: var(--height, 1rem);
+ width: var(--width, 100%);
+ border-radius: 8px;
+ background: var(--color);
+ }
+ .tti-content > :nth-child(2) {
+ --height: 1.5rem;
+ --width: 67%;
+ }
+ .tti-content > :nth-child(4) {
+ --width: 80%;
+ }
+ @media (min-width: 40rem) {
+ .tti-content > :nth-child(2) {
+ --height: 2rem;
+ --width: 67%;
+ }
+ }
+ @keyframes rotate {
+ from {
+ transform: rotate(calc(var(--rot) * 0));
+ }
+ to {
+ transform: rotate(calc(var(--rot) * 1));
+ }
+ }
+ @keyframes spin {
+ 0% {
+ transform: rotate(calc(var(--rot) * 0));
+ stroke-dashoffset: calc(var(--len) * 0.25);
+ }
+ 25% {
+ transform: rotate(calc(var(--rot) * 0.25));
+ stroke-dashoffset: calc(var(--len) * 0.5);
+ }
+ 50% {
+ transform: rotate(calc(var(--rot) * 0.5));
+ stroke-dashoffset: calc(var(--len) * 0.25);
+ }
+ 75% {
+ transform: rotate(calc(var(--rot) * 0.75));
+ stroke-dashoffset: calc(var(--len) * 0.5);
+ }
+ 100% {
+ transform: rotate(calc(var(--rot) * 1));
+ stroke-dashoffset: calc(var(--len) * 0.25);
+ }
+ }
+ @keyframes fade-in-before {
+ 0%, 39.9%, 100% {
+ opacity: 0;
+ }
+ 40%, 85% {
+ opacity: 1;
+ }
+ }
+ @keyframes fade-out-before {
+ 0%, 39.9%, 100% {
+ opacity: 1;
+ }
+ 40%, 99.9% {
+ opacity: 0;
+ }
+ }
+ @keyframes fade-in-after {
+ 0%, 22.9%, 100% {
+ opacity: 0;
+ }
+ 23%, 85% {
+ opacity: 1;
+ }
+ }
+ @keyframes fade-out-after {
+ 0%, 22.9%, 100% {
+ opacity: 1;
+ }
+ 23%, 99.9% {
+ opacity: 0;
+ }
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/Grid.astro b/smoke/astro.build-main/src/components/landing/Grid.astro
new file mode 100644
index 000000000..f7d169c55
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/Grid.astro
@@ -0,0 +1,82 @@
+---
+const { class: className } = Astro.props;
+---
+
+<div class={`grid ${className}`}>
+ <div class="base" />
+ {Array.from({ length: 10 }, (_, i) => <div class="line" style={`--i: ${i};`} />)}
+</div>
+
+<style>
+.grid {
+ --len: 10;
+ --time: 15s;
+ --grid-size-inline: 5em;
+ --grid-size-block: 2.5em;
+ --grid-color: #000;
+ --grid-stroke: 1px;
+ opacity: 0.7;
+ mix-blend-mode: hard-light;
+ position: absolute;
+ bottom: -30%;
+ left: 0;
+ right: 0;
+ height: 100%;
+ z-index: 1;
+ filter: invert(1);
+ pointer-events: none;
+}
+.base {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ margin-left: -50%;
+ width: 200%;
+ background-position-y: 0px;
+ background-image: repeating-linear-gradient(90deg, var(--grid-color, white) 0%, transparent calc(1px + var(--grid-stroke, 0px)), transparent var(--grid-size-inline), var(--grid-color, white) calc(var(--grid-size-inline) + 1px + var(--grid-stroke, 0px)));
+ transform: perspective(50vh) rotateX(60deg) translateZ(10px) translateY(-1px);
+ -webkit-mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1), rgba(0, 0, 0, 1));
+ mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1), rgba(0, 0, 0, 1))
+}
+.line {
+ --n-start: calc((var(--i) + 1) / var(--len));
+ --n-end: calc((var(--i) + 2) / var(--len));
+ --ty-start: calc(var(--i) * calc(var(--grid-size-block) * ((var(--i) + 1) / var(--len))));
+ --ty-end: calc((var(--i) + 1) * calc(var(--grid-size-block) * ((var(--i) + 2) / var(--len))));
+ position: absolute;
+ right: 0;
+ left: 0;
+ top: 35.5%;
+ height: 1px;
+ width: 100%;
+ border: var(--grid-stroke) solid var(--grid-color);
+ transform: scaleY(var(--sy-start)) translateY(var(--ty-start));
+ animation: move var(--time) infinite linear;
+}
+
+/* Firefox tweaks */
+@supports (-moz-appearance: none) {
+ .line {
+ animation-play-state: paused;
+ }
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .line {
+ animation-play-state: paused;
+ }
+}
+
+@keyframes move {
+ 0% {
+ opacity: calc(var(--n-start));
+ transform: translate3d(0, var(--ty-start), 0);
+ }
+ 100%{
+ opacity: calc(var(--n-end));
+ transform: translate3d(0, var(--ty-end), 0);
+ }
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/Hero.astro b/smoke/astro.build-main/src/components/landing/Hero.astro
new file mode 100644
index 000000000..8adc8f586
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/Hero.astro
@@ -0,0 +1,206 @@
+---
+import Grid from './Grid.astro';
+---
+<section class="hero">
+ <div class="background">
+ <div class="blob-a" />
+ <div class="blob-b" />
+ <div class="blob-c" />
+ </div>
+ <Grid />
+ <div class="container content">
+ <h2 class="text-gradient"><slot name="title" /></h2>
+ <p><slot name="tagline" /></p>
+ <div class="cta container">
+ <slot />
+ </div>
+ </div>
+</section>
+
+<style>
+ .hero {
+ position: relative;
+ background: var(--color-tan) linear-gradient(180deg, var(--color-tan), var(--color-tan) 10rem, #E8ADB7 100%);
+ padding: var(--padding, 4rem) 0;
+ padding-bottom: var(--padding-bottom, 16rem);
+ z-index: 0;
+ overflow: hidden;
+ max-height: 95vh;
+ max-height: 95svh;
+
+ }
+ @supports (padding: clamp(0px, 1vw, 1px)) {
+ .hero {
+ --padding: clamp(4rem, 6vw, 8rem);
+ --padding-bottom: max(calc(var(--padding) * 1.5), 24rem);
+ }
+ }
+
+ @media (min-width: 52rem) and (min-height: 40rem) {
+ .hero {
+ max-height: 80vh;
+ }
+ }
+
+ .content {
+ margin-top: 5rem;
+ text-align: center;
+ color: rgba(34, 34, 34, 0.8);
+ }
+ @media (min-width: 52rem) {
+ .content {
+ margin-top: 3.5rem;
+ }
+ }
+
+ h2 {
+ --fill: var(--gradient-pop-1);
+ font-size: 4rem;
+ font-size: var(--size-800);
+ font-family: var(--font-display);
+ line-height: 1.1;
+ margin-bottom: 1.25rem;
+ }
+ @media (min-width: 52rem) {
+ h2 {
+ font-size: var(--size-900);
+ }
+ }
+ p {
+ font-size: var(--size-600);
+ max-width: min(48ch, calc(100% - 1rem));
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1.5em;
+ }
+ .cta {
+ position: relative;
+ left: 0;
+ right: 0;
+ display: flex;
+ flex-flow: column nowrap;
+ align-items: center;
+ justify-content: center;
+ z-index: 1;
+ gap: 2rem;
+ }
+
+ @media (min-width: 52rem) {
+ .cta {
+ position: absolute;
+ flex-direction: row;
+ }
+ }
+
+ .background {
+ --time: 25s;
+ --blur: 128px;
+ --scale-x: 1.125;
+ --opacity: 0.9;
+ --ty: 0;
+ --aspect-ratio: 16 / 9;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ overflow: hidden;
+ pointer-events: none;
+ z-index: -1;
+ backface-visibility: hidden;
+ transform: translate3d(0,0,0) scaleX(var(--scale-x, 1));
+ opacity: var(--opacity, 1);
+ filter: blur(var(--blur)) saturate(1.1);
+ }
+
+ @media (min-width: 64rem) {
+ .background {
+ --ty: -5%;
+ /* --opacity: 1; */
+ --scale-x: 1.25;
+ }
+ }
+
+ /* Firefox tweaks */
+ @supports (-moz-appearance: none) {
+ .background {
+ --blur: 1280px;
+ --opacity: 0.7;
+ }
+ }
+
+ /* Safari tweaks */
+ @supports (-webkit-appearance: none) {
+ .background {
+ --blur: 80px;
+ --opacity: 0.8;
+ }
+ }
+
+ .blob-a {
+ display: block;
+ position: absolute;
+ top: 67%;
+ right: -50%;
+ margin-left: -50%;
+ min-width: 1280px;
+ width: 200%;
+ aspect-ratio: var(--aspect-ratio);
+ border-radius: 50%;
+ transform-origin: center center;
+ background: linear-gradient(-170deg, #FF9900 0%, #AD00FF 30.71%, #0029FF 37.67%, #6D39FF 49.54%);
+ z-index: 0;
+ }
+
+ .blob-b {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 67%;
+ right: -50%;
+ margin-left: -50%;
+ min-width: 1280px;
+ width: 200%;
+ aspect-ratio: var(--aspect-ratio);
+ border-radius: 50%;
+ background: red;
+ transform-origin: center center;
+ background: linear-gradient(259deg, #FF9900 0%, #AD00FF 30.71%, #0029FF 37.67%, #6D39FF 49.54%);
+ z-index: -1;
+ }
+
+ .blob-c {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 50%;
+ left: -50%;
+ margin-left: -50%;
+ min-width: 1280px;
+ width: 200%;
+ aspect-ratio: var(--aspect-ratio);
+ border-radius: 50%;
+ background: red;
+ transform-origin: center center;
+ background: linear-gradient(-180deg, #FF9900 0%, #AD00FF 30.71%, #0029FF 37.67%, #6D39FF 49.54%);
+ z-index: 1;
+ }
+
+ @supports not (aspect-ratio: 1 / 1) {
+ .blob-a::before,
+ .blob-b::before,
+ .blob-c::before {
+ float: left;
+ padding-top: calc(100% * var(--aspect-ratio));
+ content: "";
+ }
+
+ .blob-a::after,
+ .blob-b::after,
+ .blob-c::after {
+ display: block;
+ content: "";
+ clear: both;
+ }
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/Integrations.astro b/smoke/astro.build-main/src/components/landing/Integrations.astro
new file mode 100644
index 000000000..6323beff5
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/Integrations.astro
@@ -0,0 +1,89 @@
+---
+import Section from './Section.astro';
+import { Icon } from 'astro-icon';
+
+const rows = [
+ ['tailwindcss', 'sass', 'postcss', 'markdown', 'javascript', 'typescript'],
+ ['rss', 'wordpress', 'strapi', 'prismic', 'shopify'],
+ ['contentful', 'netlify-grid', 'vercel-grid', 'cloudflare', 'github'],
+]
+---
+
+<Section id="frameworks">
+ <div class="container content">
+ <h3 class="head-md title"><slot name="title" /></h3>
+ <div class="body">
+ <slot />
+ </div>
+ </div>
+ <ul class="integrations">
+ {rows.map(row => row.map(icon => <li class={`icon-${icon}`}><Icon title={icon.replace(/\-grid$/, '')} name={`logos/${icon}`} height="64" /></li>))}
+ </ul>
+</Section>
+
+<style>
+ #frameworks {
+ padding-top: var(--size-1000);
+ padding-bottom: var(--size-1000);
+ }
+ .content {
+ display: grid;
+ color: var(--color-dusk);
+ }
+ .title {
+ margin-bottom: 1rem;
+ }
+ .body > :global(* + *) {
+ margin-top: 1rem;
+ }
+ ul {
+ list-style: none;
+ }
+ .integrations {
+ box-sizing: border-box;
+ --cols: 2;
+ margin: 2rem -1rem;
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: space-evenly;
+ padding: 4rem 0;
+ opacity: 0.4;
+ color: black;
+ }
+ .integrations > li {
+ border: 1rem solid transparent;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ .integrations svg {
+ height: var(--size-800);
+ }
+
+ @media (min-width: 42rem) {
+ .integrations {
+ margin: 2rem auto;
+ padding-left: 2rem;
+ padding-right: 2rem;
+ }
+ }
+
+ @media (min-width: 64rem) {
+ .integrations {
+ max-width: 86rem;
+ }
+ .integrations svg {
+ height: var(--size-900);
+ }
+ .content {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ gap: 1rem;
+ }
+ .title {
+ grid-column: 1 / 3;
+ }
+ .body {
+ grid-column: 3 / 5;
+ }
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/Performance.astro b/smoke/astro.build-main/src/components/landing/Performance.astro
new file mode 100644
index 000000000..7542e5cd9
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/Performance.astro
@@ -0,0 +1,148 @@
+---
+import Section from './Section.astro';
+import Panel from '../Panel.astro';
+import Starfield from '../Starfield.astro';
+
+const tweet = {
+ content: 'Rebuilt my Next.js blog using Astro out of curiosity&hellip; holy shit the difference in bundle size.',
+ href: 'https://twitter.com/t3dotgg/status/1437195415439360003',
+}
+---
+
+<Section class="performance" style="--background: var(--gradient-pop-4);">
+ <Starfield height={48} />
+ <div class="container">
+ <div class="content">
+ <h3 class="head-md"><slot name="title" /></h3>
+ <div class="body">
+ <slot />
+ </div>
+ </div>
+ <aside class="data">
+ <Panel class="data" background="linear-gradient(to bottom, #F0DBDB, #E5BAE2)">
+ <p class="quote head-sm" style="font-weight: 700;" set:html={tweet.content}></p>
+
+ <div class="bars">
+ <h4 id="payload-title">Total Payload</h4>
+ <div class="chart" style="--max: 138;">
+ <div class="bar" style="--value: 138; --background: #C699BB;" aria-labelledby="payload-title" aria-describedby="payload-before" role="progressbar" aria-valuenow="138" aria-valuemin="0" aria-valuemax="138" />
+ <h5 id="payload-before" class="before">Before: 138 <abbr title="kilobytes">kB</abbr></h5>
+
+ <div class="bar" style="--value: 7.5; --background: var(--gradient-pop-2);" aria-labelledby="payload-title" aria-describedby="payload-after" role="progressbar" aria-valuenow="7.5" aria-valuemin="0" aria-valuemax="138" />
+ <h5 id="payload-after" class="after">Using Astro: 7.5 <abbr title="kilobytes">kB</abbr></h5>
+ </div>
+
+ <!-- <h4 id="tti-title">Time to Interactive (TTI)</h4>
+ <div class="chart" style="--max: 4;">
+ <div class="bar" style="--value: 4; --background: #C699BB;" aria-labelledby="tti-title" aria-describedby="tti-before" role="progressbar" aria-valuenow="4" aria-valuemin="0" aria-valuemax="4" />
+ <h5 id="tti-before" class="before">Before: 4<abbr title="seconds">s</abbr></h5>
+
+ <div class="bar" style="--value: 2.3; --background: var(--gradient-pop-2);" aria-labelledby="tti-title" aria-describedby="tti-after" role="progressbar" aria-valuenow="2.3" aria-valuemin="0" aria-valuemax="4" />
+ <h5 id="tti-after" class="after">Using Astro: 2.3<abbr title="seconds">s</abbr></h5>
+ </div> -->
+
+ <p>Real world data from <a href={tweet.href}>@t3dotgg on Twitter</a></p>
+ </div>
+ </Panel>
+ </aside>
+ </div>
+</Section>
+
+<style>
+ .performance {
+ position: relative;
+ padding-top: var(--size-1000);
+ padding-left: 1rem;
+ padding-right: 1rem;
+
+ }
+ .content {
+ color: white;
+ }
+ .container {
+ display: grid;
+ gap: 4rem;
+ padding: 0;
+ align-items: center;
+ }
+ h3 {
+ margin-bottom: 1rem;
+ }
+ abbr {
+ text-decoration: none;
+ color: inherit;
+ }
+ .data .quote {
+ display: flex;
+ flex-direction: column;
+ }
+ .data .quote::before {
+ font: inherit;
+ font-size: 2em;
+ content: open-quote;
+ margin-top: -0.5ex;
+ margin-bottom: -1ex;
+ }
+ .bars {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ margin-top: 2rem !important;
+ }
+ #payload-label {
+ margin-top: 0.25rem;
+ display: flex;
+ width: 100%;
+ align-items: center;
+ justify-content: space-between;
+ }
+ .chart {
+ margin-top: 0.5rem;
+ position: relative;
+ display: flex;
+ flex-flow: column nowrap;
+ }
+ .bar {
+ position: relative;
+ width: 100%;
+ height: 1.25rem;
+ border-radius: 4px;
+ overflow: hidden;
+ }
+ .bar::after {
+ content: '';
+ position: absolute;
+ border-radius: inherit;
+ height: 100%;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: calc(calc(var(--value) / var(--max)) * 100%);
+ background: var(--background);
+ }
+ .bars h4 {
+ margin-top: 1rem;
+ font-size: var(--size-400);
+ font-family: var(--font-display);
+ }
+ .bars h5, .bars p {
+ font-weight: 400;
+ font-size: var(--size-300);
+ font-family: var(--font-display);
+ }
+ .bars h5 {
+ padding: 0.25rem 0 0.5rem;
+ }
+ .bars p {
+ margin-top: 2rem !important;
+ margin-bottom: -1rem;
+ }
+ @media (min-width: 52rem) {
+ .data {
+ order: initial;
+ }
+ .container {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/Quote.astro b/smoke/astro.build-main/src/components/landing/Quote.astro
new file mode 100644
index 000000000..3155c9682
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/Quote.astro
@@ -0,0 +1,83 @@
+---
+import Section from './Section.astro';
+const { pad = 1, background, blobs = true, color } = Astro.props;
+---
+
+<Section class="quote" background={background} pad={pad} style={color ? `--color: ${color};` : ''}>
+ {blobs && <div class="glow" />}
+
+ <div class="logo">
+ <slot name="logo" />
+ </div>
+ <blockquote class="container">
+ <p class="head-md"><slot name="quote" /></p>
+ <cite class="head-md"><slot name="cite" /></cite>
+ </blockquote>
+</Section>
+
+<style>
+.quote {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ color: var(--color, var(--color-dusk));
+ padding-top: calc(var(--size-1000) * var(--pad, 1));
+ padding-bottom: calc(var(--size-1000) * var(--pad, 1));
+ z-index: 0;
+}
+
+blockquote {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ font-weight: bold;
+ padding: 4rem 2rem;
+ font-size: inherit;
+ margin: 0 auto;
+ max-width: 85ch;
+}
+cite {
+ margin-top: 2rem;
+ font-style: normal;
+ font-size: var(--size-600);
+}
+.logo > :global(a) {
+ padding: 1rem;
+ display: inline-flex;
+ color: inherit;
+}
+.glow {
+ pointer-events: none;
+ position: absolute;
+ --size: 256px;
+ width: calc(var(--size) * 3);
+ border-radius: 50%;
+ opacity: 0.25;
+ mix-blend-mode: hard-light;
+ height: var(--size);
+ background: var(--blob-color, var(--gradient-pop-4));
+ filter: blur(128px);
+ z-index: -1;
+}
+.glow::before,
+.glow::after {
+ content: "";
+ display: block;
+ position: absolute;
+ --size: 12rem;
+ width: var(--size);
+ height: var(--size);
+ border-radius: 50%;
+ background: var(--blob-color, var(--gradient-pop-4));
+}
+
+@media (min-width: 64rem) {
+ blockquote {
+ padding: 0 8rem;
+ }
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/Section.astro b/smoke/astro.build-main/src/components/landing/Section.astro
new file mode 100644
index 000000000..63506c859
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/Section.astro
@@ -0,0 +1,19 @@
+---
+const { class: className = '', style: _style, pad = 1, ...props } = Astro.props;
+let style;
+if (_style) {
+ style = `${_style}; --pad: ${pad};`
+} else {
+ style = `--pad: ${pad};`
+}
+---
+<section class={className} style={style} {...props}>
+ <slot />
+</section>
+
+<style>
+ section {
+ background: var(--background, var(--color-tan));
+ padding: 0 0 calc(var(--size-1000) * var(--pad, 1)) 0;
+ }
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/Sponsors.astro b/smoke/astro.build-main/src/components/landing/Sponsors.astro
new file mode 100644
index 000000000..c733e0182
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/Sponsors.astro
@@ -0,0 +1,187 @@
+---
+// SEE https://developers.google.com/search/docs/advanced/guidelines/qualify-outbound-links for rel="sponsored" info
+import { Icon } from 'astro-icon';
+import Section from './Section.astro';
+
+const exclusive = [
+ { name: 'netlify', title: 'Netlify', href: 'https://netlify.com', width: '240', height: '64' },
+]
+const gold = [
+ { name: 'vercel', title: 'Vercel', href: 'https://vercel.com', width: '180', height: '48' },
+ { name: 'divriots', title: '‹div›RIOTS', href: 'https://divriots.com', width: '192', height: '48' },
+ { name: 'stackup', title: 'StackUp Digital', href: 'https://stackupdigital.co.uk/', width: '162', height: '40' }
+]
+const users = await fetch(`https://opencollective.com/astrodotbuild/members.json`).then(res => res.json());
+
+const skipTier = new Set(['Platinum Sponsor', 'Gold Sponsor']);
+function isUser(user) {
+ return user.role === 'BACKER' && !skipTier.has(user.tier);
+}
+function getUser(user) {
+ return {
+ name: user.name,
+ image: user.image,
+ initials: user.name.split(' ').slice(0, 2).map(word => word[0].toUpperCase()).join(''),
+ href: user.website ?? user.twitter ?? user.github
+ };
+};
+
+const individuals = users.filter(user => isUser(user)).map(user => getUser(user)).sort(() => 0.5 - Math.random());
+---
+
+<Section class="sponsor-section" pad={2} {...Astro.props}>
+ <div class="container">
+ <h3 class="head-sm title"><slot name="title" /></h3>
+ <ul class="sponsors exclusive">
+ {exclusive.map(sponsor => (
+ <li><a href={sponsor.href} title={sponsor.title}><span><Icon name={`sponsors/${sponsor.name}`} width={sponsor.width} height={sponsor.height} aria-hidden="true" /></span></a></li>
+ ))}
+ </ul>
+ <ul class="sponsors gold">
+ {gold.map(sponsor => (
+ <li><a href={sponsor.href} title={sponsor.title} rel="sponsored"><span><Icon name={`sponsors/${sponsor.name}`} width={sponsor.width} height={sponsor.height} aria-hidden="true" /></span></a></li>
+ ))}
+ </ul>
+ <ul class="sponsors individuals">
+ {individuals.map(user => {
+ const Tag = user.href ? 'a' : 'span';
+ const tagProps = user.href ? { href: user.href, rel: 'sponsored' } : {};
+ return (
+ <li>
+ <Tag class="individual" title={user.name} {...tagProps}>
+ <span data-initials={user.initials}>
+ <img aria-hidden="true" loading="lazy" src={user.image} width="64" height="64" alt={user.name} />
+ </span>
+ </Tag>
+ </li>
+ )
+ })}
+ </ul>
+ <div class="cta"><slot name="cta" /></div>
+ </div>
+</Section>
+
+<style>
+.sponsor-section {
+ padding-top: calc(var(--size-1000) * var(--pad, 1));
+ --background: linear-gradient(to bottom, var(--color-tan) 0%, #E8ADB7 100%);
+}
+.container {
+
+}
+.title {
+ text-align: center;
+ margin-bottom: 4rem;
+}
+.sponsors a {
+ display: inline-block;
+ position: relative;
+ z-index: 1;
+ color: black;
+}
+.sponsors a > span {
+ display: inline-block;
+}
+.sponsors a > span > svg {
+ pointer-events: none;
+}
+.sponsors + .sponsors {
+ margin-top: 2.5rem;
+}
+.cta {
+ font-family: var(--font-display);
+ text-align: center;
+ color: var(--color-dusk);
+ margin-top: 2rem;
+}
+ul.individuals {
+ list-style: none;
+ display: flex;
+ flex-flow: row wrap;
+ align-items: center;
+ justify-content: center;
+ gap: 0.5rem;
+ max-width: 40rem;
+}
+.individuals > li {
+ box-sizing: border-box;
+ border: 0.25rem solid rgba(255, 255, 255, 0);
+}
+.individual {
+ position: relative;
+ --size: 3rem;
+ width: var(--size);
+ height: var(--size);
+ border-radius: 50%;
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+}
+.individual img {
+ pointer-events: none;
+ position: relative;
+ width: var(--size);
+ height: var(--size);
+ aspect-ratio: 1 / 1;
+ background: white;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+}
+.individual span::before {
+ content: "";
+ content: attr(data-initials);
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 0;
+ background: var(--color-dusk);
+ color: white;
+ font-family: var(--font-display);
+ font-size: 1.25rem;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+}
+.individual img:not([src]) {
+ display: none;
+}
+
+.sponsors {
+ margin: 0 auto;
+ padding: 0;
+ max-width: max-content;
+ list-style: none;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-flow: row wrap;
+ gap: 1.5rem;
+ color: var(--color-dusk);
+}
+
+@media (min-width: 52rem) {
+ .sponsors {
+ grid-auto-flow: column;
+ max-width: max-content;
+ margin: 0 auto;
+ gap: 2rem;
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
+ }
+}
+@media (min-width: 64rem) {
+ .sponsors {
+ gap: 4rem;
+ }
+}
+.sponsors > li {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/Title.astro b/smoke/astro.build-main/src/components/landing/Title.astro
new file mode 100644
index 000000000..8cc5aa60a
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/Title.astro
@@ -0,0 +1,30 @@
+---
+const { id } = Astro.props;
+
+if (!id) {
+ throw new Error(`<Title> requires an "id" prop! Recieved ${typeof id}`);
+}
+---
+
+<a href={`#${id}`} id={id}>
+ <slot />
+</a>
+
+<style>
+a {
+ font: inherit;
+ color: inherit;
+ text-decoration: none;
+}
+a::after {
+ content: "#";
+ color: inherit;
+ opacity: 0;
+ transition: opacity 200ms cubic-bezier(0.23, 1, 0.320, 1);
+}
+a:active::after,
+a:hover::after,
+a:focus::after {
+ opacity: 0.6;
+}
+</style>
diff --git a/smoke/astro.build-main/src/components/landing/Trusted.astro b/smoke/astro.build-main/src/components/landing/Trusted.astro
new file mode 100644
index 000000000..1fb5a7586
--- /dev/null
+++ b/smoke/astro.build-main/src/components/landing/Trusted.astro
@@ -0,0 +1,69 @@
+---
+import Panel from '../Panel.astro'
+import Section from './Section.astro'
+---
+
+<Section id="trusted">
+ <Panel background="var(--color-dawn)" offset={4}>
+ <Fragment slot="title">
+ <h3 class="head-sm"><slot name="title" /></h3>
+ </Fragment>
+
+ <ul class="logos">
+ <slot />
+ </ul>
+ </Panel>
+</Section>
+
+<style>
+#trusted {
+ background: linear-gradient(to bottom, #D8C5EF 0%, #E5DAEE 100%);
+ padding-top: 0;
+}
+.logos {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ list-style: none;
+ display: grid;
+ grid-template-columns: repeat(1, minmax(0, 1fr));
+ gap: 1.5rem;
+ color: var(--color-dusk);
+}
+@media (min-width: 32rem) {
+ .logos {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+ * :global(li:last-child) {
+ grid-column: auto / span 2;
+ }
+}
+@media (min-width: 64rem) {
+ .logos {
+ grid-auto-flow: column;
+ max-width: max-content;
+ margin: 0 auto;
+ gap: 3rem;
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
+ }
+ * :global(li:last-child) {
+ grid-column: auto / auto;
+ }
+
+ .logos :global(svg) {
+ height: 2.25rem;
+ }
+}
+@media (min-width: 82rem) {
+ .logos :global(svg) {
+ height: 2.5rem;
+ }
+}
+.logos > :global(li) {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ width: 100%;
+}
+</style>
diff --git a/smoke/astro.build-main/src/config.ts b/smoke/astro.build-main/src/config.ts
new file mode 100644
index 000000000..4c875c8e2
--- /dev/null
+++ b/smoke/astro.build-main/src/config.ts
@@ -0,0 +1,17 @@
+export const social = [
+ {
+ icon: 'mdi:github',
+ title: 'Github',
+ href: 'https://github.com/withastro/astro'
+ },
+ {
+ icon: 'fa-brands:discord',
+ title: 'Discord',
+ href: 'https://astro.build/chat'
+ },
+ {
+ icon: 'mdi:twitter',
+ title: '@astrodotbuild',
+ href: 'https://twitter.com/astrodotbuild'
+ },
+]
diff --git a/smoke/astro.build-main/src/data/contributors.json b/smoke/astro.build-main/src/data/contributors.json
new file mode 100644
index 000000000..287cfe171
--- /dev/null
+++ b/smoke/astro.build-main/src/data/contributors.json
@@ -0,0 +1 @@
+{"staff":[{"login":"jonathantneal","id":188426,"node_id":"MDQ6VXNlcjE4ODQyNg==","avatar_url":"https://avatars.githubusercontent.com/u/188426?u=5029ae346892ad6d2e3893c29edeeb8efff623b0&v=4","gravatar_id":"","url":"https://api.github.com/users/jonathantneal","html_url":"https://github.com/jonathantneal","followers_url":"https://api.github.com/users/jonathantneal/followers","following_url":"https://api.github.com/users/jonathantneal/following{/other_user}","gists_url":"https://api.github.com/users/jonathantneal/gists{/gist_id}","starred_url":"https://api.github.com/users/jonathantneal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonathantneal/subscriptions","organizations_url":"https://api.github.com/users/jonathantneal/orgs","repos_url":"https://api.github.com/users/jonathantneal/repos","events_url":"https://api.github.com/users/jonathantneal/events{/privacy}","received_events_url":"https://api.github.com/users/jonathantneal/received_events","type":"User","site_admin":false},{"login":"matthewp","id":361671,"node_id":"MDQ6VXNlcjM2MTY3MQ==","avatar_url":"https://avatars.githubusercontent.com/u/361671?u=c680fb6956a57c3a1d03f06c7f8f03cc7daed958&v=4","gravatar_id":"","url":"https://api.github.com/users/matthewp","html_url":"https://github.com/matthewp","followers_url":"https://api.github.com/users/matthewp/followers","following_url":"https://api.github.com/users/matthewp/following{/other_user}","gists_url":"https://api.github.com/users/matthewp/gists{/gist_id}","starred_url":"https://api.github.com/users/matthewp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matthewp/subscriptions","organizations_url":"https://api.github.com/users/matthewp/orgs","repos_url":"https://api.github.com/users/matthewp/repos","events_url":"https://api.github.com/users/matthewp/events{/privacy}","received_events_url":"https://api.github.com/users/matthewp/received_events","type":"User","site_admin":false},{"login":"FredKSchott","id":622227,"node_id":"MDQ6VXNlcjYyMjIyNw==","avatar_url":"https://avatars.githubusercontent.com/u/622227?u=39d62cec7d70bd7ffa9162b8e4f0e616773a1c4e&v=4","gravatar_id":"","url":"https://api.github.com/users/FredKSchott","html_url":"https://github.com/FredKSchott","followers_url":"https://api.github.com/users/FredKSchott/followers","following_url":"https://api.github.com/users/FredKSchott/following{/other_user}","gists_url":"https://api.github.com/users/FredKSchott/gists{/gist_id}","starred_url":"https://api.github.com/users/FredKSchott/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FredKSchott/subscriptions","organizations_url":"https://api.github.com/users/FredKSchott/orgs","repos_url":"https://api.github.com/users/FredKSchott/repos","events_url":"https://api.github.com/users/FredKSchott/events{/privacy}","received_events_url":"https://api.github.com/users/FredKSchott/received_events","type":"User","site_admin":false},{"login":"natemoo-re","id":7118177,"node_id":"MDQ6VXNlcjcxMTgxNzc=","avatar_url":"https://avatars.githubusercontent.com/u/7118177?u=bb2518ed3d5b34846e6e778845e42b9564c15f5a&v=4","gravatar_id":"","url":"https://api.github.com/users/natemoo-re","html_url":"https://github.com/natemoo-re","followers_url":"https://api.github.com/users/natemoo-re/followers","following_url":"https://api.github.com/users/natemoo-re/following{/other_user}","gists_url":"https://api.github.com/users/natemoo-re/gists{/gist_id}","starred_url":"https://api.github.com/users/natemoo-re/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/natemoo-re/subscriptions","organizations_url":"https://api.github.com/users/natemoo-re/orgs","repos_url":"https://api.github.com/users/natemoo-re/repos","events_url":"https://api.github.com/users/natemoo-re/events{/privacy}","received_events_url":"https://api.github.com/users/natemoo-re/received_events","type":"User","site_admin":false}],"l3":[{"login":"jasikpark","id":10626596,"node_id":"MDQ6VXNlcjEwNjI2NTk2","avatar_url":"https://avatars.githubusercontent.com/u/10626596?u=3999fca039ad975665b73dd4636deb5f60f8774e&v=4","gravatar_id":"","url":"https://api.github.com/users/jasikpark","html_url":"https://github.com/jasikpark","followers_url":"https://api.github.com/users/jasikpark/followers","following_url":"https://api.github.com/users/jasikpark/following{/other_user}","gists_url":"https://api.github.com/users/jasikpark/gists{/gist_id}","starred_url":"https://api.github.com/users/jasikpark/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasikpark/subscriptions","organizations_url":"https://api.github.com/users/jasikpark/orgs","repos_url":"https://api.github.com/users/jasikpark/repos","events_url":"https://api.github.com/users/jasikpark/events{/privacy}","received_events_url":"https://api.github.com/users/jasikpark/received_events","type":"User","site_admin":false}],"l2":[{"login":"drwpow","id":1369770,"node_id":"MDQ6VXNlcjEzNjk3NzA=","avatar_url":"https://avatars.githubusercontent.com/u/1369770?u=cd06c5ebc19ada3e4001f63594c0b0b688f51749&v=4","gravatar_id":"","url":"https://api.github.com/users/drwpow","html_url":"https://github.com/drwpow","followers_url":"https://api.github.com/users/drwpow/followers","following_url":"https://api.github.com/users/drwpow/following{/other_user}","gists_url":"https://api.github.com/users/drwpow/gists{/gist_id}","starred_url":"https://api.github.com/users/drwpow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drwpow/subscriptions","organizations_url":"https://api.github.com/users/drwpow/orgs","repos_url":"https://api.github.com/users/drwpow/repos","events_url":"https://api.github.com/users/drwpow/events{/privacy}","received_events_url":"https://api.github.com/users/drwpow/received_events","type":"User","site_admin":false},{"login":"Princesseuh","id":3019731,"node_id":"MDQ6VXNlcjMwMTk3MzE=","avatar_url":"https://avatars.githubusercontent.com/u/3019731?u=04567b942bb08706dd513f34f4cd7e90d8ada8d4&v=4","gravatar_id":"","url":"https://api.github.com/users/Princesseuh","html_url":"https://github.com/Princesseuh","followers_url":"https://api.github.com/users/Princesseuh/followers","following_url":"https://api.github.com/users/Princesseuh/following{/other_user}","gists_url":"https://api.github.com/users/Princesseuh/gists{/gist_id}","starred_url":"https://api.github.com/users/Princesseuh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Princesseuh/subscriptions","organizations_url":"https://api.github.com/users/Princesseuh/orgs","repos_url":"https://api.github.com/users/Princesseuh/repos","events_url":"https://api.github.com/users/Princesseuh/events{/privacy}","received_events_url":"https://api.github.com/users/Princesseuh/received_events","type":"User","site_admin":false},{"login":"sarah11918","id":5098874,"node_id":"MDQ6VXNlcjUwOTg4NzQ=","avatar_url":"https://avatars.githubusercontent.com/u/5098874?u=ccca39db686ffcaaaf629ccfcc4bc0ed5b9bfdf8&v=4","gravatar_id":"","url":"https://api.github.com/users/sarah11918","html_url":"https://github.com/sarah11918","followers_url":"https://api.github.com/users/sarah11918/followers","following_url":"https://api.github.com/users/sarah11918/following{/other_user}","gists_url":"https://api.github.com/users/sarah11918/gists{/gist_id}","starred_url":"https://api.github.com/users/sarah11918/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sarah11918/subscriptions","organizations_url":"https://api.github.com/users/sarah11918/orgs","repos_url":"https://api.github.com/users/sarah11918/repos","events_url":"https://api.github.com/users/sarah11918/events{/privacy}","received_events_url":"https://api.github.com/users/sarah11918/received_events","type":"User","site_admin":false},{"login":"4lch4","id":6931731,"node_id":"MDQ6VXNlcjY5MzE3MzE=","avatar_url":"https://avatars.githubusercontent.com/u/6931731?u=14e464d62116a196492e624d18886e920b333c74&v=4","gravatar_id":"","url":"https://api.github.com/users/4lch4","html_url":"https://github.com/4lch4","followers_url":"https://api.github.com/users/4lch4/followers","following_url":"https://api.github.com/users/4lch4/following{/other_user}","gists_url":"https://api.github.com/users/4lch4/gists{/gist_id}","starred_url":"https://api.github.com/users/4lch4/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/4lch4/subscriptions","organizations_url":"https://api.github.com/users/4lch4/orgs","repos_url":"https://api.github.com/users/4lch4/repos","events_url":"https://api.github.com/users/4lch4/events{/privacy}","received_events_url":"https://api.github.com/users/4lch4/received_events","type":"User","site_admin":false},{"login":"Hanawa02","id":11237366,"node_id":"MDQ6VXNlcjExMjM3MzY2","avatar_url":"https://avatars.githubusercontent.com/u/11237366?u=6569a250d46a7f49d051e24dfd1346fa879428ee&v=4","gravatar_id":"","url":"https://api.github.com/users/Hanawa02","html_url":"https://github.com/Hanawa02","followers_url":"https://api.github.com/users/Hanawa02/followers","following_url":"https://api.github.com/users/Hanawa02/following{/other_user}","gists_url":"https://api.github.com/users/Hanawa02/gists{/gist_id}","starred_url":"https://api.github.com/users/Hanawa02/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Hanawa02/subscriptions","organizations_url":"https://api.github.com/users/Hanawa02/orgs","repos_url":"https://api.github.com/users/Hanawa02/repos","events_url":"https://api.github.com/users/Hanawa02/events{/privacy}","received_events_url":"https://api.github.com/users/Hanawa02/received_events","type":"User","site_admin":false},{"login":"antonyfaris","id":11766500,"node_id":"MDQ6VXNlcjExNzY2NTAw","avatar_url":"https://avatars.githubusercontent.com/u/11766500?u=49d4dcbbd0122ba39bbea50914caa7cd229a1f69&v=4","gravatar_id":"","url":"https://api.github.com/users/antonyfaris","html_url":"https://github.com/antonyfaris","followers_url":"https://api.github.com/users/antonyfaris/followers","following_url":"https://api.github.com/users/antonyfaris/following{/other_user}","gists_url":"https://api.github.com/users/antonyfaris/gists{/gist_id}","starred_url":"https://api.github.com/users/antonyfaris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antonyfaris/subscriptions","organizations_url":"https://api.github.com/users/antonyfaris/orgs","repos_url":"https://api.github.com/users/antonyfaris/repos","events_url":"https://api.github.com/users/antonyfaris/events{/privacy}","received_events_url":"https://api.github.com/users/antonyfaris/received_events","type":"User","site_admin":false},{"login":"itskitto","id":12174733,"node_id":"MDQ6VXNlcjEyMTc0NzMz","avatar_url":"https://avatars.githubusercontent.com/u/12174733?u=1e2b88ee2daa8135eded6bb241a1e66dbd8da94f&v=4","gravatar_id":"","url":"https://api.github.com/users/itskitto","html_url":"https://github.com/itskitto","followers_url":"https://api.github.com/users/itskitto/followers","following_url":"https://api.github.com/users/itskitto/following{/other_user}","gists_url":"https://api.github.com/users/itskitto/gists{/gist_id}","starred_url":"https://api.github.com/users/itskitto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/itskitto/subscriptions","organizations_url":"https://api.github.com/users/itskitto/orgs","repos_url":"https://api.github.com/users/itskitto/repos","events_url":"https://api.github.com/users/itskitto/events{/privacy}","received_events_url":"https://api.github.com/users/itskitto/received_events","type":"User","site_admin":false},{"login":"tony-sull","id":15836226,"node_id":"MDQ6VXNlcjE1ODM2MjI2","avatar_url":"https://avatars.githubusercontent.com/u/15836226?u=e0c9a5ae2f3029bd3855984c10fe43b142f85662&v=4","gravatar_id":"","url":"https://api.github.com/users/tony-sull","html_url":"https://github.com/tony-sull","followers_url":"https://api.github.com/users/tony-sull/followers","following_url":"https://api.github.com/users/tony-sull/following{/other_user}","gists_url":"https://api.github.com/users/tony-sull/gists{/gist_id}","starred_url":"https://api.github.com/users/tony-sull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tony-sull/subscriptions","organizations_url":"https://api.github.com/users/tony-sull/orgs","repos_url":"https://api.github.com/users/tony-sull/repos","events_url":"https://api.github.com/users/tony-sull/events{/privacy}","received_events_url":"https://api.github.com/users/tony-sull/received_events","type":"User","site_admin":false},{"login":"okikio","id":17222836,"node_id":"MDQ6VXNlcjE3MjIyODM2","avatar_url":"https://avatars.githubusercontent.com/u/17222836?u=b696fe47b2581f8718ce0f4b7459e4683fd3f4fd&v=4","gravatar_id":"","url":"https://api.github.com/users/okikio","html_url":"https://github.com/okikio","followers_url":"https://api.github.com/users/okikio/followers","following_url":"https://api.github.com/users/okikio/following{/other_user}","gists_url":"https://api.github.com/users/okikio/gists{/gist_id}","starred_url":"https://api.github.com/users/okikio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/okikio/subscriptions","organizations_url":"https://api.github.com/users/okikio/orgs","repos_url":"https://api.github.com/users/okikio/repos","events_url":"https://api.github.com/users/okikio/events{/privacy}","received_events_url":"https://api.github.com/users/okikio/received_events","type":"User","site_admin":false},{"login":"aFuzzyBear","id":28299972,"node_id":"MDQ6VXNlcjI4Mjk5OTcy","avatar_url":"https://avatars.githubusercontent.com/u/28299972?u=5fe8dc6332303d008c096cc64c79a2cb7bd0c369&v=4","gravatar_id":"","url":"https://api.github.com/users/aFuzzyBear","html_url":"https://github.com/aFuzzyBear","followers_url":"https://api.github.com/users/aFuzzyBear/followers","following_url":"https://api.github.com/users/aFuzzyBear/following{/other_user}","gists_url":"https://api.github.com/users/aFuzzyBear/gists{/gist_id}","starred_url":"https://api.github.com/users/aFuzzyBear/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aFuzzyBear/subscriptions","organizations_url":"https://api.github.com/users/aFuzzyBear/orgs","repos_url":"https://api.github.com/users/aFuzzyBear/repos","events_url":"https://api.github.com/users/aFuzzyBear/events{/privacy}","received_events_url":"https://api.github.com/users/aFuzzyBear/received_events","type":"User","site_admin":false},{"login":"MarcusOtter","id":35617441,"node_id":"MDQ6VXNlcjM1NjE3NDQx","avatar_url":"https://avatars.githubusercontent.com/u/35617441?u=1cb3a186ccc75d24e43bfcc54c0d27f60a26dc5e&v=4","gravatar_id":"","url":"https://api.github.com/users/MarcusOtter","html_url":"https://github.com/MarcusOtter","followers_url":"https://api.github.com/users/MarcusOtter/followers","following_url":"https://api.github.com/users/MarcusOtter/following{/other_user}","gists_url":"https://api.github.com/users/MarcusOtter/gists{/gist_id}","starred_url":"https://api.github.com/users/MarcusOtter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarcusOtter/subscriptions","organizations_url":"https://api.github.com/users/MarcusOtter/orgs","repos_url":"https://api.github.com/users/MarcusOtter/repos","events_url":"https://api.github.com/users/MarcusOtter/events{/privacy}","received_events_url":"https://api.github.com/users/MarcusOtter/received_events","type":"User","site_admin":false}],"l1":[{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","site_admin":false,"contributions":145},{"login":"AsyncBanana","id":58297401,"node_id":"MDQ6VXNlcjU4Mjk3NDAx","avatar_url":"https://avatars.githubusercontent.com/u/58297401?v=4","gravatar_id":"","url":"https://api.github.com/users/AsyncBanana","html_url":"https://github.com/AsyncBanana","followers_url":"https://api.github.com/users/AsyncBanana/followers","following_url":"https://api.github.com/users/AsyncBanana/following{/other_user}","gists_url":"https://api.github.com/users/AsyncBanana/gists{/gist_id}","starred_url":"https://api.github.com/users/AsyncBanana/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AsyncBanana/subscriptions","organizations_url":"https://api.github.com/users/AsyncBanana/orgs","repos_url":"https://api.github.com/users/AsyncBanana/repos","events_url":"https://api.github.com/users/AsyncBanana/events{/privacy}","received_events_url":"https://api.github.com/users/AsyncBanana/received_events","type":"User","site_admin":false,"contributions":23},{"login":"duncanhealy","id":2788605,"node_id":"MDQ6VXNlcjI3ODg2MDU=","avatar_url":"https://avatars.githubusercontent.com/u/2788605?v=4","gravatar_id":"","url":"https://api.github.com/users/duncanhealy","html_url":"https://github.com/duncanhealy","followers_url":"https://api.github.com/users/duncanhealy/followers","following_url":"https://api.github.com/users/duncanhealy/following{/other_user}","gists_url":"https://api.github.com/users/duncanhealy/gists{/gist_id}","starred_url":"https://api.github.com/users/duncanhealy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/duncanhealy/subscriptions","organizations_url":"https://api.github.com/users/duncanhealy/orgs","repos_url":"https://api.github.com/users/duncanhealy/repos","events_url":"https://api.github.com/users/duncanhealy/events{/privacy}","received_events_url":"https://api.github.com/users/duncanhealy/received_events","type":"User","site_admin":false,"contributions":14},{"login":"kyosuke","id":13069,"node_id":"MDQ6VXNlcjEzMDY5","avatar_url":"https://avatars.githubusercontent.com/u/13069?v=4","gravatar_id":"","url":"https://api.github.com/users/kyosuke","html_url":"https://github.com/kyosuke","followers_url":"https://api.github.com/users/kyosuke/followers","following_url":"https://api.github.com/users/kyosuke/following{/other_user}","gists_url":"https://api.github.com/users/kyosuke/gists{/gist_id}","starred_url":"https://api.github.com/users/kyosuke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kyosuke/subscriptions","organizations_url":"https://api.github.com/users/kyosuke/orgs","repos_url":"https://api.github.com/users/kyosuke/repos","events_url":"https://api.github.com/users/kyosuke/events{/privacy}","received_events_url":"https://api.github.com/users/kyosuke/received_events","type":"User","site_admin":false,"contributions":8},{"login":"Mikkel-T","id":71938724,"node_id":"MDQ6VXNlcjcxOTM4NzI0","avatar_url":"https://avatars.githubusercontent.com/u/71938724?v=4","gravatar_id":"","url":"https://api.github.com/users/Mikkel-T","html_url":"https://github.com/Mikkel-T","followers_url":"https://api.github.com/users/Mikkel-T/followers","following_url":"https://api.github.com/users/Mikkel-T/following{/other_user}","gists_url":"https://api.github.com/users/Mikkel-T/gists{/gist_id}","starred_url":"https://api.github.com/users/Mikkel-T/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Mikkel-T/subscriptions","organizations_url":"https://api.github.com/users/Mikkel-T/orgs","repos_url":"https://api.github.com/users/Mikkel-T/repos","events_url":"https://api.github.com/users/Mikkel-T/events{/privacy}","received_events_url":"https://api.github.com/users/Mikkel-T/received_events","type":"User","site_admin":false,"contributions":8},{"login":"RafidMuhymin","id":63650415,"node_id":"MDQ6VXNlcjYzNjUwNDE1","avatar_url":"https://avatars.githubusercontent.com/u/63650415?v=4","gravatar_id":"","url":"https://api.github.com/users/RafidMuhymin","html_url":"https://github.com/RafidMuhymin","followers_url":"https://api.github.com/users/RafidMuhymin/followers","following_url":"https://api.github.com/users/RafidMuhymin/following{/other_user}","gists_url":"https://api.github.com/users/RafidMuhymin/gists{/gist_id}","starred_url":"https://api.github.com/users/RafidMuhymin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RafidMuhymin/subscriptions","organizations_url":"https://api.github.com/users/RafidMuhymin/orgs","repos_url":"https://api.github.com/users/RafidMuhymin/repos","events_url":"https://api.github.com/users/RafidMuhymin/events{/privacy}","received_events_url":"https://api.github.com/users/RafidMuhymin/received_events","type":"User","site_admin":false,"contributions":8},{"login":"weakish","id":114114,"node_id":"MDQ6VXNlcjExNDExNA==","avatar_url":"https://avatars.githubusercontent.com/u/114114?v=4","gravatar_id":"","url":"https://api.github.com/users/weakish","html_url":"https://github.com/weakish","followers_url":"https://api.github.com/users/weakish/followers","following_url":"https://api.github.com/users/weakish/following{/other_user}","gists_url":"https://api.github.com/users/weakish/gists{/gist_id}","starred_url":"https://api.github.com/users/weakish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/weakish/subscriptions","organizations_url":"https://api.github.com/users/weakish/orgs","repos_url":"https://api.github.com/users/weakish/repos","events_url":"https://api.github.com/users/weakish/events{/privacy}","received_events_url":"https://api.github.com/users/weakish/received_events","type":"User","site_admin":false,"contributions":7},{"login":"markteekman","id":3909046,"node_id":"MDQ6VXNlcjM5MDkwNDY=","avatar_url":"https://avatars.githubusercontent.com/u/3909046?v=4","gravatar_id":"","url":"https://api.github.com/users/markteekman","html_url":"https://github.com/markteekman","followers_url":"https://api.github.com/users/markteekman/followers","following_url":"https://api.github.com/users/markteekman/following{/other_user}","gists_url":"https://api.github.com/users/markteekman/gists{/gist_id}","starred_url":"https://api.github.com/users/markteekman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/markteekman/subscriptions","organizations_url":"https://api.github.com/users/markteekman/orgs","repos_url":"https://api.github.com/users/markteekman/repos","events_url":"https://api.github.com/users/markteekman/events{/privacy}","received_events_url":"https://api.github.com/users/markteekman/received_events","type":"User","site_admin":false,"contributions":5},{"login":"mundry","id":1453314,"node_id":"MDQ6VXNlcjE0NTMzMTQ=","avatar_url":"https://avatars.githubusercontent.com/u/1453314?v=4","gravatar_id":"","url":"https://api.github.com/users/mundry","html_url":"https://github.com/mundry","followers_url":"https://api.github.com/users/mundry/followers","following_url":"https://api.github.com/users/mundry/following{/other_user}","gists_url":"https://api.github.com/users/mundry/gists{/gist_id}","starred_url":"https://api.github.com/users/mundry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mundry/subscriptions","organizations_url":"https://api.github.com/users/mundry/orgs","repos_url":"https://api.github.com/users/mundry/repos","events_url":"https://api.github.com/users/mundry/events{/privacy}","received_events_url":"https://api.github.com/users/mundry/received_events","type":"User","site_admin":false,"contributions":5},{"login":"Igloczek","id":5119280,"node_id":"MDQ6VXNlcjUxMTkyODA=","avatar_url":"https://avatars.githubusercontent.com/u/5119280?v=4","gravatar_id":"","url":"https://api.github.com/users/Igloczek","html_url":"https://github.com/Igloczek","followers_url":"https://api.github.com/users/Igloczek/followers","following_url":"https://api.github.com/users/Igloczek/following{/other_user}","gists_url":"https://api.github.com/users/Igloczek/gists{/gist_id}","starred_url":"https://api.github.com/users/Igloczek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Igloczek/subscriptions","organizations_url":"https://api.github.com/users/Igloczek/orgs","repos_url":"https://api.github.com/users/Igloczek/repos","events_url":"https://api.github.com/users/Igloczek/events{/privacy}","received_events_url":"https://api.github.com/users/Igloczek/received_events","type":"User","site_admin":false,"contributions":5},{"login":"ElianCodes","id":15145918,"node_id":"MDQ6VXNlcjE1MTQ1OTE4","avatar_url":"https://avatars.githubusercontent.com/u/15145918?v=4","gravatar_id":"","url":"https://api.github.com/users/ElianCodes","html_url":"https://github.com/ElianCodes","followers_url":"https://api.github.com/users/ElianCodes/followers","following_url":"https://api.github.com/users/ElianCodes/following{/other_user}","gists_url":"https://api.github.com/users/ElianCodes/gists{/gist_id}","starred_url":"https://api.github.com/users/ElianCodes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ElianCodes/subscriptions","organizations_url":"https://api.github.com/users/ElianCodes/orgs","repos_url":"https://api.github.com/users/ElianCodes/repos","events_url":"https://api.github.com/users/ElianCodes/events{/privacy}","received_events_url":"https://api.github.com/users/ElianCodes/received_events","type":"User","site_admin":false,"contributions":5},{"login":"X7md","id":54203033,"node_id":"MDQ6VXNlcjU0MjAzMDMz","avatar_url":"https://avatars.githubusercontent.com/u/54203033?v=4","gravatar_id":"","url":"https://api.github.com/users/X7md","html_url":"https://github.com/X7md","followers_url":"https://api.github.com/users/X7md/followers","following_url":"https://api.github.com/users/X7md/following{/other_user}","gists_url":"https://api.github.com/users/X7md/gists{/gist_id}","starred_url":"https://api.github.com/users/X7md/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/X7md/subscriptions","organizations_url":"https://api.github.com/users/X7md/orgs","repos_url":"https://api.github.com/users/X7md/repos","events_url":"https://api.github.com/users/X7md/events{/privacy}","received_events_url":"https://api.github.com/users/X7md/received_events","type":"User","site_admin":false,"contributions":5},{"login":"boehs","id":51836263,"node_id":"MDQ6VXNlcjUxODM2MjYz","avatar_url":"https://avatars.githubusercontent.com/u/51836263?v=4","gravatar_id":"","url":"https://api.github.com/users/boehs","html_url":"https://github.com/boehs","followers_url":"https://api.github.com/users/boehs/followers","following_url":"https://api.github.com/users/boehs/following{/other_user}","gists_url":"https://api.github.com/users/boehs/gists{/gist_id}","starred_url":"https://api.github.com/users/boehs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/boehs/subscriptions","organizations_url":"https://api.github.com/users/boehs/orgs","repos_url":"https://api.github.com/users/boehs/repos","events_url":"https://api.github.com/users/boehs/events{/privacy}","received_events_url":"https://api.github.com/users/boehs/received_events","type":"User","site_admin":false,"contributions":4},{"login":"IanVS","id":4616705,"node_id":"MDQ6VXNlcjQ2MTY3MDU=","avatar_url":"https://avatars.githubusercontent.com/u/4616705?v=4","gravatar_id":"","url":"https://api.github.com/users/IanVS","html_url":"https://github.com/IanVS","followers_url":"https://api.github.com/users/IanVS/followers","following_url":"https://api.github.com/users/IanVS/following{/other_user}","gists_url":"https://api.github.com/users/IanVS/gists{/gist_id}","starred_url":"https://api.github.com/users/IanVS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IanVS/subscriptions","organizations_url":"https://api.github.com/users/IanVS/orgs","repos_url":"https://api.github.com/users/IanVS/repos","events_url":"https://api.github.com/users/IanVS/events{/privacy}","received_events_url":"https://api.github.com/users/IanVS/received_events","type":"User","site_admin":false,"contributions":4},{"login":"kevinkassimo","id":15007517,"node_id":"MDQ6VXNlcjE1MDA3NTE3","avatar_url":"https://avatars.githubusercontent.com/u/15007517?v=4","gravatar_id":"","url":"https://api.github.com/users/kevinkassimo","html_url":"https://github.com/kevinkassimo","followers_url":"https://api.github.com/users/kevinkassimo/followers","following_url":"https://api.github.com/users/kevinkassimo/following{/other_user}","gists_url":"https://api.github.com/users/kevinkassimo/gists{/gist_id}","starred_url":"https://api.github.com/users/kevinkassimo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kevinkassimo/subscriptions","organizations_url":"https://api.github.com/users/kevinkassimo/orgs","repos_url":"https://api.github.com/users/kevinkassimo/repos","events_url":"https://api.github.com/users/kevinkassimo/events{/privacy}","received_events_url":"https://api.github.com/users/kevinkassimo/received_events","type":"User","site_admin":false,"contributions":4},{"login":"mmarkelov","id":22371328,"node_id":"MDQ6VXNlcjIyMzcxMzI4","avatar_url":"https://avatars.githubusercontent.com/u/22371328?v=4","gravatar_id":"","url":"https://api.github.com/users/mmarkelov","html_url":"https://github.com/mmarkelov","followers_url":"https://api.github.com/users/mmarkelov/followers","following_url":"https://api.github.com/users/mmarkelov/following{/other_user}","gists_url":"https://api.github.com/users/mmarkelov/gists{/gist_id}","starred_url":"https://api.github.com/users/mmarkelov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mmarkelov/subscriptions","organizations_url":"https://api.github.com/users/mmarkelov/orgs","repos_url":"https://api.github.com/users/mmarkelov/repos","events_url":"https://api.github.com/users/mmarkelov/events{/privacy}","received_events_url":"https://api.github.com/users/mmarkelov/received_events","type":"User","site_admin":false,"contributions":4},{"login":"tony-navillus","id":60468564,"node_id":"MDQ6VXNlcjYwNDY4NTY0","avatar_url":"https://avatars.githubusercontent.com/u/60468564?v=4","gravatar_id":"","url":"https://api.github.com/users/tony-navillus","html_url":"https://github.com/tony-navillus","followers_url":"https://api.github.com/users/tony-navillus/followers","following_url":"https://api.github.com/users/tony-navillus/following{/other_user}","gists_url":"https://api.github.com/users/tony-navillus/gists{/gist_id}","starred_url":"https://api.github.com/users/tony-navillus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tony-navillus/subscriptions","organizations_url":"https://api.github.com/users/tony-navillus/orgs","repos_url":"https://api.github.com/users/tony-navillus/repos","events_url":"https://api.github.com/users/tony-navillus/events{/privacy}","received_events_url":"https://api.github.com/users/tony-navillus/received_events","type":"User","site_admin":false,"contributions":4},{"login":"ymcheung","id":4409977,"node_id":"MDQ6VXNlcjQ0MDk5Nzc=","avatar_url":"https://avatars.githubusercontent.com/u/4409977?v=4","gravatar_id":"","url":"https://api.github.com/users/ymcheung","html_url":"https://github.com/ymcheung","followers_url":"https://api.github.com/users/ymcheung/followers","following_url":"https://api.github.com/users/ymcheung/following{/other_user}","gists_url":"https://api.github.com/users/ymcheung/gists{/gist_id}","starred_url":"https://api.github.com/users/ymcheung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ymcheung/subscriptions","organizations_url":"https://api.github.com/users/ymcheung/orgs","repos_url":"https://api.github.com/users/ymcheung/repos","events_url":"https://api.github.com/users/ymcheung/events{/privacy}","received_events_url":"https://api.github.com/users/ymcheung/received_events","type":"User","site_admin":false,"contributions":4},{"login":"togami2864","id":62130798,"node_id":"MDQ6VXNlcjYyMTMwNzk4","avatar_url":"https://avatars.githubusercontent.com/u/62130798?v=4","gravatar_id":"","url":"https://api.github.com/users/togami2864","html_url":"https://github.com/togami2864","followers_url":"https://api.github.com/users/togami2864/followers","following_url":"https://api.github.com/users/togami2864/following{/other_user}","gists_url":"https://api.github.com/users/togami2864/gists{/gist_id}","starred_url":"https://api.github.com/users/togami2864/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/togami2864/subscriptions","organizations_url":"https://api.github.com/users/togami2864/orgs","repos_url":"https://api.github.com/users/togami2864/repos","events_url":"https://api.github.com/users/togami2864/events{/privacy}","received_events_url":"https://api.github.com/users/togami2864/received_events","type":"User","site_admin":false,"contributions":4},{"login":"borisv","id":403148,"node_id":"MDQ6VXNlcjQwMzE0OA==","avatar_url":"https://avatars.githubusercontent.com/u/403148?v=4","gravatar_id":"","url":"https://api.github.com/users/borisv","html_url":"https://github.com/borisv","followers_url":"https://api.github.com/users/borisv/followers","following_url":"https://api.github.com/users/borisv/following{/other_user}","gists_url":"https://api.github.com/users/borisv/gists{/gist_id}","starred_url":"https://api.github.com/users/borisv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/borisv/subscriptions","organizations_url":"https://api.github.com/users/borisv/orgs","repos_url":"https://api.github.com/users/borisv/repos","events_url":"https://api.github.com/users/borisv/events{/privacy}","received_events_url":"https://api.github.com/users/borisv/received_events","type":"User","site_admin":false,"contributions":4},{"login":"JuanM04","id":16712703,"node_id":"MDQ6VXNlcjE2NzEyNzAz","avatar_url":"https://avatars.githubusercontent.com/u/16712703?v=4","gravatar_id":"","url":"https://api.github.com/users/JuanM04","html_url":"https://github.com/JuanM04","followers_url":"https://api.github.com/users/JuanM04/followers","following_url":"https://api.github.com/users/JuanM04/following{/other_user}","gists_url":"https://api.github.com/users/JuanM04/gists{/gist_id}","starred_url":"https://api.github.com/users/JuanM04/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JuanM04/subscriptions","organizations_url":"https://api.github.com/users/JuanM04/orgs","repos_url":"https://api.github.com/users/JuanM04/repos","events_url":"https://api.github.com/users/JuanM04/events{/privacy}","received_events_url":"https://api.github.com/users/JuanM04/received_events","type":"User","site_admin":false,"contributions":4},{"login":"akellbl4","id":2330682,"node_id":"MDQ6VXNlcjIzMzA2ODI=","avatar_url":"https://avatars.githubusercontent.com/u/2330682?v=4","gravatar_id":"","url":"https://api.github.com/users/akellbl4","html_url":"https://github.com/akellbl4","followers_url":"https://api.github.com/users/akellbl4/followers","following_url":"https://api.github.com/users/akellbl4/following{/other_user}","gists_url":"https://api.github.com/users/akellbl4/gists{/gist_id}","starred_url":"https://api.github.com/users/akellbl4/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akellbl4/subscriptions","organizations_url":"https://api.github.com/users/akellbl4/orgs","repos_url":"https://api.github.com/users/akellbl4/repos","events_url":"https://api.github.com/users/akellbl4/events{/privacy}","received_events_url":"https://api.github.com/users/akellbl4/received_events","type":"User","site_admin":false,"contributions":4},{"login":"brycewray","id":14099446,"node_id":"MDQ6VXNlcjE0MDk5NDQ2","avatar_url":"https://avatars.githubusercontent.com/u/14099446?v=4","gravatar_id":"","url":"https://api.github.com/users/brycewray","html_url":"https://github.com/brycewray","followers_url":"https://api.github.com/users/brycewray/followers","following_url":"https://api.github.com/users/brycewray/following{/other_user}","gists_url":"https://api.github.com/users/brycewray/gists{/gist_id}","starred_url":"https://api.github.com/users/brycewray/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brycewray/subscriptions","organizations_url":"https://api.github.com/users/brycewray/orgs","repos_url":"https://api.github.com/users/brycewray/repos","events_url":"https://api.github.com/users/brycewray/events{/privacy}","received_events_url":"https://api.github.com/users/brycewray/received_events","type":"User","site_admin":false,"contributions":3},{"login":"rebelchris","id":554874,"node_id":"MDQ6VXNlcjU1NDg3NA==","avatar_url":"https://avatars.githubusercontent.com/u/554874?v=4","gravatar_id":"","url":"https://api.github.com/users/rebelchris","html_url":"https://github.com/rebelchris","followers_url":"https://api.github.com/users/rebelchris/followers","following_url":"https://api.github.com/users/rebelchris/following{/other_user}","gists_url":"https://api.github.com/users/rebelchris/gists{/gist_id}","starred_url":"https://api.github.com/users/rebelchris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rebelchris/subscriptions","organizations_url":"https://api.github.com/users/rebelchris/orgs","repos_url":"https://api.github.com/users/rebelchris/repos","events_url":"https://api.github.com/users/rebelchris/events{/privacy}","received_events_url":"https://api.github.com/users/rebelchris/received_events","type":"User","site_admin":false,"contributions":3},{"login":"jgil-r","id":59382692,"node_id":"MDQ6VXNlcjU5MzgyNjky","avatar_url":"https://avatars.githubusercontent.com/u/59382692?v=4","gravatar_id":"","url":"https://api.github.com/users/jgil-r","html_url":"https://github.com/jgil-r","followers_url":"https://api.github.com/users/jgil-r/followers","following_url":"https://api.github.com/users/jgil-r/following{/other_user}","gists_url":"https://api.github.com/users/jgil-r/gists{/gist_id}","starred_url":"https://api.github.com/users/jgil-r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jgil-r/subscriptions","organizations_url":"https://api.github.com/users/jgil-r/orgs","repos_url":"https://api.github.com/users/jgil-r/repos","events_url":"https://api.github.com/users/jgil-r/events{/privacy}","received_events_url":"https://api.github.com/users/jgil-r/received_events","type":"User","site_admin":false,"contributions":3},{"login":"delight","id":117198,"node_id":"MDQ6VXNlcjExNzE5OA==","avatar_url":"https://avatars.githubusercontent.com/u/117198?v=4","gravatar_id":"","url":"https://api.github.com/users/delight","html_url":"https://github.com/delight","followers_url":"https://api.github.com/users/delight/followers","following_url":"https://api.github.com/users/delight/following{/other_user}","gists_url":"https://api.github.com/users/delight/gists{/gist_id}","starred_url":"https://api.github.com/users/delight/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/delight/subscriptions","organizations_url":"https://api.github.com/users/delight/orgs","repos_url":"https://api.github.com/users/delight/repos","events_url":"https://api.github.com/users/delight/events{/privacy}","received_events_url":"https://api.github.com/users/delight/received_events","type":"User","site_admin":false,"contributions":3},{"login":"manigandham","id":457226,"node_id":"MDQ6VXNlcjQ1NzIyNg==","avatar_url":"https://avatars.githubusercontent.com/u/457226?v=4","gravatar_id":"","url":"https://api.github.com/users/manigandham","html_url":"https://github.com/manigandham","followers_url":"https://api.github.com/users/manigandham/followers","following_url":"https://api.github.com/users/manigandham/following{/other_user}","gists_url":"https://api.github.com/users/manigandham/gists{/gist_id}","starred_url":"https://api.github.com/users/manigandham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/manigandham/subscriptions","organizations_url":"https://api.github.com/users/manigandham/orgs","repos_url":"https://api.github.com/users/manigandham/repos","events_url":"https://api.github.com/users/manigandham/events{/privacy}","received_events_url":"https://api.github.com/users/manigandham/received_events","type":"User","site_admin":false,"contributions":3},{"login":"matsdahlin","id":337696,"node_id":"MDQ6VXNlcjMzNzY5Ng==","avatar_url":"https://avatars.githubusercontent.com/u/337696?v=4","gravatar_id":"","url":"https://api.github.com/users/matsdahlin","html_url":"https://github.com/matsdahlin","followers_url":"https://api.github.com/users/matsdahlin/followers","following_url":"https://api.github.com/users/matsdahlin/following{/other_user}","gists_url":"https://api.github.com/users/matsdahlin/gists{/gist_id}","starred_url":"https://api.github.com/users/matsdahlin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matsdahlin/subscriptions","organizations_url":"https://api.github.com/users/matsdahlin/orgs","repos_url":"https://api.github.com/users/matsdahlin/repos","events_url":"https://api.github.com/users/matsdahlin/events{/privacy}","received_events_url":"https://api.github.com/users/matsdahlin/received_events","type":"User","site_admin":false,"contributions":3},{"login":"stramel","id":855184,"node_id":"MDQ6VXNlcjg1NTE4NA==","avatar_url":"https://avatars.githubusercontent.com/u/855184?v=4","gravatar_id":"","url":"https://api.github.com/users/stramel","html_url":"https://github.com/stramel","followers_url":"https://api.github.com/users/stramel/followers","following_url":"https://api.github.com/users/stramel/following{/other_user}","gists_url":"https://api.github.com/users/stramel/gists{/gist_id}","starred_url":"https://api.github.com/users/stramel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stramel/subscriptions","organizations_url":"https://api.github.com/users/stramel/orgs","repos_url":"https://api.github.com/users/stramel/repos","events_url":"https://api.github.com/users/stramel/events{/privacy}","received_events_url":"https://api.github.com/users/stramel/received_events","type":"User","site_admin":false,"contributions":3},{"login":"felipe300","id":15917501,"node_id":"MDQ6VXNlcjE1OTE3NTAx","avatar_url":"https://avatars.githubusercontent.com/u/15917501?v=4","gravatar_id":"","url":"https://api.github.com/users/felipe300","html_url":"https://github.com/felipe300","followers_url":"https://api.github.com/users/felipe300/followers","following_url":"https://api.github.com/users/felipe300/following{/other_user}","gists_url":"https://api.github.com/users/felipe300/gists{/gist_id}","starred_url":"https://api.github.com/users/felipe300/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/felipe300/subscriptions","organizations_url":"https://api.github.com/users/felipe300/orgs","repos_url":"https://api.github.com/users/felipe300/repos","events_url":"https://api.github.com/users/felipe300/events{/privacy}","received_events_url":"https://api.github.com/users/felipe300/received_events","type":"User","site_admin":false,"contributions":3},{"login":"chenxsan","id":1091472,"node_id":"MDQ6VXNlcjEwOTE0NzI=","avatar_url":"https://avatars.githubusercontent.com/u/1091472?v=4","gravatar_id":"","url":"https://api.github.com/users/chenxsan","html_url":"https://github.com/chenxsan","followers_url":"https://api.github.com/users/chenxsan/followers","following_url":"https://api.github.com/users/chenxsan/following{/other_user}","gists_url":"https://api.github.com/users/chenxsan/gists{/gist_id}","starred_url":"https://api.github.com/users/chenxsan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chenxsan/subscriptions","organizations_url":"https://api.github.com/users/chenxsan/orgs","repos_url":"https://api.github.com/users/chenxsan/repos","events_url":"https://api.github.com/users/chenxsan/events{/privacy}","received_events_url":"https://api.github.com/users/chenxsan/received_events","type":"User","site_admin":false,"contributions":3},{"login":"vtinev","id":54780475,"node_id":"MDQ6VXNlcjU0NzgwNDc1","avatar_url":"https://avatars.githubusercontent.com/u/54780475?v=4","gravatar_id":"","url":"https://api.github.com/users/vtinev","html_url":"https://github.com/vtinev","followers_url":"https://api.github.com/users/vtinev/followers","following_url":"https://api.github.com/users/vtinev/following{/other_user}","gists_url":"https://api.github.com/users/vtinev/gists{/gist_id}","starred_url":"https://api.github.com/users/vtinev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vtinev/subscriptions","organizations_url":"https://api.github.com/users/vtinev/orgs","repos_url":"https://api.github.com/users/vtinev/repos","events_url":"https://api.github.com/users/vtinev/events{/privacy}","received_events_url":"https://api.github.com/users/vtinev/received_events","type":"User","site_admin":false,"contributions":3},{"login":"agustinmulet","id":31162600,"node_id":"MDQ6VXNlcjMxMTYyNjAw","avatar_url":"https://avatars.githubusercontent.com/u/31162600?v=4","gravatar_id":"","url":"https://api.github.com/users/agustinmulet","html_url":"https://github.com/agustinmulet","followers_url":"https://api.github.com/users/agustinmulet/followers","following_url":"https://api.github.com/users/agustinmulet/following{/other_user}","gists_url":"https://api.github.com/users/agustinmulet/gists{/gist_id}","starred_url":"https://api.github.com/users/agustinmulet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/agustinmulet/subscriptions","organizations_url":"https://api.github.com/users/agustinmulet/orgs","repos_url":"https://api.github.com/users/agustinmulet/repos","events_url":"https://api.github.com/users/agustinmulet/events{/privacy}","received_events_url":"https://api.github.com/users/agustinmulet/received_events","type":"User","site_admin":false,"contributions":2},{"login":"austincrim","id":32459922,"node_id":"MDQ6VXNlcjMyNDU5OTIy","avatar_url":"https://avatars.githubusercontent.com/u/32459922?v=4","gravatar_id":"","url":"https://api.github.com/users/austincrim","html_url":"https://github.com/austincrim","followers_url":"https://api.github.com/users/austincrim/followers","following_url":"https://api.github.com/users/austincrim/following{/other_user}","gists_url":"https://api.github.com/users/austincrim/gists{/gist_id}","starred_url":"https://api.github.com/users/austincrim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/austincrim/subscriptions","organizations_url":"https://api.github.com/users/austincrim/orgs","repos_url":"https://api.github.com/users/austincrim/repos","events_url":"https://api.github.com/users/austincrim/events{/privacy}","received_events_url":"https://api.github.com/users/austincrim/received_events","type":"User","site_admin":false,"contributions":2},{"login":"bradlc","id":2615508,"node_id":"MDQ6VXNlcjI2MTU1MDg=","avatar_url":"https://avatars.githubusercontent.com/u/2615508?v=4","gravatar_id":"","url":"https://api.github.com/users/bradlc","html_url":"https://github.com/bradlc","followers_url":"https://api.github.com/users/bradlc/followers","following_url":"https://api.github.com/users/bradlc/following{/other_user}","gists_url":"https://api.github.com/users/bradlc/gists{/gist_id}","starred_url":"https://api.github.com/users/bradlc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bradlc/subscriptions","organizations_url":"https://api.github.com/users/bradlc/orgs","repos_url":"https://api.github.com/users/bradlc/repos","events_url":"https://api.github.com/users/bradlc/events{/privacy}","received_events_url":"https://api.github.com/users/bradlc/received_events","type":"User","site_admin":false,"contributions":2},{"login":"sno2","id":43641633,"node_id":"MDQ6VXNlcjQzNjQxNjMz","avatar_url":"https://avatars.githubusercontent.com/u/43641633?v=4","gravatar_id":"","url":"https://api.github.com/users/sno2","html_url":"https://github.com/sno2","followers_url":"https://api.github.com/users/sno2/followers","following_url":"https://api.github.com/users/sno2/following{/other_user}","gists_url":"https://api.github.com/users/sno2/gists{/gist_id}","starred_url":"https://api.github.com/users/sno2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sno2/subscriptions","organizations_url":"https://api.github.com/users/sno2/orgs","repos_url":"https://api.github.com/users/sno2/repos","events_url":"https://api.github.com/users/sno2/events{/privacy}","received_events_url":"https://api.github.com/users/sno2/received_events","type":"User","site_admin":false,"contributions":2},{"login":"delucis","id":357379,"node_id":"MDQ6VXNlcjM1NzM3OQ==","avatar_url":"https://avatars.githubusercontent.com/u/357379?v=4","gravatar_id":"","url":"https://api.github.com/users/delucis","html_url":"https://github.com/delucis","followers_url":"https://api.github.com/users/delucis/followers","following_url":"https://api.github.com/users/delucis/following{/other_user}","gists_url":"https://api.github.com/users/delucis/gists{/gist_id}","starred_url":"https://api.github.com/users/delucis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/delucis/subscriptions","organizations_url":"https://api.github.com/users/delucis/orgs","repos_url":"https://api.github.com/users/delucis/repos","events_url":"https://api.github.com/users/delucis/events{/privacy}","received_events_url":"https://api.github.com/users/delucis/received_events","type":"User","site_admin":false,"contributions":2},{"login":"danny-burrows","id":44483126,"node_id":"MDQ6VXNlcjQ0NDgzMTI2","avatar_url":"https://avatars.githubusercontent.com/u/44483126?v=4","gravatar_id":"","url":"https://api.github.com/users/danny-burrows","html_url":"https://github.com/danny-burrows","followers_url":"https://api.github.com/users/danny-burrows/followers","following_url":"https://api.github.com/users/danny-burrows/following{/other_user}","gists_url":"https://api.github.com/users/danny-burrows/gists{/gist_id}","starred_url":"https://api.github.com/users/danny-burrows/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danny-burrows/subscriptions","organizations_url":"https://api.github.com/users/danny-burrows/orgs","repos_url":"https://api.github.com/users/danny-burrows/repos","events_url":"https://api.github.com/users/danny-burrows/events{/privacy}","received_events_url":"https://api.github.com/users/danny-burrows/received_events","type":"User","site_admin":false,"contributions":2},{"login":"e111077","id":5981958,"node_id":"MDQ6VXNlcjU5ODE5NTg=","avatar_url":"https://avatars.githubusercontent.com/u/5981958?v=4","gravatar_id":"","url":"https://api.github.com/users/e111077","html_url":"https://github.com/e111077","followers_url":"https://api.github.com/users/e111077/followers","following_url":"https://api.github.com/users/e111077/following{/other_user}","gists_url":"https://api.github.com/users/e111077/gists{/gist_id}","starred_url":"https://api.github.com/users/e111077/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/e111077/subscriptions","organizations_url":"https://api.github.com/users/e111077/orgs","repos_url":"https://api.github.com/users/e111077/repos","events_url":"https://api.github.com/users/e111077/events{/privacy}","received_events_url":"https://api.github.com/users/e111077/received_events","type":"User","site_admin":false,"contributions":2},{"login":"mcfadyeni","id":6243993,"node_id":"MDQ6VXNlcjYyNDM5OTM=","avatar_url":"https://avatars.githubusercontent.com/u/6243993?v=4","gravatar_id":"","url":"https://api.github.com/users/mcfadyeni","html_url":"https://github.com/mcfadyeni","followers_url":"https://api.github.com/users/mcfadyeni/followers","following_url":"https://api.github.com/users/mcfadyeni/following{/other_user}","gists_url":"https://api.github.com/users/mcfadyeni/gists{/gist_id}","starred_url":"https://api.github.com/users/mcfadyeni/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcfadyeni/subscriptions","organizations_url":"https://api.github.com/users/mcfadyeni/orgs","repos_url":"https://api.github.com/users/mcfadyeni/repos","events_url":"https://api.github.com/users/mcfadyeni/events{/privacy}","received_events_url":"https://api.github.com/users/mcfadyeni/received_events","type":"User","site_admin":false,"contributions":2},{"login":"jorgecasar","id":948953,"node_id":"MDQ6VXNlcjk0ODk1Mw==","avatar_url":"https://avatars.githubusercontent.com/u/948953?v=4","gravatar_id":"","url":"https://api.github.com/users/jorgecasar","html_url":"https://github.com/jorgecasar","followers_url":"https://api.github.com/users/jorgecasar/followers","following_url":"https://api.github.com/users/jorgecasar/following{/other_user}","gists_url":"https://api.github.com/users/jorgecasar/gists{/gist_id}","starred_url":"https://api.github.com/users/jorgecasar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jorgecasar/subscriptions","organizations_url":"https://api.github.com/users/jorgecasar/orgs","repos_url":"https://api.github.com/users/jorgecasar/repos","events_url":"https://api.github.com/users/jorgecasar/events{/privacy}","received_events_url":"https://api.github.com/users/jorgecasar/received_events","type":"User","site_admin":false,"contributions":2},{"login":"JSHSJ","id":17817755,"node_id":"MDQ6VXNlcjE3ODE3NzU1","avatar_url":"https://avatars.githubusercontent.com/u/17817755?v=4","gravatar_id":"","url":"https://api.github.com/users/JSHSJ","html_url":"https://github.com/JSHSJ","followers_url":"https://api.github.com/users/JSHSJ/followers","following_url":"https://api.github.com/users/JSHSJ/following{/other_user}","gists_url":"https://api.github.com/users/JSHSJ/gists{/gist_id}","starred_url":"https://api.github.com/users/JSHSJ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JSHSJ/subscriptions","organizations_url":"https://api.github.com/users/JSHSJ/orgs","repos_url":"https://api.github.com/users/JSHSJ/repos","events_url":"https://api.github.com/users/JSHSJ/events{/privacy}","received_events_url":"https://api.github.com/users/JSHSJ/received_events","type":"User","site_admin":false,"contributions":2},{"login":"jpaquim","id":1531031,"node_id":"MDQ6VXNlcjE1MzEwMzE=","avatar_url":"https://avatars.githubusercontent.com/u/1531031?v=4","gravatar_id":"","url":"https://api.github.com/users/jpaquim","html_url":"https://github.com/jpaquim","followers_url":"https://api.github.com/users/jpaquim/followers","following_url":"https://api.github.com/users/jpaquim/following{/other_user}","gists_url":"https://api.github.com/users/jpaquim/gists{/gist_id}","starred_url":"https://api.github.com/users/jpaquim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpaquim/subscriptions","organizations_url":"https://api.github.com/users/jpaquim/orgs","repos_url":"https://api.github.com/users/jpaquim/repos","events_url":"https://api.github.com/users/jpaquim/events{/privacy}","received_events_url":"https://api.github.com/users/jpaquim/received_events","type":"User","site_admin":false,"contributions":2},{"login":"ludofischer","id":43557,"node_id":"MDQ6VXNlcjQzNTU3","avatar_url":"https://avatars.githubusercontent.com/u/43557?v=4","gravatar_id":"","url":"https://api.github.com/users/ludofischer","html_url":"https://github.com/ludofischer","followers_url":"https://api.github.com/users/ludofischer/followers","following_url":"https://api.github.com/users/ludofischer/following{/other_user}","gists_url":"https://api.github.com/users/ludofischer/gists{/gist_id}","starred_url":"https://api.github.com/users/ludofischer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ludofischer/subscriptions","organizations_url":"https://api.github.com/users/ludofischer/orgs","repos_url":"https://api.github.com/users/ludofischer/repos","events_url":"https://api.github.com/users/ludofischer/events{/privacy}","received_events_url":"https://api.github.com/users/ludofischer/received_events","type":"User","site_admin":false,"contributions":2},{"login":"palmiak","id":2342458,"node_id":"MDQ6VXNlcjIzNDI0NTg=","avatar_url":"https://avatars.githubusercontent.com/u/2342458?v=4","gravatar_id":"","url":"https://api.github.com/users/palmiak","html_url":"https://github.com/palmiak","followers_url":"https://api.github.com/users/palmiak/followers","following_url":"https://api.github.com/users/palmiak/following{/other_user}","gists_url":"https://api.github.com/users/palmiak/gists{/gist_id}","starred_url":"https://api.github.com/users/palmiak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/palmiak/subscriptions","organizations_url":"https://api.github.com/users/palmiak/orgs","repos_url":"https://api.github.com/users/palmiak/repos","events_url":"https://api.github.com/users/palmiak/events{/privacy}","received_events_url":"https://api.github.com/users/palmiak/received_events","type":"User","site_admin":false,"contributions":2},{"login":"martypdx","id":478864,"node_id":"MDQ6VXNlcjQ3ODg2NA==","avatar_url":"https://avatars.githubusercontent.com/u/478864?v=4","gravatar_id":"","url":"https://api.github.com/users/martypdx","html_url":"https://github.com/martypdx","followers_url":"https://api.github.com/users/martypdx/followers","following_url":"https://api.github.com/users/martypdx/following{/other_user}","gists_url":"https://api.github.com/users/martypdx/gists{/gist_id}","starred_url":"https://api.github.com/users/martypdx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/martypdx/subscriptions","organizations_url":"https://api.github.com/users/martypdx/orgs","repos_url":"https://api.github.com/users/martypdx/repos","events_url":"https://api.github.com/users/martypdx/events{/privacy}","received_events_url":"https://api.github.com/users/martypdx/received_events","type":"User","site_admin":false,"contributions":2},{"login":"pointout","id":8960545,"node_id":"MDQ6VXNlcjg5NjA1NDU=","avatar_url":"https://avatars.githubusercontent.com/u/8960545?v=4","gravatar_id":"","url":"https://api.github.com/users/pointout","html_url":"https://github.com/pointout","followers_url":"https://api.github.com/users/pointout/followers","following_url":"https://api.github.com/users/pointout/following{/other_user}","gists_url":"https://api.github.com/users/pointout/gists{/gist_id}","starred_url":"https://api.github.com/users/pointout/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pointout/subscriptions","organizations_url":"https://api.github.com/users/pointout/orgs","repos_url":"https://api.github.com/users/pointout/repos","events_url":"https://api.github.com/users/pointout/events{/privacy}","received_events_url":"https://api.github.com/users/pointout/received_events","type":"User","site_admin":false,"contributions":2},{"login":"shamwela","id":62544170,"node_id":"MDQ6VXNlcjYyNTQ0MTcw","avatar_url":"https://avatars.githubusercontent.com/u/62544170?v=4","gravatar_id":"","url":"https://api.github.com/users/shamwela","html_url":"https://github.com/shamwela","followers_url":"https://api.github.com/users/shamwela/followers","following_url":"https://api.github.com/users/shamwela/following{/other_user}","gists_url":"https://api.github.com/users/shamwela/gists{/gist_id}","starred_url":"https://api.github.com/users/shamwela/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shamwela/subscriptions","organizations_url":"https://api.github.com/users/shamwela/orgs","repos_url":"https://api.github.com/users/shamwela/repos","events_url":"https://api.github.com/users/shamwela/events{/privacy}","received_events_url":"https://api.github.com/users/shamwela/received_events","type":"User","site_admin":false,"contributions":2},{"login":"murdercode","id":7630252,"node_id":"MDQ6VXNlcjc2MzAyNTI=","avatar_url":"https://avatars.githubusercontent.com/u/7630252?v=4","gravatar_id":"","url":"https://api.github.com/users/murdercode","html_url":"https://github.com/murdercode","followers_url":"https://api.github.com/users/murdercode/followers","following_url":"https://api.github.com/users/murdercode/following{/other_user}","gists_url":"https://api.github.com/users/murdercode/gists{/gist_id}","starred_url":"https://api.github.com/users/murdercode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/murdercode/subscriptions","organizations_url":"https://api.github.com/users/murdercode/orgs","repos_url":"https://api.github.com/users/murdercode/repos","events_url":"https://api.github.com/users/murdercode/events{/privacy}","received_events_url":"https://api.github.com/users/murdercode/received_events","type":"User","site_admin":false,"contributions":2},{"login":"stephanbogner","id":7897006,"node_id":"MDQ6VXNlcjc4OTcwMDY=","avatar_url":"https://avatars.githubusercontent.com/u/7897006?v=4","gravatar_id":"","url":"https://api.github.com/users/stephanbogner","html_url":"https://github.com/stephanbogner","followers_url":"https://api.github.com/users/stephanbogner/followers","following_url":"https://api.github.com/users/stephanbogner/following{/other_user}","gists_url":"https://api.github.com/users/stephanbogner/gists{/gist_id}","starred_url":"https://api.github.com/users/stephanbogner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stephanbogner/subscriptions","organizations_url":"https://api.github.com/users/stephanbogner/orgs","repos_url":"https://api.github.com/users/stephanbogner/repos","events_url":"https://api.github.com/users/stephanbogner/events{/privacy}","received_events_url":"https://api.github.com/users/stephanbogner/received_events","type":"User","site_admin":false,"contributions":2},{"login":"Tc-001","id":55956895,"node_id":"MDQ6VXNlcjU1OTU2ODk1","avatar_url":"https://avatars.githubusercontent.com/u/55956895?v=4","gravatar_id":"","url":"https://api.github.com/users/Tc-001","html_url":"https://github.com/Tc-001","followers_url":"https://api.github.com/users/Tc-001/followers","following_url":"https://api.github.com/users/Tc-001/following{/other_user}","gists_url":"https://api.github.com/users/Tc-001/gists{/gist_id}","starred_url":"https://api.github.com/users/Tc-001/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Tc-001/subscriptions","organizations_url":"https://api.github.com/users/Tc-001/orgs","repos_url":"https://api.github.com/users/Tc-001/repos","events_url":"https://api.github.com/users/Tc-001/events{/privacy}","received_events_url":"https://api.github.com/users/Tc-001/received_events","type":"User","site_admin":false,"contributions":2},{"login":"tusharsadhwani","id":43412083,"node_id":"MDQ6VXNlcjQzNDEyMDgz","avatar_url":"https://avatars.githubusercontent.com/u/43412083?v=4","gravatar_id":"","url":"https://api.github.com/users/tusharsadhwani","html_url":"https://github.com/tusharsadhwani","followers_url":"https://api.github.com/users/tusharsadhwani/followers","following_url":"https://api.github.com/users/tusharsadhwani/following{/other_user}","gists_url":"https://api.github.com/users/tusharsadhwani/gists{/gist_id}","starred_url":"https://api.github.com/users/tusharsadhwani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tusharsadhwani/subscriptions","organizations_url":"https://api.github.com/users/tusharsadhwani/orgs","repos_url":"https://api.github.com/users/tusharsadhwani/repos","events_url":"https://api.github.com/users/tusharsadhwani/events{/privacy}","received_events_url":"https://api.github.com/users/tusharsadhwani/received_events","type":"User","site_admin":false,"contributions":2},{"login":"vineryap","id":82420632,"node_id":"MDQ6VXNlcjgyNDIwNjMy","avatar_url":"https://avatars.githubusercontent.com/u/82420632?v=4","gravatar_id":"","url":"https://api.github.com/users/vineryap","html_url":"https://github.com/vineryap","followers_url":"https://api.github.com/users/vineryap/followers","following_url":"https://api.github.com/users/vineryap/following{/other_user}","gists_url":"https://api.github.com/users/vineryap/gists{/gist_id}","starred_url":"https://api.github.com/users/vineryap/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vineryap/subscriptions","organizations_url":"https://api.github.com/users/vineryap/orgs","repos_url":"https://api.github.com/users/vineryap/repos","events_url":"https://api.github.com/users/vineryap/events{/privacy}","received_events_url":"https://api.github.com/users/vineryap/received_events","type":"User","site_admin":false,"contributions":2},{"login":"ChelesteWang","id":40495740,"node_id":"MDQ6VXNlcjQwNDk1NzQw","avatar_url":"https://avatars.githubusercontent.com/u/40495740?v=4","gravatar_id":"","url":"https://api.github.com/users/ChelesteWang","html_url":"https://github.com/ChelesteWang","followers_url":"https://api.github.com/users/ChelesteWang/followers","following_url":"https://api.github.com/users/ChelesteWang/following{/other_user}","gists_url":"https://api.github.com/users/ChelesteWang/gists{/gist_id}","starred_url":"https://api.github.com/users/ChelesteWang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ChelesteWang/subscriptions","organizations_url":"https://api.github.com/users/ChelesteWang/orgs","repos_url":"https://api.github.com/users/ChelesteWang/repos","events_url":"https://api.github.com/users/ChelesteWang/events{/privacy}","received_events_url":"https://api.github.com/users/ChelesteWang/received_events","type":"User","site_admin":false,"contributions":2},{"login":"ewatch","id":2991341,"node_id":"MDQ6VXNlcjI5OTEzNDE=","avatar_url":"https://avatars.githubusercontent.com/u/2991341?v=4","gravatar_id":"","url":"https://api.github.com/users/ewatch","html_url":"https://github.com/ewatch","followers_url":"https://api.github.com/users/ewatch/followers","following_url":"https://api.github.com/users/ewatch/following{/other_user}","gists_url":"https://api.github.com/users/ewatch/gists{/gist_id}","starred_url":"https://api.github.com/users/ewatch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ewatch/subscriptions","organizations_url":"https://api.github.com/users/ewatch/orgs","repos_url":"https://api.github.com/users/ewatch/repos","events_url":"https://api.github.com/users/ewatch/events{/privacy}","received_events_url":"https://api.github.com/users/ewatch/received_events","type":"User","site_admin":false,"contributions":2},{"login":"headapplesgithub","id":76455674,"node_id":"MDQ6VXNlcjc2NDU1Njc0","avatar_url":"https://avatars.githubusercontent.com/u/76455674?v=4","gravatar_id":"","url":"https://api.github.com/users/headapplesgithub","html_url":"https://github.com/headapplesgithub","followers_url":"https://api.github.com/users/headapplesgithub/followers","following_url":"https://api.github.com/users/headapplesgithub/following{/other_user}","gists_url":"https://api.github.com/users/headapplesgithub/gists{/gist_id}","starred_url":"https://api.github.com/users/headapplesgithub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/headapplesgithub/subscriptions","organizations_url":"https://api.github.com/users/headapplesgithub/orgs","repos_url":"https://api.github.com/users/headapplesgithub/repos","events_url":"https://api.github.com/users/headapplesgithub/events{/privacy}","received_events_url":"https://api.github.com/users/headapplesgithub/received_events","type":"User","site_admin":false,"contributions":2},{"login":"kelvinsjk","id":64682375,"node_id":"MDQ6VXNlcjY0NjgyMzc1","avatar_url":"https://avatars.githubusercontent.com/u/64682375?v=4","gravatar_id":"","url":"https://api.github.com/users/kelvinsjk","html_url":"https://github.com/kelvinsjk","followers_url":"https://api.github.com/users/kelvinsjk/followers","following_url":"https://api.github.com/users/kelvinsjk/following{/other_user}","gists_url":"https://api.github.com/users/kelvinsjk/gists{/gist_id}","starred_url":"https://api.github.com/users/kelvinsjk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kelvinsjk/subscriptions","organizations_url":"https://api.github.com/users/kelvinsjk/orgs","repos_url":"https://api.github.com/users/kelvinsjk/repos","events_url":"https://api.github.com/users/kelvinsjk/events{/privacy}","received_events_url":"https://api.github.com/users/kelvinsjk/received_events","type":"User","site_admin":false,"contributions":2},{"login":"zhmushan","id":24505451,"node_id":"MDQ6VXNlcjI0NTA1NDUx","avatar_url":"https://avatars.githubusercontent.com/u/24505451?v=4","gravatar_id":"","url":"https://api.github.com/users/zhmushan","html_url":"https://github.com/zhmushan","followers_url":"https://api.github.com/users/zhmushan/followers","following_url":"https://api.github.com/users/zhmushan/following{/other_user}","gists_url":"https://api.github.com/users/zhmushan/gists{/gist_id}","starred_url":"https://api.github.com/users/zhmushan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zhmushan/subscriptions","organizations_url":"https://api.github.com/users/zhmushan/orgs","repos_url":"https://api.github.com/users/zhmushan/repos","events_url":"https://api.github.com/users/zhmushan/events{/privacy}","received_events_url":"https://api.github.com/users/zhmushan/received_events","type":"User","site_admin":false,"contributions":2},{"login":"mzaien","id":43112535,"node_id":"MDQ6VXNlcjQzMTEyNTM1","avatar_url":"https://avatars.githubusercontent.com/u/43112535?v=4","gravatar_id":"","url":"https://api.github.com/users/mzaien","html_url":"https://github.com/mzaien","followers_url":"https://api.github.com/users/mzaien/followers","following_url":"https://api.github.com/users/mzaien/following{/other_user}","gists_url":"https://api.github.com/users/mzaien/gists{/gist_id}","starred_url":"https://api.github.com/users/mzaien/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mzaien/subscriptions","organizations_url":"https://api.github.com/users/mzaien/orgs","repos_url":"https://api.github.com/users/mzaien/repos","events_url":"https://api.github.com/users/mzaien/events{/privacy}","received_events_url":"https://api.github.com/users/mzaien/received_events","type":"User","site_admin":false,"contributions":2},{"login":"robinmetral","id":35560568,"node_id":"MDQ6VXNlcjM1NTYwNTY4","avatar_url":"https://avatars.githubusercontent.com/u/35560568?v=4","gravatar_id":"","url":"https://api.github.com/users/robinmetral","html_url":"https://github.com/robinmetral","followers_url":"https://api.github.com/users/robinmetral/followers","following_url":"https://api.github.com/users/robinmetral/following{/other_user}","gists_url":"https://api.github.com/users/robinmetral/gists{/gist_id}","starred_url":"https://api.github.com/users/robinmetral/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robinmetral/subscriptions","organizations_url":"https://api.github.com/users/robinmetral/orgs","repos_url":"https://api.github.com/users/robinmetral/repos","events_url":"https://api.github.com/users/robinmetral/events{/privacy}","received_events_url":"https://api.github.com/users/robinmetral/received_events","type":"User","site_admin":false,"contributions":2},{"login":"johnhenry","id":393817,"node_id":"MDQ6VXNlcjM5MzgxNw==","avatar_url":"https://avatars.githubusercontent.com/u/393817?v=4","gravatar_id":"","url":"https://api.github.com/users/johnhenry","html_url":"https://github.com/johnhenry","followers_url":"https://api.github.com/users/johnhenry/followers","following_url":"https://api.github.com/users/johnhenry/following{/other_user}","gists_url":"https://api.github.com/users/johnhenry/gists{/gist_id}","starred_url":"https://api.github.com/users/johnhenry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnhenry/subscriptions","organizations_url":"https://api.github.com/users/johnhenry/orgs","repos_url":"https://api.github.com/users/johnhenry/repos","events_url":"https://api.github.com/users/johnhenry/events{/privacy}","received_events_url":"https://api.github.com/users/johnhenry/received_events","type":"User","site_admin":false,"contributions":1},{"login":"adamochayon","id":2094874,"node_id":"MDQ6VXNlcjIwOTQ4NzQ=","avatar_url":"https://avatars.githubusercontent.com/u/2094874?v=4","gravatar_id":"","url":"https://api.github.com/users/adamochayon","html_url":"https://github.com/adamochayon","followers_url":"https://api.github.com/users/adamochayon/followers","following_url":"https://api.github.com/users/adamochayon/following{/other_user}","gists_url":"https://api.github.com/users/adamochayon/gists{/gist_id}","starred_url":"https://api.github.com/users/adamochayon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamochayon/subscriptions","organizations_url":"https://api.github.com/users/adamochayon/orgs","repos_url":"https://api.github.com/users/adamochayon/repos","events_url":"https://api.github.com/users/adamochayon/events{/privacy}","received_events_url":"https://api.github.com/users/adamochayon/received_events","type":"User","site_admin":false,"contributions":1},{"login":"arecvlohe","id":9747933,"node_id":"MDQ6VXNlcjk3NDc5MzM=","avatar_url":"https://avatars.githubusercontent.com/u/9747933?v=4","gravatar_id":"","url":"https://api.github.com/users/arecvlohe","html_url":"https://github.com/arecvlohe","followers_url":"https://api.github.com/users/arecvlohe/followers","following_url":"https://api.github.com/users/arecvlohe/following{/other_user}","gists_url":"https://api.github.com/users/arecvlohe/gists{/gist_id}","starred_url":"https://api.github.com/users/arecvlohe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arecvlohe/subscriptions","organizations_url":"https://api.github.com/users/arecvlohe/orgs","repos_url":"https://api.github.com/users/arecvlohe/repos","events_url":"https://api.github.com/users/arecvlohe/events{/privacy}","received_events_url":"https://api.github.com/users/arecvlohe/received_events","type":"User","site_admin":false,"contributions":1},{"login":"altano","id":1009,"node_id":"MDQ6VXNlcjEwMDk=","avatar_url":"https://avatars.githubusercontent.com/u/1009?v=4","gravatar_id":"","url":"https://api.github.com/users/altano","html_url":"https://github.com/altano","followers_url":"https://api.github.com/users/altano/followers","following_url":"https://api.github.com/users/altano/following{/other_user}","gists_url":"https://api.github.com/users/altano/gists{/gist_id}","starred_url":"https://api.github.com/users/altano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/altano/subscriptions","organizations_url":"https://api.github.com/users/altano/orgs","repos_url":"https://api.github.com/users/altano/repos","events_url":"https://api.github.com/users/altano/events{/privacy}","received_events_url":"https://api.github.com/users/altano/received_events","type":"User","site_admin":false,"contributions":1},{"login":"alex-drocks","id":69808183,"node_id":"MDQ6VXNlcjY5ODA4MTgz","avatar_url":"https://avatars.githubusercontent.com/u/69808183?v=4","gravatar_id":"","url":"https://api.github.com/users/alex-drocks","html_url":"https://github.com/alex-drocks","followers_url":"https://api.github.com/users/alex-drocks/followers","following_url":"https://api.github.com/users/alex-drocks/following{/other_user}","gists_url":"https://api.github.com/users/alex-drocks/gists{/gist_id}","starred_url":"https://api.github.com/users/alex-drocks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alex-drocks/subscriptions","organizations_url":"https://api.github.com/users/alex-drocks/orgs","repos_url":"https://api.github.com/users/alex-drocks/repos","events_url":"https://api.github.com/users/alex-drocks/events{/privacy}","received_events_url":"https://api.github.com/users/alex-drocks/received_events","type":"User","site_admin":false,"contributions":1},{"login":"lex111","id":4408379,"node_id":"MDQ6VXNlcjQ0MDgzNzk=","avatar_url":"https://avatars.githubusercontent.com/u/4408379?v=4","gravatar_id":"","url":"https://api.github.com/users/lex111","html_url":"https://github.com/lex111","followers_url":"https://api.github.com/users/lex111/followers","following_url":"https://api.github.com/users/lex111/following{/other_user}","gists_url":"https://api.github.com/users/lex111/gists{/gist_id}","starred_url":"https://api.github.com/users/lex111/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lex111/subscriptions","organizations_url":"https://api.github.com/users/lex111/orgs","repos_url":"https://api.github.com/users/lex111/repos","events_url":"https://api.github.com/users/lex111/events{/privacy}","received_events_url":"https://api.github.com/users/lex111/received_events","type":"User","site_admin":false,"contributions":1},{"login":"alesvaupotic","id":1660347,"node_id":"MDQ6VXNlcjE2NjAzNDc=","avatar_url":"https://avatars.githubusercontent.com/u/1660347?v=4","gravatar_id":"","url":"https://api.github.com/users/alesvaupotic","html_url":"https://github.com/alesvaupotic","followers_url":"https://api.github.com/users/alesvaupotic/followers","following_url":"https://api.github.com/users/alesvaupotic/following{/other_user}","gists_url":"https://api.github.com/users/alesvaupotic/gists{/gist_id}","starred_url":"https://api.github.com/users/alesvaupotic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alesvaupotic/subscriptions","organizations_url":"https://api.github.com/users/alesvaupotic/orgs","repos_url":"https://api.github.com/users/alesvaupotic/repos","events_url":"https://api.github.com/users/alesvaupotic/events{/privacy}","received_events_url":"https://api.github.com/users/alesvaupotic/received_events","type":"User","site_admin":false,"contributions":1},{"login":"ajoslin-rm","id":94997667,"node_id":"U_kgDOBamMow","avatar_url":"https://avatars.githubusercontent.com/u/94997667?v=4","gravatar_id":"","url":"https://api.github.com/users/ajoslin-rm","html_url":"https://github.com/ajoslin-rm","followers_url":"https://api.github.com/users/ajoslin-rm/followers","following_url":"https://api.github.com/users/ajoslin-rm/following{/other_user}","gists_url":"https://api.github.com/users/ajoslin-rm/gists{/gist_id}","starred_url":"https://api.github.com/users/ajoslin-rm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ajoslin-rm/subscriptions","organizations_url":"https://api.github.com/users/ajoslin-rm/orgs","repos_url":"https://api.github.com/users/ajoslin-rm/repos","events_url":"https://api.github.com/users/ajoslin-rm/events{/privacy}","received_events_url":"https://api.github.com/users/ajoslin-rm/received_events","type":"User","site_admin":false,"contributions":1},{"login":"vjandrei","id":196690,"node_id":"MDQ6VXNlcjE5NjY5MA==","avatar_url":"https://avatars.githubusercontent.com/u/196690?v=4","gravatar_id":"","url":"https://api.github.com/users/vjandrei","html_url":"https://github.com/vjandrei","followers_url":"https://api.github.com/users/vjandrei/followers","following_url":"https://api.github.com/users/vjandrei/following{/other_user}","gists_url":"https://api.github.com/users/vjandrei/gists{/gist_id}","starred_url":"https://api.github.com/users/vjandrei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vjandrei/subscriptions","organizations_url":"https://api.github.com/users/vjandrei/orgs","repos_url":"https://api.github.com/users/vjandrei/repos","events_url":"https://api.github.com/users/vjandrei/events{/privacy}","received_events_url":"https://api.github.com/users/vjandrei/received_events","type":"User","site_admin":false,"contributions":1},{"login":"ax2mx","id":27804799,"node_id":"MDQ6VXNlcjI3ODA0Nzk5","avatar_url":"https://avatars.githubusercontent.com/u/27804799?v=4","gravatar_id":"","url":"https://api.github.com/users/ax2mx","html_url":"https://github.com/ax2mx","followers_url":"https://api.github.com/users/ax2mx/followers","following_url":"https://api.github.com/users/ax2mx/following{/other_user}","gists_url":"https://api.github.com/users/ax2mx/gists{/gist_id}","starred_url":"https://api.github.com/users/ax2mx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ax2mx/subscriptions","organizations_url":"https://api.github.com/users/ax2mx/orgs","repos_url":"https://api.github.com/users/ax2mx/repos","events_url":"https://api.github.com/users/ax2mx/events{/privacy}","received_events_url":"https://api.github.com/users/ax2mx/received_events","type":"User","site_admin":false,"contributions":1},{"login":"angiewronska","id":13454412,"node_id":"MDQ6VXNlcjEzNDU0NDEy","avatar_url":"https://avatars.githubusercontent.com/u/13454412?v=4","gravatar_id":"","url":"https://api.github.com/users/angiewronska","html_url":"https://github.com/angiewronska","followers_url":"https://api.github.com/users/angiewronska/followers","following_url":"https://api.github.com/users/angiewronska/following{/other_user}","gists_url":"https://api.github.com/users/angiewronska/gists{/gist_id}","starred_url":"https://api.github.com/users/angiewronska/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/angiewronska/subscriptions","organizations_url":"https://api.github.com/users/angiewronska/orgs","repos_url":"https://api.github.com/users/angiewronska/repos","events_url":"https://api.github.com/users/angiewronska/events{/privacy}","received_events_url":"https://api.github.com/users/angiewronska/received_events","type":"User","site_admin":false,"contributions":1},{"login":"animafps","id":18208134,"node_id":"MDQ6VXNlcjE4MjA4MTM0","avatar_url":"https://avatars.githubusercontent.com/u/18208134?v=4","gravatar_id":"","url":"https://api.github.com/users/animafps","html_url":"https://github.com/animafps","followers_url":"https://api.github.com/users/animafps/followers","following_url":"https://api.github.com/users/animafps/following{/other_user}","gists_url":"https://api.github.com/users/animafps/gists{/gist_id}","starred_url":"https://api.github.com/users/animafps/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/animafps/subscriptions","organizations_url":"https://api.github.com/users/animafps/orgs","repos_url":"https://api.github.com/users/animafps/repos","events_url":"https://api.github.com/users/animafps/events{/privacy}","received_events_url":"https://api.github.com/users/animafps/received_events","type":"User","site_admin":false,"contributions":1},{"login":"anneke","id":7202272,"node_id":"MDQ6VXNlcjcyMDIyNzI=","avatar_url":"https://avatars.githubusercontent.com/u/7202272?v=4","gravatar_id":"","url":"https://api.github.com/users/anneke","html_url":"https://github.com/anneke","followers_url":"https://api.github.com/users/anneke/followers","following_url":"https://api.github.com/users/anneke/following{/other_user}","gists_url":"https://api.github.com/users/anneke/gists{/gist_id}","starred_url":"https://api.github.com/users/anneke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anneke/subscriptions","organizations_url":"https://api.github.com/users/anneke/orgs","repos_url":"https://api.github.com/users/anneke/repos","events_url":"https://api.github.com/users/anneke/events{/privacy}","received_events_url":"https://api.github.com/users/anneke/received_events","type":"User","site_admin":false,"contributions":1},{"login":"Chrissdroid","id":29927270,"node_id":"MDQ6VXNlcjI5OTI3Mjcw","avatar_url":"https://avatars.githubusercontent.com/u/29927270?v=4","gravatar_id":"","url":"https://api.github.com/users/Chrissdroid","html_url":"https://github.com/Chrissdroid","followers_url":"https://api.github.com/users/Chrissdroid/followers","following_url":"https://api.github.com/users/Chrissdroid/following{/other_user}","gists_url":"https://api.github.com/users/Chrissdroid/gists{/gist_id}","starred_url":"https://api.github.com/users/Chrissdroid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Chrissdroid/subscriptions","organizations_url":"https://api.github.com/users/Chrissdroid/orgs","repos_url":"https://api.github.com/users/Chrissdroid/repos","events_url":"https://api.github.com/users/Chrissdroid/events{/privacy}","received_events_url":"https://api.github.com/users/Chrissdroid/received_events","type":"User","site_admin":false,"contributions":1},{"login":"balazsorban44","id":18369201,"node_id":"MDQ6VXNlcjE4MzY5MjAx","avatar_url":"https://avatars.githubusercontent.com/u/18369201?v=4","gravatar_id":"","url":"https://api.github.com/users/balazsorban44","html_url":"https://github.com/balazsorban44","followers_url":"https://api.github.com/users/balazsorban44/followers","following_url":"https://api.github.com/users/balazsorban44/following{/other_user}","gists_url":"https://api.github.com/users/balazsorban44/gists{/gist_id}","starred_url":"https://api.github.com/users/balazsorban44/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/balazsorban44/subscriptions","organizations_url":"https://api.github.com/users/balazsorban44/orgs","repos_url":"https://api.github.com/users/balazsorban44/repos","events_url":"https://api.github.com/users/balazsorban44/events{/privacy}","received_events_url":"https://api.github.com/users/balazsorban44/received_events","type":"User","site_admin":false,"contributions":1},{"login":"vicalejuri","id":91731,"node_id":"MDQ6VXNlcjkxNzMx","avatar_url":"https://avatars.githubusercontent.com/u/91731?v=4","gravatar_id":"","url":"https://api.github.com/users/vicalejuri","html_url":"https://github.com/vicalejuri","followers_url":"https://api.github.com/users/vicalejuri/followers","following_url":"https://api.github.com/users/vicalejuri/following{/other_user}","gists_url":"https://api.github.com/users/vicalejuri/gists{/gist_id}","starred_url":"https://api.github.com/users/vicalejuri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vicalejuri/subscriptions","organizations_url":"https://api.github.com/users/vicalejuri/orgs","repos_url":"https://api.github.com/users/vicalejuri/repos","events_url":"https://api.github.com/users/vicalejuri/events{/privacy}","received_events_url":"https://api.github.com/users/vicalejuri/received_events","type":"User","site_admin":false,"contributions":1},{"login":"bencemol","id":62985992,"node_id":"MDQ6VXNlcjYyOTg1OTky","avatar_url":"https://avatars.githubusercontent.com/u/62985992?v=4","gravatar_id":"","url":"https://api.github.com/users/bencemol","html_url":"https://github.com/bencemol","followers_url":"https://api.github.com/users/bencemol/followers","following_url":"https://api.github.com/users/bencemol/following{/other_user}","gists_url":"https://api.github.com/users/bencemol/gists{/gist_id}","starred_url":"https://api.github.com/users/bencemol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bencemol/subscriptions","organizations_url":"https://api.github.com/users/bencemol/orgs","repos_url":"https://api.github.com/users/bencemol/repos","events_url":"https://api.github.com/users/bencemol/events{/privacy}","received_events_url":"https://api.github.com/users/bencemol/received_events","type":"User","site_admin":false,"contributions":1},{"login":"Benjamin-Piper","id":68324342,"node_id":"MDQ6VXNlcjY4MzI0MzQy","avatar_url":"https://avatars.githubusercontent.com/u/68324342?v=4","gravatar_id":"","url":"https://api.github.com/users/Benjamin-Piper","html_url":"https://github.com/Benjamin-Piper","followers_url":"https://api.github.com/users/Benjamin-Piper/followers","following_url":"https://api.github.com/users/Benjamin-Piper/following{/other_user}","gists_url":"https://api.github.com/users/Benjamin-Piper/gists{/gist_id}","starred_url":"https://api.github.com/users/Benjamin-Piper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Benjamin-Piper/subscriptions","organizations_url":"https://api.github.com/users/Benjamin-Piper/orgs","repos_url":"https://api.github.com/users/Benjamin-Piper/repos","events_url":"https://api.github.com/users/Benjamin-Piper/events{/privacy}","received_events_url":"https://api.github.com/users/Benjamin-Piper/received_events","type":"User","site_admin":false,"contributions":1},{"login":"brandonroberts","id":42211,"node_id":"MDQ6VXNlcjQyMjEx","avatar_url":"https://avatars.githubusercontent.com/u/42211?v=4","gravatar_id":"","url":"https://api.github.com/users/brandonroberts","html_url":"https://github.com/brandonroberts","followers_url":"https://api.github.com/users/brandonroberts/followers","following_url":"https://api.github.com/users/brandonroberts/following{/other_user}","gists_url":"https://api.github.com/users/brandonroberts/gists{/gist_id}","starred_url":"https://api.github.com/users/brandonroberts/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brandonroberts/subscriptions","organizations_url":"https://api.github.com/users/brandonroberts/orgs","repos_url":"https://api.github.com/users/brandonroberts/repos","events_url":"https://api.github.com/users/brandonroberts/events{/privacy}","received_events_url":"https://api.github.com/users/brandonroberts/received_events","type":"User","site_admin":false,"contributions":1},{"login":"brandonstephens","id":838662,"node_id":"MDQ6VXNlcjgzODY2Mg==","avatar_url":"https://avatars.githubusercontent.com/u/838662?v=4","gravatar_id":"","url":"https://api.github.com/users/brandonstephens","html_url":"https://github.com/brandonstephens","followers_url":"https://api.github.com/users/brandonstephens/followers","following_url":"https://api.github.com/users/brandonstephens/following{/other_user}","gists_url":"https://api.github.com/users/brandonstephens/gists{/gist_id}","starred_url":"https://api.github.com/users/brandonstephens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brandonstephens/subscriptions","organizations_url":"https://api.github.com/users/brandonstephens/orgs","repos_url":"https://api.github.com/users/brandonstephens/repos","events_url":"https://api.github.com/users/brandonstephens/events{/privacy}","received_events_url":"https://api.github.com/users/brandonstephens/received_events","type":"User","site_admin":false,"contributions":1},{"login":"mrbrianhinton","id":2288431,"node_id":"MDQ6VXNlcjIyODg0MzE=","avatar_url":"https://avatars.githubusercontent.com/u/2288431?v=4","gravatar_id":"","url":"https://api.github.com/users/mrbrianhinton","html_url":"https://github.com/mrbrianhinton","followers_url":"https://api.github.com/users/mrbrianhinton/followers","following_url":"https://api.github.com/users/mrbrianhinton/following{/other_user}","gists_url":"https://api.github.com/users/mrbrianhinton/gists{/gist_id}","starred_url":"https://api.github.com/users/mrbrianhinton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrbrianhinton/subscriptions","organizations_url":"https://api.github.com/users/mrbrianhinton/orgs","repos_url":"https://api.github.com/users/mrbrianhinton/repos","events_url":"https://api.github.com/users/mrbrianhinton/events{/privacy}","received_events_url":"https://api.github.com/users/mrbrianhinton/received_events","type":"User","site_admin":false,"contributions":1},{"login":"BryanPan342","id":44623317,"node_id":"MDQ6VXNlcjQ0NjIzMzE3","avatar_url":"https://avatars.githubusercontent.com/u/44623317?v=4","gravatar_id":"","url":"https://api.github.com/users/BryanPan342","html_url":"https://github.com/BryanPan342","followers_url":"https://api.github.com/users/BryanPan342/followers","following_url":"https://api.github.com/users/BryanPan342/following{/other_user}","gists_url":"https://api.github.com/users/BryanPan342/gists{/gist_id}","starred_url":"https://api.github.com/users/BryanPan342/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BryanPan342/subscriptions","organizations_url":"https://api.github.com/users/BryanPan342/orgs","repos_url":"https://api.github.com/users/BryanPan342/repos","events_url":"https://api.github.com/users/BryanPan342/events{/privacy}","received_events_url":"https://api.github.com/users/BryanPan342/received_events","type":"User","site_admin":false,"contributions":1},{"login":"cassidoo","id":1454517,"node_id":"MDQ6VXNlcjE0NTQ1MTc=","avatar_url":"https://avatars.githubusercontent.com/u/1454517?v=4","gravatar_id":"","url":"https://api.github.com/users/cassidoo","html_url":"https://github.com/cassidoo","followers_url":"https://api.github.com/users/cassidoo/followers","following_url":"https://api.github.com/users/cassidoo/following{/other_user}","gists_url":"https://api.github.com/users/cassidoo/gists{/gist_id}","starred_url":"https://api.github.com/users/cassidoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cassidoo/subscriptions","organizations_url":"https://api.github.com/users/cassidoo/orgs","repos_url":"https://api.github.com/users/cassidoo/repos","events_url":"https://api.github.com/users/cassidoo/events{/privacy}","received_events_url":"https://api.github.com/users/cassidoo/received_events","type":"User","site_admin":false,"contributions":1},{"login":"cedric25","id":4280765,"node_id":"MDQ6VXNlcjQyODA3NjU=","avatar_url":"https://avatars.githubusercontent.com/u/4280765?v=4","gravatar_id":"","url":"https://api.github.com/users/cedric25","html_url":"https://github.com/cedric25","followers_url":"https://api.github.com/users/cedric25/followers","following_url":"https://api.github.com/users/cedric25/following{/other_user}","gists_url":"https://api.github.com/users/cedric25/gists{/gist_id}","starred_url":"https://api.github.com/users/cedric25/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cedric25/subscriptions","organizations_url":"https://api.github.com/users/cedric25/orgs","repos_url":"https://api.github.com/users/cedric25/repos","events_url":"https://api.github.com/users/cedric25/events{/privacy}","received_events_url":"https://api.github.com/users/cedric25/received_events","type":"User","site_admin":false,"contributions":1},{"login":"kaisermann","id":12702016,"node_id":"MDQ6VXNlcjEyNzAyMDE2","avatar_url":"https://avatars.githubusercontent.com/u/12702016?v=4","gravatar_id":"","url":"https://api.github.com/users/kaisermann","html_url":"https://github.com/kaisermann","followers_url":"https://api.github.com/users/kaisermann/followers","following_url":"https://api.github.com/users/kaisermann/following{/other_user}","gists_url":"https://api.github.com/users/kaisermann/gists{/gist_id}","starred_url":"https://api.github.com/users/kaisermann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kaisermann/subscriptions","organizations_url":"https://api.github.com/users/kaisermann/orgs","repos_url":"https://api.github.com/users/kaisermann/repos","events_url":"https://api.github.com/users/kaisermann/events{/privacy}","received_events_url":"https://api.github.com/users/kaisermann/received_events","type":"User","site_admin":false,"contributions":1},{"login":"GeekTrainer","id":6109729,"node_id":"MDQ6VXNlcjYxMDk3Mjk=","avatar_url":"https://avatars.githubusercontent.com/u/6109729?v=4","gravatar_id":"","url":"https://api.github.com/users/GeekTrainer","html_url":"https://github.com/GeekTrainer","followers_url":"https://api.github.com/users/GeekTrainer/followers","following_url":"https://api.github.com/users/GeekTrainer/following{/other_user}","gists_url":"https://api.github.com/users/GeekTrainer/gists{/gist_id}","starred_url":"https://api.github.com/users/GeekTrainer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GeekTrainer/subscriptions","organizations_url":"https://api.github.com/users/GeekTrainer/orgs","repos_url":"https://api.github.com/users/GeekTrainer/repos","events_url":"https://api.github.com/users/GeekTrainer/events{/privacy}","received_events_url":"https://api.github.com/users/GeekTrainer/received_events","type":"User","site_admin":false,"contributions":1},{"login":"ccheung0926","id":12890527,"node_id":"MDQ6VXNlcjEyODkwNTI3","avatar_url":"https://avatars.githubusercontent.com/u/12890527?v=4","gravatar_id":"","url":"https://api.github.com/users/ccheung0926","html_url":"https://github.com/ccheung0926","followers_url":"https://api.github.com/users/ccheung0926/followers","following_url":"https://api.github.com/users/ccheung0926/following{/other_user}","gists_url":"https://api.github.com/users/ccheung0926/gists{/gist_id}","starred_url":"https://api.github.com/users/ccheung0926/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ccheung0926/subscriptions","organizations_url":"https://api.github.com/users/ccheung0926/orgs","repos_url":"https://api.github.com/users/ccheung0926/repos","events_url":"https://api.github.com/users/ccheung0926/events{/privacy}","received_events_url":"https://api.github.com/users/ccheung0926/received_events","type":"User","site_admin":false,"contributions":1}]} \ No newline at end of file
diff --git a/smoke/astro.build-main/src/icons/after.svg b/smoke/astro.build-main/src/icons/after.svg
new file mode 100644
index 000000000..369711608
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/after.svg
@@ -0,0 +1,48 @@
+<svg width="73" height="46" viewBox="0 0 73 46" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="29.5" cy="18.5" r="17.5" fill="#C4C4C4"/>
+<circle cx="29.5" cy="18.5" r="17.5" fill="url(#paint0_linear_706_219)"/>
+<g filter="url(#filter0_dddd_706_219)">
+<circle cx="29.5" cy="18.5" r="18.5" fill="url(#paint1_linear_706_219)"/>
+</g>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M32.6986 10.0057C32.8635 10.2045 32.9476 10.4729 33.1159 11.0094L36.7913 22.733C35.4107 22.0374 33.929 21.5503 32.3971 21.2885L30.0041 13.4362C29.985 13.3736 29.9456 13.3186 29.8916 13.2795C29.8377 13.2405 29.7722 13.2194 29.7049 13.2195C29.6377 13.2196 29.5722 13.2408 29.5184 13.28C29.4646 13.3193 29.4253 13.3743 29.4064 13.437L27.0423 21.2845C25.5036 21.5451 24.015 22.033 22.6284 22.7313L26.3218 11.0068C26.4907 10.471 26.575 10.2032 26.7399 10.0047C26.8856 9.82949 27.075 9.69337 27.2902 9.60938C27.5339 9.51428 27.8224 9.51428 28.3994 9.51428H31.0375C31.6152 9.51428 31.904 9.51428 32.148 9.60962C32.3634 9.69378 32.5529 9.83013 32.6986 10.0057Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M32.8973 23.4193C32.3272 23.9301 31.1892 24.2784 29.8784 24.2784C28.2695 24.2784 26.921 23.7536 26.5633 23.048C26.4353 23.4525 26.4067 23.9153 26.4067 24.211C26.4067 24.211 26.3223 25.6629 27.2863 26.6728C27.2863 26.1484 27.692 25.7233 28.1926 25.7233C29.0505 25.7233 29.0495 26.5075 29.0487 27.1436V27.2004C29.0487 28.166 29.6121 28.9937 30.4132 29.3426C30.2899 29.0767 30.226 28.7849 30.2264 28.4893C30.2264 27.5683 30.7425 27.2254 31.3423 26.827C31.8196 26.5099 32.3498 26.1576 32.7152 25.4508C32.912 25.0701 33.0148 24.6439 33.0141 24.211C33.0141 23.935 32.9732 23.669 32.8973 23.4193Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M32.8973 23.4193C32.3272 23.9301 31.1892 24.2784 29.8784 24.2784C28.2695 24.2784 26.921 23.7536 26.5633 23.048C26.4353 23.4525 26.4067 23.9153 26.4067 24.211C26.4067 24.211 26.3223 25.6629 27.2863 26.6728C27.2863 26.1484 27.692 25.7233 28.1926 25.7233C29.0505 25.7233 29.0495 26.5075 29.0487 27.1436V27.2004C29.0487 28.166 29.6121 28.9937 30.4132 29.3426C30.2899 29.0767 30.226 28.7849 30.2264 28.4893C30.2264 27.5683 30.7425 27.2254 31.3423 26.827C31.8196 26.5099 32.3498 26.1576 32.7152 25.4508C32.912 25.0701 33.0148 24.6439 33.0141 24.211C33.0141 23.935 32.9732 23.669 32.8973 23.4193Z" fill="url(#paint2_linear_706_219)"/>
+<defs>
+<filter id="filter0_dddd_706_219" x="-13.8429" y="0" width="86.6857" height="88.8" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1.22083"/>
+<feGaussianBlur stdDeviation="0.562542"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.192157 0 0 0 0 0.0745098 0 0 0 0 0.227451 0 0 0 0.0418093 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_706_219"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="3.37545"/>
+<feGaussianBlur stdDeviation="1.55536"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.192157 0 0 0 0 0.0745098 0 0 0 0 0.227451 0 0 0 0.06 0"/>
+<feBlend mode="normal" in2="effect1_dropShadow_706_219" result="effect2_dropShadow_706_219"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="8.12679"/>
+<feGaussianBlur stdDeviation="3.7447"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.192157 0 0 0 0 0.0745098 0 0 0 0 0.227451 0 0 0 0.0781907 0"/>
+<feBlend mode="normal" in2="effect2_dropShadow_706_219" result="effect3_dropShadow_706_219"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="26.9571"/>
+<feGaussianBlur stdDeviation="12.4214"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.192157 0 0 0 0 0.0745098 0 0 0 0 0.227451 0 0 0 0.12 0"/>
+<feBlend mode="normal" in2="effect3_dropShadow_706_219" result="effect4_dropShadow_706_219"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect4_dropShadow_706_219" result="shape"/>
+</filter>
+<linearGradient id="paint0_linear_706_219" x1="29.5" y1="1" x2="29.5" y2="36" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FA8C5D"/>
+<stop offset="1" stop-color="#CC2727"/>
+</linearGradient>
+<linearGradient id="paint1_linear_706_219" x1="29.5" y1="-4.36615e-09" x2="29.3535" y2="42.5428" gradientUnits="userSpaceOnUse">
+<stop stop-color="#205EFF"/>
+<stop offset="1" stop-color="#C238BD"/>
+</linearGradient>
+<linearGradient id="paint2_linear_706_219" x1="29.7095" y1="23.048" x2="29.7095" y2="29.3426" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FFCD83"/>
+<stop offset="1" stop-color="#EC672C"/>
+</linearGradient>
+</defs>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/before.svg b/smoke/astro.build-main/src/icons/before.svg
new file mode 100644
index 000000000..3be95029e
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/before.svg
@@ -0,0 +1,37 @@
+<svg width="72" height="45" viewBox="0 0 72 45" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_dddd_706_218)">
+<circle cx="29.5" cy="17.5" r="17.5" fill="#C4C4C4"/>
+<circle cx="29.5" cy="17.5" r="17.5" fill="url(#paint0_linear_706_218)"/>
+</g>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M29.75 19.4606L35.7893 25.4999L37.4999 23.7893L31.4606 17.75L37.5 11.7107L35.7894 10.0001L29.75 16.0394L23.7106 10L22 11.7106L28.0394 17.75L22 23.7894L23.7106 25.5L29.75 19.4606Z" fill="white"/>
+<defs>
+<filter id="filter0_dddd_706_218" x="-12.8429" y="0" width="84.6857" height="86.8" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1.22083"/>
+<feGaussianBlur stdDeviation="0.562542"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.192157 0 0 0 0 0.0745098 0 0 0 0 0.227451 0 0 0 0.0418093 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_706_218"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="3.37545"/>
+<feGaussianBlur stdDeviation="1.55536"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.192157 0 0 0 0 0.0745098 0 0 0 0 0.227451 0 0 0 0.06 0"/>
+<feBlend mode="normal" in2="effect1_dropShadow_706_218" result="effect2_dropShadow_706_218"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="8.12679"/>
+<feGaussianBlur stdDeviation="3.7447"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.192157 0 0 0 0 0.0745098 0 0 0 0 0.227451 0 0 0 0.0781907 0"/>
+<feBlend mode="normal" in2="effect2_dropShadow_706_218" result="effect3_dropShadow_706_218"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="26.9571"/>
+<feGaussianBlur stdDeviation="12.4214"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.192157 0 0 0 0 0.0745098 0 0 0 0 0.227451 0 0 0 0.12 0"/>
+<feBlend mode="normal" in2="effect3_dropShadow_706_218" result="effect4_dropShadow_706_218"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect4_dropShadow_706_218" result="shape"/>
+</filter>
+<linearGradient id="paint0_linear_706_218" x1="29.5" y1="0" x2="29.5" y2="35" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FA8C5D"/>
+<stop offset="1" stop-color="#CC2727"/>
+</linearGradient>
+</defs>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/frameworks/alpine.svg b/smoke/astro.build-main/src/icons/frameworks/alpine.svg
new file mode 100644
index 000000000..6daac0de4
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/frameworks/alpine.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 190 190">
+ <path fill="currentColor" fill-rule="evenodd" d="m148 52 42 42-42 42-42-42 42-42Z" clip-rule="evenodd" opacity=".4"/>
+ <path fill="currentColor" fill-rule="evenodd" d="m42 52 88 87H45L0 94l42-42Z" clip-rule="evenodd"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/frameworks/js.svg b/smoke/astro.build-main/src/icons/frameworks/js.svg
new file mode 100644
index 000000000..13b7847e2
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/frameworks/js.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 190 190">
+ <path fill="currentColor" fill-rule="evenodd" d="M25 20h140c3 0 5 2 5 5v140c0 3-2 5-5 5H25c-3 0-5-2-5-5V25c0-3 2-5 5-5Zm111 126c-7 0-11-4-14-9l-12 7c4 8 13 14 26 14s23-7 23-19-7-17-19-23l-3-1c-6-3-9-4-9-9 0-3 3-6 7-6s7 2 9 6l11-7c-5-8-11-11-20-11-13 0-21 8-21 19s7 17 17 21l4 1c6 3 10 5 10 10 0 4-4 7-9 7Zm-55 0c-5 0-7-4-9-8l-12 7c4 7 10 13 22 13s21-6 21-21V89H88v48c0 7-2 9-7 9Z" clip-rule="evenodd"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/frameworks/lit.svg b/smoke/astro.build-main/src/icons/frameworks/lit.svg
new file mode 100644
index 000000000..6c37291ec
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/frameworks/lit.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 190 190">
+ <path fill="currentColor" d="M95 143V79l33-33v65l-33 32Zm-65 0 32 33v-65H46"/>
+ <path fill="currentColor" d="M62 111V46l33-32v65l-33 32Zm66 65v-65l32-32v64l-32 33Zm-98-33V79l32 32"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/frameworks/preact.svg b/smoke/astro.build-main/src/icons/frameworks/preact.svg
new file mode 100644
index 000000000..d2fb20945
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/frameworks/preact.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 190 190">
+ <path fill="currentColor" d="m101 61 24-10c6-2 12-3 17-2 4 0 7 1 9 4 1 2 2 5 1 9l-6 16-10 13a181 181 0 0 0-35-30ZM54 91l-9-13c-4-6-6-11-7-16 0-4 0-7 2-9 2-3 4-4 9-4 4-1 10 0 17 2l24 10a190 190 0 0 0-36 30Z"/>
+ <path fill="currentColor" fill-rule="evenodd" d="M58 95a174 174 0 0 1 37-30 182 182 0 0 1 37 30 174 174 0 0 1-37 30 182 182 0 0 1-37-30Zm37 13a13 13 0 1 0 0-26 13 13 0 0 0 0 26Z" clip-rule="evenodd"/>
+ <path fill="currentColor" d="m54 99-9 13c-4 6-6 11-7 16 0 4 0 7 2 9 2 3 4 4 9 4 4 1 10 0 17-2l24-10a191 191 0 0 1-36-30Zm47 30 24 10c6 2 12 3 17 2 4 0 7-1 9-4 1-2 2-5 1-9l-6-16-10-13a181 181 0 0 1-35 30Z"/>
+ <path fill="currentColor" fill-rule="evenodd" d="M178 48 95 0 13 48v95l82 47 83-47V48ZM95 58c10-6 20-10 28-13 7-2 14-3 19-2 6 0 10 2 13 6s4 9 3 14c-1 6-4 12-7 18l-11 14 11 14c3 6 6 12 7 18 1 5 0 10-3 14s-7 6-13 6c-5 1-12 0-19-2-8-3-18-7-28-13-10 6-19 10-28 13-7 2-13 3-19 2-5 0-10-2-13-6s-3-9-2-14c1-6 3-12 7-18l10-14-10-14c-4-6-6-12-7-18-1-5-1-10 2-14s8-6 13-6c6-1 12 0 19 2 9 3 18 7 28 13Z" clip-rule="evenodd"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/frameworks/react.svg b/smoke/astro.build-main/src/icons/frameworks/react.svg
new file mode 100644
index 000000000..49a29f662
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/frameworks/react.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 190 190">
+ <path fill="currentColor" d="M190 95c0-13-16-25-40-32 6-25 3-45-8-51l-8-2v9l4 1c5 3 8 14 6 29l-2 11-25-4c-5-7-10-14-16-19 13-12 25-18 33-18v-9c-11 0-25 8-39 21-14-13-28-21-39-21v9c8 0 20 6 33 18L73 56l-25 4-2-11c-2-15 1-26 6-29l4-1v-9l-9 2c-10 7-13 26-7 51C16 70 0 82 0 95c0 12 16 24 40 32-6 24-3 44 8 50 2 2 5 2 8 2 11 0 25-7 39-21 14 14 28 21 39 21l9-2c10-6 13-26 7-51 24-7 40-19 40-31Zm-50-26-6 15a184 184 0 0 0-10-18l16 3Zm-18 41-9 15a202 202 0 0 1-35 0 213 213 0 0 1-18-30 202 202 0 0 1 17-31 202 202 0 0 1 35 0 213 213 0 0 1 18 31l-8 15Zm12-5 6 15-16 4a212 212 0 0 0 10-19Zm-39 41-11-12a240 240 0 0 0 22 0l-11 12Zm-29-22-16-4 6-15a183 183 0 0 0 10 19Zm29-81 11 12a240 240 0 0 0-22 0l11-12ZM66 66a214 214 0 0 0-10 18l-6-15 16-3Zm-35 48c-14-6-22-13-22-19s8-14 22-20l11-4 9 24-9 23-11-4Zm21 56c-5-3-8-15-6-30l2-11 25 4c5 7 10 14 16 19-13 12-25 19-33 19l-4-1Zm92-30c2 15-1 26-6 29l-4 1c-8 0-20-6-33-18 6-5 11-12 16-19l25-4 2 11Zm15-26-11 4-9-23 9-24 11 4c14 6 22 14 22 20s-9 13-22 19Z"/>
+ <path fill="currentColor" d="M95 112a18 18 0 1 0 0-35 18 18 0 0 0 0 35Z"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/frameworks/solid.svg b/smoke/astro.build-main/src/icons/frameworks/solid.svg
new file mode 100644
index 000000000..98db7ef55
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/frameworks/solid.svg
@@ -0,0 +1,6 @@
+<svg width="190" height="190" viewBox="0 0 190 190" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M127.61 135.052C121.624 127.573 113.542 122.052 104.399 119.195C95.2561 116.338 85.4683 116.275 76.2893 119.014L10 140.398C10 140.398 66.6667 183.165 110.503 172.473L113.711 171.404C131.887 166.058 138.302 148.951 127.61 135.052Z" fill="currentColor" fill-opacity="0.85"/>
+ <path d="M125.783 81.7735C134.926 84.6307 143.008 90.152 148.994 97.6304C154.34 106.184 155.409 114.737 151.132 122.222L129.748 160.712L129.314 160.639C134.288 153.175 134.123 143.518 127.61 135.052C121.624 127.573 113.542 122.052 104.399 119.195C95.2561 116.338 85.4683 116.275 76.2893 119.014L10 140.398L31.3836 102.976L97.673 81.5926C106.852 78.8533 116.64 78.9163 125.783 81.7735Z" fill="currentColor" fill-opacity="0.65"/>
+ <path d="M57.0441 50.5863L61.3208 49.5171C104.088 39.8945 160.755 81.5926 160.755 81.5926L139.663 88.7366C135.466 85.6958 130.783 83.3362 125.783 81.7735C116.64 78.9163 106.852 78.8533 97.673 81.5926L51.96 96.3387C48.5484 93.9348 45.5491 91.1335 43.1447 88.0077C33.5221 73.0392 38.868 55.9322 57.0441 50.5863Z" fill="currentColor" fill-opacity="0.45"/>
+ <path d="M79.4969 17.4417C123.333 7.81904 180 49.5172 180 49.5172L160.755 81.5926C160.755 81.5926 104.088 39.8945 61.3208 49.5172L57.0441 50.5863C51.0678 52.344 46.4787 55.3732 43.3525 59.1798C43.2832 59.1664 43.2139 59.1531 43.1447 59.1398L59.1824 31.3411L61.3208 28.1335C64.5283 23.8568 69.8742 20.6492 76.2893 18.5109L79.4969 17.4417Z" fill="currentColor" fill-opacity="0.3"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/frameworks/svelte.svg b/smoke/astro.build-main/src/icons/frameworks/svelte.svg
new file mode 100644
index 000000000..c44162190
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/frameworks/svelte.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 190 190">
+ <path fill="currentColor" fill-rule="evenodd" d="M87 14c23-15 56-8 72 15v1a50 50 0 0 1 9 38c-1 6-4 12-7 17a50 50 0 0 1-3 51c-4 5-8 10-14 13l-41 26a54 54 0 0 1-81-33v-20c1-7 3-13 7-18a50 50 0 0 1 2-50c4-6 9-10 14-14l42-26ZM63 161c6 2 13 3 20 1l8-4 41-26a28 28 0 0 0 13-31l-5-11a33 33 0 0 0-35-13l-9 4-15 10a9 9 0 0 1-9 0 10 10 0 0 1-6-6v-4a9 9 0 0 1 4-6l41-26 3-1a10 10 0 0 1 10 4l2 6v1l1 1c6 2 12 4 16 8l3 1v-2l1-4a30 30 0 0 0-5-23 33 33 0 0 0-35-13l-8 4-42 26a28 28 0 0 0-13 19 30 30 0 0 0 6 23 33 33 0 0 0 35 13c3 0 5-2 8-3l16-10 2-2a10 10 0 0 1 12 8l1 3a9 9 0 0 1-4 6l-42 26-2 1a10 10 0 0 1-12-10v-1l-2-1c-6-1-11-4-16-8l-2-1-1 2-1 4a30 30 0 0 0 5 23c4 5 10 10 16 12Z" clip-rule="evenodd"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/frameworks/vue.svg b/smoke/astro.build-main/src/icons/frameworks/vue.svg
new file mode 100644
index 000000000..fe70cbc99
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/frameworks/vue.svg
@@ -0,0 +1,4 @@
+<svg width="190" height="190" viewBox="0 0 190 190" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M149.4 17.0008H185.426L95.3608 172.999L5.2959 17.0008H41.3223L95.3611 110.598L149.4 17.0008Z" fill="currentColor"/>
+ <path d="M116.16 17.0007L95.3604 53.0268L74.5613 17.0007H41.3223L95.3611 110.598L149.4 17.0007H116.16Z" fill="currentColor" fill-opacity="0.45"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/img.svg b/smoke/astro.build-main/src/icons/img.svg
new file mode 100644
index 000000000..090beabcd
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/img.svg
@@ -0,0 +1,9 @@
+<svg width="198" height="156" viewBox="0 0 198 156" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M7.75293 0.613281C3.6836 0.613281 0.384766 3.91212 0.384766 7.98145V148.468C0.384766 152.537 3.68361 155.836 7.75294 155.836H190.483C194.553 155.836 197.852 152.537 197.852 148.468V7.98145C197.852 3.91212 194.553 0.613281 190.483 0.613281H7.75293ZM72.661 19.2793H63.1662V21.6528H58.4188V24.027H53.6714V28.7747H51.2975V33.5212H46.5504V38.2688H44.1766V47.7636H46.5504V52.5108H51.2975V57.2591H53.6714V62.0062H58.4188V64.3794H63.1662V66.7533H72.661V64.3794H77.4084V62.0062H82.1558V57.2591H84.5293V52.5108H89.2771V47.7636H91.6506V38.2688H89.2771V33.5212H84.5293V28.7747H82.1558V24.027H77.4084V21.6528H72.661V19.2793ZM45.09 128.835H38.6992V137.964H166.514V129.748H162.862V121.531H159.21V114.227H154.645V107.837H150.081V98.7069H146.429V91.4032H141.864V81.3606H137.299V74.9699H133.647V69.4921H129.995V63.1014H124.518V69.4921H120.866V74.9699H117.214V81.3606H113.562V91.4032H109.91V98.7069H105.345V107.837H99.8676V114.227H90.738V107.837H85.2603V101.446H77.9566V95.055H67.001V101.446H62.4362V107.837H56.9585V114.227H51.4807V120.618H45.09V128.835Z" fill="url(#paint0_linear_438_862)"/>
+<defs>
+<linearGradient id="paint0_linear_438_862" x1="70.4264" y1="0.613281" x2="70.4264" y2="155.836" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FFB4B4"/>
+<stop offset="1" stop-color="#C487F0"/>
+</linearGradient>
+</defs>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logo-single-color.svg b/smoke/astro.build-main/src/icons/logo-single-color.svg
new file mode 100644
index 000000000..9ada56d3b
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logo-single-color.svg
@@ -0,0 +1,4 @@
+<svg width="256" height="256" fill="none" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg">
+ <path id="a" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M163.008 18.929c1.944 2.413 2.935 5.67 4.917 12.181l43.309 142.27a180.277 180.277 0 00-51.778-17.53l-28.198-95.29a3.67 3.67 0 00-7.042.01l-27.857 95.232a180.225 180.225 0 00-52.01 17.557l43.52-142.281c1.99-6.502 2.983-9.752 4.927-12.16a15.999 15.999 0 016.484-4.798c2.872-1.154 6.271-1.154 13.07-1.154h31.085c6.807 0 10.211 0 13.086 1.157a16.004 16.004 0 016.487 4.806z" />
+ <path id="flame" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M168.19 180.151c-7.139 6.105-21.39 10.268-37.804 10.268-20.147 0-37.033-6.272-41.513-14.707-1.602 4.835-1.961 10.367-1.961 13.902 0 0-1.056 17.355 11.015 29.426 0-6.268 5.081-11.349 11.349-11.349 10.743 0 10.731 9.373 10.721 16.977v.679c0 11.542 7.054 21.436 17.086 25.606a23.27 23.27 0 01-2.339-10.2c0-11.008 6.463-15.107 13.974-19.87 5.976-3.79 12.616-8.001 17.192-16.449a31.024 31.024 0 003.743-14.82c0-3.299-.513-6.479-1.463-9.463z" />
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logo.svg b/smoke/astro.build-main/src/icons/logo.svg
new file mode 100644
index 000000000..f375b2356
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logo.svg
@@ -0,0 +1,4 @@
+<svg width="256" height="256" fill="none" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg">
+ <path id="a" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M163.008 18.929c1.944 2.413 2.935 5.67 4.917 12.181l43.309 142.27a180.277 180.277 0 00-51.778-17.53l-28.198-95.29a3.67 3.67 0 00-7.042.01l-27.857 95.232a180.225 180.225 0 00-52.01 17.557l43.52-142.281c1.99-6.502 2.983-9.752 4.927-12.16a15.999 15.999 0 016.484-4.798c2.872-1.154 6.271-1.154 13.07-1.154h31.085c6.807 0 10.211 0 13.086 1.157a16.004 16.004 0 016.487 4.806z" />
+ <path id="flame" fill="#FF5D01" fill-rule="evenodd" clip-rule="evenodd" d="M168.19 180.151c-7.139 6.105-21.39 10.268-37.804 10.268-20.147 0-37.033-6.272-41.513-14.707-1.602 4.835-1.961 10.367-1.961 13.902 0 0-1.056 17.355 11.015 29.426 0-6.268 5.081-11.349 11.349-11.349 10.743 0 10.731 9.373 10.721 16.977v.679c0 11.542 7.054 21.436 17.086 25.606a23.27 23.27 0 01-2.339-10.2c0-11.008 6.463-15.107 13.974-19.87 5.976-3.79 12.616-8.001 17.192-16.449a31.024 31.024 0 003.743-14.82c0-3.299-.513-6.479-1.463-9.463z" />
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/alpinejs.svg b/smoke/astro.build-main/src/icons/logos/alpinejs.svg
new file mode 100644
index 000000000..615cb07b3
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/alpinejs.svg
@@ -0,0 +1,12 @@
+<svg width="804" height="220" viewBox="0 0 804 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_643_230)">
+<path d="M268.472 151.666L273.225 136.331H303.375L308.129 151.666H330.074L302.268 64.4639H275.765L246.332 151.666H268.472ZM298.622 120.931H278.5L288.724 89.0262L298.622 120.931ZM364.261 151.666V61.9947H343.423V151.666H364.261ZM407.239 182.727L407.238 148.972L407.303 149.031C407.957 149.634 408.657 150.175 409.402 150.653L409.779 150.887C412.948 152.793 416.898 153.746 421.63 153.746C427.057 153.746 432.147 152.403 436.9 149.717C441.654 147.031 445.496 143.154 448.426 138.086C451.357 133.017 452.822 126.888 452.822 119.697C452.822 112.462 451.378 106.311 448.491 101.242C445.605 96.1739 441.86 92.2968 437.259 89.611C432.657 86.9252 427.795 85.5823 422.672 85.5823C418.808 85.5823 415.162 86.5678 411.732 88.5388C409.263 89.958 407.137 92.0003 405.354 94.6658L405.097 95.0587L403.397 87.6616H386.401V182.727H407.239ZM418.309 134.772C416.312 134.772 414.467 134.404 412.774 133.667C411.081 132.931 409.735 131.913 408.737 130.613C407.738 129.313 407.239 127.797 407.239 126.065H407.238V115.538L407.246 115.091C407.302 113.173 407.725 111.474 408.515 109.995L408.704 109.657C409.681 107.989 411.038 106.701 412.774 105.791C414.511 104.881 416.486 104.426 418.7 104.426C421.435 104.426 423.79 105.054 425.765 106.311C427.74 107.567 429.271 109.343 430.356 111.639C431.441 113.935 431.984 116.621 431.984 119.697C431.984 123.335 431.257 126.259 429.803 128.469C428.348 130.678 426.568 132.281 424.463 133.277C422.357 134.274 420.306 134.772 418.309 134.772ZM481.8 79.4092C485.62 79.4092 488.637 78.402 490.851 76.3877C493.065 74.3733 494.172 71.525 494.172 67.8429C494.172 64.2473 493.065 61.3774 490.851 59.2331C488.637 57.0888 485.62 56.0166 481.8 56.0166C477.849 56.0166 474.799 57.0888 472.65 59.2331C470.501 61.3774 469.427 64.2473 469.427 67.8429C469.427 71.525 470.501 74.3733 472.65 76.3877C474.799 78.402 477.849 79.4092 481.8 79.4092ZM492.218 151.666V87.2717H471.381V151.666H492.218ZM537.02 151.666V124.7L537.024 124.038C537.073 119.668 537.616 116.094 538.652 113.317L538.811 112.906C540.004 109.939 541.6 107.784 543.597 106.441C545.594 105.098 547.786 104.426 550.174 104.426C552.518 104.426 554.515 105.239 556.165 106.863C557.814 108.488 558.639 110.989 558.639 114.368V151.666H579.607V114.368C579.607 108.78 578.782 103.82 577.133 99.4879C575.483 95.1559 572.911 91.7553 569.416 89.2861C565.922 86.8169 561.418 85.5823 555.904 85.5823C551.085 85.5823 546.777 86.9252 542.978 89.611C540.62 91.2781 538.572 93.5376 536.833 96.3896L536.654 96.6891L534.545 87.6616H516.182V151.666H537.02ZM625.646 153.746C630.942 153.746 635.62 152.793 639.679 150.887C643.738 148.981 647.037 146.403 649.577 143.154C652.117 139.905 653.712 136.288 654.363 132.303H633.656C633.091 133.992 632.093 135.227 630.66 136.006C629.227 136.786 627.556 137.176 625.646 137.176C623.302 137.176 621.359 136.624 619.818 135.519C618.277 134.414 617.115 132.866 616.334 130.873C615.553 128.88 615.162 126.519 615.162 123.79L615.163 123.92H653.712C654.74 119.324 654.94 114.854 654.313 110.51L654.2 109.787C653.441 105.217 651.834 101.112 649.382 97.4735C646.929 93.8347 643.705 90.9431 639.712 88.7988C635.718 86.6544 631.029 85.5823 625.646 85.5823C620.219 85.5823 615.14 86.9252 610.408 89.611C605.676 92.2968 601.856 96.1631 598.947 101.21C596.039 106.257 594.584 112.311 594.584 119.372C594.584 126.433 596.05 132.541 598.98 137.696C601.91 142.851 605.741 146.815 610.473 149.587C615.205 152.36 620.263 153.746 625.646 153.746ZM635.543 113.394H615.255L615.257 113.376C615.415 111.599 615.771 110.019 616.325 108.636L616.497 108.228C617.387 106.213 618.646 104.675 620.274 103.614C621.902 102.553 623.823 102.022 626.037 102.022C628.034 102.022 629.672 102.423 630.953 103.224C632.234 104.026 633.221 105.087 633.916 106.408C634.611 107.729 635.077 109.17 635.316 110.729C635.435 111.509 635.509 112.283 635.536 113.052L635.543 113.394ZM676.503 152.836C680.628 152.836 684.035 151.591 686.727 149.1C689.418 146.609 690.764 143.436 690.764 139.58C690.764 135.725 689.418 132.519 686.727 129.963C684.035 127.407 680.628 126.129 676.503 126.129C672.379 126.129 669.026 127.407 666.443 129.963C663.86 132.519 662.568 135.725 662.568 139.58C662.568 143.392 663.86 146.555 666.443 149.067C669.026 151.58 672.379 152.836 676.503 152.836ZM716.291 79.4092C720.111 79.4092 723.128 78.402 725.342 76.3877C727.556 74.3733 728.663 71.525 728.663 67.8429C728.663 64.2473 727.556 61.3774 725.342 59.2331C723.128 57.0888 720.111 56.0166 716.291 56.0166C712.47 56.0166 709.432 57.0888 707.174 59.2331C704.917 61.3774 703.788 64.2473 703.788 67.8429C703.788 71.525 704.917 74.3733 707.174 76.3877C709.432 78.402 712.47 79.4092 716.291 79.4092ZM703.853 185.001C711.45 185.001 717.202 182.932 721.109 178.795C725.017 174.658 726.97 167.673 726.97 157.839V87.4017H706.002V157.45C706.002 161.175 705.34 163.666 704.016 164.922C702.692 166.179 700.684 166.807 697.992 166.807C695.909 166.807 693.651 166.503 691.22 165.897C688.789 165.29 686.64 164.619 684.773 163.883V181.752C687.769 182.575 690.743 183.322 693.695 183.994C696.647 184.665 700.033 185.001 703.853 185.001ZM775.679 153.746C781.062 153.746 785.881 152.749 790.135 150.757C794.389 148.764 797.743 146.176 800.196 142.992C802.648 139.808 803.875 136.44 803.875 132.887C803.875 128.989 802.616 125.74 800.098 123.14C797.58 120.541 794.129 118.375 789.744 116.642L772.032 109.56C769.297 108.607 767.93 107.307 767.93 105.661C767.93 104.448 768.581 103.473 769.883 102.737C771.185 102 772.965 101.632 775.223 101.632C777.958 101.632 779.911 102.141 781.083 103.159C782.256 104.177 782.842 105.379 782.842 106.766H801.921C801.878 100.614 799.555 95.5458 794.954 91.5604C790.352 87.575 783.775 85.5823 775.223 85.5823C766.106 85.5823 758.922 87.3367 753.669 90.8456C748.416 94.3545 745.789 98.9464 745.789 104.621C745.789 108.65 747.037 112.126 749.534 115.05C752.03 117.975 755.579 120.39 760.18 122.296L775.744 128.339C777.393 128.989 778.609 129.638 779.39 130.288C780.172 130.938 780.562 131.804 780.562 132.887C780.562 133.71 780.28 134.479 779.716 135.194C779.152 135.909 778.305 136.483 777.176 136.916C776.048 137.349 774.615 137.566 772.879 137.566C770.013 137.566 767.745 137.133 766.074 136.266C764.402 135.4 763.523 133.84 763.436 131.588H744.617C744.574 136.57 745.865 140.696 748.492 143.966C751.118 147.237 754.776 149.685 759.464 151.309C764.153 152.934 769.557 153.746 775.679 153.746Z" fill="black"/>
+<path opacity="0.4" fill-rule="evenodd" clip-rule="evenodd" d="M165.911 58.6899L213.118 105.59L165.911 152.49L118.704 105.59L165.911 58.6899Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M47.8924 58.6899L145.759 155.92H51.3445L0.685059 105.59L47.8924 58.6899Z" fill="black"/>
+</g>
+<defs>
+<clipPath id="clip0_643_230">
+<rect width="804" height="129.001" fill="white" transform="translate(0 56)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/cloudflare.svg b/smoke/astro.build-main/src/icons/logos/cloudflare.svg
new file mode 100644
index 000000000..35e54bfe2
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/cloudflare.svg
@@ -0,0 +1,16 @@
+<svg width="1087" height="220" viewBox="0 0 1087 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M1080.97 148.7C1077.57 148.7 1074.87 146 1074.87 142.6C1074.87 139.3 1077.57 136.5 1080.97 136.5C1084.27 136.5 1087.07 139.2 1087.07 142.6C1087.07 146 1084.27 148.7 1080.97 148.7ZM1080.97 137.7C1078.27 137.7 1076.07 139.9 1076.07 142.6C1076.07 145.3 1078.27 147.5 1080.97 147.5C1083.67 147.5 1085.87 145.3 1085.87 142.6C1085.87 139.9 1083.67 137.7 1080.97 137.7ZM1084.07 145.8H1082.67L1081.47 143.5H1079.87V145.8H1078.57V139.1H1081.77C1083.17 139.1 1084.07 140 1084.07 141.3C1084.07 142.3 1083.47 143 1082.67 143.3L1084.07 145.8ZM1081.67 142.3C1082.17 142.3 1082.67 142 1082.67 141.3C1082.67 140.5 1082.27 140.3 1081.67 140.3H1079.67V142.3H1081.67Z" fill="currentColor"/>
+ <path d="M445.474 135.9H461.074V178.4H488.174V192H445.474V135.9Z" fill="currentColor"/>
+ <path d="M504.274 164.1V164C504.274 147.9 517.274 134.8 534.574 134.8C551.874 134.8 564.674 147.7 564.674 163.8V164C564.674 180.1 551.674 193.2 534.374 193.2C517.174 193.1 504.274 180.2 504.274 164.1ZM548.874 164.1V164C548.874 155.9 543.074 148.9 534.474 148.9C525.974 148.9 520.274 155.8 520.274 163.9V164.1C520.274 172.2 526.074 179.2 534.574 179.2C543.174 179.1 548.874 172.2 548.874 164.1Z" fill="currentColor"/>
+ <path d="M583.774 167.4V135.9H599.574V167.1C599.574 175.2 603.674 179 609.874 179C616.074 179 620.174 175.3 620.174 167.5V135.9H635.974V167C635.974 185.1 625.674 193 609.674 193C593.774 193.1 583.774 185 583.774 167.4Z" fill="currentColor"/>
+ <path d="M659.774 135.9H681.474C701.474 135.9 713.174 147.4 713.174 163.6V163.8C713.174 180 701.374 192 681.174 192H659.874L659.774 135.9ZM681.674 178.2C690.974 178.2 697.174 173.1 697.174 164V163.8C697.174 154.8 690.974 149.6 681.674 149.6H675.374V178.1L681.674 178.2Z" fill="currentColor"/>
+ <path d="M735.674 135.9H780.574V149.6H751.174V159.1H777.774V172H751.174V192H735.674V135.9Z" fill="currentColor"/>
+ <path d="M802.174 135.9H817.674V178.4H844.874V192H802.174V135.9Z" fill="currentColor"/>
+ <path d="M885.474 135.5H900.474L924.374 192H907.674L903.574 182H881.974L877.974 192H861.674L885.474 135.5ZM899.174 169.9L892.974 154L886.674 169.9H899.174Z" fill="currentColor"/>
+ <path d="M944.374 135.9H970.874C979.474 135.9 985.374 138.1 989.174 142C992.474 145.2 994.174 149.5 994.174 155.1V155.3C994.174 163.9 989.574 169.6 982.674 172.5L996.074 192.1H978.074L966.774 175.1H959.974V192.1H944.474L944.374 135.9ZM970.174 162.9C975.474 162.9 978.474 160.3 978.474 156.3V156C978.474 151.6 975.274 149.4 970.074 149.4H959.874V162.9H970.174Z" fill="currentColor"/>
+ <path d="M1016.57 135.9H1061.67V149.2H1031.97V157.6H1058.87V169.9H1031.97V178.8H1062.07V192H1016.57V135.9Z" fill="currentColor"/>
+ <path d="M411.474 170.7C409.274 175.6 404.674 179.1 398.674 179.1C390.174 179.1 384.374 172 384.374 164V163.8C384.374 155.7 390.074 148.8 398.574 148.8C404.974 148.8 409.874 152.7 411.874 158.1H428.274C425.674 144.7 413.874 134.8 398.674 134.8C381.374 134.8 368.374 147.9 368.374 164V164.2C368.374 180.3 381.174 193.2 398.474 193.2C413.274 193.2 424.874 183.6 427.874 170.8L411.474 170.7Z" fill="currentColor"/>
+ <path d="M313.574 130.6L270.674 106L263.274 102.8L87.7744 104.1V193.1L313.574 193.2V130.6Z" fill="white"/>
+ <path d="M235.474 185C237.574 177.8 236.774 171.2 233.274 166.3C230.074 161.8 224.674 159.2 218.174 158.9L95.0744 157.3C94.2744 157.3 93.5744 156.9 93.1744 156.3C92.7744 155.7 92.6744 154.9 92.8744 154.1C93.2744 152.9 94.4744 152 95.7744 151.9L219.974 150.3C234.674 149.6 250.674 137.7 256.274 123.1L263.374 104.6C263.674 103.8 263.774 103 263.574 102.2C255.574 66 223.274 39 184.674 39C149.074 39 118.874 62 108.074 93.9C101.074 88.7 92.1744 85.9 82.5744 86.8C65.4744 88.5 51.7744 102.2 50.0744 119.3C49.6744 123.7 49.9744 128 50.9744 132C23.0744 132.8 0.774414 155.6 0.774414 183.7C0.774414 186.2 0.974414 188.7 1.27441 191.2C1.47441 192.4 2.47441 193.3 3.67441 193.3H230.874C232.174 193.3 233.374 192.4 233.774 191.1L235.474 185Z" fill="currentColor"/>
+ <path d="M274.674 105.9C273.574 105.9 272.374 105.9 271.274 106C270.474 106 269.774 106.6 269.474 107.4L264.674 124.1C262.574 131.3 263.374 137.9 266.874 142.8C270.074 147.3 275.474 149.9 281.974 150.2L308.174 151.8C308.974 151.8 309.674 152.2 310.074 152.8C310.474 153.4 310.574 154.3 310.374 155C309.974 156.2 308.774 157.1 307.474 157.2L280.174 158.8C265.374 159.5 249.474 171.4 243.874 186L241.874 191.1C241.474 192.1 242.174 193.1 243.274 193.1H337.074C338.174 193.1 339.174 192.4 339.474 191.3C341.074 185.5 341.974 179.4 341.974 173.1C341.974 136 311.874 105.9 274.674 105.9Z" fill="currentColor"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/contentful.svg b/smoke/astro.build-main/src/icons/logos/contentful.svg
new file mode 100644
index 000000000..b8da2ded5
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/contentful.svg
@@ -0,0 +1,24 @@
+<svg width="811" height="220" viewBox="0 0 811 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_640_499)">
+<path d="M80.3956 193.012C76.3307 192.577 72.2423 192.343 68.2126 191.568C57.4896 189.547 47.2627 185.46 38.1016 179.537C37.7776 179.322 37.4676 179.087 37.1735 178.833C37.0795 178.763 37.056 178.61 36.9033 178.281C38.3366 178.093 39.6994 177.929 41.0622 177.718C44.0459 177.251 46.9047 176.188 49.4683 174.593C52.0319 172.998 54.2476 170.904 55.9833 168.435C57.719 165.966 58.9391 163.172 59.5707 160.222C60.2024 157.272 60.2327 154.224 59.6598 151.262C59.5541 150.698 59.2251 149.959 59.6598 149.583C60.0945 149.208 60.8346 149.806 61.3868 150.088C68.4342 153.992 76.3926 155.956 84.4488 155.781C96.3349 155.638 107.704 150.901 116.169 142.564C123.829 135.252 135.295 135.111 142.579 142.259C144.342 143.96 145.748 145.994 146.716 148.242C147.684 150.491 148.195 152.909 148.219 155.357C148.243 157.805 147.78 160.233 146.856 162.5C145.932 164.767 144.566 166.828 142.838 168.563C131.458 179.995 116.982 187.857 101.19 191.181C96.5298 192.06 91.8227 192.671 87.0922 193.012H80.3956Z" fill="black"/>
+<path d="M810.002 143.832C809.379 145.354 808.258 146.621 806.823 147.427C805.387 148.232 803.721 148.529 802.096 148.269C800.416 148.116 798.712 148.269 797.02 148.21C796.137 148.232 795.258 148.076 794.437 147.749C793.616 147.422 792.87 146.932 792.244 146.309C791.618 145.686 791.125 144.942 790.795 144.123C790.465 143.303 790.304 142.426 790.324 141.543C790.324 113.796 790.324 86.0447 790.324 58.2896C790.286 56.572 790.931 54.9095 792.118 53.6664C793.305 52.4233 794.937 51.7011 796.656 51.658C799.062 51.5054 801.475 51.5054 803.881 51.658C805.258 51.7274 806.581 52.2138 807.674 53.0524C808.768 53.891 809.58 55.0422 810.002 56.353V143.832Z" fill="black"/>
+<path d="M494.771 117.388H469.336C467.21 117.388 467.151 117.493 467.856 119.442C470.852 127.658 479.451 132.611 488.122 131.836C494.286 131.396 500.289 129.668 505.744 126.766C506.55 126.238 507.515 126.009 508.472 126.119C509.429 126.228 510.318 126.669 510.984 127.364C513.523 129.709 515.879 132.244 518.033 134.947C519.913 137.517 519.666 139.008 517.116 140.874C507.024 148.436 494.393 151.801 481.871 150.264C476.932 149.81 472.103 148.533 467.586 146.485C463.486 144.677 459.787 142.075 456.702 138.83C453.616 135.584 451.206 131.759 449.611 127.576C445.322 116.425 444.453 104.958 448.859 93.6897C454.38 79.5344 464.966 71.1891 480.133 69.3228C487.017 68.4247 494.013 69.0212 500.645 71.0717C514.673 75.5084 521.792 85.6496 524.283 99.6171C524.98 103.785 525.243 108.013 525.07 112.235C524.929 115.956 523.484 117.388 519.736 117.399C511.383 117.399 503.042 117.399 494.689 117.399L494.771 117.388ZM486.888 100.004C492.562 100.004 498.237 100.004 503.911 100.004C505.556 100.004 505.815 99.4528 505.321 98.0443C504.18 94.6916 502.025 91.7756 499.153 89.699C495.347 86.9524 491.082 86.612 486.524 86.8351C478.37 87.2576 472.661 91.0957 468.901 98.1617C468.126 99.6171 468.408 100.028 470.076 100.004C475.668 100.004 481.284 100.004 486.888 100.004Z" fill="black"/>
+<path d="M317.042 112.798C317.418 126.601 306.269 142.353 290.279 147.846C285.11 149.599 279.631 150.249 274.194 149.756C268.758 149.262 263.485 147.636 258.717 144.982C253.948 142.328 249.789 138.705 246.508 134.346C243.227 129.987 240.897 124.99 239.668 119.676C236.601 106.683 238.493 94.4292 247.046 83.7716C250.172 79.7856 254.091 76.4898 258.556 74.0919C263.02 71.694 267.933 70.2461 272.986 69.8393C283.759 68.7829 293.639 71.013 302.169 77.7738C312.237 85.8022 316.96 96.4832 317.042 112.798ZM297.951 110.298C297.98 108.283 297.838 106.269 297.528 104.277C296.671 100.098 294.51 96.2976 291.357 93.4213C288.204 90.545 284.22 88.7407 279.976 88.267C276.042 87.9462 272.105 88.8563 268.712 90.8711C265.318 92.8859 262.636 95.9056 261.038 99.5114C258.688 104.476 258.618 109.688 259.405 114.97C259.84 117.642 260.826 120.195 262.302 122.467C263.777 124.738 265.709 126.678 267.975 128.164C270.24 129.649 272.791 130.648 275.464 131.096C278.136 131.545 280.873 131.433 283.501 130.768C287.904 129.547 291.749 126.841 294.383 123.11C297.017 119.379 298.278 114.852 297.951 110.298V110.298Z" fill="black"/>
+<path d="M77.9051 26.0587C106.876 26.3639 126.59 34.5449 142.944 50.6369C146.482 54.0704 148.51 58.7676 148.581 63.6949C148.653 68.6223 146.762 73.3763 143.326 76.9111C139.889 80.4458 135.187 82.4718 130.255 82.5434C125.323 82.6149 120.565 80.7261 117.027 77.2925C110.514 70.7183 102.228 66.1793 93.1779 64.2288C82.4931 61.9773 71.3555 63.5782 61.7394 68.7477C61.1755 69.0411 60.5646 69.7454 59.9889 69.3932C59.2018 68.912 59.8597 68.0787 59.9889 67.4331C60.5382 64.461 60.4844 61.409 59.8308 58.4581C59.1771 55.5072 57.937 52.7175 56.1839 50.2545C54.4308 47.7915 52.2004 45.7053 49.625 44.1197C47.0497 42.5341 44.1818 41.4813 41.1916 41.0239C40.5572 40.9183 39.8875 40.9417 39.2414 40.8713C38.5952 40.8009 37.7141 41.1413 37.4791 40.437C37.2441 39.7328 38.1958 39.4863 38.6539 39.1577C42.3869 36.7492 46.317 34.6603 50.4023 32.9133C59.6129 28.9344 71.4318 25.8122 77.9051 26.0587Z" fill="black"/>
+<path d="M761.658 138.879C759.051 141.44 756.139 143.671 752.987 145.522C742.179 151.532 727.541 150.816 718.4 143.632C711.257 138.022 707.827 130.287 706.159 121.625C705.554 118.362 705.27 115.048 705.313 111.73C705.313 100.673 705.313 89.6168 705.313 78.5602C705.313 73.6891 707.909 71.1421 712.808 71.1304C714.371 71.1304 715.945 71.1304 717.508 71.1304C722.536 71.1304 725.132 73.6891 725.132 78.6423C725.132 90.3798 725.132 102.188 725.132 113.96C725.141 117.735 726.401 121.401 728.715 124.385C731.03 127.368 734.269 129.502 737.926 130.451C746.984 132.799 757.088 126.766 759.743 117.47C760.292 115.598 760.569 113.657 760.565 111.707C760.565 100.752 760.565 89.8242 760.565 78.924C760.565 73.7478 763.197 71.1421 768.39 71.1304C770.023 71.1304 771.656 71.1304 773.289 71.1304C777.412 71.1304 779.844 73.2196 780.526 77.3043C780.637 78.1406 780.684 78.9843 780.667 79.8278C780.667 99.7345 780.667 119.637 780.667 139.536C780.669 140.768 780.559 141.998 780.338 143.21C780.087 144.595 779.365 145.851 778.295 146.766C777.225 147.681 775.872 148.199 774.463 148.233C772.83 148.292 771.186 148.14 769.564 148.233C765.382 148.597 762.175 145.886 761.857 141.038C761.799 140.51 761.763 139.912 761.658 138.879Z" fill="black"/>
+<path d="M549.448 80.4734C552.845 76.993 556.914 74.2377 561.408 72.3746C579.665 65.0152 598.215 74.3347 603.784 93.6545C605.116 98.279 605.789 103.068 605.781 107.88C605.781 118.749 605.781 129.61 605.781 140.463C605.781 145.792 603.338 148.245 598.051 148.257C596.289 148.257 594.526 148.257 592.776 148.257C591.943 148.319 591.105 148.217 590.312 147.956C589.518 147.694 588.784 147.279 588.151 146.734C587.518 146.189 586.999 145.525 586.623 144.779C586.248 144.033 586.023 143.221 585.962 142.388C585.796 141.363 585.705 140.328 585.692 139.29C585.692 129.665 585.692 120.04 585.692 110.416C585.692 107.962 586.267 105.544 585.762 103.044C584.258 95.7085 580.1 90.7201 572.839 88.9595C565.297 87.1872 559.14 90.0276 554.441 96.002C551.897 99.2665 550.56 103.31 550.658 107.446C550.658 118.401 550.658 129.391 550.658 140.416C550.658 145.393 548.062 148.01 543.08 148.081C541.447 148.081 539.814 148.081 538.193 148.081C533.6 147.975 530.933 145.276 530.897 140.71C530.897 137.059 530.897 133.421 530.897 129.782V79.1236C530.897 73.607 533.376 71.1304 538.863 71.1304C540.038 71.1304 541.212 71.1304 542.387 71.1304C546.758 71.1304 549.436 73.8417 549.519 78.1728C549.46 78.748 549.448 79.3348 549.448 80.4734Z" fill="black"/>
+<path d="M341.914 80.0508C345.34 76.558 349.479 73.8437 354.05 72.0929C366.186 67.48 379.191 70.1444 387.732 79.2057C393.231 85.0744 396.027 92.1873 397.131 100.016C398.224 107.587 397.789 115.193 397.836 122.799C397.836 128.667 397.836 134.536 397.836 140.405C397.836 143.104 397.178 145.569 394.758 147.201C392.338 148.832 382.939 148.773 380.578 147.083C379.624 146.389 378.863 145.463 378.367 144.393C377.872 143.323 377.658 142.144 377.746 140.968C377.746 129.34 377.746 117.701 377.746 106.049C377.746 97.5748 372.236 90.4619 364.365 88.9243C359.734 88.093 354.959 89.0499 351.008 91.6015C347.056 94.153 344.221 98.1088 343.077 102.669C342.728 104.189 342.571 105.746 342.607 107.305C342.607 117.916 342.607 128.519 342.607 139.114C342.609 140.214 342.523 141.313 342.349 142.4C342.233 143.812 341.628 145.14 340.637 146.154C339.646 147.167 338.331 147.803 336.921 147.952C334.199 148.399 331.425 148.418 328.697 148.01C327.039 147.861 325.503 147.078 324.409 145.825C323.315 144.573 322.747 142.946 322.823 141.285C322.764 136.473 322.823 131.66 322.823 126.848V79.0297C322.823 73.607 325.29 71.1304 330.671 71.1304C331.846 71.1304 333.021 71.1304 334.195 71.1304C338.695 71.1304 341.35 73.7948 341.456 78.2667C341.378 78.8979 341.542 79.535 341.914 80.0508V80.0508Z" fill="black"/>
+<path d="M210.979 149.83C201.435 149.785 192.218 146.351 184.975 140.141C177.733 133.931 172.937 125.35 171.446 115.932C169.272 102.117 172.797 89.969 182.806 80.0743C189.139 73.8065 197.116 70.8018 205.962 69.8628C215.178 68.8198 224.468 71.0467 232.208 76.154C238.082 79.91 238.317 82.5978 233.453 87.5158C231.891 89.0886 230.363 90.6967 228.754 92.2108C226.404 94.3939 225.229 94.4879 222.539 92.6803C218.643 89.8879 213.952 88.4227 209.158 88.5018C205.972 88.4519 202.836 89.2898 200.101 90.9214C197.366 92.5531 195.14 94.914 193.673 97.7391C191.669 101.155 190.535 105.009 190.369 108.965C190.203 112.921 191.011 116.856 192.722 120.428C197.421 131.12 210.497 134.677 220.648 128.163C221.822 127.388 222.997 126.472 224.172 125.756C224.957 125.136 225.956 124.851 226.95 124.963C227.945 125.076 228.855 125.576 229.482 126.355C231.973 128.702 234.452 131.144 236.813 133.656C239.433 136.461 239.163 138.468 236.202 140.862C229.092 146.687 220.174 149.858 210.979 149.83V149.83Z" fill="black"/>
+<path d="M660.774 103.044C660.774 90.7593 660.774 78.4702 660.774 66.1772C660.805 59.9092 662.97 53.8382 666.914 48.9635C670.858 44.0888 676.346 40.7008 682.474 39.3572C687.106 38.5541 691.829 38.4118 696.501 38.9346C700.343 39.2163 702.446 41.9512 702.481 45.8362C702.481 47.0726 702.481 48.305 702.481 49.5335C702.528 50.432 702.39 51.3304 702.076 52.1736C701.762 53.0168 701.279 53.7869 700.656 54.4367C700.033 55.0864 699.284 55.602 698.454 55.9517C697.624 56.3015 696.732 56.4779 695.831 56.4703C694.339 56.5408 692.836 56.4703 691.332 56.4703C685.458 56.4703 681.569 59.9916 680.958 65.9307C680.382 71.459 680.382 71.459 685.928 71.459C688.536 71.459 691.144 71.459 693.752 71.459C695.433 71.4528 697.047 72.113 698.241 73.2947C699.435 74.4764 700.11 76.0831 700.12 77.762C700.12 79.3818 700.12 81.0133 700.12 82.633C700.148 83.5155 699.994 84.3943 699.667 85.2147C699.34 86.0351 698.848 86.7795 698.221 87.4016C697.594 88.0237 696.845 88.5102 696.022 88.8307C695.199 89.1513 694.318 89.299 693.435 89.2647C689.981 89.2647 686.527 89.3586 683.073 89.2647C681.299 89.206 680.876 89.8633 680.876 91.53C680.876 107.786 680.876 124.031 680.876 140.287C680.976 141.983 680.593 143.672 679.772 145.158C679.253 146.072 678.507 146.835 677.605 147.375C676.703 147.914 675.676 148.209 674.626 148.233C672.546 148.304 670.455 148.233 668.364 148.233C663.394 148.233 660.81 145.675 660.763 140.663C660.763 135.393 660.763 130.099 660.763 124.864V103.044H660.774Z" fill="black"/>
+<path d="M614.17 91.1896V59.3929C614.17 54.4163 616.625 51.9866 621.607 51.9749C623.498 51.9749 625.39 51.9749 627.281 51.9749C628.113 51.9702 628.938 52.1308 629.708 52.4472C630.478 52.7636 631.177 53.2296 631.765 53.8182C632.353 54.4067 632.818 55.1061 633.133 55.8757C633.449 56.6453 633.608 57.4698 633.602 58.3014C633.719 62.1278 633.884 65.9542 633.942 69.7806C633.942 71.0482 634.424 71.506 635.681 71.4825C639.723 71.4825 643.764 71.4825 647.805 71.4825C651.847 71.4825 654.337 74.0178 654.349 78.0789C654.349 79.5696 654.349 81.072 654.349 82.5626C654.363 83.3948 654.21 84.2214 653.898 84.9932C653.586 85.765 653.122 86.4663 652.534 87.0554C651.945 87.6445 651.244 88.1093 650.472 88.4223C649.7 88.7353 648.873 88.89 648.04 88.8773C644.14 88.9478 640.216 88.9712 636.292 88.8773C634.565 88.8773 633.942 89.2764 633.942 91.1427C634.036 101.026 633.942 110.908 634.013 120.791C634.013 127.259 636.926 130.181 643.411 130.416C650.766 130.698 652.023 132.001 652.023 139.407C652.023 140.064 652.023 140.71 652.023 141.355C652.023 144.618 649.979 147.412 646.76 147.635C640.474 148.057 634.13 148.363 628.068 145.921C620.608 142.905 616.743 137.059 615.039 129.489C614.46 126.888 614.172 124.231 614.182 121.566C614.193 111.472 614.17 101.331 614.17 91.1896Z" fill="black"/>
+<path d="M406.741 90.9432V59.7334C406.741 54.4046 409.185 51.9749 414.495 51.9749C416.328 51.9749 418.149 51.9749 419.981 51.9749C421.463 51.9522 422.903 52.4663 424.035 53.4222C425.166 54.3781 425.913 55.711 426.138 57.1746C426.831 61.1066 426.408 65.0856 426.408 69.0411C426.408 70.8604 426.878 71.5881 428.828 71.506C432.54 71.3769 436.253 71.506 439.965 71.506C440.832 71.4484 441.7 71.5749 442.514 71.8771C443.328 72.1793 444.068 72.6503 444.686 73.2591C445.305 73.868 445.787 74.6008 446.101 75.4093C446.415 76.2178 446.554 77.0837 446.509 77.9498C446.509 79.4405 446.509 80.9429 446.509 82.4335C446.534 83.2981 446.381 84.1586 446.058 84.9614C445.736 85.7642 445.252 86.4921 444.636 87.0999C444.02 87.7076 443.285 88.1822 442.478 88.494C441.67 88.8059 440.807 88.9484 439.942 88.9126C436.159 88.9126 432.376 88.9947 428.593 88.9126C426.948 88.9126 426.478 89.4642 426.478 91.0488C426.478 100.932 426.478 110.815 426.478 120.698C426.478 127.047 428.828 129.688 435.172 130.404C435.495 130.451 435.824 130.451 436.147 130.404C441.516 129.583 445.146 132.693 444.524 138.902C444.441 139.736 444.524 140.592 444.524 141.438C444.552 143.021 443.973 144.555 442.904 145.725C441.836 146.895 440.36 147.612 438.779 147.729C433.446 148.191 428.073 147.758 422.883 146.449C414.084 144.008 409.29 137.975 407.54 129.289C406.968 126.355 406.689 123.37 406.706 120.381C406.745 110.576 406.757 100.763 406.741 90.9432Z" fill="black"/>
+<path d="M42.8366 133.503C39.1851 132.711 35.4015 132.755 31.7697 133.632C22.2065 136.191 15.8154 143.891 14.7698 154.008C14.7698 154.548 15.04 155.393 14.3704 155.558C13.7007 155.722 13.3953 154.818 13.0663 154.302C4.53648 140.9 0.0110972 125.344 0.0215023 109.462C0.0319073 93.58 4.57767 78.0306 13.1251 64.6396C13.2895 64.3696 13.4657 64.0879 13.6537 63.818C13.8417 63.548 14.1237 62.8672 14.6171 62.9846C15.1105 63.102 15.0988 63.8414 15.1105 64.3227C15.2314 67.283 15.9354 70.1904 17.1821 72.8786C18.4289 75.5667 20.1939 77.9829 22.3763 79.9889C24.5587 81.9948 27.1156 83.5511 29.9007 84.5688C32.6858 85.5864 35.6443 86.0454 38.6071 85.9195C39.5118 85.9195 40.4047 85.6378 41.3093 85.6144C42.2139 85.5909 43.0128 84.8514 43.518 85.5205C44.0232 86.1895 43.1655 86.9407 42.8131 87.598C40.8989 91.0732 39.4681 94.7931 38.5602 98.6546C35.8333 109.833 37.4143 121.628 42.9893 131.695C43.2712 132.235 43.9056 132.728 43.4945 133.433C43.4122 133.573 42.9188 133.503 42.8366 133.503Z" fill="black"/>
+<path d="M18.4121 155.299C18.4493 150.269 20.4763 145.458 24.0506 141.916C27.625 138.374 32.4567 136.387 37.4914 136.39C42.5733 136.39 47.4471 138.407 51.0406 141.998C54.6341 145.588 56.6529 150.457 56.6529 155.534C56.6529 160.611 54.6341 165.481 51.0406 169.071C47.4471 172.661 42.5733 174.678 37.4914 174.678C28.1162 174.889 18.4121 164.936 18.4121 155.299Z" fill="black"/>
+<path d="M56.6523 63.4189C57.2514 73.4427 47.7588 82.5274 37.5495 82.4218C29.0202 82.3396 18.6699 75.5789 18.4819 63.3954C18.341 54.1229 28.3975 44.0991 37.7022 44.2282C49.9205 44.3925 57.3219 54.7684 56.6523 63.4189Z" fill="black"/>
+</g>
+<defs>
+<clipPath id="clip0_640_499">
+<rect width="810" height="167" fill="white" transform="translate(0.0136719 26)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/devtoolsfm.svg b/smoke/astro.build-main/src/icons/logos/devtoolsfm.svg
new file mode 100644
index 000000000..7f2a88cd9
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/devtoolsfm.svg
@@ -0,0 +1,13 @@
+<svg width="59" height="47" viewBox="0 0 59 47" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M49.524 30.5833C49.5766 30.7452 49.5927 30.7703 49.5927 30.7963C49.5435 33.514 49.4765 36.2316 49.4476 38.9501C49.4213 41.3934 49.4366 43.8367 49.4349 46.2792C49.4349 46.5384 49.5859 46.6609 49.8369 46.66C50.1049 46.66 50.3729 46.6416 50.6409 46.6408C52.8715 46.6324 55.102 46.6248 57.3326 46.6215C57.6481 46.6206 57.8363 46.5258 57.8465 46.1694C57.8694 45.2928 57.9271 44.4163 57.95 43.5398C58.0195 40.9329 58.0925 38.3252 58.1383 35.7183C58.2137 31.4766 58.2629 27.2349 58.3359 22.9932C58.3749 20.7344 58.4402 18.4765 58.4987 16.2176C58.5072 15.8872 58.4249 15.6909 58.0306 15.6917C55.1215 15.6993 52.2133 15.6917 49.3043 15.7051C49.172 15.706 48.9786 15.8394 48.9184 15.961C48.223 17.3701 47.5487 18.7902 46.8651 20.206C46.5488 20.8619 46.2138 21.5095 45.9042 22.1687C45.1884 23.6936 44.487 25.2261 43.7704 26.7509C43.482 27.3641 43.1623 27.963 42.8731 28.5753C42.6474 29.0534 42.4524 29.5466 42.2302 30.0264C42.1895 30.1144 42.0792 30.2318 42.0063 30.2285C41.9291 30.2251 41.8333 30.1052 41.7892 30.0154C41.7289 29.893 41.7281 29.7437 41.6721 29.6187C41.0309 28.1928 40.3872 26.7686 39.7384 25.346C39.2974 24.3797 38.853 23.4151 38.4001 22.4548C38.0176 21.6437 37.6113 20.8443 37.2339 20.0307C36.6267 18.7214 36.0279 17.4079 35.4436 16.0885C35.307 15.7806 35.106 15.6917 34.7863 15.6926C31.9621 15.6993 29.1378 15.6942 26.3136 15.6942C25.7098 15.6942 25.7081 15.6993 25.7089 16.2847C25.7089 21.3526 25.7098 26.4205 25.7106 31.4883C25.7106 36.4027 25.7115 41.3171 25.7098 46.2314C25.7098 46.4655 25.6843 46.6693 26.0405 46.6668C28.5815 46.6491 31.1233 46.6542 33.6642 46.634C34.285 46.629 34.2783 46.5988 34.285 45.9806C34.3351 41.1241 34.3877 36.2668 34.4394 31.4103C34.4411 31.2115 34.4394 31.0119 34.4394 30.8131C34.4945 30.8047 34.5497 30.7972 34.6039 30.7888C34.7176 31.0849 34.8151 31.3885 34.9483 31.6762C35.3325 32.5041 35.7353 33.3244 36.1246 34.1506C36.5766 35.1076 37.0338 36.063 37.4672 37.0284C37.898 37.9888 38.2949 38.9626 38.7181 39.9264C38.9403 40.4313 39.2262 40.9119 39.406 41.4303C39.5111 41.7314 39.6299 41.879 39.9521 41.8782C41.2515 41.874 42.5508 41.8874 43.8492 41.8665C43.9968 41.8639 44.2071 41.713 44.2758 41.5754C44.6761 40.7744 45.0357 39.9541 45.4225 39.1463C45.9008 38.1473 46.3961 37.1568 46.8778 36.1586C47.1721 35.5488 47.4571 34.9348 47.7429 34.3209C48.0033 33.7606 48.2526 33.1944 48.5181 32.6358C48.8336 31.979 49.1584 31.329 49.524 30.5833ZM9.4319 35.3291C9.80253 35.3291 10.096 35.3299 10.3903 35.3291C13.1153 35.3224 15.8403 35.3182 18.5652 35.3064C18.9274 35.3047 19.3048 35.189 19.6474 35.2586C20.013 35.3324 20.0952 35.1957 20.0961 34.9181C20.102 32.8941 20.0969 30.8693 20.1029 28.8454C20.1037 28.5325 19.9646 28.4394 19.6619 28.4427C18.5322 28.4562 17.4033 28.4511 16.2736 28.452C14.1271 28.4545 11.9813 28.4553 9.83475 28.4595C9.62442 28.4595 9.44292 28.4662 9.44123 28.1701C9.43275 26.6486 9.41663 25.1279 9.39543 23.6064C9.39119 23.3002 9.51247 23.2088 9.82542 23.2096C13.8489 23.2197 17.8732 23.2164 21.8966 23.2172C22.4089 23.2172 22.5115 23.1216 22.5107 22.6057C22.5073 20.5122 22.5047 18.4177 22.4979 16.3242C22.4963 15.737 22.4555 15.6968 21.8771 15.6968C15.043 15.6942 8.20892 15.6909 1.37481 15.6959C0.541964 15.6968 0.432557 15.4946 0.529242 16.5724C0.536875 16.6555 0.530091 16.7402 0.531787 16.8241C0.579281 20.4098 0.630168 23.9964 0.675118 27.5822C0.740423 32.8295 0.803183 38.0769 0.8634 43.3242C0.873577 44.2033 0.858311 45.0832 0.865944 45.963C0.871881 46.6458 1.05592 46.8236 1.72339 46.8228C4.12355 46.8211 6.52456 46.8194 8.92473 46.8152C9.43444 46.8144 9.53961 46.7146 9.53537 46.1987C9.53028 45.4874 9.50314 44.7762 9.49636 44.0657C9.47261 41.5117 9.4531 38.9568 9.43275 36.4027C9.42935 36.0672 9.4319 35.735 9.4319 35.3291Z" fill="currentColor"/>
+ <path d="M49.5236 30.5835C49.1581 31.3291 48.8332 31.98 48.5211 32.636C48.2557 33.1946 48.0063 33.7599 47.7459 34.3211C47.4601 34.935 47.1752 35.549 46.8809 36.1588C46.3991 37.1561 45.9038 38.1475 45.4255 39.1465C45.0388 39.9543 44.6792 40.7746 44.2789 41.5756C44.2102 41.7132 43.9998 41.8641 43.8523 41.8667C42.5538 41.8885 41.2545 41.8742 39.9552 41.8784C39.6329 41.8792 39.5133 41.7316 39.409 41.4305C39.2283 40.913 38.9425 40.4315 38.7212 39.9266C38.2979 38.9637 37.9002 37.989 37.4702 37.0286C37.0368 36.0632 36.5797 35.1078 36.1276 34.1508C35.7383 33.3246 35.3355 32.5051 34.9513 31.6764C34.8181 31.3887 34.7206 31.0851 34.6069 30.789C34.5518 30.7974 34.4967 30.8049 34.4424 30.8133C34.4424 31.0121 34.4441 31.2117 34.4424 31.4105C34.3907 36.267 34.3381 41.1243 34.2881 45.9808C34.2813 46.599 34.2881 46.6301 33.6672 46.6342C31.1263 46.6544 28.5845 46.6493 26.0435 46.667C25.6873 46.6695 25.7128 46.4657 25.7128 46.2316C25.7145 41.3173 25.7145 36.4029 25.7136 31.4885C25.7136 26.4206 25.7128 21.3528 25.7119 16.2849C25.7119 15.6986 25.7128 15.6944 26.3166 15.6944C29.1408 15.6936 31.9651 15.6994 34.7893 15.6927C35.109 15.6919 35.31 15.7808 35.4466 16.0886C36.0309 17.408 36.6305 18.7215 37.237 20.0309C37.6135 20.8445 38.0206 21.6438 38.4031 22.4549C38.856 23.4162 39.3004 24.3799 39.7414 25.3462C40.3902 26.7687 41.034 28.193 41.6751 29.6189C41.7311 29.7439 41.732 29.8932 41.7922 30.0156C41.8363 30.1054 41.9321 30.2253 42.0093 30.2287C42.0822 30.232 42.1925 30.1146 42.2332 30.0265C42.4554 29.5468 42.6505 29.0544 42.8761 28.5755C43.1653 27.9631 43.4859 27.3643 43.7734 26.7511C44.49 25.2262 45.1914 23.6938 45.9072 22.1689C46.2168 21.5096 46.551 20.8621 46.8681 20.2062C47.5517 18.7912 48.2251 17.3711 48.9214 15.9611C48.9816 15.8387 49.175 15.7053 49.3073 15.7053C52.2164 15.6919 55.1245 15.6994 58.0336 15.6919C58.428 15.6911 58.5102 15.8873 58.5017 16.2178C58.4432 18.4766 58.3779 20.7346 58.3389 22.9934C58.2651 27.2351 58.2168 31.4768 58.1413 35.7184C58.0947 38.3262 58.0217 40.9331 57.953 43.54C57.9301 44.4165 57.8724 45.293 57.8495 46.1696C57.8402 46.526 57.6519 46.6208 57.3356 46.6217C55.105 46.625 52.8745 46.6326 50.644 46.641C50.376 46.6418 50.1079 46.6602 49.8399 46.6602C49.5881 46.6602 49.4379 46.5378 49.4379 46.2794C49.4396 43.8361 49.4244 41.3927 49.4507 38.9502C49.4795 36.2326 49.5465 33.515 49.5957 30.7965C49.5923 30.7705 49.5762 30.7445 49.5236 30.5835Z" fill="currentColor"/>
+ <path d="M9.43145 35.329C9.43145 35.735 9.42891 36.0671 9.43145 36.3993C9.45181 38.9534 9.47132 41.5083 9.49506 44.0623C9.50185 44.7736 9.52899 45.4849 9.53408 46.1953C9.53832 46.7112 9.43315 46.811 8.92343 46.8118C6.52327 46.8152 4.12226 46.8177 1.72209 46.8194C1.05463 46.8202 0.870588 46.6424 0.864651 45.9596C0.857018 45.0798 0.872284 44.2007 0.862106 43.3209C0.80189 38.0735 0.73913 32.8261 0.673825 27.5788C0.628875 23.993 0.578836 20.4064 0.530494 16.8207C0.529646 16.7368 0.535582 16.6529 0.527949 16.569C0.432112 15.4912 0.540671 15.6933 1.37352 15.6925C8.20762 15.6883 15.0417 15.6917 21.8758 15.6933C22.4542 15.6933 22.4941 15.7336 22.4967 16.3207C22.5034 18.4143 22.506 20.5087 22.5094 22.6023C22.5102 23.1182 22.4076 23.2138 21.8953 23.2138C17.8719 23.2129 13.8476 23.2163 9.82413 23.2062C9.51118 23.2054 9.3899 23.2968 9.39414 23.603C9.41534 25.1237 9.43145 26.6452 9.43994 28.1667C9.44163 28.4637 9.62228 28.457 9.83346 28.4561C11.98 28.4519 14.1258 28.4511 16.2723 28.4486C17.402 28.4477 18.5317 28.4528 19.6606 28.4393C19.9633 28.436 20.1033 28.5291 20.1016 28.842C20.0956 30.8659 20.1007 32.8907 20.0948 34.9147C20.0939 35.1931 20.0117 35.3299 19.6461 35.2552C19.3035 35.1856 18.9261 35.3013 18.5639 35.303C15.839 35.3156 13.114 35.319 10.389 35.3257C10.0955 35.3299 9.80208 35.329 9.43145 35.329Z" fill="currentColor"/>
+ <path d="M6.80319 4.83634C6.81506 4.62664 6.82863 4.49495 6.82863 4.36243C6.83033 3.34332 6.84305 2.32337 6.821 1.30426C6.81336 0.946944 6.90411 0.791771 7.29085 0.823644C7.69795 0.857195 8.11098 0.863067 8.51807 0.837903C8.88276 0.815257 8.96758 0.960364 8.96673 1.29671C8.9557 3.96401 8.96079 6.63047 8.96164 9.29777C8.96164 9.96795 8.94722 10.639 8.96758 11.3083C8.97775 11.6396 8.86326 11.7654 8.5291 11.7336C8.27721 11.7101 8.02108 11.726 7.76665 11.7243C7.25523 11.721 7.18738 11.6572 7.15092 11.1598C7.14498 11.0818 7.12293 11.0047 7.0907 10.8386C6.92871 10.9736 6.7964 11.0475 6.71498 11.1573C6.27651 11.7512 5.60904 11.7923 4.97805 11.7923C4.20457 11.7923 3.50402 11.5155 3.00109 10.8856C2.51597 10.2783 2.20471 9.59134 2.15807 8.81631C2.12414 8.24595 2.0987 7.66636 2.16146 7.10018C2.30903 5.77996 2.78058 4.64258 4.14859 4.09402C4.76856 3.84491 6.00257 4.07557 6.48175 4.54444C6.56656 4.62916 6.65816 4.70549 6.80319 4.83634ZM7.01861 8.60243C6.95415 7.80643 6.89902 7.18406 6.85407 6.56169C6.80658 5.90745 6.32909 5.71789 5.79393 5.57697C5.39956 5.47296 5.08321 5.62646 4.80164 5.86551C4.45985 6.15573 4.36655 6.54911 4.24867 6.97605C4.00356 7.86766 4.13163 8.68547 4.44119 9.51753C4.62099 10.0007 4.9984 10.2062 5.46402 10.2523C6.02123 10.3077 6.57165 10.1852 6.821 9.64502C6.98723 9.28435 6.97705 8.84483 7.01861 8.60243Z" fill="currentColor"/>
+ <path d="M14.7573 8.54351C14.1645 8.54351 13.5708 8.54351 12.978 8.54351C12.5124 8.54351 12.3826 8.72888 12.5488 9.15497C12.8559 9.94174 13.3249 10.2362 14.1857 10.2638C14.86 10.2856 15.4833 10.1682 16.0702 9.8369C16.1389 9.79831 16.323 9.8218 16.3501 9.87129C16.4883 10.1229 16.602 10.3888 16.7055 10.6572C16.8081 10.9223 16.6834 11.1018 16.4493 11.2335C15.6691 11.6738 14.7955 11.8776 13.9347 11.8558C13.1985 11.8374 12.4505 11.657 11.7881 11.1856C11.1266 10.7159 10.7144 10.1137 10.5447 9.38228C10.1987 7.89178 10.1784 6.41806 11.208 5.12467C11.7567 4.4352 12.4912 4.09214 13.3698 4.0393C14.0636 3.9982 14.7573 4.01749 15.3697 4.37816C16.183 4.8571 16.7631 5.52392 16.8717 6.49858C16.9344 7.05972 16.9769 7.62337 17.0311 8.18535C17.0574 8.45628 16.9404 8.55441 16.6631 8.5477C16.0287 8.5326 15.3926 8.54351 14.7573 8.54351ZM13.6955 7.22915C13.8507 7.22915 14.0059 7.22915 14.1611 7.22915C15.0109 7.22915 15.0482 7.22076 14.8701 6.43148C14.8074 6.15468 14.5623 5.82504 14.3095 5.70174C13.5768 5.34275 12.7091 5.8133 12.5183 6.6051C12.4021 7.08572 12.5166 7.22999 13.0179 7.22999C13.2435 7.22915 13.4699 7.22915 13.6955 7.22915Z" fill="currentColor"/>
+ <path d="M37.3822 7.83662C37.3152 9.01677 37.0922 10.0191 36.367 10.8285C35.937 11.3091 35.3815 11.6321 34.72 11.7344C34.3774 11.7872 34.0322 11.898 33.6921 11.8837C32.0281 11.8158 30.9187 11.0902 30.426 9.53597C29.9799 8.12851 30.0638 6.69001 30.9357 5.40921C31.3954 4.734 32.0484 4.30454 32.8898 4.19718C33.2324 4.15356 33.5801 4.02188 33.9134 4.05375C35.234 4.18041 36.5765 4.68367 37.0506 6.32095C37.1295 6.59439 37.1965 6.87203 37.2567 7.14966C37.3144 7.41723 37.356 7.68899 37.3822 7.83662ZM35.3145 7.97334C35.2306 7.48182 35.2178 6.95674 35.0363 6.49626C34.9108 6.17836 34.6004 5.83614 34.2866 5.70697C33.4682 5.36979 32.5132 5.94183 32.369 6.79822C32.2486 7.51285 32.1061 8.20987 32.3325 8.96225C32.57 9.74902 32.7786 10.3446 33.9202 10.2674C34.4944 10.228 34.9303 9.93858 35.0609 9.37409C35.1661 8.92115 35.228 8.45983 35.3145 7.97334Z" fill="currentColor"/>
+ <path d="M41.9972 11.9072C40.4341 11.8753 39.357 11.3309 38.7396 10.1097C38.4928 9.62152 38.3656 9.04864 38.3062 8.50092C38.2061 7.57408 38.2791 6.64136 38.7812 5.81517C39.318 4.9311 40.0474 4.34816 41.1465 4.17117C41.8598 4.05626 42.5069 4.12756 43.1557 4.32886C44.1327 4.63166 44.7637 5.34126 45.0869 6.26308C45.3718 7.07501 45.516 7.89868 45.3176 8.81043C45.1488 9.5863 44.8893 10.2917 44.3829 10.8453C44.0191 11.2429 43.4559 11.4878 42.9428 11.7168C42.6002 11.8678 42.1897 11.872 41.9972 11.9072ZM43.3839 7.8492C43.2787 7.41387 43.2058 6.86615 43.009 6.36457C42.7927 5.81265 42.3068 5.6298 41.7046 5.65832C41.1584 5.68432 40.8141 6.0148 40.6266 6.41573C40.4172 6.86448 40.3281 7.38703 40.2849 7.8861C40.2526 8.25936 40.3798 8.64603 40.4265 9.02767C40.5028 9.6492 40.9065 10.2154 41.3145 10.259C42.3907 10.3739 42.8962 10.1298 43.132 9.31202C43.2566 8.88089 43.2889 8.42376 43.3839 7.8492Z" fill="currentColor"/>
+ <path d="M53.361 4.21469C54.3635 4.11823 55.2481 4.34721 55.8943 5.09624C56.1488 5.39064 56.2582 5.81926 56.3879 6.20174C56.4575 6.40724 56.3184 6.54228 56.0809 6.53557C55.6297 6.52299 55.1768 6.53221 54.729 6.48692C54.6145 6.47518 54.4695 6.31078 54.422 6.1858C54.1192 5.39316 53.0565 5.31767 52.5103 5.76306C52.0998 6.09773 52.1448 6.69829 52.6265 6.93566C53.0489 7.14452 53.5238 7.25356 53.9801 7.38944C54.6578 7.59158 55.3397 7.76353 55.8935 8.24918C56.6907 8.94788 56.5652 10.4736 55.6806 11.1606C54.7477 11.8844 53.6434 12.0186 52.5383 11.8626C51.6359 11.736 50.7997 11.3518 50.3408 10.4652C50.3281 10.4409 50.2933 10.4241 50.2891 10.4006C50.2289 10.0978 50.1721 9.7942 50.1152 9.4914C50.3731 9.47211 50.6309 9.44863 50.8896 9.43437C51.0583 9.4243 51.228 9.43101 51.3967 9.42346C51.7317 9.4092 51.9743 9.45282 52.0744 9.86717C52.194 10.362 53.121 10.7261 53.6239 10.5298C53.9903 10.3864 54.4135 10.3159 54.444 9.78162C54.4661 9.39998 54.2905 9.14331 53.9767 9.02505C53.4526 8.82877 52.9013 8.70715 52.367 8.53772C51.6096 8.29783 50.8565 8.05039 50.4791 7.25272C50.2408 6.74946 50.4197 5.58272 50.7869 5.1734C51.4841 4.39251 52.3543 4.09139 53.361 4.21469Z" fill="currentColor"/>
+ <path d="M17.5889 4.20057C18.2029 4.20057 18.794 4.1838 19.3826 4.21315C19.5132 4.21986 19.7151 4.36749 19.7482 4.48659C19.9933 5.37905 20.1926 6.28409 20.4292 7.17906C20.6302 7.93563 20.8626 8.68382 21.106 9.52007C21.3664 8.47664 21.5928 7.52882 21.8422 6.58688C22.0338 5.86302 22.2501 5.14587 22.4681 4.4304C22.4944 4.34316 22.597 4.21483 22.6665 4.21315C23.295 4.19638 23.9235 4.20309 24.6164 4.20309C24.1278 5.6072 23.6554 6.94252 23.2 8.28204C22.854 9.29864 22.5224 10.3194 22.1975 11.3427C22.1144 11.6044 21.9838 11.7462 21.6929 11.7361C21.3545 11.7244 21.0093 11.6917 20.6785 11.7437C20.2146 11.8166 20.0348 11.5935 19.9102 11.2094C19.4785 9.87655 19.0383 8.54542 18.5879 7.21764C18.2623 6.25808 17.9162 5.30524 17.5804 4.3482C17.5719 4.32471 17.5821 4.29452 17.5889 4.20057Z" fill="currentColor"/>
+ <path d="M28.036 5.69951C28.0207 5.80603 27.9995 5.88739 27.9995 5.96792C27.9987 7.19672 27.997 8.42468 28.0038 9.65349C28.0063 10.0175 28.2455 10.2842 28.6017 10.2465C29.0045 10.2037 29.1648 10.369 29.2098 10.7246C29.2378 10.9444 29.2675 11.1641 29.2912 11.3839C29.3175 11.6196 29.2412 11.732 28.9672 11.742C28.639 11.7546 28.3057 11.9106 27.9885 11.8771C27.4126 11.8167 26.8334 11.7034 26.4161 11.2279C26.0183 10.7741 25.9047 10.2113 25.8843 9.656C25.8411 8.47081 25.864 7.28311 25.8758 6.09625C25.8792 5.79093 25.8258 5.64415 25.462 5.65589C24.7377 5.67854 24.7368 5.65589 24.7377 4.93455C24.7377 4.80873 24.747 4.68291 24.7377 4.55794C24.7173 4.28869 24.8301 4.19643 25.1066 4.19391C25.8708 4.1872 25.8708 4.17546 25.8708 3.40966C25.8708 2.28822 25.8708 2.28822 26.9928 2.28906C27.1336 2.28906 27.2761 2.28318 27.416 2.29325C27.8859 2.32596 27.9953 2.44758 27.9961 2.91897C27.9961 3.00285 27.9927 3.08673 27.9961 3.17061C28.0089 3.49018 27.913 3.89195 28.0733 4.10164C28.1946 4.26101 28.6432 4.18972 28.9469 4.19643C29.1776 4.20146 29.2938 4.28282 29.2709 4.51935C29.2361 4.88422 29.3302 5.36987 29.1292 5.57789C28.9435 5.7708 28.4431 5.66847 28.036 5.69951Z" fill="currentColor"/>
+ <path d="M48.7733 5.80194C48.7733 7.27986 48.781 8.75778 48.7682 10.2349C48.7649 10.6358 48.7233 11.0401 48.6563 11.4351C48.6376 11.5467 48.4739 11.7103 48.3679 11.717C47.9049 11.748 47.4367 11.748 46.9736 11.717C46.871 11.7103 46.6946 11.5282 46.6963 11.4284C46.7234 9.63262 46.7828 7.83764 46.8125 6.04183C46.8379 4.52281 46.8354 3.00295 46.843 1.4831C46.8464 0.900987 46.8439 0.899309 47.4477 0.915246C47.7717 0.923634 48.0965 0.965573 48.4188 0.948797C48.7487 0.931183 48.8259 1.07126 48.8234 1.36734C48.8132 2.84526 48.8191 4.32318 48.8191 5.8011C48.8039 5.80194 48.7886 5.80194 48.7733 5.80194Z" fill="currentColor"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/divriots.svg b/smoke/astro.build-main/src/icons/logos/divriots.svg
new file mode 100644
index 000000000..0698f25f6
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/divriots.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 703.85 121.18" xmlns="http://www.w3.org/2000/svg"><path d="m297 132.57 44.39-44.38a6.22 6.22 0 0 0 0-8.8l-44.39-44.39" fill="none" stroke="currentColor" stroke-width="13.05" transform="translate(0 -29.1)"/><path d="m55.79 39-44.39 44.39a6.22 6.22 0 0 0 0 8.8l44.39 44.38" fill="none" stroke="currentColor" stroke-width="11.05" transform="translate(0 -29.1)"/><g fill="currentColor"><rect height="20" rx="3" width="20" x="40" y="5.9"/><rect height="20" rx="3" width="20" y="48.9"/><rect height="20" rx="3" width="20" x="40" y="91.9"/><path d="m154 29.14v96.86h-15.69v-9a25.12 25.12 0 0 1 -10.05 7.44 33.14 33.14 0 0 1 -13 2.48 37.1 37.1 0 0 1 -18.15-4.44 32.05 32.05 0 0 1 -12.53-12.53 38 38 0 0 1 -4.58-18.8 37.27 37.27 0 0 1 4.57-18.67 32.12 32.12 0 0 1 12.49-12.48 37.1 37.1 0 0 1 18.15-4.44 33.07 33.07 0 0 1 12.66 2.35 25.34 25.34 0 0 1 9.79 7v-35.77zm-36.83 83.86a21.3 21.3 0 0 0 10.57-2.62 19.76 19.76 0 0 0 7.44-7.7 23.29 23.29 0 0 0 2.74-11.48 23.33 23.33 0 0 0 -2.74-11.49 18.9 18.9 0 0 0 -7.44-7.57 21.78 21.78 0 0 0 -21.15 0 18.9 18.9 0 0 0 -7.44 7.57 23.33 23.33 0 0 0 -2.74 11.49 23.29 23.29 0 0 0 2.74 11.48 19.76 19.76 0 0 0 7.44 7.7 21.31 21.31 0 0 0 10.58 2.62zm58.15-56.66h16.32v69.66h-16.32zm103 0-29.89 69.66h-16.83l-29.9-69.71h17l21.64 51.71 22.32-51.7z" transform="translate(0 -29.1)"/><path d="m398.77 120.21a.39.39 0 0 0 -.15.28c0 .09 0 .14-.13.14s-.28-.14-.28-.42.14-.28.41-.28.38.07.15.28zm.55 0q1.13-2 .84 1.26a40.18 40.18 0 0 1 -.56 4.89q-.14 1.26-.42 1.26c-.37 0-.51-.56-.41-1.68a7.37 7.37 0 0 0 .13-1.4 9.93 9.93 0 0 1 .28-1.25c0-.84-.18-1.31-.56-1.4s-.55-.1-.55 0l.28.7c.18.46.14.51-.14.14a1 1 0 0 1 -.7-1q0-.28.42-.42c.37-.19.65-.14.84.14a.39.39 0 0 1 .28.14h.41c.19 0 .19-.1 0-.28a1 1 0 0 1 -.14-1.1zm1.68 6.57q.42-.15.42.42a.37.37 0 0 1 -.42.42.25.25 0 0 1 -.28-.28.78.78 0 0 1 .28-.56zm51.13 16.34c-.18-.28-.14-.42.14-.42a.37.37 0 0 1 .42.42.36.36 0 0 1 -.14.28.46.46 0 0 1 -.42-.28zm-50.71-20.12c.28 0 .42.33.42 1s-.14.84-.42.84-.42-.28-.42-.84.14-1 .42-1zm50.58 10.62q6.43 8 6.15 8.53c0 .09-.23-.05-.7-.42a12.61 12.61 0 0 1 -1.25-1.12 12.82 12.82 0 0 1 -1.12-1.26 2.18 2.18 0 0 1 -.56-1 3.59 3.59 0 0 0 -.7-1 18.59 18.59 0 0 0 -1.54-1.68l-.83-.84a2 2 0 0 1 -.42-.56c.56.75.69 1.12.42 1.12-.1 0 0 .14.27.42a10 10 0 0 1 .7.84c.47.46.94 1 1.4 1.53a11.54 11.54 0 0 1 1.4 1.68c.46.56.84 1 1.12 1.4a4.33 4.33 0 0 1 .55 1.81c0 .38 0 .56-.14.56s-.13 0-.41-.28a.79.79 0 0 0 -1-.14c-.28.19-.52.1-.7-.28-.09-.09-.14 0-.14.14a.64.64 0 0 1 -.42.7c-.19.09-.28 0-.28-.28a54.08 54.08 0 0 0 -4.19-5.31 3.67 3.67 0 0 1 -1.26-1.39c-.18-.28-.32-.52-.42-.7s-.37-.42-.56-.42c-.46 0 .05.84 1.54 2.51a9.69 9.69 0 0 1 1.4 2.1c0 .65.18.88.56.7.18 0 .23.28.14.84q-.15.56.42.42c.27-.1.42 0 .42.14s-.1.27 0 .55l.55.84.7.7c.19.19.33.23.42.14s.19-.09 0 .28c0 .19-.14.37-.42.56l-.84.56c-.65.46-1 .79-1 1s-.19.28-.56.28-.56.13-.56.41-.19.42-.56.7a9.48 9.48 0 0 1 -1 .84 7.14 7.14 0 0 1 -1.12.7c-.37.28-.6.37-.69.28l-.77-.22c-.19 0-.56-.33-1.12-1a28.65 28.65 0 0 1 -2-2.23l-3.32-3.77q-2.1-2.37-4.05-4.75t-3.91-4.33c-1.21-1.39-2.05-2.37-2.52-2.93a20.11 20.11 0 0 1 -1.81-2.24c-.75-.93-1.45-1.77-2.1-2.51q-1.82-2-4.05-4.75-2.1-2.94-5.87-8.11c-1.3-1.67-2.33-3-3.07-4s-1.35-1.86-1.82-2.51l-1.12-1.54a8 8 0 0 0 -.56-1c-.65-1-1.11-1.58-1.39-1.67s-.75-.1-1.4.28a2.74 2.74 0 0 0 -.84 1.39c-.09.38-.32 1.49-.7 3.36a5.9 5.9 0 0 1 -.14 1.25 4.34 4.34 0 0 0 -.14 1c-.09.28-.23.93-.42 2s-.37 2.14-.55 3.35-.38 2.33-.56 3.35-.14 1.45-.14 1.54a.13.13 0 0 1 -.14.14 5 5 0 0 1 -.28-2.37c.09-1.4.28-3 .56-4.75.18-.84.32-1.59.42-2.24s.09-1 0-1.12c-.28-.28-.24-.42.14-.42.18 0 .28-.56.28-1.67.18-1.21.09-1.82-.28-1.82-.19 0-.28.23-.28.7s-.14.7-.42.7-.19.23 0 .7c.18.65.23 1 .14 1.11a7.25 7.25 0 0 0 -.56 2.24 30.9 30.9 0 0 1 -.42 3.35c0 1.21-.19 1.91-.56 2.1s-.37.37 0 .56.33.51.14 1-.42.61-.7.42a1.42 1.42 0 0 0 -1 .28c0 .19 0 .24-.14.14a1.17 1.17 0 0 1 .14-.42c.1-.56 0-.83-.28-.83-.37.18-.46.51-.28 1 0 .47-.09.7-.28.7s-.37-.56-.27-1.67 0-1.63-.14-1.54-.1-.33.28-1a2 2 0 0 0 .41-2.1 6.38 6.38 0 0 1 -.13-2.37 4.26 4.26 0 0 1 .69-2.24 4.38 4.38 0 0 0 .42-1.67.62.62 0 0 0 -.7-.7c-.37 0-.56.09-.56.28s-.23.42-.69.42-.47.14-.28.42a1.42 1.42 0 0 1 -.28 1q-.57.55 0 .27a.45.45 0 0 1 .7.14c.18.19.14.47-.14.84a3.23 3.23 0 0 0 -.7 1.26c-.09.56-.05.75.14.56.37-.37.56-.37.56 0a.37.37 0 0 1 -.42.42c.09 0-.09.23-.56.7a1.32 1.32 0 0 1 -.14.56 1.61 1.61 0 0 0 -.28.41c0 .28.09.38.28.28.37-.28.37-.09 0 .56a1 1 0 0 1 -1 .7c-.28 0-.28.19 0 .56.47.19.56.89.28 2.1a9.57 9.57 0 0 1 -.7 2c-.37.38-.46.33-.28-.14s.19-.65 0-.84c-.28 0-.42.24-.42.7s.14.84.42.84.28.19-.28.56c-.37.37-.46.56-.28.56.84-.09 1.17.14 1 .7-.37 1-.7 1-1 0-.09-.28-.18-.19-.28.28s.19.69.56.69.56.29.28.84a3.41 3.41 0 0 1 -.14.84 4.27 4.27 0 0 0 -.14 1 2.94 2.94 0 0 1 -.14 1v.42c0 .09-.23.14-.69.14s-.66-.19-.56-.84a1.29 1.29 0 0 0 .14-.56.56.56 0 0 1 .28-.56c.55-.37.65-1.12.27-2.24s-.83-1.25-1.67-.41a1.55 1.55 0 0 0 -.56 1c0 .19.23.19.7 0s.65.19.56.84a12.11 12.11 0 0 0 -.28 2.38 1 1 0 0 1 -1.12 1.11 12.72 12.72 0 0 0 -2.24.28 4 4 0 0 1 -2.65-.42c-.84-.27-1.35-.46-1.54-.55a3.35 3.35 0 0 1 0-1.4q.57-4.76.7-6.57c.19-1.21.33-2.23.42-3.07.09-.47.19-1.07.28-1.82s.19-1.44.28-2.09c.46-3.08.79-5.68 1-7.83s.32-3.49.14-3.77c-.19-.56-.38-.84-.56-.84a1.67 1.67 0 0 1 -.84-.42 11.9 11.9 0 0 1 -1.12-1l-1-1.26a2.6 2.6 0 0 1 -.42-1 1 1 0 0 1 .42-.84 14.5 14.5 0 0 1 2.1-.7c1.68-.65 2.56-1.21 2.65-1.67a8.73 8.73 0 0 0 .7-2.8q.42-2.51.84-5.72.71-3.36 1.54-8.11t1.56-8.48l1.67-8.24-1.1-.86a4.64 4.64 0 0 0 -.69-.56c-.19-.19-.28-.33-.28-.42s-.33-.61-1-1.26a5.35 5.35 0 0 0 -1.68-1.25 18.93 18.93 0 0 1 -1.54-1.12c-.74-.65-1.58-1.45-2.51-2.38a36 36 0 0 1 -2.87-2.91 1.69 1.69 0 0 1 -.14-1.54 7.1 7.1 0 0 1 2.23-2.37 35.62 35.62 0 0 1 4.75-3.08 52.08 52.08 0 0 1 6-2.79 43.88 43.88 0 0 1 6.43-2.24q2.65-.69 5.72-1.25c2.15-.38 4.24-.66 6.29-.84s4.15-.28 6-.28a23.47 23.47 0 0 1 4.61.14 20.3 20.3 0 0 1 5 1.67 19.34 19.34 0 0 1 4.89 2.8 36.27 36.27 0 0 1 3.22 2.93c1.4 1.31 2.8 2.7 4.19 4.19s2.7 2.94 3.92 4.34a26.33 26.33 0 0 1 2.37 2.79 13 13 0 0 1 2 3.91 17.45 17.45 0 0 1 .69 4.05q.28 6.28-4.19 12.58-4.36 6.14-13.98 12.89l-2.37 1.68c-.93.56-1.91 1.16-2.94 1.81s-1.81 1.26-2.65 1.82-1.44.79-1.82 1c-.84.46-1.49.84-1.95 1.11a1.3 1.3 0 0 0 -.84.7 2.37 2.37 0 0 0 .42 1.12 12.71 12.71 0 0 1 1.36 1.76c.56.74 1.26 1.72 2.1 2.93s1.58 2 2.24 2.79 1.35 1.92 2.37 3.22 2.1 2.47 2.93 3.49l3.78 4.61q2.5 2.94 4.61 5.59t3.63 4.47c.93 1.12 1.77 2.1 2.51 2.94s1.59 1.81 2.24 2.65 1.44 1.82 2.38 2.93zm-58.11-76.7.14-.28c0-.18-.14-.28-.42-.28s-.19.1 0 .28c0 .28.09.42.28.42zm-1.4 61.61c0-.28-.09-.42-.28-.42s-.28.14-.28.42a.4.4 0 0 0 .14.28c.08 0 .22-.09.41-.28zm1.67 2.66a2.74 2.74 0 0 0 .14-1.54q0-.84-.27-.84a.37.37 0 0 0 -.42.42v.56a4 4 0 0 1 -.14.84c-.1.56 0 .93.14 1.12s.39-.1.54-.56zm0-3.77c.38 0 .56-.1.56-.28a.42.42 0 1 0 -.83 0c-.11.18-.01.28.26.28zm6-3.92c.19-.18.14-.28-.14-.28s-.42.1-.42.28v.28a.12.12 0 0 0 .14.14q.15 0 .42-.42zm.7-3.35c.09-.46.09-.7 0-.7l-.28.42a2.76 2.76 0 0 0 -.56 1.4c0 .47.1.61.28.42a5.38 5.38 0 0 0 .56-1.54zm.14-2.37c.28-.47.28-.79 0-1-.19-.47-.28-.37-.28.28s.09.94.28.72zm1.54-30.6c-.37.37-.52.61-.42.7a2.49 2.49 0 0 0 1-.42c.28-.28.37-.47.28-.56s-.3-.09-.86.28zm.56 4.75c.28 0 .42-.05.42-.14l-.42-.42a.28.28 0 1 0 0 .56zm.55 23c.1 0 .15-.18.15-.56-.19-.56-.28-.51-.28.14v.56c.09.14.13.1.13-.07zm.7-28.64c0-.46 0-.6-.14-.42-.28 0-.41.24-.41.7s0 .56.13.56a2.74 2.74 0 0 0 .42-.79zm2.38 25.15c0-.19-.14-.28-.42-.28s-.47-.09-.56 0-.05.28.42.28zm19.14-15.93c.09-.37.05-.51-.14-.42s-.37.19-.56.56 0 .42.28.42c.09.05.23-.13.42-.51zm-11.6-5.73q13.56-8.52 19.42-15.08 6-6.57 6-13.14c0-1.3-.28-2.14-.84-2.51s-1.68-.89-3.63-1.26q-5.44-.84-14.39.7a29.89 29.89 0 0 0 -4.75 1.12 1.2 1.2 0 0 0 -1 1.26 17.79 17.79 0 0 1 -.28 2.09c-.19 1.12-.46 2.52-.84 4.19s-.6 3.31-1 5.17-.75 3.63-1.12 5.31-.75 3.54-1.12 5.31-.7 3.4-1 4.89-.51 2.7-.7 3.63-.28 1.4-.28 1.4c0 .18.28.14.84-.14s2.27-1.3 4.69-2.89zm27 49.6c.56.28.65.09.28-.56a7.18 7.18 0 0 1 -.7-.83 2.34 2.34 0 0 0 -.7-.7l-1-1 .84 1a2 2 0 0 1 .7 1.39c-.01.52.17.75.55.75zm5.44 5.73a.4.4 0 0 1 -.13-.28.38.38 0 0 1 -.14-.28 1.17 1.17 0 0 0 -.14-.42 14.85 14.85 0 0 1 -1-1.12c-.47-.55-.93-1.07-1.4-1.53a8.15 8.15 0 0 0 -1.4-1.4c-.09-.09.05.14.42.7a8.19 8.19 0 0 0 .7 1.12 8.5 8.5 0 0 0 .7.84c.47.46.7.74.7.83 0 .28.23.65.7 1.12s.78.66.96.47zm.84-5c.19 0 0-.33-.69-1a2.85 2.85 0 0 1 -.7-.56l-.28-.28c-.19 0 0 .28.56.84s.8 1.02 1.08 1.02zm6.71 11.74a.83.83 0 0 0 -.56-.56c-.19 0-.28.14-.28.42a.62.62 0 0 0 .7.7c.25.02.3-.17.11-.54zm-5.31-9.78c.47.56.75.83.84.83s-.09-.27-.56-.83a4.28 4.28 0 0 0 -.56-.7c-.09-.1-.19-.19-.28-.28-.31.02-.12.34.53 1zm7.71-.56c-.19 0-.28-.28-.28-.84a3.22 3.22 0 0 0 .14-1 1.62 1.62 0 0 1 .14-.7c0-.46.09-.7.28-.7s.19.24 0 .7a2.39 2.39 0 0 0 -.14.7v.7a1.59 1.59 0 0 1 -.17 1.16zm10-9.79a.31.31 0 0 1 -.35-.35c0-.08.11-.12.35-.12.16.16.24.27.24.35s-.07.14-.23.14zm-7 14.68c.19 0 .28.14.28.42s-.14.28-.42.28c-.09.09-.14 0-.14-.28l.14-.28a.12.12 0 0 1 .18-.12zm24-81.68c0 .47 0 1.34-.12 2.6s-.2 2.56-.36 4.14-.23 3.07-.47 4.72-.35 3.11-.59 4.38q-.94 6.38-1.54 10.28c-.31 2.6-.59 4.53-.82 5.79s-.4 3-.71 5.2-.59 4.21-.83 6a16.72 16.72 0 0 0 -.35 1.66 7 7 0 0 0 -.12.94 3.71 3.71 0 0 0 -.24 1.06c-.16.87-.31 1.86-.47 3s-.28 1.85-.36 2.24a1.18 1.18 0 0 1 -.23.36v.35a.92.92 0 0 0 -.12.36 1.08 1.08 0 0 1 0 .71c0 .15-.08.19-.24.11-.31-.15-.39-.35-.23-.59s-.12-.47-.59-.47-.71.2-.71.59a.92.92 0 0 0 -.12.36c.08 0 .12 0 .12.11v.12c.15 0 .23.16.23.48s-.08.47-.23.47c-.32 0-.32.08 0 .23q0 .48-.24.48a.52.52 0 0 0 -.12.59c.16.16.08.23-.23.23a.48.48 0 0 0 -.48.24 2.68 2.68 0 0 0 0 1.18c.16.87.16 1.3 0 1.3s-.19.32-.35 1a1.85 1.85 0 0 1 -.24 1.18c-.23 0-.35-.63-.35-1.89a3.51 3.51 0 0 0 0-1.42c-.08-.16-.24-.12-.47.12a4.37 4.37 0 0 0 -.24 1.42c0 .63-.12.94-.36.94s-.23-.31-.23-.94l.23-.83a1 1 0 0 0 .24-.71c0-.39-.08-.51-.24-.35s-.31 0 0-.48l.24-.47q.12 0 .36.24c.23.39.47.31.7-.24a2.59 2.59 0 0 0 -.11-1.06c-.08-.08-.12 0-.12.23s-.16.36-.47.36-.36-.2-.12-.59c.31-.79.27-1.07-.12-.83s-.47.12-.47-.12.15-.35.47-.35.27-.24-.12-.71a1.21 1.21 0 0 1 -.24-1.18q.48-.36.48 0c0 .23.08.35.23.35s.32-.31.24-.94a3.73 3.73 0 0 0 -.35-1.42q-.36-.36-.12-.36c.15 0 .39-.23.71-.71s.19-.82-.12-.82-.47.23-.47.71c-.08.23-.12.31-.12.23a1.92 1.92 0 0 0 -.12-.47c0-.71.16-1.06.47-1.06s.36-.08.36-.24v-.35a1.2 1.2 0 0 0 .11-.48c.08-.15.08-.23 0-.23a.14.14 0 0 0 -.23 0c-.16.15-.24 0-.24-.48s.2-1.61.36-3.42c.07-.55 0-.71-.24-.48a1.63 1.63 0 0 0 -.35 1.19c0 .47-.12.67-.36.59s-.16.19 0 .59c0 .39-.08.59-.24.59s-.27.23-.11.71.08.63-.24.47c-.16-.16-.28-.2-.35-.12l.11.12a.86.86 0 0 1 -.11.95c-.71.86-.71 1.14 0 .82.31-.15.39-.08.23.24s-.31.51-.47.35-.24 0-.24.59a1.34 1.34 0 0 0 .48 1c.07.31 0 .51-.24.59s-.39.59-.24 1.3c.16.87.12 1.18-.12 1a.42.42 0 0 0 -.59 0c0 .23.08.35.24.35s.2.16.35.47-.11.48-.35.24c-.16-.08-.2.2-.12.83s0 .82-.12.82-.27-.11-.35.12a.75.75 0 0 0 0 .59q.12.36-.24.24a.81.81 0 0 1 -.35-.47c-.16-.24-.24-.16-.24.23a1.07 1.07 0 0 0 .12.48.39.39 0 0 0 .36.23c.15.16 0 .24-.48.24a1.7 1.7 0 0 1 -1.06-.36c-.24-.23-.2-.39.12-.47a.55.55 0 0 0 .35-.59c0-.32.08-.47.24-.47s.19-.08.12-.24-.12-.31-.36-.47c-.23-.32-.39-.43-.47-.36a9.51 9.51 0 0 1 -.24 1.07 13.22 13.22 0 0 0 -.23 2.48 5.91 5.91 0 0 1 -.12 1.18 1.62 1.62 0 0 1 -.12.71 1.25 1.25 0 0 0 -.12 1.18c.16.47.12.71-.12.71s-.31.55-.47 1.42a23.71 23.71 0 0 0 -.35 3.07q-.24 1.65-.36 2.13c-.08.23-.23.23-.47 0s-.63-.12-.71.35q-.36.7.12.36a1.36 1.36 0 0 1 .71.11c.23.16.08.28-.48.36a1.41 1.41 0 0 0 -.94.94q.12.48.12.36c0-.24.19-.47.59-.71s.47.2.47 1.3a6.53 6.53 0 0 1 -.12 1.3v.71c-.47.63-.78.39-.94-.71 0-.63-.12-1-.36-1s-.27.2-.35.83v.83a2.64 2.64 0 0 1 -.12.83 4.29 4.29 0 0 0 -.12 1.06 3 3 0 0 1 -.12.94 2.88 2.88 0 0 1 -.11.83 3.58 3.58 0 0 1 -.24.71c-.16.08-.24.28-.24.59s.08.4 0 .47c-.23.08-.27.36-.12.83s.08.59-.23.59-.36.2-.12.59q.12.36-.12.36c-.08.08-.39.08-.94 0a2.61 2.61 0 0 0 -1.66.35 1 1 0 0 1 -.71.24 1.11 1.11 0 0 1 -.82-.36c-.32-.31-.28-.47.11-.47s.36-.16.12-.47c-.39-.55-.23-.75.48-.59.31.23.35.12.11-.36s-.23-.82 0-1.06.24-.2 0-.12-.31-.27-.23-1.3a5.91 5.91 0 0 1 .12-1.18 3.74 3.74 0 0 0 .11-.71 4.07 4.07 0 0 0 0-3.07c-.08-.32-.15-.71-.23-1.18v-1.42a8.92 8.92 0 0 1 .23-.95c.08-.23.2-.27.36-.11a1.05 1.05 0 0 1 0 .7.21.21 0 0 0 .23.24c.16 0 .24-.31.24-.94-.16-.63-.31-1-.47-1v-.24a.35.35 0 0 0 -.12-.23 1 1 0 0 1 .12-.47c0-.24 0-.83.12-1.78s.31-2.12.47-3.31c.16-1.41.27-2.4.35-3s.32-1 .48-1h.35c0-.31-.12-.47-.35-.47a49.41 49.41 0 0 1 .35-5.55c.16-1.5.32-2.88.47-4.14s.24-2 .24-2.36c.08-.71.24-1.81.47-3.31s.44-3 .59-4.61.44-3 .59-4.37.28-2.29.36-2.84.39-2 .71-4.25.67-4.53 1.06-7q.6-3.9 1.18-7.57c.4-2.44.75-4.68 1.07-6.73s.59-3.78.82-5.2.44-2.52.59-3.07a3.43 3.43 0 0 1 .48-1.42 1.68 1.68 0 0 1 .94-.35 5.9 5.9 0 0 1 2.37 0 6.91 6.91 0 0 1 2.59.7c.87.56 1.38.67 1.54.36s.51-.08 1.3.47a3.8 3.8 0 0 0 .95.59c.15 0 .31-.16.47-.47s.39-.55.71-.47a13 13 0 0 1 2.83.94c.32.08.6.44.83 1.07a6.26 6.26 0 0 1 .39 2.32zm-25.24 69.52c.09-.46.09-.7 0-.7s-.14 0-.42.28l-.28.56q-.15.15 0 .42l.28.56a4.09 4.09 0 0 0 .45-1.1zm1.11-8.94c.19-.37.1-.46-.28-.28-.37 0-.55.1-.55.28s.13.42.41.42a.37.37 0 0 0 .45-.4zm0-2.23c.1 0 .14-.1.14-.28s-.09-.42-.28-.42-.32.23-.14.42c0 .18.05.28.14.28zm3.78-2.66c.18-.18.14-.28-.14-.28s-.42.1-.42.28.09.42.28.42h.14v-.14zm1.67 2.24a.86.86 0 0 0 .56.28q.29-.15 0-.42c0-.28-.18-.42-.56-.42s-.25.2.02.58zm1.54-10.06c.19 0 .28-.14.28-.42s-.05-.42-.14-.42l-.42.42c.03.3.12.44.31.44zm0 1.88q.36-.48 0-.12a1.13 1.13 0 0 1 -.83.12c-.07-.08-.11-.08-.11 0l.11.12c.19.49.47.41.86-.1zm1.66.12c.07-.32.23-.48.47-.48s.24-.07.24-.23l-.24-.12h-.47c-.16 0-.24.2-.24.59q.06 1.21.27.26zm.59 1.06a.65.65 0 0 0 .47.24c.16-.08.24-.28.24-.59s-.16-.36-.48-.12-.36.33-.2.49zm3.9-10.52c-.16.95-.16 1.3 0 1.07.15-.08.27-.32.35-.71a9.26 9.26 0 0 0 .12-1.54 7.76 7.76 0 0 0 .12-1.3c0-.39 0-.59-.12-.59s-.24.28-.24.83a6.89 6.89 0 0 1 -.12 1.06 6.64 6.64 0 0 1 -.08 1.2zm.82 12.41q.12-.12 0-.12c0-.08-.08 0-.23.12q-.48.12-.48.24t.24.12c.35.02.5-.1.5-.34zm.24-1.77q.12-.12 0-.12t-.24 0c-.31.08-.47.2-.47.36s.12.11.35.11.39-.12.39-.33zm-.24-13.94q.12 0 .12-.36c0-.16-.12-.24-.35-.24s-.28.08-.12.24.23.38.38.38zm.12-1.54c.16-.08.24-.28.24-.59 0-.47-.08-.71-.24-.71-.16-.16-.24 0-.24.59s.11.73.27.73zm2.39 10.89c-.23 0-.35.08-.35.24a.31.31 0 0 0 .35.35c.16 0 .32-.12.48-.35q0-.36-.48-.24zm-1.89-15.72c-.31.32-.35.59-.11.83s.27.32.35.24a1.16 1.16 0 0 0 .24-.83 1.76 1.76 0 0 1 -.24-.71.11.11 0 0 0 -.12.12.35.35 0 0 1 -.12.24zm-.11 2.37a.7.7 0 0 0 .35.35c.24.08.35 0 .35-.12s-.11-.19-.35-.35-.43-.04-.35.12zm2 15.17c.24-.15.2-.23-.11-.23s-.63.31-.71.94c.08.16 0 .36-.24.59s-.31.24 0 .24.32.27.24.83a1.91 1.91 0 0 1 -.24 1.06.94.94 0 0 0 -.35.59c0 .16.15.24.47.24a.93.93 0 0 0 .83-.36 1.73 1.73 0 0 0 .23-.71 5.83 5.83 0 0 0 .12-1.18 4.93 4.93 0 0 0 -.12-1.18c-.08-.32-.19-.47-.35-.47a.11.11 0 0 1 -.12-.12 1.51 1.51 0 0 1 .35-.24zm.12-.59c.32 0 .48-.12.48-.35s-.16-.16-.48 0a.33.33 0 0 0 -.23.12h-.12l-.12.11c0 .03.16.07.47.07zm.48-2.24c.23 0 .35-.24.35-.71a1 1 0 0 0 -.47-1q-.36 0 0 .24t.12.24c-.24 0-.36.23-.36.7q0 .48.36.48zm.59-2.72c.15-.39.11-.55-.12-.47s-.36.19-.59.59-.24.67.23.59a.77.77 0 0 0 .48-.76zm1.3-11c0-.32-.08-.47-.24-.47s-.28.15-.12.47.28.47.36.47zm-2.6 22.92c.15 0 .19.56.11 1.66a2.73 2.73 0 0 1 -.47 1.89c-.16.31-.23.23-.23-.24a1.52 1.52 0 0 0 -.12-.94 1.17 1.17 0 0 1 .23-1.18c.24-.56.32-.87.24-1s-.08-.23.24-.23zm-9.46 13.36c0-.4.12-.63.36-.71s.39.08.47.47 0 .47-.35.47c-.32.12-.48.04-.48-.27zm5.68-5.2c0-.4.11-.44.35-.12a2.05 2.05 0 0 1 .24.94q0 .36-.24.12a1.24 1.24 0 0 1 -.35-.98zm-5.56 1.89a.63.63 0 0 1 .47-.71c.32-.16.52 0 .6.35a.42.42 0 0 1 -.48.48c-.39.11-.59.07-.59-.16zm-.23 4.37c.15-.16.35-.16.59 0q.12 0 0 .12h-.71q-.12-.16.12-.16zm8.74-9.57c0-.4.08-.51.24-.36s.19.24.11.48c-.23.66-.35.66-.35-.16zm-4.61 7.56q.24-.24.24-.12v.71c0 .71-.08 1.07-.24 1.07s-.24-.16-.24-.48a3.84 3.84 0 0 1 .24-1.22zm.95 5.32c.15-.16.27-.2.35-.12s0 .08-.12.24c-.31.86-.63.9-.94.12q-.36-.36.12-.12c.07.04.27 0 .59-.16zm-.12-8.75q-.12.72-.36.12a2.93 2.93 0 0 1 .24-1.89l.24-1.18.11 1.06a7.64 7.64 0 0 1 -.23 1.85zm1.18 1.07c.24 0 .2.39-.12 1.18-.16.79-.23 1.22-.23 1.3s.07.59-.24 1.3l-.47 1.06.11-1.3a5.29 5.29 0 0 0 .12-1.06 3.58 3.58 0 0 1 .24-.71.68.68 0 0 0 .12-.47v-1.77q.12-.24.12 0c.15.27.27.43.35.43zm2.13-2.13c.08 0 .11.08.11.24s-.27.35-.35.35a.11.11 0 0 1 -.12-.12v-.23q0-.28.36-.28zm-4.14 2.84q0-.36.24-.12c.23.16.35.27.35.35s-.12.12-.35.12-.24-.16-.24-.39zm-2.95-3.9c.23 0 .43.15.59.47s.19.63.12.71-.16.2-.48.35-.63.12-.71-.11a.91.91 0 0 1 .12-.71q.12 0 .12-.48c-.08 0-.12 0-.12-.11a.49.49 0 0 1 .36-.16zm-3.33 12c.28-.28.47-.32.56-.13s.19.46 0 .83-.46.28-.56 0c-.28-.24-.28-.48 0-.76zm-.83 4.2c-.1-.56 0-.7.27-.42a1.24 1.24 0 0 1 .28 1.39c-.09.47-.28.75-.55.84s-.28-.09-.28-.56c0-.28.09-.42.28-.42.37-.06.37-.34 0-.89zm4.87-19.85c.23 0 .35.08.35.24a3.41 3.41 0 0 1 .12 1.18c-.08 1.66-.36 2.21-.83 1.66-.16-.48-.23-.52-.23-.12a.42.42 0 0 1 -.48.47c-.23 0-.35-.08-.35-.24a.94.94 0 0 1 .12-.35c.08-.16.15-.32.23-.47.32-.32.48-.55.48-.71-.08-1.16.11-1.72.59-1.72zm-5 22.36c.28.09.37.37.28.84s-.33.7-.7.7a.25.25 0 0 1 -.28-.28 2.9 2.9 0 0 1 .14-1c.17-.32.35-.41.55-.32zm.84-5.31a.37.37 0 0 1 .41.42c0 .19-.14.28-.41.28s-.43-.09-.43-.28a.38.38 0 0 1 .38-.48zm102.16-74.8a36.07 36.07 0 0 1 6 15.78q.84 7.83-2.52 17.75a64.09 64.09 0 0 1 -4.19 10.2 67.2 67.2 0 0 1 -5.59 9.08 56 56 0 0 1 -6.28 7.54 42.1 42.1 0 0 1 -6.71 5.31 18.37 18.37 0 0 1 -3.63 2 2.16 2.16 0 0 1 -1.54 0c-.28-.28-.42-.19-.42.28s-.56.88-1.67 1.25a27.37 27.37 0 0 1 -6.85 1.68 19.08 19.08 0 0 1 -6.15-.14 26.9 26.9 0 0 0 -2.93-.7c-1.4-.28-2.75-.51-4-.7q-4.2-.84-6.85-1.39a46 46 0 0 1 -4.47-1.4 29 29 0 0 1 -2.93-1.4 23.25 23.25 0 0 1 -2.38-2.09 22.49 22.49 0 0 1 -2.51-3.08q-1.26-1.82-2.38-3.77c-.65-1.4-1.25-2.75-1.81-4a22.51 22.51 0 0 1 -1-3.49 6.1 6.1 0 0 0 -.28-2c-.19-.74-.37-1.77-.56-3.07a44.1 44.1 0 0 1 0-4.89 66.17 66.17 0 0 1 2-14.53 77.67 77.67 0 0 1 4.89-14.25 66.71 66.71 0 0 1 7.26-12.3 42.2 42.2 0 0 1 9.08-9.08 35.29 35.29 0 0 1 7.83-4.47 20.5 20.5 0 0 1 7.68-1.4h2.23a8.08 8.08 0 0 1 1.54.14 4.56 4.56 0 0 1 1.4.56 15.88 15.88 0 0 1 2 .84 46.33 46.33 0 0 0 4.9 2c1.67.55 3.44 1.07 5.3 1.53a19.11 19.11 0 0 1 8.25 3.77 34.6 34.6 0 0 1 7.29 8.44zm-59.79 37.58c.28 0 .41-.19.41-.56 0-.19-.13-.28-.41-.28s-.28.19-.28.56.09.47.28.28zm.56-3.35c.37 0 .55 0 .55-.14s-.14-.33-.42-.42a.26.26 0 0 0 -.41.14c-.19.28-.1.42.3.42zm3.77 1.11c.18 0 .28-.14.28-.42s0-.41-.14-.41-.33.13-.42.41.09.42.28.42zm44.56-20.25v-3.36a10.14 10.14 0 0 0 -.28-2.51 13 13 0 0 0 -.42-2.24 11.75 11.75 0 0 0 -.83-2.09c-.1-.19-.24-.52-.42-1s-.38-1-.56-1.54a23.41 23.41 0 0 0 -2.24-4.18 32.63 32.63 0 0 0 -2.93-4.47l-1.54-2-2 .14q-4.47.42-9.92 4.33a48.69 48.69 0 0 0 -9.78 9.78 65.79 65.79 0 0 0 -3.77 5.59 45.24 45.24 0 0 0 -2.94 5.73 68 68 0 0 0 -5.68 22.12q-.69 10.77 3.08 18.31c.28.56.6 1.21 1 2s.93 1.45 1.39 2.1a19.64 19.64 0 0 1 1.4 1.53c.37.47.61.7.7.7a3.56 3.56 0 0 0 .84-.14 8.57 8.57 0 0 0 1.67-.56c.56-.18 1.17-.37 1.82-.55a10.41 10.41 0 0 0 1.4-.7l1.39-.56a3.9 3.9 0 0 0 1-.56q1-.55 2.1-1.26l2.51-1.67c.84-.66 1.58-1.21 2.24-1.68a48.94 48.94 0 0 0 8.38-8.52 67.11 67.11 0 0 0 6.85-11.88 70.27 70.27 0 0 0 4.19-11.31 34.57 34.57 0 0 0 1.35-9.55zm6.29 23.47c0-.28-.09-.42-.28-.42a.55.55 0 0 0 -.56.42c0 .18 0 .28.14.28.38 0 .61-.1.7-.28zm.56-1.26a1.14 1.14 0 0 0 .28-.84c0-.37-.09-.46-.28-.28a1.72 1.72 0 0 0 -.28.7c0 .29.12.42.28.42zm2.51-6.29a2.41 2.41 0 0 0 .28-1.12c-.09-.18-.18-.14-.28.14a2.48 2.48 0 0 0 -.41 1.12c0 .28.14.23.41-.14zm1.4-5.17c.19-.74.23-1.11.14-1.11s-.09 0-.28.41a3.92 3.92 0 0 0 -.7 2c0 .75-.09 1.12-.28 1.12-.18.37-.23.6-.14.7s.42 0 .7-.56a8.27 8.27 0 0 0 .56-2.56zm.7-2.79a9 9 0 0 0 .28-2.66 2.41 2.41 0 0 0 -.14-1v.14c-.19.65-.37 1-.56 1.11a4.4 4.4 0 0 1 -.14.7 6.36 6.36 0 0 0 .14 1.12c.09 1.24.23 1.43.42.59zm3.63 2.65c.1 0 .24-.28.42-.83s.14-.7-.14-.7c-.09 0-.23.23-.42.7s-.14.83.14.83zm72-37.86c.19.37.28.51.28.42 0 .09-.09.14-.28.14s-.28 0-.28-.14a.13.13 0 0 1 -.12-.09c0-.23.12-.33.4-.33zm-8.38 2c.37 0 .56.09.56.28s-.23.42-.7.42-.56-.14-.56-.42a.94.94 0 0 1 .68-.32zm6.15-2.67a1.23 1.23 0 0 0 .14 1c.18.19.18.28 0 .28l-1.82.14a3.63 3.63 0 0 1 -1.4 0c-.28-.09-.37-.19-.28-.28a1.21 1.21 0 0 1 .84-.42c.56-.09.84-.32.84-.7s.28-.56.84-.56c.74-.05 1.02.14.84.54zm-2.8-3.21c0-.37.14-.56.42-.56a1.27 1.27 0 0 1 1 .14c.37.19.42.28.14.28a5.59 5.59 0 0 0 -1 .28c-.37.16-.56.07-.56-.17zm.42 3.07c0 .19-.51.28-1.53.28s-1.36 0-1.26-.14a2.57 2.57 0 0 1 1.53-.28c.84-.12 1.26-.07 1.26.11zm-2.79 1.14c.46 0 .74.09.84.28s.09.33-.28.42h-.7a6.36 6.36 0 0 0 -1.12.14l-3.07.28a3.31 3.31 0 0 0 -1.68.42c-.47.18-.51.37-.14.56a8 8 0 0 0 2.1 0c1.3-.19 1.95-.14 1.95.14s-.51.37-1.54.56a22.37 22.37 0 0 0 -2.65.28c-1.3.09-2.65.23-4.05.41s-2.65.38-3.77.56a7.23 7.23 0 0 0 -1.82.42 14.31 14.31 0 0 0 -.56 2.66c-.18 1.58-.42 3.49-.7 5.72-.18 1.12-.42 2.43-.7 3.92s-.37 2.84-.55 4.33-.42 2.93-.7 4.33-.33 2.51-.42 3.63q-.56 3.21-1 6.71c-.28 2.23-.51 3.86-.7 4.89q-.13.84-.42 2.79c-.18 1.21-.42 2.7-.7 4.47s-.46 3.59-.83 5.73-.61 4.1-1 6.15q-.84 6.42-1.68 11.59-.69 5.18-.84 6.15c-.18.65-.42 1.77-.7 3.35s-.37 3.22-.55 4.89q-.84 4.89-1.4 7.27a8.27 8.27 0 0 1 -1.26 3.21 1.66 1.66 0 0 1 -1 1c-.37.19-.46.05-.28-.42.19-.28.14-.28-.14 0-.83.65-1.39.56-1.67-.28q-.15-.42-.42 0c-.19.19-.37.14-.56-.14s-.7-.37-1.54-.28a5.67 5.67 0 0 1 -1.81 0c-.84 0-1.73 0-2.66-.14a16.59 16.59 0 0 1 -2.51-.42c-.75-.18-1.17-.37-1.26-.56q-1.26-1.81-.56-6.42c.09-1.21.33-3 .7-5.45s.79-5.26 1.26-8.52 1.12-6.8 1.67-10.62 1.31-7.69 2-11.6q.71-3.63 1.12-6.42a33.83 33.83 0 0 1 .56-3.36c.09-.56.23-1.72.42-3.49s.6-3.82 1-6.15.8-5 1.26-7.68.89-5.26 1.26-7.68.7-4.52 1-6.29.6-3.12.69-3.77c.19-.47.24-.75.14-.84s-.41-.1-1 0l-3.08.56q-2.37.42-5.45.83-2.93.42-6.14 1t-5.59.84q-2.79.42-4.89.84c-1.31.19-2 .28-2.24.28-.46.18-.7.18-.7 0s.1-.61.56-1c.28-.19.24-.23-.14-.14-.56.09-.83 0-.83-.42a1.52 1.52 0 0 1 .41-1.12l.28-.28c0-.09-.14 0-.42.14-.46.1-.69-.14-.69-.69a3.23 3.23 0 0 0 -.56-1.82 9.32 9.32 0 0 1 -.7-1.4c-.28-.65-.56-1.35-.84-2.09s-.51-1.45-.7-2.1a4.49 4.49 0 0 1 -.42-1.26c0-.46.38-.88 1.12-1.25a7.75 7.75 0 0 1 2.52-1.12c.93-.19 2.56-.47 4.88-.84s4.8-.93 7.41-1.4 5.31-.88 7.82-1.25 4.57-.8 5.87-1a19.64 19.64 0 0 0 2.38-.28c1.3-.19 2.74-.37 4.33-.56s2.93-.33 4.33-.42a14.39 14.39 0 0 0 2.93-.56 18 18 0 0 0 2.1-.14 16.59 16.59 0 0 0 2.51-.42q2.24-.27 6.85-.56t8.66-.69h2.66c.55 0 .83.09.83.28q0 .69.42 0a.44.44 0 0 1 .42-.28h.56c.28 0 .61.23 1 .69a2.15 2.15 0 0 1 .56 1.26c-.19.28-.14.42.14.42s.28.75.28 2.24c.09 1.77-.05 2.37-.42 1.81a4.32 4.32 0 0 0 -2-.28c-.93 0-1.49.14-1.67.42q0 .42.27.42a.37.37 0 0 1 .42.42c0 .37-.46.56-1.39.56a2.9 2.9 0 0 0 -1.68.28h-.42a.79.79 0 0 1 -.56-.28 3.4 3.4 0 0 0 -1.53.28 2 2 0 0 1 -1.4.42c-.28-.28-.61-.24-1 .14-.28.18-.42.23-.42.14s-.14-.14-.42-.14a.79.79 0 0 0 -.56.28q-.84.27-.84 0c0-.38-.18-.38-.55 0a1.88 1.88 0 0 1 -1.4 0 3.11 3.11 0 0 0 -1-.28q-.13 0-.42.42 0 .56.42.42c.28-.1.42 0 .42.14 0 .46-.51.46-1.54 0a1.18 1.18 0 0 0 -1.12.27 1.1 1.1 0 0 1 -.83.28.52.52 0 0 0 -.7 0c-.47.19-.47.38 0 .56a4.64 4.64 0 0 0 1.95-.14c1.12 0 1.68.1 1.68.28s0 0 .14-.14c.37-.37 1-.42 1.82-.14.93 0 1.49-.09 1.67-.28 0-.28.24-.42.7-.42s.51.14.14.42l-.28.28h.7c.65 0 1-.09 1-.28s.33-.14 1-.14a1.54 1.54 0 0 1 .69.14h.56c.28 0 .24.19-.14.56s-.23.56.14.56a.49.49 0 0 0 .56-.56c0-.37.37-.56 1.12-.56s.93.19.84.56.02.56.58.56zm-4.47-4.75c-1 .09-1.45.33-1.26.7s.32.42.42.14a1.13 1.13 0 0 1 .7-.14l1.39-.28a4.34 4.34 0 0 1 1.54 0h1a.69.69 0 0 0 .84 0 .91.91 0 0 0 .56-.84c0-.18-.33-.23-1-.14a32.63 32.63 0 0 0 -4.19.51zm-24.73 65.2a1.8 1.8 0 0 0 0-1c-.37-.47-.56-.09-.56 1.11 0 .94 0 1.22.14.84a1.07 1.07 0 0 0 .14-.42zm3.07-22.08c.1 0 .14 0 .14-.14a.56.56 0 0 0 -.14-.42c-.18-.37-.28-.32-.28.14s.1.61.28.42zm.28-2.79a.84.84 0 0 0 .14-.56c-.19-.28-.28-.23-.28.14s.05.51.14.42zm13-32.83c.47 0 .61-.1.42-.28h-.28q-.13-.15-.42 0c-.38.18-.28.28.27.28zm1.26 0a.42.42 0 1 0 -.42-.42.37.37 0 0 0 .41.42zm1.54-.42q.42-.42-.42-.42a.37.37 0 0 0 -.42.42c0 .28.09.42.28.42s.36-.14.55-.42zm1.95-.14c1-.28 1.31-.47.84-.56a2.39 2.39 0 0 0 -1.39-.14c-.47.09-.7.28-.7.56s-.1.42 0 .42a6.88 6.88 0 0 0 1.24-.28zm2.8-2c.28 0 .42-.09.42-.28a.13.13 0 0 0 -.14-.14v-.28q-.29 0-.42.42c-.2.23-.15.32.13.32zm3.63-.28c.37 0 .56-.09.56-.28h-.42q-.13-.14-.42 0c-.2.23-.05.37.27.37zm69.2-4.89a2.41 2.41 0 0 1 1.25 1.54 4.41 4.41 0 0 1 -.42 2.65q-.69 2.1-1.67 5l-1.69 5.66c-.47 1.86-.93 3.63-1.4 5.31s-.65 3-.83 4c-.19.75-.33 1.4-.42 2a8.11 8.11 0 0 1 -.42 1.53 7.68 7.68 0 0 0 -.42 1.4c-.37 0-.42.14-.14.42a1.47 1.47 0 0 1 .14.84 6.82 6.82 0 0 1 -.14 1.26c-.09.46-.19.93-.28 1.39a4.34 4.34 0 0 1 -.28 1c-.19.37-.33.56-.42.56a5.59 5.59 0 0 0 -.28-1 1 1 0 0 0 -.56-.84q-.42-.27-.42.42c.1.47 0 .65-.42.56s-.46-.37-.55-.84a5.11 5.11 0 0 0 -.42-1.39c0-.1-.1 0-.28.42-.38.65-.66.79-.84.41a22.1 22.1 0 0 1 0-3.63l.14-1.26-.42 1.4c-.28 1.68-.75 2.33-1.4 2h-.56a.92.92 0 0 0 -.42-.14 7.57 7.57 0 0 1 -2.23-.7 5.23 5.23 0 0 1 -1.82-1h-.28a.4.4 0 0 0 -.28-.14 1.3 1.3 0 0 1 -.69-.28c-.28-.18-.61-.37-1-.56-.84-.56-1.31-.74-1.4-.56a18.37 18.37 0 0 1 -.28-3.91 6.16 6.16 0 0 1 .14-1.11 9.51 9.51 0 0 1 .28-1.12 9.25 9.25 0 0 0 .28-1.54c.09-.74.19-1.63.28-2.65.18-.84.32-1.59.42-2.24a2.77 2.77 0 0 1 .28-1.12 1.08 1.08 0 0 0 .28-1c-.1-.28-.33-.38-.7-.28h-.84a2.1 2.1 0 0 0 -.7-.14h-.42c0-.1 0-.14-.14-.14h-.14c0 .28-.46.51-1.4.7a35.33 35.33 0 0 0 -12 4.33c-1.58.83-2.93 1.63-4.05 2.37s-2.42 1.86-4.19 3.35c-.93.84-2 1.87-3.22 3.08s-2.18 2.47-3.21 3.77a32 32 0 0 0 -2.51 3.35 4.74 4.74 0 0 0 -1 1.82c0 .19 1 .51 3.07 1s4.24.88 6.57 1.25c5.59.94 8.43 1.68 8.52 2.24 0 .19.23.28.7.28a4.08 4.08 0 0 1 2.37.7 21.77 21.77 0 0 1 3.5 2.23 38.75 38.75 0 0 1 3.85 3.08 20.68 20.68 0 0 1 3.21 3.07c.56.75 1.21 1.54 2 2.38s1.49 1.53 2 2.09a36.13 36.13 0 0 1 4.75 6.15 12.38 12.38 0 0 1 2 5.31 14 14 0 0 1 -.84 6.56 32.37 32.37 0 0 1 -3.35 7.13 39.2 39.2 0 0 1 -5.31 6.85 35.4 35.4 0 0 1 -6.71 5.72 34.3 34.3 0 0 1 -7.82 4.05 46.33 46.33 0 0 1 -8.52 2 27.16 27.16 0 0 1 -3.91.28c-1.31.09-2.29.14-2.94.14a15.43 15.43 0 0 1 -4.75-1 8.63 8.63 0 0 1 -3.21-2.37l-2.6-2.4a27.36 27.36 0 0 0 -2.93-2.79c-.84-.93-1.68-1.82-2.52-2.66a22.53 22.53 0 0 1 -1.67-1.81c-1.4-1.59-1.68-3-.84-4.34l.56-.83 1.53 1.53a27.44 27.44 0 0 0 3.08 2.8 6.86 6.86 0 0 0 2.65.42h2.38c1-.1 2.09-.19 3.21-.28l3.08-.28a12.54 12.54 0 0 0 2.23-.56 1.87 1.87 0 0 1 1-.42l1.4-.56a9.19 9.19 0 0 1 1.39-.42 1.87 1.87 0 0 0 1-.42 17.78 17.78 0 0 0 3.49-1.53c1.68-.94 3.17-1.82 4.47-2.66a44 44 0 0 0 5.45-4.47 31.56 31.56 0 0 0 4.33-5.17 23.72 23.72 0 0 0 2.24-3.63 22.76 22.76 0 0 0 1.68-3.91 14.68 14.68 0 0 0 .83-3.36 3.38 3.38 0 0 0 -.13-2.23 2.94 2.94 0 0 0 -1.26-.84 14.54 14.54 0 0 0 -2.24-.84 28 28 0 0 0 -2.93-1c-1-.27-2-.51-2.94-.69q-4.47-.7-7.26-1.26c-1.86-.37-3.87-.89-6-1.54-1.58-.46-2.89-.88-3.91-1.26s-1.91-.88-2.65-1.25a17.19 17.19 0 0 1 -2.1-1.54c-.65-.65-1.35-1.4-2.1-2.23-.55-.66-1.39-1.59-2.51-2.8s-2-2.33-3.07-3.35a60 60 0 0 1 -4.2-4.89 4.29 4.29 0 0 1 -.83-2.94 17.29 17.29 0 0 1 .42-2.79 16.71 16.71 0 0 1 1.67-3.05 22.35 22.35 0 0 1 2.8-3.92q1.82-2.09 3.91-4.19a56.59 56.59 0 0 1 4.29-3.91 42 42 0 0 1 4.33-3.35 44.8 44.8 0 0 1 15.37-6.57 37.13 37.13 0 0 1 15.93-.42q1.11.28 2 .42h1a11.48 11.48 0 0 1 1.26-3.07 16.47 16.47 0 0 1 1.81-3.49c.56-.84.93-1.08 1.12-.7 0 .28.19.42.56.42a2.44 2.44 0 0 1 1 .42 12.47 12.47 0 0 1 1.53 1.11 9.64 9.64 0 0 1 1.4 1.12 11.75 11.75 0 0 1 1 .84c.28.56.65.7 1.12.42.28-.09.46-.09.56 0s.18.23.27.7c0 .74.1 1 .28.83a.25.25 0 0 1 .28.28l.28.28q0 .84.42 0c.28-.46.56-.65.84-.56a14.38 14.38 0 0 1 2.16 1.54zm-52.4 23.33c-.65.47-.83.7-.55.7s.36-.19.54-.66zm42.2 1.4c0-.74-.1-1-.28-.7a2.72 2.72 0 0 0 -.28 1.26q.13.28 0 .42c-.1.09-.23.09-.42 0-.37-.09-.56-.05-.56.14s.19.42.56.7.46.18.56 0a4.92 4.92 0 0 0 .41-1.78zm.42-3.07a4.89 4.89 0 0 0 .25-1.08.13.13 0 0 0 -.14-.14.12.12 0 0 0 -.14.14 1.61 1.61 0 0 0 -.28 1.12c.11.46.2.46.3 0zm.69-3.08a1.85 1.85 0 0 0 .28-1.25c0-.28-.14-.24-.42.14a1.23 1.23 0 0 1 -.13.55v.56q-.01.61.26.04zm9.36-17c.28 0 .38-.19.28-.56a.12.12 0 0 0 -.14-.14v-.42c.1 0 0 .19-.41.56-.01.37.08.56.26.56zm-215.44-7.6c-.55 3.72-1 6.49-1.39 8.3a10.46 10.46 0 0 1 -1.25 3.67 1.85 1.85 0 0 1 -1 1.12c-.38.21-.47 0-.28-.48.18-.32.14-.32-.14 0-.84.74-1.39.64-1.67-.32-.1-.32-.23-.32-.42 0s-.37.16-.56-.16-.69-.42-1.53-.32a4.65 4.65 0 0 1 -1.81 0 22.47 22.47 0 0 1 -2.64-.16 14.35 14.35 0 0 1 -2.51-.48c-.74-.21-1.16-.42-1.25-.64q-1.24-2.07-.56-7.34.14-1.95.64-5.75c0-.05-.23-.47 2-.24.38 0 .83.45 1.34.51 1.47.18 3.59.07 5.54.3.7.08.33.32 1 .44 1.77.32 4.4.6 5.55.85s.93.73.93.7" transform="translate(0 -29.1)"/><path d="m175.29 0h16.35v16.35h-16.35z"/></g></svg>
diff --git a/smoke/astro.build-main/src/icons/logos/github.svg b/smoke/astro.build-main/src/icons/logos/github.svg
new file mode 100644
index 000000000..03efc48b9
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/github.svg
@@ -0,0 +1,9 @@
+<svg width="518" height="220" viewBox="0 0 518 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M100.175 105.932H56.6557C56.1182 105.932 55.6028 106.146 55.2227 106.526C54.8427 106.906 54.6292 107.421 54.6292 107.959V129.23C54.6292 129.768 54.8422 130.285 55.2219 130.668C55.6015 131.05 56.1169 131.267 56.6557 131.271H73.6293V157.672C73.6293 157.672 69.8207 158.98 59.2571 158.98C46.8251 158.98 29.4634 154.439 29.4634 116.251C29.4634 78.0645 47.5437 73.0486 64.5173 73.0486C79.2057 73.0486 85.5439 75.6356 89.5681 76.8716C89.8619 76.9285 90.1645 76.9201 90.4547 76.847C90.7448 76.774 91.0153 76.638 91.2471 76.4487C91.4789 76.2595 91.6662 76.0216 91.7957 75.7519C91.9253 75.4823 91.9941 75.1874 91.997 74.8882L96.898 54.3359C96.9097 54.0267 96.8449 53.7193 96.7096 53.4411C96.5742 53.1628 96.3724 52.9222 96.1219 52.7406C94.4834 51.5764 84.5091 46 59.3002 46C30.2539 46 0.474609 58.3457 0.474609 117.746C0.474609 177.147 34.5799 185.986 63.31 185.986C87.1105 185.986 101.555 175.824 101.555 175.824C101.782 175.642 101.96 175.406 102.073 175.137C102.185 174.869 102.23 174.576 102.201 174.287V107.944C102.198 107.409 101.982 106.898 101.603 106.521C101.223 106.144 100.71 105.932 100.175 105.932Z" fill="currentColor"/>
+<path d="M324.353 53.1143C324.357 52.8476 324.308 52.5829 324.209 52.3354C324.109 52.088 323.962 51.8628 323.774 51.6729C323.587 51.483 323.364 51.3322 323.118 51.2293C322.872 51.1264 322.608 51.0734 322.341 51.0734H297.908C297.641 51.0734 297.376 51.1263 297.13 51.229C296.883 51.3318 296.659 51.4823 296.47 51.672C296.282 51.8617 296.133 52.0868 296.032 52.3344C295.931 52.5819 295.88 52.847 295.882 53.1143V100.442H257.652V53.1143C257.654 52.847 257.603 52.5819 257.502 52.3344C257.401 52.0868 257.252 51.8617 257.063 51.672C256.875 51.4823 256.651 51.3318 256.404 51.229C256.157 51.1263 255.893 51.0734 255.625 51.0734H231.193C230.925 51.0734 230.661 51.1263 230.414 51.229C230.167 51.3318 229.943 51.4823 229.755 51.672C229.566 51.8617 229.417 52.0868 229.316 52.3344C229.215 52.5819 229.164 52.847 229.166 53.1143V181.286C229.166 181.825 229.379 182.342 229.759 182.724C230.138 183.106 230.654 183.323 231.193 183.327H255.625C256.164 183.323 256.68 183.106 257.059 182.724C257.439 182.342 257.652 181.825 257.652 181.286V126.456H295.825L295.753 181.286C295.756 181.826 295.973 182.343 296.355 182.725C296.737 183.107 297.253 183.323 297.794 183.327H322.341C322.607 183.325 322.871 183.271 323.116 183.167C323.361 183.063 323.583 182.913 323.77 182.723C323.957 182.534 324.105 182.309 324.205 182.063C324.305 181.816 324.355 181.552 324.353 181.286V53.1143Z" fill="currentColor"/>
+<path d="M146.396 70.0016C146.367 66.8811 145.416 63.8387 143.662 61.2579C141.907 58.677 139.428 56.673 136.537 55.4985C133.646 54.3239 130.472 54.0312 127.415 54.6574C124.358 55.2835 121.554 56.8005 119.357 59.0171C117.161 61.2337 115.669 64.0508 115.071 67.1135C114.472 70.1763 114.794 73.3477 115.994 76.2281C117.195 79.1085 119.221 81.5692 121.818 83.3001C124.415 85.031 127.465 85.9547 130.586 85.9548C132.674 85.9549 134.742 85.5413 136.67 84.7378C138.597 83.9343 140.346 82.7569 141.816 81.2736C143.286 79.7903 144.448 78.0305 145.234 76.0958C146.02 74.1611 146.415 72.0898 146.396 70.0016Z" fill="currentColor"/>
+<path d="M144.642 154.237V95.0811C144.642 94.5424 144.429 94.0254 144.05 93.6431C143.67 93.2608 143.155 93.0441 142.616 93.0403H118.183C117.612 93.09 117.08 93.3498 116.69 93.7693C116.3 94.1888 116.079 94.7382 116.07 95.3111V180.107C116.07 182.594 117.623 183.341 119.62 183.341H141.624C144.039 183.341 144.628 182.148 144.628 180.064L144.642 154.237Z" fill="currentColor"/>
+<path d="M417.398 93.2272H393.138C392.598 93.2347 392.082 93.4546 391.703 93.8392C391.324 94.2238 391.111 94.7423 391.111 95.2824V158.132C386.675 161.05 381.488 162.617 376.178 162.645C367.411 162.645 365.083 158.664 365.083 150.084V95.2824C365.087 94.7436 364.878 94.2251 364.501 93.8401C364.124 93.4551 363.61 93.2347 363.071 93.2272H338.351C337.811 93.2347 337.295 93.4546 336.916 93.8392C336.537 94.2238 336.324 94.7423 336.324 95.2824V154.209C336.324 179.691 350.538 185.928 370.085 185.928C386.11 185.928 399.03 177.075 399.03 177.075C399.238 178.829 399.54 180.571 399.936 182.292C400.111 182.616 400.367 182.888 400.68 183.082C400.992 183.276 401.35 183.385 401.718 183.399H417.412C417.952 183.391 418.468 183.171 418.847 182.787C419.226 182.402 419.439 181.884 419.439 181.343V95.2824C419.441 95.0132 419.389 94.7463 419.288 94.497C419.186 94.2477 419.036 94.021 418.846 93.83C418.657 93.639 418.431 93.4873 418.182 93.3839C417.934 93.2804 417.667 93.2272 417.398 93.2272Z" fill="currentColor"/>
+<path d="M483.87 90.3528C475.731 90.3037 467.727 92.4325 460.687 96.5184V53.1143C460.689 52.847 460.638 52.5819 460.537 52.3344C460.436 52.0868 460.287 51.8617 460.099 51.672C459.911 51.4823 459.687 51.3318 459.44 51.229C459.193 51.1263 458.928 51.0734 458.661 51.0734H434.099C433.831 51.0734 433.567 51.1263 433.32 51.229C433.073 51.3318 432.849 51.4823 432.661 51.672C432.472 51.8617 432.323 52.0868 432.222 52.3344C432.121 52.5819 432.07 52.847 432.072 53.1143V181.286C432.072 181.825 432.285 182.342 432.665 182.724C433.045 183.106 433.56 183.323 434.099 183.327H451.144C451.511 183.324 451.87 183.222 452.183 183.032C452.497 182.843 452.754 182.572 452.926 182.249C453.416 180.303 453.762 178.324 453.961 176.327C453.961 176.327 464.022 185.856 483.008 185.856C505.328 185.856 518.133 174.531 518.133 135.022C518.133 95.5124 497.696 90.3528 483.87 90.3528ZM474.284 162.573C469.296 162.443 464.426 161.033 460.141 158.477V117.89C464.005 115.686 468.281 114.302 472.703 113.823C481.455 113.032 489.949 115.677 489.949 136.56C489.892 158.578 486.083 162.918 474.284 162.573Z" fill="currentColor"/>
+<path d="M215.037 92.9972H196.669V68.7225C196.669 67.8027 196.195 67.2853 195.132 67.2853H170.066C169.089 67.2853 168.629 67.7164 168.629 68.7225V93.8021C168.629 93.8021 156.082 96.8346 155.234 97.0789C154.817 97.2081 154.452 97.4677 154.194 97.8195C153.935 98.1713 153.796 98.5969 153.797 99.0336V114.843C153.795 115.11 153.846 115.375 153.947 115.623C154.048 115.87 154.197 116.096 154.385 116.285C154.574 116.475 154.798 116.626 155.045 116.728C155.291 116.831 155.556 116.884 155.823 116.884H168.658V154.798C168.658 182.953 188.405 185.727 201.714 185.727C206.623 185.561 211.49 184.749 216.187 183.312C216.542 183.158 216.843 182.9 217.048 182.571C217.253 182.243 217.354 181.86 217.337 181.473V164.14C217.333 163.601 217.119 163.084 216.741 162.701C216.362 162.317 215.849 162.096 215.31 162.085C214.232 162.085 211.501 162.53 208.67 162.53C199.659 162.53 196.597 158.333 196.597 152.901V116.855H215.037C215.304 116.855 215.569 116.802 215.816 116.7C216.063 116.597 216.287 116.446 216.475 116.257C216.663 116.067 216.812 115.842 216.913 115.594C217.014 115.347 217.065 115.082 217.064 114.814V95.0668C217.067 94.7976 217.018 94.5303 216.918 94.2803C216.818 94.0303 216.669 93.8026 216.481 93.6102C216.293 93.4178 216.068 93.2646 215.82 93.1594C215.572 93.0542 215.306 92.9991 215.037 92.9972Z" fill="currentColor"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/google.svg b/smoke/astro.build-main/src/icons/logos/google.svg
new file mode 100644
index 000000000..58afaf5df
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/google.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="74" height="24" viewBox="0 0 74 24" fill="currentColor"><path d="M9.24 8.19v2.46h5.88c-.18 1.38-.64 2.39-1.34 3.1-.86.86-2.2 1.8-4.54 1.8-3.62 0-6.45-2.92-6.45-6.54s2.83-6.54 6.45-6.54c1.95 0 3.38.77 4.43 1.76L15.4 2.5C13.94 1.08 11.98 0 9.24 0 4.28 0 .11 4.04.11 9s4.17 9 9.13 9c2.68 0 4.7-.88 6.28-2.52 1.62-1.62 2.13-3.91 2.13-5.75 0-.57-.04-1.1-.13-1.54H9.24z"/><path d="M25 6.19c-3.21 0-5.83 2.44-5.83 5.81 0 3.34 2.62 5.81 5.83 5.81s5.83-2.46 5.83-5.81c0-3.37-2.62-5.81-5.83-5.81zm0 9.33c-1.76 0-3.28-1.45-3.28-3.52 0-2.09 1.52-3.52 3.28-3.52s3.28 1.43 3.28 3.52c0 2.07-1.52 3.52-3.28 3.52z"/><path d="M53.58 7.49h-.09c-.57-.68-1.67-1.3-3.06-1.3C47.53 6.19 45 8.72 45 12c0 3.26 2.53 5.81 5.43 5.81 1.39 0 2.49-.62 3.06-1.32h.09v.81c0 2.22-1.19 3.41-3.1 3.41-1.56 0-2.53-1.12-2.93-2.07l-2.22.92c.64 1.54 2.33 3.43 5.15 3.43 2.99 0 5.52-1.76 5.52-6.05V6.49h-2.42v1zm-2.93 8.03c-1.76 0-3.1-1.5-3.1-3.52 0-2.05 1.34-3.52 3.1-3.52 1.74 0 3.1 1.5 3.1 3.54.01 2.03-1.36 3.5-3.1 3.5z"/><path d="M38 6.19c-3.21 0-5.83 2.44-5.83 5.81 0 3.34 2.62 5.81 5.83 5.81s5.83-2.46 5.83-5.81c0-3.37-2.62-5.81-5.83-5.81zm0 9.33c-1.76 0-3.28-1.45-3.28-3.52 0-2.09 1.52-3.52 3.28-3.52s3.28 1.43 3.28 3.52c0 2.07-1.52 3.52-3.28 3.52z"/><path d="M58 .24h2.51v17.57H58z"/><path d="M68.26 15.52c-1.3 0-2.22-.59-2.82-1.76l7.77-3.21-.26-.66c-.48-1.3-1.96-3.7-4.97-3.7-2.99 0-5.48 2.35-5.48 5.81 0 3.26 2.46 5.81 5.76 5.81 2.66 0 4.2-1.63 4.84-2.57l-1.98-1.32c-.66.96-1.56 1.6-2.86 1.6zm-.18-7.15c1.03 0 1.91.53 2.2 1.28l-5.25 2.17c0-2.44 1.73-3.45 3.05-3.45z"/></svg>
diff --git a/smoke/astro.build-main/src/icons/logos/javascript.svg b/smoke/astro.build-main/src/icons/logos/javascript.svg
new file mode 100644
index 000000000..6cf9bdb96
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/javascript.svg
@@ -0,0 +1,3 @@
+<svg width="173" height="220" viewBox="0 0 173 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M16.8527 35H156.388C159.277 35 161.62 37.3427 161.62 40.2326V179.767C161.62 182.657 159.277 185 156.388 185H16.8527C13.9628 185 11.6201 182.657 11.6201 179.767V40.2326C11.6201 37.3427 13.9628 35 16.8527 35ZM127.159 160.748C120.207 160.748 116.276 157.121 113.254 152.188L101.8 158.843C105.938 167.019 114.395 173.257 127.485 173.257C140.873 173.257 150.842 166.305 150.842 153.614C150.842 141.843 144.08 136.607 132.104 131.471L128.58 129.962C122.533 127.343 119.914 125.631 119.914 121.402C119.914 117.981 122.53 115.362 126.659 115.362C130.707 115.362 133.314 117.069 135.73 121.402L146.707 114.355C142.064 106.188 135.621 103.069 126.659 103.069C114.071 103.069 106.016 111.117 106.016 121.688C106.016 133.164 112.773 138.593 122.945 142.926L126.469 144.438C132.897 147.25 136.73 148.962 136.73 153.795C136.73 157.829 133 160.748 127.159 160.748ZM72.5329 160.66C67.69 160.66 65.6757 157.338 63.4614 153.41L51.9876 160.356C55.3114 167.39 61.8472 173.231 73.1329 173.231C85.6233 173.231 94.1805 166.588 94.1805 151.993V103.874H80.0852V151.802C80.0852 158.848 77.1638 160.66 72.5329 160.66Z" fill="black" />
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/lit.svg b/smoke/astro.build-main/src/icons/logos/lit.svg
new file mode 100644
index 000000000..b5ea826cd
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/lit.svg
@@ -0,0 +1,12 @@
+<svg width="307" height="220" viewBox="0 0 307 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_463_513)">
+<path d="M284.508 70.3435V91.1473H306.54V102.416H284.508V128.132C284.508 130.732 284.58 133.333 284.869 135.572C285.447 139.4 287.758 143.157 290.937 144.601C295.054 146.48 297.944 146.118 306.54 145.829L304.445 158.254C303.867 158.543 301.555 158.471 299.388 158.471C294.332 158.471 275.262 160.276 271.361 140.628C270.711 137.233 270.855 133.766 270.855 128.421V102.56H261.031L261.176 91.0751H270.855V70.3435H284.508ZM247.162 91.0751V157.17H233.582V91.0751H247.162ZM247.162 70.3435V82.1179H233.437V70.3435H247.162ZM186.773 144.168H221.591L208.589 157.17H172.904V70.3435H186.773V144.168Z" fill="black"/>
+<path d="M57.3273 129.576V71.7882L86.2214 42.8941V100.682L57.3273 129.576ZM-0.460938 129.576L28.4332 158.471V129.576V100.682H13.9861" fill="black"/>
+<path d="M28.4332 100.682V42.8941L57.3273 14V71.7882L28.4332 100.682ZM86.2214 158.471V100.682L115.116 71.7882V129.576L86.2214 158.471ZM-0.460938 129.576V71.7882L28.4332 100.682" fill="black"/>
+</g>
+<defs>
+<clipPath id="clip0_463_513">
+<rect width="307" height="220" fill="white"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/markdown.svg b/smoke/astro.build-main/src/icons/logos/markdown.svg
new file mode 100644
index 000000000..e7f117eb8
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/markdown.svg
@@ -0,0 +1,4 @@
+<svg width="308" height="220" viewBox="0 0 308 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M286.062 22.4219H21.8437C13.6458 22.4219 7 29.0676 7 37.2656V182.734C7 190.932 13.6458 197.578 21.8437 197.578H286.062C294.26 197.578 300.906 190.932 300.906 182.734V37.2656C300.906 29.0676 294.26 22.4219 286.062 22.4219Z" stroke="#222222" stroke-width="13.3475"/>
+<path d="M44.1099 160.469V59.5313H73.7974L103.485 96.6407L133.172 59.5313H162.86V160.469H133.172V102.578L103.485 139.688L73.7974 102.578V160.469H44.1099ZM229.657 160.469L185.125 111.484H214.813V59.5313H244.5V111.484H274.188L229.657 160.469Z" fill="#222222"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/monogram.svg b/smoke/astro.build-main/src/icons/logos/monogram.svg
new file mode 100644
index 000000000..1bdbcb3ae
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/monogram.svg
@@ -0,0 +1,11 @@
+<svg width="240" height="40" viewBox="0 0 240 40" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M31 40L27 29.4L23 40H21L26 26.8L22 16.3L13 40H11L21 13.6L16.5 1.8L2 40H0L15.2 0H17.8L22 11L26.2 0H28.8L32.5 9.7L36.2 0H38.8L43 11L47.2 0H49.8L65 40H63L48.5 1.8L44 13.6L54 40H52L43 16.3L39 26.8L44 40H42L38 29.4L34 40H31ZM32.5 15L28 26.7L32.5 38.6L37 26.8L32.5 15ZM27.5 1.8L23 13.6L27 24.2L31.5 12.3L27.5 1.8ZM37.5 1.8L33.5 12.3L38 24.2L42 13.6L37.5 1.8Z" fill="currentColor"/>
+<path d="M97.7259 17.956V29H100.432V13.6H97.5499L92.8639 20.882L88.1779 13.6H85.2959V29H87.9579V18L92.7759 25.216H92.8639L97.7259 17.956Z" fill="currentColor"/>
+<path d="M121.687 21.278C121.687 20.1927 121.489 19.166 121.093 18.198C120.697 17.23 120.147 16.3867 119.443 15.668C118.739 14.9493 117.896 14.3847 116.913 13.974C115.931 13.5487 114.845 13.336 113.657 13.336C112.469 13.336 111.384 13.5487 110.401 13.974C109.419 14.3993 108.568 14.9787 107.849 15.712C107.131 16.4307 106.573 17.274 106.177 18.242C105.781 19.21 105.583 20.2367 105.583 21.322C105.583 22.4073 105.781 23.434 106.177 24.402C106.573 25.37 107.123 26.2133 107.827 26.932C108.531 27.6507 109.375 28.2227 110.357 28.648C111.34 29.0587 112.425 29.264 113.613 29.264C114.801 29.264 115.887 29.0513 116.869 28.626C117.852 28.2007 118.703 27.6287 119.421 26.91C120.14 26.1767 120.697 25.326 121.093 24.358C121.489 23.39 121.687 22.3633 121.687 21.278ZM118.849 21.322C118.849 22.07 118.717 22.7813 118.453 23.456C118.204 24.116 117.852 24.6953 117.397 25.194C116.943 25.678 116.393 26.0667 115.747 26.36C115.117 26.6387 114.42 26.778 113.657 26.778C112.895 26.778 112.191 26.6313 111.545 26.338C110.9 26.0447 110.343 25.6487 109.873 25.15C109.419 24.6513 109.059 24.072 108.795 23.412C108.546 22.7373 108.421 22.026 108.421 21.278C108.421 20.53 108.546 19.826 108.795 19.166C109.059 18.4913 109.419 17.912 109.873 17.428C110.328 16.9293 110.871 16.5407 111.501 16.262C112.147 15.9687 112.851 15.822 113.613 15.822C114.376 15.822 115.08 15.9687 115.725 16.262C116.371 16.5553 116.921 16.9513 117.375 17.45C117.845 17.9487 118.204 18.5353 118.453 19.21C118.717 19.87 118.849 20.574 118.849 21.322Z" fill="currentColor"/>
+<path d="M137.585 24.248L129.335 13.6H126.827V29H129.489V18.044L137.981 29H140.247V13.6H137.585V24.248Z" fill="currentColor"/>
+<path d="M161.5 21.278C161.5 20.1927 161.302 19.166 160.906 18.198C160.51 17.23 159.96 16.3867 159.256 15.668C158.552 14.9493 157.708 14.3847 156.726 13.974C155.743 13.5487 154.658 13.336 153.47 13.336C152.282 13.336 151.196 13.5487 150.214 13.974C149.231 14.3993 148.38 14.9787 147.662 15.712C146.943 16.4307 146.386 17.274 145.99 18.242C145.594 19.21 145.396 20.2367 145.396 21.322C145.396 22.4073 145.594 23.434 145.99 24.402C146.386 25.37 146.936 26.2133 147.64 26.932C148.344 27.6507 149.187 28.2227 150.17 28.648C151.152 29.0587 152.238 29.264 153.426 29.264C154.614 29.264 155.699 29.0513 156.682 28.626C157.664 28.2007 158.515 27.6287 159.234 26.91C159.952 26.1767 160.51 25.326 160.906 24.358C161.302 23.39 161.5 22.3633 161.5 21.278ZM158.662 21.322C158.662 22.07 158.53 22.7813 158.266 23.456C158.016 24.116 157.664 24.6953 157.21 25.194C156.755 25.678 156.205 26.0667 155.56 26.36C154.929 26.6387 154.232 26.778 153.47 26.778C152.707 26.778 152.003 26.6313 151.358 26.338C150.712 26.0447 150.155 25.6487 149.686 25.15C149.231 24.6513 148.872 24.072 148.608 23.412C148.358 22.7373 148.234 22.026 148.234 21.278C148.234 20.53 148.358 19.826 148.608 19.166C148.872 18.4913 149.231 17.912 149.686 17.428C150.14 16.9293 150.683 16.5407 151.314 16.262C151.959 15.9687 152.663 15.822 153.426 15.822C154.188 15.822 154.892 15.9687 155.538 16.262C156.183 16.5553 156.733 16.9513 157.188 17.45C157.657 17.9487 158.016 18.5353 158.266 19.21C158.53 19.87 158.662 20.574 158.662 21.322Z" fill="currentColor"/>
+<path d="M180.367 26.866V20.398H173.811V22.752H177.749V25.634C177.28 25.986 176.722 26.272 176.077 26.492C175.446 26.6973 174.764 26.8 174.031 26.8C173.239 26.8 172.52 26.6607 171.875 26.382C171.244 26.1033 170.694 25.722 170.225 25.238C169.77 24.7393 169.418 24.1527 169.169 23.478C168.92 22.8033 168.795 22.07 168.795 21.278C168.795 20.53 168.92 19.826 169.169 19.166C169.433 18.506 169.785 17.9267 170.225 17.428C170.68 16.9293 171.208 16.5407 171.809 16.262C172.425 15.9687 173.085 15.822 173.789 15.822C174.273 15.822 174.713 15.866 175.109 15.954C175.52 16.0273 175.894 16.1373 176.231 16.284C176.568 16.416 176.891 16.5847 177.199 16.79C177.507 16.9953 177.808 17.2227 178.101 17.472L179.817 15.426C179.421 15.0887 179.01 14.7953 178.585 14.546C178.174 14.282 177.734 14.062 177.265 13.886C176.796 13.71 176.282 13.578 175.725 13.49C175.182 13.3873 174.574 13.336 173.899 13.336C172.74 13.336 171.67 13.5487 170.687 13.974C169.719 14.3993 168.883 14.9787 168.179 15.712C167.475 16.4307 166.925 17.274 166.529 18.242C166.148 19.21 165.957 20.2367 165.957 21.322C165.957 22.4513 166.148 23.5 166.529 24.468C166.91 25.436 167.446 26.2793 168.135 26.998C168.839 27.702 169.682 28.2593 170.665 28.67C171.648 29.066 172.74 29.264 173.943 29.264C174.618 29.264 175.263 29.198 175.879 29.066C176.495 28.9487 177.067 28.78 177.595 28.56C178.138 28.34 178.636 28.0833 179.091 27.79C179.56 27.4967 179.986 27.1887 180.367 26.866Z" fill="currentColor"/>
+<path d="M198.829 29L194.671 23.17C195.214 23.0233 195.705 22.818 196.145 22.554C196.6 22.2753 196.988 21.9453 197.311 21.564C197.634 21.168 197.883 20.7207 198.059 20.222C198.25 19.7087 198.345 19.1293 198.345 18.484C198.345 17.736 198.213 17.0613 197.949 16.46C197.685 15.844 197.304 15.3307 196.805 14.92C196.321 14.4947 195.72 14.172 195.001 13.952C194.297 13.7173 193.505 13.6 192.625 13.6H185.761V29H188.467V23.632H191.855L195.639 29H198.829ZM195.595 18.638C195.595 19.43 195.309 20.0607 194.737 20.53C194.165 20.9993 193.395 21.234 192.427 21.234H188.467V16.064H192.405C193.417 16.064 194.202 16.284 194.759 16.724C195.316 17.1493 195.595 17.7873 195.595 18.638Z" fill="currentColor"/>
+<path d="M211.934 13.49H209.426L202.65 29H205.422L207.006 25.282H214.288L215.85 29H218.71L211.934 13.49ZM213.298 22.884H207.996L210.636 16.724L213.298 22.884Z" fill="currentColor"/>
+<path d="M236.31 17.956V29H239.016V13.6H236.134L231.448 20.882L226.762 13.6H223.88V29H226.542V18L231.36 25.216H231.448L236.31 17.956Z" fill="currentColor"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/navillus.svg b/smoke/astro.build-main/src/icons/logos/navillus.svg
new file mode 100644
index 000000000..f1038797d
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/navillus.svg
@@ -0,0 +1,4 @@
+<svg width="512" height="128" viewBox="0 0 512 128" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M128 64C128 99.3462 99.3462 128 64 128C28.6538 128 0 99.3462 0 64C0 28.6538 28.6538 0 64 0C99.3462 0 128 28.6538 128 64ZM74.8254 25.25L64.0001 6.5L53.1748 25.25H58V52.3438L44.1562 38.5L38.4994 44.1569L52.3425 58H25.25V53.1748L6.5 64.0001L25.25 74.8254V70H52.2549L38.5 83.7549L44.1569 89.4117L58 75.5686V102.75H53.1748L64.0001 121.5L74.8254 102.75H70V75.6575L83.7542 89.4117L89.4111 83.7548L75.6562 70H102.75V74.8254L121.5 64.0001L102.75 53.1748V58H75.5686L89.4117 44.1569L83.7548 38.5L70 52.2549V25.25H74.8254Z" fill="currentColor"/>
+<path d="M222.457 96H214.267L181.327 46.05V96H173.137V33.18H181.327L214.267 83.04V33.18H222.457V96ZM233.358 71.16C233.358 66.12 234.378 61.71 236.418 57.93C238.458 54.09 241.248 51.12 244.788 49.02C248.388 46.92 252.378 45.87 256.758 45.87C261.078 45.87 264.828 46.8 268.008 48.66C271.188 50.52 273.558 52.86 275.118 55.68V46.68H283.398V96H275.118V86.82C273.498 89.7 271.068 92.1 267.828 94.02C264.648 95.88 260.928 96.81 256.668 96.81C252.288 96.81 248.328 95.73 244.788 93.57C241.248 91.41 238.458 88.38 236.418 84.48C234.378 80.58 233.358 76.14 233.358 71.16ZM275.118 71.25C275.118 67.53 274.368 64.29 272.868 61.53C271.368 58.77 269.328 56.67 266.748 55.23C264.228 53.73 261.438 52.98 258.378 52.98C255.318 52.98 252.528 53.7 250.008 55.14C247.488 56.58 245.478 58.68 243.978 61.44C242.478 64.2 241.728 67.44 241.728 71.16C241.728 74.94 242.478 78.24 243.978 81.06C245.478 83.82 247.488 85.95 250.008 87.45C252.528 88.89 255.318 89.61 258.378 89.61C261.438 89.61 264.228 88.89 266.748 87.45C269.328 85.95 271.368 83.82 272.868 81.06C274.368 78.24 275.118 74.97 275.118 71.25ZM315.599 88.44L330.899 46.68H339.629L320.279 96H310.739L291.389 46.68H300.209L315.599 88.44ZM351.918 38.67C350.358 38.67 349.038 38.13 347.958 37.05C346.878 35.97 346.338 34.65 346.338 33.09C346.338 31.53 346.878 30.21 347.958 29.13C349.038 28.05 350.358 27.51 351.918 27.51C353.418 27.51 354.678 28.05 355.698 29.13C356.778 30.21 357.318 31.53 357.318 33.09C357.318 34.65 356.778 35.97 355.698 37.05C354.678 38.13 353.418 38.67 351.918 38.67ZM355.878 46.68V96H347.688V46.68H355.878ZM378.026 29.4V96H369.836V29.4H378.026ZM400.175 29.4V96H391.985V29.4H400.175ZM457.873 46.68V96H449.683V88.71C448.123 91.23 445.933 93.21 443.113 94.65C440.353 96.03 437.293 96.72 433.933 96.72C430.093 96.72 426.643 95.94 423.583 94.38C420.523 92.76 418.093 90.36 416.293 87.18C414.553 84 413.683 80.13 413.683 75.57V46.68H421.783V74.49C421.783 79.35 423.013 83.1 425.473 85.74C427.933 88.32 431.293 89.61 435.553 89.61C439.933 89.61 443.383 88.26 445.903 85.56C448.423 82.86 449.683 78.93 449.683 73.77V46.68H457.873ZM489.161 96.81C485.381 96.81 481.991 96.18 478.991 94.92C475.991 93.6 473.621 91.8 471.881 89.52C470.141 87.18 469.181 84.51 469.001 81.51H477.461C477.701 83.97 478.841 85.98 480.881 87.54C482.981 89.1 485.711 89.88 489.071 89.88C492.191 89.88 494.651 89.19 496.451 87.81C498.251 86.43 499.151 84.69 499.151 82.59C499.151 80.43 498.191 78.84 496.271 77.82C494.351 76.74 491.381 75.69 487.361 74.67C483.701 73.71 480.701 72.75 478.361 71.79C476.081 70.77 474.101 69.3 472.421 67.38C470.801 65.4 469.991 62.82 469.991 59.64C469.991 57.12 470.741 54.81 472.241 52.71C473.741 50.61 475.871 48.96 478.631 47.76C481.391 46.5 484.541 45.87 488.081 45.87C493.541 45.87 497.951 47.25 501.311 50.01C504.671 52.77 506.471 56.55 506.711 61.35H498.521C498.341 58.77 497.291 56.7 495.371 55.14C493.511 53.58 490.991 52.8 487.811 52.8C484.871 52.8 482.531 53.43 480.791 54.69C479.051 55.95 478.181 57.6 478.181 59.64C478.181 61.26 478.691 62.61 479.711 63.69C480.791 64.71 482.111 65.55 483.671 66.21C485.291 66.81 487.511 67.5 490.331 68.28C493.871 69.24 496.751 70.2 498.971 71.16C501.191 72.06 503.081 73.44 504.641 75.3C506.261 77.16 507.101 79.59 507.161 82.59C507.161 85.29 506.411 87.72 504.911 89.88C503.411 92.04 501.281 93.75 498.521 95.01C495.821 96.21 492.701 96.81 489.161 96.81Z" fill="currentColor"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/netlify-grid.svg b/smoke/astro.build-main/src/icons/logos/netlify-grid.svg
new file mode 100644
index 000000000..d58e4b8d2
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/netlify-grid.svg
@@ -0,0 +1,4 @@
+<svg width="650" height="220" viewBox="0 0 650 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M236.162 85.4277L236.706 95.1538C242.914 87.6313 251.065 83.8701 261.154 83.8701C278.637 83.8701 287.536 93.906 287.846 113.978V169.591H268.995V115.066C268.995 109.725 267.845 105.774 265.544 103.203C263.243 100.636 259.477 99.3531 254.251 99.3531C246.645 99.3531 240.976 102.805 237.259 109.699V169.591H218.4V85.4277H236.171H236.162ZM344.035 171.149C332.087 171.149 322.396 167.379 314.976 159.834C307.55 152.289 303.838 142.24 303.838 129.691V127.359C303.838 118.96 305.453 111.451 308.688 104.84C311.918 98.2292 316.462 93.0829 322.308 89.3969C328.153 85.7197 334.671 83.8789 341.866 83.8789C353.296 83.8789 362.133 87.534 368.363 94.8441C374.602 102.159 377.718 112.5 377.718 125.881V133.505H322.848C323.423 140.453 325.733 145.948 329.795 149.993C333.857 154.037 338.968 156.06 345.123 156.06C353.761 156.06 360.796 152.564 366.23 145.559L376.395 155.285C373.032 160.312 368.545 164.215 362.934 166.989C357.318 169.764 351.022 171.149 344.039 171.149H344.035ZM341.787 99.0478C336.609 99.0478 332.437 100.862 329.255 104.491C326.069 108.119 324.042 113.177 323.162 119.659H359.093V118.257C358.677 111.929 356.995 107.15 354.048 103.906C351.097 100.667 347.013 99.0478 341.787 99.0478ZM415.972 64.9753V85.4321H430.796V99.4328H415.972V146.413C415.972 149.626 416.609 151.944 417.874 153.374C419.14 154.798 421.406 155.511 424.667 155.511C426.887 155.505 429.099 155.243 431.26 154.732V169.357C426.968 170.551 422.83 171.144 418.844 171.144C404.361 171.144 397.117 163.135 397.117 147.112V99.4284H383.293V85.4277H397.108V64.9709H415.963L415.972 64.9753ZM465.253 169.596H446.394V50.1206H465.253V169.596ZM505.839 169.596H486.98V85.4321H505.839V169.596ZM485.816 63.5726C485.816 60.6742 486.732 58.2626 488.568 56.3421C490.409 54.4261 493.033 53.4659 496.445 53.4659C499.861 53.4659 502.498 54.4261 504.366 56.3421C506.224 58.2626 507.153 60.6742 507.153 63.577C507.153 66.4267 506.224 68.7985 504.366 70.6924C502.498 72.5863 499.861 73.5333 496.445 73.5333C493.033 73.5333 490.409 72.5863 488.568 70.6924C486.732 68.8029 485.816 66.4267 485.816 63.577V63.5726ZM533 169.596V99.4284H520.194V85.4277H533V77.7282C533 68.3914 535.584 61.1875 540.757 56.1032C545.934 51.0233 553.173 48.4833 562.483 48.4833C565.798 48.4833 569.316 48.948 573.042 49.8816L572.577 64.6611C570.197 64.2195 567.78 64.012 565.36 64.0416C556.355 64.0416 551.855 68.679 551.855 77.9627V85.4277H568.926V99.4284H551.855V169.591H533V169.596ZM612.074 142.528L629.146 85.4321H649.244L615.88 182.353C610.756 196.508 602.065 203.588 589.803 203.588C587.06 203.588 584.033 203.119 580.723 202.186V187.561L584.294 187.796C589.051 187.796 592.635 186.928 595.043 185.189C597.445 183.455 599.348 180.539 600.746 176.441L603.459 169.206L573.971 85.4321H594.304L612.074 142.528Z" fill="currentColor"/>
+ <path d="M123.399 90.5473L123.338 90.5208C123.302 90.5075 123.267 90.4942 123.236 90.4632C123.185 90.4087 123.147 90.3432 123.126 90.2719C123.104 90.2006 123.1 90.1252 123.112 90.0517L126.532 69.1392L142.573 85.1842L125.891 92.2819C125.844 92.3006 125.795 92.3097 125.745 92.3085H125.678C125.656 92.2952 125.634 92.2775 125.59 92.2332C124.969 91.542 124.227 90.9706 123.399 90.5473ZM146.666 89.2729L163.817 106.424C167.38 109.991 169.163 111.77 169.813 113.832C169.911 114.137 169.99 114.442 170.052 114.757L129.063 97.3972C129.041 97.3881 129.019 97.3793 128.997 97.3707C128.833 97.3043 128.643 97.2291 128.643 97.0609C128.643 96.8928 128.838 96.8131 129.002 96.7467L129.055 96.7246L146.666 89.2729ZM169.353 120.261C168.468 121.925 166.742 123.651 163.822 126.576L144.485 145.909L119.474 140.7L119.342 140.674C119.12 140.638 118.886 140.598 118.886 140.399C118.791 139.368 118.485 138.367 117.986 137.458C117.487 136.55 116.807 135.754 115.988 135.12C115.886 135.019 115.912 134.859 115.943 134.713C115.943 134.691 115.943 134.669 115.952 134.651L120.656 105.774L120.674 105.676C120.7 105.455 120.74 105.198 120.939 105.198C121.947 105.073 122.92 104.748 123.801 104.243C124.683 103.738 125.455 103.062 126.072 102.256C126.112 102.212 126.139 102.163 126.192 102.136C126.333 102.07 126.501 102.136 126.647 102.198L169.349 120.261H169.353ZM140.037 150.356L108.239 182.154L113.682 148.701L113.691 148.656C113.695 148.612 113.704 148.568 113.718 148.528C113.762 148.422 113.877 148.378 113.987 148.333L114.041 148.311C115.232 147.803 116.286 147.019 117.116 146.024C117.222 145.9 117.35 145.78 117.514 145.758C117.557 145.751 117.6 145.751 117.643 145.758L140.033 150.36L140.037 150.356ZM101.509 188.884L97.9247 192.468L58.2989 135.2C58.2845 135.179 58.2698 135.158 58.2546 135.138C58.1927 135.054 58.1263 134.97 58.1396 134.873C58.1396 134.802 58.1882 134.74 58.2369 134.687L58.2812 134.629C58.4006 134.452 58.5024 134.275 58.613 134.085L58.7015 133.93L58.7148 133.917C58.7768 133.811 58.8343 133.709 58.9405 133.651C59.0334 133.607 59.1617 133.625 59.2635 133.647L103.164 142.7C103.287 142.719 103.402 142.77 103.5 142.846C103.558 142.904 103.571 142.966 103.584 143.037C103.891 144.195 104.46 145.267 105.25 146.169C106.039 147.071 107.026 147.779 108.133 148.236C108.257 148.298 108.204 148.435 108.146 148.581C108.118 148.645 108.096 148.712 108.08 148.78C107.527 152.143 102.783 181.074 101.509 188.884ZM94.0219 196.367C91.3802 198.982 89.8226 200.367 88.0614 200.925C86.3249 201.474 84.4613 201.474 82.7249 200.925C80.6628 200.27 78.8795 198.491 75.3174 194.924L35.5234 155.13L45.9177 139.01C45.9664 138.93 46.0151 138.859 46.0947 138.802C46.2053 138.722 46.3646 138.758 46.4974 138.802C48.8832 139.522 51.4447 139.392 53.7455 138.435C53.865 138.39 53.9845 138.359 54.0774 138.444C54.1239 138.486 54.1654 138.533 54.2013 138.585L94.0219 196.367ZM31.6825 151.294L22.5581 142.165L40.5856 134.474C40.6317 134.454 40.6813 134.444 40.7316 134.443C40.8821 134.443 40.9706 134.594 41.0502 134.731C41.2314 135.01 41.4233 135.281 41.6255 135.545L41.683 135.616C41.7361 135.691 41.7007 135.766 41.6476 135.837L31.6913 151.294H31.6825ZM18.5137 138.125L6.96444 126.576C4.99974 124.611 3.57489 123.186 2.58369 121.96L37.7005 129.244C37.7446 129.252 37.7889 129.26 37.8332 129.266C38.0501 129.301 38.289 129.341 38.289 129.545C38.289 129.766 38.0279 129.868 37.8067 129.952L37.7049 129.996L18.5137 138.125ZM0.574738 116.022C0.614758 115.278 0.748566 114.542 0.972988 113.832C1.62789 111.77 3.40674 109.991 6.97329 106.424L21.7528 91.6447C28.5577 101.521 35.3811 111.384 42.2228 121.235C42.3423 121.394 42.4751 121.571 42.3379 121.704C41.6918 122.416 41.0458 123.195 40.59 124.04C40.5406 124.149 40.4645 124.243 40.3688 124.315C40.3112 124.35 40.2493 124.337 40.1829 124.323H40.1741L0.570312 116.018L0.574738 116.022ZM25.7087 87.6888L45.577 67.8161C47.4488 68.6347 54.25 71.5065 60.3255 74.073C64.9275 76.02 69.1224 77.79 70.4411 78.3653C70.5738 78.4184 70.6933 78.4715 70.7508 78.6042C70.7862 78.6839 70.7685 78.7857 70.7508 78.8697C70.4362 80.3042 70.483 81.7944 70.887 83.2063C71.291 84.6182 72.0394 85.9076 73.0651 86.9586C73.1978 87.0914 73.0651 87.2817 72.95 87.4454L72.8881 87.5383L52.7101 118.792C52.657 118.881 52.6083 118.956 52.5198 119.013C52.4136 119.08 52.2632 119.049 52.1393 119.018C51.3545 118.812 50.5477 118.702 49.7365 118.69C49.0108 118.69 48.2231 118.823 47.4266 118.969H47.4222C47.3337 118.982 47.2541 119 47.1833 118.947C47.1051 118.883 47.0378 118.807 46.9841 118.721L25.7087 87.6888ZM49.5949 63.8026L75.3218 38.0757C78.884 34.5135 80.6672 32.7303 82.7293 32.0798C84.4658 31.5307 86.3294 31.5307 88.0658 32.0798C90.1279 32.7303 91.9112 34.5135 95.4733 38.0757L101.049 43.6512L82.747 71.9844C82.7017 72.0669 82.64 72.1392 82.5656 72.1968C82.4549 72.2721 82.3001 72.2411 82.1673 72.1968C80.7247 71.7591 79.1972 71.6793 77.7168 71.9646C76.2365 72.2499 74.8479 72.8916 73.6713 73.8341C73.5518 73.958 73.3748 73.8872 73.2244 73.8208C70.8349 72.7809 52.2499 64.9266 49.5905 63.7982L49.5949 63.8026ZM104.934 47.5363L121.829 64.431L117.758 89.6446V89.711C117.754 89.7685 117.742 89.8251 117.722 89.8791C117.678 89.9676 117.589 89.9853 117.501 90.0119C116.631 90.2755 115.811 90.6839 115.076 91.2199C115.044 91.2424 115.015 91.2676 114.988 91.2951C114.939 91.3482 114.89 91.3969 114.811 91.4058C114.746 91.4078 114.681 91.3973 114.62 91.3748L88.8756 80.4362L88.8269 80.4141C88.6632 80.3477 88.4685 80.268 88.4685 80.0999C88.3172 78.6652 87.8486 77.2822 87.0968 76.051C86.9729 75.8475 86.8357 75.6351 86.9419 75.4271L104.934 47.5363ZM87.526 85.6134L111.66 95.8352C111.793 95.8971 111.939 95.9547 111.996 96.0918C112.019 96.1743 112.019 96.2616 111.996 96.3441C111.925 96.6981 111.863 97.1007 111.863 97.5078V98.1849C111.863 98.353 111.691 98.4238 111.532 98.4902L111.483 98.5079C107.66 100.141 57.8077 121.398 57.7325 121.398C57.6572 121.398 57.5776 121.398 57.5024 121.323C57.3696 121.19 57.5024 121.005 57.6218 120.836C57.643 120.807 57.6636 120.778 57.6838 120.748L77.5166 90.0384L77.552 89.9853C77.6671 89.7995 77.7998 89.5915 78.0122 89.5915L78.2114 89.6225C78.6627 89.6844 79.061 89.742 79.4636 89.742C82.4726 89.742 85.2604 88.2773 86.9419 85.7727C86.982 85.7059 87.0328 85.6461 87.0923 85.5957C87.2118 85.5072 87.3888 85.5515 87.526 85.6134ZM59.8874 126.257L114.226 103.083C114.226 103.083 114.306 103.083 114.381 103.159C114.678 103.455 114.93 103.654 115.173 103.84L115.293 103.915C115.403 103.977 115.514 104.048 115.523 104.163C115.523 104.207 115.523 104.234 115.514 104.274L110.863 132.872L110.846 132.987C110.815 133.209 110.784 133.461 110.576 133.461C109.335 133.545 108.133 133.93 107.074 134.583C106.015 135.236 105.132 136.137 104.5 137.209L104.478 137.244C104.416 137.346 104.359 137.443 104.257 137.497C104.164 137.541 104.045 137.523 103.947 137.501L60.6131 128.562C60.5689 128.554 59.9405 126.266 59.8919 126.261L59.8874 126.257Z" fill="currentColor"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/netlify.svg b/smoke/astro.build-main/src/icons/logos/netlify.svg
new file mode 100644
index 000000000..55d4cb0e3
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/netlify.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="147" height="40">
+ <g fill="currentColor" fill-rule="evenodd">
+ <path d="m53.37 12.978.123 2.198c1.403-1.7 3.245-2.55 5.525-2.55 3.951 0 5.962 2.268 6.032 6.804v12.568h-4.26v-12.322c0-1.207-.26-2.1-.78-2.681-.52-.58-1.371-.87-2.552-.87-1.719 0-3 .78-3.84 2.338v13.535h-4.262v-19.02h4.016zm24.378 19.372c-2.7 0-4.89-.852-6.567-2.557-1.678-1.705-2.517-3.976-2.517-6.812v-.527c0-1.898.365-3.595 1.096-5.089.73-1.494 1.757-2.657 3.078-3.49 1.321-.831 2.794-1.247 4.42-1.247 2.583 0 4.58.826 5.988 2.478 1.41 1.653 2.114 3.99 2.114 7.014v1.723h-12.4c.13 1.57.652 2.812 1.57 3.726s2.073 1.371 3.464 1.371c1.952 0 3.542-.79 4.77-2.373l2.297 2.198c-.76 1.136-1.774 2.018-3.042 2.645-1.269.627-2.692.94-4.27.94zm-.508-16.294c-1.17 0-2.113.41-2.832 1.23-.72.82-1.178 1.963-1.377 3.428h8.12v-.317c-.094-1.43-.474-2.51-1.14-3.243-.667-.732-1.59-1.098-2.771-1.098zm16.765-7.7v4.623h3.35v3.164h-3.35v10.617c0 .726.144 1.25.43 1.573.286.322.798.483 1.535.483a6.55 6.55 0 0 0 1.49-.176v3.305c-.97.27-1.905.404-2.806.404-3.273 0-4.91-1.81-4.91-5.431v-10.776h-3.124v-3.164h3.122v-4.623h4.261zm11.137 23.643h-4.262v-27h4.262zm9.172 0h-4.262v-19.02h4.262zm-4.525-23.96c0-.655.207-1.2.622-1.634.416-.433 1.009-.65 1.78-.65.772 0 1.368.217 1.79.65.42.434.63.979.63 1.635 0 .644-.21 1.18-.63 1.608-.422.428-1.018.642-1.79.642-.771 0-1.364-.214-1.78-.642-.415-.427-.622-.964-.622-1.608zm10.663 23.96v-15.857h-2.894v-3.164h2.894v-1.74c0-2.11.584-3.738 1.753-4.887 1.17-1.148 2.806-1.722 4.91-1.722.749 0 1.544.105 2.386.316l-.105 3.34a8.375 8.375 0 0 0 -1.631-.14c-2.035 0-3.052 1.048-3.052 3.146v1.687h3.858v3.164h-3.858v15.856h-4.261zm17.87-6.117 3.858-12.903h4.542l-7.54 21.903c-1.158 3.199-3.122 4.799-5.893 4.799-.62 0-1.304-.106-2.052-.317v-3.305l.807.053c1.075 0 1.885-.196 2.429-.589.543-.392.973-1.051 1.289-1.977l.613-1.635-6.664-18.932h4.595z"/>
+ <path fill-rule="nonzero" d="m27.887 14.135-.014-.006c-.008-.003-.016-.006-.023-.013a.11.11 0 0 1 -.028-.093l.773-4.726 3.625 3.626-3.77 1.604a.083.083 0 0 1 -.033.006h-.015c-.005-.003-.01-.007-.02-.017a1.716 1.716 0 0 0 -.495-.381zm5.258-.288 3.876 3.876c.805.806 1.208 1.208 1.355 1.674.022.069.04.138.054.209l-9.263-3.923a.728.728 0 0 0 -.015-.006c-.037-.015-.08-.032-.08-.07s.044-.056.081-.071l.012-.005zm5.127 7.003c-.2.376-.59.766-1.25 1.427l-4.37 4.369-5.652-1.177-.03-.006c-.05-.008-.103-.017-.103-.062a1.706 1.706 0 0 0 -.655-1.193c-.023-.023-.017-.059-.01-.092 0-.005 0-.01.002-.014l1.063-6.526.004-.022c.006-.05.015-.108.06-.108a1.73 1.73 0 0 0 1.16-.665c.009-.01.015-.021.027-.027.032-.015.07 0 .103.014l9.65 4.082zm-6.625 6.801-7.186 7.186 1.23-7.56.002-.01c.001-.01.003-.02.006-.029.01-.024.036-.034.061-.044l.012-.005a1.85 1.85 0 0 0 .695-.517c.024-.028.053-.055.09-.06a.09.09 0 0 1 .029 0l5.06 1.04zm-8.707 8.707-.81.81-8.955-12.942a.424.424 0 0 0 -.01-.014c-.014-.019-.029-.038-.026-.06 0-.016.011-.03.022-.042l.01-.013c.027-.04.05-.08.075-.123l.02-.035.003-.003c.014-.024.027-.047.051-.06.021-.01.05-.006.073-.001l9.921 2.046a.164.164 0 0 1 .076.033c.013.013.016.027.019.043a1.757 1.757 0 0 0 1.028 1.175c.028.014.016.045.003.078a.238.238 0 0 0 -.015.045c-.125.76-1.197 7.298-1.485 9.063zm-1.692 1.691c-.597.591-.949.904-1.347 1.03a2 2 0 0 1 -1.206 0c-.466-.148-.869-.55-1.674-1.356l-8.993-8.993 2.349-3.643c.011-.018.022-.034.04-.047.025-.018.061-.01.091 0a2.434 2.434 0 0 0 1.638-.083c.027-.01.054-.017.075.002a.19.19 0 0 1 .028.032zm-14.088-10.186-2.062-2.063 4.074-1.738a.084.084 0 0 1 .033-.007c.034 0 .054.034.072.065a2.91 2.91 0 0 0 .13.184l.013.016c.012.017.004.034-.008.05l-2.25 3.493zm-2.976-2.976-2.61-2.61c-.444-.444-.766-.766-.99-1.043l7.936 1.646a.84.84 0 0 0 .03.005c.049.008.103.017.103.063 0 .05-.059.073-.109.092l-.023.01zm-4.054-4.995a2 2 0 0 1 .09-.495c.148-.466.55-.868 1.356-1.674l3.34-3.34a2175.525 2175.525 0 0 0 4.626 6.687c.027.036.057.076.026.106-.146.161-.292.337-.395.528a.16.16 0 0 1 -.05.062c-.013.008-.027.005-.042.002h-.002l-8.95-1.877zm5.68-6.403 4.49-4.491c.423.185 1.96.834 3.333 1.414 1.04.44 1.988.84 2.286.97.03.012.057.024.07.054.008.018.004.041 0 .06a2.003 2.003 0 0 0 .523 1.828c.03.03 0 .073-.026.11l-.014.021-4.56 7.063c-.012.02-.023.037-.043.05-.024.015-.058.008-.086.001a2.274 2.274 0 0 0 -.543-.074c-.164 0-.342.03-.522.063h-.001c-.02.003-.038.007-.054-.005a.21.21 0 0 1 -.045-.051l-4.808-7.013zm5.398-5.398 5.814-5.814c.805-.805 1.208-1.208 1.674-1.355a2 2 0 0 1 1.206 0c.466.147.869.55 1.674 1.355l1.26 1.26-4.136 6.403a.155.155 0 0 1 -.041.048c-.025.017-.06.01-.09 0a2.097 2.097 0 0 0 -1.92.37c-.027.028-.067.012-.101-.003-.54-.235-4.74-2.01-5.341-2.265zm12.506-3.676 3.818 3.818-.92 5.698v.015a.135.135 0 0 1 -.008.038c-.01.02-.03.024-.05.03a1.83 1.83 0 0 0 -.548.273.154.154 0 0 0 -.02.017c-.011.012-.022.023-.04.025a.114.114 0 0 1 -.043-.007l-5.818-2.472-.011-.005c-.037-.015-.081-.033-.081-.071a2.198 2.198 0 0 0 -.31-.915c-.028-.046-.059-.094-.035-.141zm-3.934 8.605 5.454 2.31c.03.014.063.027.076.058a.106.106 0 0 1 0 .057c-.016.08-.03.171-.03.263v.153c0 .038-.039.054-.075.069l-.011.004c-.864.369-12.13 5.173-12.147 5.173s-.035 0-.052-.017c-.03-.03 0-.072.027-.11a.76.76 0 0 0 .014-.02l4.482-6.94.008-.012c.026-.042.056-.089.104-.089l.045.007c.102.014.192.027.283.027.68 0 1.31-.331 1.69-.897a.16.16 0 0 1 .034-.04c.027-.02.067-.01.098.004zm-6.246 9.185 12.28-5.237s.018 0 .035.017c.067.067.124.112.179.154l.027.017c.025.014.05.03.052.056 0 .01 0 .016-.002.025l-1.051 6.463-.004.026c-.007.05-.014.107-.061.107a1.729 1.729 0 0 0 -1.373.847l-.005.008c-.014.023-.027.045-.05.057-.021.01-.048.006-.07.001l-9.793-2.02c-.01-.002-.152-.519-.163-.52z"/>
+ </g>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/postcss.svg b/smoke/astro.build-main/src/icons/logos/postcss.svg
new file mode 100644
index 000000000..c5e0809d3
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/postcss.svg
@@ -0,0 +1,4 @@
+<svg width="253" height="96" viewBox="0 0 253 96" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M25.496 25.648C31.3413 25.648 35.8853 26.864 39.128 29.296C42.3707 31.728 43.992 35.3333 43.992 40.112C43.992 45.104 42.392 48.88 39.192 51.44C36.0347 53.9573 31.7893 55.216 26.456 55.216H21.656V70H11.16V25.648H25.496ZM25.56 47.664C28.0347 47.664 29.912 47.088 31.192 45.936C32.5147 44.7413 33.176 42.8 33.176 40.112C33.176 35.4613 30.5733 33.136 25.368 33.136H21.656V47.664H25.56ZM62.1255 34.928C67.3308 34.928 71.4055 36.528 74.3495 39.728C77.2935 42.8853 78.7655 47.3227 78.7655 53.04C78.7655 56.6667 78.0828 59.8453 76.7175 62.576C75.3948 65.264 73.4748 67.3547 70.9575 68.848C68.4828 70.3413 65.5388 71.088 62.1255 71.088C56.9628 71.088 52.8882 69.5093 49.9015 66.352C46.9575 63.152 45.4855 58.6933 45.4855 52.976C45.4855 49.3493 46.1468 46.192 47.4695 43.504C48.8348 40.7733 50.7548 38.6613 53.2295 37.168C55.7468 35.6747 58.7122 34.928 62.1255 34.928ZM62.1255 42.352C60.0775 42.352 58.5415 43.2267 57.5175 44.976C56.4935 46.6827 55.9815 49.3493 55.9815 52.976C55.9815 56.688 56.4722 59.3973 57.4535 61.104C58.4775 62.8107 60.0348 63.664 62.1255 63.664C64.1735 63.664 65.7095 62.8107 66.7335 61.104C67.7575 59.3547 68.2695 56.6667 68.2695 53.04C68.2695 49.328 67.7575 46.6187 66.7335 44.912C65.7522 43.2053 64.2162 42.352 62.1255 42.352ZM96.7485 34.928C99.1805 34.928 101.463 35.2907 103.597 36.016C105.73 36.7413 107.607 37.7653 109.229 39.088L105.517 44.784C102.743 43.0347 99.9485 42.16 97.1325 42.16C95.8098 42.16 94.7858 42.3947 94.0605 42.864C93.3778 43.2907 93.0365 43.9093 93.0365 44.72C93.0365 45.36 93.1858 45.8933 93.4845 46.32C93.8258 46.704 94.4872 47.1093 95.4685 47.536C96.4498 47.9627 97.9645 48.4747 100.013 49.072C103.554 50.096 106.178 51.44 107.885 53.104C109.634 54.7253 110.509 56.9867 110.509 59.888C110.509 62.192 109.847 64.1973 108.525 65.904C107.202 67.568 105.389 68.848 103.085 69.744C100.781 70.64 98.2205 71.088 95.4045 71.088C92.5458 71.088 89.8792 70.64 87.4045 69.744C84.9725 68.848 82.9032 67.6107 81.1965 66.032L86.1245 60.528C88.9832 62.7467 91.9912 63.856 95.1485 63.856C96.6845 63.856 97.8792 63.5787 98.7325 63.024C99.6285 62.4693 100.077 61.68 100.077 60.656C100.077 59.8453 99.9058 59.2053 99.5645 58.736C99.2232 58.2667 98.5618 57.84 97.5805 57.456C96.5992 57.0293 95.0418 56.5173 92.9085 55.92C89.5378 54.9387 87.0205 53.5733 85.3565 51.824C83.6925 50.0747 82.8605 47.8987 82.8605 45.296C82.8605 43.3333 83.4152 41.584 84.5245 40.048C85.6765 38.4693 87.2978 37.232 89.3885 36.336C91.5218 35.3973 93.9752 34.928 96.7485 34.928ZM137.03 68.4C135.793 69.2533 134.342 69.9147 132.678 70.384C131.057 70.8533 129.435 71.088 127.814 71.088C120.39 71.0453 116.678 66.9493 116.678 58.8V43.056H111.878V36.016H116.678V28.656L126.79 27.504V36.016H134.598L133.51 43.056H126.79V58.672C126.79 60.2507 127.046 61.3813 127.558 62.064C128.07 62.7467 128.881 63.088 129.99 63.088C131.142 63.088 132.358 62.7253 133.638 62L137.03 68.4ZM158.71 24.56C161.483 24.56 163.936 24.9653 166.07 25.776C168.246 26.5867 170.294 27.8027 172.214 29.424L167.222 35.376C165.899 34.352 164.598 33.584 163.318 33.072C162.038 32.56 160.672 32.304 159.222 32.304C156.235 32.304 153.867 33.5627 152.118 36.08C150.411 38.5973 149.558 42.48 149.558 47.728C149.558 52.8907 150.411 56.7307 152.118 59.248C153.867 61.7227 156.278 62.96 159.35 62.96C160.971 62.96 162.443 62.6613 163.766 62.064C165.088 61.424 166.518 60.528 168.054 59.376L172.726 65.392C171.062 67.056 169.035 68.4213 166.646 69.488C164.299 70.5547 161.696 71.088 158.838 71.088C154.742 71.088 151.179 70.192 148.15 68.4C145.12 66.608 142.752 63.9627 141.046 60.464C139.382 56.9227 138.549 52.6773 138.549 47.728C138.549 42.9067 139.403 38.7467 141.11 35.248C142.859 31.7493 145.248 29.104 148.278 27.312C151.35 25.4773 154.827 24.56 158.71 24.56ZM191.057 24.56C194.385 24.56 197.265 25.0293 199.697 25.968C202.172 26.9067 204.412 28.336 206.417 30.256L201.553 35.952C198.524 33.4773 195.281 32.24 191.825 32.24C189.99 32.24 188.54 32.624 187.473 33.392C186.406 34.1173 185.873 35.184 185.873 36.592C185.873 37.5733 186.108 38.384 186.577 39.024C187.046 39.6213 187.878 40.1973 189.073 40.752C190.268 41.3067 192.06 41.968 194.449 42.736C198.972 44.1867 202.3 45.9787 204.433 48.112C206.566 50.2027 207.633 53.1893 207.633 57.072C207.633 59.8453 206.929 62.2987 205.521 64.432C204.113 66.5227 202.086 68.1653 199.441 69.36C196.796 70.512 193.66 71.088 190.033 71.088C186.406 71.088 183.185 70.512 180.369 69.36C177.596 68.208 175.206 66.672 173.201 64.752L178.513 58.928C180.22 60.3787 181.969 61.4667 183.761 62.192C185.596 62.9173 187.58 63.28 189.713 63.28C191.889 63.28 193.596 62.8107 194.833 61.872C196.113 60.8907 196.753 59.5467 196.753 57.84C196.753 56.7307 196.518 55.8133 196.049 55.088C195.58 54.32 194.769 53.6373 193.617 53.04C192.465 52.4427 190.801 51.8027 188.625 51.12C183.718 49.6267 180.22 47.792 178.129 45.616C176.081 43.44 175.057 40.688 175.057 37.36C175.057 34.8 175.74 32.56 177.105 30.64C178.47 28.6773 180.369 27.184 182.801 26.16C185.233 25.0933 187.985 24.56 191.057 24.56ZM226.995 24.56C230.323 24.56 233.203 25.0293 235.635 25.968C238.109 26.9067 240.349 28.336 242.354 30.256L237.491 35.952C234.461 33.4773 231.219 32.24 227.763 32.24C225.928 32.24 224.477 32.624 223.411 33.392C222.344 34.1173 221.811 35.184 221.811 36.592C221.811 37.5733 222.045 38.384 222.515 39.024C222.984 39.6213 223.816 40.1973 225.01 40.752C226.205 41.3067 227.997 41.968 230.387 42.736C234.909 44.1867 238.237 45.9787 240.371 48.112C242.504 50.2027 243.571 53.1893 243.571 57.072C243.571 59.8453 242.867 62.2987 241.458 64.432C240.051 66.5227 238.024 68.1653 235.379 69.36C232.733 70.512 229.597 71.088 225.971 71.088C222.344 71.088 219.123 70.512 216.307 69.36C213.533 68.208 211.144 66.672 209.139 64.752L214.451 58.928C216.157 60.3787 217.907 61.4667 219.699 62.192C221.533 62.9173 223.517 63.28 225.651 63.28C227.827 63.28 229.533 62.8107 230.771 61.872C232.051 60.8907 232.691 59.5467 232.691 57.84C232.691 56.7307 232.456 55.8133 231.987 55.088C231.517 54.32 230.707 53.6373 229.555 53.04C228.403 52.4427 226.739 51.8027 224.562 51.12C219.656 49.6267 216.157 47.792 214.067 45.616C212.019 43.44 210.995 40.688 210.995 37.36C210.995 34.8 211.677 32.56 213.043 30.64C214.408 28.6773 216.307 27.184 218.739 26.16C221.171 25.0933 223.923 24.56 226.995 24.56Z" fill="black"/>
+ </svg>
+ \ No newline at end of file
diff --git a/smoke/astro.build-main/src/icons/logos/preact.svg b/smoke/astro.build-main/src/icons/logos/preact.svg
new file mode 100644
index 000000000..8fe8c57b8
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/preact.svg
@@ -0,0 +1,14 @@
+<svg width="659" height="220" viewBox="0 0 659 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M88.0223 76.4142C96.53 71.6257 104.685 68.0807 111.941 65.923C118.491 63.9752 124.153 63.2049 128.607 63.566C133.06 63.927 135.97 65.3773 137.621 67.5294C139.273 69.6815 139.92 72.8672 139.116 77.2624C138.313 81.6576 136.103 86.9273 132.526 92.7503C130.009 96.8479 126.858 101.151 123.143 105.534C116.835 98.7604 109.376 91.9737 101.023 85.5641C96.7043 82.2505 92.3504 79.1937 88.0223 76.4142Z" fill="black"/>
+<path d="M41.4016 105.534C37.6872 101.151 34.5355 96.8479 32.0186 92.7503C28.4417 86.9273 26.2322 81.6576 25.4284 77.2624C24.6245 72.8672 25.2723 69.6815 26.9237 67.5294C28.575 65.3773 31.4845 63.927 35.938 63.566C40.3915 63.2049 46.0535 63.9752 52.6039 65.923C59.8598 68.0807 68.0148 71.6257 76.5225 76.4142C72.1944 79.1937 67.8405 82.2505 63.5221 85.5641C55.1688 91.9738 47.7098 98.7604 41.4016 105.534Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M45.3576 110C51.4867 103.367 58.8272 96.6507 67.1366 90.2746C72.1884 86.3983 77.2691 82.9004 82.2724 79.809C87.2758 82.9004 92.3565 86.3983 97.4082 90.2746C105.718 96.6507 113.058 103.367 119.187 110C113.058 116.633 105.718 123.349 97.4082 129.725C92.3564 133.602 87.2757 137.1 82.2724 140.191C77.2691 137.1 72.1884 133.602 67.1366 129.725C58.8272 123.349 51.4867 116.633 45.3576 110ZM82.2724 122.617C89.2406 122.617 94.8896 116.968 94.8896 110C94.8896 103.032 89.2406 97.3828 82.2724 97.3828C75.3041 97.3828 69.6552 103.032 69.6552 110C69.6552 116.968 75.3041 122.617 82.2724 122.617Z" fill="black"/>
+<path d="M41.4016 114.466C37.6871 118.849 34.5355 123.152 32.0185 127.25C28.4417 133.073 26.2322 138.342 25.4283 142.738C24.6244 147.133 25.2722 150.319 26.9236 152.471C28.575 154.623 31.4845 156.073 35.9379 156.434C40.3914 156.795 46.0534 156.025 52.6038 154.077C59.8597 151.919 68.0148 148.374 76.5225 143.586C72.1944 140.806 67.8405 137.75 63.5221 134.436C55.1689 128.026 47.7098 121.24 41.4016 114.466Z" fill="black"/>
+<path d="M88.0223 143.586C96.53 148.374 104.685 151.919 111.941 154.077C118.491 156.025 124.153 156.795 128.607 156.434C133.06 156.073 135.97 154.623 137.621 152.471C139.273 150.319 139.92 147.133 139.117 142.738C138.313 138.342 136.103 133.073 132.526 127.25C130.009 123.152 126.858 118.849 123.143 114.466C116.835 121.24 109.376 128.026 101.023 134.436C96.7043 137.75 92.3504 140.806 88.0223 143.586Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M164.545 62.5L82.2724 15L0 62.5V157.5L82.2724 205L164.545 157.5V62.5ZM82.2724 72.8745C92.1235 67.0712 101.696 62.7752 110.249 60.2318C117.207 58.1628 123.646 57.2068 129.087 57.6479C134.527 58.089 139.304 59.9696 142.332 63.9149C145.359 67.8602 145.939 72.9612 144.957 78.3306C143.975 83.6999 141.385 89.6726 137.585 95.858C134.779 100.427 131.265 105.189 127.138 110C131.265 114.811 134.779 119.573 137.586 124.142C141.385 130.327 143.975 136.3 144.957 141.669C145.939 147.039 145.359 152.14 142.332 156.085C139.304 160.03 134.527 161.911 129.087 162.352C123.646 162.793 117.207 161.837 110.249 159.768C101.696 157.225 92.1236 152.929 82.2724 147.125C72.4212 152.929 62.8491 157.225 54.2962 159.768C47.3381 161.837 40.8986 162.793 35.4581 162.352C30.0175 161.911 25.2404 160.03 22.2131 156.085C19.1857 152.14 18.6056 147.039 19.5877 141.669C20.5697 136.3 23.1598 130.327 26.9593 124.142C29.766 119.573 33.2796 114.811 37.4068 110C33.2796 105.189 29.7661 100.427 26.9593 95.858C23.1599 89.6726 20.5698 83.6999 19.5877 78.3306C18.6057 72.9612 19.1858 67.8602 22.2131 63.9149C25.2405 59.9696 30.0175 58.089 35.4581 57.6479C40.8987 57.2067 47.3382 58.1628 54.2962 60.2318C62.8492 62.7752 72.4213 67.0712 82.2724 72.8745Z" fill="black"/>
+<path d="M205.249 107.129V69.7527H235.201C241.26 69.7527 246.166 71.2887 249.921 74.3607C253.676 77.4327 255.553 82.126 255.553 88.4407C255.553 94.7554 253.676 99.4487 249.921 102.521C246.166 105.593 241.26 107.129 235.201 107.129H205.249ZM196.545 62.3287V153.721H205.249V114.553H237.121C241.217 114.553 244.929 113.998 248.257 112.889C251.585 111.694 254.444 109.987 256.833 107.769C259.222 105.465 261.057 102.691 262.337 99.4487C263.617 96.206 264.257 92.5367 264.257 88.4407C264.257 84.3447 263.617 80.6754 262.337 77.4327C261.057 74.19 259.222 71.4594 256.833 69.2407C254.444 66.9367 251.585 65.23 248.257 64.1207C244.929 62.926 241.217 62.3287 237.121 62.3287H196.545Z" fill="black"/>
+<path d="M283.314 105.721V69.7527H315.826C322.482 69.7527 327.431 71.374 330.674 74.6167C333.917 77.8594 335.538 82.2967 335.538 87.9287C335.538 90.7447 334.983 93.262 333.874 95.4807C332.85 97.614 331.442 99.4487 329.65 100.985C327.858 102.521 325.767 103.715 323.378 104.569C320.989 105.337 318.471 105.721 315.826 105.721H283.314ZM274.61 62.3287V153.721H283.314V113.145H316.338C320.434 112.974 323.634 113.657 325.938 115.193C328.327 116.729 330.119 118.777 331.314 121.337C332.594 123.811 333.405 126.67 333.746 129.913C334.173 133.07 334.471 136.27 334.642 139.513C334.727 140.451 334.813 141.561 334.898 142.841C334.983 144.121 335.069 145.443 335.154 146.809C335.325 148.089 335.538 149.369 335.794 150.649C336.135 151.843 336.562 152.867 337.074 153.721H346.674C345.735 152.611 344.967 151.075 344.37 149.113C343.858 147.065 343.474 144.931 343.218 142.713C342.962 140.409 342.791 138.147 342.706 135.929C342.621 133.71 342.535 131.833 342.45 130.297C342.279 127.566 341.895 125.049 341.298 122.745C340.786 120.355 339.89 118.265 338.61 116.473C337.415 114.681 335.837 113.23 333.874 112.121C331.911 110.926 329.437 110.115 326.45 109.689V109.433C332.338 108.238 336.775 105.507 339.762 101.241C342.749 96.974 344.242 91.9394 344.242 86.1367C344.242 82.0407 343.474 78.4994 341.938 75.5127C340.487 72.4407 338.482 69.966 335.922 68.0887C333.447 66.126 330.503 64.6754 327.09 63.7367C323.762 62.798 320.221 62.3287 316.466 62.3287H274.61Z" fill="black"/>
+<path d="M357.425 62.3287V153.721H421.169V146.297H366.129V110.201H417.073V102.777H366.129V69.7527H420.529V62.3287H357.425Z" fill="black"/>
+<path d="M446.228 117.881L464.532 71.0327L482.196 117.881H446.228ZM460.052 62.3287L423.316 153.721H432.532L443.54 125.305H485.14L496.276 153.721H505.62L469.78 62.3287H460.052Z" fill="black"/>
+<path d="M576.901 89.9767H585.605C585.008 85.198 583.557 80.974 581.253 77.3047C579.034 73.6354 576.218 70.5634 572.805 68.0887C569.477 65.5287 565.722 63.6087 561.541 62.3287C557.445 61.0487 553.221 60.4087 548.869 60.4087C541.701 60.4087 535.386 61.7314 529.925 64.3767C524.549 66.9367 520.069 70.4354 516.485 74.8727C512.901 79.2247 510.213 84.2594 508.421 89.9767C506.629 95.694 505.733 101.71 505.733 108.025C505.733 114.339 506.629 120.355 508.421 126.073C510.213 131.79 512.901 136.825 516.485 141.177C520.069 145.529 524.549 149.027 529.925 151.673C535.386 154.233 541.701 155.513 548.869 155.513C554.245 155.513 559.109 154.659 563.461 152.953C567.898 151.246 571.738 148.814 574.981 145.657C578.224 142.499 580.869 138.659 582.917 134.137C584.965 129.614 586.288 124.537 586.885 118.905H578.181C577.754 123.001 576.773 126.841 575.237 130.425C573.701 133.923 571.696 136.995 569.221 139.641C566.746 142.286 563.802 144.377 560.389 145.913C556.976 147.449 553.136 148.217 548.869 148.217C542.81 148.217 537.605 147.065 533.253 144.761C528.901 142.457 525.317 139.427 522.501 135.673C519.77 131.833 517.722 127.523 516.357 122.745C515.077 117.881 514.437 112.974 514.437 108.025C514.437 102.99 515.077 98.0834 516.357 93.3047C517.722 88.526 519.77 84.2594 522.501 80.5047C525.317 76.6647 528.901 73.5927 533.253 71.2887C537.605 68.9847 542.81 67.8327 548.869 67.8327C552.197 67.8327 555.354 68.3447 558.341 69.3687C561.413 70.3074 564.186 71.7154 566.661 73.5927C569.221 75.47 571.354 77.8167 573.061 80.6327C574.853 83.3634 576.133 86.478 576.901 89.9767Z" fill="black"/>
+<path d="M586.642 62.3287V69.7527H618.386V153.721H627.09V69.7527H658.962V62.3287H586.642Z" fill="black"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/prismic.svg b/smoke/astro.build-main/src/icons/logos/prismic.svg
new file mode 100644
index 000000000..cf1fc7534
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/prismic.svg
@@ -0,0 +1,11 @@
+<svg width="685" height="220" viewBox="0 0 685 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M225.788 77.7337H230.033C232.931 77.7337 235.279 80.0824 235.279 82.9796V87.9466C235.279 88.1006 235.404 88.2255 235.558 88.2255C237.975 83.9511 241.228 80.8424 245.317 78.8995C249.407 76.9566 253.822 75.9851 258.563 75.9851C263.675 75.9851 268.275 76.9323 272.365 78.8267C276.455 80.721 279.94 83.3196 282.822 86.6226C285.703 89.9255 287.887 93.8113 289.374 98.28C290.861 102.749 291.605 107.557 291.605 112.706C291.605 117.854 290.815 122.663 289.235 127.132C287.655 131.601 285.448 135.487 282.613 138.79C279.778 142.092 276.362 144.691 272.365 146.585C268.368 148.48 264 149.427 259.26 149.427C256.1 149.427 253.311 149.087 250.894 148.407C248.478 147.727 246.34 146.853 244.481 145.784C242.622 144.715 241.042 143.574 239.741 142.36C238.439 141.145 237.371 139.955 236.534 138.79C236.303 138.79 236.116 138.977 236.116 139.208V174.5C236.116 178.035 233.25 180.902 229.714 180.902H225.788C222.252 180.902 219.386 178.035 219.386 174.5V84.1359C219.386 80.6001 222.252 77.7337 225.788 77.7337ZM274.874 112.706C274.874 109.986 274.433 107.363 273.55 104.837C272.667 102.311 271.366 100.077 269.646 98.1343C267.927 96.1914 265.859 94.6371 263.442 93.4713C261.026 92.3056 258.284 91.7227 255.216 91.7227C252.149 91.7227 249.407 92.3056 246.991 93.4713C244.574 94.6371 242.506 96.1914 240.786 98.1343C239.067 100.077 237.766 102.311 236.883 104.837C236 107.363 235.558 109.986 235.558 112.706C235.558 115.426 236 118.049 236.883 120.575C237.766 123.1 239.067 125.335 240.786 127.278C242.506 129.22 244.574 130.775 246.991 131.941C249.407 133.106 252.149 133.689 255.216 133.689C258.284 133.689 261.026 133.106 263.442 131.941C265.859 130.775 267.927 129.22 269.646 127.278C271.366 125.335 272.667 123.1 273.55 120.575C274.433 118.049 274.874 115.426 274.874 112.706ZM315.713 77.7337H320.505C323.563 77.7337 326.042 80.2129 326.042 83.271V88.5295C326.042 88.6835 326.167 88.8083 326.321 88.8083C328.179 84.7282 330.828 81.571 334.267 79.3367C337.707 77.1023 341.657 75.9851 346.118 75.9851C347.14 75.9851 348.139 76.0823 349.115 76.2766C350.858 76.6236 352.113 78.153 352.113 79.9297V89.5233C352.113 91.4527 350.549 93.0167 348.62 93.0167C348.412 93.0167 348.205 92.9981 348 92.9613C346.652 92.7184 345.328 92.597 344.026 92.597C340.123 92.597 336.986 93.3498 334.616 94.8556C332.246 96.3613 330.434 98.0857 329.178 100.029C327.924 101.972 327.087 103.914 326.669 105.857C326.251 107.8 326.042 109.257 326.042 110.229V141.276C326.042 144.812 323.175 147.678 319.64 147.678H315.713C312.178 147.678 309.311 144.812 309.311 141.276V84.1359C309.311 80.6001 312.178 77.7337 315.713 77.7337ZM372.318 77.7337H376.244C379.78 77.7337 382.646 80.6001 382.646 84.1359V141.276C382.646 144.812 379.78 147.678 376.244 147.678H372.318C368.782 147.678 365.916 144.812 365.916 141.276V84.1359C365.916 80.6001 368.782 77.7337 372.318 77.7337ZM363.545 53.9818C363.545 51.1646 364.544 48.7117 366.543 46.623C368.542 44.5344 371.074 43.4902 374.141 43.4902C377.209 43.4902 379.788 44.4859 381.879 46.4773C383.971 48.4688 385.016 50.9703 385.016 53.9818C385.016 56.9933 383.971 59.4948 381.879 61.4863C379.788 63.4778 377.209 64.4735 374.141 64.4735C371.074 64.4735 368.542 63.4292 366.543 61.3406C364.544 59.252 363.545 56.799 363.545 53.9818ZM435.626 93.718C432.232 91.222 429.211 89.9741 426.563 89.9741C424.333 89.9741 422.149 90.5569 420.011 91.7227C417.873 92.8885 416.804 94.7828 416.804 97.4057C416.804 99.5429 417.687 101.097 419.453 102.069C421.219 103.04 423.449 103.865 426.145 104.546C428.84 105.226 431.745 105.93 434.859 106.659C437.972 107.388 440.877 108.504 443.573 110.011C446.268 111.516 448.498 113.58 450.264 116.203C452.03 118.826 452.914 122.42 452.914 126.986C452.914 131.163 452.054 134.685 450.334 137.551C448.615 140.417 446.384 142.724 443.642 144.472C440.9 146.221 437.81 147.484 434.371 148.261C430.932 149.038 427.493 149.427 424.054 149.427C418.848 149.427 414.062 148.65 409.694 147.095C407.983 146.487 405.93 145.264 403.535 143.426C400.73 141.274 400.201 137.254 402.354 134.449C402.537 134.21 402.737 133.985 402.952 133.774L404.688 132.074C407.082 129.727 410.882 129.626 413.398 131.841C414.413 132.735 415.293 133.424 416.037 133.908C418.5 135.511 421.498 136.312 425.03 136.312C426.238 136.312 427.493 136.167 428.794 135.875C430.095 135.584 431.303 135.098 432.419 134.418C433.535 133.738 434.441 132.888 435.138 131.868C435.834 130.848 436.183 129.658 436.183 128.298C436.183 125.869 435.3 124.072 433.534 122.906C431.769 121.74 429.537 120.794 426.842 120.065C424.146 119.337 421.242 118.657 418.128 118.025C415.015 117.394 412.11 116.373 409.415 114.965C406.719 113.556 404.488 111.589 402.722 109.063C400.956 106.537 400.074 103.04 400.074 98.5717C400.074 94.6856 400.84 91.3098 402.374 88.444C403.908 85.5782 405.929 83.2225 408.439 81.3767C410.948 79.5309 413.829 78.1709 417.082 77.2966C420.335 76.4223 423.636 75.9851 426.981 75.9851C431.443 75.9851 435.858 76.7866 440.226 78.3895C441.808 78.9699 443.573 80.0446 445.52 81.6138C448.273 83.8322 448.707 87.8625 446.489 90.6158C446.304 90.8448 446.104 91.0608 445.89 91.2622L443.805 93.2233C441.555 95.3397 438.115 95.5478 435.626 93.718ZM473.676 77.7337H476.765C480.302 77.7337 483.168 80.6001 483.168 84.1359V88.6626C484.934 85.3597 487.327 82.4211 490.626 79.8467C493.926 77.2723 498.364 75.9851 503.941 75.9851C514.444 75.9851 521.415 80.3081 524.854 88.9541C527.27 84.4854 530.292 81.2067 533.916 79.1181C537.541 77.0295 541.863 75.9851 546.882 75.9851C551.344 75.9851 555.108 76.7623 558.175 78.3166C561.243 79.871 563.729 82.0082 565.635 84.7282C567.54 87.4483 568.911 90.6298 569.747 94.2727C570.584 97.9157 571.002 101.825 571.002 106.003V141.276C571.002 144.812 568.136 147.678 564.6 147.678H560.674C557.138 147.678 554.272 144.812 554.272 141.276V108.043C554.272 105.906 554.086 103.841 553.714 101.85C553.342 99.8582 552.692 98.11 551.762 96.6042C550.833 95.0984 549.578 93.9085 547.998 93.0342C546.418 92.1599 544.373 91.7227 541.863 91.7227C539.261 91.7227 537.053 92.2327 535.241 93.2527C533.428 94.2727 531.941 95.6327 530.78 97.3328C529.618 99.0327 528.781 100.976 528.27 103.161C527.758 105.348 527.503 107.557 527.503 109.791V141.276C527.503 144.812 524.637 147.678 521.101 147.678H517.175C513.639 147.678 510.773 144.812 510.773 141.276V106.003C510.773 101.631 509.89 98.1585 508.124 95.5842C506.358 93.0098 503.43 91.7227 499.34 91.7227C496.552 91.7227 494.205 92.2084 492.3 93.1799C490.394 94.1513 488.814 95.4628 487.56 97.1143C486.305 98.7658 485.398 100.66 484.84 102.797C484.283 104.934 484.004 107.168 484.004 109.5V141.276C484.004 144.812 481.138 147.678 477.602 147.678H473.676C470.14 147.678 467.274 144.812 467.274 141.276V84.1359C467.274 80.6001 470.14 77.7337 473.676 77.7337ZM598.038 77.7337H601.965C605.5 77.7337 608.367 80.6001 608.367 84.1359V141.276C608.367 144.812 605.5 147.678 601.965 147.678H598.038C594.502 147.678 591.636 144.812 591.636 141.276V84.1359C591.636 80.6001 594.502 77.7337 598.038 77.7337ZM589.266 53.9818C589.266 51.1646 590.265 48.7117 592.263 46.623C594.262 44.5344 596.794 43.4902 599.862 43.4902C602.929 43.4902 605.508 44.4859 607.599 46.4773C609.691 48.4688 610.737 50.9703 610.737 53.9818C610.737 56.9933 609.691 59.4948 607.599 61.4863C605.508 63.4778 602.929 64.4735 599.862 64.4735C596.794 64.4735 594.262 63.4292 592.263 61.3406C590.265 59.252 589.266 56.799 589.266 53.9818ZM671.109 94.8879C670.42 94.3491 669.815 93.9254 669.293 93.617C667.155 92.3541 664.971 91.7227 662.74 91.7227C659.673 91.7227 656.931 92.3056 654.514 93.4713C652.098 94.6371 650.03 96.1914 648.311 98.1343C646.591 100.077 645.289 102.311 644.407 104.837C643.523 107.363 643.082 109.986 643.082 112.706C643.082 115.426 643.523 118.049 644.407 120.575C645.289 123.1 646.591 125.335 648.311 127.278C650.03 129.22 652.098 130.775 654.514 131.941C656.931 133.106 659.673 133.689 662.74 133.689C665.343 133.689 667.76 133.131 669.99 132.013C670.441 131.788 670.931 131.481 671.459 131.092C674.121 129.135 677.836 129.525 680.033 131.994L682.576 134.851C684.815 137.366 684.591 141.219 682.075 143.457C681.767 143.732 681.431 143.974 681.074 144.181C678.889 145.444 676.682 146.464 674.451 147.241C672.221 148.018 670.083 148.577 668.038 148.917C665.994 149.257 664.228 149.427 662.74 149.427C657.721 149.427 652.981 148.552 648.52 146.804C644.058 145.055 640.2 142.578 636.947 139.372C633.694 136.167 631.115 132.305 629.21 127.788C627.305 123.27 626.351 118.243 626.351 112.706C626.351 107.168 627.305 102.142 629.21 97.6242C631.115 93.107 633.694 89.2455 636.947 86.0397C640.2 82.8339 644.058 80.3567 648.52 78.6081C652.981 76.8594 657.721 75.9851 662.74 75.9851C667.016 75.9851 671.314 76.8352 675.636 78.5352C677.283 79.1831 679.227 80.3415 681.466 82.0104C684.301 84.1232 684.887 88.1344 682.773 90.9694C682.617 91.1797 682.447 91.3801 682.266 91.5695L679.68 94.2721C677.406 96.6493 673.7 96.9155 671.109 94.8879Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M173.631 118.559L160.66 105.56C159.632 104.529 159.055 103.133 159.055 101.677V85.7664C159.055 71.0658 157.528 65.735 154.659 60.3606C151.792 54.9863 147.582 50.7685 142.22 47.8943C136.857 45.0201 131.538 43.4894 116.869 43.4894H95.8891C95.2819 43.4894 94.7896 42.9972 94.7896 42.3901C94.7896 42.099 94.9051 41.8198 95.1106 41.6136L108.082 28.6141C109.113 27.5807 110.513 27 111.973 27H119.26C138.819 27 145.912 29.0409 153.062 32.8731C160.213 36.7055 165.824 42.3292 169.648 49.495C173.472 56.6607 175.509 63.7684 175.509 83.3693V117.782C175.509 118.389 175.017 118.881 174.409 118.881C174.118 118.881 173.837 118.765 173.631 118.559Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M84.1414 201.014L97.1129 188.014C98.1439 186.98 99.5439 186.4 101.004 186.4H116.869C131.538 186.4 136.857 184.869 142.219 181.995C147.582 179.121 151.791 174.903 154.659 169.529C157.527 164.154 159.055 158.823 159.055 144.123V123.1C159.055 122.493 159.547 122.001 160.154 122.001C160.446 122.001 160.726 122.117 160.932 122.324L173.903 135.322C174.931 136.353 175.508 137.749 175.508 139.205V146.52C175.508 166.121 173.472 173.228 169.648 180.394C165.824 187.56 160.212 193.184 153.062 197.016C145.911 200.848 138.819 202.89 119.26 202.89H84.9192C84.3119 202.89 83.8203 202.397 83.8203 201.79C83.8203 201.499 83.9359 201.22 84.1414 201.014Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M1.87745 111.329L14.8482 124.328C15.8765 125.359 16.454 126.755 16.454 128.211V144.121C16.454 158.822 17.9813 164.153 20.8493 169.527C23.7174 174.901 27.9261 179.119 33.2889 181.993C38.6517 184.868 43.971 186.399 58.64 186.399H79.6198C80.2271 186.399 80.7194 186.89 80.7194 187.498C80.7194 187.789 80.6038 188.068 80.3983 188.274L67.4264 201.274C66.3953 202.307 64.9954 202.888 63.5357 202.888H56.2481C36.6894 202.888 29.5969 200.847 22.4466 197.015C15.2962 193.182 9.68454 187.559 5.86052 180.393C2.03646 173.227 0 166.119 0 146.519V112.106C0 111.499 0.492171 111.007 1.0993 111.007C1.39126 111.007 1.67122 111.123 1.87745 111.329Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M91.3676 28.8758L78.3954 41.8753C77.3643 42.9087 75.9651 43.4894 74.5052 43.4894H58.64C43.971 43.4894 38.6516 45.0201 33.2889 47.8943C27.9261 50.7685 23.7174 54.9863 20.8493 60.3606C17.9813 65.735 16.454 71.0658 16.454 85.7664V106.789C16.454 107.396 15.9618 107.889 15.3546 107.889C15.0627 107.889 14.7827 107.772 14.5765 107.566L1.6057 94.5669C0.577468 93.5365 0 92.1402 0 90.6844V83.3694C0 63.7685 2.03646 56.6608 5.86052 49.495C9.68454 42.3292 15.2962 36.7055 22.4466 32.8732C29.5969 29.0409 36.6894 27 56.2481 27H90.5891C91.1963 27 91.6887 27.4922 91.6887 28.0993C91.6887 28.3904 91.5731 28.6697 91.3676 28.8758Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M146.226 91.1749L128.539 74.234C127.369 73.0616 126 72.2094 124.542 71.6773C123.336 71.2203 122.029 70.9701 120.663 70.9701H68.4538C67.8467 70.9701 67.3545 70.478 67.3545 69.8709C67.3545 69.5796 67.4702 69.3002 67.6759 69.0941L80.6595 56.0932C81.6906 55.0608 83.0899 54.4808 84.5491 54.4808H126.147C138.264 54.4808 148.086 64.3242 148.086 76.4666V90.381C148.086 90.9881 147.594 91.4803 146.987 91.4803C146.704 91.4803 146.431 91.3709 146.226 91.1749Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M111.466 173.559L128.375 155.828C129.545 154.655 130.396 153.284 130.927 151.822C131.383 150.613 131.632 149.303 131.632 147.935V95.6158C131.632 95.0086 132.124 94.5165 132.731 94.5165C133.023 94.5165 133.304 94.6327 133.51 94.8396L146.482 107.851C147.509 108.881 148.086 110.277 148.086 111.732V153.431C148.086 165.574 138.264 175.417 126.147 175.417H112.261C111.654 175.417 111.162 174.925 111.162 174.318C111.162 174.035 111.27 173.763 111.466 173.559Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M29.2835 138.713L46.9712 155.654C48.1411 156.826 49.5096 157.678 50.9681 158.21C52.1741 158.667 53.4814 158.917 54.8472 158.917H107.056C107.663 158.917 108.155 159.41 108.155 160.017C108.155 160.308 108.04 160.587 107.834 160.793L94.8501 173.794C93.819 174.826 92.4198 175.407 90.9606 175.407H49.3624C37.2461 175.407 27.4238 165.563 27.4238 153.421V139.506C27.4238 138.9 27.916 138.407 28.5232 138.407C28.8065 138.407 29.0789 138.516 29.2835 138.713Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M64.0446 56.3387L47.1346 74.0702C45.9647 75.2426 45.1143 76.614 44.5834 78.0757C44.1274 79.2843 43.8778 80.5945 43.8778 81.9631V134.282C43.8778 134.89 43.3856 135.381 42.7785 135.381C42.4864 135.381 42.2063 135.265 42.0001 135.058L29.0279 122.047C28.0007 121.017 27.4238 119.621 27.4238 118.166V76.4666C27.4238 64.3242 37.2461 54.4808 49.3625 54.4808H63.249C63.8561 54.4808 64.3483 54.9729 64.3483 55.5801C64.3483 55.8626 64.2395 56.1343 64.0446 56.3387Z" fill="black"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/react.svg b/smoke/astro.build-main/src/icons/logos/react.svg
new file mode 100644
index 000000000..ec2fa920e
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/react.svg
@@ -0,0 +1,21 @@
+<svg width="659" height="220" viewBox="0 0 659 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_463_526)">
+<g clip-path="url(#clip1_463_526)">
+<path d="M213.353 115.022C213.353 100.888 195.653 87.4937 168.517 79.1875C174.779 51.529 171.996 29.5239 159.732 22.4788C156.905 20.8263 153.6 20.0435 149.991 20.0435V29.7414C151.991 29.7414 153.6 30.1328 154.948 30.8721C160.863 34.2641 163.429 47.1801 161.428 63.7926C160.95 67.8805 160.167 72.1859 159.21 76.5782C150.687 74.4907 141.38 72.8817 131.595 71.8379C125.724 63.7926 119.636 56.4866 113.504 50.0938C127.681 36.9169 140.989 29.6979 150.034 29.6979V20C138.075 20 122.419 28.5237 106.59 43.3097C90.7599 28.6107 75.1041 20.174 63.1449 20.174V29.8718C72.1469 29.8718 85.4978 37.0474 99.675 50.1373C93.5866 56.5301 87.4983 63.7926 81.7144 71.8379C71.886 72.8817 62.5795 74.4907 54.0558 76.6216C53.0556 72.2728 52.3163 68.0545 51.7945 64.0101C49.7505 47.3976 52.2728 34.4816 58.1437 31.046C59.4484 30.2632 61.1444 29.9153 63.1449 29.9153V20.2174C59.4919 20.2174 56.1868 21.0002 53.3165 22.6528C41.0964 29.6979 38.3566 51.6594 44.6624 79.2309C17.6127 87.5807 0 100.932 0 115.022C0 129.155 17.6997 142.55 44.8363 150.856C38.574 178.515 41.3573 200.52 53.621 207.565C56.4477 209.217 59.7528 210 63.4058 210C75.3651 210 91.0208 201.476 106.851 186.69C122.68 201.389 138.336 209.826 150.295 209.826C153.948 209.826 157.253 209.043 160.124 207.391C172.344 200.346 175.084 178.384 168.778 150.813C195.74 142.506 213.353 129.112 213.353 115.022ZM156.731 86.0151C155.122 91.6251 153.122 97.409 150.861 103.193C149.078 99.7139 147.208 96.2348 145.164 92.7558C143.163 89.2767 141.032 85.8846 138.901 82.5795C145.077 83.4928 151.035 84.6235 156.731 86.0151ZM136.814 132.33C133.422 138.201 129.943 143.767 126.333 148.943C119.854 149.508 113.287 149.812 106.677 149.812C100.11 149.812 93.5431 149.508 87.1069 148.986C83.4974 143.811 79.9748 138.288 76.5827 132.461C73.2776 126.764 70.2769 120.98 67.5372 115.152C70.2335 109.325 73.2776 103.497 76.5393 97.8004C79.9313 91.9295 83.4104 86.363 87.0199 81.1879C93.4996 80.6226 100.066 80.3181 106.677 80.3181C113.243 80.3181 119.81 80.6226 126.246 81.1444C129.856 86.3195 133.378 91.8425 136.77 97.6699C140.076 103.367 143.076 109.151 145.816 114.978C143.076 120.806 140.076 126.633 136.814 132.33ZM150.861 126.677C153.209 132.504 155.209 138.331 156.862 143.985C151.165 145.377 145.164 146.551 138.945 147.464C141.076 144.115 143.207 140.68 145.207 137.157C147.208 133.678 149.078 130.156 150.861 126.677ZM106.764 173.079C102.719 168.904 98.6747 164.25 94.6738 159.162C98.5878 159.336 102.589 159.467 106.633 159.467C110.721 159.467 114.765 159.38 118.723 159.162C114.809 164.25 110.764 168.904 106.764 173.079ZM74.4083 147.464C68.233 146.551 62.2751 145.42 56.5782 144.028C58.1872 138.418 60.1877 132.634 62.4491 126.851C64.2321 130.33 66.1021 133.809 68.146 137.288C70.19 140.767 72.2774 144.159 74.4083 147.464ZM106.546 56.965C110.591 61.1398 114.635 65.7931 118.636 70.8812C114.722 70.7073 110.721 70.5768 106.677 70.5768C102.589 70.5768 98.5443 70.6638 94.5869 70.8812C98.5008 65.7931 102.545 61.1398 106.546 56.965ZM74.3648 82.5795C72.2339 85.9281 70.103 89.3637 68.1025 92.8862C66.1021 96.3653 64.2321 99.8444 62.4491 103.323C60.1007 97.496 58.1003 91.6686 56.4477 86.0151C62.1447 84.667 68.146 83.4928 74.3648 82.5795ZM35.008 137.027C19.6132 130.46 9.65438 121.849 9.65438 115.022C9.65438 108.194 19.6132 99.5399 35.008 93.0167C38.748 91.4076 42.8359 89.9725 47.0542 88.6244C49.5331 97.1481 52.7947 106.02 56.8391 115.109C52.8382 124.154 49.6201 132.982 47.1847 141.463C42.8794 140.114 38.7915 138.636 35.008 137.027ZM58.4047 199.171C52.4903 195.779 49.9245 182.863 51.9249 166.251C52.4033 162.163 53.1861 157.858 54.1428 153.465C62.6665 155.553 71.973 157.162 81.7578 158.206C87.6288 166.251 93.7171 173.557 99.8489 179.95C85.6718 193.127 72.3644 200.346 63.3188 200.346C61.3619 200.302 59.7093 199.911 58.4047 199.171ZM161.559 166.033C163.603 182.646 161.08 195.562 155.209 198.997C153.905 199.78 152.209 200.128 150.208 200.128C141.206 200.128 127.855 192.953 113.678 179.863C119.767 173.47 125.855 166.207 131.639 158.162C141.467 157.118 150.774 155.509 159.297 153.378C160.298 157.771 161.08 161.989 161.559 166.033ZM178.302 137.027C174.562 138.636 170.474 140.071 166.255 141.419C163.777 132.895 160.515 124.024 156.471 114.935C160.471 105.889 163.69 97.0611 166.125 88.5809C170.43 89.929 174.518 91.4076 178.345 93.0167C193.74 99.5834 203.699 108.194 203.699 115.022C203.655 121.849 193.696 130.504 178.302 137.027Z" fill="black"/>
+<path d="M106.633 134.896C117.609 134.896 126.507 125.998 126.507 115.022C126.507 104.046 117.609 95.1476 106.633 95.1476C95.6567 95.1476 86.7588 104.046 86.7588 115.022C86.7588 125.998 95.6567 134.896 106.633 134.896Z" fill="black"/>
+</g>
+<path d="M264.3 169.944H286.472V131.325H303.359C303.554 131.325 303.75 131.325 303.946 131.325C304.142 131.325 304.313 131.325 304.46 131.325L324.21 169.944H349.319L327 128.021C333.02 125.672 337.719 121.781 341.096 116.348C344.473 110.915 346.162 104.772 346.162 97.9196V97.7727C346.162 90.7735 344.669 84.7531 341.683 79.7117C338.698 74.6702 334.366 70.8035 328.688 68.1115C323.059 65.3705 316.256 64 308.278 64H264.3V169.944ZM286.472 114.953V81.3269H305.561C311.092 81.3269 315.448 82.8442 318.63 85.8789C321.86 88.9135 323.476 92.976 323.476 98.0664V98.2132C323.476 103.45 321.909 107.562 318.777 110.548C315.693 113.484 311.386 114.953 305.855 114.953H286.472Z" fill="black"/>
+<path d="M395.831 171.632C401.607 171.632 406.624 170.898 410.882 169.43C415.19 167.912 418.787 165.954 421.675 163.556C424.612 161.109 426.912 158.49 428.576 155.7C430.289 152.861 431.464 150.096 432.1 147.404L432.247 146.67H412.424L412.204 147.11C411.714 148.285 410.784 149.533 409.414 150.855C408.092 152.176 406.33 153.302 404.128 154.232C401.974 155.162 399.355 155.627 396.272 155.627C392.454 155.627 389.15 154.795 386.36 153.131C383.619 151.418 381.515 148.97 380.046 145.789C378.578 142.607 377.844 138.789 377.844 134.335V125.819C377.844 121.218 378.578 117.302 380.046 114.072C381.564 110.841 383.644 108.394 386.287 106.73C388.93 105.066 391.94 104.234 395.317 104.234C398.744 104.234 401.729 105.041 404.275 106.656C406.869 108.272 408.9 110.694 410.368 113.925C411.837 117.106 412.571 121.071 412.571 125.819V134.262L422.703 121.56H367.271V135.07H432.908V128.388C432.908 120.312 431.366 113.264 428.283 107.244C425.199 101.223 420.818 96.5491 415.141 93.2208C409.463 89.8924 402.733 88.2283 394.95 88.2283C387.168 88.2283 380.389 89.9414 374.613 93.3676C368.887 96.7938 364.457 101.639 361.324 107.905C358.192 114.121 356.626 121.487 356.626 130.004V130.077C356.626 138.594 358.192 145.96 361.324 152.176C364.506 158.392 369.009 163.189 374.834 166.566C380.707 169.944 387.706 171.632 395.831 171.632Z" fill="black"/>
+<path d="M469.068 171.192C472.543 171.192 475.774 170.702 478.76 169.723C481.745 168.744 484.388 167.325 486.689 165.465C488.989 163.605 490.825 161.403 492.195 158.857H493.223V169.944H514.441V115.246C514.441 109.667 513.095 104.87 510.403 100.856C507.76 96.7938 503.942 93.6857 498.95 91.5321C493.957 89.3295 487.961 88.2283 480.962 88.2283C474.11 88.2283 468.138 89.2561 463.048 91.3119C458.006 93.3186 454.017 96.133 451.081 99.755C448.144 103.328 446.431 107.513 445.941 112.31L445.868 113.117H465.618L465.691 112.677C466.425 110.181 467.991 108.223 470.39 106.803C472.788 105.384 475.945 104.674 479.861 104.674C484.217 104.674 487.521 105.653 489.772 107.611C492.073 109.52 493.223 112.236 493.223 115.76V140.796C493.223 143.586 492.464 146.107 490.947 148.358C489.479 150.561 487.448 152.323 484.853 153.645C482.308 154.917 479.396 155.553 476.117 155.553C472.446 155.553 469.435 154.697 467.086 152.984C464.786 151.271 463.635 148.921 463.635 145.936V145.789C463.635 142.901 464.737 140.6 466.939 138.887C469.191 137.174 472.519 136.195 476.924 135.951L504.016 134.189V121.047L473.767 122.882C463.782 123.469 456.098 125.843 450.714 130.004C445.329 134.115 442.637 139.768 442.637 146.963V147.11C442.637 151.907 443.763 156.116 446.015 159.738C448.266 163.36 451.374 166.175 455.339 168.182C459.304 170.188 463.88 171.192 469.068 171.192Z" fill="black"/>
+<path d="M566.901 171.632C573.949 171.632 580.018 170.384 585.108 167.888C590.248 165.392 594.31 161.941 597.296 157.536C600.331 153.082 602.142 147.967 602.729 142.191L602.802 141.677L582.832 141.751L582.759 142.118C581.878 146.18 580.116 149.313 577.473 151.515C574.879 153.718 571.404 154.819 567.047 154.819C563.327 154.819 560.146 153.865 557.503 151.956C554.909 149.998 552.902 147.159 551.483 143.439C550.112 139.719 549.427 135.192 549.427 129.857V129.783C549.427 124.497 550.112 120.019 551.483 116.348C552.853 112.677 554.86 109.887 557.503 107.978C560.146 106.02 563.303 105.041 566.974 105.041C571.526 105.041 575.123 106.265 577.767 108.712C580.41 111.111 582.074 114.243 582.759 118.11L582.832 118.477H602.729L602.802 118.11C602.264 112.236 600.502 107.072 597.516 102.618C594.579 98.1154 590.517 94.5912 585.329 92.0461C580.14 89.5009 573.973 88.2283 566.827 88.2283C558.604 88.2283 551.556 89.8924 545.682 93.2208C539.858 96.5001 535.379 101.223 532.247 107.391C529.163 113.558 527.621 120.998 527.621 129.71V129.857C527.621 138.618 529.163 146.131 532.247 152.396C535.379 158.613 539.882 163.385 545.756 166.713C551.629 169.993 558.678 171.632 566.901 171.632Z" fill="black"/>
+<path d="M648.727 170.751C650.832 170.751 652.79 170.653 654.601 170.458C656.461 170.311 658.027 170.115 659.3 169.87V154.012C658.419 154.11 657.538 154.207 656.657 154.305C655.825 154.354 654.821 154.379 653.647 154.379C650.122 154.379 647.528 153.596 645.864 152.029C644.249 150.414 643.441 147.771 643.441 144.1V106.069H659.3V89.9169H643.441V70.6811H621.783V89.9169H609.962V106.069H621.783V148.065C621.783 156.141 623.912 161.941 628.17 165.465C632.477 168.989 639.33 170.751 648.727 170.751Z" fill="black"/>
+</g>
+<defs>
+<clipPath id="clip0_463_526">
+<rect width="659" height="220" fill="white"/>
+</clipPath>
+<clipPath id="clip1_463_526">
+<rect width="213.353" height="190" fill="white" transform="translate(0 20)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/rss.svg b/smoke/astro.build-main/src/icons/logos/rss.svg
new file mode 100644
index 000000000..5393b62a8
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/rss.svg
@@ -0,0 +1,3 @@
+<svg width="172" height="220" viewBox="0 0 172 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M18.8994 35H153.101C157.463 35 161 38.5367 161 42.8994V177.101C161 181.463 157.463 185 153.101 185H18.8994C14.5367 185 11 181.463 11 177.101V42.8994C11 38.5367 14.5367 35 18.8994 35ZM32.3317 55.8616C61.1171 55.8616 88.1656 67.0574 108.494 87.3862C128.823 107.715 140.019 134.764 140.019 163.549H118.84C118.84 140.421 109.847 118.691 93.5184 102.362C77.1897 86.0337 55.4598 77.0413 32.3317 77.0413V55.8616ZM32.1121 91.7022V112.882C60.05 112.882 82.7795 135.611 82.7795 163.55H103.959C103.959 123.933 71.7289 91.7022 32.1121 91.7022ZM62.3201 148.969C62.3201 157.346 55.5285 164.138 47.1506 164.138C38.7727 164.138 31.9811 157.346 31.9811 148.969C31.9811 140.591 38.7727 133.799 47.1506 133.799C55.5285 133.799 62.3201 140.591 62.3201 148.969Z" fill="black"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/sass.svg b/smoke/astro.build-main/src/icons/logos/sass.svg
new file mode 100644
index 000000000..d7edb706d
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/sass.svg
@@ -0,0 +1,3 @@
+<svg width="254" height="221" viewBox="0 0 254 221" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M218.147 125.186C209.308 125.232 201.627 127.361 195.195 130.507C192.835 125.834 190.475 121.669 190.058 118.615C189.596 115.052 189.04 112.877 189.596 108.62C190.151 104.363 192.65 98.301 192.603 97.8382C192.557 97.3755 192.048 95.2006 186.958 95.1544C181.868 95.1081 177.472 96.1261 176.963 97.468C176.454 98.81 175.482 101.864 174.834 105.011C173.955 109.638 164.654 126.158 159.333 134.811C157.62 131.433 156.14 128.471 155.816 126.111C155.353 122.548 154.798 120.374 155.353 116.116C155.908 111.859 158.407 105.797 158.361 105.335C158.315 104.872 157.806 102.697 152.715 102.651C147.625 102.604 143.229 103.622 142.72 104.964C142.211 106.306 141.656 109.453 140.592 112.507C139.527 115.561 127.172 143.14 123.933 150.266C122.267 153.922 120.833 156.837 119.815 158.827C119.815 158.827 119.769 158.966 119.63 159.197C118.751 160.909 118.242 161.835 118.242 161.835C118.242 161.835 118.242 161.835 118.242 161.881C117.547 163.13 116.807 164.287 116.437 164.287C116.159 164.287 115.65 160.956 116.529 156.421C118.38 146.842 122.776 131.942 122.73 131.433C122.73 131.155 123.563 128.564 119.861 127.222C116.252 125.88 114.956 128.101 114.632 128.101C114.308 128.101 114.077 128.888 114.077 128.888C114.077 128.888 118.103 112.137 106.395 112.137C99.0842 112.137 88.9965 120.142 83.999 127.361C80.8524 129.073 74.1427 132.729 66.9702 136.662C64.2401 138.189 61.4174 139.716 58.7798 141.15C58.5947 140.965 58.4096 140.734 58.2245 140.549C44.0647 125.417 17.8738 114.728 18.9844 94.414C19.4008 87.0102 21.9459 67.5752 69.2839 43.9756C108.246 24.772 139.25 30.0935 144.618 41.8933C152.299 58.7369 128.005 90.018 87.7472 94.5528C72.3843 96.2649 64.3326 90.3419 62.2966 88.1207C60.168 85.8071 59.8441 85.6682 59.0574 86.131C57.7618 86.8251 58.5947 88.9074 59.0574 90.1105C60.2605 93.2571 65.2118 98.81 73.5874 101.54C80.9912 103.946 98.9917 105.288 120.787 96.8665C145.173 87.4266 164.238 61.1894 158.639 39.2094C153.039 16.9055 116.02 9.54793 80.9912 21.9956C60.168 29.3994 37.5864 41.0603 21.3443 56.2381C2.04818 74.2849 -1.00589 89.9717 0.243501 96.5426C4.73205 119.865 36.8923 135.042 49.7564 146.287C49.1086 146.657 48.507 146.981 47.998 147.259C41.566 150.451 17.0409 163.269 10.9327 176.828C3.99168 192.19 12.0433 203.204 17.3648 204.684C33.8845 209.265 50.867 201.029 59.9829 187.424C69.0988 173.82 67.9883 156.143 63.7774 148.045C63.7311 147.953 63.6848 147.86 63.5923 147.768C65.2581 146.796 66.9702 145.778 68.6361 144.806C71.9215 142.863 75.1607 141.058 77.9371 139.577C76.3638 143.881 75.207 149.017 74.6517 156.421C73.9576 165.12 77.5207 176.411 82.1943 180.853C84.2766 182.797 86.7291 182.843 88.3024 182.843C93.7627 182.843 96.2152 178.308 98.9454 172.941C102.277 166.37 105.285 158.734 105.285 158.734C105.285 158.734 101.537 179.373 111.717 179.373C115.419 179.373 119.167 174.56 120.833 172.108C120.833 172.154 120.833 172.154 120.833 172.154C120.833 172.154 120.925 172.015 121.111 171.691C121.481 171.09 121.712 170.719 121.712 170.719C121.712 170.719 121.712 170.673 121.712 170.627C123.193 168.035 126.525 162.159 131.476 152.395C137.862 139.808 144.016 124.075 144.016 124.075C144.016 124.075 144.571 127.916 146.469 134.302C147.579 138.05 149.893 142.168 151.744 146.148C150.263 148.23 149.338 149.387 149.338 149.387C149.338 149.387 149.337 149.387 149.384 149.433C148.181 151.007 146.885 152.719 145.451 154.385C140.407 160.4 134.391 167.295 133.558 169.285C132.586 171.645 132.818 173.357 134.669 174.745C136.011 175.763 138.417 175.902 140.869 175.763C145.404 175.439 148.597 174.329 150.17 173.635C152.623 172.755 155.492 171.413 158.176 169.424C163.127 165.768 166.135 160.539 165.857 153.644C165.718 149.85 164.469 146.055 162.942 142.492C163.405 141.845 163.821 141.197 164.284 140.549C172.104 129.119 178.166 116.579 178.166 116.579C178.166 116.579 178.721 120.42 180.619 126.806C181.544 130.045 183.441 133.562 185.107 136.986C177.75 142.955 173.215 149.896 171.595 154.431C168.68 162.853 170.947 166.647 175.251 167.526C177.194 167.943 179.971 167.017 182.007 166.138C184.598 165.305 187.652 163.871 190.567 161.742C195.519 158.087 200.285 152.997 200.007 146.102C199.868 142.955 199.036 139.855 197.879 136.847C204.126 134.256 212.177 132.821 222.45 134.024C244.476 136.616 248.826 150.359 247.993 156.143C247.16 161.927 242.533 165.074 241.006 166.046C239.479 167.017 238.97 167.341 239.109 168.035C239.294 169.054 240.034 169.007 241.33 168.822C243.134 168.498 252.898 164.148 253.315 153.506C254.009 139.901 241.052 125.047 218.147 125.186ZM48.2294 182.473C40.9181 190.432 30.7379 193.44 26.3419 190.895C21.622 188.165 23.4729 176.411 32.45 167.989C37.9103 162.853 44.9439 158.087 49.6176 155.171C50.6819 154.524 52.2552 153.598 54.1524 152.441C54.4763 152.256 54.6614 152.164 54.6614 152.164C55.0316 151.932 55.4018 151.701 55.772 151.469C59.0574 163.501 55.9108 174.097 48.2294 182.473ZM101.444 146.287C98.8991 152.488 93.5776 168.359 90.3385 167.48C87.5621 166.74 85.8499 154.709 89.7832 142.816C91.773 136.847 95.9839 129.721 98.4364 126.944C102.416 122.502 106.812 121.021 107.876 122.826C109.218 125.186 103.017 142.4 101.444 146.287ZM145.358 167.295C144.294 167.85 143.276 168.221 142.813 167.943C142.489 167.758 143.276 167.017 143.276 167.017C143.276 167.017 148.782 161.094 150.957 158.411C152.206 156.837 153.687 154.986 155.261 152.904C155.261 153.089 155.261 153.32 155.261 153.506C155.261 160.585 148.412 165.352 145.358 167.295ZM179.23 159.567C178.444 159.012 178.583 157.161 181.22 151.377C182.238 149.11 184.644 145.315 188.763 141.659C189.225 143.14 189.549 144.575 189.503 145.917C189.457 154.847 183.071 158.179 179.23 159.567Z" fill="#222222"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/sentry.svg b/smoke/astro.build-main/src/icons/logos/sentry.svg
new file mode 100644
index 000000000..ddfe5f4e9
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/sentry.svg
@@ -0,0 +1,3 @@
+<svg width="163" height="49" viewBox="0 0 163 49" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M29.9396 10.3183C29.6364 9.81513 29.2083 9.3989 28.6969 9.10996C28.1855 8.82102 27.608 8.66919 27.0206 8.66919C26.4332 8.66919 25.8558 8.82102 25.3444 9.10996C24.8329 9.3989 24.4049 9.81513 24.1017 10.3183L19.3001 18.5423C22.9683 20.3737 26.0937 23.1328 28.3659 26.5456C30.6381 29.9583 31.9781 33.9061 32.2528 37.9969H28.8815C28.6073 34.4903 27.4222 31.1162 25.4435 28.2082C23.4648 25.3003 20.761 22.9595 17.5998 21.4174L13.1558 29.1015C14.9329 29.8985 16.4811 31.1295 17.6581 32.6814C18.835 34.2332 19.6029 36.0561 19.8912 37.9823H12.1488C12.0569 37.9758 11.9682 37.9466 11.8905 37.8972C11.8128 37.8478 11.7486 37.7799 11.7037 37.6995C11.6588 37.6192 11.6346 37.5289 11.6333 37.4369C11.6321 37.3448 11.6537 37.2539 11.6963 37.1723L13.8417 33.5237C13.1149 32.9172 12.2842 32.4475 11.3898 32.1372L9.26632 35.7858C9.04525 36.165 8.90173 36.5843 8.84411 37.0195C8.78648 37.4546 8.81589 37.8968 8.93063 38.3205C9.04538 38.7442 9.24316 39.1408 9.5125 39.4874C9.78183 39.8339 10.1174 40.1235 10.4996 40.3393C11.0031 40.6231 11.5707 40.7738 12.1488 40.7772H22.7517C22.9486 38.3472 22.5147 35.9076 21.4919 33.6946C20.4692 31.4816 18.8922 29.5702 16.9139 28.1456L18.5996 25.2266C21.0963 26.9414 23.1027 29.2777 24.4208 32.0047C25.7389 34.7318 26.3231 37.7554 26.1158 40.7772H35.0988C35.3079 36.1996 34.3121 31.6472 32.2107 27.5751C30.1093 23.5029 26.976 20.0536 23.1239 17.5718L26.5317 11.7339C26.6077 11.6067 26.7308 11.5146 26.8743 11.4777C27.0178 11.4408 27.17 11.4621 27.2979 11.5369C27.6847 11.7485 42.1042 36.9096 42.3742 37.2015C42.4217 37.2868 42.4459 37.3831 42.4443 37.4808C42.4427 37.5784 42.4153 37.6739 42.365 37.7576C42.3146 37.8413 42.2431 37.9102 42.1576 37.9573C42.072 38.0045 41.9756 38.0282 41.8779 38.0261H38.4044C38.4482 38.9553 38.4482 39.882 38.4044 40.8064H41.8925C42.3355 40.8093 42.7746 40.7243 43.1844 40.5563C43.5943 40.3884 43.9668 40.1408 44.2803 39.828C44.5939 39.5151 44.8422 39.1432 45.0111 38.7337C45.1799 38.3242 45.2658 37.8852 45.2639 37.4423C45.2643 36.8573 45.1081 36.2828 44.8115 35.7785L29.9396 10.3183ZM99.4974 29.3058L88.7266 15.3972H86.0412V34.0418H88.7631V19.7537L99.8404 34.0418H102.219V15.3972H99.4974V29.3058ZM72.3733 25.8469H82.0277V23.4242H72.3661V17.8126H83.2609V15.3899H69.5931V34.0418H83.3996V31.6191H72.3661L72.3733 25.8469ZM61.0187 23.4826C57.2606 22.5777 56.2098 21.8626 56.2098 20.1258C56.2098 18.5642 57.589 17.5061 59.6469 17.5061C61.5209 17.561 63.3284 18.2129 64.806 19.3669L66.2655 17.3018C64.3949 15.8354 62.0743 15.0618 59.6979 15.1126C56.0055 15.1126 53.4296 17.3018 53.4296 20.4177C53.4296 23.7745 55.6188 24.9347 59.6031 25.9053C63.1496 26.7226 64.2369 27.4815 64.2369 29.1818C64.2369 30.882 62.7774 31.9329 60.5225 31.9329C58.2777 31.9226 56.1176 31.0742 54.4658 29.5539L52.8239 31.5169C54.9396 33.3348 57.6382 34.3319 60.4277 34.3264C64.4266 34.3264 66.9952 32.1737 66.9952 28.8461C66.9733 26.0293 65.3096 24.5188 61.0187 23.4826ZM151.586 15.3972L145.974 24.1539L140.399 15.3972H137.144L144.507 26.6715V34.0491H147.309V26.5839L154.723 15.3972H151.586ZM104.423 17.922H110.531V34.0491H113.333V17.922H119.441V15.3972H104.43L104.423 17.922ZM132.401 26.7664C135.218 25.9856 136.779 24.0153 136.779 21.1985C136.779 17.6156 134.16 15.3607 129.934 15.3607H121.645V34.0345H124.418V27.3356H129.124L133.853 34.0491H137.093L131.985 26.8831L132.401 26.7664ZM124.41 24.942V17.8637H129.643C132.372 17.8637 133.933 19.1553 133.933 21.3956C133.933 23.6358 132.262 24.942 129.672 24.942H124.41Z" fill="#362D59"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/seo.svg b/smoke/astro.build-main/src/icons/logos/seo.svg
new file mode 100644
index 000000000..d5982e26f
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/seo.svg
@@ -0,0 +1,3 @@
+<svg width="220" height="220" viewBox="0 0 220 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M146.666 55L167.658 75.9917L122.925 120.725L86.258 84.0583L18.333 152.075L31.258 165L86.258 110L122.925 146.667L180.675 89.0083L201.666 110V55H146.666Z" fill="black"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/shopify.svg b/smoke/astro.build-main/src/icons/logos/shopify.svg
new file mode 100644
index 000000000..691c32193
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/shopify.svg
@@ -0,0 +1,19 @@
+<svg width="663" height="220" viewBox="0 0 663 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_640_501)">
+<path d="M229.369 120.655C223.724 117.525 220.753 114.992 220.753 111.416C220.753 106.796 224.763 103.965 231.151 103.965C238.579 103.965 245.115 107.094 245.115 107.094L250.315 91.149C250.315 91.149 245.561 87.4235 231.448 87.4235C211.839 87.4235 198.172 98.749 198.172 114.545C198.172 123.486 204.56 130.341 213.028 135.259C219.861 139.133 222.238 141.965 222.238 145.988C222.238 150.31 218.821 153.737 212.433 153.737C202.926 153.737 194.013 148.82 194.013 148.82L188.516 164.765C188.516 164.765 196.835 170.278 210.651 170.278C230.854 170.278 245.264 160.294 245.264 142.412C245.561 132.576 238.133 125.722 229.369 120.655Z" fill="black"/>
+<path d="M309.885 87.1255C299.932 87.1255 292.207 91.8941 286.116 99.0471L285.819 98.898L294.435 53.5961H271.855L250.018 168.788H272.449L279.877 129.447C282.848 114.545 290.424 105.455 297.555 105.455C302.606 105.455 304.537 108.882 304.537 113.8C304.537 116.929 304.24 120.655 303.497 123.784L295.03 168.937H317.461L326.226 122.443C327.266 117.525 327.86 111.714 327.86 107.69C328.157 94.7255 321.621 87.1255 309.885 87.1255Z" fill="black"/>
+<path d="M378.963 87.1255C351.926 87.1255 333.951 111.565 333.951 138.835C333.951 156.271 344.647 170.427 364.851 170.427C391.442 170.427 409.268 146.584 409.268 118.718C409.417 102.475 400.058 87.1255 378.963 87.1255ZM367.97 152.992C360.245 152.992 357.126 146.435 357.126 138.239C357.126 125.274 363.811 104.263 375.992 104.263C384.014 104.263 386.54 111.118 386.54 117.824C386.54 131.831 379.855 152.992 367.97 152.992Z" fill="black"/>
+<path d="M466.908 87.1255C451.755 87.1255 443.139 100.537 443.139 100.537H442.842L444.179 88.4667H424.273C423.233 96.6627 421.45 109.031 419.668 118.42L404.069 200.678H426.501L432.74 167.298H433.186C433.186 167.298 437.791 170.278 446.407 170.278C472.85 170.278 490.083 143.157 490.083 115.737C490.083 100.686 483.398 87.1255 466.908 87.1255ZM445.516 153.439C439.722 153.439 436.306 150.161 436.306 150.161L440.02 129.149C442.694 115.141 449.973 105.753 457.698 105.753C464.531 105.753 466.611 112.161 466.611 118.122C466.611 132.576 457.995 153.439 445.516 153.439Z" fill="black"/>
+<path d="M522.17 54.7883C515.04 54.7883 509.246 60.451 509.246 67.902C509.246 74.6079 513.406 79.2275 519.793 79.2275H520.091C527.073 79.2275 533.163 74.4588 533.312 66.1138C533.461 59.4079 529.004 54.7883 522.17 54.7883Z" fill="black"/>
+<path d="M490.676 168.788H513.257L528.558 88.9138H505.829L490.676 168.788Z" fill="black"/>
+<path d="M585.603 88.7647H570.005L570.748 85.0392C572.085 77.2902 576.541 70.4353 584.118 70.4353C588.129 70.4353 591.248 71.6275 591.248 71.6275L595.705 54.0432C595.705 54.0432 591.843 52.1059 583.524 52.1059C575.502 52.1059 567.628 54.3412 561.537 59.5569C553.813 66.1137 550.247 75.502 548.465 85.0392L547.87 88.7647H537.472L534.203 105.753H544.602L532.718 168.788H555.15L567.034 105.753H582.484L585.603 88.7647Z" fill="black"/>
+<path d="M639.677 88.9138C639.677 88.9138 625.564 124.38 619.325 143.753H619.028C618.582 137.494 613.531 88.9138 613.531 88.9138H589.911L603.43 162.231C603.727 163.871 603.578 164.914 602.984 165.957C600.31 171.024 596.002 175.941 590.802 179.518C586.643 182.647 581.889 184.584 578.175 185.926L584.415 205C589.02 203.957 598.379 200.231 606.401 192.78C616.651 183.094 626.158 168.341 635.815 148.075L663.297 88.9138H639.677Z" fill="black"/>
+<path d="M111.119 37.0549C111.119 37.0549 109.039 37.651 105.623 38.6942C105.028 36.7569 104.137 34.5216 102.949 32.1373C99.0862 24.6863 93.2925 20.6628 86.459 20.6628C86.0134 20.6628 85.5677 20.6628 84.9735 20.8118C84.8249 20.5138 84.5278 20.3647 84.3793 20.0667C81.4082 16.7883 77.5457 15.2981 72.9405 15.4471C64.0272 15.7451 55.114 22.153 47.9833 33.6275C42.9325 41.6745 39.07 51.8079 38.0302 59.7059C27.7799 62.8353 20.6493 65.0706 20.5007 65.2197C15.3013 66.8589 15.1527 67.0079 14.5585 71.9255C14.1128 75.651 0.445801 180.561 0.445801 180.561L112.753 200.082V36.9059C111.862 36.9059 111.416 37.0549 111.119 37.0549ZM85.122 45.102C79.1798 46.8902 72.6434 48.9765 66.2556 50.9138C68.0382 43.9098 71.6035 36.9059 75.7631 32.2863C77.3972 30.6471 79.6255 28.7098 82.1509 27.5177C84.6764 32.8824 85.2706 40.1844 85.122 45.102ZM72.9405 21.5569C75.0203 21.5569 76.803 22.004 78.2885 22.8981C75.9116 24.0902 73.5348 26.0275 71.3064 28.2628C65.6614 34.3726 61.3533 43.9098 59.5706 53C54.2226 54.6393 48.8747 56.2785 43.9724 57.7687C47.2406 43.4628 59.2735 21.8549 72.9405 21.5569ZM55.7082 103.518C56.3024 113.055 81.4082 115.141 82.8937 137.643C83.9336 155.377 73.5348 167.447 58.5307 168.341C40.407 169.533 30.4539 158.804 30.4539 158.804L34.3163 142.412C34.3163 142.412 44.2695 150.012 52.2914 149.416C57.4908 149.118 59.4221 144.796 59.2735 141.816C58.5307 129.298 38.0302 130.043 36.6932 109.478C35.5047 92.1922 46.7949 74.7569 71.7521 73.1177C81.4082 72.5216 86.3105 74.9059 86.3105 74.9059L80.6654 96.3647C80.6654 96.3647 74.2775 93.3844 66.7012 93.9804C55.7082 94.7255 55.5596 101.729 55.7082 103.518ZM91.0642 43.3138C91.0642 38.8432 90.47 32.4353 88.3902 27.0706C95.2238 28.4118 98.492 36.0118 99.9775 40.6314C97.3035 41.3765 94.3324 42.2706 91.0642 43.3138Z" fill="black"/>
+<path d="M116.17 199.784L162.816 188.161C162.816 188.161 142.761 52.1059 142.613 51.2118C142.464 50.3177 141.721 49.7216 140.979 49.7216C140.236 49.7216 127.163 49.4236 127.163 49.4236C127.163 49.4236 119.141 41.6745 116.17 38.6942V199.784Z" fill="black"/>
+</g>
+<defs>
+<clipPath id="clip0_640_501">
+<rect width="663" height="190" fill="white" transform="translate(0 15)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/sitemap.svg b/smoke/astro.build-main/src/icons/logos/sitemap.svg
new file mode 100644
index 000000000..6ddda71a0
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/sitemap.svg
@@ -0,0 +1,3 @@
+<svg width="172" height="220" viewBox="0 0 172 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M64 35V80H79V102.5H34C25.675 102.5 19 109.175 19 117.5V140H4V185H49V140H34V117.5H79V140H64V185H109V140H94V117.5H139V140H124V185H169V140H154V117.5C154 109.175 147.325 102.5 139 102.5H94V80H109V35H64Z" fill="black"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/solid.svg b/smoke/astro.build-main/src/icons/logos/solid.svg
new file mode 100644
index 000000000..6afdc5b77
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/solid.svg
@@ -0,0 +1,10 @@
+<svg width="682" height="220" viewBox="0 0 682 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_463_519)">
+<path d="M4.95809 136.662C11.075 142.619 19.2211 146.038 27.7572 146.232C37.3273 146.232 45.2084 140.603 45.2084 131.033C45.2084 109.078 1.58043 114.426 1.58043 87.4046C1.58043 74.7384 12.8393 64.0425 28.8831 64.0425C37.4604 63.7874 45.8132 66.8065 52.2452 72.4866L48.0232 79.8048C42.777 75.0325 35.9741 72.3314 28.8831 72.2051C17.6243 72.2051 10.5875 79.5234 10.306 87.1231C10.306 107.952 53.934 102.041 53.934 130.751C53.934 143.699 43.8011 154.395 27.4758 154.395C22.3535 154.496 17.2645 153.55 12.5211 151.614C7.77772 149.677 3.47997 146.793 -0.108398 143.136L4.95809 136.662ZM143.16 64.6054C149.032 64.5789 154.85 65.7205 160.276 67.9638C165.702 70.207 170.627 73.507 174.766 77.6718C178.905 81.8366 182.174 86.783 184.382 92.2231C186.591 97.6631 187.696 103.488 187.633 109.359C187.707 115.274 186.616 121.145 184.421 126.637C182.226 132.129 178.971 137.136 174.841 141.37C170.712 145.604 165.788 148.984 160.352 151.315C154.916 153.646 149.075 154.884 143.16 154.958H142.879C136.965 154.884 131.123 153.646 125.687 151.315C120.251 148.984 115.328 145.604 111.198 141.37C107.068 137.136 103.813 132.129 101.618 126.637C99.4234 121.145 98.3321 115.274 98.4065 109.359V109.078C98.38 103.206 99.5216 97.3885 101.765 91.9625C104.008 86.5364 107.308 81.6108 111.473 77.4722C115.638 73.3336 120.584 70.0647 126.024 67.8557C131.464 65.6468 137.289 64.5419 143.16 64.6054V64.6054ZM142.879 147.076C152.579 146.855 161.795 142.79 168.498 135.775C175.202 128.76 178.845 119.369 178.626 109.669V109.359C178.626 88.5304 162.863 72.4866 143.16 72.4866C138.396 72.4929 133.681 73.45 129.292 75.3017C124.902 77.1534 120.927 79.8625 117.598 83.2703C114.268 86.6781 111.653 90.716 109.904 95.1475C108.155 99.579 107.309 104.315 107.414 109.078C107.414 130.47 123.176 146.795 142.879 147.076ZM238.298 66.2942H246.742L246.46 145.951H286.992V153.55H237.735L238.298 66.2942ZM333.716 66.5757H342.16L341.879 154.113H333.435L333.716 66.5757ZM399.017 66.5757H427.165C453.341 66.5757 471.074 82.6196 471.074 110.485C471.074 138.351 453.341 154.113 427.165 154.113H399.017V66.5757ZM426.039 146.513C447.43 146.513 461.786 133.847 462.067 110.485C462.349 87.1231 447.712 74.4569 426.32 74.4569H407.462L407.18 146.513H426.039ZM544.735 154.113C552.016 154.337 559.113 151.804 564.607 147.02C567.335 144.485 569.471 141.381 570.862 137.926C572.254 134.472 572.866 130.754 572.657 127.036V67.6171H555.065V125.741C555.263 128.815 554.253 131.845 552.25 134.185C551.239 135.211 550.02 136.01 548.676 136.53C547.332 137.049 545.892 137.276 544.454 137.197C538.937 137.197 534.912 133.96 532.378 127.486L517.517 135.789C522.396 148.005 531.487 154.113 544.791 154.113H544.735ZM650.174 154.31C659.941 154.31 667.597 151.89 673.086 147.02C675.791 144.645 677.934 141.698 679.36 138.392C680.787 135.087 681.46 131.506 681.333 127.908C681.445 124.889 680.869 121.884 679.65 119.119C678.431 116.354 676.601 113.903 674.296 111.949C669.567 107.896 661.996 104.405 651.581 101.422C647.823 100.576 644.242 99.0803 640.998 97.0027C640.026 96.3249 639.235 95.4185 638.695 94.3633C638.155 93.308 637.883 92.1363 637.902 90.9511C637.868 89.7239 638.132 88.5068 638.671 87.4038C639.21 86.3009 640.009 85.345 640.998 84.618C643.38 82.9179 646.267 82.0746 649.189 82.2255C652.641 81.9929 656.075 82.8883 658.973 84.7768C661.872 86.6654 664.079 89.4447 665.261 92.6962L679.813 84.7306C677.553 79.072 673.538 74.2873 668.357 71.0792C662.791 67.7899 656.412 66.1318 649.949 66.2942C642.299 66.0857 634.838 68.6894 628.979 73.6125C626.2 75.8014 623.968 78.6064 622.458 81.8059C620.949 85.0054 620.204 88.512 620.282 92.0488C620.21 94.9906 620.753 97.915 621.878 100.634C623.002 103.354 624.683 105.808 626.812 107.839C630.734 111.78 637.649 115.242 647.556 118.226C652.027 119.295 656.315 121.021 660.279 123.348C661.319 123.932 662.181 124.788 662.771 125.824C663.362 126.861 663.658 128.039 663.628 129.231C663.621 130.533 663.285 131.813 662.65 132.949C662.015 134.086 661.102 135.044 659.997 135.733C657.241 137.529 653.996 138.424 650.709 138.295C646.778 138.39 642.908 137.308 639.597 135.186C636.287 133.064 633.687 130 632.132 126.388L616.932 134.241C619.433 140.392 623.87 145.559 629.57 148.962C635.803 152.637 642.941 154.49 650.174 154.31" fill="black"/>
+</g>
+<defs>
+<clipPath id="clip0_463_519">
+<rect width="682" height="220" fill="white"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/solidjs.svg b/smoke/astro.build-main/src/icons/logos/solidjs.svg
new file mode 100644
index 000000000..278b45d75
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/solidjs.svg
@@ -0,0 +1,10 @@
+<svg width="683" height="199" viewBox="0 0 683 199" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_463_519)">
+<path d="M5.95809 126.662C12.075 132.619 20.2211 136.038 28.7572 136.232C38.3273 136.232 46.2084 130.603 46.2084 121.033C46.2084 99.0778 2.58043 104.426 2.58043 77.4046C2.58043 64.7384 13.8393 54.0425 29.8831 54.0425C38.4604 53.7874 46.8132 56.8065 53.2452 62.4866L49.0232 69.8048C43.777 65.0325 36.9741 62.3314 29.8831 62.2051C18.6243 62.2051 11.5875 69.5234 11.306 77.1231C11.306 97.9519 54.934 92.0411 54.934 120.751C54.934 133.699 44.8011 144.395 28.4758 144.395C23.3535 144.496 18.2645 143.55 13.5211 141.614C8.77772 139.677 4.47997 136.793 0.891602 133.136L5.95809 126.662ZM144.16 54.6054C150.032 54.5789 155.85 55.7205 161.276 57.9638C166.702 60.207 171.627 63.507 175.766 67.6718C179.905 71.8366 183.174 76.783 185.382 82.2231C187.591 87.6631 188.696 93.4882 188.633 99.3593C188.707 105.274 187.616 111.145 185.421 116.637C183.226 122.129 179.971 127.136 175.841 131.37C171.712 135.604 166.788 138.984 161.352 141.315C155.916 143.646 150.075 144.884 144.16 144.958H143.879C137.965 144.884 132.123 143.646 126.687 141.315C121.251 138.984 116.328 135.604 112.198 131.37C108.068 127.136 104.813 122.129 102.618 116.637C100.423 111.145 99.3321 105.274 99.4065 99.3593V99.0778C99.38 93.2065 100.522 87.3885 102.765 81.9625C105.008 76.5364 108.308 71.6108 112.473 67.4722C116.638 63.3336 121.584 60.0647 127.024 57.8557C132.464 55.6468 138.289 54.5419 144.16 54.6054ZM143.879 137.076C153.579 136.855 162.795 132.79 169.498 125.775C176.202 118.76 179.845 109.369 179.626 99.6689V99.3593C179.626 78.5304 163.863 62.4866 144.16 62.4866C139.396 62.4929 134.681 63.45 130.292 65.3017C125.902 67.1534 121.927 69.8625 118.598 73.2703C115.268 76.6781 112.653 80.716 110.904 85.1475C109.155 89.579 108.309 94.3149 108.414 99.0778C108.414 120.47 124.176 136.795 143.879 137.076ZM239.298 56.2942H247.742L247.46 135.951H287.992V143.55H238.735L239.298 56.2942ZM334.716 56.5757H343.16L342.879 144.113H334.435L334.716 56.5757ZM400.017 56.5757H428.165C454.341 56.5757 472.074 72.6196 472.074 100.485C472.074 128.351 454.341 144.113 428.165 144.113H400.017V56.5757ZM427.039 136.513C448.431 136.513 462.786 123.847 463.067 100.485C463.349 77.1231 448.712 64.4569 427.32 64.4569H408.462L408.18 136.513H427.039ZM545.735 144.113C553.016 144.337 560.113 141.804 565.607 137.02C568.335 134.485 570.471 131.381 571.862 127.926C573.254 124.472 573.866 120.754 573.657 117.036V57.6171H556.065V115.741C556.263 118.815 555.253 121.845 553.25 124.185C552.239 125.211 551.02 126.01 549.676 126.53C548.332 127.049 546.892 127.276 545.454 127.197C539.937 127.197 535.912 123.96 533.378 117.486L518.517 125.789C523.396 138.005 532.487 144.113 545.791 144.113H545.735ZM651.174 144.31C660.941 144.31 668.597 141.89 674.086 137.02C676.791 134.645 678.934 131.698 680.36 128.392C681.786 125.087 682.46 121.506 682.333 117.908C682.445 114.889 681.869 111.884 680.65 109.119C679.431 106.354 677.601 103.903 675.296 101.949C670.567 97.8957 662.996 94.4054 652.581 91.4218C648.823 90.5758 645.242 89.0803 641.998 87.0027C641.026 86.3249 640.235 85.4185 639.695 84.3633C639.155 83.308 638.883 82.1363 638.902 80.9511C638.868 79.7239 639.132 78.5068 639.671 77.4038C640.211 76.3009 641.009 75.345 641.998 74.618C644.38 72.9179 647.267 72.0746 650.189 72.2255C653.641 71.9929 657.075 72.8883 659.974 74.7768C662.872 76.6654 665.079 79.4447 666.261 82.6962L680.813 74.7306C678.553 69.072 674.538 64.2873 669.357 61.0792C663.791 57.7899 657.412 56.1318 650.949 56.2942C643.299 56.0857 635.838 58.6894 629.979 63.6125C627.2 65.8014 624.968 68.6063 623.458 71.8059C621.949 75.0054 621.204 78.512 621.282 82.0488C621.21 84.9906 621.753 87.915 622.878 90.6343C624.002 93.3537 625.683 95.8078 627.812 97.8394C631.734 101.78 638.649 105.242 648.556 108.226C653.027 109.295 657.315 111.021 661.279 113.348C662.319 113.932 663.181 114.788 663.771 115.824C664.362 116.861 664.658 118.039 664.628 119.231C664.621 120.533 664.285 121.813 663.65 122.949C663.015 124.086 662.102 125.044 660.997 125.733C658.241 127.529 654.996 128.424 651.709 128.295C647.778 128.39 643.908 127.308 640.597 125.186C637.287 123.064 634.687 120 633.132 116.388L617.932 124.241C620.433 130.392 624.87 135.559 630.57 138.962C636.803 142.637 643.941 144.49 651.174 144.31Z" fill="#222222"/>
+</g>
+<defs>
+<clipPath id="clip0_463_519">
+<rect width="682" height="199" fill="white" transform="translate(0.539062)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/stackblitz.svg b/smoke/astro.build-main/src/icons/logos/stackblitz.svg
new file mode 100644
index 000000000..924761668
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/stackblitz.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="99" height="20" viewBox="0 0 99 20" fill="currentColor">
+<path d="M6.00084 11.8188H0L10.9693 0L8.01714 8.18289H14.0187L3.04798 20L6.00084 11.8188Z" />
+<path d="M25.0161 13.1569L27.2453 11.8647C27.6492 12.8017 28.3438 13.4316 29.6198 13.4316C30.8476 13.4316 31.1544 12.9471 31.1544 12.5108C31.1544 11.8163 30.5083 11.5418 28.8121 11.0732C27.1322 10.6046 25.4845 9.79716 25.4845 7.63244C25.4845 5.45177 27.326 4.19168 29.2807 4.19168C31.1384 4.19168 32.592 5.08015 33.416 6.74398L31.2354 8.02002C30.8476 7.21234 30.3146 6.71166 29.2807 6.71166C28.473 6.71166 28.0691 7.1154 28.0691 7.56781C28.0691 8.08465 28.3438 8.44012 30.1045 8.97312C31.8168 9.48996 33.739 10.0878 33.739 12.4785C33.739 14.6592 31.9946 15.9514 29.5392 15.9514C27.1645 15.9514 25.6461 14.8206 25.0161 13.1569Z" />
+<path d="M37.778 9.97469V12.834C37.778 13.5286 38.3759 13.593 39.4421 13.5286V15.7254C36.276 16.0485 35.3552 15.0954 35.3552 12.834V9.97469H34.063V7.6486H35.3552V6.11404L37.7782 5.38715V7.6486H39.4423V9.97469H37.778Z" />
+<path d="M48.9398 7.64859V15.7254H46.5168V14.9662C45.9838 15.58 45.192 15.9514 44.1097 15.9514C41.9936 15.9514 40.249 14.0939 40.249 11.6868C40.249 9.2799 41.9936 7.42218 44.1097 7.42218C45.192 7.42218 45.9836 7.79381 46.5168 8.40759V7.64839H48.9398V7.64859ZM46.517 11.6868C46.517 10.4754 45.7093 9.71616 44.5948 9.71616C43.4801 9.71616 42.6725 10.4754 42.6725 11.6868C42.6725 12.8984 43.4801 13.6576 44.5948 13.6576C45.7091 13.6576 46.517 12.8984 46.517 11.6868Z" />
+<path d="M50.3135 11.6868C50.3135 9.2799 52.1387 7.42218 54.5942 7.42218C56.1609 7.42218 57.5503 8.24602 58.245 9.48975L56.1286 10.7175C55.8541 10.152 55.2724 9.8129 54.5619 9.8129C53.5121 9.8129 52.7367 10.5721 52.7367 11.6866C52.7367 12.8012 53.5121 13.5605 54.5619 13.5605C55.2726 13.5605 55.8701 13.2211 56.1286 12.6558L58.245 13.8674C57.5505 15.1273 56.1775 15.9512 54.5942 15.9512C52.1387 15.9514 50.3135 14.0939 50.3135 11.6868Z" />
+<path d="M64.2222 15.7252L61.6376 12.1551V15.7252H59.2144V4.41788H61.6376V11.1861L64.0608 7.64859H66.8874L63.9477 11.687L66.9682 15.7254H64.2222V15.7252Z" />
+<path d="M76.3382 12.4137C76.3382 14.4168 74.7067 15.7252 72.6874 15.7252H67.9385V4.41788H72.3642C74.3353 4.41788 75.9343 5.69392 75.9343 7.64859C75.9343 8.58553 75.5628 9.32858 74.9489 9.86157C75.7888 10.3946 76.3382 11.2667 76.3382 12.4137ZM70.5231 6.84091V8.84385H72.3642C72.9459 8.84385 73.3497 8.42395 73.3497 7.84248C73.3497 7.26101 72.9621 6.84112 72.3642 6.84112H70.5231V6.84091ZM73.7536 12.22C73.7536 11.59 73.3337 11.1378 72.6874 11.1378H70.5231V13.3023H72.6874C73.3337 13.3023 73.7536 12.8499 73.7536 12.22Z" />
+<path d="M77.5498 3.93314H79.9726V15.7252H77.5498V3.93314Z" />
+<path d="M81.5078 5.48384C81.5078 4.69232 82.1701 4.03006 82.9614 4.03006C83.7531 4.03006 84.4154 4.69232 84.4154 5.48384C84.4154 6.27536 83.7531 6.93762 82.9614 6.93762C82.1703 6.93762 81.5078 6.27536 81.5078 5.48384ZM81.75 7.64856H84.1732V15.7253H81.75V7.64856Z" />
+<path d="M89.019 9.97469V12.834C89.019 13.5286 89.6171 13.593 90.6833 13.5286V15.7254C87.5172 16.0485 86.5964 15.0954 86.5964 12.834V9.97469H85.3042V7.6486H86.5964V6.11404L89.0192 5.38715V7.6486H90.6835V9.97469H89.019Z" />
+<path d="M98.2754 13.4639V15.7254H91.814V14.1098L94.8667 9.91005H91.9753V7.64859H98.1136V9.26395L95.0608 13.4639H98.2754Z" />
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/strapi.svg b/smoke/astro.build-main/src/icons/logos/strapi.svg
new file mode 100644
index 000000000..6104f01af
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/strapi.svg
@@ -0,0 +1,6 @@
+<svg width="729" height="220" viewBox="0 0 729 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M157.381 43.9719H51.6963V96.9144H103.698C105.551 96.9144 107.054 98.4161 107.054 100.267V151.506H160.736V47.3306C160.737 46.8898 160.651 46.4532 160.483 46.0457C160.314 45.6382 160.067 45.2679 159.756 44.956C159.444 44.644 159.074 44.3965 158.666 44.2276C158.259 44.0588 157.822 43.9719 157.381 43.9719V43.9719Z" fill="black"/>
+<path opacity="0.405" fill-rule="evenodd" clip-rule="evenodd" d="M51.6901 43.9719V96.9144H2.11145C1.77834 96.9139 1.45291 96.8144 1.17649 96.6287C0.900062 96.4429 0.685101 96.1793 0.558897 95.8713C0.432692 95.5633 0.400935 95.2248 0.467656 94.8987C0.534377 94.5727 0.696568 94.2737 0.933639 94.0399L51.6901 43.9719ZM109.912 201.629C109.676 201.861 109.377 202.018 109.052 202.08C108.727 202.142 108.391 202.108 108.086 201.98C107.78 201.852 107.52 201.638 107.336 201.363C107.152 201.088 107.054 200.764 107.054 200.434V151.506H160.736L109.912 201.623V201.629Z" fill="black"/>
+<path opacity="0.405" d="M51.6895 96.9144H105.378C106.298 96.9144 107.053 97.6622 107.053 98.5877V151.506H55.0511C54.1612 151.506 53.3077 151.152 52.6784 150.524C52.0491 149.895 51.6956 149.042 51.6956 148.153V96.9144H51.6895Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M702.073 40.6316C705.072 43.5981 708.612 45.0752 712.697 45.0752C716.912 45.0752 720.519 43.5981 723.519 40.6316C726.518 37.6652 728.015 34.1716 728.015 30.1326C728.015 26.0997 726.518 22.5694 723.519 19.5416C722.125 18.0816 720.444 16.9247 718.582 16.1433C716.72 15.3618 714.717 14.9726 712.697 15C708.612 15 705.072 16.5139 702.073 19.5355C699.073 22.5694 697.576 26.0936 697.576 30.1387C697.576 34.1716 699.073 37.6652 702.073 40.6316V40.6316ZM376.578 79.3181C376.578 79.6245 376.321 79.882 376.008 79.882H354.936V119.23C354.936 122.509 355.77 124.906 357.427 126.42C359.083 127.934 361.512 128.779 364.702 128.969C367.622 129.147 371.18 129.135 375.382 128.939L375.977 128.908C376.054 128.904 376.131 128.915 376.203 128.942C376.275 128.968 376.341 129.009 376.396 129.062C376.452 129.115 376.496 129.178 376.527 129.249C376.557 129.319 376.572 129.395 376.572 129.472V150.501C376.573 150.64 376.522 150.775 376.429 150.879C376.336 150.983 376.208 151.049 376.069 151.065L375.683 151.107C359.181 152.842 347.507 151.23 340.674 146.278C333.717 141.234 330.245 132.218 330.245 119.23V79.882H314.148C313.998 79.882 313.855 79.8225 313.749 79.7168C313.643 79.611 313.584 79.4676 313.584 79.3181V56.99C313.584 56.6836 313.835 56.4261 314.148 56.4261H330.239V40.8155C330.239 40.3619 330.509 39.9574 330.92 39.7736L354.145 29.679C354.231 29.64 354.325 29.6233 354.42 29.6302C354.514 29.6372 354.605 29.6677 354.684 29.719C354.764 29.7702 354.829 29.8405 354.874 29.9235C354.919 30.0065 354.942 30.0995 354.942 30.1939V56.4261H376.008C376.315 56.4261 376.572 56.6774 376.572 56.99V79.3181H376.578ZM421.36 72.6987C423.654 66.6432 427.451 62.1016 432.746 59.0739C437.969 56.1029 443.875 54.5399 449.885 54.5384C450.198 54.5384 450.456 54.7897 450.456 55.1084V80.7584C450.455 80.8868 450.428 81.0136 450.376 81.1309C450.324 81.2482 450.248 81.3532 450.152 81.4392C450.057 81.5252 449.945 81.5904 449.822 81.6304C449.7 81.6704 449.571 81.6845 449.443 81.6716C442.321 81.0342 435.923 82.5848 430.255 86.3174C424.323 90.2216 421.36 96.7184 421.36 105.802V150.446C421.36 150.52 421.345 150.594 421.316 150.663C421.288 150.732 421.246 150.794 421.193 150.846C421.139 150.899 421.077 150.94 421.007 150.968C420.938 150.996 420.864 151.01 420.789 151.009H397.221C397.071 151.009 396.928 150.95 396.822 150.844C396.716 150.738 396.657 150.595 396.657 150.446V56.9839C396.657 56.6774 396.908 56.42 397.221 56.42H420.789C421.096 56.42 421.354 56.6713 421.354 56.9839V72.6865L421.36 72.6987ZM538.135 56.4261C538.061 56.4253 537.987 56.4393 537.918 56.4673C537.848 56.4953 537.785 56.5367 537.732 56.5891C537.679 56.6416 537.637 56.704 537.608 56.7728C537.58 56.8416 537.565 56.9154 537.565 56.99V67.5932C530.167 58.3813 519.763 53.7784 506.359 53.7784C493.599 53.7784 482.649 58.6019 473.527 68.249C464.399 77.8961 459.835 89.719 459.835 103.718C459.835 117.716 464.399 129.539 473.527 139.186C482.649 148.834 493.599 153.657 506.359 153.657C519.763 153.657 530.161 149.054 537.565 139.848V150.446C537.565 150.752 537.823 151.009 538.135 151.009H561.698C562.011 151.009 562.268 150.758 562.268 150.446V56.9839C562.268 56.9093 562.254 56.8355 562.225 56.7667C562.196 56.6979 562.154 56.6354 562.101 56.583C562.048 56.5305 561.985 56.4891 561.916 56.4612C561.847 56.4332 561.773 56.4192 561.698 56.42H538.135V56.4261ZM492.004 123.012C496.979 127.934 503.292 130.391 510.96 130.391C518.616 130.391 524.965 127.897 530.007 122.914C535.05 117.937 537.565 111.538 537.565 103.718C537.565 95.8971 535.05 89.4984 530.007 84.5155C524.965 79.5387 518.616 77.0442 510.954 77.0442C503.298 77.0442 496.979 79.5387 491.998 84.5216C487.029 89.4984 484.533 95.8971 484.533 103.718C484.533 111.538 487.023 117.968 492.004 123.012V123.012ZM672.051 68.249C662.923 58.6019 651.911 53.7784 639.023 53.7784C625.619 53.7784 615.282 58.3813 608.007 67.5871V56.99C608.007 56.8405 607.947 56.697 607.842 56.5913C607.736 56.4855 607.592 56.4261 607.443 56.4261H583.874C583.724 56.4261 583.581 56.4855 583.475 56.5913C583.369 56.697 583.31 56.8405 583.31 56.99V188.274C583.31 188.586 583.561 188.844 583.874 188.844H607.443C607.749 188.844 608.007 188.586 608.007 188.274V139.848C615.282 149.054 625.619 153.657 639.023 153.657C651.911 153.657 662.923 148.834 672.051 139.186C681.173 129.539 685.737 117.716 685.737 103.718C685.737 89.719 681.173 77.8961 672.051 68.249V68.249ZM615.472 123.012C620.454 127.934 626.766 130.391 634.428 130.391C642.084 130.391 648.433 127.897 653.475 122.914C658.518 117.937 661.039 111.538 661.039 103.718C661.039 95.8971 658.518 89.4984 653.475 84.5155C648.433 79.5387 642.084 77.0442 634.428 77.0442C626.766 77.0442 620.454 79.5387 615.472 84.5216C610.497 89.4984 608.007 95.8971 608.007 103.718C608.007 111.538 610.497 117.968 615.472 123.012V123.012ZM701.011 151.009C700.862 151.009 700.718 150.95 700.612 150.844C700.506 150.738 700.447 150.595 700.447 150.446V56.9839C700.447 56.6774 700.698 56.42 701.011 56.42H724.58C724.893 56.42 725.144 56.6713 725.144 56.9839V150.452C725.144 150.601 725.085 150.745 724.979 150.85C724.873 150.956 724.73 151.015 724.58 151.015H701.011V151.009ZM260.65 89.4371C257.263 87.862 255.576 85.8087 255.576 83.2897C255.576 80.8932 256.625 78.9994 258.736 77.6142C260.84 76.229 263.49 75.5303 266.68 75.5303C272.796 75.5303 277.415 77.89 280.544 82.6032C280.648 82.7633 280.805 82.8816 280.988 82.9376C281.171 82.9936 281.367 82.9837 281.544 82.9097L302.388 73.7958C302.46 73.7635 302.525 73.7165 302.578 73.6577C302.63 73.5989 302.67 73.5298 302.695 73.4547C302.719 73.3796 302.727 73.3002 302.719 73.2217C302.71 73.1432 302.686 73.0674 302.646 72.999C302.406 72.5994 302.161 72.2031 301.91 71.81C298.346 66.2632 293.727 62.1261 287.929 58.9819C281.55 55.5129 274.464 53.7784 266.68 53.7784C256.337 53.7784 247.694 56.4568 240.731 61.8197C233.781 67.1765 230.302 74.5252 230.302 83.8536C230.302 90.0378 231.996 95.1739 235.376 99.2742C238.642 103.289 242.898 106.385 247.724 108.259C252.571 110.147 257.423 111.728 262.275 112.985C267.121 114.247 271.244 115.669 274.624 117.245C278.004 118.82 279.697 120.867 279.697 123.392C279.697 128.816 275.293 131.525 266.49 131.525C258.104 131.525 252.294 128.461 249.062 122.344C248.932 122.086 248.709 121.887 248.437 121.788C248.166 121.689 247.867 121.697 247.602 121.811L226.818 130.912C226.749 130.943 226.686 130.987 226.634 131.042C226.582 131.097 226.542 131.162 226.516 131.233C226.489 131.303 226.478 131.379 226.481 131.454C226.485 131.53 226.503 131.604 226.536 131.672L226.769 132.144C234.032 146.486 247.27 153.657 266.49 153.657C277.464 153.657 286.623 151.04 293.96 145.812C301.303 140.572 304.971 133.1 304.971 123.392C304.971 116.956 303.278 111.6 299.898 107.309C296.711 103.169 292.436 99.9949 287.549 98.1403C282.793 96.3407 277.934 94.8242 272.998 93.5987C268.146 92.3974 264.03 91.0123 260.65 89.431V89.4371Z" fill="black"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/svelte.svg b/smoke/astro.build-main/src/icons/logos/svelte.svg
new file mode 100644
index 000000000..f0ad2f26d
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/svelte.svg
@@ -0,0 +1,5 @@
+<svg width="822" height="220" viewBox="0 0 822 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M273.281 157.922C265.591 158.117 258.021 155.982 251.566 151.797C245.543 147.819 241.072 141.89 238.904 135.004L252.088 130.145C253.919 134.372 256.91 137.994 260.714 140.591C264.581 143.183 269.15 144.525 273.804 144.437C278.273 144.673 282.684 143.34 286.276 140.671C287.837 139.357 289.071 137.697 289.879 135.824C290.686 133.95 291.046 131.913 290.929 129.876C290.948 127.979 290.508 126.106 289.647 124.416C288.9 122.903 287.923 121.515 286.75 120.301C285.263 118.948 283.576 117.832 281.749 116.993C279.501 115.869 277.65 115.014 276.162 114.429C274.674 113.843 272.49 113.052 269.625 112.071C266.017 110.804 263.294 109.823 261.522 109.095C259.087 108.065 256.724 106.876 254.447 105.534C251.987 104.233 249.753 102.544 247.831 100.532C246.174 98.5649 244.839 96.3482 243.874 93.964C242.01 89.4301 241.618 84.4248 242.754 79.656C243.89 74.8872 246.497 70.5962 250.205 67.3899C255.607 62.6312 262.935 60.2518 272.189 60.2518C279.934 60.2518 286.297 61.9559 291.277 65.364C296.126 68.5828 299.684 73.4081 301.327 78.9914L288.381 83.3122C287.06 80.3834 284.843 77.9501 282.05 76.364C278.697 74.5179 274.905 73.6205 271.081 73.7683C267.321 73.5499 263.595 74.5914 260.493 76.7281C259.226 77.7113 258.217 78.9862 257.55 80.4442C256.883 81.9021 256.578 83.4997 256.663 85.1007C256.674 86.327 256.943 87.5372 257.453 88.6525C257.963 89.7678 258.702 90.7633 259.622 91.5741C261.418 93.3343 263.521 94.7505 265.827 95.7525C267.979 96.6547 271.271 97.8576 275.671 99.3928C278.362 100.39 280.419 101.118 281.67 101.624C282.92 102.131 284.835 102.938 287.399 104.109C289.418 105.006 291.361 106.064 293.208 107.275C294.861 108.467 296.447 109.751 297.956 111.121C299.579 112.534 300.968 114.195 302.071 116.043C303.122 117.963 303.935 120.004 304.493 122.121C305.184 124.599 305.525 127.161 305.506 129.734C305.506 138.555 302.493 145.456 296.468 150.436C290.443 155.416 282.714 157.912 273.281 157.922ZM359.73 156.34L327.363 61.8978H342.463L363.909 127.708C365.092 131.25 366.085 134.854 366.884 138.502C367.669 134.852 368.657 131.248 369.844 127.708L391.021 61.8978H405.993L373.753 156.308L359.73 156.34ZM434.578 156.34V61.8978H493.139V75.1137H448.617V101.007H477.343V114.223H448.617V143.029H496.099V156.245L434.578 156.34ZM531.821 156.34V61.8978H545.86V142.823H591.981V156.308L531.821 156.34ZM644.844 75.4144V156.308H630.821V75.3827H604.12V61.8978H671.513V75.3827L644.844 75.4144ZM700.556 156.34V61.8978H759.117V75.1137H714.579V101.007H743.306V114.223H714.579V143.029H762.061V156.245L700.556 156.34Z" fill="black"/>
+<path d="M174.899 43.9338C158.438 20.3827 125.929 13.4029 102.425 28.3755L61.1475 54.6806C55.5764 58.1797 50.796 62.8019 47.1115 68.2523C43.4271 73.7026 40.9196 79.8613 39.749 86.3352C37.7751 97.2619 39.5017 108.535 44.6554 118.37C41.1233 123.728 38.7163 129.748 37.5806 136.065C36.4017 142.682 36.5575 149.468 38.0388 156.023C39.5201 162.579 42.2971 168.773 46.2065 174.24C62.667 197.791 95.1763 204.771 118.68 189.799L159.958 163.604C165.522 160.098 170.298 155.473 173.981 150.024C177.665 144.575 180.176 138.42 181.356 131.95C183.323 121.026 181.591 109.759 176.434 99.9309C179.964 94.5699 182.376 88.5514 183.525 82.236C184.7 75.6189 184.542 68.8338 183.061 62.2784C181.58 55.723 178.805 49.5293 174.899 44.0604" fill="black"/>
+<path d="M98.3892 176.519C91.8908 178.206 85.0315 177.858 78.737 175.523C72.4425 173.188 67.0158 168.978 63.1893 163.462C60.8398 160.175 59.1715 156.451 58.2827 152.51C57.3938 148.569 57.3024 144.489 58.0137 140.512C58.2472 139.219 58.5752 137.944 58.995 136.698L59.7706 134.324L61.8914 135.906C66.7664 139.465 72.2087 142.173 77.9878 143.915L79.5705 144.374L79.4281 145.957C79.2758 148.127 79.886 150.282 81.1533 152.05C82.308 153.71 83.9434 154.976 85.8393 155.677C87.7353 156.379 89.8007 156.483 91.7576 155.976C92.6524 155.735 93.506 155.362 94.29 154.868L135.504 128.563C136.517 127.926 137.384 127.084 138.052 126.092C138.72 125.1 139.173 123.979 139.382 122.801C139.593 121.601 139.562 120.371 139.29 119.183C139.018 117.995 138.511 116.874 137.799 115.885C136.645 114.225 135.009 112.96 133.113 112.258C131.217 111.556 129.152 111.452 127.195 111.96C126.299 112.197 125.445 112.571 124.663 113.068L108.835 123.118C106.247 124.759 103.424 125.997 100.463 126.79C93.975 128.466 87.1296 128.115 80.8477 125.783C74.5658 123.451 69.1488 119.251 65.3259 113.748C62.9835 110.458 61.3219 106.733 60.4386 102.792C59.5552 98.8514 59.468 94.7737 60.1821 90.7986C60.881 86.8968 62.3864 83.1839 64.6021 79.8971C66.8178 76.6104 69.695 73.8222 73.0497 71.7108L114.391 45.4058C116.964 43.7677 119.771 42.5296 122.716 41.7338C129.212 40.0464 136.069 40.3938 142.362 42.7289C148.654 45.0641 154.078 49.2746 157.9 54.7914C160.252 58.0771 161.923 61.8002 162.815 65.7416C163.706 69.6829 163.8 73.7628 163.091 77.741C162.844 79.0421 162.517 80.3267 162.11 81.587L161.319 83.9611L159.214 82.3784C154.329 78.7923 148.87 76.0628 143.07 74.3065L141.487 73.8475L141.63 72.2647C141.812 70.0839 141.218 67.9087 139.952 66.1237C138.79 64.4928 137.159 63.2543 135.276 62.5729C133.393 61.8915 131.347 61.7996 129.411 62.3093C128.515 62.5469 127.661 62.9205 126.878 63.4173L85.5849 89.6748C84.5764 90.3122 83.7111 91.1519 83.0436 92.1408C82.3762 93.1298 81.9211 94.2464 81.7072 95.4201C81.5003 96.6229 81.5336 97.8548 81.8053 99.0446C82.077 100.234 82.5815 101.359 83.29 102.353C84.4393 103.997 86.0615 105.253 87.9413 105.954C89.8212 106.655 91.8697 106.768 93.8151 106.278C94.7088 106.034 95.5619 105.661 96.3475 105.17L112.175 95.1353C114.762 93.4759 117.592 92.2316 120.563 91.4475C127.058 89.7561 133.915 90.0999 140.207 92.4324C146.5 94.7649 151.925 98.9735 155.748 104.489C158.098 107.776 159.768 111.499 160.66 115.44C161.551 119.381 161.646 123.461 160.939 127.439C160.24 131.341 158.735 135.054 156.519 138.34C154.303 141.627 151.426 144.415 148.071 146.527L106.778 172.832C104.184 174.478 101.356 175.722 98.3892 176.519" fill="white"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/tailwindcss.svg b/smoke/astro.build-main/src/icons/logos/tailwindcss.svg
new file mode 100644
index 000000000..1bde4f873
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/tailwindcss.svg
@@ -0,0 +1,11 @@
+<svg width="902" height="220" viewBox="0 0 902 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_638_492)">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M92.3469 53.242C67.5964 53.242 52.1315 65.5988 45.9411 90.3125C55.223 77.9557 66.0506 73.3228 78.424 76.4101C85.4837 78.1712 90.5319 83.2864 96.1149 88.9497C105.215 98.1716 115.748 108.844 138.749 108.844C163.496 108.844 178.964 96.4873 185.151 71.7772C175.873 84.1341 165.045 88.767 152.672 85.6759C145.609 83.9149 140.56 78.7997 134.977 73.1401C125.877 63.9108 115.348 53.242 92.3469 53.242ZM45.9411 108.844C21.1943 108.844 5.72576 121.201 -0.460938 145.915C8.82093 133.558 19.6486 128.925 32.0183 132.012C39.0816 133.773 44.1299 138.888 49.7128 144.552C58.8128 153.774 69.3422 164.446 92.3469 164.446C117.094 164.446 132.562 152.093 138.749 127.379C129.467 139.736 118.639 144.369 106.266 141.282C99.2064 139.517 94.1581 134.402 88.5752 128.742C79.4752 119.52 68.9421 108.844 45.9411 108.844V108.844Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M277.945 100.101H261.749V131.402C261.749 139.751 267.234 139.619 277.945 139.097V151.75C256.261 154.358 247.641 148.359 247.641 131.402V100.101H235.624V86.5345H247.641V69.0187L261.749 64.8425V86.5345H277.945V100.101ZM339.681 86.5345H353.786V151.75H339.681V142.359C334.717 149.269 327.01 153.445 316.822 153.445C299.059 153.445 284.299 138.446 284.299 119.14C284.299 99.7098 299.059 84.8392 316.822 84.8392C327.01 84.8392 334.717 89.0118 339.681 95.7967V86.5345V86.5345ZM319.044 140.01C330.8 140.01 339.681 131.27 339.681 119.14C339.681 107.01 330.8 98.2739 319.044 98.2739C307.289 98.2739 298.408 107.014 298.408 119.14C298.408 131.27 307.289 140.01 319.044 140.01ZM377.296 76.7536C372.335 76.7536 368.287 72.581 368.287 67.7545C368.299 65.3625 369.253 63.0725 370.942 61.3859C372.63 59.6993 374.915 58.7535 377.296 58.7554C379.678 58.7525 381.964 59.6979 383.653 61.3846C385.342 63.0714 386.297 65.3619 386.309 67.7545C386.309 72.5774 382.261 76.7536 377.296 76.7536ZM370.244 151.75V86.5345H384.352V151.75H370.244ZM400.679 151.75V56.5303H414.784V151.746H400.679V151.75ZM506.348 86.5345H521.238L500.732 151.75H486.886L473.301 107.795L459.586 151.75H445.743L425.233 86.5345H440.123L452.795 131.53L466.511 86.5345H479.964L493.545 131.53L506.348 86.5345V86.5345ZM538.74 76.7536C533.775 76.7536 529.727 72.581 529.727 67.7545C529.738 65.3619 530.693 63.0714 532.383 61.3846C534.072 59.6979 536.358 58.7525 538.74 58.7554C541.121 58.7525 543.407 59.6979 545.097 61.3846C546.786 63.0714 547.741 65.3619 547.752 67.7545C547.752 72.5774 543.704 76.7536 538.74 76.7536ZM531.687 151.75V86.5345H545.792V151.75H531.687V151.75ZM596.471 84.8392C611.1 84.8392 621.549 94.7517 621.549 111.709V151.746H607.444V113.141C607.444 103.228 601.698 98.0145 592.816 98.0145C583.541 98.0145 576.227 103.491 576.227 116.795V151.75H562.119V86.5345H576.227V94.8833C580.537 88.102 587.589 84.8392 596.471 84.8392V84.8392ZM688.424 60.4507H702.533V151.746H688.424V142.356C683.463 149.269 675.756 153.441 665.569 153.441C647.805 153.441 633.046 138.443 633.046 119.137C633.046 99.7061 647.805 84.8356 665.569 84.8356C675.756 84.8356 683.463 89.0081 688.424 95.793V60.4507V60.4507ZM667.787 140.01C679.543 140.01 688.424 131.27 688.424 119.14C688.424 107.01 679.543 98.2739 667.787 98.2739C656.032 98.2739 647.151 107.014 647.151 119.14C647.151 131.27 656.032 140.01 667.787 140.01ZM749.815 153.445C730.091 153.445 715.332 138.446 715.332 119.14C715.332 99.7098 730.091 84.8392 749.815 84.8392C762.614 84.8392 773.718 91.489 778.941 101.665L766.793 108.709C763.92 102.578 757.522 98.6648 749.684 98.6648C738.191 98.6648 729.44 107.404 729.44 119.14C729.44 130.88 738.191 139.619 749.684 139.619C757.522 139.619 763.92 135.575 767.055 129.575L779.203 136.488C773.718 146.791 762.614 153.441 749.815 153.441V153.445ZM802.451 104.533C802.451 116.404 837.589 109.228 837.589 133.36C837.589 146.404 826.223 153.445 812.118 153.445C799.058 153.445 789.652 147.573 785.473 138.183L797.621 131.143C799.709 137.01 804.935 140.533 812.118 140.533C818.389 140.533 823.219 138.446 823.219 133.225C823.219 121.621 788.084 128.143 788.084 104.796C788.084 92.5339 798.665 84.8392 811.987 84.8392C822.699 84.8392 831.58 89.7973 836.152 98.4054L824.266 105.055C821.913 99.9692 817.341 97.6199 811.987 97.6199C806.892 97.6199 802.451 99.8377 802.451 104.533V104.533ZM862.667 104.533C862.667 116.404 897.801 109.228 897.801 133.36C897.801 146.404 886.439 153.445 872.33 153.445C859.27 153.445 849.868 147.573 845.685 138.183L857.833 131.143C859.924 137.01 865.147 140.533 872.33 140.533C878.601 140.533 883.435 138.446 883.435 133.225C883.435 121.621 848.3 128.143 848.3 104.796C848.3 92.5339 858.877 84.8392 872.203 84.8392C882.911 84.8392 891.793 89.7973 896.364 98.4054L884.478 105.055C882.129 99.9692 877.557 97.6199 872.203 97.6199C867.108 97.6199 862.667 99.8377 862.667 104.533V104.533Z" fill="black"/>
+</g>
+<defs>
+<clipPath id="clip0_638_492">
+<rect width="902" height="220" fill="white"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/trivago.svg b/smoke/astro.build-main/src/icons/logos/trivago.svg
new file mode 100644
index 000000000..4cd4ac852
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/trivago.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="80" height="24" viewBox="0 0 80 24">
+ <title>trivago</title>
+ <path d="M25.1 5.4h4l3.1 8.3h.1l2.8-8.3h3.8l-4.8 12.2h-4z" />
+ <path
+ d="M10.4 8.4H6.7v4.1c0 .7.1 1.6.7 2 .6.4 1.5.3 2.2.2.4 0 .6-.1.8-.3v3.1c-.5.1-.9.2-1.4.3-2.6.3-6.4-.2-6.4-3.6V8.4H0v-3h2.6V1.8h4.1v3.6h3.7v3zM20.9 5.4h3.7v12.2h-3.7V5.4zm-.2-3.3c0-1.1.9-2 2-2s2 .9 2 2-.9 2-2 2c-1 0-2-.9-2-2" />
+ <path
+ d="M67.1 11.5c0 1.6 1 3.1 2.7 3.1 1.8 0 2.7-1.4 2.7-3.1 0-1.6-1-3.1-2.7-3.1-1.8 0-2.7 1.4-2.7 3.1m-3.4 0c0-2.6 1.4-5.1 3.9-6 2.5-.9 5.5-.2 7.1 1.9 1.5 2 1.7 5 .5 7.3-1.2 2.4-4 3.5-6.6 3-3.1-.5-4.9-3.2-4.9-6.2" />
+ <path
+ d="M59.7 5.3V7h-.1c-.1-.1-.2-.2-.4-.5-2.4-2.1-6.6-1.7-8.1 1.3-.8 1.5-.9 3.4-.7 5.1.2 1.5.8 3.2 2.1 4.1 1.5 1 3.5 1.2 5.2.5.8-.3 1.3-.9 1.5-1.2v1.2c0 .9-.2 1.6-.7 2.1-1.1 1.1-3.1 1-4.5.7-.7-.2-1.5-.5-2.2-1L50.1 22c1 .7 1.9 1.1 2.9 1.4 2.7.7 6.4.7 8.4-1.4 1.2-1.2 1.6-2.9 1.6-5.3V5.3h-3.3zm-.9 8.4c-1 1.2-3 1.2-4 0s-1-3.3 0-4.5c1-1.2 3-1.2 4 0s1 3.3 0 4.5c-.5.6.5-.6 0 0z" />
+ <path
+ d="M11.4 5.4h3.8v2c.4-.8.9-1.3 1.4-1.7 1.2-.8 3.1-.5 3.3-.4v3.4c-.8-.2-2.4-.5-3.5.2-.7.4-1.3 1-1.3 3.7v5.1h-3.8V5.4z" />
+ <path
+ d="M42.4 12.7c-.7.5-1.3 1.4-.6 2.1.7.7 1.9.6 2.7.3.9-.3 1.6-1 1.6-2.1v-.8c.1.1-2.7-.1-3.7.5zm3.8 3.4c-.5.6-1 1.1-1.7 1.4-2.7 1.1-6.5 0-6.5-3.3 0-3.5 3.8-4.2 6.5-4.3h1.7c0-.7-.2-1.2-.7-1.6-.9-.8-2.3-.7-3.4-.2-.5.3-1 .6-1.4 1.1l-2-2.1c.7-.6 1.5-1.1 2.5-1.5 1.6-.6 3.6-.7 5.2-.2 1.6.4 2.6 1.7 3 3.3.2.8.2 1.7.2 2.7v6.2h-3.4v-1.5z" />
+ <path fill="none" d="M0 0h80v24H0z" />
+</svg> \ No newline at end of file
diff --git a/smoke/astro.build-main/src/icons/logos/typescript.svg b/smoke/astro.build-main/src/icons/logos/typescript.svg
new file mode 100644
index 000000000..aaf07f4d3
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/typescript.svg
@@ -0,0 +1,3 @@
+<svg width="174" height="220" viewBox="0 0 174 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M16.8369 35H157.164C160.306 35 162.853 37.5184 162.853 40.625V179.375C162.853 182.482 160.306 185 157.164 185H16.8369C13.695 185 11.1479 182.482 11.1479 179.375V40.625C11.1479 37.5184 13.695 35 16.8369 35V35ZM95.4797 114.802V102.5H41.4888V114.802H60.7645V169.579H76.1095V114.802H95.4797ZM101.597 168.132C104.072 169.38 106.999 170.316 110.377 170.939C113.756 171.563 117.317 171.875 121.06 171.875C124.709 171.875 128.174 171.532 131.458 170.846C134.742 170.16 137.62 169.029 140.095 167.454C142.569 165.879 144.529 163.821 145.972 161.279C147.415 158.737 148.137 155.595 148.137 151.853C148.137 149.14 147.725 146.762 146.9 144.719C146.075 142.676 144.886 140.86 143.331 139.269C141.777 137.678 139.913 136.252 137.739 134.989C135.566 133.726 133.116 132.533 130.388 131.41C128.389 130.599 126.596 129.812 125.01 129.048C123.424 128.284 122.075 127.504 120.965 126.709C119.855 125.913 118.999 125.072 118.396 124.182C117.793 123.294 117.492 122.288 117.492 121.165C117.492 120.136 117.761 119.208 118.3 118.382C118.84 117.555 119.601 116.846 120.584 116.253C121.568 115.661 122.773 115.201 124.201 114.873C125.629 114.546 127.215 114.382 128.96 114.382C130.229 114.382 131.569 114.476 132.981 114.663C134.393 114.85 135.812 115.139 137.24 115.528C138.668 115.918 140.056 116.409 141.404 117.002C142.752 117.595 143.997 118.281 145.139 119.06V105.073C142.823 104.2 140.293 103.552 137.549 103.132C134.805 102.711 131.656 102.5 128.103 102.5C124.487 102.5 121.06 102.882 117.824 103.646C114.589 104.41 111.741 105.603 109.283 107.225C106.824 108.847 104.881 110.913 103.453 113.423C102.025 115.934 101.312 118.935 101.312 122.428C101.312 126.888 102.62 130.693 105.238 133.843C107.855 136.993 111.829 139.659 117.158 141.842C119.252 142.684 121.203 143.511 123.012 144.322C124.82 145.132 126.382 145.975 127.699 146.848C129.015 147.721 130.054 148.672 130.816 149.701C131.577 150.73 131.958 151.9 131.958 153.21C131.958 154.177 131.72 155.073 131.244 155.899C130.768 156.726 130.046 157.443 129.079 158.051C128.111 158.659 126.906 159.135 125.462 159.478C124.019 159.821 122.329 159.993 120.394 159.993C117.095 159.993 113.827 159.424 110.591 158.286C107.356 157.147 104.357 155.44 101.597 153.163V168.132Z" fill="black"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/vercel-grid.svg b/smoke/astro.build-main/src/icons/logos/vercel-grid.svg
new file mode 100644
index 000000000..68038a7f0
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/vercel-grid.svg
@@ -0,0 +1,3 @@
+<svg width="569" height="220" viewBox="0 0 569 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M284.334 83.5571C262.216 83.5571 246.268 97.9825 246.268 119.621C246.268 141.259 264.219 155.684 286.338 155.684C299.701 155.684 311.482 150.395 318.775 141.479L303.448 132.623C299.401 137.051 293.25 139.636 286.338 139.636C276.741 139.636 268.587 134.627 265.561 126.613H321.7C322.141 124.369 322.401 122.045 322.401 119.6C322.401 97.9825 306.453 83.5571 284.334 83.5571V83.5571ZM265.381 112.608C267.886 104.614 274.738 99.5853 284.314 99.5853C293.911 99.5853 300.763 104.614 303.248 112.608H265.381V112.608ZM500.074 83.5571C477.955 83.5571 462.007 97.9825 462.007 119.621C462.007 141.259 479.958 155.684 502.077 155.684C515.441 155.684 527.221 150.395 534.514 141.479L519.187 132.623C515.14 137.051 508.989 139.636 502.077 139.636C492.48 139.636 484.326 134.627 481.301 126.613H537.439C537.88 124.369 538.14 122.045 538.14 119.6C538.14 97.9825 522.192 83.5571 500.074 83.5571V83.5571ZM481.14 112.608C483.645 104.614 490.497 99.5853 500.074 99.5853C509.67 99.5853 516.522 104.614 519.007 112.608H481.14V112.608ZM402.943 119.621C402.943 131.642 410.797 139.656 422.978 139.656C431.233 139.656 437.423 135.909 440.609 129.798L455.996 138.674C449.625 149.293 437.684 155.684 422.978 155.684C400.839 155.684 384.911 141.259 384.911 119.621C384.911 97.9825 400.859 83.5571 422.978 83.5571C437.684 83.5571 449.605 89.9484 455.996 100.567L440.609 109.443C437.423 103.332 431.233 99.5853 422.978 99.5853C410.817 99.5853 402.943 107.599 402.943 119.621ZM568.193 61.5184V153.68H550.162V61.5184H568.193ZM75.7879 51.5008L149.818 179.726H1.75781L75.7879 51.5008ZM260.873 61.5184L205.356 157.687L149.838 61.5184H170.655L205.356 121.624L240.057 61.5184H260.873V61.5184ZM378.901 85.5607V104.975C376.897 104.394 374.773 103.993 372.489 103.993C360.849 103.993 352.454 112.007 352.454 124.028V153.68H334.422V85.5607H352.454V103.993C352.454 93.8152 364.295 85.5607 378.901 85.5607Z" fill="currentColor"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/vercel.svg b/smoke/astro.build-main/src/icons/logos/vercel.svg
new file mode 100644
index 000000000..511fe50a7
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/vercel.svg
@@ -0,0 +1,3 @@
+<svg width="149" height="41" viewBox="0 0 149 41" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M73.1834 11.8477C67.8717 11.8477 64.0355 15.3207 64.0355 20.5188C64.0355 25.717 68.3484 29.19 73.6601 29.19C76.8834 29.19 79.6981 27.9188 81.4687 25.7851L77.7914 23.6514C76.8153 24.7182 75.3398 25.3311 73.6828 25.3311C71.3675 25.3311 69.4153 24.128 68.6889 22.1986H82.1951C82.3086 21.6538 82.354 21.109 82.354 20.5188C82.3313 15.298 78.5178 11.8477 73.1834 11.8477ZM68.6208 18.8164C69.2337 16.8869 70.8681 15.6839 73.1834 15.6839C75.4987 15.6839 77.1331 16.8869 77.746 18.8164H68.6208ZM125.051 11.8477C119.74 11.8477 115.904 15.3207 115.904 20.5188C115.904 25.717 120.217 29.19 125.528 29.19C128.752 29.19 131.566 27.9188 133.337 25.7851L129.659 23.6514C128.683 24.7182 127.208 25.3311 125.551 25.3311C123.236 25.3311 121.283 24.128 120.557 22.1986H134.063C134.177 21.6538 134.222 21.109 134.222 20.5188C134.222 15.298 130.386 11.8477 125.051 11.8477ZM120.512 18.8164C121.125 16.8869 122.759 15.6839 125.074 15.6839C127.39 15.6839 129.024 16.8869 129.637 18.8164H120.512ZM101.717 20.5188C101.717 23.4017 103.601 25.3311 106.529 25.3311C108.504 25.3311 110.002 24.4231 110.774 22.9704L114.474 25.1041C112.953 27.6464 110.07 29.19 106.529 29.19C101.194 29.19 97.3809 25.717 97.3809 20.5188C97.3809 15.3207 101.217 11.8477 106.529 11.8477C110.07 11.8477 112.93 13.3912 114.474 15.9336L110.774 18.0673C110.002 16.5918 108.526 15.7066 106.529 15.7066C103.601 15.6839 101.717 17.6133 101.717 20.5188ZM141.44 6.53602V28.6906H137.105V6.53602H141.44ZM23.0405 4.12988L40.8368 34.9557H5.24414L23.0405 4.12988ZM67.554 6.53602L54.2067 29.6667L40.8595 6.53602H45.876L54.2294 20.9955L62.5828 6.53602H67.554ZM95.9282 12.3244V17.0004C95.4515 16.8642 94.9294 16.7734 94.3846 16.7734C91.5926 16.7734 89.5724 18.7029 89.5724 21.5857V28.7133H85.2368V12.3244H89.5724V16.7507C89.5724 14.2992 92.4098 12.3244 95.9282 12.3244Z" fill="currentColor"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/vue.svg b/smoke/astro.build-main/src/icons/logos/vue.svg
new file mode 100644
index 000000000..25124416a
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/vue.svg
@@ -0,0 +1,11 @@
+<svg width="180" height="220" viewBox="0 0 180 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_463_377)">
+<path d="M111.16 37.0008L90.3601 73.0269L69.561 37.0008H0.295898L90.3608 192.999L180.426 37.0008H111.16Z" fill="black"/>
+<path d="M111.16 37.0007L90.3604 73.0268L69.5613 37.0007H36.3223L90.3611 130.598L144.4 37.0007H111.16Z" fill="white" fill-opacity="0.4"/>
+</g>
+<defs>
+<clipPath id="clip0_463_377">
+<rect width="180" height="220" fill="white"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/logos/wordpress.svg b/smoke/astro.build-main/src/icons/logos/wordpress.svg
new file mode 100644
index 000000000..27e8e3b35
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/logos/wordpress.svg
@@ -0,0 +1,11 @@
+<svg width="932" height="220" viewBox="0 0 932 220" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M529.682 85.5183H491.888V89.5219C503.715 89.5219 505.612 92.0601 505.612 107.049V134.073C505.612 149.055 503.715 151.801 491.888 151.801C482.816 150.536 476.675 145.676 468.243 136.395L458.539 125.834C471.622 123.512 478.556 115.281 478.556 105.992C478.556 94.3822 468.636 85.5183 450.059 85.5183H412.906V89.5219C424.725 89.5219 426.622 92.0601 426.622 107.049V134.073C426.622 149.055 424.725 151.801 412.906 151.801V155.804H454.943V151.801C443.125 151.801 441.227 149.055 441.227 134.073V126.475H444.814L468.243 155.812H529.682C559.868 155.812 572.92 139.798 572.92 120.581C572.92 101.364 559.868 85.5183 529.682 85.5183ZM441.227 119.949V91.8519H449.883C459.379 91.8519 463.607 98.3937 463.607 105.992C463.607 113.383 459.379 119.925 449.883 119.925L441.227 119.949ZM530.314 149.295H528.833C521.234 149.295 520.177 147.397 520.177 137.684V91.8519H530.314C552.261 91.8519 556.273 107.866 556.273 120.349C556.273 133.225 552.261 149.271 530.314 149.271V149.295Z" fill="black"/>
+<path d="M295.354 127.74L309.919 84.6696C314.147 72.2106 312.249 68.6554 298.709 68.6554V64.4357H338.4V68.6554C325.101 68.6554 321.93 71.8582 316.653 87.2398L292.608 159.416H289.869L268.33 93.3412L246.383 159.416H243.637L220.208 87.2238C215.139 71.8102 211.76 68.6394 199.518 68.6394V64.4197H246.383V68.6394C233.924 68.6394 230.545 71.594 234.981 84.6536L249.121 127.724L270.444 64.3876H274.448L295.354 127.74Z" fill="black"/>
+<path d="M367.13 158.559C343.909 158.559 324.909 141.456 324.909 120.557C324.909 99.867 343.909 82.7719 367.13 82.7719C390.351 82.7719 409.351 99.867 409.351 120.557C409.351 141.456 390.351 158.559 367.13 158.559ZM367.13 89.3137C347.705 89.3137 340.955 106.833 340.955 120.541C340.955 134.474 347.705 151.769 367.13 151.769C386.763 151.769 393.553 134.458 393.553 120.541C393.521 106.833 386.763 89.3137 367.13 89.3137Z" fill="black"/>
+<path d="M625.094 151.593V155.812H576.755V151.593C590.896 151.593 593.426 148.006 593.426 126.891V93.117C593.426 72.0024 590.896 68.6234 576.755 68.6234V64.4036H620.45C642.197 64.4036 654.232 75.6136 654.232 90.5788C654.232 105.152 642.221 116.546 620.45 116.546H608.439V126.891C608.415 148.006 610.954 151.593 625.094 151.593ZM620.45 72.0024H608.439V108.739H620.45C632.276 108.739 637.761 100.5 637.761 90.5788C637.761 80.4498 632.276 72.0024 620.45 72.0024Z" fill="black"/>
+<path d="M799.256 135.971L798.199 139.766C796.302 146.732 793.972 149.271 778.982 149.271H776.02C765.05 149.271 763.144 146.732 763.144 131.743V122.039C779.615 122.039 780.88 123.512 780.88 134.49H784.884V103.038H780.88C780.88 114.016 779.615 115.489 763.144 115.489V91.8519H774.755C789.744 91.8519 792.066 94.3821 793.972 101.348L795.029 105.352H798.408L796.934 85.5103H734.863V89.5138C746.69 89.5138 748.588 92.0521 748.588 107.041V134.065C748.588 147.773 746.986 151.224 737.65 151.681C728.794 150.328 722.709 145.491 714.429 136.347L704.717 125.786C717.808 123.464 724.734 115.233 724.734 105.944C724.734 94.3341 714.814 85.4703 696.237 85.4703H659.084V89.4738C670.903 89.4738 672.801 92.012 672.801 107.001V134.025C672.801 149.006 670.903 151.753 659.084 151.753V155.756H701.09V151.753C689.271 151.753 687.373 149.006 687.373 134.025V126.426H690.961L714.389 155.764H801.154L802.419 135.923L799.256 135.971ZM687.373 119.957V91.8519H696.029C705.526 91.8519 709.745 98.3937 709.745 105.992C709.745 113.383 705.526 119.925 696.029 119.925L687.373 119.957Z" fill="black"/>
+<path d="M842.109 158.559C833.662 158.559 826.271 154.123 823.109 151.353C821.363 153.412 820.196 155.899 819.73 158.559H815.726V129.429H819.946C821.635 143.361 831.348 151.593 843.807 151.593C850.557 151.593 856.05 147.789 856.05 141.456C856.05 135.971 851.189 131.743 842.534 127.74L830.523 122.039C822.076 118.035 815.742 111.061 815.742 101.773C815.742 91.6357 825.238 82.9801 838.33 82.9801C844.282 82.9035 850.086 84.839 854.801 88.4729C855.85 87.6242 856.906 85.2701 857.539 82.7719H861.543V107.682H857.059C855.585 97.7611 850.092 89.5219 838.907 89.5219C832.997 89.5219 827.504 92.9008 827.504 98.1855C827.504 103.67 831.94 106.625 842.077 111.269L853.688 116.97C863.817 121.822 867.828 129.637 867.828 135.971C867.86 149.271 856.258 158.559 842.109 158.559Z" fill="black"/>
+<path d="M905.942 158.559C897.495 158.559 890.104 154.123 886.942 151.353C885.196 153.412 884.03 155.899 883.563 158.559H879.559V129.429H883.779C885.468 143.361 895.181 151.593 907.64 151.593C914.39 151.593 919.883 147.789 919.883 141.456C919.883 135.971 915.022 131.743 906.367 127.74L894.356 122.039C885.909 118.035 879.575 111.061 879.575 101.773C879.575 91.6357 889.071 82.9801 902.163 82.9801C908.115 82.9035 913.919 84.839 918.634 88.4729C919.683 87.6242 920.739 85.2701 921.372 82.7719H925.376V107.682H920.94C919.466 97.7611 913.974 89.5219 902.788 89.5219C896.878 89.5219 891.386 92.9008 891.386 98.1855C891.386 103.67 895.821 106.625 905.958 111.269L917.569 116.97C927.698 121.822 931.709 129.637 931.709 135.971C931.693 149.271 920.083 158.559 905.942 158.559Z" fill="black"/>
+<path d="M95.0174 20.7002C112.808 20.6521 130.202 25.9525 144.942 35.9136C154.452 42.3387 162.642 50.5285 169.067 60.039C179.029 74.7827 184.352 92.1695 184.352 109.963C184.352 127.757 179.029 145.144 169.067 159.887C159.375 174.246 145.727 185.485 129.776 192.244C116.093 198.036 101.179 200.316 86.3897 198.879C71.6007 197.441 57.4052 192.331 45.0933 184.013C30.7364 174.317 19.4953 160.67 12.7287 144.722C6.9323 131.039 4.64977 116.124 6.08879 101.334C7.52781 86.5434 12.6427 72.3479 20.9679 60.039C30.6638 45.6821 44.3106 34.441 60.2587 27.6744C71.2553 23.0226 83.0774 20.6369 95.0174 20.6602V20.7002ZM95.0174 14.9591C76.2288 14.9575 57.8615 20.5271 42.238 30.9635C26.6145 41.3999 14.4363 56.2346 7.24329 73.5919C0.0502617 90.9491 -1.83462 110.049 1.82699 128.478C5.48859 146.906 14.5322 163.835 27.8145 177.124C41.0967 190.413 58.021 199.465 76.4476 203.136C94.8741 206.807 113.975 204.932 131.336 197.748C148.697 190.563 163.538 178.393 173.982 162.774C184.427 147.156 190.006 128.792 190.013 110.003C190.013 84.8079 180.005 60.6445 162.19 42.828C144.375 25.0115 120.213 15.0013 95.0174 14.9991V14.9591Z" fill="black"/>
+<path d="M15.8516 109.996C15.8451 124.866 20.0266 139.436 27.9171 152.04C35.8077 164.643 47.0883 174.769 60.467 181.259L22.7216 77.7835C18.1873 87.9169 15.8461 98.8943 15.8516 109.996V109.996ZM148.457 105.992C148.457 96.2078 144.942 89.4338 141.931 84.1571C137.928 77.6314 134.156 72.1465 134.156 65.5887C134.156 58.3183 139.673 51.5443 147.448 51.5443C147.8 51.5443 148.137 51.5443 148.473 51.6083C140.02 43.8674 129.986 38.055 119.065 34.5732C108.145 31.0914 96.5981 30.0232 85.2242 31.4426C73.8503 32.8619 62.9204 36.7349 53.1905 42.7937C43.4605 48.8525 35.1628 56.9526 28.8711 66.5335C30.7287 66.5896 32.4823 66.6296 33.9636 66.6296C42.2429 66.6296 55.0622 65.6207 55.0622 65.6207C59.33 65.3725 59.8665 71.6421 55.5747 72.1465C55.5747 72.1465 51.2829 72.651 46.5107 72.8992L75.3362 158.647L92.6635 106.689L80.3726 72.8832C76.1048 72.6349 72.0693 72.1305 72.0693 72.1305C67.8015 71.8823 68.3059 65.3565 72.5737 65.6047C72.5737 65.6047 85.6413 66.6136 93.3921 66.6136C101.671 66.6136 114.491 65.6047 114.491 65.6047C118.759 65.3565 119.295 71.6261 114.995 72.1305C114.995 72.1305 110.703 72.6349 105.939 72.8832L134.549 157.982L142.716 132.104C146.335 120.798 148.433 112.782 148.433 106.008L148.457 105.992ZM96.4108 116.906L72.6618 185.927C88.6091 190.626 105.631 190.183 121.313 184.662C121.093 184.316 120.903 183.951 120.744 183.573L96.4108 116.906ZM164.471 72.0024C164.827 74.7021 165.004 77.4225 164.999 80.1456C164.999 88.1527 163.502 97.2087 158.978 108.499L134.821 178.424C152.654 168.049 165.732 151.123 171.273 131.249C176.814 111.375 174.379 90.1238 164.487 72.0184L164.471 72.0024Z" fill="black"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/sponsors/divriots.svg b/smoke/astro.build-main/src/icons/sponsors/divriots.svg
new file mode 100644
index 000000000..c6dddc038
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/sponsors/divriots.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 703.85 121.18" xmlns="http://www.w3.org/2000/svg" fill="black"><path d="m297 132.57 44.39-44.38a6.22 6.22 0 0 0 0-8.8l-44.39-44.39" fill="none" stroke="black" stroke-width="13.05" transform="translate(0 -29.1)"/><path d="m55.79 39-44.39 44.39a6.22 6.22 0 0 0 0 8.8l44.39 44.38" fill="none" stroke="black" stroke-width="11.05" transform="translate(0 -29.1)"/><g fill="black"><rect height="20" rx="3" width="20" x="40" y="5.9"/><rect height="20" rx="3" width="20" y="48.9"/><rect height="20" rx="3" width="20" x="40" y="91.9"/><path d="m154 29.14v96.86h-15.69v-9a25.12 25.12 0 0 1 -10.05 7.44 33.14 33.14 0 0 1 -13 2.48 37.1 37.1 0 0 1 -18.15-4.44 32.05 32.05 0 0 1 -12.53-12.53 38 38 0 0 1 -4.58-18.8 37.27 37.27 0 0 1 4.57-18.67 32.12 32.12 0 0 1 12.49-12.48 37.1 37.1 0 0 1 18.15-4.44 33.07 33.07 0 0 1 12.66 2.35 25.34 25.34 0 0 1 9.79 7v-35.77zm-36.83 83.86a21.3 21.3 0 0 0 10.57-2.62 19.76 19.76 0 0 0 7.44-7.7 23.29 23.29 0 0 0 2.74-11.48 23.33 23.33 0 0 0 -2.74-11.49 18.9 18.9 0 0 0 -7.44-7.57 21.78 21.78 0 0 0 -21.15 0 18.9 18.9 0 0 0 -7.44 7.57 23.33 23.33 0 0 0 -2.74 11.49 23.29 23.29 0 0 0 2.74 11.48 19.76 19.76 0 0 0 7.44 7.7 21.31 21.31 0 0 0 10.58 2.62zm58.15-56.66h16.32v69.66h-16.32zm103 0-29.89 69.66h-16.83l-29.9-69.71h17l21.64 51.71 22.32-51.7z" transform="translate(0 -29.1)"/><path d="m398.77 120.21a.39.39 0 0 0 -.15.28c0 .09 0 .14-.13.14s-.28-.14-.28-.42.14-.28.41-.28.38.07.15.28zm.55 0q1.13-2 .84 1.26a40.18 40.18 0 0 1 -.56 4.89q-.14 1.26-.42 1.26c-.37 0-.51-.56-.41-1.68a7.37 7.37 0 0 0 .13-1.4 9.93 9.93 0 0 1 .28-1.25c0-.84-.18-1.31-.56-1.4s-.55-.1-.55 0l.28.7c.18.46.14.51-.14.14a1 1 0 0 1 -.7-1q0-.28.42-.42c.37-.19.65-.14.84.14a.39.39 0 0 1 .28.14h.41c.19 0 .19-.1 0-.28a1 1 0 0 1 -.14-1.1zm1.68 6.57q.42-.15.42.42a.37.37 0 0 1 -.42.42.25.25 0 0 1 -.28-.28.78.78 0 0 1 .28-.56zm51.13 16.34c-.18-.28-.14-.42.14-.42a.37.37 0 0 1 .42.42.36.36 0 0 1 -.14.28.46.46 0 0 1 -.42-.28zm-50.71-20.12c.28 0 .42.33.42 1s-.14.84-.42.84-.42-.28-.42-.84.14-1 .42-1zm50.58 10.62q6.43 8 6.15 8.53c0 .09-.23-.05-.7-.42a12.61 12.61 0 0 1 -1.25-1.12 12.82 12.82 0 0 1 -1.12-1.26 2.18 2.18 0 0 1 -.56-1 3.59 3.59 0 0 0 -.7-1 18.59 18.59 0 0 0 -1.54-1.68l-.83-.84a2 2 0 0 1 -.42-.56c.56.75.69 1.12.42 1.12-.1 0 0 .14.27.42a10 10 0 0 1 .7.84c.47.46.94 1 1.4 1.53a11.54 11.54 0 0 1 1.4 1.68c.46.56.84 1 1.12 1.4a4.33 4.33 0 0 1 .55 1.81c0 .38 0 .56-.14.56s-.13 0-.41-.28a.79.79 0 0 0 -1-.14c-.28.19-.52.1-.7-.28-.09-.09-.14 0-.14.14a.64.64 0 0 1 -.42.7c-.19.09-.28 0-.28-.28a54.08 54.08 0 0 0 -4.19-5.31 3.67 3.67 0 0 1 -1.26-1.39c-.18-.28-.32-.52-.42-.7s-.37-.42-.56-.42c-.46 0 .05.84 1.54 2.51a9.69 9.69 0 0 1 1.4 2.1c0 .65.18.88.56.7.18 0 .23.28.14.84q-.15.56.42.42c.27-.1.42 0 .42.14s-.1.27 0 .55l.55.84.7.7c.19.19.33.23.42.14s.19-.09 0 .28c0 .19-.14.37-.42.56l-.84.56c-.65.46-1 .79-1 1s-.19.28-.56.28-.56.13-.56.41-.19.42-.56.7a9.48 9.48 0 0 1 -1 .84 7.14 7.14 0 0 1 -1.12.7c-.37.28-.6.37-.69.28l-.77-.22c-.19 0-.56-.33-1.12-1a28.65 28.65 0 0 1 -2-2.23l-3.32-3.77q-2.1-2.37-4.05-4.75t-3.91-4.33c-1.21-1.39-2.05-2.37-2.52-2.93a20.11 20.11 0 0 1 -1.81-2.24c-.75-.93-1.45-1.77-2.1-2.51q-1.82-2-4.05-4.75-2.1-2.94-5.87-8.11c-1.3-1.67-2.33-3-3.07-4s-1.35-1.86-1.82-2.51l-1.12-1.54a8 8 0 0 0 -.56-1c-.65-1-1.11-1.58-1.39-1.67s-.75-.1-1.4.28a2.74 2.74 0 0 0 -.84 1.39c-.09.38-.32 1.49-.7 3.36a5.9 5.9 0 0 1 -.14 1.25 4.34 4.34 0 0 0 -.14 1c-.09.28-.23.93-.42 2s-.37 2.14-.55 3.35-.38 2.33-.56 3.35-.14 1.45-.14 1.54a.13.13 0 0 1 -.14.14 5 5 0 0 1 -.28-2.37c.09-1.4.28-3 .56-4.75.18-.84.32-1.59.42-2.24s.09-1 0-1.12c-.28-.28-.24-.42.14-.42.18 0 .28-.56.28-1.67.18-1.21.09-1.82-.28-1.82-.19 0-.28.23-.28.7s-.14.7-.42.7-.19.23 0 .7c.18.65.23 1 .14 1.11a7.25 7.25 0 0 0 -.56 2.24 30.9 30.9 0 0 1 -.42 3.35c0 1.21-.19 1.91-.56 2.1s-.37.37 0 .56.33.51.14 1-.42.61-.7.42a1.42 1.42 0 0 0 -1 .28c0 .19 0 .24-.14.14a1.17 1.17 0 0 1 .14-.42c.1-.56 0-.83-.28-.83-.37.18-.46.51-.28 1 0 .47-.09.7-.28.7s-.37-.56-.27-1.67 0-1.63-.14-1.54-.1-.33.28-1a2 2 0 0 0 .41-2.1 6.38 6.38 0 0 1 -.13-2.37 4.26 4.26 0 0 1 .69-2.24 4.38 4.38 0 0 0 .42-1.67.62.62 0 0 0 -.7-.7c-.37 0-.56.09-.56.28s-.23.42-.69.42-.47.14-.28.42a1.42 1.42 0 0 1 -.28 1q-.57.55 0 .27a.45.45 0 0 1 .7.14c.18.19.14.47-.14.84a3.23 3.23 0 0 0 -.7 1.26c-.09.56-.05.75.14.56.37-.37.56-.37.56 0a.37.37 0 0 1 -.42.42c.09 0-.09.23-.56.7a1.32 1.32 0 0 1 -.14.56 1.61 1.61 0 0 0 -.28.41c0 .28.09.38.28.28.37-.28.37-.09 0 .56a1 1 0 0 1 -1 .7c-.28 0-.28.19 0 .56.47.19.56.89.28 2.1a9.57 9.57 0 0 1 -.7 2c-.37.38-.46.33-.28-.14s.19-.65 0-.84c-.28 0-.42.24-.42.7s.14.84.42.84.28.19-.28.56c-.37.37-.46.56-.28.56.84-.09 1.17.14 1 .7-.37 1-.7 1-1 0-.09-.28-.18-.19-.28.28s.19.69.56.69.56.29.28.84a3.41 3.41 0 0 1 -.14.84 4.27 4.27 0 0 0 -.14 1 2.94 2.94 0 0 1 -.14 1v.42c0 .09-.23.14-.69.14s-.66-.19-.56-.84a1.29 1.29 0 0 0 .14-.56.56.56 0 0 1 .28-.56c.55-.37.65-1.12.27-2.24s-.83-1.25-1.67-.41a1.55 1.55 0 0 0 -.56 1c0 .19.23.19.7 0s.65.19.56.84a12.11 12.11 0 0 0 -.28 2.38 1 1 0 0 1 -1.12 1.11 12.72 12.72 0 0 0 -2.24.28 4 4 0 0 1 -2.65-.42c-.84-.27-1.35-.46-1.54-.55a3.35 3.35 0 0 1 0-1.4q.57-4.76.7-6.57c.19-1.21.33-2.23.42-3.07.09-.47.19-1.07.28-1.82s.19-1.44.28-2.09c.46-3.08.79-5.68 1-7.83s.32-3.49.14-3.77c-.19-.56-.38-.84-.56-.84a1.67 1.67 0 0 1 -.84-.42 11.9 11.9 0 0 1 -1.12-1l-1-1.26a2.6 2.6 0 0 1 -.42-1 1 1 0 0 1 .42-.84 14.5 14.5 0 0 1 2.1-.7c1.68-.65 2.56-1.21 2.65-1.67a8.73 8.73 0 0 0 .7-2.8q.42-2.51.84-5.72.71-3.36 1.54-8.11t1.56-8.48l1.67-8.24-1.1-.86a4.64 4.64 0 0 0 -.69-.56c-.19-.19-.28-.33-.28-.42s-.33-.61-1-1.26a5.35 5.35 0 0 0 -1.68-1.25 18.93 18.93 0 0 1 -1.54-1.12c-.74-.65-1.58-1.45-2.51-2.38a36 36 0 0 1 -2.87-2.91 1.69 1.69 0 0 1 -.14-1.54 7.1 7.1 0 0 1 2.23-2.37 35.62 35.62 0 0 1 4.75-3.08 52.08 52.08 0 0 1 6-2.79 43.88 43.88 0 0 1 6.43-2.24q2.65-.69 5.72-1.25c2.15-.38 4.24-.66 6.29-.84s4.15-.28 6-.28a23.47 23.47 0 0 1 4.61.14 20.3 20.3 0 0 1 5 1.67 19.34 19.34 0 0 1 4.89 2.8 36.27 36.27 0 0 1 3.22 2.93c1.4 1.31 2.8 2.7 4.19 4.19s2.7 2.94 3.92 4.34a26.33 26.33 0 0 1 2.37 2.79 13 13 0 0 1 2 3.91 17.45 17.45 0 0 1 .69 4.05q.28 6.28-4.19 12.58-4.36 6.14-13.98 12.89l-2.37 1.68c-.93.56-1.91 1.16-2.94 1.81s-1.81 1.26-2.65 1.82-1.44.79-1.82 1c-.84.46-1.49.84-1.95 1.11a1.3 1.3 0 0 0 -.84.7 2.37 2.37 0 0 0 .42 1.12 12.71 12.71 0 0 1 1.36 1.76c.56.74 1.26 1.72 2.1 2.93s1.58 2 2.24 2.79 1.35 1.92 2.37 3.22 2.1 2.47 2.93 3.49l3.78 4.61q2.5 2.94 4.61 5.59t3.63 4.47c.93 1.12 1.77 2.1 2.51 2.94s1.59 1.81 2.24 2.65 1.44 1.82 2.38 2.93zm-58.11-76.7.14-.28c0-.18-.14-.28-.42-.28s-.19.1 0 .28c0 .28.09.42.28.42zm-1.4 61.61c0-.28-.09-.42-.28-.42s-.28.14-.28.42a.4.4 0 0 0 .14.28c.08 0 .22-.09.41-.28zm1.67 2.66a2.74 2.74 0 0 0 .14-1.54q0-.84-.27-.84a.37.37 0 0 0 -.42.42v.56a4 4 0 0 1 -.14.84c-.1.56 0 .93.14 1.12s.39-.1.54-.56zm0-3.77c.38 0 .56-.1.56-.28a.42.42 0 1 0 -.83 0c-.11.18-.01.28.26.28zm6-3.92c.19-.18.14-.28-.14-.28s-.42.1-.42.28v.28a.12.12 0 0 0 .14.14q.15 0 .42-.42zm.7-3.35c.09-.46.09-.7 0-.7l-.28.42a2.76 2.76 0 0 0 -.56 1.4c0 .47.1.61.28.42a5.38 5.38 0 0 0 .56-1.54zm.14-2.37c.28-.47.28-.79 0-1-.19-.47-.28-.37-.28.28s.09.94.28.72zm1.54-30.6c-.37.37-.52.61-.42.7a2.49 2.49 0 0 0 1-.42c.28-.28.37-.47.28-.56s-.3-.09-.86.28zm.56 4.75c.28 0 .42-.05.42-.14l-.42-.42a.28.28 0 1 0 0 .56zm.55 23c.1 0 .15-.18.15-.56-.19-.56-.28-.51-.28.14v.56c.09.14.13.1.13-.07zm.7-28.64c0-.46 0-.6-.14-.42-.28 0-.41.24-.41.7s0 .56.13.56a2.74 2.74 0 0 0 .42-.79zm2.38 25.15c0-.19-.14-.28-.42-.28s-.47-.09-.56 0-.05.28.42.28zm19.14-15.93c.09-.37.05-.51-.14-.42s-.37.19-.56.56 0 .42.28.42c.09.05.23-.13.42-.51zm-11.6-5.73q13.56-8.52 19.42-15.08 6-6.57 6-13.14c0-1.3-.28-2.14-.84-2.51s-1.68-.89-3.63-1.26q-5.44-.84-14.39.7a29.89 29.89 0 0 0 -4.75 1.12 1.2 1.2 0 0 0 -1 1.26 17.79 17.79 0 0 1 -.28 2.09c-.19 1.12-.46 2.52-.84 4.19s-.6 3.31-1 5.17-.75 3.63-1.12 5.31-.75 3.54-1.12 5.31-.7 3.4-1 4.89-.51 2.7-.7 3.63-.28 1.4-.28 1.4c0 .18.28.14.84-.14s2.27-1.3 4.69-2.89zm27 49.6c.56.28.65.09.28-.56a7.18 7.18 0 0 1 -.7-.83 2.34 2.34 0 0 0 -.7-.7l-1-1 .84 1a2 2 0 0 1 .7 1.39c-.01.52.17.75.55.75zm5.44 5.73a.4.4 0 0 1 -.13-.28.38.38 0 0 1 -.14-.28 1.17 1.17 0 0 0 -.14-.42 14.85 14.85 0 0 1 -1-1.12c-.47-.55-.93-1.07-1.4-1.53a8.15 8.15 0 0 0 -1.4-1.4c-.09-.09.05.14.42.7a8.19 8.19 0 0 0 .7 1.12 8.5 8.5 0 0 0 .7.84c.47.46.7.74.7.83 0 .28.23.65.7 1.12s.78.66.96.47zm.84-5c.19 0 0-.33-.69-1a2.85 2.85 0 0 1 -.7-.56l-.28-.28c-.19 0 0 .28.56.84s.8 1.02 1.08 1.02zm6.71 11.74a.83.83 0 0 0 -.56-.56c-.19 0-.28.14-.28.42a.62.62 0 0 0 .7.7c.25.02.3-.17.11-.54zm-5.31-9.78c.47.56.75.83.84.83s-.09-.27-.56-.83a4.28 4.28 0 0 0 -.56-.7c-.09-.1-.19-.19-.28-.28-.31.02-.12.34.53 1zm7.71-.56c-.19 0-.28-.28-.28-.84a3.22 3.22 0 0 0 .14-1 1.62 1.62 0 0 1 .14-.7c0-.46.09-.7.28-.7s.19.24 0 .7a2.39 2.39 0 0 0 -.14.7v.7a1.59 1.59 0 0 1 -.17 1.16zm10-9.79a.31.31 0 0 1 -.35-.35c0-.08.11-.12.35-.12.16.16.24.27.24.35s-.07.14-.23.14zm-7 14.68c.19 0 .28.14.28.42s-.14.28-.42.28c-.09.09-.14 0-.14-.28l.14-.28a.12.12 0 0 1 .18-.12zm24-81.68c0 .47 0 1.34-.12 2.6s-.2 2.56-.36 4.14-.23 3.07-.47 4.72-.35 3.11-.59 4.38q-.94 6.38-1.54 10.28c-.31 2.6-.59 4.53-.82 5.79s-.4 3-.71 5.2-.59 4.21-.83 6a16.72 16.72 0 0 0 -.35 1.66 7 7 0 0 0 -.12.94 3.71 3.71 0 0 0 -.24 1.06c-.16.87-.31 1.86-.47 3s-.28 1.85-.36 2.24a1.18 1.18 0 0 1 -.23.36v.35a.92.92 0 0 0 -.12.36 1.08 1.08 0 0 1 0 .71c0 .15-.08.19-.24.11-.31-.15-.39-.35-.23-.59s-.12-.47-.59-.47-.71.2-.71.59a.92.92 0 0 0 -.12.36c.08 0 .12 0 .12.11v.12c.15 0 .23.16.23.48s-.08.47-.23.47c-.32 0-.32.08 0 .23q0 .48-.24.48a.52.52 0 0 0 -.12.59c.16.16.08.23-.23.23a.48.48 0 0 0 -.48.24 2.68 2.68 0 0 0 0 1.18c.16.87.16 1.3 0 1.3s-.19.32-.35 1a1.85 1.85 0 0 1 -.24 1.18c-.23 0-.35-.63-.35-1.89a3.51 3.51 0 0 0 0-1.42c-.08-.16-.24-.12-.47.12a4.37 4.37 0 0 0 -.24 1.42c0 .63-.12.94-.36.94s-.23-.31-.23-.94l.23-.83a1 1 0 0 0 .24-.71c0-.39-.08-.51-.24-.35s-.31 0 0-.48l.24-.47q.12 0 .36.24c.23.39.47.31.7-.24a2.59 2.59 0 0 0 -.11-1.06c-.08-.08-.12 0-.12.23s-.16.36-.47.36-.36-.2-.12-.59c.31-.79.27-1.07-.12-.83s-.47.12-.47-.12.15-.35.47-.35.27-.24-.12-.71a1.21 1.21 0 0 1 -.24-1.18q.48-.36.48 0c0 .23.08.35.23.35s.32-.31.24-.94a3.73 3.73 0 0 0 -.35-1.42q-.36-.36-.12-.36c.15 0 .39-.23.71-.71s.19-.82-.12-.82-.47.23-.47.71c-.08.23-.12.31-.12.23a1.92 1.92 0 0 0 -.12-.47c0-.71.16-1.06.47-1.06s.36-.08.36-.24v-.35a1.2 1.2 0 0 0 .11-.48c.08-.15.08-.23 0-.23a.14.14 0 0 0 -.23 0c-.16.15-.24 0-.24-.48s.2-1.61.36-3.42c.07-.55 0-.71-.24-.48a1.63 1.63 0 0 0 -.35 1.19c0 .47-.12.67-.36.59s-.16.19 0 .59c0 .39-.08.59-.24.59s-.27.23-.11.71.08.63-.24.47c-.16-.16-.28-.2-.35-.12l.11.12a.86.86 0 0 1 -.11.95c-.71.86-.71 1.14 0 .82.31-.15.39-.08.23.24s-.31.51-.47.35-.24 0-.24.59a1.34 1.34 0 0 0 .48 1c.07.31 0 .51-.24.59s-.39.59-.24 1.3c.16.87.12 1.18-.12 1a.42.42 0 0 0 -.59 0c0 .23.08.35.24.35s.2.16.35.47-.11.48-.35.24c-.16-.08-.2.2-.12.83s0 .82-.12.82-.27-.11-.35.12a.75.75 0 0 0 0 .59q.12.36-.24.24a.81.81 0 0 1 -.35-.47c-.16-.24-.24-.16-.24.23a1.07 1.07 0 0 0 .12.48.39.39 0 0 0 .36.23c.15.16 0 .24-.48.24a1.7 1.7 0 0 1 -1.06-.36c-.24-.23-.2-.39.12-.47a.55.55 0 0 0 .35-.59c0-.32.08-.47.24-.47s.19-.08.12-.24-.12-.31-.36-.47c-.23-.32-.39-.43-.47-.36a9.51 9.51 0 0 1 -.24 1.07 13.22 13.22 0 0 0 -.23 2.48 5.91 5.91 0 0 1 -.12 1.18 1.62 1.62 0 0 1 -.12.71 1.25 1.25 0 0 0 -.12 1.18c.16.47.12.71-.12.71s-.31.55-.47 1.42a23.71 23.71 0 0 0 -.35 3.07q-.24 1.65-.36 2.13c-.08.23-.23.23-.47 0s-.63-.12-.71.35q-.36.7.12.36a1.36 1.36 0 0 1 .71.11c.23.16.08.28-.48.36a1.41 1.41 0 0 0 -.94.94q.12.48.12.36c0-.24.19-.47.59-.71s.47.2.47 1.3a6.53 6.53 0 0 1 -.12 1.3v.71c-.47.63-.78.39-.94-.71 0-.63-.12-1-.36-1s-.27.2-.35.83v.83a2.64 2.64 0 0 1 -.12.83 4.29 4.29 0 0 0 -.12 1.06 3 3 0 0 1 -.12.94 2.88 2.88 0 0 1 -.11.83 3.58 3.58 0 0 1 -.24.71c-.16.08-.24.28-.24.59s.08.4 0 .47c-.23.08-.27.36-.12.83s.08.59-.23.59-.36.2-.12.59q.12.36-.12.36c-.08.08-.39.08-.94 0a2.61 2.61 0 0 0 -1.66.35 1 1 0 0 1 -.71.24 1.11 1.11 0 0 1 -.82-.36c-.32-.31-.28-.47.11-.47s.36-.16.12-.47c-.39-.55-.23-.75.48-.59.31.23.35.12.11-.36s-.23-.82 0-1.06.24-.2 0-.12-.31-.27-.23-1.3a5.91 5.91 0 0 1 .12-1.18 3.74 3.74 0 0 0 .11-.71 4.07 4.07 0 0 0 0-3.07c-.08-.32-.15-.71-.23-1.18v-1.42a8.92 8.92 0 0 1 .23-.95c.08-.23.2-.27.36-.11a1.05 1.05 0 0 1 0 .7.21.21 0 0 0 .23.24c.16 0 .24-.31.24-.94-.16-.63-.31-1-.47-1v-.24a.35.35 0 0 0 -.12-.23 1 1 0 0 1 .12-.47c0-.24 0-.83.12-1.78s.31-2.12.47-3.31c.16-1.41.27-2.4.35-3s.32-1 .48-1h.35c0-.31-.12-.47-.35-.47a49.41 49.41 0 0 1 .35-5.55c.16-1.5.32-2.88.47-4.14s.24-2 .24-2.36c.08-.71.24-1.81.47-3.31s.44-3 .59-4.61.44-3 .59-4.37.28-2.29.36-2.84.39-2 .71-4.25.67-4.53 1.06-7q.6-3.9 1.18-7.57c.4-2.44.75-4.68 1.07-6.73s.59-3.78.82-5.2.44-2.52.59-3.07a3.43 3.43 0 0 1 .48-1.42 1.68 1.68 0 0 1 .94-.35 5.9 5.9 0 0 1 2.37 0 6.91 6.91 0 0 1 2.59.7c.87.56 1.38.67 1.54.36s.51-.08 1.3.47a3.8 3.8 0 0 0 .95.59c.15 0 .31-.16.47-.47s.39-.55.71-.47a13 13 0 0 1 2.83.94c.32.08.6.44.83 1.07a6.26 6.26 0 0 1 .39 2.32zm-25.24 69.52c.09-.46.09-.7 0-.7s-.14 0-.42.28l-.28.56q-.15.15 0 .42l.28.56a4.09 4.09 0 0 0 .45-1.1zm1.11-8.94c.19-.37.1-.46-.28-.28-.37 0-.55.1-.55.28s.13.42.41.42a.37.37 0 0 0 .45-.4zm0-2.23c.1 0 .14-.1.14-.28s-.09-.42-.28-.42-.32.23-.14.42c0 .18.05.28.14.28zm3.78-2.66c.18-.18.14-.28-.14-.28s-.42.1-.42.28.09.42.28.42h.14v-.14zm1.67 2.24a.86.86 0 0 0 .56.28q.29-.15 0-.42c0-.28-.18-.42-.56-.42s-.25.2.02.58zm1.54-10.06c.19 0 .28-.14.28-.42s-.05-.42-.14-.42l-.42.42c.03.3.12.44.31.44zm0 1.88q.36-.48 0-.12a1.13 1.13 0 0 1 -.83.12c-.07-.08-.11-.08-.11 0l.11.12c.19.49.47.41.86-.1zm1.66.12c.07-.32.23-.48.47-.48s.24-.07.24-.23l-.24-.12h-.47c-.16 0-.24.2-.24.59q.06 1.21.27.26zm.59 1.06a.65.65 0 0 0 .47.24c.16-.08.24-.28.24-.59s-.16-.36-.48-.12-.36.33-.2.49zm3.9-10.52c-.16.95-.16 1.3 0 1.07.15-.08.27-.32.35-.71a9.26 9.26 0 0 0 .12-1.54 7.76 7.76 0 0 0 .12-1.3c0-.39 0-.59-.12-.59s-.24.28-.24.83a6.89 6.89 0 0 1 -.12 1.06 6.64 6.64 0 0 1 -.08 1.2zm.82 12.41q.12-.12 0-.12c0-.08-.08 0-.23.12q-.48.12-.48.24t.24.12c.35.02.5-.1.5-.34zm.24-1.77q.12-.12 0-.12t-.24 0c-.31.08-.47.2-.47.36s.12.11.35.11.39-.12.39-.33zm-.24-13.94q.12 0 .12-.36c0-.16-.12-.24-.35-.24s-.28.08-.12.24.23.38.38.38zm.12-1.54c.16-.08.24-.28.24-.59 0-.47-.08-.71-.24-.71-.16-.16-.24 0-.24.59s.11.73.27.73zm2.39 10.89c-.23 0-.35.08-.35.24a.31.31 0 0 0 .35.35c.16 0 .32-.12.48-.35q0-.36-.48-.24zm-1.89-15.72c-.31.32-.35.59-.11.83s.27.32.35.24a1.16 1.16 0 0 0 .24-.83 1.76 1.76 0 0 1 -.24-.71.11.11 0 0 0 -.12.12.35.35 0 0 1 -.12.24zm-.11 2.37a.7.7 0 0 0 .35.35c.24.08.35 0 .35-.12s-.11-.19-.35-.35-.43-.04-.35.12zm2 15.17c.24-.15.2-.23-.11-.23s-.63.31-.71.94c.08.16 0 .36-.24.59s-.31.24 0 .24.32.27.24.83a1.91 1.91 0 0 1 -.24 1.06.94.94 0 0 0 -.35.59c0 .16.15.24.47.24a.93.93 0 0 0 .83-.36 1.73 1.73 0 0 0 .23-.71 5.83 5.83 0 0 0 .12-1.18 4.93 4.93 0 0 0 -.12-1.18c-.08-.32-.19-.47-.35-.47a.11.11 0 0 1 -.12-.12 1.51 1.51 0 0 1 .35-.24zm.12-.59c.32 0 .48-.12.48-.35s-.16-.16-.48 0a.33.33 0 0 0 -.23.12h-.12l-.12.11c0 .03.16.07.47.07zm.48-2.24c.23 0 .35-.24.35-.71a1 1 0 0 0 -.47-1q-.36 0 0 .24t.12.24c-.24 0-.36.23-.36.7q0 .48.36.48zm.59-2.72c.15-.39.11-.55-.12-.47s-.36.19-.59.59-.24.67.23.59a.77.77 0 0 0 .48-.76zm1.3-11c0-.32-.08-.47-.24-.47s-.28.15-.12.47.28.47.36.47zm-2.6 22.92c.15 0 .19.56.11 1.66a2.73 2.73 0 0 1 -.47 1.89c-.16.31-.23.23-.23-.24a1.52 1.52 0 0 0 -.12-.94 1.17 1.17 0 0 1 .23-1.18c.24-.56.32-.87.24-1s-.08-.23.24-.23zm-9.46 13.36c0-.4.12-.63.36-.71s.39.08.47.47 0 .47-.35.47c-.32.12-.48.04-.48-.27zm5.68-5.2c0-.4.11-.44.35-.12a2.05 2.05 0 0 1 .24.94q0 .36-.24.12a1.24 1.24 0 0 1 -.35-.98zm-5.56 1.89a.63.63 0 0 1 .47-.71c.32-.16.52 0 .6.35a.42.42 0 0 1 -.48.48c-.39.11-.59.07-.59-.16zm-.23 4.37c.15-.16.35-.16.59 0q.12 0 0 .12h-.71q-.12-.16.12-.16zm8.74-9.57c0-.4.08-.51.24-.36s.19.24.11.48c-.23.66-.35.66-.35-.16zm-4.61 7.56q.24-.24.24-.12v.71c0 .71-.08 1.07-.24 1.07s-.24-.16-.24-.48a3.84 3.84 0 0 1 .24-1.22zm.95 5.32c.15-.16.27-.2.35-.12s0 .08-.12.24c-.31.86-.63.9-.94.12q-.36-.36.12-.12c.07.04.27 0 .59-.16zm-.12-8.75q-.12.72-.36.12a2.93 2.93 0 0 1 .24-1.89l.24-1.18.11 1.06a7.64 7.64 0 0 1 -.23 1.85zm1.18 1.07c.24 0 .2.39-.12 1.18-.16.79-.23 1.22-.23 1.3s.07.59-.24 1.3l-.47 1.06.11-1.3a5.29 5.29 0 0 0 .12-1.06 3.58 3.58 0 0 1 .24-.71.68.68 0 0 0 .12-.47v-1.77q.12-.24.12 0c.15.27.27.43.35.43zm2.13-2.13c.08 0 .11.08.11.24s-.27.35-.35.35a.11.11 0 0 1 -.12-.12v-.23q0-.28.36-.28zm-4.14 2.84q0-.36.24-.12c.23.16.35.27.35.35s-.12.12-.35.12-.24-.16-.24-.39zm-2.95-3.9c.23 0 .43.15.59.47s.19.63.12.71-.16.2-.48.35-.63.12-.71-.11a.91.91 0 0 1 .12-.71q.12 0 .12-.48c-.08 0-.12 0-.12-.11a.49.49 0 0 1 .36-.16zm-3.33 12c.28-.28.47-.32.56-.13s.19.46 0 .83-.46.28-.56 0c-.28-.24-.28-.48 0-.76zm-.83 4.2c-.1-.56 0-.7.27-.42a1.24 1.24 0 0 1 .28 1.39c-.09.47-.28.75-.55.84s-.28-.09-.28-.56c0-.28.09-.42.28-.42.37-.06.37-.34 0-.89zm4.87-19.85c.23 0 .35.08.35.24a3.41 3.41 0 0 1 .12 1.18c-.08 1.66-.36 2.21-.83 1.66-.16-.48-.23-.52-.23-.12a.42.42 0 0 1 -.48.47c-.23 0-.35-.08-.35-.24a.94.94 0 0 1 .12-.35c.08-.16.15-.32.23-.47.32-.32.48-.55.48-.71-.08-1.16.11-1.72.59-1.72zm-5 22.36c.28.09.37.37.28.84s-.33.7-.7.7a.25.25 0 0 1 -.28-.28 2.9 2.9 0 0 1 .14-1c.17-.32.35-.41.55-.32zm.84-5.31a.37.37 0 0 1 .41.42c0 .19-.14.28-.41.28s-.43-.09-.43-.28a.38.38 0 0 1 .38-.48zm102.16-74.8a36.07 36.07 0 0 1 6 15.78q.84 7.83-2.52 17.75a64.09 64.09 0 0 1 -4.19 10.2 67.2 67.2 0 0 1 -5.59 9.08 56 56 0 0 1 -6.28 7.54 42.1 42.1 0 0 1 -6.71 5.31 18.37 18.37 0 0 1 -3.63 2 2.16 2.16 0 0 1 -1.54 0c-.28-.28-.42-.19-.42.28s-.56.88-1.67 1.25a27.37 27.37 0 0 1 -6.85 1.68 19.08 19.08 0 0 1 -6.15-.14 26.9 26.9 0 0 0 -2.93-.7c-1.4-.28-2.75-.51-4-.7q-4.2-.84-6.85-1.39a46 46 0 0 1 -4.47-1.4 29 29 0 0 1 -2.93-1.4 23.25 23.25 0 0 1 -2.38-2.09 22.49 22.49 0 0 1 -2.51-3.08q-1.26-1.82-2.38-3.77c-.65-1.4-1.25-2.75-1.81-4a22.51 22.51 0 0 1 -1-3.49 6.1 6.1 0 0 0 -.28-2c-.19-.74-.37-1.77-.56-3.07a44.1 44.1 0 0 1 0-4.89 66.17 66.17 0 0 1 2-14.53 77.67 77.67 0 0 1 4.89-14.25 66.71 66.71 0 0 1 7.26-12.3 42.2 42.2 0 0 1 9.08-9.08 35.29 35.29 0 0 1 7.83-4.47 20.5 20.5 0 0 1 7.68-1.4h2.23a8.08 8.08 0 0 1 1.54.14 4.56 4.56 0 0 1 1.4.56 15.88 15.88 0 0 1 2 .84 46.33 46.33 0 0 0 4.9 2c1.67.55 3.44 1.07 5.3 1.53a19.11 19.11 0 0 1 8.25 3.77 34.6 34.6 0 0 1 7.29 8.44zm-59.79 37.58c.28 0 .41-.19.41-.56 0-.19-.13-.28-.41-.28s-.28.19-.28.56.09.47.28.28zm.56-3.35c.37 0 .55 0 .55-.14s-.14-.33-.42-.42a.26.26 0 0 0 -.41.14c-.19.28-.1.42.3.42zm3.77 1.11c.18 0 .28-.14.28-.42s0-.41-.14-.41-.33.13-.42.41.09.42.28.42zm44.56-20.25v-3.36a10.14 10.14 0 0 0 -.28-2.51 13 13 0 0 0 -.42-2.24 11.75 11.75 0 0 0 -.83-2.09c-.1-.19-.24-.52-.42-1s-.38-1-.56-1.54a23.41 23.41 0 0 0 -2.24-4.18 32.63 32.63 0 0 0 -2.93-4.47l-1.54-2-2 .14q-4.47.42-9.92 4.33a48.69 48.69 0 0 0 -9.78 9.78 65.79 65.79 0 0 0 -3.77 5.59 45.24 45.24 0 0 0 -2.94 5.73 68 68 0 0 0 -5.68 22.12q-.69 10.77 3.08 18.31c.28.56.6 1.21 1 2s.93 1.45 1.39 2.1a19.64 19.64 0 0 1 1.4 1.53c.37.47.61.7.7.7a3.56 3.56 0 0 0 .84-.14 8.57 8.57 0 0 0 1.67-.56c.56-.18 1.17-.37 1.82-.55a10.41 10.41 0 0 0 1.4-.7l1.39-.56a3.9 3.9 0 0 0 1-.56q1-.55 2.1-1.26l2.51-1.67c.84-.66 1.58-1.21 2.24-1.68a48.94 48.94 0 0 0 8.38-8.52 67.11 67.11 0 0 0 6.85-11.88 70.27 70.27 0 0 0 4.19-11.31 34.57 34.57 0 0 0 1.35-9.55zm6.29 23.47c0-.28-.09-.42-.28-.42a.55.55 0 0 0 -.56.42c0 .18 0 .28.14.28.38 0 .61-.1.7-.28zm.56-1.26a1.14 1.14 0 0 0 .28-.84c0-.37-.09-.46-.28-.28a1.72 1.72 0 0 0 -.28.7c0 .29.12.42.28.42zm2.51-6.29a2.41 2.41 0 0 0 .28-1.12c-.09-.18-.18-.14-.28.14a2.48 2.48 0 0 0 -.41 1.12c0 .28.14.23.41-.14zm1.4-5.17c.19-.74.23-1.11.14-1.11s-.09 0-.28.41a3.92 3.92 0 0 0 -.7 2c0 .75-.09 1.12-.28 1.12-.18.37-.23.6-.14.7s.42 0 .7-.56a8.27 8.27 0 0 0 .56-2.56zm.7-2.79a9 9 0 0 0 .28-2.66 2.41 2.41 0 0 0 -.14-1v.14c-.19.65-.37 1-.56 1.11a4.4 4.4 0 0 1 -.14.7 6.36 6.36 0 0 0 .14 1.12c.09 1.24.23 1.43.42.59zm3.63 2.65c.1 0 .24-.28.42-.83s.14-.7-.14-.7c-.09 0-.23.23-.42.7s-.14.83.14.83zm72-37.86c.19.37.28.51.28.42 0 .09-.09.14-.28.14s-.28 0-.28-.14a.13.13 0 0 1 -.12-.09c0-.23.12-.33.4-.33zm-8.38 2c.37 0 .56.09.56.28s-.23.42-.7.42-.56-.14-.56-.42a.94.94 0 0 1 .68-.32zm6.15-2.67a1.23 1.23 0 0 0 .14 1c.18.19.18.28 0 .28l-1.82.14a3.63 3.63 0 0 1 -1.4 0c-.28-.09-.37-.19-.28-.28a1.21 1.21 0 0 1 .84-.42c.56-.09.84-.32.84-.7s.28-.56.84-.56c.74-.05 1.02.14.84.54zm-2.8-3.21c0-.37.14-.56.42-.56a1.27 1.27 0 0 1 1 .14c.37.19.42.28.14.28a5.59 5.59 0 0 0 -1 .28c-.37.16-.56.07-.56-.17zm.42 3.07c0 .19-.51.28-1.53.28s-1.36 0-1.26-.14a2.57 2.57 0 0 1 1.53-.28c.84-.12 1.26-.07 1.26.11zm-2.79 1.14c.46 0 .74.09.84.28s.09.33-.28.42h-.7a6.36 6.36 0 0 0 -1.12.14l-3.07.28a3.31 3.31 0 0 0 -1.68.42c-.47.18-.51.37-.14.56a8 8 0 0 0 2.1 0c1.3-.19 1.95-.14 1.95.14s-.51.37-1.54.56a22.37 22.37 0 0 0 -2.65.28c-1.3.09-2.65.23-4.05.41s-2.65.38-3.77.56a7.23 7.23 0 0 0 -1.82.42 14.31 14.31 0 0 0 -.56 2.66c-.18 1.58-.42 3.49-.7 5.72-.18 1.12-.42 2.43-.7 3.92s-.37 2.84-.55 4.33-.42 2.93-.7 4.33-.33 2.51-.42 3.63q-.56 3.21-1 6.71c-.28 2.23-.51 3.86-.7 4.89q-.13.84-.42 2.79c-.18 1.21-.42 2.7-.7 4.47s-.46 3.59-.83 5.73-.61 4.1-1 6.15q-.84 6.42-1.68 11.59-.69 5.18-.84 6.15c-.18.65-.42 1.77-.7 3.35s-.37 3.22-.55 4.89q-.84 4.89-1.4 7.27a8.27 8.27 0 0 1 -1.26 3.21 1.66 1.66 0 0 1 -1 1c-.37.19-.46.05-.28-.42.19-.28.14-.28-.14 0-.83.65-1.39.56-1.67-.28q-.15-.42-.42 0c-.19.19-.37.14-.56-.14s-.7-.37-1.54-.28a5.67 5.67 0 0 1 -1.81 0c-.84 0-1.73 0-2.66-.14a16.59 16.59 0 0 1 -2.51-.42c-.75-.18-1.17-.37-1.26-.56q-1.26-1.81-.56-6.42c.09-1.21.33-3 .7-5.45s.79-5.26 1.26-8.52 1.12-6.8 1.67-10.62 1.31-7.69 2-11.6q.71-3.63 1.12-6.42a33.83 33.83 0 0 1 .56-3.36c.09-.56.23-1.72.42-3.49s.6-3.82 1-6.15.8-5 1.26-7.68.89-5.26 1.26-7.68.7-4.52 1-6.29.6-3.12.69-3.77c.19-.47.24-.75.14-.84s-.41-.1-1 0l-3.08.56q-2.37.42-5.45.83-2.93.42-6.14 1t-5.59.84q-2.79.42-4.89.84c-1.31.19-2 .28-2.24.28-.46.18-.7.18-.7 0s.1-.61.56-1c.28-.19.24-.23-.14-.14-.56.09-.83 0-.83-.42a1.52 1.52 0 0 1 .41-1.12l.28-.28c0-.09-.14 0-.42.14-.46.1-.69-.14-.69-.69a3.23 3.23 0 0 0 -.56-1.82 9.32 9.32 0 0 1 -.7-1.4c-.28-.65-.56-1.35-.84-2.09s-.51-1.45-.7-2.1a4.49 4.49 0 0 1 -.42-1.26c0-.46.38-.88 1.12-1.25a7.75 7.75 0 0 1 2.52-1.12c.93-.19 2.56-.47 4.88-.84s4.8-.93 7.41-1.4 5.31-.88 7.82-1.25 4.57-.8 5.87-1a19.64 19.64 0 0 0 2.38-.28c1.3-.19 2.74-.37 4.33-.56s2.93-.33 4.33-.42a14.39 14.39 0 0 0 2.93-.56 18 18 0 0 0 2.1-.14 16.59 16.59 0 0 0 2.51-.42q2.24-.27 6.85-.56t8.66-.69h2.66c.55 0 .83.09.83.28q0 .69.42 0a.44.44 0 0 1 .42-.28h.56c.28 0 .61.23 1 .69a2.15 2.15 0 0 1 .56 1.26c-.19.28-.14.42.14.42s.28.75.28 2.24c.09 1.77-.05 2.37-.42 1.81a4.32 4.32 0 0 0 -2-.28c-.93 0-1.49.14-1.67.42q0 .42.27.42a.37.37 0 0 1 .42.42c0 .37-.46.56-1.39.56a2.9 2.9 0 0 0 -1.68.28h-.42a.79.79 0 0 1 -.56-.28 3.4 3.4 0 0 0 -1.53.28 2 2 0 0 1 -1.4.42c-.28-.28-.61-.24-1 .14-.28.18-.42.23-.42.14s-.14-.14-.42-.14a.79.79 0 0 0 -.56.28q-.84.27-.84 0c0-.38-.18-.38-.55 0a1.88 1.88 0 0 1 -1.4 0 3.11 3.11 0 0 0 -1-.28q-.13 0-.42.42 0 .56.42.42c.28-.1.42 0 .42.14 0 .46-.51.46-1.54 0a1.18 1.18 0 0 0 -1.12.27 1.1 1.1 0 0 1 -.83.28.52.52 0 0 0 -.7 0c-.47.19-.47.38 0 .56a4.64 4.64 0 0 0 1.95-.14c1.12 0 1.68.1 1.68.28s0 0 .14-.14c.37-.37 1-.42 1.82-.14.93 0 1.49-.09 1.67-.28 0-.28.24-.42.7-.42s.51.14.14.42l-.28.28h.7c.65 0 1-.09 1-.28s.33-.14 1-.14a1.54 1.54 0 0 1 .69.14h.56c.28 0 .24.19-.14.56s-.23.56.14.56a.49.49 0 0 0 .56-.56c0-.37.37-.56 1.12-.56s.93.19.84.56.02.56.58.56zm-4.47-4.75c-1 .09-1.45.33-1.26.7s.32.42.42.14a1.13 1.13 0 0 1 .7-.14l1.39-.28a4.34 4.34 0 0 1 1.54 0h1a.69.69 0 0 0 .84 0 .91.91 0 0 0 .56-.84c0-.18-.33-.23-1-.14a32.63 32.63 0 0 0 -4.19.51zm-24.73 65.2a1.8 1.8 0 0 0 0-1c-.37-.47-.56-.09-.56 1.11 0 .94 0 1.22.14.84a1.07 1.07 0 0 0 .14-.42zm3.07-22.08c.1 0 .14 0 .14-.14a.56.56 0 0 0 -.14-.42c-.18-.37-.28-.32-.28.14s.1.61.28.42zm.28-2.79a.84.84 0 0 0 .14-.56c-.19-.28-.28-.23-.28.14s.05.51.14.42zm13-32.83c.47 0 .61-.1.42-.28h-.28q-.13-.15-.42 0c-.38.18-.28.28.27.28zm1.26 0a.42.42 0 1 0 -.42-.42.37.37 0 0 0 .41.42zm1.54-.42q.42-.42-.42-.42a.37.37 0 0 0 -.42.42c0 .28.09.42.28.42s.36-.14.55-.42zm1.95-.14c1-.28 1.31-.47.84-.56a2.39 2.39 0 0 0 -1.39-.14c-.47.09-.7.28-.7.56s-.1.42 0 .42a6.88 6.88 0 0 0 1.24-.28zm2.8-2c.28 0 .42-.09.42-.28a.13.13 0 0 0 -.14-.14v-.28q-.29 0-.42.42c-.2.23-.15.32.13.32zm3.63-.28c.37 0 .56-.09.56-.28h-.42q-.13-.14-.42 0c-.2.23-.05.37.27.37zm69.2-4.89a2.41 2.41 0 0 1 1.25 1.54 4.41 4.41 0 0 1 -.42 2.65q-.69 2.1-1.67 5l-1.69 5.66c-.47 1.86-.93 3.63-1.4 5.31s-.65 3-.83 4c-.19.75-.33 1.4-.42 2a8.11 8.11 0 0 1 -.42 1.53 7.68 7.68 0 0 0 -.42 1.4c-.37 0-.42.14-.14.42a1.47 1.47 0 0 1 .14.84 6.82 6.82 0 0 1 -.14 1.26c-.09.46-.19.93-.28 1.39a4.34 4.34 0 0 1 -.28 1c-.19.37-.33.56-.42.56a5.59 5.59 0 0 0 -.28-1 1 1 0 0 0 -.56-.84q-.42-.27-.42.42c.1.47 0 .65-.42.56s-.46-.37-.55-.84a5.11 5.11 0 0 0 -.42-1.39c0-.1-.1 0-.28.42-.38.65-.66.79-.84.41a22.1 22.1 0 0 1 0-3.63l.14-1.26-.42 1.4c-.28 1.68-.75 2.33-1.4 2h-.56a.92.92 0 0 0 -.42-.14 7.57 7.57 0 0 1 -2.23-.7 5.23 5.23 0 0 1 -1.82-1h-.28a.4.4 0 0 0 -.28-.14 1.3 1.3 0 0 1 -.69-.28c-.28-.18-.61-.37-1-.56-.84-.56-1.31-.74-1.4-.56a18.37 18.37 0 0 1 -.28-3.91 6.16 6.16 0 0 1 .14-1.11 9.51 9.51 0 0 1 .28-1.12 9.25 9.25 0 0 0 .28-1.54c.09-.74.19-1.63.28-2.65.18-.84.32-1.59.42-2.24a2.77 2.77 0 0 1 .28-1.12 1.08 1.08 0 0 0 .28-1c-.1-.28-.33-.38-.7-.28h-.84a2.1 2.1 0 0 0 -.7-.14h-.42c0-.1 0-.14-.14-.14h-.14c0 .28-.46.51-1.4.7a35.33 35.33 0 0 0 -12 4.33c-1.58.83-2.93 1.63-4.05 2.37s-2.42 1.86-4.19 3.35c-.93.84-2 1.87-3.22 3.08s-2.18 2.47-3.21 3.77a32 32 0 0 0 -2.51 3.35 4.74 4.74 0 0 0 -1 1.82c0 .19 1 .51 3.07 1s4.24.88 6.57 1.25c5.59.94 8.43 1.68 8.52 2.24 0 .19.23.28.7.28a4.08 4.08 0 0 1 2.37.7 21.77 21.77 0 0 1 3.5 2.23 38.75 38.75 0 0 1 3.85 3.08 20.68 20.68 0 0 1 3.21 3.07c.56.75 1.21 1.54 2 2.38s1.49 1.53 2 2.09a36.13 36.13 0 0 1 4.75 6.15 12.38 12.38 0 0 1 2 5.31 14 14 0 0 1 -.84 6.56 32.37 32.37 0 0 1 -3.35 7.13 39.2 39.2 0 0 1 -5.31 6.85 35.4 35.4 0 0 1 -6.71 5.72 34.3 34.3 0 0 1 -7.82 4.05 46.33 46.33 0 0 1 -8.52 2 27.16 27.16 0 0 1 -3.91.28c-1.31.09-2.29.14-2.94.14a15.43 15.43 0 0 1 -4.75-1 8.63 8.63 0 0 1 -3.21-2.37l-2.6-2.4a27.36 27.36 0 0 0 -2.93-2.79c-.84-.93-1.68-1.82-2.52-2.66a22.53 22.53 0 0 1 -1.67-1.81c-1.4-1.59-1.68-3-.84-4.34l.56-.83 1.53 1.53a27.44 27.44 0 0 0 3.08 2.8 6.86 6.86 0 0 0 2.65.42h2.38c1-.1 2.09-.19 3.21-.28l3.08-.28a12.54 12.54 0 0 0 2.23-.56 1.87 1.87 0 0 1 1-.42l1.4-.56a9.19 9.19 0 0 1 1.39-.42 1.87 1.87 0 0 0 1-.42 17.78 17.78 0 0 0 3.49-1.53c1.68-.94 3.17-1.82 4.47-2.66a44 44 0 0 0 5.45-4.47 31.56 31.56 0 0 0 4.33-5.17 23.72 23.72 0 0 0 2.24-3.63 22.76 22.76 0 0 0 1.68-3.91 14.68 14.68 0 0 0 .83-3.36 3.38 3.38 0 0 0 -.13-2.23 2.94 2.94 0 0 0 -1.26-.84 14.54 14.54 0 0 0 -2.24-.84 28 28 0 0 0 -2.93-1c-1-.27-2-.51-2.94-.69q-4.47-.7-7.26-1.26c-1.86-.37-3.87-.89-6-1.54-1.58-.46-2.89-.88-3.91-1.26s-1.91-.88-2.65-1.25a17.19 17.19 0 0 1 -2.1-1.54c-.65-.65-1.35-1.4-2.1-2.23-.55-.66-1.39-1.59-2.51-2.8s-2-2.33-3.07-3.35a60 60 0 0 1 -4.2-4.89 4.29 4.29 0 0 1 -.83-2.94 17.29 17.29 0 0 1 .42-2.79 16.71 16.71 0 0 1 1.67-3.05 22.35 22.35 0 0 1 2.8-3.92q1.82-2.09 3.91-4.19a56.59 56.59 0 0 1 4.29-3.91 42 42 0 0 1 4.33-3.35 44.8 44.8 0 0 1 15.37-6.57 37.13 37.13 0 0 1 15.93-.42q1.11.28 2 .42h1a11.48 11.48 0 0 1 1.26-3.07 16.47 16.47 0 0 1 1.81-3.49c.56-.84.93-1.08 1.12-.7 0 .28.19.42.56.42a2.44 2.44 0 0 1 1 .42 12.47 12.47 0 0 1 1.53 1.11 9.64 9.64 0 0 1 1.4 1.12 11.75 11.75 0 0 1 1 .84c.28.56.65.7 1.12.42.28-.09.46-.09.56 0s.18.23.27.7c0 .74.1 1 .28.83a.25.25 0 0 1 .28.28l.28.28q0 .84.42 0c.28-.46.56-.65.84-.56a14.38 14.38 0 0 1 2.16 1.54zm-52.4 23.33c-.65.47-.83.7-.55.7s.36-.19.54-.66zm42.2 1.4c0-.74-.1-1-.28-.7a2.72 2.72 0 0 0 -.28 1.26q.13.28 0 .42c-.1.09-.23.09-.42 0-.37-.09-.56-.05-.56.14s.19.42.56.7.46.18.56 0a4.92 4.92 0 0 0 .41-1.78zm.42-3.07a4.89 4.89 0 0 0 .25-1.08.13.13 0 0 0 -.14-.14.12.12 0 0 0 -.14.14 1.61 1.61 0 0 0 -.28 1.12c.11.46.2.46.3 0zm.69-3.08a1.85 1.85 0 0 0 .28-1.25c0-.28-.14-.24-.42.14a1.23 1.23 0 0 1 -.13.55v.56q-.01.61.26.04zm9.36-17c.28 0 .38-.19.28-.56a.12.12 0 0 0 -.14-.14v-.42c.1 0 0 .19-.41.56-.01.37.08.56.26.56zm-215.44-7.6c-.55 3.72-1 6.49-1.39 8.3a10.46 10.46 0 0 1 -1.25 3.67 1.85 1.85 0 0 1 -1 1.12c-.38.21-.47 0-.28-.48.18-.32.14-.32-.14 0-.84.74-1.39.64-1.67-.32-.1-.32-.23-.32-.42 0s-.37.16-.56-.16-.69-.42-1.53-.32a4.65 4.65 0 0 1 -1.81 0 22.47 22.47 0 0 1 -2.64-.16 14.35 14.35 0 0 1 -2.51-.48c-.74-.21-1.16-.42-1.25-.64q-1.24-2.07-.56-7.34.14-1.95.64-5.75c0-.05-.23-.47 2-.24.38 0 .83.45 1.34.51 1.47.18 3.59.07 5.54.3.7.08.33.32 1 .44 1.77.32 4.4.6 5.55.85s.93.73.93.7" transform="translate(0 -29.1)"/><path d="m175.29 0h16.35v16.35h-16.35z"/></g></svg>
diff --git a/smoke/astro.build-main/src/icons/sponsors/netlify.svg b/smoke/astro.build-main/src/icons/sponsors/netlify.svg
new file mode 100644
index 000000000..096d51265
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/sponsors/netlify.svg
@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="147" height="40">
+ <radialGradient id="a" cy="0%" r="100.11%" gradientTransform="matrix(0 .9989 -1.152 0 .5 -.5)">
+ <stop offset="0" stop-color="#20c6b7"/>
+ <stop offset="1" stop-color="#4d9abf"/>
+ </radialGradient>
+ <g fill="none" fill-rule="evenodd">
+ <path fill="#0e1e25" d="m53.37 12.978.123 2.198c1.403-1.7 3.245-2.55 5.525-2.55 3.951 0 5.962 2.268 6.032 6.804v12.568h-4.26v-12.322c0-1.207-.26-2.1-.78-2.681-.52-.58-1.371-.87-2.552-.87-1.719 0-3 .78-3.84 2.338v13.535h-4.262v-19.02h4.016zm24.378 19.372c-2.7 0-4.89-.852-6.567-2.557-1.678-1.705-2.517-3.976-2.517-6.812v-.527c0-1.898.365-3.595 1.096-5.089.73-1.494 1.757-2.657 3.078-3.49 1.321-.831 2.794-1.247 4.42-1.247 2.583 0 4.58.826 5.988 2.478 1.41 1.653 2.114 3.99 2.114 7.014v1.723h-12.4c.13 1.57.652 2.812 1.57 3.726s2.073 1.371 3.464 1.371c1.952 0 3.542-.79 4.77-2.373l2.297 2.198c-.76 1.136-1.774 2.018-3.042 2.645-1.269.627-2.692.94-4.27.94zm-.508-16.294c-1.17 0-2.113.41-2.832 1.23-.72.82-1.178 1.963-1.377 3.428h8.12v-.317c-.094-1.43-.474-2.51-1.14-3.243-.667-.732-1.59-1.098-2.771-1.098zm16.765-7.7v4.623h3.35v3.164h-3.35v10.617c0 .726.144 1.25.43 1.573.286.322.798.483 1.535.483a6.55 6.55 0 0 0 1.49-.176v3.305c-.97.27-1.905.404-2.806.404-3.273 0-4.91-1.81-4.91-5.431v-10.776h-3.124v-3.164h3.122v-4.623h4.261zm11.137 23.643h-4.262v-27h4.262zm9.172 0h-4.262v-19.02h4.262zm-4.525-23.96c0-.655.207-1.2.622-1.634.416-.433 1.009-.65 1.78-.65.772 0 1.368.217 1.79.65.42.434.63.979.63 1.635 0 .644-.21 1.18-.63 1.608-.422.428-1.018.642-1.79.642-.771 0-1.364-.214-1.78-.642-.415-.427-.622-.964-.622-1.608zm10.663 23.96v-15.857h-2.894v-3.164h2.894v-1.74c0-2.11.584-3.738 1.753-4.887 1.17-1.148 2.806-1.722 4.91-1.722.749 0 1.544.105 2.386.316l-.105 3.34a8.375 8.375 0 0 0 -1.631-.14c-2.035 0-3.052 1.048-3.052 3.146v1.687h3.858v3.164h-3.858v15.856h-4.261zm17.87-6.117 3.858-12.903h4.542l-7.54 21.903c-1.158 3.199-3.122 4.799-5.893 4.799-.62 0-1.304-.106-2.052-.317v-3.305l.807.053c1.075 0 1.885-.196 2.429-.589.543-.392.973-1.051 1.289-1.977l.613-1.635-6.664-18.932h4.595z"/>
+ <path fill="url(#a)" fill-rule="nonzero" d="m28.589 14.135-.014-.006c-.008-.003-.016-.006-.023-.013a.11.11 0 0 1 -.028-.093l.773-4.726 3.625 3.626-3.77 1.604a.083.083 0 0 1 -.033.006h-.015c-.005-.003-.01-.007-.02-.017a1.716 1.716 0 0 0 -.495-.381zm5.258-.288 3.876 3.876c.805.806 1.208 1.208 1.355 1.674.022.069.04.138.054.209l-9.263-3.923a.728.728 0 0 0 -.015-.006c-.037-.015-.08-.032-.08-.07s.044-.056.081-.071l.012-.005zm5.127 7.003c-.2.376-.59.766-1.25 1.427l-4.37 4.369-5.652-1.177-.03-.006c-.05-.008-.103-.017-.103-.062a1.706 1.706 0 0 0 -.655-1.193c-.023-.023-.017-.059-.01-.092 0-.005 0-.01.002-.014l1.063-6.526.004-.022c.006-.05.015-.108.06-.108a1.73 1.73 0 0 0 1.16-.665c.009-.01.015-.021.027-.027.032-.015.07 0 .103.014l9.65 4.082zm-6.625 6.801-7.186 7.186 1.23-7.56.002-.01c.001-.01.003-.02.006-.029.01-.024.036-.034.061-.044l.012-.005a1.85 1.85 0 0 0 .695-.517c.024-.028.053-.055.09-.06a.09.09 0 0 1 .029 0l5.06 1.04zm-8.707 8.707-.81.81-8.955-12.942a.424.424 0 0 0 -.01-.014c-.014-.019-.029-.038-.026-.06 0-.016.011-.03.022-.042l.01-.013c.027-.04.05-.08.075-.123l.02-.035.003-.003c.014-.024.027-.047.051-.06.021-.01.05-.006.073-.001l9.921 2.046a.164.164 0 0 1 .076.033c.013.013.016.027.019.043a1.757 1.757 0 0 0 1.028 1.175c.028.014.016.045.003.078a.238.238 0 0 0 -.015.045c-.125.76-1.197 7.298-1.485 9.063zm-1.692 1.691c-.597.591-.949.904-1.347 1.03a2 2 0 0 1 -1.206 0c-.466-.148-.869-.55-1.674-1.356l-8.993-8.993 2.349-3.643c.011-.018.022-.034.04-.047.025-.018.061-.01.091 0a2.434 2.434 0 0 0 1.638-.083c.027-.01.054-.017.075.002a.19.19 0 0 1 .028.032l8.999 13.059zm-14.087-10.186-2.063-2.063 4.074-1.738a.084.084 0 0 1 .033-.007c.034 0 .054.034.072.065a2.91 2.91 0 0 0 .13.184l.013.016c.012.017.004.034-.008.05l-2.25 3.493zm-2.976-2.976-2.61-2.61c-.444-.444-.766-.766-.99-1.043l7.936 1.646a.84.84 0 0 0 .03.005c.049.008.103.017.103.063 0 .05-.059.073-.109.092l-.023.01zm-4.056-4.995a2 2 0 0 1 .09-.495c.148-.466.55-.868 1.356-1.674l3.34-3.34a2175.525 2175.525 0 0 0 4.626 6.687c.027.036.057.076.026.106-.146.161-.292.337-.395.528a.16.16 0 0 1 -.05.062c-.013.008-.027.005-.042.002h-.002l-8.949-1.877zm5.68-6.403 4.489-4.491c.423.185 1.96.834 3.333 1.414 1.04.44 1.988.84 2.286.97.03.012.057.024.07.054.008.018.004.041 0 .06a2.003 2.003 0 0 0 .523 1.828c.03.03 0 .073-.026.11l-.014.021-4.56 7.063c-.012.02-.023.037-.043.05-.024.015-.058.008-.086.001a2.274 2.274 0 0 0 -.543-.074c-.164 0-.342.03-.522.063h-.001c-.02.003-.038.007-.054-.005a.21.21 0 0 1 -.045-.051l-4.808-7.013zm5.398-5.398 5.814-5.814c.805-.805 1.208-1.208 1.674-1.355a2 2 0 0 1 1.206 0c.466.147.869.55 1.674 1.355l1.26 1.26-4.135 6.404a.155.155 0 0 1 -.041.048c-.025.017-.06.01-.09 0a2.097 2.097 0 0 0 -1.92.37c-.027.028-.067.012-.101-.003-.54-.235-4.74-2.01-5.341-2.265zm12.506-3.676 3.818 3.818-.92 5.698v.015a.135.135 0 0 1 -.008.038c-.01.02-.03.024-.05.03a1.83 1.83 0 0 0 -.548.273.154.154 0 0 0 -.02.017c-.011.012-.022.023-.04.025a.114.114 0 0 1 -.043-.007l-5.818-2.472-.011-.005c-.037-.015-.081-.033-.081-.071a2.198 2.198 0 0 0 -.31-.915c-.028-.046-.059-.094-.035-.141zm-3.932 8.606 5.454 2.31c.03.014.063.027.076.058a.106.106 0 0 1 0 .057c-.016.08-.03.171-.03.263v.153c0 .038-.039.054-.075.069l-.011.004c-.864.369-12.13 5.173-12.147 5.173s-.035 0-.052-.017c-.03-.03 0-.072.027-.11a.76.76 0 0 0 .014-.02l4.482-6.94.008-.012c.026-.042.056-.089.104-.089l.045.007c.102.014.192.027.283.027.68 0 1.31-.331 1.69-.897a.16.16 0 0 1 .034-.04c.027-.02.067-.01.098.004zm-6.246 9.185 12.28-5.237s.018 0 .035.017c.067.067.124.112.179.154l.027.017c.025.014.05.03.052.056 0 .01 0 .016-.002.025l-1.052 6.462-.004.026c-.007.05-.014.107-.061.107a1.729 1.729 0 0 0 -1.373.847l-.005.008c-.014.023-.027.045-.05.057-.021.01-.048.006-.07.001l-9.793-2.02c-.01-.002-.152-.519-.163-.52z" transform="translate(-.702)"/>
+ </g>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/sponsors/sentry.svg b/smoke/astro.build-main/src/icons/sponsors/sentry.svg
new file mode 100644
index 000000000..ae97a41c9
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/sponsors/sentry.svg
@@ -0,0 +1 @@
+<svg class="css-15xgryy e10nushx5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 44" width="400" height="88"><path d="M29,2.26a4.67,4.67,0,0,0-8,0L14.42,13.53A32.21,32.21,0,0,1,32.17,40.19H27.55A27.68,27.68,0,0,0,12.09,17.47L6,28a15.92,15.92,0,0,1,9.23,12.17H4.62A.76.76,0,0,1,4,39.06l2.94-5a10.74,10.74,0,0,0-3.36-1.9l-2.91,5a4.54,4.54,0,0,0,1.69,6.24A4.66,4.66,0,0,0,4.62,44H19.15a19.4,19.4,0,0,0-8-17.31l2.31-4A23.87,23.87,0,0,1,23.76,44H36.07a35.88,35.88,0,0,0-16.41-31.8l4.67-8a.77.77,0,0,1,1.05-.27c.53.29,20.29,34.77,20.66,35.17a.76.76,0,0,1-.68,1.13H40.6q.09,1.91,0,3.81h4.78A4.59,4.59,0,0,0,50,39.43a4.49,4.49,0,0,0-.62-2.28Z M124.32,28.28,109.56,9.22h-3.68V34.77h3.73V15.19l15.18,19.58h3.26V9.22h-3.73ZM87.15,23.54h13.23V20.22H87.14V12.53h14.93V9.21H83.34V34.77h18.92V31.45H87.14ZM71.59,20.3h0C66.44,19.06,65,18.08,65,15.7c0-2.14,1.89-3.59,4.71-3.59a12.06,12.06,0,0,1,7.07,2.55l2-2.83a14.1,14.1,0,0,0-9-3c-5.06,0-8.59,3-8.59,7.27,0,4.6,3,6.19,8.46,7.52C74.51,24.74,76,25.78,76,28.11s-2,3.77-5.09,3.77a12.34,12.34,0,0,1-8.3-3.26l-2.25,2.69a15.94,15.94,0,0,0,10.42,3.85c5.48,0,9-2.95,9-7.51C79.75,23.79,77.47,21.72,71.59,20.3ZM195.7,9.22l-7.69,12-7.64-12h-4.46L186,24.67V34.78h3.84V24.55L200,9.22Zm-64.63,3.46h8.37v22.1h3.84V12.68h8.37V9.22H131.08ZM169.41,24.8c3.86-1.07,6-3.77,6-7.63,0-4.91-3.59-8-9.38-8H154.67V34.76h3.8V25.58h6.45l6.48,9.2h4.44l-7-9.82Zm-10.95-2.5V12.6h7.17c3.74,0,5.88,1.77,5.88,4.84s-2.29,4.86-5.84,4.86Z" fill="#362d59"></path></svg>
diff --git a/smoke/astro.build-main/src/icons/sponsors/stackup.svg b/smoke/astro.build-main/src/icons/sponsors/stackup.svg
new file mode 100644
index 000000000..207f28b2a
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/sponsors/stackup.svg
@@ -0,0 +1 @@
+<svg width="293px" height="72px" viewBox="0 0 293 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><polygon id="path-1" points="0.0694989256 0.00531098691 274.306275 0.00531098691 274.306275 60.1805539 0.0694989256 60.1805539"></polygon></defs><g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Group"><g id="stackup-rgb" transform="translate(3.329545, 3.329545)"><path d="M92.7877382,28.3462335 C88.5618163,26.9854376 84.9107959,25.8108466 84.9107959,22.6003568 C84.9107959,19.9537765 87.2975613,18.244398 90.990841,18.244398 C94.5406154,18.244398 96.7865168,19.3316227 98.4275831,20.1258616 C99.4514888,20.6218196 100.260577,21.0127616 101.063502,21.0127616 C102.429883,21.0127616 103.382477,20.1029169 103.382477,18.7994827 C103.382477,15.7690203 97.8447581,13.1100852 91.5314068,13.1100852 C84.1844655,13.1100852 79.2480605,17.0106804 79.2480605,22.8165662 C79.2480605,29.5349443 85.2567932,31.4940667 90.557684,33.2228599 C95.0398024,34.6842594 98.9091621,35.9470991 98.9091621,39.5935378 C98.9091621,42.6681246 96.289971,44.6537217 92.2348468,44.6537217 C88.1867657,44.6537217 85.612475,43.1870273 83.7328201,42.1156874 C82.7080341,41.5323631 81.8998265,41.0708221 81.1858218,41.0708221 C79.8432112,41.0708221 78.868608,42.0018465 78.868608,43.2858659 C78.868608,46.6004893 85.1546668,49.7350852 91.8034506,49.7350852 C99.4946284,49.7350852 104.464489,45.6041608 104.464489,39.2131857 C104.464489,32.1047481 98.2611875,30.1085612 92.7877382,28.3462335" id="Fill-1" fill="#000000"></path><path d="M124.36917,43.7917787 C123.851894,43.7917787 123.364529,43.9795456 122.848133,44.1796539 C122.200658,44.4300098 121.466091,44.7138639 120.472006,44.7138639 C118.470641,44.7138639 117.538136,43.6762976 117.538136,41.4477781 L117.538136,27.3899452 L123.124365,27.3899452 C124.519602,27.3899452 125.493454,26.4132048 125.493454,25.0150908 C125.493454,23.5852416 124.519602,22.5855814 123.124365,22.5855814 L117.482714,22.5855814 L117.482714,18.7244596 C117.482714,17.1597357 116.350513,16.0234375 114.789888,16.0234375 C113.260053,16.0234375 112.149845,17.1597357 112.149845,18.7244596 L112.149845,22.5855814 L109.540592,22.5855814 C108.144475,22.5855814 107.169744,23.5623217 107.169744,24.9604357 C107.169744,26.3911664 108.144475,27.3899452 109.540592,27.3899452 L112.149845,27.3899452 L112.149845,41.0149446 C112.149845,46.6373725 115.028292,49.7350852 120.256474,49.7350852 C124.326944,49.7350852 126.522727,47.7287124 126.522727,45.8413467 C126.522727,44.8231742 125.782882,43.7917787 124.36917,43.7917787" id="Fill-2" fill="#000000"></path><path d="M134.160916,35.7660869 C134.160916,30.7038945 137.6879,26.8858077 142.364968,26.8858077 C147.012049,26.8858077 150.516102,30.7038945 150.516102,35.7660869 C150.516102,40.8592272 147.012049,44.6985354 142.364968,44.6985354 C137.764631,44.6985354 134.160916,40.7752257 134.160916,35.7660869 Z M153.217565,22.3948251 C151.626498,22.3948251 150.516102,23.4859597 150.516102,25.0483866 L150.516102,25.9105067 C148.375569,23.2861247 145.261346,21.850142 141.660277,21.850142 C134.335546,21.850142 128.81179,27.8328135 128.81179,35.7660869 C128.81179,43.7294239 134.335546,49.7350852 141.660277,49.7350852 C145.233123,49.7350852 148.348229,48.2460491 150.516102,45.5244022 L150.516102,46.5368407 C150.516102,48.0992676 151.626498,49.1912864 153.217565,49.1912864 C154.776,49.1912864 155.864347,48.0992676 155.864347,46.5368407 L155.864347,25.0483866 C155.864347,23.4859597 154.776,22.3948251 153.217565,22.3948251 L153.217565,22.3948251 Z" id="Fill-3" fill="#000000"></path><path d="M176.502903,26.8858077 C178.972313,26.8858077 180.429264,27.5259871 181.599588,28.0388381 C182.38539,28.3836861 183.063595,28.6816702 183.826467,28.6816702 C185.088511,28.6816702 186.038352,27.7514647 186.038352,26.5170855 C186.038352,23.9439886 181.931195,21.850142 176.881252,21.850142 C168.682812,21.850142 162.731534,27.7028323 162.731534,35.7660869 C162.731534,43.8594051 168.636951,49.7350852 176.771892,49.7350852 C181.795377,49.7350852 186.038352,47.6217857 186.038352,45.1220795 C186.038352,43.8364153 185.107914,42.9026729 183.826467,42.9026729 C183.063595,42.9026729 182.38539,43.2015412 181.599588,43.5463892 C180.429264,44.0601244 178.972313,44.6985354 176.502903,44.6985354 C171.622291,44.6985354 168.080452,40.9414602 168.080452,35.7660869 C168.080452,30.6207772 171.622291,26.8858077 176.502903,26.8858077" id="Fill-4" fill="#000000"></path><g id="Group-9" transform="translate(11.861506, 0.000000)"><mask id="mask-2" fill="white"><use xlink:href="#path-1"></use></mask><g id="Clip-6"></g><path d="M236.018725,13.6136217 C234.452147,13.6136217 233.314744,14.7517713 233.314744,16.3202617 L233.314744,35.2384645 C233.314744,40.7940131 230.00409,44.383426 224.881363,44.383426 C219.838113,44.383426 216.448865,40.7082984 216.448865,35.2384645 L216.448865,16.3202617 C216.448865,14.7517713 215.288502,13.6136217 213.689251,13.6136217 C212.123556,13.6136217 210.986153,14.7517713 210.986153,16.3202617 L210.986153,35.2384645 C210.986153,43.9133207 216.549536,49.7428029 224.828379,49.7428029 C233.171686,49.7428029 238.777456,43.9133207 238.777456,35.2384645 L238.777456,16.3202617 C238.777456,14.7517713 237.617093,13.6136217 236.018725,13.6136217" id="Fill-5" fill="#000000" mask="url(#mask-2)"></path><path d="M268.952182,35.890603 C268.952182,40.917725 265.444602,44.7094953 260.791671,44.7094953 C256.10695,44.7094953 252.574644,40.917725 252.574644,35.890603 C252.574644,30.8537607 256.184661,26.9082343 260.791671,26.9082343 C265.444602,26.9082343 268.952182,30.770697 268.952182,35.890603 Z M261.442499,21.8758103 C257.838663,21.8758103 254.718754,23.3108685 252.574644,25.9344448 L252.574644,25.071996 C252.574644,23.5105749 251.485811,22.4201427 249.924531,22.4201427 C248.332344,22.4201427 247.220551,23.5105749 247.220551,25.071996 L247.220551,57.4739139 C247.220551,59.0680303 248.332344,60.1805539 249.924531,60.1805539 C251.460201,60.1805539 252.574644,59.0415206 252.574644,57.4739139 L252.574644,45.5781296 C254.759375,48.2706311 257.880168,49.7428029 261.442499,49.7428029 C268.77645,49.7428029 274.307158,43.7630991 274.307158,35.8358163 C274.307158,27.8776055 268.77645,21.8758103 261.442499,21.8758103 L261.442499,21.8758103 Z" id="Fill-7" fill="#000000" mask="url(#mask-2)"></path><path d="M17.0166212,33.9235835 C18.4242452,33.9235835 19.5687124,32.7783647 19.5687124,31.3698162 C19.5687124,29.9621513 18.4242452,28.8169324 17.0166212,28.8169324 C10.48627,28.8169324 5.17191528,23.499971 5.17191528,16.9644473 C5.17191528,10.4298072 10.48627,5.11284578 17.0166212,5.11284578 C18.4242452,5.11284578 19.5687124,3.96674325 19.5687124,2.55907838 C19.5687124,1.15141352 18.4242452,0.00531098691 17.0166212,0.00531098691 C7.67190502,0.00531098691 0.0694989256,7.61271012 0.0694989256,16.9644473 C0.0694989256,26.3153008 7.67190502,33.9235835 17.0166212,33.9235835" id="Fill-8" fill="#000000" mask="url(#mask-2)"></path></g><path d="M26.2201705,16.912543 C26.2201705,18.3202689 27.3682688,19.4664212 28.779473,19.4664212 C35.3314291,19.4664212 40.662645,24.7827296 40.662645,31.3185369 C40.662645,37.8534606 35.3314291,43.1706527 28.779473,43.1706527 C27.3682688,43.1706527 26.2201705,44.3168049 26.2201705,45.7254146 C26.2201705,47.1322568 27.3682688,48.2784091 28.779473,48.2784091 C38.1547234,48.2784091 45.78125,40.6706799 45.78125,31.3185369 C45.78125,21.9672777 38.1547234,14.3586648 28.779473,14.3586648 C27.3682688,14.3586648 26.2201705,15.504817 26.2201705,16.912543" id="Fill-10" fill="#000000"></path><path d="M58.8332192,31.6306818 C57.4247233,31.6306818 56.2788283,32.7781598 56.2788283,34.1886015 C56.2788283,48.3160386 44.8013108,59.8094117 30.6942472,59.8094117 C16.5854152,59.8094117 5.10966598,48.3160386 5.10966598,34.1886015 C5.10966598,32.7781598 3.96377099,31.6306818 2.5543909,31.6306818 C1.14589498,31.6306818 0,32.7781598 0,34.1886015 C0,51.1378073 13.7693075,64.9261364 30.6942472,64.9261364 C47.6183026,64.9261364 61.3884943,51.1378073 61.3884943,34.1886015 C61.3884943,32.7781598 60.2425993,31.6306818 58.8332192,31.6306818" id="Fill-11" fill="#000000"></path><path d="M216.004261,24.7143226 C216.004261,23.3105766 214.861243,22.1692623 213.455401,22.1692623 C212.050441,22.1692623 210.907423,23.3105766 210.907423,24.7143226 C210.907423,29.3359409 207.14146,33.0945282 202.513824,33.0945282 L197.213253,33.0945282 L197.213253,13.6728117 C197.213253,12.1413723 196.076409,11.0291193 194.511814,11.0291193 C192.952512,11.0291193 191.865057,12.1167143 191.865057,13.6728117 L191.865057,46.3975322 C191.865057,47.9536296 192.976325,49.0412246 194.566496,49.0412246 C196.100222,49.0412246 197.213253,47.9289716 197.213253,46.3975322 L197.213253,38.1837682 L202.513824,38.1837682 C207.14146,38.1837682 210.907423,41.9441169 210.907423,46.5648545 C210.907423,47.9686006 212.050441,49.1107955 213.455401,49.1107955 C214.861243,49.1107955 216.004261,47.9686006 216.004261,46.5648545 C216.004261,42.232968 213.913138,38.1767231 210.393241,35.6395886 C213.913138,33.102454 216.004261,29.0462091 216.004261,24.7143226" id="Fill-12" fill="#000000"></path></g></g></g></svg> \ No newline at end of file
diff --git a/smoke/astro.build-main/src/icons/sponsors/vercel.svg b/smoke/astro.build-main/src/icons/sponsors/vercel.svg
new file mode 100644
index 000000000..2863253d2
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/sponsors/vercel.svg
@@ -0,0 +1,3 @@
+<svg width="149" height="41" viewBox="0 0 149 41" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M73.1834 11.8477C67.8717 11.8477 64.0355 15.3207 64.0355 20.5188C64.0355 25.717 68.3484 29.19 73.6601 29.19C76.8834 29.19 79.6981 27.9188 81.4687 25.7851L77.7914 23.6514C76.8153 24.7182 75.3398 25.3311 73.6828 25.3311C71.3675 25.3311 69.4153 24.128 68.6889 22.1986H82.1951C82.3086 21.6538 82.354 21.109 82.354 20.5188C82.3313 15.298 78.5178 11.8477 73.1834 11.8477ZM68.6208 18.8164C69.2337 16.8869 70.8681 15.6839 73.1834 15.6839C75.4987 15.6839 77.1331 16.8869 77.746 18.8164H68.6208ZM125.051 11.8477C119.74 11.8477 115.904 15.3207 115.904 20.5188C115.904 25.717 120.217 29.19 125.528 29.19C128.752 29.19 131.566 27.9188 133.337 25.7851L129.659 23.6514C128.683 24.7182 127.208 25.3311 125.551 25.3311C123.236 25.3311 121.283 24.128 120.557 22.1986H134.063C134.177 21.6538 134.222 21.109 134.222 20.5188C134.222 15.298 130.386 11.8477 125.051 11.8477ZM120.512 18.8164C121.125 16.8869 122.759 15.6839 125.074 15.6839C127.39 15.6839 129.024 16.8869 129.637 18.8164H120.512ZM101.717 20.5188C101.717 23.4017 103.601 25.3311 106.529 25.3311C108.504 25.3311 110.002 24.4231 110.774 22.9704L114.474 25.1041C112.953 27.6464 110.07 29.19 106.529 29.19C101.194 29.19 97.3809 25.717 97.3809 20.5188C97.3809 15.3207 101.217 11.8477 106.529 11.8477C110.07 11.8477 112.93 13.3912 114.474 15.9336L110.774 18.0673C110.002 16.5918 108.526 15.7066 106.529 15.7066C103.601 15.6839 101.717 17.6133 101.717 20.5188ZM141.44 6.53602V28.6906H137.105V6.53602H141.44ZM23.0405 4.12988L40.8368 34.9557H5.24414L23.0405 4.12988ZM67.554 6.53602L54.2067 29.6667L40.8595 6.53602H45.876L54.2294 20.9955L62.5828 6.53602H67.554ZM95.9282 12.3244V17.0004C95.4515 16.8642 94.9294 16.7734 94.3846 16.7734C91.5926 16.7734 89.5724 18.7029 89.5724 21.5857V28.7133H85.2368V12.3244H89.5724V16.7507C89.5724 14.2992 92.4098 12.3244 95.9282 12.3244Z" fill="black"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/wordmark-single-color.svg b/smoke/astro.build-main/src/icons/wordmark-single-color.svg
new file mode 100644
index 000000000..18021002c
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/wordmark-single-color.svg
@@ -0,0 +1,7 @@
+<svg width="86" height="22" viewBox="0 0 86 22" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M6.82891 21.6856C9.9424 21.6856 12.2775 20.5779 13.2355 18.6919C13.2355 19.59 13.2954 20.5181 13.4451 21.2366H18.5644C18.3249 20.1887 18.2051 18.7517 18.2051 16.8657V12.2553C18.2051 7.88447 15.6305 5.81879 9.91246 5.81879C4.91292 5.81879 1.55993 7.88447 1.17074 11.2674H6.4996C6.67922 9.80047 7.90666 8.99216 9.91246 8.99216C11.8883 8.99216 12.996 9.80046 12.996 11.477V11.926L7.57734 12.405C4.94285 12.6745 3.44598 13.1235 2.39817 13.842C1.29049 14.5904 0.72168 15.7281 0.72168 17.1351C0.72168 19.9492 3.0568 21.6856 6.82891 21.6856ZM8.80478 18.5721C7.06841 18.5721 6.0206 17.8836 6.0206 16.7759C6.0206 15.6383 6.88879 15.0395 9.07422 14.7701L13.0858 14.351V15.2491C13.0858 17.2549 11.3495 18.5721 8.80478 18.5721Z" fill="currentColor"/>
+ <path d="M29.3617 21.6856C34.5708 21.6856 37.2353 19.7397 37.2353 16.5963C37.2353 13.9917 35.7384 12.5547 32.116 12.0757L27.5954 11.5668C26.3081 11.3871 25.7692 11.0578 25.7692 10.3393C25.7692 9.47115 26.6374 9.08197 28.6133 9.08197C31.3376 9.08197 33.2236 9.71065 34.7505 10.9381L37.1754 8.51316C35.4989 6.77679 32.595 5.81879 29.0025 5.81879C23.943 5.81879 21.1289 7.61503 21.1289 10.6387C21.1289 13.2732 22.8653 14.7401 26.4578 15.2191L30.5293 15.6981C32.1459 15.9077 32.6249 16.2071 32.6249 16.9854C32.6249 17.8836 31.7268 18.3626 29.6312 18.3626C26.5177 18.3626 24.422 17.5243 23.015 15.9676L20.2607 18.2428C22.0869 20.5181 25.2004 21.6856 29.3617 21.6856Z" fill="currentColor"/>
+ <path d="M41.462 9.65078V15.9676C41.462 19.6798 43.5577 21.5659 48.0483 21.5659C49.4254 21.5659 50.5031 21.4162 51.521 21.1168V17.2249C50.9821 17.3447 50.3235 17.4644 49.4553 17.4644C47.5693 17.4644 46.6412 16.6262 46.6412 14.8599V9.65078H51.5509V6.26785H46.6412V0.789307L41.462 2.7053V6.26785H38.1091V9.65078H41.462Z" fill="currentColor"/>
+ <path d="M58.9866 6.26785H54.2565V21.2366H59.4357V15.6383C59.4357 14.0216 59.795 12.5547 60.7829 11.6266C61.5613 10.9081 62.669 10.519 64.2257 10.519C64.7945 10.519 65.2436 10.5788 65.7525 10.6387V5.93854C65.4232 5.87867 65.1837 5.87866 64.7646 5.87866C61.8008 5.87866 59.795 7.5851 58.9866 10.3693V6.26785Z" fill="currentColor"/>
+ <path d="M75.9871 21.6856C81.4657 21.6856 85.3276 18.7817 85.3276 13.7223C85.3276 8.69278 81.4657 5.81879 75.9871 5.81879C70.4786 5.81879 66.6167 8.69278 66.6167 13.7223C66.6167 18.7817 70.4786 21.6856 75.9871 21.6856ZM75.9871 18.2428C73.4724 18.2428 71.8857 16.6262 71.8857 13.7223C71.8857 10.8183 73.4724 9.26159 75.9871 9.26159C78.4719 9.26159 80.0586 10.8183 80.0586 13.7223C80.0586 16.6262 78.4719 18.2428 75.9871 18.2428Z" fill="currentColor"/>
+</svg>
diff --git a/smoke/astro.build-main/src/icons/wordmark.svg b/smoke/astro.build-main/src/icons/wordmark.svg
new file mode 100644
index 000000000..18021002c
--- /dev/null
+++ b/smoke/astro.build-main/src/icons/wordmark.svg
@@ -0,0 +1,7 @@
+<svg width="86" height="22" viewBox="0 0 86 22" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M6.82891 21.6856C9.9424 21.6856 12.2775 20.5779 13.2355 18.6919C13.2355 19.59 13.2954 20.5181 13.4451 21.2366H18.5644C18.3249 20.1887 18.2051 18.7517 18.2051 16.8657V12.2553C18.2051 7.88447 15.6305 5.81879 9.91246 5.81879C4.91292 5.81879 1.55993 7.88447 1.17074 11.2674H6.4996C6.67922 9.80047 7.90666 8.99216 9.91246 8.99216C11.8883 8.99216 12.996 9.80046 12.996 11.477V11.926L7.57734 12.405C4.94285 12.6745 3.44598 13.1235 2.39817 13.842C1.29049 14.5904 0.72168 15.7281 0.72168 17.1351C0.72168 19.9492 3.0568 21.6856 6.82891 21.6856ZM8.80478 18.5721C7.06841 18.5721 6.0206 17.8836 6.0206 16.7759C6.0206 15.6383 6.88879 15.0395 9.07422 14.7701L13.0858 14.351V15.2491C13.0858 17.2549 11.3495 18.5721 8.80478 18.5721Z" fill="currentColor"/>
+ <path d="M29.3617 21.6856C34.5708 21.6856 37.2353 19.7397 37.2353 16.5963C37.2353 13.9917 35.7384 12.5547 32.116 12.0757L27.5954 11.5668C26.3081 11.3871 25.7692 11.0578 25.7692 10.3393C25.7692 9.47115 26.6374 9.08197 28.6133 9.08197C31.3376 9.08197 33.2236 9.71065 34.7505 10.9381L37.1754 8.51316C35.4989 6.77679 32.595 5.81879 29.0025 5.81879C23.943 5.81879 21.1289 7.61503 21.1289 10.6387C21.1289 13.2732 22.8653 14.7401 26.4578 15.2191L30.5293 15.6981C32.1459 15.9077 32.6249 16.2071 32.6249 16.9854C32.6249 17.8836 31.7268 18.3626 29.6312 18.3626C26.5177 18.3626 24.422 17.5243 23.015 15.9676L20.2607 18.2428C22.0869 20.5181 25.2004 21.6856 29.3617 21.6856Z" fill="currentColor"/>
+ <path d="M41.462 9.65078V15.9676C41.462 19.6798 43.5577 21.5659 48.0483 21.5659C49.4254 21.5659 50.5031 21.4162 51.521 21.1168V17.2249C50.9821 17.3447 50.3235 17.4644 49.4553 17.4644C47.5693 17.4644 46.6412 16.6262 46.6412 14.8599V9.65078H51.5509V6.26785H46.6412V0.789307L41.462 2.7053V6.26785H38.1091V9.65078H41.462Z" fill="currentColor"/>
+ <path d="M58.9866 6.26785H54.2565V21.2366H59.4357V15.6383C59.4357 14.0216 59.795 12.5547 60.7829 11.6266C61.5613 10.9081 62.669 10.519 64.2257 10.519C64.7945 10.519 65.2436 10.5788 65.7525 10.6387V5.93854C65.4232 5.87867 65.1837 5.87866 64.7646 5.87866C61.8008 5.87866 59.795 7.5851 58.9866 10.3693V6.26785Z" fill="currentColor"/>
+ <path d="M75.9871 21.6856C81.4657 21.6856 85.3276 18.7817 85.3276 13.7223C85.3276 8.69278 81.4657 5.81879 75.9871 5.81879C70.4786 5.81879 66.6167 8.69278 66.6167 13.7223C66.6167 18.7817 70.4786 21.6856 75.9871 21.6856ZM75.9871 18.2428C73.4724 18.2428 71.8857 16.6262 71.8857 13.7223C71.8857 10.8183 73.4724 9.26159 75.9871 9.26159C78.4719 9.26159 80.0586 10.8183 80.0586 13.7223C80.0586 16.6262 78.4719 18.2428 75.9871 18.2428Z" fill="currentColor"/>
+</svg>
diff --git a/smoke/astro.build-main/src/layouts/Legal.astro b/smoke/astro.build-main/src/layouts/Legal.astro
new file mode 100644
index 000000000..dbdeb6e47
--- /dev/null
+++ b/smoke/astro.build-main/src/layouts/Legal.astro
@@ -0,0 +1,69 @@
+---
+import Page from './Page.astro';
+import Date from '../components/Date.astro';
+import Panel from '../components/Panel.astro';
+import { Markdown } from 'astro/components';
+
+const { content: { header = '', title = '', description = '', updated_date } = {} } = Astro.props;
+---
+
+<Page {...{ title, description }}>
+ <Panel size="md" background="white linear-gradient(180deg, #E5DAEE 0%, rgba(255, 255, 255, 0) 24rem)">
+ <div id="article">
+ <header>
+ <h1 class="head-md text-gradient">{title}</h1>
+ <p>Last updated on <Date value={updated_date} />.</p>
+ {header && <Markdown content={header} />}
+ </header>
+
+ <hr>
+
+ <slot />
+ </div>
+ </Panel>
+</Page>
+
+
+<style>
+ #article {
+ max-width: 48rem;
+ padding-bottom: 4rem;
+ display: flex;
+ flex-flow: column nowrap;
+ font-family: var(--font-body);
+ font-size: var(--size-500);
+ line-height: 1.3;
+ color: var(--color-midnight);
+ }
+ :where(#article > :global(* + *)) {
+ margin-top: 1em;
+ }
+ #article :global(h3) {
+ margin-top: 2em;
+ margin-bottom: -0.5em;
+ }
+ #article :global(.panel h3) {
+ margin-top: 0;
+ margin-bottom: 0.5em;
+ }
+ #article :global(h3:nth-child(2)) {
+ margin-top: 0;
+ }
+ header {
+ padding: 3rem 0 2rem;
+ }
+ header h1 {
+ margin-bottom: 0.5rem;
+ }
+ header > p {
+ font-family: var(--font-display);
+ }
+ header > p + p {
+ margin-top: 1em;
+ font-family: var(--font-body);
+ }
+ :global(.panel) {
+ margin-top: 2rem;
+ margin-bottom: 2rem;
+ }
+</style>
diff --git a/smoke/astro.build-main/src/layouts/Page.astro b/smoke/astro.build-main/src/layouts/Page.astro
new file mode 100644
index 000000000..1554271bd
--- /dev/null
+++ b/smoke/astro.build-main/src/layouts/Page.astro
@@ -0,0 +1,49 @@
+---
+import BaseHead from '../components/BaseHead.astro';
+import BaseLayout from '../components/BaseLayout.astro';
+import Nav from '../components/Nav.astro';
+import Footer from '../components/Footer.astro';
+
+import { smartypants } from 'smartypants';
+
+let { title, description } = Astro.props;
+title = smartypants(title, 1);
+const meta = {
+ title: `${title} | Astro`,
+ description,
+ canonicalURL: Astro.request.canonicalURL
+}
+---
+
+<html lang="en">
+
+<head>
+ <BaseHead {...meta} />
+ <slot name="head" />
+
+ <style>
+ :root {
+ scroll-padding-top: 10rem;
+ background: var(--color-tan);
+ }
+ :global(main) {
+ padding-bottom: 8rem;
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ }
+ </style>
+</head>
+
+<body>
+ <BaseLayout container>
+ <Nav slot="nav" />
+
+ <slot />
+
+ <Footer slot="footer" />
+ </BaseLayout>
+</body>
+
+</html>
diff --git a/smoke/astro.build-main/src/layouts/Post.astro b/smoke/astro.build-main/src/layouts/Post.astro
new file mode 100644
index 000000000..493a907dc
--- /dev/null
+++ b/smoke/astro.build-main/src/layouts/Post.astro
@@ -0,0 +1,88 @@
+---
+import BaseHead from '../components/BaseHead.astro';
+import BaseLayout from '../components/BaseLayout.astro';
+import Nav from '../components/Nav.astro';
+import Wrapper from '../components/Wrapper.astro';
+import Footer from '../components/Footer.astro';
+import Card from '../components/blog/Card.astro';
+import Outro from '../components/blog/Outro.astro';
+import Panel from '../components/Panel.astro';
+
+let { content: { title, publishDate, description, authors, socialImage } } = Astro.props;
+const { canonicalURL } = Astro.request;
+const meta = {
+ title: `${title} | Astro`,
+ description,
+ canonicalURL,
+ image: socialImage,
+}
+
+console.log(Astro.props);
+---
+
+<html lang="en">
+
+<head>
+ <BaseHead {...meta} />
+ <style>
+ :root {
+ scroll-padding-top: 10rem;
+ background: var(--color-tan);
+ }
+ :global(#content) {
+ min-height: 100vh;
+ padding: 4rem 0;
+ }
+ #article {
+ max-width: 48rem;
+ padding-bottom: 2rem;
+ display: flex;
+ flex-flow: column nowrap;
+ font-family: var(--font-body);
+ font-size: var(--size-500);
+ line-height: 1.3;
+ color: var(--color-midnight);
+ z-index: 1;
+ }
+ :where(#article > :global(* + *)) {
+ margin-top: 1em;
+ }
+ #article :is(h2):not([class]) {
+ margin-top: 3em;
+ }
+ #article > :global(.note:last-child) {
+ margin-top: 8rem;
+ }
+ .hero {
+ display: flex;
+ flex-flow: row wrap;
+ padding: 3rem 0 2rem;
+ max-width: 100%;
+ }
+ </style>
+</head>
+
+<body>
+ <BaseLayout wrapper={Wrapper}>
+ <Nav slot="nav" />
+
+ <Panel size="md" background="white linear-gradient(180deg, #E5DAEE 0%, rgba(255, 255, 255, 0) 24rem)">
+ <div id="article">
+ <header class="hero">
+ <Card post={{ title, description, authors, publishDate }} variant="hero" />
+ </header>
+
+ <hr>
+
+ <slot />
+
+ <Outro tweet={{ title, href: canonicalURL.toString() }} />
+ </div>
+ </Panel>
+
+
+ <Footer slot="footer" />
+ </BaseLayout>
+</body>
+
+</html>
diff --git a/smoke/astro.build-main/src/mentions.ts b/smoke/astro.build-main/src/mentions.ts
new file mode 100644
index 000000000..f70a2d5a2
--- /dev/null
+++ b/smoke/astro.build-main/src/mentions.ts
@@ -0,0 +1,33 @@
+interface Mention {
+ name: string;
+ avatar: string;
+ twitter: string;
+}
+
+export const mentions: Record<string, Mention> = {
+ fred: {
+ name: 'Fred K. Schott',
+ avatar: '/authors/fred.jpg',
+ twitter: 'https://twitter.com/FredKSchott'
+ },
+ drew: {
+ name: 'Drew Powers',
+ avatar: '/authors/drew.jpg',
+ twitter: 'https://twitter.com/drwpow'
+ },
+ matthew: {
+ name: 'Matthew Phillips',
+ avatar: '/authors/matthew.jpg',
+ twitter: 'https://twitter.com/matthewcp'
+ },
+ nate: {
+ name: 'Nate Moore',
+ avatar: '/authors/nate.jpg',
+ twitter: 'https://twitter.com/n_moore'
+ },
+ jon: {
+ name: 'Jonathan Neal',
+ avatar: '/authors/jon.jpg',
+ twitter: 'https://twitter.com/jon_neal'
+ }
+}
diff --git a/smoke/astro.build-main/src/pages/404.astro b/smoke/astro.build-main/src/pages/404.astro
new file mode 100644
index 000000000..f3e9c4b8b
--- /dev/null
+++ b/smoke/astro.build-main/src/pages/404.astro
@@ -0,0 +1,97 @@
+---
+import BaseHead from '../components/BaseHead.astro';
+import BaseLayout from '../components/BaseLayout.astro';
+import Nav from '../components/Nav.astro';
+import PixelLink from '../components/PixelLink.astro';
+import Starfield from '../components/Starfield.astro';
+
+const meta = {
+ title: 'Page Not Found | Astro',
+ description: 'Astro is a new kind of static site builder for the modern web. Powerful developer experience meets lightweight output.',
+ canonicalURL: new URL('./404', Astro.site)
+}
+---
+
+<html lang="en">
+
+<head>
+ <BaseHead {...meta} />
+ <style>
+ :root {
+ scroll-padding-top: 10rem;
+ }
+ :global(main) {
+ min-height: calc(100vh - 32px);
+ max-width: 100vw;
+ overflow: hidden;
+ color: white;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ background-image: var(--gradient-pop-4);
+ }
+ :global(nav) {
+ margin-top: 0 !important;
+ }
+ .text {
+ z-index: 1;
+ padding: 1rem;
+ margin-top: -4rem;
+ }
+ h2 {
+ --fill: white;
+ font-size: 4rem;
+ font-size: var(--size-900);
+ font-family: var(--font-display);
+ line-height: 1.1;
+ margin-bottom: 1.25rem;
+ }
+ p {
+ font-size: var(--size-500);
+ max-width: min(64ch, calc(100% - 1rem));
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1.5em;
+ }
+ .cta {
+ position: relative;
+ left: 0;
+ right: 0;
+ display: flex;
+ flex-flow: row wrap;
+ align-items: center;
+ justify-content: center;
+ z-index: 1;
+ }
+
+ @media (min-width: 52rem) {
+ .cta {
+ position: absolute;
+ }
+ }
+ .cta > :global(*) {
+ box-sizing: border-box;
+ margin: 0.5rem;
+ }
+ </style>
+ <base href="/404" />
+</head>
+
+<body>
+ <BaseLayout>
+ <Nav invert marginBottom slot="nav" />
+
+ <Starfield height={64} />
+
+ <div class="container text">
+ <h2 class="text-gradient">Lost in space there, astronaut?</h2>
+ <p>We couldn&rsquo;t find the page you were looking for&mdash;let&rsquo;s get you back to HQ.</p>
+ <div class="cta container">
+ <PixelLink href="/">Return Home</PixelLink>
+ </div>
+ </div>
+ </BaseLayout>
+</body>
+
+</html>
diff --git a/smoke/astro.build-main/src/pages/about.astro b/smoke/astro.build-main/src/pages/about.astro
new file mode 100644
index 000000000..de1bcfa19
--- /dev/null
+++ b/smoke/astro.build-main/src/pages/about.astro
@@ -0,0 +1,118 @@
+---
+import Page from '../layouts/Page.astro';
+import ContributorsAvatarList from '../components/ContributorsAvatarList.astro';
+import PixelLink from '../components/PixelLink.astro';
+---
+
+<Page title="About">
+ <header>
+ <h1 class="title text-gradient">What is Astro?</h1>
+ </header>
+
+ <section>
+ <p><strong>Astro</strong> helps web developers build better websites in less time. Astro is an MIT-licensed, open source build tool that combines a modern developer experience with efficient, lightweight output. The end result? Beautiful websites that work great on any device, across any internet connection.</p>
+
+ <p>Astro launched 2021 and revolutionized web performance by integrating <strong>partial hydration</strong> -- a previously difficult-to-setup technology -- directly into the Astro runtime with built-in support for popular frameworks React, Svelte, Vue, and Solid.js.</p>
+
+ <p>In less than a year, Astro amassed a huge community of contributors and an even larger audience of 10,000+ users at companies like Google, Netlify, Trivago and more. Astro won the <a href="https://jamstackconf.com/jammies/">"Ecosystem Innovation Award"</a> at last year's JamstackConf.</p>
+
+ <!-- <p>TODO Block - Bulleted highlights on the team.</p> -->
+ <!-- <p>TODO Block - Call to action.</p> -->
+
+ </section>
+ <section style="margin: 2rem 0;">
+ <h2 class="title text-gradient">Our Community</h2>
+ <p><strong>Astro</strong> is an open source project powered by hundreds of contributors making thousands of individual contributions. You can see many of us on this page!</p>
+
+ <p>Open source means that all of our work is done in public, and anyone can get involved and contribute. Visit us <a href="https://astro.build/chat">on Discord</a> and come say "hi 👋" to learn more.</p>
+
+ <p>Want to get paid to work on Astro? Check out open roles at <a href="/company">The Astro Technology Company</a>.</p>
+ <ContributorsAvatarList />
+ </section>
+ <!-- TODO: instructions on how to get involved - either full time (link to company) or through open source
+
+
+ <section style="margin: 2rem 0;">
+ <h2 id="get-involved" class="title text-gradient">Get involved</h2>
+ <p>instructions on how to get involved - either full time (link to company) or through open source</p>
+ </section>
+ -->
+</Page>
+
+<style>
+ header {
+ padding: 3rem 2rem 2rem;
+ width: 100%;
+ max-width: 64rem;
+ }
+ section {
+ padding: 0 2rem;
+ width: 100%;
+ max-width: 64rem;
+ flex-grow: 1;
+ }
+ section p {
+ margin-bottom: 1rem;
+ }
+ h1.title {
+ font-family: var(--font-display);
+ --fill: var(--gradient-pop-1);
+ font-size: var(--size-900);
+ }
+ h2.title {
+ font-family: var(--font-display);
+ --fill: var(--gradient-pop-1);
+ font-size: var(--size-800);
+ text-align: center;
+ margin: 1.5rem;
+ }
+ .posts {
+ width: 100%;
+ max-width: 64rem;
+ padding: 2rem;
+ padding-bottom: 4rem;
+ display: flex;
+ flex-flow: column nowrap;
+ font-family: var(--font-body);
+ font-size: var(--size-500);
+ line-height: 1.3;
+ color: var(--color-midnight);
+ }
+ .post + .post {
+ margin-top: 1rem;
+ }
+ .post {
+ position: relative;
+ display: flex;
+ flex-flow: row wrap;
+ padding: 2rem;
+ margin-left: -2rem;
+ margin-right: -2rem;
+ background: var(--color-tan);
+ box-shadow: var(--shadow-sm);
+ border-radius: var(--corner-md);
+ font-family: var(--font-body);
+ font-size: var(--size-500);
+ line-height: 1.3;
+ color: var(--color-midnight);
+ }
+ .post:hover,
+ .post:focus-within {
+ background: linear-gradient(to top, var(--color-dawn), white);
+ }
+ :is(.post:hover, .post:focus-within) .title {
+ --fill: var(--gradient-pop-1);
+ }
+ .post :global(a) {
+ z-index: 1;
+ }
+ .overlay {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ z-index: 0;
+ }
+</style>
diff --git a/smoke/astro.build-main/src/pages/blog/[...slug].astro b/smoke/astro.build-main/src/pages/blog/[...slug].astro
new file mode 100644
index 000000000..a2f07024d
--- /dev/null
+++ b/smoke/astro.build-main/src/pages/blog/[...slug].astro
@@ -0,0 +1,32 @@
+---
+import Post from '../../layouts/Post.astro';
+import { getAllPosts } from '../../posts';
+
+export async function getStaticPaths({ rss }) {
+ const posts = await getAllPosts();
+
+ rss({
+ title: 'Astro Blog',
+ description: 'Astro updates, announcements, and technical deep-dives.',
+ items: posts.map(p => ({
+ title: p.title,
+ description: p.description,
+ link: p.href,
+ pubDate: p.publishDate,
+ }))
+ });
+
+ return posts.map((p) => {
+ return {
+ params: { slug: p.href.replace('/blog/', '') },
+ props: { post: p },
+ }
+ });
+}
+
+const { post } = Astro.props;
+---
+
+<Post content={post}>
+ <post.Content />
+</Post>
diff --git a/smoke/astro.build-main/src/pages/blog/index.astro b/smoke/astro.build-main/src/pages/blog/index.astro
new file mode 100644
index 000000000..a14361b76
--- /dev/null
+++ b/smoke/astro.build-main/src/pages/blog/index.astro
@@ -0,0 +1,84 @@
+---
+import Page from '../../layouts/Page.astro';
+import Card from '../../components/blog/Card.astro';
+import { getAllPosts } from '../../posts';
+
+const posts = await getAllPosts();
+---
+
+<Page title="Blog">
+ <header>
+ <h1 class="title text-gradient">Blog</h1>
+ <p></p>
+ </header>
+
+ <ul role="list" class="posts">
+ {posts.map(post => {
+ return (
+ <li class="post">
+ <a class="overlay" href={post.href}></a>
+ <Card post={post} variant="summary" />
+ </li>
+ )
+ })}
+ </ul>
+</Page>
+
+<style>
+ header {
+ padding: 3rem 2rem 2rem;
+ width: 100%;
+ max-width: 64rem;
+ flex-grow: 1;
+ }
+ h1.title {
+ font-family: var(--font-display);
+ --fill: var(--gradient-pop-1);
+ font-size: var(--size-900);
+ }
+ .posts {
+ width: 100%;
+ max-width: 64rem;
+ padding: 2rem;
+ padding-bottom: 4rem;
+ display: flex;
+ flex-flow: column nowrap;
+ font-family: var(--font-body);
+ font-size: var(--size-500);
+ line-height: 1.3;
+ color: var(--color-midnight);
+ }
+ .post + .post {
+ margin-top: 1rem;
+ }
+ .post {
+ position: relative;
+ display: flex;
+ flex-flow: row wrap;
+ padding: 3rem 2rem;
+ margin-left: -2rem;
+ margin-right: -2rem;
+ background: white;
+ box-shadow: var(--shadow-md);
+ border-radius: var(--corner-md);
+ font-family: var(--font-body);
+ font-size: var(--size-500);
+ line-height: 1.3;
+ color: var(--color-midnight);
+ }
+ :is(.post:hover, .post:focus-within) .title {
+ --fill: var(--gradient-pop-1);
+ }
+ .post :global(a) {
+ z-index: 1;
+ }
+ .overlay {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ z-index: 0;
+ }
+</style>
diff --git a/smoke/astro.build-main/src/pages/company.astro b/smoke/astro.build-main/src/pages/company.astro
new file mode 100644
index 000000000..efda898c5
--- /dev/null
+++ b/smoke/astro.build-main/src/pages/company.astro
@@ -0,0 +1,123 @@
+---
+import Page from '../layouts/Page.astro';
+import Card from '../components/careers/Card.astro';
+
+const posts = [{
+ href: 'https://astroinc.notion.site/Software-Engineer-Astro-Open-Source-135c3ffc55494ef0a6b2f9767f02deda',
+ title: 'Software Engineer ⌁ Astro, Open Source',
+ description: 'Full Time • Remote • United States, Canada'
+}, {
+ href: 'https://astroinc.notion.site/Software-Engineer-Frontend-UI-37ef02b03a2a45d8aefa0cc47c24a405',
+ title: 'Software Engineer ⌁ Frontend UI',
+ description: 'Full Time • Remote • United States, Canada'
+}, {
+ href: 'https://astroinc.notion.site/Product-Designer-50d5ff095e2445edaf3fa06d9f3caa72',
+ title: 'Product Designer',
+ description: 'Full Time • Remote • United States, Canada'
+}]
+---
+
+<Page title="The Astro Technology Company" description="We're hiring! The Astro Technology Company was formed to support the long-term success of the Astro project and grow Astro into the best possible platform for web development. Learn more.">
+ <header>
+ <h1 class="title text-gradient">The Astro Technology Company</h1>
+ </header>
+
+ <section>
+ <p><strong>The Astro Technology Company</strong> was announced in 2022 to support the long-term success of the Astro project. Its mission is to grow Astro into the best possible platform for web development. You can read more in <a href="/blog/the-astro-technology-company">the official blog post.</a></p>
+ <p>If this mission sounds exciting, consider joining us! We are currently looking for talented, thoughtful people to help us make the Astro vision a reality. If you love the idea of working on tools used by 10,000+ web developers around the world, then the Astro Technology Company might be for you.</p>
+ </section>
+ <section>
+ <!-- <p>TODO Section - Some cool assets. Who we are? What we're about? etc. etc.</p> -->
+ </section>
+ <section>
+ <h2 class="title text-gradient">Open Positions</h2>
+ <p>Our team is growing, and we are currently hiring for the following positions. We are mainly focused in hiring from the United States & Canada, but are open to anyone in overlapping timezones. To apply or just learn more, reach out to <a href="mailto:jobs@astro.build">jobs@astro.build.</a></p>
+ <ul role="list" class="posts">
+ {posts.map(post => {
+ return (
+ <li class="post">
+ <a class="overlay" href={post.href}></a>
+ <Card career={post} variant="summary" />
+ </li>
+ )
+ })}
+ </ul>
+ </section>
+</Page>
+
+<style>
+ header {
+ padding: 3rem 2rem 2rem;
+ width: 100%;
+ max-width: 64rem;
+ }
+ section {
+ padding: 0 2rem;
+ width: 100%;
+ max-width: 64rem;
+ flex-grow: 1;
+ }
+ section p {
+ margin-bottom: 1rem;
+ }
+ h1.title {
+ font-family: var(--font-display);
+ --fill: var(--gradient-pop-1);
+ font-size: var(--size-900);
+ }
+ h2.title {
+ font-family: var(--font-display);
+ --fill: var(--gradient-pop-1);
+ font-size: var(--size-800);
+ margin: 1rem 0;
+ }
+ .posts {
+ width: 100%;
+ max-width: 64rem;
+ padding: 2rem;
+ padding-bottom: 4rem;
+ display: flex;
+ flex-flow: column nowrap;
+ font-family: var(--font-body);
+ font-size: var(--size-500);
+ line-height: 1.3;
+ color: var(--color-midnight);
+ }
+ .post + .post {
+ margin-top: 1rem;
+ }
+ .post {
+ position: relative;
+ display: flex;
+ flex-flow: row wrap;
+ padding: 2rem;
+ margin-left: -2rem;
+ margin-right: -2rem;
+ background: white;
+ box-shadow: var(--shadow-sm);
+ border-radius: var(--corner-md);
+ font-family: var(--font-body);
+ font-size: var(--size-500);
+ line-height: 1.3;
+ color: var(--color-midnight);
+ }
+ .post:hover,
+ .post:focus-within {
+ background: linear-gradient(to top, var(--color-dawn), white);
+ }
+ :is(.post:hover, .post:focus-within) .title {
+ --fill: var(--gradient-pop-1);
+ }
+ .post :global(a) {
+ z-index: 1;
+ }
+ .overlay {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ z-index: 0;
+ }
+</style>
diff --git a/smoke/astro.build-main/src/pages/index.astro b/smoke/astro.build-main/src/pages/index.astro
new file mode 100644
index 000000000..b4feab978
--- /dev/null
+++ b/smoke/astro.build-main/src/pages/index.astro
@@ -0,0 +1,183 @@
+---
+import { Icon, Sprite } from 'astro-icon';
+import Banner from '../components/Banner.astro';
+import BaseHead from '../components/BaseHead.astro';
+import BaseLayout from '../components/BaseLayout.astro';
+import Nav from '../components/Nav.astro';
+import PixelLink from '../components/PixelLink.astro';
+import Panel from '../components/Panel.astro';
+import Checklist from '../components/Checklist.astro';
+import ChecklistItem from '../components/ChecklistItem.astro';
+import ArrowLink from '../components/ArrowLink.astro';
+import Footer from '../components/Footer.astro';
+
+import Title from '../components/landing/Title.astro';
+import Hero from '../components/landing/Hero.astro';
+import Trusted from '../components/landing/Trusted.astro';
+import Demo from '../components/landing/Demo.astro';
+import DemoTTI from '../components/landing/DemoTTI.astro';
+import DemoPartialHydration from '../components/landing/DemoPartialHydration.astro';
+import Performance from '../components/landing/Performance.astro';
+import Section from '../components/landing/Section.astro';
+import Quote from '../components/landing/Quote.astro';
+import Integrations from '../components/landing/Integrations.astro';
+import Sponsors from '../components/landing/Sponsors.astro';
+
+const headline = 'Build fast websites, faster.'
+const tagline = 'Astro is a new kind of static site builder for the modern web. Powerful developer experience meets lightweight output.'
+
+const meta = {
+ title: 'Astro',
+ description: `${headline} ${tagline}`,
+ canonicalURL: new URL('.', Astro.site)
+}
+---
+
+<html lang="en">
+
+<head>
+ <BaseHead {...meta} />
+ <style global>
+ :root {
+ scroll-padding-top: 10rem;
+ }
+ main {
+ max-width: 100vw;
+ overflow: hidden;
+ }
+ </style>
+</head>
+
+<body>
+<Banner href="/blog/the-astro-technology-company/" items={[`Announcing the Astro Technology Company!`, `Investing in the future of Astro.`]} />
+<BaseLayout>
+ <Nav marginBottom slot="nav" />
+
+ <Hero>
+ <Fragment slot="title">{headline}</Fragment>
+ <Fragment slot="tagline">{tagline}</Fragment>
+ <PixelLink href="https://docs.astro.build">Read the docs</PixelLink>
+ <ArrowLink always href="https://astro.new">Get Started</ArrowLink>
+ </Hero>
+
+ <Trusted>
+ <Fragment slot="title">Developers around the world rely on Astro</Fragment>
+ <Fragment>
+ <li>
+ <Icon name="logos/google" title="Google" height="36" />
+ </li>
+ <li>
+ <Icon name="logos/netlify" title="Netlify" height="36" />
+ </li>
+ <li>
+ <Icon name="logos/trivago" title="Trivago" height="40" />
+ </li>
+ <li>
+ <Icon name="logos/divriots" title="Div Riots" height="28" />
+ </li>
+ <li>
+ <Icon name="logos/monogram" title="monogram" height="40" width="240" />
+ </li>
+ </Fragment>
+ </Trusted>
+
+ <Demo gradient>
+ <Title slot="title" id="more-html-less-javascript">More HTML, Less JavaScript</Title>
+ <p>Astro uses a modern server-side templating language that renders directly to HTML &amp; CSS, eliminating heavy JavaScript automatically.</p>
+ <DemoTTI slot="illustration" />
+ </Demo>
+
+ <Demo reverse>
+ <Title slot="title" id="automatic-partial-hydration">Automatic Partial Hydration</Title>
+ <p>Meet Astro&rsquo;s magic tool for web optimization. Astro is the first site builder to eliminate dead code from your website and only hydrate your essential, interactive UI.</p>
+ <ArrowLink always href="https://docs.astro.build/en/core-concepts/component-hydration/">Learn more about Partial Hydration</ArrowLink>
+ <DemoPartialHydration slot="illustration" />
+ </Demo>
+
+ <Section>
+ <Panel pad={2} background="var(--gradient-pop-3)">
+ <Fragment slot="title">
+ <h3 class="head-md"><Title id="byof">Bring your favorite framework</Title></h3>
+ <p style="margin-top: 0.5rem;">Astro natively supports every popular framework&mdash;you can even mix and match!</p>
+ </Fragment>
+
+ <Checklist cols={4}>
+ <ChecklistItem href="https://astro.new/framework-react">
+ <Sprite role="img" name="frameworks/react" size={24} slot="icon" />
+ React
+ </ChecklistItem>
+ <ChecklistItem href="https://astro.new/framework-svelte">
+ <Sprite role="img" name="frameworks/svelte" size={24} slot="icon" />
+ Svelte
+ </ChecklistItem>
+ <ChecklistItem href="https://astro.new/framework-vue">
+ <Sprite role="img" name="frameworks/vue" size={24} slot="icon" />
+ Vue
+ </ChecklistItem>
+ <ChecklistItem href="https://astro.new/framework-solid">
+ <Sprite role="img" name="frameworks/solid" size={24} slot="icon" />
+ Solid
+ </ChecklistItem>
+ <ChecklistItem href="https://astro.new/framework-preact">
+ <Sprite role="img" name="frameworks/preact" size={24} slot="icon" />
+ Preact
+ </ChecklistItem>
+ <ChecklistItem href="https://astro.new/framework-alpine">
+ <Sprite role="img" name="frameworks/alpine" size={24} slot="icon" />
+ Alpine
+ </ChecklistItem>
+ <ChecklistItem href="https://astro.new/framework-lit">
+ <Sprite role="img" name="frameworks/lit" size={24} slot="icon" />
+ Lit
+ </ChecklistItem>
+ <ChecklistItem href="https://astro.new/minimal">
+ <Sprite role="img" name="frameworks/js" size={24} slot="icon" />
+ Vanilla
+ </ChecklistItem>
+ </Checklist>
+ </Panel>
+ </Section>
+
+ <Integrations>
+ <Title slot="title" id="build-extend-deploy">
+ Build, Extend, Deploy
+ </Title>
+ <Fragment>
+ <p>Whatever you&rsquo;re building, Astro has you covered. With convenient, out-of-the-box features and even more ready-to-use integrations, Astro has everything that you need to build.</p>
+ </Fragment>
+ </Integrations>
+
+ <Performance>
+ <Title slot="title" id="peak-performance">Peak Performance</Title>
+ <Fragment>
+ <p>Site performance has a tangible impact on the success of your business. Astro sites can be up to 40% faster and use 90% less JavaScript compared to leading static site generators.</p>
+ <p style="opacity: 0.75; margin-top: 1rem;">
+ <small>87% of websites currently fail Google's Core Web Vitals (CWV) benchmark. Astro is on a mission to change that.</small>
+ </p>
+ </Fragment>
+ </Performance>
+
+ <Quote pad={1.5}>
+ <a slot="logo" href="https://devtools.fm/episode/14">
+ <span>
+ <Sprite width="9em" height="3em" name="logos/devtoolsfm" title="devtools.fm" />
+ </span>
+ </a>
+ <Fragment slot="quote">Astro is really shaping up to be one of the formative ways to build mostly-static sites.</Fragment>
+ <Fragment slot="cite">Justin Bennett, devtools.fm Host</Fragment>
+ </Quote>
+
+ <Sponsors>
+ <Title id="sponsors" slot="title">Sponsored by</Title>
+ <ArrowLink always href="https://opencollective.com/astrodotbuild" slot="cta">Become a sponsor</ArrowLink>
+ </Sponsors>
+
+ <Footer slot="footer" />
+ </BaseLayout>
+
+ <script type="module" hoist>
+ import "/src/scripts/animations.ts";
+ </script>
+</body>
+
+</html>
diff --git a/smoke/astro.build-main/src/pages/privacy.md b/smoke/astro.build-main/src/pages/privacy.md
new file mode 100644
index 000000000..9b816358e
--- /dev/null
+++ b/smoke/astro.build-main/src/pages/privacy.md
@@ -0,0 +1,91 @@
+---
+setup: |
+ import Layout from '../layouts/Legal.astro'
+ import Panel from '../components/Panel.astro'
+title: Privacy Policy
+updated_date: Jan 6, 2022
+description: Astro's privacy policy
+header: |
+ In addition to this Privacy Policy, Astro also has [Terms of Service](/terms).
+---
+
+The Astro Privacy Policy describes the privacy practices of Astro website and services. The laws of California and the laws of the United States apply. If you are a resident of EU/EEA, the European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts) apply to Trans-Atlantic data transfers.
+
+### General Information
+
+We collect very limited personally identifiable information described below (the “data”) from [GitHub](https://help.github.com/articles/github-privacy-policy/) and of those who communicate with us directly via e-mail, aggregate information on what pages consumers access or visit, and information volunteered by the consumer (such as survey information and/or site registrations). The information we collect is used to provide our services, and to improve the quality of our services, and is not shared with or sold to other organizations for commercial purposes, except to provide products or services you've requested when we have your permission, or under the following circumstances:
+
+- It is necessary to share information in order to investigate, prevent, or take action regarding illegal activities, suspected fraud, situations involving potential threats to the physical safety of any person, violations of [Terms of Service](/terms), or as otherwise required by law.
+- We transfer information about you if Astro is acquired by or merged with another company. In this event, Astro will notify you before information about you is transferred and becomes subject to a different privacy policy.
+
+
+### Information Gathering and Usage
+
+Astro uses collected information for the following general purposes: products and services provision, billing, identification and authentication through GitHub, Bitbucket, services improvement, contact, and research. Astro uses personally identifiable information on billing address and/or payment information only for the sole purpose of payment processing for Astro services.
+
+Payment processing services enable us to process payments by credit card, bank transfer or other means. To ensure greater security, we share only the information necessary to execute the transaction with the financial intermediaries handling the transaction. Some of these services may also enable the sending of timed messages to our customer, such as emails containing invoices or notifications concerning the payment.
+
+### Cookies
+
+A cookie is a small amount of data, which often includes an anonymous unique identifier, which is sent to your browser from a web site's computers and stored on your computer's hard drive.
+
+You can control how websites use cookies by configuring the privacy settings within your browser. Note that if you disable cookies entirely, Astro websites and applications may not function properly.
+
+### Data Storage
+
+Astro uses third-party vendors and hosting partners to provide the necessary hardware, software, networking, storage, and related technology required to run Astro. Astro’s third-party vendors and hosting partners adhere to the European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts).
+
+### Data Retention and Deletion
+
+Data is kept for the time necessary to provide the products or services requested by the customer. We keep some of your personal data for as long as you are a user of the Astro Service. When you delete your account, we will delete your personal data and it will expire from backups; unless we are legally allowed or required to maintain certain personal data, including situations under the applicable laws to reveal personal data upon reasonable request of public authorities.
+
+### Rights of Data Subjects
+
+Data subject (customer) can always request Astro to allow access and correction, supplement or update of data. Subject to a reasonable request of a data subject, Astro will remove data pertaining to a data subject unless applicable laws impose a duty to retain data for certain time or identification, location and deletion of data imposes a disproportionate financial burden upon Astro. Any requests for access, correction or deletion of data should be directed to Astro by sending an email to [privacy@astro.build](mailto:privacy@astro.build).
+
+You may be aware that a European Union law, called the General Data Protection Regulation or "GDPR" gives certain rights to individuals in relation to their personal data. In order to enable you to exercise these rights with ease in relation to how Astro uses your personal data, we provide you with access to the following settings via your Account Settings page:
+
+
+- Remove Account - allows you to delete your account and associated personal data; and,
+- Notifications - allows you to manage communications you receive from Astro.
+
+As a user you may also request a copy of your data and that your data be updated, deleted, restricted or moved to another organization.
+
+### We may share your information with
+
+<Panel background="var(--color-dawn)">
+
+### Google Analytics (Google, Inc.)
+
+Google Inc. utilizes the Data collected to track and examine the use of this Application, to prepare reports on its activities and share them with other Google services.
+
+US – [Privacy Policy](https://www.google.com/intl/en/policies/privacy/)
+
+</Panel>
+
+### EU/EEA - US Data Transfers
+
+If you choose to provide Astro with your information, you consent to the transfer and storage of that information on our servers located in the United States. Astro uses Google Cloud data hosting services.
+
+On October 6, 2015, the European Court of Justice (ECJ) issued its decision in the case of Maximillian Schrems v. Data Protection Commissioner, finding that the U.S.-EU Safe Harbor Framework is invalid with immediate effect. The suspension of Safe Harbor affects many companies that need to transfer personal data from the European Union (EU) and the European Economic Area (EEA) to the United States and to other non-EU/EEA countries. The European Union (EU) is an economic and political partnership between [28 European countries](http://europa.eu/about-eu/countries/member-countries/index_en.htm) that together cover much of the European continent. The European Economic Area (EEA) unites the EU Member States and the three EEA [European Free Trade Association](http://www.efta.int/about-efta/european-free-trade-association) (EFTA) States (Iceland, Liechtenstein, and Norway) into an internal market governed by the same basic rules. These rules aim to enable goods, services, capital, and persons to move freely about the EEA in an open and competitive environment, a concept referred to as the four freedoms.
+
+Astro has evaluated various options that will allow for the transfer of personal data from the EU/EEA to non-EU/EEA countries. Like many companies, Astro has decided to authorize these personal data transfers using European Commission-approved Standard Contractual Clauses (also referred to as Model Contracts).
+
+Astro uses a new Data Processing Agreement (DPA), which includes Standard Contractual Clauses (SCCs), also referred to as Model Contracts. These SCCs provide a mechanism approved by the European Commission as offering adequate protection for data subjects when transferring personal data from the EU/EEA under the EU Data Protection Directive. For EU/EEA residents, any questions or concerns regarding the use or disclosure of your information should be directed to Astro by sending an email to [privacy@astro.build](mailto:privacy@astro.build). We will investigate and attempt to resolve complaints and disputes regarding use and disclosure of your information in accordance with this Privacy Policy.
+
+### Security
+
+We understand that the security of your data is important. We provide reasonable administrative, technical, and physical security controls to protect your personal information from unauthorized access, disclosure, modification, or unauthorized destruction. However, despite our efforts, no security controls are 100% effective and Astro cannot ensure or warrant the security of your data.
+
+### Links
+
+We may display content that links to third-party websites. We cannot control or be held responsible for third parties’ privacy practices and content. If you click on a third-party advertisement or link, please understand that you are leaving the Astro website and any personal data you provide will not be covered by this Policy. Please read their privacy policies to find out how they collect and process your personal data.
+
+### Changes
+
+Astro may periodically update this policy. We encourage you to periodically review our website for the latest information on our privacy practices.
+
+
+### Questions
+
+Thank you for reading our Privacy Policy. If you have any questions about this Policy, please contact our Data Protection Officer by emailing [privacy@astro.build](mailto:privacy@astro.build).
diff --git a/smoke/astro.build-main/src/pages/terms.md b/smoke/astro.build-main/src/pages/terms.md
new file mode 100644
index 000000000..a293bb539
--- /dev/null
+++ b/smoke/astro.build-main/src/pages/terms.md
@@ -0,0 +1,112 @@
+---
+layout: ../layouts/Legal.astro
+title: Terms of Service
+updated_date: Jan 6, 2022
+description: Astro's terms of service
+header: |
+ These terms of service ("Terms") apply to your access and use of the Astro website (the "Service"). Please read them carefully.
+---
+
+### Accepting these terms
+
+If you access or use the Service, it means you agree to be bound by all of the terms below. So, before you use the Service, please read all of the terms. If you don’t agree to all of the terms below, please do not use the Service. Also, if a term does not make sense to you, please let us know by e-mailing [support@astro.build](mailto:support@astro.build).
+
+### Changes to these Terms
+
+We reserve the right to modify these Terms at any time. Whenever we make changes to these Terms, the changes are effective 2 days after we post such revised Terms (indicated by revising the date at the top of these Terms) or upon your acceptance if we provide a mechanism for your immediate acceptance of the revised Terms (such as a click-through confirmation or acceptance button). It is your responsibility to check Astro for changes to these Terms.
+
+If you continue to use the Service after the revised Terms go into effect, then you have accepted the changes to these Terms.
+
+### Privacy Policy
+
+For information about how we collect and use information about users of the Service, please view our [privacy policy](/privacy).
+
+### Third-Party Services
+
+From time to time, we may provide you with links to third party websites or services that we do not own or control. Your use of the Service may also include the use of applications that are developed or owned by a third party. Your use of such third party applications, websites, and services is governed by that party’s own terms of service or privacy policies. We encourage you to read the terms and conditions and privacy policy of any third party application, website or service that you visit or use.
+
+### Creating Accounts
+When you create an account or use another service to log in to the Service, you agree to maintain the security of your password and accept all risks of unauthorized access to any data or other information you provide to the Service.
+
+If you discover or suspect any Service security breaches, please let us know as soon as possible.
+
+### Your Content &amp; Conduct
+
+Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness.
+
+When you post, link or otherwise make available content to the Service, you grant us the right and license to use, reproduce, modify, publicly perform, publicly display and distribute your content on or through the Service. We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself.
+
+Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service.
+
+You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time.
+
+You may not post, link and otherwise make available on or through the Service any of the following:
+
+- Content that is libelous, defamatory, bigoted, fraudulent or deceptive;
+- Content that is illegal or unlawful, that would otherwise create liability;
+- Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;
+- Mass or repeated promotions, political campaigning or commercial messages directed at users who do not follow you (SPAM);
+- Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and
+- Viruses, corrupted data or other harmful, disruptive or destructive files or code.
+
+Also, you agree that you will not do any of the following in connection with the Service or other users:
+
+- Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;
+- Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;
+- Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;
+- Create an account or post any content if you are not over 13 years of age years of age; and
+- Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties.
+
+### Astro Materials
+
+We put a lot of effort into creating the Service including, the logo and all designs, text, graphics, pictures, information and other content (excluding your content). This property is owned by us or our licensors and it is protected by U.S. and international copyright laws. We grant you the right to use it.
+
+However, unless we expressly state otherwise, your rights do not include: (i) publicly performing or publicly displaying the Service; (ii) modifying or otherwise making any derivative uses of the Service or any portion thereof; (iii) using any data mining, robots or similar data gathering or extraction methods; (iv) downloading (other than page caching) of any portion of the Service or any information contained therein; (v) reverse engineering or accessing the Service in order to build a competitive product or service; or (vi) using the Service other than for its intended purposes. If you do any of this, we may terminate your use of the Service.
+
+### Hyperlinks and Third Party Content
+
+You may create a hyperlink to the Service. But, you may not use, frame or utilize framing techniques to enclose any of our trademarks, logos or other proprietary information without our express written consent.
+
+Astro makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern.
+
+If there is any content on the Service from you and others, we don’t review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content.
+
+### Unavoidable Legal Stuff
+
+THE SERVICE AND ANY OTHER SERVICE AND CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE ARE PROVIDED TO YOU ON AN AS IS OR AS AVAILABLE BASIS WITHOUT ANY REPRESENTATIONS OR WARRANTIES OF ANY KIND. WE DISCLAIM ANY AND ALL WARRANTIES AND REPRESENTATIONS (EXPRESS OR IMPLIED, ORAL OR WRITTEN) WITH RESPECT TO THE SERVICE AND CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE WHETHER ALLEGED TO ARISE BY OPERATION OF LAW, BY REASON OF CUSTOM OR USAGE IN THE TRADE, BY COURSE OF DEALING OR OTHERWISE.
+
+IN NO EVENT WILL ASTRO BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY KIND ARISING OUT OF OR IN CONNECTION WITH THE SERVICE OR ANY OTHER SERVICE AND/OR CONTENT INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THE SERVICE, REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT, TORT, STRICT LIABILITY OR OTHERWISE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR ARE AWARE OF THE POSSIBILITY OF SUCH DAMAGES. OUR TOTAL LIABILITY FOR ALL CAUSES OF ACTION AND UNDER ALL THEORIES OF LIABILITY WILL BE LIMITED TO THE AMOUNT YOU PAID TO ASTRO THIS SECTION WILL BE GIVEN FULL EFFECT EVEN IF ANY REMEDY SPECIFIED IN THIS AGREEMENT IS DEEMED TO HAVE FAILED OF ITS ESSENTIAL PURPOSE.
+
+You agree to defend, indemnify and hold us harmless from and against any and all costs, damages, liabilities, and expenses (including attorneys’ fees, costs, penalties, interest and disbursements) we incur in relation to, arising from, or for the purpose of avoiding, any claim or demand from a third party relating to your use of the Service or the use of the Service by any person using your account, including any claim that your use of the Service violates any applicable law or regulation, or the rights of any third party, and/or your violation of these Terms.
+
+### Copyright Complaints
+
+We take intellectual property rights seriously. In accordance with the Digital Millennium Copyright Act ("DMCA") and other applicable law, we have adopted a policy of terminating, in appropriate circumstances and, at our sole discretion, access to the service for users who are deemed to be repeat infringers.
+
+### Governing Law
+
+The validity of these Terms and the rights, obligations, and relations of the parties under these Terms will be construed and determined under and in accordance with the laws of the Delaware state, without regard to conflicts of law principles.
+
+### Jurisdiction
+
+You expressly agree that exclusive jurisdiction for any dispute with the Service or relating to your use of it, resides in the courts of the Delaware state and you further agree and expressly consent to the exercise of personal jurisdiction in the courts of the Delaware state in connection with any such dispute including any claim involving Service. You further agree that you and Service will not commence against the other a class action, class arbitration or other representative action or proceeding.
+
+### Termination
+
+If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service.
+
+### Assignment
+
+We may assign or delegate these Terms of Service and/or the Privacy Policy, in whole or in part, to any person or entity at any time with or without your consent, including the license grant in the "Your Content &amp; Conduct" section. You may not assign or delegate any rights or obligations under the Terms of Service or Privacy Policy without our prior written consent, and any unauthorized assignment and delegation by you is void.
+
+### Entire Agreement
+
+These Terms constitute the entire agreement between you and Astro. regarding the use of the Service, superseding any prior agreements between you and Astro relating to your use of the Service.
+
+### Feedback
+
+Please let us know what you think of the Service, these Terms and, in general, Astro. When you provide us with any feedback, comments or suggestions about the Service, these Terms and, in general, Astro, you irrevocably assign to us all of your right, title and interest in and to your feedback, comments and suggestions.
+
+### Questions &amp; Contact Information
+
+Questions or comments about the Service may be directed to us at the email address [support@astro.build](mailto:support@astro.build)
diff --git a/smoke/astro.build-main/src/posts/astro-018.md b/smoke/astro.build-main/src/posts/astro-018.md
new file mode 100644
index 000000000..339db475f
--- /dev/null
+++ b/smoke/astro.build-main/src/posts/astro-018.md
@@ -0,0 +1,74 @@
+---
+title: 'Astro 0.18 Release'
+description: 'Introducing: Responsive partial hydration • Solid.js support • Lit SSR support • Named slots • Global style support • and more!'
+publishDate: 'July 27, 2021'
+authors:
+ - matthew
+lang: 'en'
+---
+
+A little over a month ago, the first public beta for Astro was released to the world. Since then, we have been fixing bugs and gathering your feedback on what to tackle next. Today, we are excited to announce the release of some of our most requested features.
+
+We are excited to introduce Astro v0.18, featuring:
+
+* __[Responsive partial hydration:](#responsive-partial-hydration)__ Hydrate components with CSS media queries.
+* __[Named slots:](#named-slots-in-astro-components)__ Support multiple content entrypoints inside of Astro components.
+* __[Solid.js support:](#solid-support)__ Use [Solid.js](https://www.solidjs.com/) components in Astro.
+* __[Lit support:](#solid-support)__ Use [Lit SSR](https://lit.dev/) to get server-side rendering for web components.
+* [`<style global>` support](https://docs.astro.build/guides/styling#overview), [GitHub syntax highlighting](https://twitter.com/n_moore/status/1417881860051509250) and a [shiny new docs site.](https://docs.astro.build/)
+
+## Responsive partial hydration
+
+
+<img src="/assets/blog/astro-018/responsive-hydration.jpg" alt="Code example that shows off using the new client:media hydrator." />
+<!-- Saved from https://carbon.now.sh/16xchqPVdt5IEAY3Czg3 -->
+
+Responsive websites often load components that are only visible on certain device sizes, like a mobile sidebar menu. As a developer, it can be difficult (impossible?) to avoid loading mobile-only code on non-mobile devices. The result is wasted time spent on code that will never even be seen by the end user.
+
+Astro solves the problem of unnecessary JavaScript with [partial hydration](https://docs.astro.build/core-concepts/component-hydration), a technique that involves only hydrating the components that need interactivity and leaving the rest as static HTML. **Astro v0.18 adds a new way to customize partial hydration using [CSS media queries](https://docs.astro.build/core-concepts/component-hydration#mycomponent-clientmediaquery-) that avoid sending code to devices that don't need it.**
+
+Add the `client:media` directive to a component and it will only hydrate once the media condition is met. On a mobile phone? Skip any expensive and unneccesary JavaScript for the desktop header that you'll never see. On a desktop or laptop? Don't load that mobile hamburger menu. This is all part of Astro's commitment to minimizing the unnecesary JavaScript that you send to your users.
+
+## Named slots in Astro components
+
+![Using multiple slots to provide the head and body parts of a Layout component.](/assets/blog/astro-018/named-slots.png)
+<!-- https://carbon.now.sh/9UwJkMCezRIOhzac5VVp -->
+
+[Named slots](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots) are a standard web feature used in [browser APIs](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots) and web frameworks like [Vue](https://vuejs.org/v2/guide/components-slots.html#Named-Slots). In this release, [Astro adds support for named slots](https://docs.astro.build/core-concepts/astro-components#slots) to Astro components, pages, and layouts.
+
+Named slots are particularly useful for page layouts. A layout can now specify slots for different sections of the page. You can put metadata tags in "head" slot, and page content in the "body" or "content" slot. Your layout is now completely customizable, with as many or as few slots as you need.
+
+
+## Solid support
+
+<img src="/assets/blog/astro-018/solid-logo-dark.svg" alt="Solid.js logo" style="background-color: rgb(65, 64, 66); padding: 2rem 4rem;" />
+
+[Solid](https://www.solidjs.com/) is a JSX-based UI framework that bills itself as the familiar, modern, more reactive alternative to React. We're really excited about Solid, and with the new [Solid renderer](https://github.com/withastro/astro/tree/main/packages/renderers/renderer-solid) for Astro you can use Solid as a first-class framework in your project.
+
+Adding support for Solid (our third officially-supported JSX framework) wasn't easy, and required a major refactoring of how Astro handles JSX. The final result was worth it: Astro is now much better at supporting different types of JSX and can even support the new React v17 JSX transform. This new foundation for Astro should support us well into the future.
+
+The release of Solid v1.0 is the perfect showcase for Astro's multi-framework promise: try out your first Solid component in an existing project side-by-side with the rest of your components. Where other build tools force you to choose a single framework and stick with it, Astro makes multi-framework projects easy for short-term code migrations or long-term site architectures.
+
+
+## Lit SSR support
+
+![Lit logo](/assets/blog/astro-018/lit-logo.svg)
+
+Server-side rendering (SSR) for web components is finally here, thanks to Lit and the new [Lit renderer for Astro](https://github.com/withastro/astro/tree/main/packages/renderers/renderer-lit).
+
+Thanks to the [Declarative Shadow DOM](https://web.dev/declarative-shadow-dom/) -- a new HTML feature that's now available in Chrome -- the Lit project was able to release experimental SSR support for Lit. Define a custom element in JavaScript and server render it with Astro as you would any other component from React or Vue. Unlike other JS components, you still use the custom element tag name in your HTML.
+
+The Lit SSR renderer is experimental, and some existing web components may not work with the new API. As other web component libraries adopt declarative shadow DOM and common APIs emerge for rendering, we hope to bring support to those libraries as well. We will keep refining and improving this support as we move towards Astro v1.0.
+
+## Community
+
+We've been absolutely blown away by the love Astro has recieved in such a short amount of time:
+
+- Featured articles and guides from [Netlify](https://www.netlify.com/blog/2021/07/23/build-a-modern-shopping-site-with-astro-and-serverless-functions/), [Cloudflare](https://developers.cloudflare.com/pages/framework-guides/astro), [CSS Tricks](https://css-tricks.com/a-look-at-building-with-astro/), and more.
+- Over 2,000 developers have downloaded the [Astro VSCode extension](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode)
+- Over 500 weekly visitors to our [amazing Discord](https://astro.build/chat)
+- Over 300 public projects using Astro [on Github](https://github.com/withastro/astro)
+- 2 (TWO!) Astro jobs already posted on Discord!
+- [GitHub adds support for Astro component syntax highlighting](https://twitter.com/n_moore/status/1417881860051509250)
+
+To learn more about Astro and start building your first site, check out [the Getting Started guide.](https://docs.astro.build)
diff --git a/smoke/astro.build-main/src/posts/astro-019.md b/smoke/astro.build-main/src/posts/astro-019.md
new file mode 100644
index 000000000..79610efe0
--- /dev/null
+++ b/smoke/astro.build-main/src/posts/astro-019.md
@@ -0,0 +1,168 @@
+---
+setup: |
+ import Tweet from '/src/components/Tweet.astro'
+title: 'Astro 0.19'
+description: 'Introducing: Next.js-inspired dynamic routing • Astro.resolve() • client:only components • translations • and more!'
+publishDate: 'August 18, 2021'
+lang: 'en'
+authors:
+ - fred
+---
+We are excited to introduce Astro 0.19, featuring:
+
+* __[Next.js-inspired routing:](#file-based-routing-inspired-by-nextjs)__ Define new dynamic URL params.
+* __[`client:only` directive:](#clientonly-loading-directive)__ Opt-out of SSR for individual components.
+* __[`Astro.resolve()`:](#astroresolve)__ Resolve relative URLs to assets in `src/`.
+* __[Community translations:](#docs-translations)__ Read our docs in 10 different languages.
+* __[Astro Open Collective:](#open-collective)__ Now accepting donations & sponsorship!
+
+## File-based routing, inspired by Next.js
+
+Astro has always supported basic file-based routing, where every file in your `pages/` directory becomes a new page at that same URL. Astro 0.19 takes this one step further with support for dynamic URL params in your filename.
+
+Inspired by [Next.js](https://nextjs.org/docs/routing/dynamic-routes) and [SvelteKit](https://kit.svelte.dev/docs#routing-pages), you can now add brackets to your page filename (ex: `src/pages/[slug].astro`) to create a dynamic page that matches many different URLs. `[...slug].astro` catch-all syntax is also supported.
+
+With this new feature you can add support for URL params, slugs, pretty URLs, pagination and more to your website.
+
+To create a dynamic route, create a file in your pages directory like `pages/posts/[slug].astro`. Create a [`getStaticPaths()`](https://docs.astro.build/reference/api-reference#getstaticpaths) function in your page frontmatter script and tell Astro exactly what paths to build for that route:
+
+```astro
+---
+// src/pages/posts/[slug].astro
+// Tell Astro what pages to build for your route "/pages/:slug"
+export async function getStaticPaths() {
+ return [
+ // Generates: /pages/hello-world
+ { params: { slug: 'hello-world' } },
+ // Generates: /pages/my-first-blog-post
+ { params: { slug: 'my-first-blog-post' } },
+ // Generates: /pages/astro-ftw
+ { params: { slug: 'astro-ftw' } },
+ // ...
+ ];
+}
+---
+<html>
+ <head><title>My Page</title></head>
+ <body>URL Param is {Astro.request.params.slug}</body>
+</html>
+```
+
+Astro is a static site builder, so you need to tell Astro what pages to build for every dynamic route. Defining your paths manually might feel like boilerplate, but ahead-of-time page building is exactly what makes static websites so fast for your users.
+
+`getStaticPaths()` is an async function, so you can -- and should! -- use it to load external data into your website. We normally love to use the [Pokemon API](https://pokeapi.co/) in our examples, but you'll probably want to use your favorite headless CMS:
+
+```js
+// src/pages/posts/[id].astro
+// Tell Astro what pages to build for your route "/pages/:id"
+export async function getStaticPaths() {
+ // Lets fetch posts from CSS Tricks' Headless CMS:
+ const CSS_TRICKS_CMS = 'https://css-tricks.com/wp-json/wp/v2/posts';
+ const allPosts = await fetch(CSS_TRICKS_CMS).then(r => r.json());
+ // Then, create a new page from every post:
+ return allPosts.map((post) => ({
+ // Set the URL param ":id" in the page URL
+ params: {id: post.id},
+ // Pass the post object as a prop to the page
+ props: {post},
+ }));
+}
+```
+
+To learn more, check out our new documentation on [Routing](https://docs.astro.build/core-concepts/routing) and the new [`getStaticPaths()` API.](https://docs.astro.build/reference/api-reference#getstaticpaths) Or, if you prefer to learn by example, check out this great [Wordpress Headless CMS project](https://github.com/chriscoyier/astro-css-trickzz) from Chris Coyier and this [Shopify Ecommerce example](https://github.com/cassidoo/shopify-react-astro) by Cassidy Williams of Netlify.
+
+If you were a previous user of our original Collections API, this new file-based routing system completely replaces Collections with plenty of friendly warning messages to help you upgrade. We hope that this new API removes all common frustrations that users had reported with the Collections API.
+
+## `client:only` loading directive
+
+Sometimes, a UI component can't render on the server. Maybe it's because you've hit a bug in one of your dependencies, or maybe you're just using a library like D3 that can't run without the browser's `window` object.
+
+You can attempt to wrap browser-only code with your own static server-side fallback UI. However, most users wanted a way to render a browser-only component without the extra boilerplate. Enter, `client:only`.
+
+Astro 0.19 ships with the new `client:only` loading directive to hydrate your component in the browser without server-side rendering. This provides a simple, straightforward fallback for any browser-only components.
+
+```html
+<!-- only renders in the browser, no placeholder HTML -->
+<MyReactComponent client:only />
+```
+
+`client:only` is now our fifth directive to let you completely control you component loading behavior. Visit our docs site to [check out the entire set](https://docs.astro.build/core-concepts/component-hydration#hydrate-interactive-components) and learn more about [Partial Hydration](https://docs.astro.build/core-concepts/component-hydration).
+
+🎉 This awesome feature was contributed by [Tony Sull](https://github.com/tony-sull) of [Navillus](https://navillus.dev/). Thanks, Tony!
+
+## `Astro.resolve()`
+
+Astro 0.19 includes a new [`Astro.resolve()`](https://docs.astro.build/reference/api-reference#astroresolve) helper function to resolve relative file references in your templates. With this new feature, you can reference relative assets (like images) inside of your components and Astro will return the correct URL for the browser.
+
+Previously, you always had to place files in the `public/` directory and reference them by absolute URL path. Relative paths within the `src/` directory didn't work because they'd be shipped directly to the browser, as-is. Different pages would end up creating different URLs:
+
+```html
+<!-- This works the same on every page: -->
+<img src="/logo.png" />
+<!-- But this means different things on different pages: -->
+<img src="../logo.png" />
+```
+
+Starting in Astro 0.19, you can now use the new `Astro.resolve()` helper function to create an absolute URL reference from any relative path:
+
+```html
+<!-- Astro component input: -->
+<img src={Astro.resolve('../images/logo.png')} />
+<!-- HTML output: -->
+<img src="/_astro/src/images/logo.png" />
+```
+
+If it helps, you can think of `Astro.resolve()` as a simplified alternative to doing `new URL(yourRelativePath, import.meta.url).pathname` in the browser.
+
+[`Astro.resolve()`](https://docs.astro.build/reference/api-reference#astroresolve) gives you more options and more control over how you structure your project. In the future, this will also unlock our ability to serve optimized images right out of your `src/` directory.
+
+🎉 This awesome feature was contributed by [Jonathan Neal](https://github.com/jonathantneal) & [Matthew Phillips!](https://github.com/matthewp)
+
+## Docs Translations
+
+Not all developers speak English. In fact, most don't. Luckily, some amazing contributors in our community came together to translate the Astro docs site for a global audience. We are currently working on translations in 10 different languages, including:
+
+- [简体中文](https://docs.astro.build/zh-CN/getting-started)
+- [正體中文](https://docs.astro.build/zh-TW/getting-started)
+- [Български](https://docs.astro.build/bg/getting-started)
+- [Deutsch](https://docs.astro.build/de/getting-started)
+- [English](https://docs.astro.build/getting-started)
+- [Español](https://docs.astro.build/es/getting-started)
+- [Français](https://docs.astro.build/fr/getting-started)
+- [Nederlands](https://docs.astro.build/nl/getting-started)
+- [Português](https://docs.astro.build/pt-br/getting-started)
+- [Suomi](https://docs.astro.build/fi/getting-started)
+- [Русский](https://docs.astro.build/ru/getting-started)
+
+These are still a work in progress, and we'll keep working towards 100% translation as we creep closer to a v1.0 release. If you know a few languages and are able to contribute, [we could really use your help!](https://github.com/withastro/astro/blob/main/CONTRIBUTING.md#translations)
+
+## Open Collective
+
+It's been a little over two months since [the first release](https://astro.build/blog/introducing-astro) of Astro. In that release, we outlined our commitment to both **a free, open source Astro** and **long-term financial sustainability** for the project. Today, we're announcing our first experiment towards long-term sustainability:
+
+**Companies and individuals can now sponsor Astro's development with Open Collective. [Visit our Open Collective →](https://opencollective.com/astrodotbuild)**
+
+We created an Open Collective because corporate sponsorship is one of the few proven paths towards financial sustainability in open source. However, [it's far from a perfect model.](https://stackoverflow.blog/2021/01/07/open-source-has-a-funding-problem/) Most contributions only go to a handful of popular projects, and the rest never see any meaningful support. The odds are against us but we believe in Astro, our community, and the excitement that keep growing around this project.
+
+Chances are, your company benefits from open source software. Invest in the technologies that power your business by sponsoring Astro and any other open source projects that you use. **Bonus:** thousands of developers will see your logo on our README and the [astro.build homepage](https://astro.build), every day.
+
+100% of funds raised are invested directly back into the project and our community. You can read more about how funds are distributed by reading our [FUNDING.md](https://github.com/withastro/astro/blob/main/FUNDING.md) doc on GitHub.
+
+We'll be tweeting out personal "thank you" messages to every person and company who hits the ["Sponsor"](https://opencollective.com/astrodotbuild) button in the next 48 hours. Our first, very special THANK YOU goes out to [Chris Jennings](https://twitter.com/ckj), CCO and co-founder of [Sentry](https://sentry.io/), for being our first official sponsor! 🎉
+
+## ICYMI (In case you missed it)
+
+[Github added official support](https://twitter.com/astrodotbuild/status/1423001137905651714?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1423001137905651714%7Ctwgr%5E%7Ctwcon%5Es1_c10&ref_url=https%3A%2F%2Fastro.build%2Fblog%2Fastro-019%2F) for `.astro` files and `astro` syntax highlighting across their entire platform. Not to be outdone, CodeSandbox [quickly followed up](https://twitter.com/codesandbox/status/1425438635357257728) with support of their own!
+
+This is such a huge milestone for Astro, especially considering how young the project is! Thank you to everyone who used Astro, created projects, and showed these platforms how valuable Astro really is.
+
+<Tweet src="https://twitter.com/astrodotbuild/status/1423001137905651714">
+ It&rsquo;s official! 🎉 <a href="https://twitter.com/github">@github</a> now supports syntax highlighting for <code>.astro</code> files!<br><br>You can also use code blocks starting with <code>astro</code> to get proper highlighting in Markdown files, issues, and PR comments!
+ <br><br><a href="https://t.co/CDiGw66Qw6">pic.twitter.com/CDiGw66Qw6</a></p>&mdash; Astro (@astrodotbuild) <a href="https://twitter.com/astrodotbuild/status/1423001137905651714?ref_src=twsrc%5Etfw">August 4, 2021</a></blockquote>
+</Tweet>
+
+## 👋
+
+Thank you for reading! [Follow us on Twitter](https://twitter.com/astrodotbuild) to stay up to date as we move closer to a v1.0 release. Also, you can check out [our previous release post](https://astro.build/blog/astro-018) for even more updates on Astro.
+
+And, if you've read this far, you should definitely [join us on Discord.](https://astro.build/chat) ;)
diff --git a/smoke/astro.build-main/src/posts/astro-021-preview.md b/smoke/astro.build-main/src/posts/astro-021-preview.md
new file mode 100644
index 000000000..aeeff3b08
--- /dev/null
+++ b/smoke/astro.build-main/src/posts/astro-021-preview.md
@@ -0,0 +1,107 @@
+---
+setup: |
+ import Mention from '/src/components/Mention.astro'
+ import Note from '/src/components/Note.astro'
+title: 'Astro 0.21 Preview: Vite + WASM = ⚡️'
+description: 'Get a sneak preview of what is next for Astro, including our new Vite build engine and WASM-powered Go compiler.'
+publishDate: 'October 6, 2021'
+permalink: 'https://astro.build/blog/astro-021-preview'
+lang: 'en'
+heroImage: '/assets/blog/astro-021-preview/hero.png'
+heroImageAlt: 'Spacecraft overlooking Earth'
+socialImage: '/assets/blog/astro-021-preview/social.png'
+authors:
+ - fred
+---
+
+Astro v0.21.0 will be our biggest release yet. At a high-level, it includes:
+
+- [A new build engine, powered by Vite](#hello-vite)
+- [A new WASM compiler, written in Go](#hello-wasm)
+- [Brand new features, like Components-in-Markdown](#components-in-markdown)
+- [A new system for HTML live-updating via HMR](#hmr-meet-html)
+
+You can try out our latest release today [in the browser](https://gitpod.io#snapshot/5e7cf2f1-8108-4fa5-99d3-ed8de70d8c23) or by running `npm install astro@next--compiler` in a new project directory on your machine.
+
+Astro is quickly becoming the production-ready framework for building faster, content-focused websites. To celebrate this milestone, here are some highlights and details on what you can expect in Astro v0.21.0 and beyond.
+
+## Hello, Vite!
+
+Astro 0.21 is getting an internal build engine upgrade, replacing Snowpack with [Vite](https://vitejs.dev) going forward.
+
+We ran some early experiments with Vite and came away extremely impressed. Vite is well-maintained, well-documented, a bit faster, has great error messages, and has been building clear community buy-in across multiple frameworks. SSR handling can be a bit flakey, but the Vite team is aware of this and actively working on it.
+
+So now, when Evan You tweets about [some great performance optimization](https://twitter.com/youyuxi/status/1440718351802646550) that they're making in Vite you can be certain that the same speed is coming to Astro as well.
+
+The reverse is also true: we can now contribute fixes and improvements back to the larger Vite community. Now, when we fix an SSR bug in Astro (like [adding support for ESM-only npm packages](https://github.com/vitejs/vite/pull/5197)) we're also fixing it for every other Vite user, including [SvelteKit](https://kit.svelte.dev/docs#routing-endpoints).
+
+There's one other huge benefit to choosing Vite: Rollup plugins. Starting in v0.21.0, you'll be able to connect the entire ecosystem of Rollup plugins to Astro. Enable new features like [image optimizations](https://github.com/JonasKruckenberg/imagetools/tree/main/packages/vite) and [icon loading](https://github.com/antfu/unplugin-icons) with just a few simple plugins. Magic!
+
+This switch from Snowpack to Vite might come as a surprise to some: Both Drew and myself are maintainers on both projects. This was [a hard decision](https://dev.to/fredkschott/5-more-things-i-learned-building-snowpack-to-20-000-stars-5dc9) for us to make. But ultimately, after working with both tools I can confidently say that Vite will be a great choice for Astro's future.
+
+
+## Hello, WASM!
+
+Astro 0.21 features another huge low-level improvement: the brand new [@astrojs/compiler](https://github.com/withastro/astro-compiler-next). Astro's new compiler is written in Go and distributed as WASM. You can run it right in your browser, or on the server in Node.js and Deno.
+
+The new [@astrojs/compiler](https://github.com/withastro/astro-compiler-next) unlocks:
+
+- **Flexibility:** Run the compiler anywhere with WASM.
+- **Speed:** Build sites faster with Go's compiled-language performance.
+- **Stability:** Writing our own compiler allowed us to fix some long-standing bugs.
+
+You can play with the new compiler today right in your browser at https://astro.build/play. This REPL is just one example of what is now possible when you have a fast, runs-anywhere compiler.
+
+<p>Shout out to <Mention name="nate" /> who did an incredible job with this project.</p>
+
+
+## Components in Markdown
+
+Our most requested feature ***by far*** has been the ability to use components directly in Markdown. After months of work, we're excited to announce that this feature is finally coming to Astro.
+
+Starting in v0.21.0, you can import components inside of your Markdown frontmatter via an optional `setup` script. Once imported, your components can be used anywhere on the page:
+
+```markdown
+---
+title: 'Astro 0.21 Early Preview'
+setup: |
+ import Logo from '../components/Logo.astro';
+ import ReactCounter from '../components/Counter.jsx';
+---
+
+# Astro now supports components in Markdown!
+
+<Logo />
+
+- Back to markdown here.
+- Supports static Astro components.
+- Supports dynamic React/Vue/Svelte components!
+
+<ReactCounter start={0} client:load />
+```
+
+This new `setup` script was designed for maximum flexibility. We'll keep improving this API going forward with planned support for default components, default layouts, and markdown component overrides.
+
+
+## HMR, meet HTML
+
+Starting in v0.21.0, Astro will support full HMR for Astro components and pages. Change any `.astro` file in your codebase, and watch the dev server update the page without a full refresh and without losing any client state.
+
+Astro has always supported powerful HMR updates for client-side JavaScript components like React, Preact, Svelte, Vue, and Solid.js. But adding this for Astro was a fun challenge because Astro components are just static HTML. Our "Zero JavaScript" approach meant that there was no "Astro runtime" to hook into for updates. We had to get creative.
+
+Now, Astro's dev server sends HTML updates to the browser and then runs a small script to diff those updates against the current page. This creates a more granular, component-level HMR update that won't impact the rest of the page.
+
+
+## Try it today
+
+If you've read this far, we'd love your help trying out the latest release before launch. You can try out our latest release today [in the browser](https://gitpod.io#snapshot/5e7cf2f1-8108-4fa5-99d3-ed8de70d8c23) or by running `npm install astro@next--compiler` in a new project directory. You can follow our progress and leave feedback in the `next` PR on GitHub: https://github.com/withastro/astro/pull/1406
+
+Leave feedback, report bugs, and get involved with Astro's development in our [Discord server](https://astro.build/chat). You can also [follow along](https://twitter.com/astrodotbuild) on Twitter.
+
+<Note type="tip">
+
+Keep your eyes to the sky Astronaut! 🧑‍🚀🚀
+
+There will be more news on v0.21 soon.
+
+</Note>
diff --git a/smoke/astro.build-main/src/posts/astro-021-release.md b/smoke/astro.build-main/src/posts/astro-021-release.md
new file mode 100644
index 000000000..5440a8813
--- /dev/null
+++ b/smoke/astro.build-main/src/posts/astro-021-release.md
@@ -0,0 +1,50 @@
+---
+setup: |
+ import Mention from '/src/components/Mention.astro'
+ import Note from '/src/components/Note.astro'
+title: 'Astro 0.21'
+description: 'Astro v0.21.0 is finally here!'
+publishDate: 'November 19, 2021'
+permalink: 'https://astro.build/blog/astro-021-release'
+lang: 'en'
+socialImage: '/assets/blog/astro-021-release/social.png'
+heroImage: '/assets/blog/astro-021-preview/hero.png'
+heroImageAlt: 'Astro v0.21 Release Notes'
+authors:
+ - fred
+---
+
+Astro v0.21.0 is finally here! This is by far our biggest release ever, including a ground-up rewrite of some major Astro internals. After months of development and public testing, we are so excited to get this new version of Astro into your hands, featuring:
+
+- A new Astro compiler, **written in [Go](https://golang.org/)**
+- A new build engine, **powered by [Vite](http://vitejs.dev/)**
+- [Components in Markdown](https://docs.astro.build/migration/0.21.0#components-in-markdown) (like MDX, but without the JSX)
+- Improved npm package support (also powered by Vite!)
+- Improved errors, stack traces, HMR, and overall dev experience
+- A grab-bag of other new features for you to explore
+
+[Try Astro v0.21.0 today](https://astro.new) right in your browser. Or, run `npm install astro@latest` in any new or existing project directory to get started. [Read our v0.21 Early Preview](/blog/astro-021-preview) post for more details on what is included in this release.
+
+<p>
+ Thank you to every contributor and early preview tester who made this release possible. Thank you to <Mention name="nate" />, <Mention name="matthew" />, and <Mention name="drew" /> for your tireless work over the last few months getting v0.21 out the door.
+</p>
+
+**With these new long-term investments, Astro isn't going anywhere.** Next stop, v1.0!
+
+## Migrate to v0.21
+
+Very little has changed in the v0.21.0 API to make your migration as easy as possible. Check out the new [v0.21 migration guide](https://docs.astro.build/migration/0.21.0) for a full breakdown of meaningful changes.
+
+Leave feedback, report bugs, and get involved with Astro's development in our [Discord server](https://astro.build/chat). You can also [follow along](https://twitter.com/astrodotbuild) with our community on Twitter.
+
+## Why Rewrite? Why Now?
+
+Most people don't know this, but the first version of the Astro compiler was originally forked from [Svelte](https://svelte.dev/docs#Compile_time). Forking an existing compiler let us get up and running quickly, but cost us some unneccesary complexity that only grew over time.
+
+Big rewrites are rarely easy, and this one was no exception. The timing was right for us to make a big investment in Astro now and deprecate our original forked compiler in favor of something designed with Astro in mind. This new compiler (written in Go) and new Vite-powered build engine will form a stable foundation that will last this project for years to come.
+
+<Note type="tip">
+
+A huge thank you to Rich Harris and the entire Svelte team&mdash;you built an incredible open source compiler and it served Astro so well in its early days!
+
+</Note>
diff --git a/smoke/astro.build-main/src/posts/astro-023.md b/smoke/astro.build-main/src/posts/astro-023.md
new file mode 100644
index 000000000..c70701c9f
--- /dev/null
+++ b/smoke/astro.build-main/src/posts/astro-023.md
@@ -0,0 +1,98 @@
+---
+title: 'Astro 0.23 Release Notes'
+description: 'Introducing: Dynamic file routes • Automatic XSS protection • two new component directives • vite 2.8 • and more!'
+publishDate: 'February 19, 2022'
+socialImage: '/assets/blog/astro-023/social.jpg'
+lang: 'en'
+authors:
+ - fred
+---
+
+**Astro v0.23.0** has just been released with some new features and highlights:
+
+- [Dynamic File Routes](#dynamic-file-routes)
+- [Automatic XSS Protection](#automatic-xss-protection)
+- [New `set:html` and `set:text` directives](#new-sethtml-and-settext-directives)
+- [Better builds with Vite v2.8](#better-builds-with-vite-v28)
+- [Better stability with @astro/compiler v0.11](#better-stability-with-astrocompiler-v011)
+- [Better performance with `--experimental-static-builds`](#better-performance-with---experimental-static-builds)
+
+## Dynamic File Routes
+
+You can now build dynamic, non-HTML files in your project by using Astro's new **file routes**. Use file routes to dynamically generate files during your build for things like JSON, XML, or even non-text assets like images. This feature has been one of our most requested since the early days of Astro!
+
+To create a file route inside of your Astro project, create a new JavaScript or TypeScript file inside of your `src/pages` directory. File routes leverage Astro's existing file-based router, so be sure to include the final built file extension in the filename.
+
+
+```js
+// Example: src/pages/builtwith.json.ts
+// Outputs: /builtwith.json
+
+// File routes export a get() function, which gets called to generate the file.
+// Return an object with `body` to save the file contents in your final build.
+export async function get() {
+ return {
+ body: JSON.stringify({
+ name: 'Astro',
+ url: 'https://astro.build/',
+ }),
+ };
+}
+```
+
+This feature is only available with the `--experimental-static-build` flag. [To learn more, check out the docs.](https://docs.astro.build/en/core-concepts/astro-pages/#non-html-pages)
+
+## Automatic XSS Protection
+
+Astro v0.23 begins our migration towards automatic HTML escaping inside of Astro template expressions. This new feature will protect you from accidentally injecting untrusted HTML onto your page. Without it, you open yourself up to Cross Site Scripting (XSS) attacks where malicious users can hijack your site to run untrusted or unexpected code on the page.
+
+```astro
+<!-- Examples of untrusted HTML injection -->
+<div>{`<span>Hello, trusted HTML</span>`}</div>
+<div>{`<script>alert('oh no');</script>`}</div>
+<div>{untrustedHtml}</div>
+```
+
+Thanks to React and other component-based UI libraries, XSS vulnerabilities are becoming a thing of the past. Astro is excited to meet this same bar of zero-effort, built-in, automatic XSS protection.
+
+To help our users migrate, Astro v0.23 will log a warning to the console when unescaped HTML is encountered inside of a template expression. In the next version, template expressions will always escape their contents.
+
+## New `set:html` and `set:text` directives
+
+Two new directives are introduced to support better HTML injection when you need it. As we covered in the previous section, setting HTML directly is risky. However, in some special cases it may be required. Astro created the new `set:html` directive for those cases. You can think of it like React's `dangerouslySetInnerHTML`.
+
+```astro
+<!-- Examples of explicit HTML setting -->
+<div set:html={`<span>Hello, trusted HTML</span>`}></div>
+<div set:html={`<script>alert('oh no');</script>`}></div>
+<div set:html={trustedOrAlreadyEscapedHtml}></div>
+```
+
+If you don't want a `<div>` wrapper, you can also use `set:html` on the Fragment component for zero wrapping HTML:
+
+```
+- {`<span>Hello, dangerous HTML</span>`}
++ <Fragment set:html={`<span>Hello, dangerous HTML</span>`} />
+```
+
+`set:text` is also available to set the element text directly, similar to setting the `.text` property on an element in the browser. Together, these two directives give you a bit more control over the Astro output when you need it.
+
+## Better builds with Vite v2.8
+
+Astro v0.23 comes with an internal Vite upgrade that brings new features and huge stability improvements. Vite's npm package handling got a boost as well, so that more packages should work in more projects. [Check out their changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) to learn more.
+
+## Better stability with @astro/compiler v0.11
+
+Astro v0.23 also got a compiler upgrade which should result in noticeable performance and stability improvements across all projects. [Check out the changelog](https://github.com/withastro/compiler/releases) to learn more.
+
+## Better performance with `--experimental-static-builds`
+You may have noticed the reference to `--experimental-static-build` above, and the fact that some new features are only available behind this flag. This flag is not new in v0.23, but it continues to improve as we get closer to an official release of the feature. This new "static build" strategy will soon become the default build behavior in Astro.
+
+If you haven't tried the `--experimental-static-build` flag out yet in your build, please give it a try and leave us feedback in Discord. Check out our blog post [Scaling Astro to 10,000+ Pages](/blog/experimental-static-build) to learn more about this future build strategy for Astro.
+
+
+## 👋
+
+Thank you for reading! [Follow us on Twitter](https://twitter.com/astrodotbuild) to stay up to date on Astro releases and news.
+
+If you've read this far, you should definitely [join us on Discord.](https://astro.build/chat) ;)
diff --git a/smoke/astro.build-main/src/posts/astro-repl.md b/smoke/astro.build-main/src/posts/astro-repl.md
new file mode 100644
index 000000000..7f4730177
--- /dev/null
+++ b/smoke/astro.build-main/src/posts/astro-repl.md
@@ -0,0 +1,27 @@
+---
+setup: |
+ import PixelLink from '/src/components/PixelLink.astro'
+ import Note from '/src/components/Note.astro'
+title: 'Introducing the Astro REPL'
+authors:
+ - drew
+description: 'The power of Astro, right in your browser.'
+publishDate: 'September 17, 2021'
+permalink: 'https://astro.build/blog/astro-repl/astro-repl.png'
+lang: 'en'
+heroImage: '/assets/blog/astro-repl/astro-repl-hero.jpg'
+heroImageAlt: 'Hills with stars above'
+---
+The Astro team proudly presents the new [Astro REPL:](https://astro.build/play) compile Astro right in your browser. Use it to explore Astro's HTML-based component language, debug issues, or even prototype an entire webpage. It's powered by Astro’s **new WASM compiler** (written in Go) that runs anywhere and can rebuild files in an instant.
+
+![astro](/assets/blog/astro-repl/astro-repl-screenshot.jpg)
+
+<div style="display: flex; justify-content: center;">
+ <PixelLink href="https://astro.build/play">Try the REPL now!</PixelLink>
+</div>
+
+<Note>
+
+To learn more about our new compiler, [join us on Discord](https://astro.build/chat) and tune in to [Astro Demo Days](https://www.youtube.com/watch?v=-ExcBJrXOd8) next Monday, September 20, 2021 at 11am PST.
+
+</Note>
diff --git a/smoke/astro.build-main/src/posts/demo-day-2021-09.md b/smoke/astro.build-main/src/posts/demo-day-2021-09.md
new file mode 100644
index 000000000..d1a1ee438
--- /dev/null
+++ b/smoke/astro.build-main/src/posts/demo-day-2021-09.md
@@ -0,0 +1,29 @@
+---
+setup: |
+ import Mention from '/src/components/Mention.astro'
+title: 'Astro Demo Day September Edition'
+authors:
+ - fred
+description: 'Astro September Demo Day was today and we had 4 amazing talks, including one with big announcements on the future direction of Astro.'
+publishDate: 'September 20, 2021'
+permalink: 'https://astro.build/blog/demo-day-2021-09'
+lang: 'en'
+heroImage: '/assets/blog/demo-day-2021-09/hero.png'
+heroImageAlt: 'Spacecraft overlooking Earth'
+---
+**Astro Demo Day** was today! We had **4** amazing talks, including one big announcement on the future direction of Astro. If you missed the livestream, fear not! You can see the full event [on YouTube](https://www.youtube.com/watch?v=-ExcBJrXOd8) or watch the talks in any order by visiting the links below. Subscribe to the [Astro YouTube channel](https://www.youtube.com/channel/UCeFjmvZEK-MoefuYXptnX6A) to make sure you don't miss our next demo day. Today's demos were:
+
+* [Developing the Astro VSCode extension](https://youtu.be/-ExcBJrXOd8?t=109) 🧑‍💻 from [Matthew Phillips](https://twitter.com/matthewcp)
+* [Integrating a CMS - Astro+Forestry+Netlify](https://youtu.be/-ExcBJrXOd8?t=763) 🌳 from [Tony Sullivan](https://twitter.com/navillus_dev)
+* [The Astro SEO component](https://youtu.be/-ExcBJrXOd8?t=1384) 🗃 from [Jonas Schumacher](https://twitter.com/jonasmerlin1)
+* [Astro's v2 Compiler and a Surprise](https://youtu.be/-ExcBJrXOd8?t=2070) 🪄 from [Drew Powers](https://twitter.com/drwpow) and [Nate Moore](https://twitter.com/n_moore)
+
+As always, our Discord community brought the hype:
+
+<img alt="Messages from the Demo Day chat room on Discord" src="/assets/blog/demo-day-2021-09/discord-chat.jpg" class="chat-messages" />
+
+## The next Astro release
+
+Astro's next release will be our biggest ever, featuring a new WASM-powered compiler plus a new Vite-powered runtime. You can expect a preview release on [npm](https://www.npmjs.com/package/astro) later today or tomorrow. Over the next few weeks, we will continue to polish the new code as we prepare for its official release!
+
+If you haven't already, follow [@astrodotbuild](https://twitter.com/astrodotbuild) on Twitter for more news and announcements, and [join our Discord](https://astro.build/chat) to learn how you can try out the new previous release.
diff --git a/smoke/astro.build-main/src/posts/experimental-static-build.md b/smoke/astro.build-main/src/posts/experimental-static-build.md
new file mode 100644
index 000000000..9f8b871fb
--- /dev/null
+++ b/smoke/astro.build-main/src/posts/experimental-static-build.md
@@ -0,0 +1,25 @@
+---
+title: 'Scaling Astro to 10,000+ Pages'
+description: 'A new experimental flag in Astro build enables building sites with tens of thousands of pages.'
+publishDate: 'January 25, 2022'
+authors:
+ - matthew
+lang: 'en'
+---
+
+Astro is about to get a lot faster! Our new build optimization process is ready to try out in Astro today:
+
+```shell
+astro build --experimental-static-build
+```
+
+Our new build system can scale to tens, or even hundreds, of thousands of pages. If you hang out in our [Discord](https://astro.build/chat) or pay attention to recent releases you might have seen a lot of discussion about a "static build". Our new implementation of `astro build` does 2 things:
+
+- Improves build times by up to 75%.
+- Lowers memory usage when building very large sites (10,000+ pages).
+
+This new build works by first building an SSR version of your app and then rendering each page to HTML. Because the site is pre-optimized it can render each page in parallel and will never run out of memory.
+
+If you are a current Astro user please try out this new build by passing the flag in your `build` script.
+
+This build approach will remain flagged for the next few releases until we iron out any issues, at which point we plan to promote it to be the default `astro build` command. Please help us by reporting issues you encounter, either in the [Discord](https://astro.build/chat) or by filing an [issue](https://github.com/withastro/astro/issues/new/choose). \ No newline at end of file
diff --git a/smoke/astro.build-main/src/posts/index.ts b/smoke/astro.build-main/src/posts/index.ts
new file mode 100644
index 000000000..9999605cb
--- /dev/null
+++ b/smoke/astro.build-main/src/posts/index.ts
@@ -0,0 +1,32 @@
+import { parse, isBefore } from 'date-fns';
+
+export async function getAllPosts() {
+ const files = await import.meta.glob("./**/*.md");
+ const posts = (
+ await Promise.all(
+ Object.values(files).map((importFile: any, index) =>
+ importFile().then((res) => {
+ const { title, description, authors, publishDate, socialImage } = res.frontmatter;
+ const href = Object.keys(files)
+ [index].replace(/^\./, "/blog")
+ .replace(/\.md$/, "");
+
+ return {
+ title,
+ description,
+ authors,
+ publishDate: parse(publishDate, "MMMM d, yyyy", new Date()),
+ socialImage,
+ href,
+ Content: res.default
+ };
+ })
+ )
+ )
+ ).sort((a, b) => {
+ if (isBefore(a.publishDate, b.publishDate)) return 1;
+ if (isBefore(b.publishDate, a.publishDate)) return -1;
+ return 0;
+ });
+ return posts;
+}
diff --git a/smoke/astro.build-main/src/posts/introducing-astro.md b/smoke/astro.build-main/src/posts/introducing-astro.md
new file mode 100644
index 000000000..d29da3dfd
--- /dev/null
+++ b/smoke/astro.build-main/src/posts/introducing-astro.md
@@ -0,0 +1,101 @@
+---
+setup: |
+ import Shell from '/src/components/Shell.astro'
+ import Note from '/src/components/Note.astro'
+ import Blockquote from '/src/components/Blockquote.astro'
+title: "Introducing Astro: Ship Less JavaScript"
+authors:
+ - fred
+ - nate
+description: |
+ We're excited to announce Astro as a new way to build static websites and deliver lightning-fast performance without sacrificing a modern developer experience.
+publishDate: 'June 8, 2021'
+heroImage: '/social.jpg'
+permalink: 'https://astro.build/blog/introducing-astro'
+lang: 'en'
+---
+There's a simple secret to building a faster website — *just ship less*.
+
+Unfortunately, modern web development has been trending in the opposite direction—towards *more.* More JavaScript, more features, more moving parts, and ultimately more complexity needed to keep it all running smoothly.
+
+Today I'm excited to publicly share Astro: a new kind of static site builder that delivers lightning-fast performance with a modern developer experience. To design Astro, we borrowed the best parts of our favorite tools and then added a few innovations of our own, including:
+
+- **Bring Your Own Framework (BYOF):** Build your site using React, Svelte, Vue, Preact, web components, or just plain ol' HTML + JavaScript.
+- **100% Static HTML, No JS:** Astro renders your entire page to static HTML, removing all JavaScript from your final build by default.
+- **On-Demand Components:** Need some JS? Astro can automatically hydrate interactive components when they become visible on the page. If the user never sees it, they never load it.
+- **Fully-Featured:** Astro supports TypeScript, Scoped CSS, CSS Modules, Sass, Tailwind, Markdown, MDX, and any of your favorite npm packages.
+- **SEO Enabled:** Automatic sitemaps, RSS feeds, pagination and collections take the pain out of SEO and syndication.
+
+This post marks the first public beta release of Astro. **Missing features and bugs are still to be expected at this early stage.** There are still some months to go before an official 1.0 release, but there are already several fast sites built with Astro in production today. We would love your early feedback as we move towards a v1.0 release later this year.
+
+<Note>
+
+ To learn more about Astro and start building your first site, check out [our Getting Started guide.](https://docs.astro.build)
+
+</Note>
+
+## Getting Started
+
+Starting a new project in Astro is easy:
+
+```shell
+# create your project
+mkdir new-project-directory
+cd new-project-directory
+npm init astro
+
+# install your dependencies
+npm install
+
+# start the dev server and open your browser
+npm run dev
+```
+
+## How Astro Works
+
+Astro works a lot like a static site generator. If you have ever used Eleventy, Hugo, or Jekyll (or even a server-side web framework like Rails, Laravel, or Django) then you should feel right at home with Astro.
+
+In Astro, you compose your website using UI components from your favorite JavaScript web framework (React, Svelte, Vue, etc). Astro renders your entire site to static HTML during the build. The result is a fully static website with all JavaScript removed from the final page. No monolithic JavaScript application required, just static HTML that loads as fast as possible in the browser regardless of how many UI components you used to generate it.
+
+Of course, sometimes client-side JavaScript is inevitable. Image carousels, shopping carts, and auto-complete search bars are just a few examples of things that require some JavaScript to run in the browser. This is where Astro really shines: When a component needs some JavaScript, Astro only loads that one component (and any dependencies). The rest of your site continues to exist as static, lightweight HTML.
+
+In other full-stack web frameworks this level of per-component optimization would be impossible without loading the entire page in JavaScript, delaying interactivity. In Astro, this kind of [partial hydration](https://addyosmani.com/blog/rehydration/) is built into the tool itself.
+
+You can even [automatically defer components](https://codepen.io/jonneal/full/ZELvMvw) to only load once they become visible on the page with the `:visible` modifier.
+
+This new approach to web architecture is called [islands architecture](https://jasonformat.com/islands-architecture/). We didn't coin the term, but Astro may have perfected the technique. We are confident that an HTML-first, JavaScript-only-as-needed approach is the best solution for the majority of content-based websites.
+
+## Embracing the Pit of Success
+
+<Blockquote>
+ <Fragment slot="quote">
+ A well-designed system makes it easy to do the right things and annoying (but not impossible) to do the wrong things
+ </Fragment>
+
+ <Fragment slot="cite">Jeff Atwood, <a href="https://blog.codinghorror.com/falling-into-the-pit-of-success/">Falling Into The Pit of Success</a></Fragment>
+</Blockquote>
+
+
+Poor performance is often framed as a failure of the developer, but we respectfully disagree. In many cases, poor performance is a failure of tooling. It should be difficult to build a slow website.
+
+Astro's main design principle is to lead developers into what [Rico Mariani](https://twitter.com/ricomariani) dubbed "the pit of success". It is our goal to build every site "fast by default" while also delivering a familiar, modern developer experience.
+
+By building your site to static HTML by default, Astro makes it difficult (but never impossible 😉) to build a slow site.
+
+## Long-Term Sustainability
+
+Astro is built by the team of open source developers behind [Snowpack](https://snowpack.dev) and [Skypack](https://skypack.dev), with additional contributions from the community.
+
+**Astro is and always will be free.** It is an open source project released under the [MIT license](https://github.com/withastro/astro/blob/main/LICENSE).
+
+We care deeply about building a more sustainable future for open source software. At the same time, we need to support Astro's development long-term. This requires money (donations alone aren't enough.)
+
+We're inspired by the early success of projects like [Tailwind](https://tailwindcss.com/), [Rome](https://rome.tools/), [Remix](https://remix.run/), [Ionic](https://ionicframework.com/), and others who are experimenting with long-term financial sustainability on top of Open Source. Over the next year we'll be exploring how we can create a sustainable business to support a 100% free, open source Astro for years to come.
+
+If your company is as excited about Astro as we are, [we'd love to hear from you.](https://astro.build/chat)
+
+<Note type="tip">
+
+ Finally, I'd like to give a **HUGE** thanks to the 300+ developers who joined our earliest private beta. Your feedback has been essential in shaping Astro into the tool it is today. If you're interested in getting involved (or just following along with development) please [join us on Discord.](https://astro.build/chat)
+
+</Note>
diff --git a/smoke/astro.build-main/src/posts/netlify-astro-hosting-sponsorship.md b/smoke/astro.build-main/src/posts/netlify-astro-hosting-sponsorship.md
new file mode 100644
index 000000000..a4081d5c5
--- /dev/null
+++ b/smoke/astro.build-main/src/posts/netlify-astro-hosting-sponsorship.md
@@ -0,0 +1,51 @@
+---
+setup: |
+ import { Sprite } from 'astro-icon'
+ import Note from '/src/components/Note.astro'
+ import Blockquote from '/src/components/Blockquote.astro'
+title: "Netlify Becomes Astro's Official Hosting Partner"
+authors:
+ - fred
+description: |
+ We are happy to announce that Netlify has become Astro’s first corporate sponsor and exclusive hosting partner, donating $2,500 each month towards the ongoing open source maintenance and development of Astro.
+publishDate: 'September 9, 2021'
+heroImage: '/assets/blog/astro-netlify-social.jpg'
+lang: 'en'
+---
+
+We are thrilled to announce that [Netlify](https://www.netlify.com/?utm_campaign=devex-jl&utm_source=astro&utm_medium=blog) has become Astro's first corporate sponsor and official hosting partner, donating [$2,500 each month](https://opencollective.com/astrodotbuild) towards the ongoing open source maintenance and development of Astro.
+
+Netlify is the company responsible for kicking off the modern [Jamstack](https://jamstack.org/) movement. Today, their hosting + serverless platform is loved by developers around the world. [Astro](http://astro.build/) can build you a blazing-fast website, but you'll always need a great host like Netlify to deliver that snappy experience to your users.
+
+Here's what Jason told us about Astro:
+
+<Blockquote>
+
+ <Sprite slot="logo" name="logos/netlify" height="48" />
+
+ <Fragment slot="quote">
+
+Astro is tackling an extremely hard problem: **how do we keep the advantages of powerful frameworks but stop making end users pay the cost of developer experience?** Shipping only HTML and CSS for the vast majority of web content that doesn't need to be dynamic and only including JavaScript when it's actually necessary is a huge win for developers and users alike.
+ </Fragment>
+
+ <Fragment slot="cite">
+
+ [Jason Lengstorf](https://twitter.com/jlengstorf), VP of Developer Experience
+
+ </Fragment>
+
+</Blockquote>
+
+Astro is honored and excited to have Netlify as our first official corporate sponsor. We are grateful for the support of Jason Lengstorf, Cassidy Williams, and the entire Netlify team for their help and evangelism. It's because of support from companies like Netlify that we are able to receive ongoing maintenance and keep developing Astro in an open, financially-sustainable way.
+
+Our first integration with Netlify will be to add the ["Deploy with Netlify"](https://www.netlify.com/blog/2016/11/29/introducing-the-deploy-to-netlify-button/) button to our official Astro starter templates. This will make it even easier to create new, hosted Astro websites in just a few clicks. Check out all of our batteries-included starter templates in the brand new [Astro Theme Showcase.](https://docs.astro.build/themes)
+
+Thanks, Netlify!
+
+<Note title="Oh hey, PS...">
+
+If your company relies on free, open source software (hint: it almost definitely does!) please [donate to support Astro](https://opencollective.com/astrodotbuild) and other projects like it.
+
+You can browse projects accepting funding on [Open Collective](https://opencollective.com/discover), [GitHub Sponsors](https://github.com/sponsors), or by running the `npm fund` command inside of any existing npm project.
+
+</Note>
diff --git a/smoke/astro.build-main/src/posts/the-astro-technology-company.md b/smoke/astro.build-main/src/posts/the-astro-technology-company.md
new file mode 100644
index 000000000..972eadafe
--- /dev/null
+++ b/smoke/astro.build-main/src/posts/the-astro-technology-company.md
@@ -0,0 +1,39 @@
+---
+setup: |
+ import Tweet from '/src/components/Tweet.astro'
+title: 'Announcing The Astro Technology Company'
+description: 'The Astro Technology Company has formed to support the Astro open source project and build a better platform for web developers everywhere.'
+publishDate: 'January 12, 2022'
+lang: 'en'
+authors:
+ - fred
+---
+
+
+I am thrilled to announce the creation of **The Astro Technology Company** along with **$7M** in seed funding to help us build a better platform for web development. The round was led by Lightspeed Venture Partners with participation from Haystack, Gradient, and Uncorrelated Ventures.
+
+With this funding, the core team has moved from [Skypack](https://www.skypack.dev/) (formerly Pika) and joined The Astro Technology Company to continue working on Astro, growing our open source community, and driving towards our upcoming v1.0 release.
+
+## **What is Astro?**
+
+Astro is a modern web build tool that helps you build fast websites, faster. Astro leverages a technique called [partial hydration](https://docs.astro.build/en/core-concepts/component-hydration/) to automatically eliminate unused JavaScript from your site, often reducing your overall payload by 90% or more. This makes Astro the perfect choice for content-focused websites like ecommerce, marketing, and blogs.
+
+Astro offers a modern, HTML-based component syntax that works across frameworks. React, Preact, Svelte, and Vue are all supported. Your existing components will continue to work in Astro. You can even mix frameworks when you need to, preventing that expensive rewrite when The Next Big Thing™️ comes along.
+
+The Astro open source project launched in June 2021 and captured immediate buzz, taking home the “Ecosystem Innovation Award” at the [2021 Jamstack Awards.](https://jamstackconf.com/jammies/) Today, Astro supports 10,000+ users including developers at Google, Netlify, Firebase, DivRIOTS, and Monogram. The project is still young, but we have accomplished so much in such little time!
+
+## What does this funding mean for Astro users?
+
+This funding will allow our team to continue to focus full-time on Astro, improving the developer experience and investing more resources towards our amazing ecosystem of 10,000+ users and 3,000+ community members.
+
+**Astro is and will always be MIT-licensed.** Our team has decades of combined open-source experience leading and maintaining projects like Skypack, Snowpack, Polymer, Microsite, Haunted, and PostCSS. I can’t over-state just how important open source software is to this team and we will continue to support a healthy open source ecosystem.
+
+Astro will continue to operate as an open source community project. We will continue to grow our sponsorship on Open Collective and invest in our amazing partners and sponsors. 100% of collected funds will continue to go directly back to our open source community members.
+
+Our goal is to grow Astro into the next great platform for web developers. We see Astro as so much more than just a build tool, and this funding will give us the resources to realize that vision. I can’t wait to share more about what we have planned for Astro over the next year!
+
+## Join us!
+
+Love web development? Love developer tooling? Love the thought of working with talented, thoughtful people full-time? [**We're hiring!**](/company)
+
+You can also [join us on Discord](https://astro.build/chat) to learn more about Astro and the community behind it.
diff --git a/smoke/astro.build-main/src/scripts/animations.ts b/smoke/astro.build-main/src/scripts/animations.ts
new file mode 100644
index 000000000..2171ebc38
--- /dev/null
+++ b/smoke/astro.build-main/src/scripts/animations.ts
@@ -0,0 +1,21 @@
+async function loop(element: Element) {
+ const animations = element.getAnimations({ subtree: true });
+ await Promise.all(animations.map(anim => anim.finished));
+ // reset the animation after 3.5 seconds
+ setTimeout(() => {
+ const clone = element.cloneNode(true)
+ element.replaceWith(clone);
+ loop(clone as Element);
+ }, 3500)
+}
+
+function setup() {
+ const illustrations = Array.from(document.querySelectorAll('.illustration'));
+ const hydrate = illustrations.find(el => (el as HTMLElement).dataset.name === 'hydration');
+ loop(hydrate);
+}
+setup();
+
+window.addEventListener('astro:navchange', () => {
+ setup();
+});
diff --git a/smoke/astro.build-main/src/scripts/nav.ts b/smoke/astro.build-main/src/scripts/nav.ts
new file mode 100644
index 000000000..1087fbb35
--- /dev/null
+++ b/smoke/astro.build-main/src/scripts/nav.ts
@@ -0,0 +1,18 @@
+const nav = document.querySelector("nav.main") as HTMLElement;
+
+window.addEventListener("DOMContentLoaded", () => {
+ let isStuck = false;
+ function updateStuck() {
+ if (isStuck && window.scrollY <= 65) {
+ isStuck = false;
+ nav.removeAttribute("stuck");
+ }
+ if (!isStuck && window.scrollY > 65) {
+ isStuck = true;
+ nav.setAttribute("stuck", "");
+ }
+ }
+
+ updateStuck();
+ window.addEventListener("scroll", updateStuck);
+});
diff --git a/smoke/astro.build-main/src/scripts/quicklink.ts b/smoke/astro.build-main/src/scripts/quicklink.ts
new file mode 100644
index 000000000..eac54274c
--- /dev/null
+++ b/smoke/astro.build-main/src/scripts/quicklink.ts
@@ -0,0 +1,3 @@
+import { listen } from 'quicklink';
+
+listen();
diff --git a/smoke/astro.build-main/src/scripts/spa.ts b/smoke/astro.build-main/src/scripts/spa.ts
new file mode 100644
index 000000000..30403e4e9
--- /dev/null
+++ b/smoke/astro.build-main/src/scripts/spa.ts
@@ -0,0 +1,335 @@
+function onHashChange() {
+ document.querySelector(`${window.location.hash}`).scrollIntoView({ block: 'start', behavior: 'smooth' });
+}
+window.addEventListener('DOMContentLoaded', () => {
+ if (window.location.hash) {
+ onHashChange();
+ }
+})
+window.addEventListener('hashchange', (event) => {
+ event.preventDefault();
+ onHashChange()
+})
+
+const isElement = (target: EventTarget): target is Element => target instanceof Element;
+const isLocalUrl = (href: string) => {
+ try {
+ const url = new URL(href);
+ if (window.location.origin === url.origin) {
+ if (url.pathname === window.location.pathname) {
+ return !url.hash;
+ }
+ return true;
+ }
+ } catch (e) {}
+ return false;
+}
+const isRelativeHref = (href: string) => {
+ return href[0] === '.' || !(href.startsWith('http') || href.startsWith('/'));
+}
+const getUrl = ({ target }: Event): URL|undefined => {
+ if (!isElement(target)) return;
+ const a = target.closest('a');
+ if (!a) return;
+ const { href } = a;
+ if (!isLocalUrl(href)) return;
+ return new URL(href);
+}
+
+const cache = new Map<string, string>();
+if (window.matchMedia('(hover: hover)').matches) {
+ let activeUrl: URL;
+ let activeTimeout: any;
+ const set = (url: URL) => {
+ if (cache.has(url.toString())) return;
+ activeUrl = url;
+ activeTimeout = setTimeout(() => {
+ fetch(url.toString()).then((res) => res.text()).then(text => cache.set(url.toString(), text));
+ }, 600);
+ }
+ const clear = () => {
+ if (activeTimeout) {
+ clearTimeout(activeTimeout);
+ activeUrl = null;
+ activeTimeout = null;
+ }
+ }
+ window.addEventListener('mousemove', (event) => {
+ const url = getUrl(event);
+ if (!url) return clear();
+ if (!activeUrl || url.toString() === activeUrl.toString()) {
+ if (activeTimeout) return;
+ return set(url);
+ }
+ })
+}
+
+const p = new DOMParser();
+window.addEventListener('click', async (event) => {
+ const url = getUrl(event);
+ if (!url) return;
+ event.preventDefault();
+ try {
+ navigate(url);
+ } catch (e) {
+ window.location.assign(url);
+ }
+})
+window.addEventListener('popstate', () => {
+ if (window.location.hash) return true;
+ try {
+ navigate(new URL(window.location.toString()), true);
+ } catch (e) {
+ window.location.reload();
+ }
+ return true;
+})
+
+async function navigate(url: URL, isBack: boolean = false) {
+ if (!isBack) {
+ history.pushState({}, '', url);
+ }
+ await document.querySelector('#root').animate({ opacity: 0 }, { duration: 120, easing: 'ease-out' }).finished;
+ document.documentElement.classList.add('transition');
+ if (!isBack) {
+ window.scrollTo({ top: 0 })
+ }
+ let contents = cache.get(`${url}`) || await fetch(`${url}`)
+ .then(res => res.text())
+ .catch(() => {
+ window.location.assign(url);
+ });
+ if (!contents) return;
+ const html = p.parseFromString(contents, 'text/html');
+ if (document.body.classList.contains('🥚')) {
+ html.body.classList.add('🥚');
+ }
+ html.body.classList.add('js');
+ html.documentElement.classList.add('transition');
+ await diff(document, html, new URL(window.location.toString()), url);
+ await document.querySelector('#root').animate({ opacity: 1 }, { duration: 80, easing: 'ease-in' }).finished;
+ document.documentElement.classList.remove('transition');
+ window.dispatchEvent(new CustomEvent('astro:navchange'));
+}
+
+function waitForLoad(elements: HTMLElement[]): Promise<void> {
+ return new Promise((resolve) => {
+ const styles = elements.filter(el => el.localName === 'link' && el.hasAttribute('href') && el.getAttribute('rel') === 'stylesheet');
+ const max = styles.length;
+ let count = 0;
+ if (max === 0) {
+ resolve();
+ }
+
+ styles.forEach(link => {
+ link.addEventListener('load', () => {
+ count++;
+ if (count >= max) {
+ resolve();
+ }
+ }, { once: true });
+ })
+ })
+}
+
+const s = new XMLSerializer();
+async function diff(a: Document, b: Document, aURL: URL, bURL: URL) {
+ const keys = new Map();
+ const remove = new Map();
+ const add = new Map();
+ const duplicates = new Set<string>();
+
+ function sync(from: Element, to: Element) {
+ for (const attr of to.attributes) {
+ let { namespaceURI, name, value } = attr;
+ if (namespaceURI) {
+ name = attr.localName || name;
+ const oldValue = from.getAttributeNS(namespaceURI, name);
+ if (oldValue !== value) {
+ if (attr.prefix === 'xmlns'){
+ name = attr.name;
+ }
+ from.setAttributeNS(namespaceURI, name, value);
+ }
+ } else {
+ const oldValue = from.getAttribute(name);
+ if (oldValue !== value) {
+ from.setAttribute(name, value);
+ }
+ }
+ }
+ for (const attr of from.attributes) {
+ let { namespaceURI, name } = attr;
+ if (namespaceURI) {
+ name = attr.localName || name;
+ if (!to.hasAttributeNS(namespaceURI, name)) {
+ from.removeAttributeNS(namespaceURI, name)
+ }
+ } else {
+ if (!to.hasAttribute(name)) {
+ from.removeAttribute(name);
+ }
+ }
+ }
+
+ if (from.localName === 'title') {
+ from.textContent = to.textContent;
+ }
+ }
+
+ // Head logic
+ function getHeadKey(node: Element) {
+ switch (node.localName) {
+ case 'title': return 'title';
+ case 'meta': {
+ if (node.hasAttribute('name')) {
+ return `meta[name=${node.getAttribute('name')}]`;
+ }
+ if (node.hasAttribute('property')) {
+ return `meta[property=${node.getAttribute('property')}]`;
+ }
+ return;
+ }
+ }
+ }
+
+ for (const child of a.head.children) {
+ let key = getHeadKey(child);
+ if (key) {
+ keys.set(key, child);
+ continue;
+ }
+ if (child.localName === 'script' && child.hasAttribute('src')) {
+ const src = child.getAttribute('src');
+ if (isRelativeHref(src)) {
+ const absURL = new URL(src, aURL);
+ key = `script[src=${absURL.pathname}]`;
+ child.setAttribute('src', absURL.pathname);
+ } else {
+ key = `script[src=${src}]`
+ }
+ } else if (child.localName === 'link' && child.hasAttribute('href')) {
+ const href = child.getAttribute('href');
+ const rel = child.getAttribute('rel');
+ if (isRelativeHref(href)) {
+ const absURL = new URL(href, aURL);
+ key = `link[rel=${rel}][href=${absURL.pathname}]`;
+ child.setAttribute('href', absURL.pathname);
+ } else {
+ key = `link[rel=${rel}][href=${href}]`
+ }
+ } else {
+ key = s.serializeToString(child);
+ }
+
+
+ remove.set(key, child);
+ }
+
+ for (const child of b.head.children) {
+ let key = getHeadKey(child);
+ if (key) {
+ sync(keys.get(key), child);
+ continue;
+ }
+ if (child.localName === 'script' && child.hasAttribute('src')) {
+ const src = child.getAttribute('src');
+ if (isRelativeHref(src)) {
+ const absURL = new URL(src, bURL);
+ key = `script[src=${absURL.pathname}]`;
+ child.setAttribute('src', absURL.pathname);
+ } else {
+ key = `script[src=${src}]`
+ }
+ } else if (child.localName === 'link' && child.hasAttribute('href')) {
+ const href = child.getAttribute('href');
+ const rel = child.getAttribute('rel');
+ if (isRelativeHref(href)) {
+ const absURL = new URL(href, bURL);
+ key = `link[rel=${rel}][href=${absURL.pathname}]`;
+ child.setAttribute('href', absURL.pathname);
+ } else {
+ key = `link[rel=${rel}][href=${href}]`
+ }
+ } else {
+ key = s.serializeToString(child);
+ }
+
+ if (remove.has(key)) {
+ remove.delete(key);
+ duplicates.add(key);
+ } else if (!duplicates.has(key) && !add.has(key)) {
+ add.set(key, child);
+ }
+ }
+
+ for (const node of remove.values()) {
+ node.remove();
+ }
+ for (const node of add.values()) {
+ a.head.appendChild(node);
+ }
+ // Sync attributes
+ for (const el of ['documentElement', 'head', 'body']) {
+ sync(a[el], b[el]);
+ }
+ await waitForLoad(Array.from(add.values()));
+
+
+ // Body
+ const oldBody = new Map<string, Element>();
+ const newBody = new Set<Element>();
+ for (const child of a.body.children) {
+ let key: string;
+ if (child.localName === 'script' && child.hasAttribute('src')) {
+ const src = child.getAttribute('src');
+ if (isRelativeHref(src)) {
+ const absURL = new URL(src, bURL);
+ key = `script[src=${absURL.pathname}]`;
+ child.setAttribute('src', absURL.pathname);
+ } else {
+ key = `script[src=${src}]`
+ }
+ } else {
+ key = s.serializeToString(child);
+ }
+ oldBody.set(key, child);
+ }
+
+ outer: for (const child of b.body.children) {
+ let key: string;
+ if (child.localName === 'script' && child.hasAttribute('src')) {
+ const src = child.getAttribute('src');
+ if (isRelativeHref(src)) {
+ const absURL = new URL(src, bURL);
+ key = `script[src=${absURL.pathname}]`;
+ child.setAttribute('src', absURL.pathname);
+ } else {
+ key = `script[src=${src}]`
+ }
+ } else {
+ key = s.serializeToString(child);
+ }
+
+ if (oldBody.has(key)) {
+ oldBody.delete(key);
+ continue outer;
+ }
+
+ for (const [oldKey, oldChild] of oldBody.entries()) {
+ if (oldChild.localName === child.localName) {
+ sync(oldChild, child);
+ oldChild.replaceChildren(...child.children);
+ oldBody.delete(oldKey);
+ continue outer;
+ }
+ }
+ newBody.add(child);
+ }
+ for (const node of oldBody.values()) {
+ node.remove();
+ }
+ for (const node of newBody.values()) {
+ a.body.appendChild(node);
+ }
+}
diff --git a/smoke/astro.build-main/src/utils.ts b/smoke/astro.build-main/src/utils.ts
new file mode 100644
index 000000000..85684adf0
--- /dev/null
+++ b/smoke/astro.build-main/src/utils.ts
@@ -0,0 +1,8 @@
+const formatter = Intl.NumberFormat('en', { notation: 'compact' });
+
+let stars: string;
+export async function getStars() {
+ if (stars) return stars;
+ stars = await fetch('https://api.github.com/repos/withastro/astro').then(res => res.json()).then(res => formatter.format(res.stargazers_count));
+ return stars;
+}
diff --git a/smoke/astro.build-main/update-contributors.mjs b/smoke/astro.build-main/update-contributors.mjs
new file mode 100644
index 000000000..f47229366
--- /dev/null
+++ b/smoke/astro.build-main/update-contributors.mjs
@@ -0,0 +1,22 @@
+import fs from 'node:fs';
+import fetch from 'node-fetch';
+
+if (!process.env.GITHUB_TOKEN) {
+ throw new Error('GITHUB_TOKEN env variable must be set to run.');
+}
+async function main() {
+ const [staff, _l3, _l2, _l1] = await Promise.all([
+ fetch('https://api.github.com/orgs/withastro/teams/staff/members', {headers: {Authorization: 'token ' + process.env.GITHUB_TOKEN}}).then(r => r.json()),
+ fetch('https://api.github.com/orgs/withastro/teams/maintainers-core/members', {headers: {Authorization: 'token ' + process.env.GITHUB_TOKEN}}).then(r => r.json()),
+ fetch('https://api.github.com/orgs/withastro/teams/maintainers/members', {headers: {Authorization: 'token ' + process.env.GITHUB_TOKEN}}).then(r => r.json()),
+ fetch('https://api.github.com/repos/withastro/astro/contributors?per_page=100', {headers: {Authorization: 'token ' + process.env.GITHUB_TOKEN}}).then(r => r.json()),
+ ]);
+ const l3 = _l3.filter((a) => !staff.some(b => b.login === a.login));
+ const l2 = _l2.filter((a) => !_l3.some(b => b.login === a.login));
+ const l1 = _l1.filter((a) => !_l2.some(b => b.login === a.login));
+
+
+ fs.writeFileSync('src/data/contributors.json', JSON.stringify({staff, l3, l2, l1}));
+}
+
+main(); \ No newline at end of file
diff --git a/smoke/astro.build-main/yarn.lock b/smoke/astro.build-main/yarn.lock
new file mode 100644
index 000000000..dbdbf97bc
--- /dev/null
+++ b/smoke/astro.build-main/yarn.lock
@@ -0,0 +1,3755 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@ampproject/remapping@^2.1.0":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34"
+ integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.0"
+
+"@astrojs/compiler@^0.11.0":
+ version "0.11.3"
+ resolved "https://registry.yarnpkg.com/@astrojs/compiler/-/compiler-0.11.3.tgz#804de4ce6c073049175ba6e0eec470e8dabee81d"
+ integrity sha512-mg0hRk8uzk5LQjtHpAFtwmkCq7YM40Inev49WPqdxDnDaK056I1dbRCm3E/h2SJhLdUyI3KRML79N6DTmL5wRg==
+ dependencies:
+ typescript "^4.3.5"
+
+"@astrojs/language-server@^0.8.6":
+ version "0.8.8"
+ resolved "https://registry.yarnpkg.com/@astrojs/language-server/-/language-server-0.8.8.tgz#feabb30b080733350e08020e18fa602d76e9066d"
+ integrity sha512-XgBSVpqXEqGTdst+CnM03/nXYw9PYNAfTl27BaJuUhEtqA/iDlyM7wLnQMsJzwWVmoLqp0bCumHkb62NtfeDNA==
+ dependencies:
+ lodash "^4.17.21"
+ source-map "^0.7.3"
+ ts-morph "^12.0.0"
+ typescript "^4.5.4"
+ vscode-css-languageservice "^5.1.1"
+ vscode-emmet-helper "2.1.2"
+ vscode-html-languageservice "^3.0.3"
+ vscode-languageserver "6.1.1"
+ vscode-languageserver-protocol "^3.16.0"
+ vscode-languageserver-textdocument "^1.0.1"
+ vscode-languageserver-types "^3.16.0"
+ vscode-uri "^3.0.2"
+
+"@astrojs/markdown-remark@^0.6.1-next.2":
+ version "0.6.1-next.2"
+ resolved "https://registry.yarnpkg.com/@astrojs/markdown-remark/-/markdown-remark-0.6.1-next.2.tgz#e696292074daaefa3512af1000f784f6e31f44df"
+ integrity sha512-N1J725Ap2BmQDVcpTBbfIk62AJCobeXYy5RxRtVbFhZd2jCCrI2uHSFe1sSfbeMsU2cfujyNAH/eLJx4pbcVGQ==
+ dependencies:
+ "@astrojs/prism" "^0.4.0"
+ assert "^2.0.0"
+ github-slugger "^1.4.0"
+ gray-matter "^4.0.3"
+ mdast-util-mdx-expression "^1.1.1"
+ mdast-util-mdx-jsx "^1.1.3"
+ micromark-extension-mdx-expression "^1.0.3"
+ micromark-extension-mdx-jsx "^1.0.2"
+ prismjs "^1.25.0"
+ rehype-raw "^6.1.0"
+ rehype-slug "^5.0.0"
+ rehype-stringify "^9.0.2"
+ remark-gfm "^3.0.1"
+ remark-parse "^10.0.1"
+ remark-rehype "^10.0.1"
+ remark-smartypants "^2.0.0"
+ shiki "^0.10.0"
+ unified "^10.1.1"
+ unist-util-map "^3.0.0"
+ unist-util-visit "^4.1.0"
+
+"@astrojs/prism@0.4.0", "@astrojs/prism@^0.4.0":
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/prism/-/prism-0.4.0.tgz#615c8d9d9ca0c2b4984870b973a935d28b693ac5"
+ integrity sha512-dbB9Acm9Z/GDqhxwPv7W/DlZAScWNZGzFz8klTqDo9kaWD6O3qsZpXn641GuGeXdNWkqTmkinu37ZJHSxaDB7A==
+
+"@astrojs/renderer-preact@^0.5.0-next.0":
+ version "0.5.0-next.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/renderer-preact/-/renderer-preact-0.5.0-next.0.tgz#0e26a9ecc2a60048a497349c354a043066b6bca0"
+ integrity sha512-DT/XRbrGEqlda0RBnUDQRfAUP2yXcyB1jootAwyli7UFs1cOlPi8DOymf2gb5S8TaKk1XLp2djx1G8K0XFJBYA==
+ dependencies:
+ "@babel/plugin-transform-react-jsx" "^7.16.7"
+ preact "^10.6.5"
+ preact-render-to-string "^5.1.19"
+
+"@astrojs/renderer-react@0.5.0-next.0":
+ version "0.5.0-next.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/renderer-react/-/renderer-react-0.5.0-next.0.tgz#452990c3298f540c5e5650ef5745ec96433bc016"
+ integrity sha512-1DuaWllhddOvTmLS9ZOcMchQ/6HBhMlngiN4mXlkRH8y0RixBeg6aLWPEj3N46ZI4Zh73JOPUSWeGuVrDKVmHg==
+ dependencies:
+ "@babel/plugin-transform-react-jsx" "^7.16.7"
+ react "^17.0.2"
+ react-dom "^17.0.2"
+
+"@astrojs/renderer-svelte@0.4.0-next.0":
+ version "0.4.0-next.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/renderer-svelte/-/renderer-svelte-0.4.0-next.0.tgz#2de092b6d7d9125a62da82ad63fba16413b24994"
+ integrity sha512-5DwL3Tt+vSKdLzUe6A7rbqG6KvrRIGzF8YU2k5F/rYPI6XOAZ1vlCD3SPY5sZwu0/qjH12BG+AwG82wlNJIenA==
+ dependencies:
+ "@sveltejs/vite-plugin-svelte" "^1.0.0-next.37"
+ postcss-load-config "^3.1.1"
+ svelte "^3.46.4"
+ svelte-preprocess "^4.10.2"
+
+"@astrojs/renderer-vue@0.4.0-next.0":
+ version "0.4.0-next.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/renderer-vue/-/renderer-vue-0.4.0-next.0.tgz#5adc55870c84fceea90cb1b16ebacadc8968e60a"
+ integrity sha512-GJOH84SStDBNST1jwt1TT7aQ8z5aZ3K6w5tci0XFPq16BnT+KyHNbZITFTkY0nszF3evswV/Z0c0FJxlHeUeXQ==
+ dependencies:
+ "@vitejs/plugin-vue" "^2.2.0"
+ vue "^3.2.30"
+
+"@astropub/webapi@^0.10.1":
+ version "0.10.14"
+ resolved "https://registry.yarnpkg.com/@astropub/webapi/-/webapi-0.10.14.tgz#f3e118718d1353170ec9ea0adc4a725796717a77"
+ integrity sha512-/o0XdOZLSD3PcZEMm/gRGx5XTFmMzJOCgbBYw//cmHWwpLn6H+9xWBe68r9ToUQ1Ns4GVkfwZlyKVMBNTTXn/g==
+
+"@babel/code-frame@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
+ integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
+ dependencies:
+ "@babel/highlight" "^7.16.7"
+
+"@babel/compat-data@^7.16.4":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34"
+ integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==
+
+"@babel/core@^7.15.8":
+ version "7.17.5"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225"
+ integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==
+ dependencies:
+ "@ampproject/remapping" "^2.1.0"
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.17.3"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helpers" "^7.17.2"
+ "@babel/parser" "^7.17.3"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.17.3"
+ "@babel/types" "^7.17.0"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.1.2"
+ semver "^6.3.0"
+
+"@babel/generator@^7.17.3":
+ version "7.17.3"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200"
+ integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==
+ dependencies:
+ "@babel/types" "^7.17.0"
+ jsesc "^2.5.1"
+ source-map "^0.5.0"
+
+"@babel/helper-annotate-as-pure@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862"
+ integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-compilation-targets@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b"
+ integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==
+ dependencies:
+ "@babel/compat-data" "^7.16.4"
+ "@babel/helper-validator-option" "^7.16.7"
+ browserslist "^4.17.5"
+ semver "^6.3.0"
+
+"@babel/helper-environment-visitor@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7"
+ integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-function-name@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f"
+ integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-get-function-arity@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419"
+ integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-hoist-variables@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246"
+ integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-module-imports@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437"
+ integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-module-transforms@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41"
+ integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-simple-access" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-plugin-utils@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5"
+ integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==
+
+"@babel/helper-simple-access@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7"
+ integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-split-export-declaration@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b"
+ integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-validator-identifier@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
+ integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
+
+"@babel/helper-validator-option@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23"
+ integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==
+
+"@babel/helpers@^7.17.2":
+ version "7.17.2"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417"
+ integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==
+ dependencies:
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.17.0"
+ "@babel/types" "^7.17.0"
+
+"@babel/highlight@^7.16.7":
+ version "7.16.10"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88"
+ integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.1.0", "@babel/parser@^7.16.4", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3":
+ version "7.17.3"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0"
+ integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==
+
+"@babel/plugin-syntax-jsx@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665"
+ integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-react-jsx@^7.16.7":
+ version "7.17.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1"
+ integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-jsx" "^7.16.7"
+ "@babel/types" "^7.17.0"
+
+"@babel/template@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
+ integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/parser" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/traverse@^7.15.4", "@babel/traverse@^7.16.7", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3":
+ version "7.17.3"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57"
+ integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.17.3"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/parser" "^7.17.3"
+ "@babel/types" "^7.17.0"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.3.0":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b"
+ integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ to-fast-properties "^2.0.0"
+
+"@emmetio/abbreviation@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@emmetio/abbreviation/-/abbreviation-2.2.3.tgz#2b3c0383c1a4652f677d5b56fb3f1616fe16ef10"
+ integrity sha512-87pltuCPt99aL+y9xS6GPZ+Wmmyhll2WXH73gG/xpGcQ84DRnptBsI2r0BeIQ0EB/SQTOe2ANPqFqj3Rj5FOGA==
+ dependencies:
+ "@emmetio/scanner" "^1.0.0"
+
+"@emmetio/css-abbreviation@^2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@emmetio/css-abbreviation/-/css-abbreviation-2.1.4.tgz#90362e8a1122ce3b76f6c3157907d30182f53f54"
+ integrity sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==
+ dependencies:
+ "@emmetio/scanner" "^1.0.0"
+
+"@emmetio/scanner@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@emmetio/scanner/-/scanner-1.0.0.tgz#065b2af6233fe7474d44823e3deb89724af42b5f"
+ integrity sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==
+
+"@jridgewell/resolve-uri@^3.0.3":
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c"
+ integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==
+
+"@jridgewell/sourcemap-codec@^1.4.10":
+ version "1.4.11"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec"
+ integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==
+
+"@jridgewell/trace-mapping@^0.3.0":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3"
+ integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@ljharb/has-package-exports-patterns@0.0.1":
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/@ljharb/has-package-exports-patterns/-/has-package-exports-patterns-0.0.1.tgz#70f07047b058e0909488a0ab1928afb95a9326d0"
+ integrity sha512-J4HxcjHI8EzVwXj2HKfZrwnWv4wmOhGxSHyxDQLhiL4ibwRoIkYBqsacZUXFUWQzJtW6QC+FKSNy8HqKjkEqaQ==
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@proload/core@^0.2.2":
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/@proload/core/-/core-0.2.2.tgz#d6de30e06a8864bdd0fbe568f87d0582cf988c1d"
+ integrity sha512-HYQEblYXIpW77kvGyW4penEl9D9e9MouPhTqVaDz9+QVFliYjsq18inTfnfTa81s3oraPVtTk60tqCWOf2fKGQ==
+ dependencies:
+ deepmerge "^4.2.2"
+ escalade "^3.1.1"
+
+"@proload/plugin-tsm@^0.1.0":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@proload/plugin-tsm/-/plugin-tsm-0.1.1.tgz#096cefbf9a4fab42d129db36b194c64ac0ad20ec"
+ integrity sha512-qfGegg6I3YBCZDjYR9xb41MTc2EfL0sQQmw49Z/yi9OstIpUa/67MBy4AuNhoyG9FuOXia9gPoeBk5pGnBOGtA==
+ dependencies:
+ tsm "^2.1.4"
+
+"@rollup/pluginutils@^4.1.2":
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.2.tgz#ed5821c15e5e05e32816f5fb9ec607cdf5a75751"
+ integrity sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==
+ dependencies:
+ estree-walker "^2.0.1"
+ picomatch "^2.2.2"
+
+"@sveltejs/vite-plugin-svelte@^1.0.0-next.37":
+ version "1.0.0-next.37"
+ resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.37.tgz#bb553425a3f9b780221134b04b9ace4165279d3c"
+ integrity sha512-EdSXw2rXeOahNrQfMJVZxa/NxZxW1a0TiBI3s+pVxnxU14hEQtnkLtdbTFhnceu22gJpNPFSIJRcIwRBBDQIeA==
+ dependencies:
+ "@rollup/pluginutils" "^4.1.2"
+ debug "^4.3.3"
+ kleur "^4.1.4"
+ magic-string "^0.25.7"
+ svelte-hmr "^0.14.9"
+
+"@trysound/sax@0.2.0":
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
+ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
+
+"@ts-morph/common@~0.11.1":
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.11.1.tgz#281af2a0642b19354d8aa07a0d50dfdb4aa8164e"
+ integrity sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==
+ dependencies:
+ fast-glob "^3.2.7"
+ minimatch "^3.0.4"
+ mkdirp "^1.0.4"
+ path-browserify "^1.0.1"
+
+"@types/acorn@^4.0.0":
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.6.tgz#d61ca5480300ac41a7d973dd5b84d0a591154a22"
+ integrity sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==
+ dependencies:
+ "@types/estree" "*"
+
+"@types/babel__core@^7.1.15":
+ version "7.1.18"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8"
+ integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+ "@types/babel__generator" "*"
+ "@types/babel__template" "*"
+ "@types/babel__traverse" "*"
+
+"@types/babel__generator@*":
+ version "7.6.4"
+ resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7"
+ integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@types/babel__template@*":
+ version "7.4.1"
+ resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969"
+ integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@types/babel__traverse@*":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43"
+ integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==
+ dependencies:
+ "@babel/types" "^7.3.0"
+
+"@types/debug@^4.0.0", "@types/debug@^4.1.7":
+ version "4.1.7"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82"
+ integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==
+ dependencies:
+ "@types/ms" "*"
+
+"@types/estree-jsx@^0.0.1":
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-0.0.1.tgz#c36d7a1afeb47a95a8ee0b7bc8bc705db38f919d"
+ integrity sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==
+ dependencies:
+ "@types/estree" "*"
+
+"@types/estree@*":
+ version "0.0.51"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
+ integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
+
+"@types/estree@^0.0.50":
+ version "0.0.50"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
+ integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==
+
+"@types/hast@^2.0.0":
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc"
+ integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/json5@^0.0.30":
+ version "0.0.30"
+ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.30.tgz#44cb52f32a809734ca562e685c6473b5754a7818"
+ integrity sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==
+
+"@types/mdast@^3.0.0":
+ version "3.0.10"
+ resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af"
+ integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/mdurl@^1.0.0":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9"
+ integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==
+
+"@types/ms@*":
+ version "0.7.31"
+ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
+ integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
+
+"@types/nlcst@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/nlcst/-/nlcst-1.0.0.tgz#9dacd7e9a32bcf0451873be62bdc373aed735b46"
+ integrity sha512-3TGCfOcy8R8mMQ4CNSNOe3PG66HttvjcLzCoOpvXvDtfWOTi+uT/rxeOKm/qEwbM4SNe1O/PjdiBK2YcTjU4OQ==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/node@*":
+ version "17.0.18"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.18.tgz#3b4fed5cfb58010e3a2be4b6e74615e4847f1074"
+ integrity sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA==
+
+"@types/parse5@^6.0.0", "@types/parse5@^6.0.1":
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb"
+ integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==
+
+"@types/pug@^2.0.4":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.6.tgz#f830323c88172e66826d0bde413498b61054b5a6"
+ integrity sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==
+
+"@types/resolve@^1.17.0":
+ version "1.20.1"
+ resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.1.tgz#3727e48042fda81e374f5d5cf2fa92288bf698f8"
+ integrity sha512-Ku5+GPFa12S3W26Uwtw+xyrtIpaZsGYHH6zxNbZlstmlvMYSZRzOwzwsXbxlVUbHyUucctSyuFtu6bNxwYomIw==
+
+"@types/sass@^1.16.0":
+ version "1.43.1"
+ resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.43.1.tgz#86bb0168e9e881d7dade6eba16c9ed6d25dc2f68"
+ integrity sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==
+ dependencies:
+ "@types/node" "*"
+
+"@types/unist@*", "@types/unist@^2.0.0":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d"
+ integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==
+
+"@vitejs/plugin-vue@^2.2.0":
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-2.2.2.tgz#df5d4464ad8cb97c9fb7407a1e5a3a34f716febb"
+ integrity sha512-3C0s45VOwIFEDU+2ownJOpb0zD5fnjXWaHVOLID2R1mYOlAx3doNBFnNbVjaZvpke/L7IdPJXjpyYpXZToDKig==
+
+"@vue/compiler-core@3.2.31":
+ version "3.2.31"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.31.tgz#d38f06c2cf845742403b523ab4596a3fda152e89"
+ integrity sha512-aKno00qoA4o+V/kR6i/pE+aP+esng5siNAVQ422TkBNM6qA4veXiZbSe8OTXHXquEi/f6Akc+nLfB4JGfe4/WQ==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/shared" "3.2.31"
+ estree-walker "^2.0.2"
+ source-map "^0.6.1"
+
+"@vue/compiler-dom@3.2.31":
+ version "3.2.31"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.31.tgz#b1b7dfad55c96c8cc2b919cd7eb5fd7e4ddbf00e"
+ integrity sha512-60zIlFfzIDf3u91cqfqy9KhCKIJgPeqxgveH2L+87RcGU/alT6BRrk5JtUso0OibH3O7NXuNOQ0cDc9beT0wrg==
+ dependencies:
+ "@vue/compiler-core" "3.2.31"
+ "@vue/shared" "3.2.31"
+
+"@vue/compiler-sfc@3.2.31":
+ version "3.2.31"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.31.tgz#d02b29c3fe34d599a52c5ae1c6937b4d69f11c2f"
+ integrity sha512-748adc9msSPGzXgibHiO6T7RWgfnDcVQD+VVwYgSsyyY8Ans64tALHZANrKtOzvkwznV/F4H7OAod/jIlp/dkQ==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.31"
+ "@vue/compiler-dom" "3.2.31"
+ "@vue/compiler-ssr" "3.2.31"
+ "@vue/reactivity-transform" "3.2.31"
+ "@vue/shared" "3.2.31"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+ postcss "^8.1.10"
+ source-map "^0.6.1"
+
+"@vue/compiler-ssr@3.2.31":
+ version "3.2.31"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.31.tgz#4fa00f486c9c4580b40a4177871ebbd650ecb99c"
+ integrity sha512-mjN0rqig+A8TVDnsGPYJM5dpbjlXeHUm2oZHZwGyMYiGT/F4fhJf/cXy8QpjnLQK4Y9Et4GWzHn9PS8AHUnSkw==
+ dependencies:
+ "@vue/compiler-dom" "3.2.31"
+ "@vue/shared" "3.2.31"
+
+"@vue/reactivity-transform@3.2.31":
+ version "3.2.31"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.31.tgz#0f5b25c24e70edab2b613d5305c465b50fc00911"
+ integrity sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.31"
+ "@vue/shared" "3.2.31"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+
+"@vue/reactivity@3.2.31":
+ version "3.2.31"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.31.tgz#fc90aa2cdf695418b79e534783aca90d63a46bbd"
+ integrity sha512-HVr0l211gbhpEKYr2hYe7hRsV91uIVGFYNHj73njbARVGHQvIojkImKMaZNDdoDZOIkMsBc9a1sMqR+WZwfSCw==
+ dependencies:
+ "@vue/shared" "3.2.31"
+
+"@vue/runtime-core@3.2.31":
+ version "3.2.31"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.31.tgz#9d284c382f5f981b7a7b5971052a1dc4ef39ac7a"
+ integrity sha512-Kcog5XmSY7VHFEMuk4+Gap8gUssYMZ2+w+cmGI6OpZWYOEIcbE0TPzzPHi+8XTzAgx1w/ZxDFcXhZeXN5eKWsA==
+ dependencies:
+ "@vue/reactivity" "3.2.31"
+ "@vue/shared" "3.2.31"
+
+"@vue/runtime-dom@3.2.31":
+ version "3.2.31"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.31.tgz#79ce01817cb3caf2c9d923f669b738d2d7953eff"
+ integrity sha512-N+o0sICVLScUjfLG7u9u5XCjvmsexAiPt17GNnaWHJUfsKed5e85/A3SWgKxzlxx2SW/Hw7RQxzxbXez9PtY3g==
+ dependencies:
+ "@vue/runtime-core" "3.2.31"
+ "@vue/shared" "3.2.31"
+ csstype "^2.6.8"
+
+"@vue/server-renderer@3.2.31":
+ version "3.2.31"
+ resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.31.tgz#201e9d6ce735847d5989403af81ef80960da7141"
+ integrity sha512-8CN3Zj2HyR2LQQBHZ61HexF5NReqngLT3oahyiVRfSSvak+oAvVmu8iNLSu6XR77Ili2AOpnAt1y8ywjjqtmkg==
+ dependencies:
+ "@vue/compiler-ssr" "3.2.31"
+ "@vue/shared" "3.2.31"
+
+"@vue/shared@3.2.31":
+ version "3.2.31"
+ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.31.tgz#c90de7126d833dcd3a4c7534d534be2fb41faa4e"
+ integrity sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ==
+
+"@web/parse5-utils@^1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@web/parse5-utils/-/parse5-utils-1.3.0.tgz#e2e9e98b31a4ca948309f74891bda8d77399f6bd"
+ integrity sha512-Pgkx3ECc8EgXSlS5EyrgzSOoUbM6P8OKS471HLAyvOBcP1NCBn0to4RN/OaKASGq8qa3j+lPX9H14uA5AHEnQg==
+ dependencies:
+ "@types/parse5" "^6.0.1"
+ parse5 "^6.0.1"
+
+ansi-regex@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
+ integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+array-iterate@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.4.tgz#add1522e9dd9749bb41152d08b845bd08d6af8b7"
+ integrity sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==
+
+assert@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32"
+ integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==
+ dependencies:
+ es6-object-assign "^1.1.0"
+ is-nan "^1.2.1"
+ object-is "^1.0.1"
+ util "^0.12.0"
+
+astro-icon@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/astro-icon/-/astro-icon-0.6.0.tgz#86ffca9838226ae3d2c903ab5e2ce474eccb7171"
+ integrity sha512-1Ch1S+9d73DVl2erbyGRAXa8KYqXIRzJ681/nLgkSrdrBBkb9RgUV1Wrj0Tese2ukyfxFHFAYo/GdQHrWdcsDg==
+ dependencies:
+ node-fetch "^3.1.0"
+ resolve-pkg "^2.0.0"
+ svgo "^2.8.0"
+
+astro@^0.23.0-next.10:
+ version "0.23.0-next.10"
+ resolved "https://registry.yarnpkg.com/astro/-/astro-0.23.0-next.10.tgz#fbacb8d9fb18399caa44726a4cb64761835d448e"
+ integrity sha512-WKALrpi92aEdc48zi2cfgc2T24l7maVurfZ75Ugl2C805Y6MXwnKfe50Wk1s50u5gEoz9LLqFqCqU6EESW2x2g==
+ dependencies:
+ "@astrojs/compiler" "^0.11.0"
+ "@astrojs/language-server" "^0.8.6"
+ "@astrojs/markdown-remark" "^0.6.1-next.2"
+ "@astrojs/prism" "0.4.0"
+ "@astrojs/renderer-preact" "^0.5.0-next.0"
+ "@astrojs/renderer-react" "0.5.0-next.0"
+ "@astrojs/renderer-svelte" "0.4.0-next.0"
+ "@astrojs/renderer-vue" "0.4.0-next.0"
+ "@astropub/webapi" "^0.10.1"
+ "@babel/core" "^7.15.8"
+ "@babel/traverse" "^7.15.4"
+ "@proload/core" "^0.2.2"
+ "@proload/plugin-tsm" "^0.1.0"
+ "@types/babel__core" "^7.1.15"
+ "@types/debug" "^4.1.7"
+ "@web/parse5-utils" "^1.3.0"
+ ci-info "^3.2.0"
+ common-ancestor-path "^1.0.1"
+ eol "^0.9.1"
+ es-module-lexer "^0.9.3"
+ esbuild "0.13.7"
+ estree-walker "^3.0.0"
+ fast-glob "^3.2.7"
+ fast-xml-parser "^4.0.0-beta.3"
+ html-entities "^2.3.2"
+ htmlparser2 "^7.1.2"
+ kleur "^4.1.4"
+ magic-string "^0.25.7"
+ mime "^3.0.0"
+ morphdom "^2.6.1"
+ parse5 "^6.0.1"
+ path-to-regexp "^6.2.0"
+ postcss "^8.3.8"
+ prismjs "^1.25.0"
+ rehype-slug "^5.0.0"
+ resolve "^1.20.0"
+ rollup "^2.64.0"
+ semver "^7.3.5"
+ send "^0.17.1"
+ serialize-javascript "^6.0.0"
+ shiki "^0.10.0"
+ shorthash "^0.0.2"
+ slash "^4.0.0"
+ sourcemap-codec "^1.4.8"
+ srcset-parse "^1.1.0"
+ string-width "^5.0.0"
+ strip-ansi "^7.0.1"
+ supports-esm "^1.0.0"
+ tsconfig-resolver "^3.0.1"
+ vite "^2.8.0"
+ yargs-parser "^21.0.0"
+ zod "^3.8.1"
+
+available-typed-arrays@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
+ integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
+
+bail@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d"
+ integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+boolbase@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+browserslist@^4.17.5:
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.2.tgz#9ba98791192a39e1242f0670bb265ceee1baf0a4"
+ integrity sha512-97XU1CTZ5TwU9Qy/Taj+RtiI6SQM1WIhZ9osT7EY0oO2aWXGABZT2OZeRL+6PfaQsiiMIjjwIoYFPq4APgspgQ==
+ dependencies:
+ caniuse-lite "^1.0.30001312"
+ electron-to-chromium "^1.4.71"
+ escalade "^3.1.1"
+ node-releases "^2.0.2"
+ picocolors "^1.0.0"
+
+buffer-crc32@^0.2.5:
+ version "0.2.13"
+ resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
+ integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
+
+call-bind@^1.0.0, call-bind@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+ dependencies:
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+
+caniuse-lite@^1.0.30001312:
+ version "1.0.30001312"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f"
+ integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==
+
+ccount@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5"
+ integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==
+
+chalk@^2.0.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+character-entities-html4@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b"
+ integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==
+
+character-entities-legacy@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b"
+ integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==
+
+character-entities@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.1.tgz#98724833e1e27990dee0bd0f2b8a859c3476aac7"
+ integrity sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==
+
+character-reference-invalid@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9"
+ integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==
+
+ci-info@^3.2.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2"
+ integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==
+
+code-block-writer@^10.1.1:
+ version "10.1.1"
+ resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-10.1.1.tgz#ad5684ed4bfb2b0783c8b131281ae84ee640a42f"
+ integrity sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+comma-separated-tokens@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz#d4c25abb679b7751c880be623c1179780fe1dd98"
+ integrity sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==
+
+commander@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
+ integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+
+common-ancestor-path@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7"
+ integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+convert-source-map@^1.7.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
+ integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+css-select@^4.1.3:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd"
+ integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^5.1.0"
+ domhandler "^4.3.0"
+ domutils "^2.8.0"
+ nth-check "^2.0.1"
+
+css-tree@^1.1.2, css-tree@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+ dependencies:
+ mdn-data "2.0.14"
+ source-map "^0.6.1"
+
+css-what@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe"
+ integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==
+
+csso@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
+ integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
+ dependencies:
+ css-tree "^1.1.2"
+
+csstype@^2.6.8:
+ version "2.6.19"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.19.tgz#feeb5aae89020bb389e1f63669a5ed490e391caa"
+ integrity sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==
+
+data-uri-to-buffer@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b"
+ integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==
+
+date-fns@^2.28.0:
+ version "2.28.0"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2"
+ integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==
+
+debug@2.6.9:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^4.0.0, debug@^4.1.0, debug@^4.3.3:
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
+ integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
+ dependencies:
+ ms "2.1.2"
+
+decode-named-character-reference@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz#57b2bd9112659cacbc449d3577d7dadb8e1f3d1b"
+ integrity sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==
+ dependencies:
+ character-entities "^2.0.0"
+
+deepmerge@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
+ integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
+
+define-properties@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+ integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+
+dequal@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d"
+ integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==
+
+destroy@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+ integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+
+detect-indent@^6.0.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6"
+ integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==
+
+diff@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
+ integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
+
+dom-serializer@^1.0.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"
+ integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.2.0"
+ entities "^2.0.0"
+
+domelementtype@^2.0.1, domelementtype@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
+ integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
+
+domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626"
+ integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==
+ dependencies:
+ domelementtype "^2.2.0"
+
+domutils@^2.8.0:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+ dependencies:
+ dom-serializer "^1.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+
+eastasianwidth@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
+ integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+
+electron-to-chromium@^1.4.71:
+ version "1.4.71"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz#17056914465da0890ce00351a3b946fd4cd51ff6"
+ integrity sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw==
+
+emmet@^2.1.5:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/emmet/-/emmet-2.3.6.tgz#1d93c1ac03164da9ddf74864c1f341ed6ff6c336"
+ integrity sha512-pLS4PBPDdxuUAmw7Me7+TcHbykTsBKN/S9XJbUOMFQrNv9MoshzyMFK/R57JBm94/6HSL4vHnDeEmxlC82NQ4A==
+ dependencies:
+ "@emmetio/abbreviation" "^2.2.3"
+ "@emmetio/css-abbreviation" "^2.1.4"
+
+emoji-regex@^9.2.2:
+ version "9.2.2"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+
+entities@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
+ integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+
+entities@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
+ integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
+
+eol@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd"
+ integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==
+
+es-abstract@^1.18.5:
+ version "1.19.1"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3"
+ integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==
+ dependencies:
+ call-bind "^1.0.2"
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ get-intrinsic "^1.1.1"
+ get-symbol-description "^1.0.0"
+ has "^1.0.3"
+ has-symbols "^1.0.2"
+ internal-slot "^1.0.3"
+ is-callable "^1.2.4"
+ is-negative-zero "^2.0.1"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.1"
+ is-string "^1.0.7"
+ is-weakref "^1.0.1"
+ object-inspect "^1.11.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.2"
+ string.prototype.trimend "^1.0.4"
+ string.prototype.trimstart "^1.0.4"
+ unbox-primitive "^1.0.1"
+
+es-module-lexer@^0.9.3:
+ version "0.9.3"
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19"
+ integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+es6-object-assign@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
+ integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=
+
+es6-promise@^3.1.2:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
+ integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=
+
+esbuild-android-arm64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.7.tgz#528886c36968aa6ab6496392d419654dda88f092"
+ integrity sha512-yqCTKzmm3jiUXgi0yeKhvwZCZTqClUXwwMRAntcM9u/xvXhmpw0V0Z4qDEpnkmF2NCMzmJRH+DAAQ5whuf3CYA==
+
+esbuild-android-arm64@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz#fb051169a63307d958aec85ad596cfc7d7770303"
+ integrity sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ==
+
+esbuild-darwin-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.7.tgz#32cf420d43ca448e7741a90d0d4c6dc5385969da"
+ integrity sha512-MvsgMUWzq5FxoeJLSavw3rgQbaC55A8QTI1U2/8MWamtAeDKyzWQnglcsF0/TkjGLaKEqS0ZLo8akJ8q34BCtw==
+
+esbuild-darwin-64@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz#615ea0a9de67b57a293a7128d7ac83ee307a856d"
+ integrity sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw==
+
+esbuild-darwin-arm64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.7.tgz#c80f0b62c8ae4710b17090f507037aeae73e9016"
+ integrity sha512-tuP+dpIzXj17UC17VkHFDAH5nB7MajJK7sF8Fz4iVo8cml8YXj3MeNtjjLmx9YFvPs4XW3hFw1eqZJ06h2ssIA==
+
+esbuild-darwin-arm64@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz#82054dcfcecb15ccfd237093b8008e7745a99ad9"
+ integrity sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw==
+
+esbuild-freebsd-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.7.tgz#0b826a9655446c0d0a01a4a996d450e5cb0e033a"
+ integrity sha512-p07TrpkCJJyAXXCXFm2IpAvyASUTcuT0OF43riEsgjuRJmtaNBOUENecr2B2k/zd9wkGz6UyxxtnFntaBttkDg==
+
+esbuild-freebsd-64@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz#778a818c5b078d5cdd6bb6c0e0797217d196999b"
+ integrity sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A==
+
+esbuild-freebsd-arm64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.7.tgz#f9c980ce7e71e6702f82706a6244959eba2b80dc"
+ integrity sha512-MCtfBRkE1GwAnjVoWPYoZ+S/+zanzWxAJVER1/8jmWobCXJG0w+YM2IXQ2fN4T9U96RusFWQDMJVoACnqhIAzg==
+
+esbuild-freebsd-arm64@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz#18da93b9f3db2e036f72383bfe73b28b73bb332c"
+ integrity sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ==
+
+esbuild-linux-32@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.7.tgz#3d9d704452ed13da20771537bf30f695b9f80327"
+ integrity sha512-HM4d16XbqToo93LPrgzkiLgX3Xgr9Mw67tEM8vjhHDx18JnaZqPdIsl5ZfCqRGHlLUq+GdFKl6+dH7WlsiWMCA==
+
+esbuild-linux-32@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz#d0d5d9f5bb3536e17ac097e9512019c65b7c0234"
+ integrity sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg==
+
+esbuild-linux-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.7.tgz#ce5c7b964990fdb2713ce816f0a24ffffd96942c"
+ integrity sha512-krgiIEyqcS0kfTjptGEQzdYwiEmmqpmiZHlKqZILVuU5BaIVWCBMmVx20HH9waJw1yT0Ao4fZTZ9kg8s/pKAYA==
+
+esbuild-linux-64@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz#2773d540971999ea7f38107ef92fca753f6a8c30"
+ integrity sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg==
+
+esbuild-linux-arm64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.7.tgz#53a53f43669ef705c925bf275491d507cb77b06b"
+ integrity sha512-aM2BUTdbtzEUOuLqDusGCuWQRqc0JazgbA/6+Q9xhUgNLHGUMAsu4C5G0qPnJCTlWGZX+bcQYma6wFVEp9ibBg==
+
+esbuild-linux-arm64@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz#5d4480ce6d6bffab1dd76a23158f5a5ab33e7ba4"
+ integrity sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A==
+
+esbuild-linux-arm@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.7.tgz#3372ea117517aa3194ed1622305ab76bf2550b1d"
+ integrity sha512-GOAt1brGG14mmQx2sRD3wHi3rih94OzhmDRVyo7JvlSmWOfEczPf7zL7YfmgjuktvvuLTERtTJzaih7nyCwPOg==
+
+esbuild-linux-arm@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz#c6391b3f7c8fa6d3b99a7e893ce0f45f3a921eef"
+ integrity sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g==
+
+esbuild-linux-mips64le@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.7.tgz#c431291deecb949a4cdbbab0bc01b6b4a962104a"
+ integrity sha512-+UJq6cxpc2ldaQFdpEDrBhqhluXsqCNlWiHccIjq25r+3YbFg0c/RJEypoVU7tjhGXUGWyWWQ7SLkzHYpf+Nsg==
+
+esbuild-linux-mips64le@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz#2c8dabac355c502e86c38f9f292b3517d8e181f3"
+ integrity sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ==
+
+esbuild-linux-ppc64le@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.7.tgz#d47b2322ac1ad61669045d5f95181d4f0d9744d2"
+ integrity sha512-6zwpliO4ZZtodDYM1JJEmSMpkd07I8bnNOKoHe7TOs9VhylXJooHh5ObSbSvk3FxCBs+jL5bxb24p10/Cg4RGw==
+
+esbuild-linux-ppc64le@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz#69d71b2820d5c94306072dac6094bae38e77d1c0"
+ integrity sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng==
+
+esbuild-linux-riscv64@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz#c0ec0fc3a23624deebf657781550d2329cec4213"
+ integrity sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ==
+
+esbuild-linux-s390x@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz#ec2af4572d63336cfb27f5a5c851fb1b6617dd91"
+ integrity sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw==
+
+esbuild-netbsd-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.7.tgz#9c9fed5dfc2f3656de024496f10928368a29ea10"
+ integrity sha512-CfTHeTfJWlwjgfpApXYvECytLD6BzTWovLE0+28KT7bjU5fM4ieDYzRvjWjFAOB2X6DWpaoQnJAlhJirQBW0EQ==
+
+esbuild-netbsd-64@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz#0e283278e9fdbaa7f0930f93ee113d7759cd865e"
+ integrity sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA==
+
+esbuild-openbsd-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.7.tgz#fc039ce363b0ad5617a82dc9d312fccebd950070"
+ integrity sha512-qfW+f0MQfl72zVwgbV00I1kAP2zty+N031cNnQINcBmzHOSbEbaBQbUM0kawq+wdfgS/Xmppgf7nD1H8GWAvow==
+
+esbuild-openbsd-64@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz#2a73bba04e16d8ef278fbe2be85248e12a2f2cc2"
+ integrity sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA==
+
+esbuild-sunos-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.7.tgz#ad85a2f2cd38b6e920f2ad07ebc134cdba92e26d"
+ integrity sha512-fVRM9mV0wAYLt92IqzudxACMLJZRQFx1oJsNeU4fPFmUxIkYE4C7G7z9vqI2eu9bpDo1fA+3+5djo/T/28Mckg==
+
+esbuild-sunos-64@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz#8fe03513b8b2e682a6d79d5e3ca5849651a3c1d8"
+ integrity sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g==
+
+esbuild-windows-32@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.7.tgz#146b416c5172a2c252ce29f899c0c8f1a20eac50"
+ integrity sha512-v3csjeQtlHHWS1q/tE9rTRCSSU/fGvJVh1l7gkS93ysAaIMeC0j9Q0h2PxFpQ6yxuwftuDYfQdnkVGcqjkKM8A==
+
+esbuild-windows-32@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz#a75df61e3e49df292a1842be8e877a3153ee644f"
+ integrity sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg==
+
+esbuild-windows-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.7.tgz#9eaffae2204263a7b35313ea51a6a6e5a5e0bb48"
+ integrity sha512-vk+yv/vYpHZP0vxSaxaA4EMaicuxy4E435EXkbsgk5UgpcQgSP0CVlIeaqtgfSM3IwGnpbagOirRVqqZqxyMDQ==
+
+esbuild-windows-64@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz#d06cf8bbe4945b8bf95a730d871e54a22f635941"
+ integrity sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw==
+
+esbuild-windows-arm64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.7.tgz#6937647f05528248b1634027d839ae81ffdde8c2"
+ integrity sha512-0Fp+IeG5qWLCK+U6d8L9/SnXkI6f3JMtauSQ8HHzw3Fl0pZ+VImUAUWZ3g2fhthNqp+t8dB3n238CJD6XBn15w==
+
+esbuild-windows-arm64@0.14.22:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz#f8b1b05c548073be8413a5ecb12d7c2f6e717227"
+ integrity sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg==
+
+esbuild@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.7.tgz#ee6e04da3c0ca34f35a05dea649caa48686c92fb"
+ integrity sha512-Ok3w+Pc9SNdNVEEJUUx9OvNZHwFyoKS0N+ceytfUB3wh/HxhRkOEc9dO8KR9AjfpFI82/Wg258GRDs1/8SFgKQ==
+ optionalDependencies:
+ esbuild-android-arm64 "0.13.7"
+ esbuild-darwin-64 "0.13.7"
+ esbuild-darwin-arm64 "0.13.7"
+ esbuild-freebsd-64 "0.13.7"
+ esbuild-freebsd-arm64 "0.13.7"
+ esbuild-linux-32 "0.13.7"
+ esbuild-linux-64 "0.13.7"
+ esbuild-linux-arm "0.13.7"
+ esbuild-linux-arm64 "0.13.7"
+ esbuild-linux-mips64le "0.13.7"
+ esbuild-linux-ppc64le "0.13.7"
+ esbuild-netbsd-64 "0.13.7"
+ esbuild-openbsd-64 "0.13.7"
+ esbuild-sunos-64 "0.13.7"
+ esbuild-windows-32 "0.13.7"
+ esbuild-windows-64 "0.13.7"
+ esbuild-windows-arm64 "0.13.7"
+
+esbuild@^0.14.0, esbuild@^0.14.14:
+ version "0.14.22"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.22.tgz#2b55fde89d7aa5aaaad791816d58ff9dfc5ed085"
+ integrity sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA==
+ optionalDependencies:
+ esbuild-android-arm64 "0.14.22"
+ esbuild-darwin-64 "0.14.22"
+ esbuild-darwin-arm64 "0.14.22"
+ esbuild-freebsd-64 "0.14.22"
+ esbuild-freebsd-arm64 "0.14.22"
+ esbuild-linux-32 "0.14.22"
+ esbuild-linux-64 "0.14.22"
+ esbuild-linux-arm "0.14.22"
+ esbuild-linux-arm64 "0.14.22"
+ esbuild-linux-mips64le "0.14.22"
+ esbuild-linux-ppc64le "0.14.22"
+ esbuild-linux-riscv64 "0.14.22"
+ esbuild-linux-s390x "0.14.22"
+ esbuild-netbsd-64 "0.14.22"
+ esbuild-openbsd-64 "0.14.22"
+ esbuild-sunos-64 "0.14.22"
+ esbuild-windows-32 "0.14.22"
+ esbuild-windows-64 "0.14.22"
+ esbuild-windows-arm64 "0.14.22"
+
+escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+escape-string-regexp@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
+ integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
+
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+estree-util-is-identifier-name@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.0.tgz#e2d3d2ae3032c017b2112832bfc5d8ba938c8010"
+ integrity sha512-aXXZFVMnBBDRP81vS4YtAYJ0hUkgEsXea7lNKWCOeaAquGb1Jm2rcONPB5fpzwgbNxulTvrWuKnp9UElUGAKeQ==
+
+estree-util-visit@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-1.1.0.tgz#c0ea7942c40ac7889a77b57a11e92f987744bc6f"
+ integrity sha512-3lXJ4Us9j8TUif9cWcQy81t9p5OLasnDuuhrFiqb+XstmKC1d1LmrQWYsY49/9URcfHE64mPypDBaNK9NwWDPQ==
+ dependencies:
+ "@types/estree-jsx" "^0.0.1"
+ "@types/unist" "^2.0.0"
+
+estree-walker@^2.0.1, estree-walker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+estree-walker@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.1.tgz#c2a9fb4a30232f5039b7c030b37ead691932debd"
+ integrity sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+fast-glob@^3.2.7:
+ version "3.2.11"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
+ integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
+ 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"
+
+fast-xml-parser@^4.0.0-beta.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.0.3.tgz#ad1ebfa53a447369634454073f7952f171ed4aba"
+ integrity sha512-xhQbg3a/EYNHwK0cxIG1nZmVkHX/0tWihamn5pU4Mhd9KEVE2ga8ZJiqEUgB2sApElvAATOdMTLjgqIpvYDUkQ==
+ dependencies:
+ strnum "^1.0.5"
+
+fastq@^1.6.0:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
+ integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
+ dependencies:
+ reusify "^1.0.4"
+
+fetch-blob@^3.1.2, fetch-blob@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.4.tgz#e8c6567f80ad7fc22fd302e7dcb72bafde9c1717"
+ integrity sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA==
+ dependencies:
+ node-domexception "^1.0.0"
+ web-streams-polyfill "^3.0.3"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+foreach@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
+ integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
+
+formdata-polyfill@^4.0.10:
+ version "4.0.10"
+ resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423"
+ integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==
+ dependencies:
+ fetch-blob "^3.1.2"
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@~2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
+ integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+
+get-symbol-description@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
+ integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.1.1"
+
+github-slugger@^1.1.1, github-slugger@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e"
+ integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==
+
+glob-parent@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob@^7.1.3:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
+ integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+graceful-fs@^4.1.3:
+ version "4.2.9"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
+ integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
+
+gray-matter@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798"
+ integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==
+ dependencies:
+ js-yaml "^3.13.1"
+ kind-of "^6.0.2"
+ section-matter "^1.0.0"
+ strip-bom-string "^1.0.0"
+
+has-bigints@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
+ integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-package-exports@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/has-package-exports/-/has-package-exports-1.2.3.tgz#4cd984c761140156e27aea7cae9473a3dd0cc4d9"
+ integrity sha512-lkLLwrNNaRsmwj+TylZJh1o3YlzLfgrl9fZKOAMj4MHjbvt7wy1J0icE6jD36dzkA0aQGoNuqY0hVN2uuPfPBA==
+ dependencies:
+ "@ljharb/has-package-exports-patterns" "0.0.1"
+
+has-symbols@^1.0.1, has-symbols@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
+ integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
+
+has-tostringtag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
+ integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
+ dependencies:
+ has-symbols "^1.0.2"
+
+has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hast-to-hyperscript@^10.0.0:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-10.0.1.tgz#3decd7cb4654bca8883f6fcbd4fb3695628c4296"
+ integrity sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+ style-to-object "^0.3.0"
+ unist-util-is "^5.0.0"
+ web-namespaces "^2.0.0"
+
+hast-util-from-parse5@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz#c129dd3a24dd8a867ab8a029ca47e27aa54864b7"
+ integrity sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/parse5" "^6.0.0"
+ "@types/unist" "^2.0.0"
+ hastscript "^7.0.0"
+ property-information "^6.0.0"
+ vfile "^5.0.0"
+ vfile-location "^4.0.0"
+ web-namespaces "^2.0.0"
+
+hast-util-has-property@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/hast-util-has-property/-/hast-util-has-property-2.0.0.tgz#c15cd6180f3e535540739fcc9787bcffb5708cae"
+ integrity sha512-4Qf++8o5v14us4Muv3HRj+Er6wTNGA/N9uCaZMty4JWvyFKLdhULrv4KE1b65AthsSO9TXSZnjuxS8ecIyhb0w==
+
+hast-util-heading-rank@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/hast-util-heading-rank/-/hast-util-heading-rank-2.1.0.tgz#c39f34fa8330ebfec03a08b5d5019ed56122029c"
+ integrity sha512-w+Rw20Q/iWp2Bcnr6uTrYU6/ftZLbHKhvc8nM26VIWpDqDMlku2iXUVTeOlsdoih/UKQhY7PHQ+vZ0Aqq8bxtQ==
+ dependencies:
+ "@types/hast" "^2.0.0"
+
+hast-util-is-element@^2.0.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz#fc0b0dc7cef3895e839b8d66979d57b0338c68f3"
+ integrity sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/unist" "^2.0.0"
+
+hast-util-parse-selector@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz#a519e27e8b61bd5a98fad494ed06131ce68d9c3f"
+ integrity sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==
+ dependencies:
+ "@types/hast" "^2.0.0"
+
+hast-util-raw@^7.2.0:
+ version "7.2.1"
+ resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-7.2.1.tgz#6e964cee098dbdd93d1b77cf180b5827d48048ab"
+ integrity sha512-wgtppqXVdXzkDXDFclLLdAyVUJSKMYYi6LWIAbA8oFqEdwksYIcPGM3RkKV1Dfn5GElvxhaOCs0jmCOMayxd3A==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/parse5" "^6.0.0"
+ hast-util-from-parse5 "^7.0.0"
+ hast-util-to-parse5 "^7.0.0"
+ html-void-elements "^2.0.0"
+ parse5 "^6.0.0"
+ unist-util-position "^4.0.0"
+ unist-util-visit "^4.0.0"
+ vfile "^5.0.0"
+ web-namespaces "^2.0.0"
+ zwitch "^2.0.0"
+
+hast-util-to-html@^8.0.0:
+ version "8.0.3"
+ resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz#4e37580872e143ea9ce0dba87918b19e4ea997e3"
+ integrity sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ ccount "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ hast-util-is-element "^2.0.0"
+ hast-util-whitespace "^2.0.0"
+ html-void-elements "^2.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+ stringify-entities "^4.0.2"
+ unist-util-is "^5.0.0"
+
+hast-util-to-parse5@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-7.0.0.tgz#a39808e69005d10afeed1866029a1fb137df3f7c"
+ integrity sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/parse5" "^6.0.0"
+ hast-to-hyperscript "^10.0.0"
+ property-information "^6.0.0"
+ web-namespaces "^2.0.0"
+ zwitch "^2.0.0"
+
+hast-util-to-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-2.0.0.tgz#b008b0a4ea472bf34dd390b7eea1018726ae152a"
+ integrity sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==
+ dependencies:
+ "@types/hast" "^2.0.0"
+
+hast-util-whitespace@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c"
+ integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==
+
+hastscript@^7.0.0:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-7.0.2.tgz#d811fc040817d91923448a28156463b2e40d590a"
+ integrity sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ hast-util-parse-selector "^3.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+
+html-entities@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488"
+ integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==
+
+html-void-elements@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f"
+ integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==
+
+htmlparser2@^7.1.2:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5"
+ integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.2.2"
+ domutils "^2.8.0"
+ entities "^3.0.1"
+
+http-errors@1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c"
+ integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.1"
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.4, inherits@^2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inline-style-parser@0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
+ integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
+
+internal-slot@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
+ integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
+ dependencies:
+ get-intrinsic "^1.1.0"
+ has "^1.0.3"
+ side-channel "^1.0.4"
+
+is-alphabetical@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b"
+ integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==
+
+is-alphanumerical@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875"
+ integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==
+ dependencies:
+ is-alphabetical "^2.0.0"
+ is-decimal "^2.0.0"
+
+is-arguments@^1.0.4:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-bigint@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
+ integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
+ dependencies:
+ has-bigints "^1.0.1"
+
+is-boolean-object@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
+ integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-buffer@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
+ integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
+
+is-callable@^1.1.4, is-callable@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
+ integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
+
+is-core-module@^2.8.1:
+ version "2.8.1"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
+ integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
+ dependencies:
+ has "^1.0.3"
+
+is-date-object@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
+ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-decimal@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7"
+ integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==
+
+is-extendable@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-generator-function@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
+ integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-glob@^4.0.1:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-hexadecimal@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027"
+ integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==
+
+is-nan@^1.2.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d"
+ integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+
+is-negative-zero@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
+ integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
+
+is-number-object@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0"
+ integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-plain-obj@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.0.0.tgz#06c0999fd7574edf5a906ba5644ad0feb3a84d22"
+ integrity sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==
+
+is-regex@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
+ integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-shared-array-buffer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6"
+ integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==
+
+is-string@^1.0.5, is-string@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
+ integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-symbol@^1.0.2, is-symbol@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
+ integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
+ dependencies:
+ has-symbols "^1.0.2"
+
+is-typed-array@^1.1.3, is-typed-array@^1.1.7:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79"
+ integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==
+ dependencies:
+ available-typed-arrays "^1.0.5"
+ call-bind "^1.0.2"
+ es-abstract "^1.18.5"
+ foreach "^2.0.5"
+ has-tostringtag "^1.0.0"
+
+is-weakref@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
+ integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
+ dependencies:
+ call-bind "^1.0.2"
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.13.1:
+ version "3.14.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+json5@^2.1.2, json5@^2.1.3:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
+ dependencies:
+ minimist "^1.2.5"
+
+jsonc-parser@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.1.tgz#59549150b133f2efacca48fe9ce1ec0659af2342"
+ integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==
+
+jsonc-parser@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22"
+ integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+kleur@^4.0.3, kleur@^4.1.4:
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d"
+ integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==
+
+lilconfig@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082"
+ integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==
+
+lodash@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+longest-streak@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d"
+ integrity sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==
+
+loose-envify@^1.1.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+magic-string@^0.25.7:
+ version "0.25.7"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
+ integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
+ dependencies:
+ sourcemap-codec "^1.4.4"
+
+markdown-table@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.2.tgz#9b59eb2c1b22fe71954a65ff512887065a7bb57c"
+ integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==
+
+mdast-util-definitions@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz#b6d10ef00a3c4cf191e8d9a5fa58d7f4a366f817"
+ integrity sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ unist-util-visit "^3.0.0"
+
+mdast-util-find-and-replace@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.1.0.tgz#69728acd250749f8aac6e150e07d1fd15619e829"
+ integrity sha512-1w1jbqAd13oU78QPBf5223+xB+37ecNtQ1JElq2feWols5oEYAl+SgNDnOZipe7NfLemoEt362yUS15/wip4mw==
+ dependencies:
+ escape-string-regexp "^5.0.0"
+ unist-util-is "^5.0.0"
+ unist-util-visit-parents "^4.0.0"
+
+mdast-util-from-markdown@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268"
+ integrity sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ decode-named-character-reference "^1.0.0"
+ mdast-util-to-string "^3.1.0"
+ micromark "^3.0.0"
+ micromark-util-decode-numeric-character-reference "^1.0.0"
+ micromark-util-decode-string "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ unist-util-stringify-position "^3.0.0"
+ uvu "^0.5.0"
+
+mdast-util-gfm-autolink-literal@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz#4032dcbaddaef7d4f2f3768ed830475bb22d3970"
+ integrity sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ ccount "^2.0.0"
+ mdast-util-find-and-replace "^2.0.0"
+ micromark-util-character "^1.0.0"
+
+mdast-util-gfm-footnote@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz#11d2d40a1a673a399c459e467fa85e00223191fe"
+ integrity sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.3.0"
+ micromark-util-normalize-identifier "^1.0.0"
+
+mdast-util-gfm-strikethrough@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz#a4a74c36864ec6a6e3bbd31e1977f29beb475789"
+ integrity sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.3.0"
+
+mdast-util-gfm-table@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.3.tgz#5f880aa6ecd1a9307cd7127f3d94c631ea88da07"
+ integrity sha512-B/tgpJjND1qIZM2WZst+NYnb0notPE6m0J+YOe3NOHXyEmvK38ytxaOsgz4BvrRPQQcNbRrTzSHMPnBkj1fCjg==
+ dependencies:
+ markdown-table "^3.0.0"
+ mdast-util-to-markdown "^1.3.0"
+
+mdast-util-gfm-task-list-item@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz#6f35f09c6e2bcbe88af62fdea02ac199cc802c5c"
+ integrity sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.3.0"
+
+mdast-util-gfm@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-2.0.0.tgz#2545856bc18a66d5cc63fbef0b097a020a8e9e3d"
+ integrity sha512-wMwejlTN3EQADPFuvxe8lmGsay3+f6gSJKdAHR6KBJzpcxvsjJSILB9K6u6G7eQLC7iOTyVIHYGui9uBc9r1Tg==
+ dependencies:
+ mdast-util-gfm-autolink-literal "^1.0.0"
+ mdast-util-gfm-footnote "^1.0.0"
+ mdast-util-gfm-strikethrough "^1.0.0"
+ mdast-util-gfm-table "^1.0.0"
+ mdast-util-gfm-task-list-item "^1.0.0"
+
+mdast-util-mdx-expression@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.2.0.tgz#3e927afe27943956dc5d1c64cb949652062f71ff"
+ integrity sha512-wb36oi09XxqO9RVqgfD+xo8a7xaNgS+01+k3v0GKW0X0bYbeBmUZz22Z/IJ8SuphVlG+DNgNo9VoEaUJ3PKfJQ==
+ dependencies:
+ "@types/estree-jsx" "^0.0.1"
+ "@types/hast" "^2.0.0"
+ "@types/mdast" "^3.0.0"
+ mdast-util-from-markdown "^1.0.0"
+ mdast-util-to-markdown "^1.0.0"
+
+mdast-util-mdx-jsx@^1.1.3:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-1.2.0.tgz#c0f5140e021fd134fa90272eb8bbddb39f8db399"
+ integrity sha512-5+ot/kfxYd3ChgEMwsMUO71oAfYjyRI3pADEK4I7xTmWLGQ8Y7ghm1CG36zUoUvDPxMlIYwQV/9DYHAUWdG4dA==
+ dependencies:
+ "@types/estree-jsx" "^0.0.1"
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.0.0"
+ parse-entities "^4.0.0"
+ stringify-entities "^4.0.0"
+ unist-util-remove-position "^4.0.0"
+ unist-util-stringify-position "^3.0.0"
+ vfile-message "^3.0.0"
+
+mdast-util-to-hast@^12.1.0:
+ version "12.1.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.1.1.tgz#89a2bb405eaf3b05eb8bf45157678f35eef5dbca"
+ integrity sha512-qE09zD6ylVP14jV4mjLIhDBOrpFdShHZcEsYvvKGABlr9mGbV7mTlRWdoFxL/EYSTNDiC9GZXy7y8Shgb9Dtzw==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/mdast" "^3.0.0"
+ "@types/mdurl" "^1.0.0"
+ mdast-util-definitions "^5.0.0"
+ mdurl "^1.0.0"
+ micromark-util-sanitize-uri "^1.0.0"
+ unist-builder "^3.0.0"
+ unist-util-generated "^2.0.0"
+ unist-util-position "^4.0.0"
+ unist-util-visit "^4.0.0"
+
+mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz#38b6cdc8dc417de642a469c4fc2abdf8c931bd1e"
+ integrity sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ longest-streak "^3.0.0"
+ mdast-util-to-string "^3.0.0"
+ micromark-util-decode-string "^1.0.0"
+ unist-util-visit "^4.0.0"
+ zwitch "^2.0.0"
+
+mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9"
+ integrity sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==
+
+mdn-data@2.0.14:
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
+ integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+
+mdurl@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
+ integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
+
+merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad"
+ integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==
+ dependencies:
+ decode-named-character-reference "^1.0.0"
+ micromark-factory-destination "^1.0.0"
+ micromark-factory-label "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-factory-title "^1.0.0"
+ micromark-factory-whitespace "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-chunked "^1.0.0"
+ micromark-util-classify-character "^1.0.0"
+ micromark-util-html-tag-name "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-resolve-all "^1.0.0"
+ micromark-util-subtokenize "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.1"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-autolink-literal@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz#dc589f9c37eaff31a175bab49f12290edcf96058"
+ integrity sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-sanitize-uri "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-footnote@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.3.tgz#5280b29667e4ecb8687f369829aa3322caca7d11"
+ integrity sha512-bn62pC5y39rIo2g1RqZk1NhF7T7cJLuJlbevunQz41U0iPVCdVOFASe5/L1kke+DFKSgfCRhv24+o42cZ1+ADw==
+ dependencies:
+ micromark-core-commonmark "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-sanitize-uri "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-strikethrough@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz#162232c284ffbedd8c74e59c1525bda217295e18"
+ integrity sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==
+ dependencies:
+ micromark-util-chunked "^1.0.0"
+ micromark-util-classify-character "^1.0.0"
+ micromark-util-resolve-all "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-table@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4"
+ integrity sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-tagfilter@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz#fb2e303f7daf616db428bb6a26e18fda14a90a4d"
+ integrity sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==
+ dependencies:
+ micromark-util-types "^1.0.0"
+
+micromark-extension-gfm-task-list-item@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz#7683641df5d4a09795f353574d7f7f66e47b7fc4"
+ integrity sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz#40f3209216127a96297c54c67f5edc7ef2d1a2a2"
+ integrity sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==
+ dependencies:
+ micromark-extension-gfm-autolink-literal "^1.0.0"
+ micromark-extension-gfm-footnote "^1.0.0"
+ micromark-extension-gfm-strikethrough "^1.0.0"
+ micromark-extension-gfm-table "^1.0.0"
+ micromark-extension-gfm-tagfilter "^1.0.0"
+ micromark-extension-gfm-task-list-item "^1.0.0"
+ micromark-util-combine-extensions "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-extension-mdx-expression@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.3.tgz#cd3843573921bf55afcfff4ae0cd2e857a16dcfa"
+ integrity sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==
+ dependencies:
+ micromark-factory-mdx-expression "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-events-to-acorn "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-mdx-jsx@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz#9f196be5f65eb09d2a49b237a7b3398bba2999be"
+ integrity sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==
+ dependencies:
+ "@types/acorn" "^4.0.0"
+ estree-util-is-identifier-name "^2.0.0"
+ micromark-factory-mdx-expression "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+ vfile-message "^3.0.0"
+
+micromark-factory-destination@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e"
+ integrity sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-factory-label@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137"
+ integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-factory-mdx-expression@^1.0.0:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.6.tgz#917e17d16e6e9c2551f3a862e6a9ebdd22056476"
+ integrity sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-events-to-acorn "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ unist-util-position-from-estree "^1.0.0"
+ uvu "^0.5.0"
+ vfile-message "^3.0.0"
+
+micromark-factory-space@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633"
+ integrity sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-factory-title@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f"
+ integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-factory-whitespace@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c"
+ integrity sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-character@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86"
+ integrity sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-chunked@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06"
+ integrity sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-classify-character@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20"
+ integrity sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-combine-extensions@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5"
+ integrity sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==
+ dependencies:
+ micromark-util-chunked "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-decode-numeric-character-reference@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946"
+ integrity sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-decode-string@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02"
+ integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==
+ dependencies:
+ decode-named-character-reference "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-decode-numeric-character-reference "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-encode@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383"
+ integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==
+
+micromark-util-events-to-acorn@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.0.4.tgz#07d26cd675dbca8c38b8d9aff2d4cdc91c9997aa"
+ integrity sha512-dpo8ecREK5s/KMph7jJ46RLM6g7N21CMc9LAJQbDLdbQnTpijigkSJPTIfLXZ+h5wdXlcsQ+b6ufAE9v76AdgA==
+ dependencies:
+ "@types/acorn" "^4.0.0"
+ "@types/estree" "^0.0.50"
+ estree-util-visit "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+ vfile-message "^3.0.0"
+
+micromark-util-html-tag-name@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz#75737e92fef50af0c6212bd309bc5cb8dbd489ed"
+ integrity sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==
+
+micromark-util-normalize-identifier@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828"
+ integrity sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-resolve-all@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88"
+ integrity sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==
+ dependencies:
+ micromark-util-types "^1.0.0"
+
+micromark-util-sanitize-uri@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz#27dc875397cd15102274c6c6da5585d34d4f12b2"
+ integrity sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-encode "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-subtokenize@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105"
+ integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==
+ dependencies:
+ micromark-util-chunked "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-util-symbol@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e"
+ integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==
+
+micromark-util-types@^1.0.0, micromark-util-types@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20"
+ integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==
+
+micromark@^3.0.0:
+ version "3.0.10"
+ resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.0.10.tgz#1eac156f0399d42736458a14b0ca2d86190b457c"
+ integrity sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==
+ dependencies:
+ "@types/debug" "^4.0.0"
+ debug "^4.0.0"
+ decode-named-character-reference "^1.0.0"
+ micromark-core-commonmark "^1.0.1"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-chunked "^1.0.0"
+ micromark-util-combine-extensions "^1.0.0"
+ micromark-util-decode-numeric-character-reference "^1.0.0"
+ micromark-util-encode "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-resolve-all "^1.0.0"
+ micromark-util-sanitize-uri "^1.0.0"
+ micromark-util-subtokenize "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.1"
+ uvu "^0.5.0"
+
+micromatch@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
+ integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.2.3"
+
+mime@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mime@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7"
+ integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==
+
+min-indent@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
+ integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
+
+minimatch@^3.0.4:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@^1.2.0, minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+mkdirp@^0.5.1:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+ dependencies:
+ minimist "^1.2.5"
+
+mkdirp@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
+morphdom@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/morphdom/-/morphdom-2.6.1.tgz#e868e24f989fa3183004b159aed643e628b4306e"
+ integrity sha512-Y8YRbAEP3eKykroIBWrjcfMw7mmwJfjhqdpSvoqinu8Y702nAwikpXcNFDiIkyvfCLxLM9Wu95RZqo4a9jFBaA==
+
+mri@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b"
+ integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+ms@2.1.3:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+nanoid@^3.2.0:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35"
+ integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==
+
+nlcst-to-string@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz#9315dfab80882bbfd86ddf1b706f53622dc400cc"
+ integrity sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==
+
+nlcst-to-string@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-3.1.0.tgz#359519a16f086114538fcbb454e86967c471f823"
+ integrity sha512-Y8HQWKw/zrHTCnu2zcFBN1dV6vN0NUG7s5fkEj380G8tF3R+vA2KG+tDl2QoHVQCTHGHVXwoni2RQkDSFQb1PA==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+
+node-domexception@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
+ integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
+
+node-fetch@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.0.tgz#59390db4e489184fa35d4b74caf5510e8dfbaf3b"
+ integrity sha512-8xeimMwMItMw8hRrOl3C9/xzU49HV/yE6ORew/l+dxWimO5A4Ra8ld2rerlJvc/O7et5Z1zrWsPX43v1QBjCxw==
+ dependencies:
+ data-uri-to-buffer "^4.0.0"
+ fetch-blob "^3.1.4"
+ formdata-polyfill "^4.0.10"
+
+node-releases@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01"
+ integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==
+
+nth-check@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2"
+ integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==
+ dependencies:
+ boolbase "^1.0.0"
+
+object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-inspect@^1.11.0, object-inspect@^1.9.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0"
+ integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==
+
+object-is@^1.0.1:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
+ integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+object-keys@^1.0.12, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object.assign@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
+ integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ has-symbols "^1.0.1"
+ object-keys "^1.1.1"
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+ dependencies:
+ ee-first "1.1.1"
+
+once@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+parse-entities@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.0.tgz#f67c856d4e3fe19b1a445c3fabe78dcdc1053eeb"
+ integrity sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ character-entities "^2.0.0"
+ character-entities-legacy "^3.0.0"
+ character-reference-invalid "^2.0.0"
+ decode-named-character-reference "^1.0.0"
+ is-alphanumerical "^2.0.0"
+ is-decimal "^2.0.0"
+ is-hexadecimal "^2.0.0"
+
+parse-latin@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/parse-latin/-/parse-latin-5.0.0.tgz#a1963445f59fb9cfa3cb1ddf5f839bfeb0ee4b42"
+ integrity sha512-Ht+4/+AUySMS5HKGAiQpBmkFsHSoGrj6Y83flLCa5OIBdtsVkO3UD4OtboJ0O0vZiOznH02x8qlwg9KLUVXuNg==
+ dependencies:
+ nlcst-to-string "^2.0.0"
+ unist-util-modify-children "^2.0.0"
+ unist-util-visit-children "^1.0.0"
+
+parse5@^6.0.0, parse5@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
+ integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+
+path-browserify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
+ integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-to-regexp@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.0.tgz#f7b3803336104c346889adece614669230645f38"
+ integrity sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.2.2, picomatch@^2.2.3:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+postcss-load-config@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.3.tgz#21935b2c43b9a86e6581a576ca7ee1bde2bd1d23"
+ integrity sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==
+ dependencies:
+ lilconfig "^2.0.4"
+ yaml "^1.10.2"
+
+postcss@^8.1.10, postcss@^8.3.8, postcss@^8.4.6:
+ version "8.4.6"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1"
+ integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==
+ dependencies:
+ nanoid "^3.2.0"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+preact-render-to-string@^5.1.19:
+ version "5.1.19"
+ resolved "https://registry.yarnpkg.com/preact-render-to-string/-/preact-render-to-string-5.1.19.tgz#ffae7c3bd1680be5ecf5991d41fe3023b3051e0e"
+ integrity sha512-bj8sn/oytIKO6RtOGSS/1+5CrQyRSC99eLUnEVbqUa6MzJX5dYh7wu9bmT0d6lm/Vea21k9KhCQwvr2sYN3rrQ==
+ dependencies:
+ pretty-format "^3.8.0"
+
+preact@^10.6.5:
+ version "10.6.6"
+ resolved "https://registry.yarnpkg.com/preact/-/preact-10.6.6.tgz#f1899bc8dab7c0788b858481532cb3b5d764a520"
+ integrity sha512-dgxpTFV2vs4vizwKohYKkk7g7rmp1wOOcfd4Tz3IB3Wi+ivZzsn/SpeKJhRENSE+n8sUfsAl4S3HiCVT923ABw==
+
+pretty-format@^3.8.0:
+ version "3.8.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385"
+ integrity sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=
+
+prismjs@^1.25.0:
+ version "1.27.0"
+ resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057"
+ integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==
+
+property-information@^6.0.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22"
+ integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+quicklink@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/quicklink/-/quicklink-2.2.0.tgz#011f47d4e5f67622d9d49f02c74c913852b01f8b"
+ integrity sha512-tfleXCZvxDppyZFqSDsbkS5aKemtA0ealvguxjp3tzXHMo+pzxrWtOh+6dnYK/mXzEYM1QiNhGttcS/W/T3JXA==
+ dependencies:
+ route-manifest "^1.0.0"
+ throttles "^1.0.0"
+
+randombytes@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+react-dom@^17.0.2:
+ version "17.0.2"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
+ integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+ scheduler "^0.20.2"
+
+react@^17.0.2:
+ version "17.0.2"
+ resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
+ integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+
+regexparam@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f"
+ integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==
+
+rehype-autolink-headings@^6.1.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/rehype-autolink-headings/-/rehype-autolink-headings-6.1.1.tgz#0cb874a56f3de6ead1c2268d7f0fc5006f244db5"
+ integrity sha512-NMYzZIsHM3sA14nC5rAFuUPIOfg+DFmf9EY1YMhaNlB7+3kK/ZlE6kqPfuxr1tsJ1XWkTrMtMoyHosU70d35mA==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ extend "^3.0.0"
+ hast-util-has-property "^2.0.0"
+ hast-util-heading-rank "^2.0.0"
+ hast-util-is-element "^2.0.0"
+ unified "^10.0.0"
+ unist-util-visit "^4.0.0"
+
+rehype-raw@^6.1.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-6.1.1.tgz#81bbef3793bd7abacc6bf8335879d1b6c868c9d4"
+ integrity sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ hast-util-raw "^7.2.0"
+ unified "^10.0.0"
+
+rehype-slug@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/rehype-slug/-/rehype-slug-5.0.1.tgz#6e732d0c55b3b1e34187e74b7363fb53229e5f52"
+ integrity sha512-X5v3wV/meuOX9NFcGhJvUpEjIvQl2gDvjg3z40RVprYFt7q3th4qMmYLULiu3gXvbNX1ppx+oaa6JyY1W67pTA==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ github-slugger "^1.1.1"
+ hast-util-has-property "^2.0.0"
+ hast-util-heading-rank "^2.0.0"
+ hast-util-to-string "^2.0.0"
+ unified "^10.0.0"
+ unist-util-visit "^4.0.0"
+
+rehype-stringify@^9.0.2:
+ version "9.0.3"
+ resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-9.0.3.tgz#70e3bd6d4d29e7acf36b802deed350305d2c3c17"
+ integrity sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ hast-util-to-html "^8.0.0"
+ unified "^10.0.0"
+
+remark-autolink-headings@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/remark-autolink-headings/-/remark-autolink-headings-7.0.1.tgz#1d8528ea8783b828200d13c055ec2d5f2cae5060"
+ integrity sha512-a1BIwoJ0cSnX+sPp5u3AFULBFWHGYBt57Fo4a+7IlGiJOQxs8b7uYAE5Iu26Ocl7Y5cvinZy3FaGVruLCKg6vA==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/mdast" "^3.0.0"
+ extend "^3.0.0"
+ unified "^10.0.0"
+ unist-util-visit "^4.0.0"
+
+remark-gfm@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-3.0.1.tgz#0b180f095e3036545e9dddac0e8df3fa5cfee54f"
+ integrity sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-gfm "^2.0.0"
+ micromark-extension-gfm "^2.0.0"
+ unified "^10.0.0"
+
+remark-parse@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775"
+ integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-from-markdown "^1.0.0"
+ unified "^10.0.0"
+
+remark-rehype@^10.0.1:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279"
+ integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-hast "^12.1.0"
+ unified "^10.0.0"
+
+remark-smartypants@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/remark-smartypants/-/remark-smartypants-2.0.0.tgz#836cff43ec139b2e5ec9e488d80596ed677d1cb2"
+ integrity sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA==
+ dependencies:
+ retext "^8.1.0"
+ retext-smartypants "^5.1.0"
+ unist-util-visit "^4.1.0"
+
+resolve-from@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
+ integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
+
+resolve-pkg@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-2.0.0.tgz#ac06991418a7623edc119084edc98b0e6bf05a41"
+ integrity sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==
+ dependencies:
+ resolve-from "^5.0.0"
+
+resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.0:
+ version "1.22.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
+ integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
+ dependencies:
+ is-core-module "^2.8.1"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+retext-latin@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/retext-latin/-/retext-latin-3.1.0.tgz#72b0176af2c69a373fd0d37eadd3924418bb3a89"
+ integrity sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+ parse-latin "^5.0.0"
+ unherit "^3.0.0"
+ unified "^10.0.0"
+
+retext-smartypants@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/retext-smartypants/-/retext-smartypants-5.1.0.tgz#cd5c308710ade5161e642ee1f60bf6df1603d9dc"
+ integrity sha512-P+VS0YlE96T2MRAlFHaTUhPrq1Rls+1GCvIytBvbo7wcgmRxC9xHle0/whTYpRqWirV9WaUm5mXmh1dKnskGWQ==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+ nlcst-to-string "^3.0.0"
+ unified "^10.0.0"
+ unist-util-visit "^4.0.0"
+
+retext-stringify@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/retext-stringify/-/retext-stringify-3.1.0.tgz#46ed45e077bfc4a8334977f6c2d6611e1d36263a"
+ integrity sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+ nlcst-to-string "^3.0.0"
+ unified "^10.0.0"
+
+retext@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/retext/-/retext-8.1.0.tgz#c43437fb84cd46285ad240a9279142e239bada8d"
+ integrity sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+ retext-latin "^3.0.0"
+ retext-stringify "^3.0.0"
+ unified "^10.0.0"
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@^2.5.2:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+rollup@^2.59.0, rollup@^2.64.0:
+ version "2.67.3"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.67.3.tgz#3f04391fc296f807d067c9081d173e0a33dbd37e"
+ integrity sha512-G/x1vUwbGtP6O5ZM8/sWr8+p7YfZhI18pPqMRtMYMWSbHjKZ/ajHGiM+GWNTlWyOR0EHIdT8LHU+Z4ciIZ1oBw==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+route-manifest@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/route-manifest/-/route-manifest-1.0.0.tgz#0155513f3cd158c18827413845ab1a8ec2ad15e1"
+ integrity sha512-qn0xJr4nnF4caj0erOLLAHYiNyzqhzpUbgDQcEHrmBoG4sWCDLnIXLH7VccNSxe9cWgbP2Kw/OjME+eH3CeRSA==
+ dependencies:
+ regexparam "^1.3.0"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+sade@^1.7.3:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701"
+ integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==
+ dependencies:
+ mri "^1.1.0"
+
+safe-buffer@^5.1.0, safe-buffer@^5.1.2:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+sander@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad"
+ integrity sha1-dB4kXiMfB8r7b98PEzrfohalAq0=
+ dependencies:
+ es6-promise "^3.1.2"
+ graceful-fs "^4.1.3"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.2"
+
+scheduler@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
+ integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+
+section-matter@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167"
+ integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==
+ dependencies:
+ extend-shallow "^2.0.1"
+ kind-of "^6.0.0"
+
+semver@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+semver@^7.3.5:
+ version "7.3.5"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
+ integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
+ dependencies:
+ lru-cache "^6.0.0"
+
+send@^0.17.1:
+ version "0.17.2"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820"
+ integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==
+ dependencies:
+ debug "2.6.9"
+ depd "~1.1.2"
+ destroy "~1.0.4"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "1.8.1"
+ mime "1.6.0"
+ ms "2.1.3"
+ on-finished "~2.3.0"
+ range-parser "~1.2.1"
+ statuses "~1.5.0"
+
+serialize-javascript@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
+ integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
+ dependencies:
+ randombytes "^2.1.0"
+
+setprototypeof@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
+
+shiki@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.10.1.tgz#6f9a16205a823b56c072d0f1a0bcd0f2646bef14"
+ integrity sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==
+ dependencies:
+ jsonc-parser "^3.0.0"
+ vscode-oniguruma "^1.6.1"
+ vscode-textmate "5.2.0"
+
+shorthash@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/shorthash/-/shorthash-0.0.2.tgz#59b268eecbde59038b30da202bcfbddeb2c4a4eb"
+ integrity sha1-WbJo7sveWQOLMNogK8+93rLEpOs=
+
+side-channel@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+ dependencies:
+ call-bind "^1.0.0"
+ get-intrinsic "^1.0.2"
+ object-inspect "^1.9.0"
+
+slash@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
+ integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
+
+smartypants@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/smartypants/-/smartypants-0.1.6.tgz#976d23dcccae83d56da93d59db1ba76838c976f7"
+ integrity sha512-zGXh+Q6Y3OPTLM5x2HxAIkEAj4ZcePftmIOdIYozv2T+m03Sp5R4YppczKuo6IdnSMc99U+Wgvy8Mil0eeep7g==
+
+sorcery@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7"
+ integrity sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=
+ dependencies:
+ buffer-crc32 "^0.2.5"
+ minimist "^1.2.0"
+ sander "^0.5.0"
+ sourcemap-codec "^1.3.0"
+
+source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+source-map@^0.5.0:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+source-map@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.7.3:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
+ integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
+
+sourcemap-codec@^1.3.0, sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
+space-separated-tokens@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz#43193cec4fb858a2ce934b7f98b7f2c18107098b"
+ integrity sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+srcset-parse@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/srcset-parse/-/srcset-parse-1.1.0.tgz#73f787f38b73ede2c5af775e0a3465579488122b"
+ integrity sha512-JWp4cG2eybkvKA1QUHGoNK6JDEYcOnSuhzNGjZuYUPqXreDl/VkkvP2sZW7Rmh+icuCttrR9ccb2WPIazyM/Cw==
+
+stable@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
+"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+
+string-width@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.0.tgz#5ab00980cfb29f43e736b113a120a73a0fb569d3"
+ integrity sha512-7x54QnN21P+XL/v8SuNKvfgsUre6PXpN7mc77N3HlZv+f1SBRGmjxtOud2Z6FZ8DmdkD/IdjCaf9XXbnqmTZGQ==
+ dependencies:
+ eastasianwidth "^0.2.0"
+ emoji-regex "^9.2.2"
+ strip-ansi "^7.0.1"
+
+string.prototype.trimend@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80"
+ integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+string.prototype.trimstart@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed"
+ integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+stringify-entities@^4.0.0, stringify-entities@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.2.tgz#13d113dc7449dc8ae4cb22c28883ee3fff8753e3"
+ integrity sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ==
+ dependencies:
+ character-entities-html4 "^2.0.0"
+ character-entities-legacy "^3.0.0"
+
+strip-ansi@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2"
+ integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==
+ dependencies:
+ ansi-regex "^6.0.1"
+
+strip-bom-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92"
+ integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=
+
+strip-bom@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
+ integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
+
+strip-indent@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
+ integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==
+ dependencies:
+ min-indent "^1.0.0"
+
+strnum@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db"
+ integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==
+
+style-to-object@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46"
+ integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==
+ dependencies:
+ inline-style-parser "0.1.1"
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-esm@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-esm/-/supports-esm-1.0.0.tgz#7cc567747d0745e2b77b331c9b9cae13cf4dc60e"
+ integrity sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==
+ dependencies:
+ has-package-exports "^1.1.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+svelte-hmr@^0.14.9:
+ version "0.14.9"
+ resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.14.9.tgz#35f277efc789e1a6230185717347cddb2f8e9833"
+ integrity sha512-bKE9+4qb4sAnA+TKHiYurUl970rjA0XmlP9TEP7K/ncyWz3m81kA4HOgmlZK/7irGK7gzZlaPDI3cmf8fp/+tg==
+
+svelte-preprocess@^4.10.2:
+ version "4.10.3"
+ resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-4.10.3.tgz#9aac89a8abc3889fa5740fb34f7dd74f3c578e13"
+ integrity sha512-ttw17lJfb/dx2ZJT9sesaXT5l7mPQ9Apx1H496Kli3Hkk7orIRGpOw6rCPkRNzr6ueVPqb4vzodS5x7sBFhKHw==
+ dependencies:
+ "@types/pug" "^2.0.4"
+ "@types/sass" "^1.16.0"
+ detect-indent "^6.0.0"
+ magic-string "^0.25.7"
+ sorcery "^0.10.0"
+ strip-indent "^3.0.0"
+
+svelte@^3.46.4:
+ version "3.46.4"
+ resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.46.4.tgz#0c46bc4a3e20a2617a1b7dc43a722f9d6c084a38"
+ integrity sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg==
+
+svgo@^2.8.0:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
+ integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
+ dependencies:
+ "@trysound/sax" "0.2.0"
+ commander "^7.2.0"
+ css-select "^4.1.3"
+ css-tree "^1.1.3"
+ csso "^4.2.0"
+ picocolors "^1.0.0"
+ stable "^0.1.8"
+
+throttles@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/throttles/-/throttles-1.0.1.tgz#3abdcde28df88d5eddf7e57cad8da35bd403ddd0"
+ integrity sha512-fab7Xg+zELr9KOv4fkaBoe/b3L0GMGLd0IBSCn16GoE/Qx6/OfCr1eGNyEcDU2pUA79qQfZ8kPQWlRuok4YwTw==
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+toidentifier@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+
+trough@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/trough/-/trough-2.0.2.tgz#94a3aa9d5ce379fc561f6244905b3f36b7458d96"
+ integrity sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==
+
+ts-morph@^12.0.0:
+ version "12.2.0"
+ resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-12.2.0.tgz#3332319cecd44aff0b7b410f1fe39637499b1a1b"
+ integrity sha512-WHXLtFDcIRwoqaiu0elAoZ/AmI+SwwDafnPKjgJmdwJ2gRVO0jMKBt88rV2liT/c6MTsXyuWbGFiHe9MRddWJw==
+ dependencies:
+ "@ts-morph/common" "~0.11.1"
+ code-block-writer "^10.1.1"
+
+tsconfig-resolver@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/tsconfig-resolver/-/tsconfig-resolver-3.0.1.tgz#c9e62e328ecfbeaae4a4f1131a92cdbed12350c4"
+ integrity sha512-ZHqlstlQF449v8glscGRXzL6l2dZvASPCdXJRWG4gHEZlUVx2Jtmr+a2zeVG4LCsKhDXKRj5R3h0C/98UcVAQg==
+ dependencies:
+ "@types/json5" "^0.0.30"
+ "@types/resolve" "^1.17.0"
+ json5 "^2.1.3"
+ resolve "^1.17.0"
+ strip-bom "^4.0.0"
+ type-fest "^0.13.1"
+
+tsm@^2.1.4:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tsm/-/tsm-2.2.1.tgz#3e78e86a03b2f569c20cff4a9f66c4ec8fce65fc"
+ integrity sha512-qvJB0baPnxQJolZru11mRgGTdNlx17WqgJnle7eht3Vhb+VUR4/zFA5hFl6NqRe7m8BD9w/6yu0B2XciRrdoJA==
+ dependencies:
+ esbuild "^0.14.0"
+
+type-fest@^0.13.1:
+ version "0.13.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
+ integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
+
+typescript@^4.3.5, typescript@^4.5.4:
+ version "4.5.5"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3"
+ integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
+
+unbox-primitive@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"
+ integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==
+ dependencies:
+ function-bind "^1.1.1"
+ has-bigints "^1.0.1"
+ has-symbols "^1.0.2"
+ which-boxed-primitive "^1.0.2"
+
+unherit@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unherit/-/unherit-3.0.0.tgz#83d69af9d8e3afd28fa51cff9ee84de7a1d82a6b"
+ integrity sha512-UmvIQZGEc9qdLIQ8mv8/61n6PiMgfbOoASPKHpCvII5srShCQSa6jSjBjlZOR4bxt2XnT6uo6csmPKRi+zQ0Jg==
+
+unified@^10.0.0, unified@^10.1.1:
+ version "10.1.1"
+ resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.1.tgz#345e349e3ab353ab612878338eb9d57b4dea1d46"
+ integrity sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ bail "^2.0.0"
+ extend "^3.0.0"
+ is-buffer "^2.0.0"
+ is-plain-obj "^4.0.0"
+ trough "^2.0.0"
+ vfile "^5.0.0"
+
+unist-builder@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-3.0.0.tgz#728baca4767c0e784e1e64bb44b5a5a753021a04"
+ integrity sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-generated@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz#86fafb77eb6ce9bfa6b663c3f5ad4f8e56a60113"
+ integrity sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==
+
+unist-util-is@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.1.1.tgz#e8aece0b102fa9bc097b0fef8f870c496d4a6236"
+ integrity sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==
+
+unist-util-map@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-map/-/unist-util-map-3.0.0.tgz#ec4c3e4f3f65f559b6c232087af2a470f3e5db89"
+ integrity sha512-kyPbOAlOPZpytdyquF1g6qYpAjkpMpSPtR7TAj4SOQWSJfQ/LN+IFI2oWBvkxzhsPKxiMKZcgpp5ihZLLvNl6g==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-modify-children@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz#9c9c30d4e32502aabb3fde10d7872a17c86801e2"
+ integrity sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==
+ dependencies:
+ array-iterate "^1.0.0"
+
+unist-util-position-from-estree@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.1.tgz#96f4d543dfb0428edc01ebb928570b602d280c4c"
+ integrity sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-position@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.1.tgz#f8484b2da19a897a0180556d160c28633070dbb9"
+ integrity sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==
+
+unist-util-remove-position@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-4.0.1.tgz#d5b46a7304ac114c8d91990ece085ca7c2c135c8"
+ integrity sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-visit "^4.0.0"
+
+unist-util-stringify-position@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz#d517d2883d74d0daa0b565adc3d10a02b4a8cde9"
+ integrity sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-visit-children@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz#e8a087e58a33a2815f76ea1901c15dec2cb4b432"
+ integrity sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ==
+
+unist-util-visit-parents@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz#e83559a4ad7e6048a46b1bdb22614f2f3f4724f2"
+ integrity sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^5.0.0"
+
+unist-util-visit-parents@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz#44bbc5d25f2411e7dfc5cecff12de43296aa8521"
+ integrity sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^5.0.0"
+
+unist-util-visit@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-3.1.0.tgz#9420d285e1aee938c7d9acbafc8e160186dbaf7b"
+ integrity sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^5.0.0"
+ unist-util-visit-parents "^4.0.0"
+
+unist-util-visit@^4.0.0, unist-util-visit@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.0.tgz#f41e407a9e94da31594e6b1c9811c51ab0b3d8f5"
+ integrity sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^5.0.0"
+ unist-util-visit-parents "^5.0.0"
+
+util@^0.12.0:
+ version "0.12.4"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253"
+ integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==
+ dependencies:
+ inherits "^2.0.3"
+ is-arguments "^1.0.4"
+ is-generator-function "^1.0.7"
+ is-typed-array "^1.1.3"
+ safe-buffer "^5.1.2"
+ which-typed-array "^1.1.2"
+
+uvu@^0.5.0:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.3.tgz#3d83c5bc1230f153451877bfc7f4aea2392219ae"
+ integrity sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==
+ dependencies:
+ dequal "^2.0.0"
+ diff "^5.0.0"
+ kleur "^4.0.3"
+ sade "^1.7.3"
+
+vfile-location@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-4.0.1.tgz#06f2b9244a3565bef91f099359486a08b10d3a95"
+ integrity sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ vfile "^5.0.0"
+
+vfile-message@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.0.tgz#5437035aa43185ff4b9210d32fada6c640e59143"
+ integrity sha512-4QJbBk+DkPEhBXq3f260xSaWtjE4gPKOfulzfMFF8ZNwaPZieWsg3iVlcmF04+eebzpcpeXOOFMfrYzJHVYg+g==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-stringify-position "^3.0.0"
+
+vfile@^5.0.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.0.tgz#4990c78cb3157005590ee8c930b71cd7fa6a006e"
+ integrity sha512-Tj44nY/48OQvarrE4FAjUfrv7GZOYzPbl5OD65HxVKwLJKMPU7zmfV8cCgCnzKWnSfYG2f3pxu+ALqs7j22xQQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ is-buffer "^2.0.0"
+ unist-util-stringify-position "^3.0.0"
+ vfile-message "^3.0.0"
+
+vite@^2.8.0:
+ version "2.8.4"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-2.8.4.tgz#4e52a534289b7b4e94e646df2fc5556ceaa7336b"
+ integrity sha512-GwtOkkaT2LDI82uWZKcrpRQxP5tymLnC7hVHHqNkhFNknYr0hJUlDLfhVRgngJvAy3RwypkDCWtTKn1BjO96Dw==
+ dependencies:
+ esbuild "^0.14.14"
+ postcss "^8.4.6"
+ resolve "^1.22.0"
+ rollup "^2.59.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+vscode-css-languageservice@^5.1.1:
+ version "5.1.13"
+ resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-5.1.13.tgz#debc7c8368223b211a734cb7eb7789c586d3e2d9"
+ integrity sha512-FA0foqMzMmEoO0WJP+MjoD4dRERhKS+Ag+yBrtmWQDmw2OuZ1R/5FkvI/XdTkCpHmTD9VMczugpHRejQyTXCNQ==
+ dependencies:
+ vscode-languageserver-textdocument "^1.0.1"
+ vscode-languageserver-types "^3.16.0"
+ vscode-nls "^5.0.0"
+ vscode-uri "^3.0.2"
+
+vscode-emmet-helper@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-2.1.2.tgz#2978060ebb736a7e0f6e6f1d649bd026880528c3"
+ integrity sha512-Fy6UNawSgxE3Kuqi54vSXohf03iOIrp1A74ReAgzvGP9Yt7fUAvkqF6No2WAc34/w0oWAHAeqoBNqmKKWh6U5w==
+ dependencies:
+ emmet "^2.1.5"
+ jsonc-parser "^2.3.0"
+ vscode-languageserver-textdocument "^1.0.1"
+ vscode-languageserver-types "^3.15.1"
+ vscode-nls "^5.0.0"
+ vscode-uri "^2.1.2"
+
+vscode-html-languageservice@^3.0.3:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-3.2.0.tgz#e92269a04097d87bd23431e3a4e491a27b5447b9"
+ integrity sha512-aLWIoWkvb5HYTVE0kI9/u3P0ZAJGrYOSAAE6L0wqB9radKRtbJNrF9+BjSUFyCgBdNBE/GFExo35LoknQDJrfw==
+ dependencies:
+ vscode-languageserver-textdocument "^1.0.1"
+ vscode-languageserver-types "3.16.0-next.2"
+ vscode-nls "^5.0.0"
+ vscode-uri "^2.1.2"
+
+vscode-jsonrpc@6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz#108bdb09b4400705176b957ceca9e0880e9b6d4e"
+ integrity sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==
+
+vscode-languageserver-protocol@^3.15.3, vscode-languageserver-protocol@^3.16.0:
+ version "3.16.0"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz#34135b61a9091db972188a07d337406a3cdbe821"
+ integrity sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==
+ dependencies:
+ vscode-jsonrpc "6.0.0"
+ vscode-languageserver-types "3.16.0"
+
+vscode-languageserver-textdocument@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz#3cd56dd14cec1d09e86c4bb04b09a246cb3df157"
+ integrity sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==
+
+vscode-languageserver-types@3.16.0, vscode-languageserver-types@^3.15.1, vscode-languageserver-types@^3.16.0:
+ version "3.16.0"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247"
+ integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==
+
+vscode-languageserver-types@3.16.0-next.2:
+ version "3.16.0-next.2"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz#940bd15c992295a65eae8ab6b8568a1e8daa3083"
+ integrity sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==
+
+vscode-languageserver@6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-6.1.1.tgz#d76afc68172c27d4327ee74332b468fbc740d762"
+ integrity sha512-DueEpkUAkD5XTR4MLYNr6bQIp/UFR0/IPApgXU3YfCBCB08u2sm9hRCs6DxYZELkk++STPjpcjksR2H8qI3cDQ==
+ dependencies:
+ vscode-languageserver-protocol "^3.15.3"
+
+vscode-nls@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840"
+ integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==
+
+vscode-oniguruma@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz#2bf4dfcfe3dd2e56eb549a3068c8ee39e6c30ce5"
+ integrity sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ==
+
+vscode-textmate@5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e"
+ integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==
+
+vscode-uri@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c"
+ integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==
+
+vscode-uri@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.3.tgz#a95c1ce2e6f41b7549f86279d19f47951e4f4d84"
+ integrity sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA==
+
+vue@^3.2.30:
+ version "3.2.31"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.31.tgz#e0c49924335e9f188352816788a4cca10f817ce6"
+ integrity sha512-odT3W2tcffTiQCy57nOT93INw1auq5lYLLYtWpPYQQYQOOdHiqFct9Xhna6GJ+pJQaF67yZABraH47oywkJgFw==
+ dependencies:
+ "@vue/compiler-dom" "3.2.31"
+ "@vue/compiler-sfc" "3.2.31"
+ "@vue/runtime-dom" "3.2.31"
+ "@vue/server-renderer" "3.2.31"
+ "@vue/shared" "3.2.31"
+
+web-namespaces@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692"
+ integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==
+
+web-streams-polyfill@^3.0.3:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz#a6b74026b38e4885869fb5c589e90b95ccfc7965"
+ integrity sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==
+
+which-boxed-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
+ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
+ 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"
+
+which-typed-array@^1.1.2:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793"
+ integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==
+ dependencies:
+ available-typed-arrays "^1.0.5"
+ call-bind "^1.0.2"
+ es-abstract "^1.18.5"
+ foreach "^2.0.5"
+ has-tostringtag "^1.0.0"
+ is-typed-array "^1.1.7"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yaml@^1.10.2:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
+yargs-parser@^21.0.0:
+ version "21.0.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55"
+ integrity sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==
+
+zod@^3.8.1:
+ version "3.11.6"
+ resolved "https://registry.yarnpkg.com/zod/-/zod-3.11.6.tgz#e43a5e0c213ae2e02aefe7cb2b1a6fa3d7f1f483"
+ integrity sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg==
+
+zwitch@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.2.tgz#91f8d0e901ffa3d66599756dde7f57b17c95dce1"
+ integrity sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==
diff --git a/smoke/docs-main/.editorconfig b/smoke/docs-main/.editorconfig
new file mode 100644
index 000000000..0bb4ad6ec
--- /dev/null
+++ b/smoke/docs-main/.editorconfig
@@ -0,0 +1,15 @@
+# https://EditorConfig.org
+
+# top-most EditorConfig file
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = tab
+insert_final_newline = true
+trim_trailing_whitespace = false
+
+[{.*,*.md,*.json,*.toml,*.yml,}]
+indent_style = space
diff --git a/smoke/docs-main/.github/labeler.yml b/smoke/docs-main/.github/labeler.yml
new file mode 100644
index 000000000..7a851e5e7
--- /dev/null
+++ b/smoke/docs-main/.github/labeler.yml
@@ -0,0 +1,12 @@
+# See https://github.com/actions/labeler
+
+'🚨 action':
+- .github/workflows/**
+
+i18n:
+- any:
+ - 'src/pages/*/**'
+ - '!src/pages/core-concepts/**'
+ - '!src/pages/guides/**'
+ - '!src/pages/migration/**'
+ - '!src/pages/reference/**'
diff --git a/smoke/docs-main/.gitignore b/smoke/docs-main/.gitignore
new file mode 100644
index 000000000..821c4e7a8
--- /dev/null
+++ b/smoke/docs-main/.gitignore
@@ -0,0 +1,19 @@
+# build output
+dist
+
+# dependencies
+node_modules/
+.snowpack/
+package-lock.lock
+
+# logs
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# environment variables
+.env
+.env.production
+
+# macOS-specific files
+.DS_Store
diff --git a/smoke/docs-main/.nvmrc b/smoke/docs-main/.nvmrc
new file mode 100644
index 000000000..31102b28d
--- /dev/null
+++ b/smoke/docs-main/.nvmrc
@@ -0,0 +1 @@
+14.18.1
diff --git a/smoke/docs-main/.prettierignore b/smoke/docs-main/.prettierignore
new file mode 100644
index 000000000..39b3de033
--- /dev/null
+++ b/smoke/docs-main/.prettierignore
@@ -0,0 +1,5 @@
+dist
+node_modules
+.github
+.changeset
+*.md
diff --git a/smoke/docs-main/.prettierrc b/smoke/docs-main/.prettierrc
new file mode 100644
index 000000000..1daf43285
--- /dev/null
+++ b/smoke/docs-main/.prettierrc
@@ -0,0 +1,16 @@
+{
+ "printWidth": 180,
+ "semi": true,
+ "singleQuote": true,
+ "tabWidth": 2,
+ "trailingComma": "es5",
+ "useTabs": true,
+ "overrides": [
+ {
+ "files": [".*", "*.json", "*.md", "*.toml", "*.yml"],
+ "options": {
+ "useTabs": false
+ }
+ }
+ ]
+}
diff --git a/smoke/docs-main/.stackblitzrc b/smoke/docs-main/.stackblitzrc
new file mode 100644
index 000000000..0dfa8f1e0
--- /dev/null
+++ b/smoke/docs-main/.stackblitzrc
@@ -0,0 +1,6 @@
+{
+ "startCommand": "npm start",
+ "env": {
+ "ENABLE_CJS_IMPORTS": true
+ }
+}
diff --git a/smoke/docs-main/CHANGELOG.md b/smoke/docs-main/CHANGELOG.md
new file mode 100644
index 000000000..429cbfdf6
--- /dev/null
+++ b/smoke/docs-main/CHANGELOG.md
@@ -0,0 +1,55 @@
+# docs
+
+## 0.0.7
+
+### Patch Changes
+
+- 6b8630c6: Github pages disclaimer
+
+## 0.0.6
+
+### Patch Changes
+
+- 788c769d: # Hoisted scripts
+
+ This change adds support for hoisted scripts, allowing you to bundle scripts together for a page and hoist them to the top (in the head):
+
+ ```astro
+ <script hoist>
+ // Anything goes here!
+ </script>
+ ```
+
+## 0.0.5
+
+## 0.0.5-next.0
+
+### Patch Changes
+
+- 78b5bde1: Adds support for Astro.resolve
+
+ `Astro.resolve()` helps with creating URLs relative to the current Astro file, allowing you to reference files within your `src/` folder.
+
+ Astro _does not_ resolve relative links within HTML, such as images:
+
+ ```html
+ <img src="../images/penguin.png" />
+ ```
+
+ The above will be sent to the browser as-is and the browser will resolve it relative to the current **page**. If you want it to be resolved relative to the .astro file you are working in, use `Astro.resolve`:
+
+ ```astro
+ <img src={Astro.resolve('../images/penguin.png')} />
+ ```
+
+## 0.0.4
+
+### Patch Changes
+
+- adc767c5: change Spanish translations for Getting Started page
+
+## 0.0.3
+
+### Patch Changes
+
+- 70f0a09: Added remark-slug to default plugins
diff --git a/smoke/docs-main/README.md b/smoke/docs-main/README.md
new file mode 100644
index 000000000..15906f4ff
--- /dev/null
+++ b/smoke/docs-main/README.md
@@ -0,0 +1,98 @@
+# Astro Docs <img align="right" valign="center" height="52" width="39" src="https://raw.githubusercontent.com/withastro/astro/main/assets/brand/logo.svg" alt="Astro logo" />
+
+To all who come to this happy place: welcome.
+
+This is the repo for [docs.astro.build](https://docs.astro.build/).
+This repo contains all the source code we use to build our docs site.
+
+## We are Astro
+
+Astro is a site builder for the web platform.
+We want everyone to be successful building sites, and that means helping everyone understand how Astro works.
+
+## You are Awesome
+
+You can also help make the docs awesome.
+Your feedback is welcome.
+Your writing, editing, translating, designing, and developing skills are welcome.
+You being a part of our community is welcome.
+
+## Chat with Us
+
+You can learn more about Astro, get support, and meet other devs in [our Discord community](https://astro.build/chat).
+
+## Raise an Issue
+
+Is something missing?
+Is something wrong?
+Could something be better?
+Issues are a quick way for you to offer us feedback about the docs.
+
+Before you share, please [see if your issue has already been reported](https://github.com/withastro/docs/issues).
+
+## Edit a Page
+
+Every page on [docs.astro.build](https://docs.astro.build/) has an **Edit this page** button in the sidebar.
+You can click that button to edit the source code for that page in **GitHub**.
+
+After you make your changes, click **Commit changes**.
+This will automatically create a [fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) of the docs in your GitHub account with the changes.
+
+Once your edits are ready in GitHub, follow the prompts to **create a pull request** and submit your changes for review.
+Every pull request needs to be reviewed by our contributors.
+
+## Develop
+
+To begin developing locally, checkout this project from your machine.
+
+```shell
+git clone git@github.com:withastro/docs.git
+```
+
+You can install and run the project locally using your preferred package manager.
+
+```shell
+npm install
+
+npm start
+```
+
+If you’re copying these instructions, remember to [configure this project as a fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-for-a-fork).
+
+```shell
+git remote add upstream git@github.com:csstools/docs.git
+```
+
+At any point, create a branch for your contribution.
+We are not strict about branch names.
+
+```shell
+git checkout -b add/klingon-language
+```
+
+That’s it.
+As you [open a pull request](https://github.com/withastro/astro/compare), please include a clear title and description.
+
+```markdown
+# Add Klingon language to Getting Started page
+
+This adds the Klingon language and also updates the sidebar and language selection components.
+```
+
+Thank you for helping make the docs awesome.
+And please, [come chat with us](https://astro.build/chat) if you have any questions.
+
+## Deploy
+
+Every pull request generates a preview using **Netlify** for anyone to see.
+
+Use the **Deploy Preview** of your pull request to review and share your changes.
+
+The docs site will be automatically updated whenever pull requests are merged.
+
+## Next Steps
+
+- [Read the docs](https://docs.astro.build/)
+- [Fork the docs](https://github.com/withastro/docs/fork)
+- [Raise an issue](https://github.com/withastro/docs/issues/new)
+- [Discuss the docs](https://discord.gg/cZDZU3hJHc)
diff --git a/smoke/docs-main/astro.config.mjs b/smoke/docs-main/astro.config.mjs
new file mode 100644
index 000000000..94290bf17
--- /dev/null
+++ b/smoke/docs-main/astro.config.mjs
@@ -0,0 +1,12 @@
+// @ts-check
+export default /** @type {import('astro').AstroUserConfig} */ ({
+ buildOptions: {
+ site: 'https://docs.astro.build/',
+ },
+ renderers: [
+ // Our main renderer for frontend components
+ '@astrojs/renderer-preact',
+ // Needed for Algolia search component
+ '@astrojs/renderer-react',
+ ],
+});
diff --git a/smoke/docs-main/jsconfig.json b/smoke/docs-main/jsconfig.json
new file mode 100644
index 000000000..56c62bf9f
--- /dev/null
+++ b/smoke/docs-main/jsconfig.json
@@ -0,0 +1,8 @@
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "~/*": ["src/*"]
+ }
+ }
+}
diff --git a/smoke/docs-main/netlify.toml b/smoke/docs-main/netlify.toml
new file mode 100644
index 000000000..9b30d4f68
--- /dev/null
+++ b/smoke/docs-main/netlify.toml
@@ -0,0 +1,2 @@
+[build]
+ ignore = "git diff --quiet $COMMIT_REF $CACHED_COMMIT_REF -- /"
diff --git a/smoke/docs-main/package.json b/smoke/docs-main/package.json
new file mode 100644
index 000000000..1327fc24b
--- /dev/null
+++ b/smoke/docs-main/package.json
@@ -0,0 +1,33 @@
+{
+ "name": "docs",
+ "version": "0.0.7",
+ "private": true,
+ "scripts": {
+ "dev": "astro dev",
+ "start": "astro dev",
+ "build": "astro build",
+ "preview": "astro preview",
+ "format": "prettier -w .",
+ "lint": "run-p --aggregate-output lint:linkcheck",
+ "lint:a11y": "start-test 'yarn build && yarn preview' 3000 'yarn lint:a11y:local'",
+ "lint:a11y:local": "pa11y-ci --sitemap 'http://localhost:3000/sitemap.xml' --sitemap-find 'https://docs.astro.build' --sitemap-replace 'http://localhost:3000'",
+ "lint:a11y:remote": "pa11y-ci --sitemap 'https://docs.astro.build/sitemap.xml'",
+ "lint:linkcheck": "start-test 'yarn dev --silent' 3000 'yarn lint:linkcheck:local'",
+ "lint:linkcheck:local": "blc -roe --user-agent 'broken-link-checker/0.7.8' 'http://localhost:3000/en/getting-started'",
+ "lint:linkcheck:remote": "blc -ro --user-agent 'broken-link-checker/0.7.8' 'https://docs.astro.build/'"
+ },
+ "devDependencies": {
+ "astro": "0.23.0-next.10",
+ "broken-link-checker": "^0.7.8",
+ "npm-run-all": "^4.1.5",
+ "pa11y-ci": "^3.0.1",
+ "prettier": "^2.5.1",
+ "prettier-plugin-astro": "^0.0.12"
+ },
+ "dependencies": {
+ "@docsearch/react": "^3.0.0-alpha.50"
+ },
+ "volta": {
+ "node": "14.18.1"
+ }
+}
diff --git a/smoke/docs-main/public/code.css b/smoke/docs-main/public/code.css
new file mode 100644
index 000000000..3cb74322f
--- /dev/null
+++ b/smoke/docs-main/public/code.css
@@ -0,0 +1,101 @@
+.language-css > code,
+.language-sass > code,
+.language-scss > code {
+ color: #fd9170;
+}
+
+.language-diff .token.prefix.deleted,
+.language-diff .token.prefix.inserted {
+ user-select: none;
+}
+
+[class*='language-'] .namespace {
+ opacity: 0.7;
+}
+
+.token.plain-text,
+[class*='language-bash'] span.token,
+[class*='language-shell'] span.token {
+ color: hsla(var(--color-gray-90), 1);
+}
+
+[class*='language-bash'] span.token,
+[class*='language-shell'] span.token {
+ font-style: bold;
+}
+
+.token.prolog,
+.token.comment,
+[class*='language-bash'] span.token.comment,
+[class*='language-shell'] span.token.comment {
+ color: hsla(var(--color-gray-70), 1);
+}
+
+.token.selector,
+.token.tag,
+.token.unit,
+.token.url,
+.token.variable,
+.token.entity,
+.token.deleted {
+ color: #fa5e5b;
+}
+
+.token.boolean,
+.token.constant,
+.token.doctype,
+.token.number,
+.token.regex,
+.token.builtin,
+.token.class,
+.token.hexcode,
+.token.class-name,
+.token.attr-name {
+ color: hsla(var(--color-yellow), 1);
+}
+
+.token.atrule,
+.token.attribute,
+.token.attr-value .token.punctuation,
+.token.attr-value,
+.token.pseudo-class,
+.token.pseudo-element,
+.token.string {
+ color: hsla(var(--color-green), 1);
+}
+
+.token.symbol,
+.token.function,
+.token.id,
+.token.important {
+ color: hsla(var(--color-blue), 1);
+}
+
+.token.important,
+.token.id {
+ font-weight: bold;
+}
+
+.token.cdata,
+.token.char,
+.token.property {
+ color: #23b1af;
+}
+
+.token.inserted {
+ color: hsla(var(--color-green), 1);
+}
+
+.token.keyword {
+ color: #ff657c;
+ font-style: italic;
+}
+
+.token.operator {
+ color: hsla(var(--color-gray-70), 1);
+}
+
+.token.attr-value .token.attr-equals,
+.token.punctuation {
+ color: hsla(var(--color-gray-80), 1);
+}
diff --git a/smoke/docs-main/public/default-og-image.png b/smoke/docs-main/public/default-og-image.png
new file mode 100644
index 000000000..97903207e
--- /dev/null
+++ b/smoke/docs-main/public/default-og-image.png
Binary files differ
diff --git a/smoke/docs-main/public/favicon.ico b/smoke/docs-main/public/favicon.ico
new file mode 100644
index 000000000..578ad458b
--- /dev/null
+++ b/smoke/docs-main/public/favicon.ico
Binary files differ
diff --git a/smoke/docs-main/public/favicon.svg b/smoke/docs-main/public/favicon.svg
new file mode 100644
index 000000000..542f90aec
--- /dev/null
+++ b/smoke/docs-main/public/favicon.svg
@@ -0,0 +1,11 @@
+<svg width="256" height="256" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <style>
+ #flame { fill: #FF5D01; }
+ #a { fill: #000014; }
+ @media (prefers-color-scheme: dark) {
+ #a { fill: #fff; }
+ }
+ </style>
+ <path id="a" fill-rule="evenodd" clip-rule="evenodd" d="M163.008 18.929c1.944 2.413 2.935 5.67 4.917 12.181l43.309 142.27a180.277 180.277 0 00-51.778-17.53l-28.198-95.29a3.67 3.67 0 00-7.042.01l-27.857 95.232a180.225 180.225 0 00-52.01 17.557l43.52-142.281c1.99-6.502 2.983-9.752 4.927-12.16a15.999 15.999 0 016.484-4.798c2.872-1.154 6.271-1.154 13.07-1.154h31.085c6.807 0 10.211 0 13.086 1.157a16.004 16.004 0 016.487 4.806z" />
+ <path id="flame" fill-rule="evenodd" clip-rule="evenodd" d="M168.19 180.151c-7.139 6.105-21.39 10.268-37.804 10.268-20.147 0-37.033-6.272-41.513-14.707-1.602 4.835-1.961 10.367-1.961 13.902 0 0-1.056 17.355 11.015 29.426 0-6.268 5.081-11.349 11.349-11.349 10.743 0 10.731 9.373 10.721 16.977v.679c0 11.542 7.054 21.436 17.086 25.606a23.27 23.27 0 01-2.339-10.2c0-11.008 6.463-15.107 13.974-19.87 5.976-3.79 12.616-8.001 17.192-16.449a31.024 31.024 0 003.743-14.82c0-3.299-.513-6.479-1.463-9.463z" />
+</svg>
diff --git a/smoke/docs-main/public/index.css b/smoke/docs-main/public/index.css
new file mode 100644
index 000000000..54e4124fd
--- /dev/null
+++ b/smoke/docs-main/public/index.css
@@ -0,0 +1,390 @@
+* {
+ box-sizing: border-box;
+ margin: 0;
+}
+
+/* Global focus outline reset */
+*:focus:not(:focus-visible) {
+ outline: none;
+}
+
+:root {
+ --user-font-scale: 1rem - 16px;
+ --max-width: calc(100% - 1rem);
+}
+
+@media (min-width: 50em) {
+ :root {
+ --max-width: 46em;
+ }
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ :root {
+ scroll-behavior: smooth;
+ }
+}
+
+body {
+ display: flex;
+ flex-direction: column;
+ min-height: 100vh;
+ font-family: var(--font-body);
+ font-size: 1rem;
+ font-size: clamp(0.9rem, 0.75rem + 0.375vw + var(--user-font-scale), 1rem);
+ line-height: 1.5;
+ max-width: 100vw;
+}
+
+nav ul {
+ list-style: none;
+ padding: 0;
+}
+
+.content > section > * + * {
+ margin-top: 1.25rem;
+}
+
+.content > section > :first-child {
+ margin-top: 0;
+}
+
+/* Typography */
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin-bottom: 1rem;
+ font-weight: bold;
+ line-height: 1;
+}
+
+h1,
+h2 {
+ max-width: 40ch;
+}
+
+:is(h2, h3):not(:first-child) {
+ margin-top: 3rem;
+}
+
+:is(h4, h5, h6):not(:first-child) {
+ margin-top: 2rem;
+}
+
+h1 {
+ font-size: 3.25rem;
+ font-weight: 800;
+}
+
+h2 {
+ font-size: 2.5rem;
+}
+
+h3 {
+ font-size: 1.75rem;
+}
+
+h4 {
+ font-size: 1.3rem;
+}
+
+h5 {
+ font-size: 1rem;
+}
+
+p,
+.content ul {
+ line-height: 1.65em;
+}
+
+p,
+.content ul {
+ color: var(--theme-text-light);
+}
+
+small,
+.text_small {
+ font-size: 0.833rem;
+}
+
+a {
+ color: var(--theme-text-accent);
+ text-underline-offset: 0.08em;
+ align-items: center;
+ gap: 0.5rem;
+}
+
+article > section :is(ul, ol) > * + * {
+ margin-top: 0.25rem;
+}
+
+article > section nav :is(ul, ol) > * + * {
+ margin-top: inherit;
+}
+
+article > section li > :is(p, pre, blockquote):not(:first-child) {
+ margin-top: 1rem;
+}
+
+article > section :is(ul, ol) {
+ padding-left: 1em;
+}
+
+article > section nav :is(ul, ol) {
+ padding-left: inherit;
+}
+
+article > section nav {
+ margin-top: 1rem;
+ margin-bottom: 2rem;
+}
+
+article > section ::marker {
+ font-weight: bold;
+ color: var(--theme-text-light);
+}
+
+article > section iframe {
+ width: 100%;
+ height: auto;
+ aspect-ratio: 16 / 9;
+}
+
+a > code:not([class*='language']) {
+ position: relative;
+ color: var(--theme-text-accent);
+ background: transparent;
+ text-underline-offset: var(--padding-block);
+}
+
+a > code:not([class*='language'])::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ background: var(--theme-accent);
+ opacity: var(--theme-accent-opacity);
+ border-radius: var(--border-radius);
+}
+
+a:hover,
+a:focus {
+ text-decoration: underline;
+}
+
+a:focus {
+ outline: 2px solid currentColor;
+ outline-offset: 0.25em;
+}
+
+strong {
+ font-weight: 600;
+ color: inherit;
+}
+
+/* Supporting Content */
+code {
+ font-family: var(--font-mono);
+ font-size: 0.85em;
+}
+
+code:not([class*='language']) {
+ --border-radius: 3px;
+ --padding-block: 0.2rem;
+ --padding-inline: 0.4rem;
+ color: var(--theme-code-inline-text);
+ background-color: var(--theme-code-inline-bg);
+ padding: var(--padding-block) var(--padding-inline);
+ margin: calc(var(--padding-block) * -1) -0.125em;
+ border-radius: var(--border-radius);
+ box-shadow: 0 2px 1px 0 rgba(0, 0, 0, 0.08);
+ word-break: break-word;
+}
+
+pre > code:not([class*='language']) {
+ background-color: transparent;
+ padding: 0;
+ margin: 0;
+ border-radius: 0;
+ color: inherit;
+}
+
+pre > code {
+ font-size: 1em;
+}
+
+table,
+pre {
+ position: relative;
+ --padding-block: 1rem;
+ --padding-inline: 2rem;
+ padding: var(--padding-block) var(--padding-inline);
+ padding-right: calc(var(--padding-inline) * 2);
+ margin-left: calc(var(--padding-inline) * -1);
+ margin-right: calc(var(--padding-inline) * -1);
+ font-family: var(--font-mono);
+
+ line-height: 1.5;
+ font-size: 0.85em;
+ overflow-y: hidden;
+ overflow-x: auto;
+}
+
+table {
+ width: 100%;
+ padding: var(--padding-block) 0;
+ margin: 0;
+ border-collapse: collapse;
+}
+
+/* Zebra striping */
+tr:nth-of-type(odd) {
+ background: var(--theme-bg-hover);
+}
+th {
+ background: var(--color-black);
+ color: var(--theme-color);
+ font-weight: bold;
+}
+td,
+th {
+ padding: 6px;
+ text-align: left;
+}
+
+pre {
+ background-color: var(--theme-code-bg);
+ color: var(--theme-code-text);
+}
+
+blockquote code:not([class*='language']) {
+ background-color: var(--theme-bg);
+}
+
+@media (min-width: 37.75em) {
+ pre {
+ --padding-inline: 1.25rem;
+ border-radius: 8px;
+ margin-left: 0;
+ margin-right: 0;
+ }
+}
+
+blockquote {
+ margin: 2rem 0;
+ padding: 1.25em 1.5rem;
+ border-left: 3px solid var(--theme-text-light);
+ background-color: var(--theme-bg-offset);
+ border-radius: 0 0.25rem 0.25rem 0;
+ line-height: 1.7;
+}
+
+img {
+ max-width: 100%;
+}
+
+.flex {
+ display: flex;
+ align-items: center;
+}
+
+button {
+ display: flex;
+ align-items: center;
+ justify-items: center;
+ gap: 0.25em;
+ padding: 0.33em 0.67em;
+ border: 0;
+ background: var(--theme-bg);
+ display: flex;
+ font-size: 1rem;
+ align-items: center;
+ gap: 0.25em;
+ border-radius: 99em;
+ color: var(--theme-text);
+ background-color: var(--theme-bg);
+}
+
+h2.heading {
+ font-size: 1rem;
+ font-weight: 700;
+ padding: 0.1rem 1rem;
+ text-transform: uppercase;
+ margin-bottom: 0.5rem;
+}
+
+.header-link {
+ font-size: 1rem;
+ padding: 0.1rem 0 0.1rem 1rem;
+ border-left: 4px solid var(--theme-divider);
+}
+
+.header-link:hover,
+.header-link:focus {
+ border-left-color: var(--theme-accent);
+ color: var(--theme-accent);
+}
+.header-link:focus-within {
+ color: var(--theme-text-light);
+ border-left-color: hsla(var(--color-gray-40), 1);
+}
+.header-link svg {
+ opacity: 0.6;
+}
+.header-link:hover svg {
+ opacity: 0.8;
+}
+.header-link a {
+ display: inline-flex;
+ gap: 0.5em;
+ width: 100%;
+ padding: 0.15em 0 0.15em 0;
+}
+
+.header-link.depth-3 {
+ padding-left: 2rem;
+}
+.header-link.depth-4 {
+ padding-left: 3rem;
+}
+
+.header-link a {
+ font: inherit;
+ color: inherit;
+ text-decoration: none;
+}
+
+/* Screenreader Only Text */
+.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;
+}
+
+.focus\:not-sr-only:focus,
+.focus\:not-sr-only:focus-visible {
+ position: static;
+ width: auto;
+ height: auto;
+ padding: 0;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
+ white-space: normal;
+}
+
+:target {
+ scroll-margin: calc(var(--theme-sidebar-offset, 5rem) + 2rem) 0 2rem;
+}
diff --git a/smoke/docs-main/public/make-scrollable-code-focusable.js b/smoke/docs-main/public/make-scrollable-code-focusable.js
new file mode 100644
index 000000000..f2b7030f7
--- /dev/null
+++ b/smoke/docs-main/public/make-scrollable-code-focusable.js
@@ -0,0 +1,3 @@
+Array.from(document.getElementsByTagName('pre')).forEach((element) => {
+ element.setAttribute('tabindex', '0');
+});
diff --git a/smoke/docs-main/public/theme.css b/smoke/docs-main/public/theme.css
new file mode 100644
index 000000000..e44175a6f
--- /dev/null
+++ b/smoke/docs-main/public/theme.css
@@ -0,0 +1,123 @@
+:root {
+ --font-fallback: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;
+ --font-body: system-ui, var(--font-fallback);
+ --font-mono: 'IBM Plex Mono', Consolas, 'Andale Mono WT', 'Andale Mono', 'Lucida Console', 'Lucida Sans Typewriter', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono',
+ 'Liberation Mono', 'Nimbus Mono L', Monaco, 'Courier New', Courier, monospace;
+
+ /*
+ * Variables with --color-base prefix define
+ * the hue, and saturation values to be used for
+ * hsla colors.
+ *
+ * ex:
+ *
+ * --color-base-{color}: {hue}, {saturation};
+ *
+ */
+
+ --color-base-white: 0, 0%;
+ --color-base-black: 240, 100%;
+ --color-base-gray: 215, 14%;
+ --color-base-blue: 212, 100%;
+ --color-base-blue-dark: 212, 72%;
+ --color-base-green: 158, 79%;
+ --color-base-orange: 22, 100%;
+ --color-base-purple: 269, 79%;
+ --color-base-red: 351, 100%;
+ --color-base-yellow: 41, 100%;
+
+ /*
+ * Color palettes are made using --color-base
+ * variables, along with a lightness value to
+ * define different variants.
+ *
+ */
+
+ --color-gray-5: var(--color-base-gray), 5%;
+ --color-gray-10: var(--color-base-gray), 10%;
+ --color-gray-20: var(--color-base-gray), 20%;
+ --color-gray-30: var(--color-base-gray), 30%;
+ --color-gray-40: var(--color-base-gray), 40%;
+ --color-gray-50: var(--color-base-gray), 50%;
+ --color-gray-60: var(--color-base-gray), 60%;
+ --color-gray-70: var(--color-base-gray), 70%;
+ --color-gray-80: var(--color-base-gray), 80%;
+ --color-gray-90: var(--color-base-gray), 90%;
+ --color-gray-95: var(--color-base-gray), 95%;
+
+ --color-blue: var(--color-base-blue), 61%;
+ --color-blue-dark: var(--color-base-blue-dark), 39%;
+ --color-green: var(--color-base-green), 42%;
+ --color-orange: var(--color-base-orange), 50%;
+ --color-purple: var(--color-base-purple), 54%;
+ --color-red: var(--color-base-red), 54%;
+ --color-yellow: var(--color-base-yellow), 59%;
+}
+
+:root {
+ color-scheme: light;
+ --theme-accent: hsla(var(--color-orange), 1);
+ --theme-text-accent: hsla(var(--color-orange), 1);
+ --theme-accent-opacity: 0.1;
+ --theme-divider: hsla(var(--color-gray-95), 1);
+ --theme-text: hsla(var(--color-gray-10), 1);
+ --theme-text-light: hsla(var(--color-gray-40), 1);
+ /* @@@: not used anywhere */
+ --theme-text-lighter: hsla(var(--color-gray-80), 1);
+ --theme-bg: hsla(var(--color-base-white), 100%, 1);
+ --theme-bg-hover: hsla(var(--color-gray-95), 1);
+ --theme-bg-offset: hsla(var(--color-gray-90), 1);
+ --theme-bg-accent: hsla(var(--color-orange), var(--theme-accent-opacity));
+ --theme-code-inline-bg: hsla(var(--color-gray-95), 1);
+ --theme-code-inline-text: var(--theme-text);
+ --theme-code-bg: hsla(217, 19%, 27%, 1);
+ --theme-code-text: hsla(var(--color-gray-95), 1);
+ --theme-navbar-bg: hsla(var(--color-base-white), 100%, 1);
+ --theme-navbar-height: 6rem;
+ --theme-selection-color: hsla(var(--color-orange), 1);
+ --theme-selection-bg: hsla(var(--color-orange), var(--theme-accent-opacity));
+}
+
+body {
+ background: var(--theme-bg);
+ color: var(--theme-text);
+}
+
+:root.theme-dark {
+ color-scheme: dark;
+ --theme-accent-opacity: 0.4;
+ --theme-accent: hsla(var(--color-orange), 1);
+ --theme-text-accent: hsla(var(--color-orange), 1);
+ --theme-divider: hsla(var(--color-gray-10), 1);
+ --theme-text: hsla(var(--color-gray-90), 1);
+ --theme-text-light: hsla(var(--color-gray-80), 1);
+
+ /* @@@: not used anywhere */
+ --theme-text-lighter: hsla(var(--color-gray-40), 1);
+ --theme-bg: hsla(215, 28%, 17%, 1);
+ --theme-bg-hover: hsla(var(--color-gray-40), 1);
+ --theme-bg-offset: hsla(var(--color-gray-5), 1);
+ --theme-code-inline-bg: hsla(var(--color-gray-10), 1);
+ --theme-code-inline-text: hsla(var(--color-base-white), 100%, 1);
+ --theme-code-bg: hsla(var(--color-gray-5), 1);
+ --theme-code-text: hsla(var(--color-base-white), 100%, 1);
+ --theme-navbar-bg: hsla(215, 28%, 17%, 1);
+ --theme-selection-color: hsla(var(--color-base-white), 100%, 1);
+ --theme-selection-bg: hsla(var(--color-purple), var(--theme-accent-opacity));
+
+ /* DocSearch [Algolia] */
+ --docsearch-modal-background: var(--theme-bg);
+ --docsearch-searchbox-focus-background: var(--theme-divider);
+ --docsearch-footer-background: var(--theme-divider);
+ --docsearch-text-color: var(--theme-text);
+ --docsearch-hit-background: var(--theme-divider);
+ --docsearch-hit-shadow: none;
+ --docsearch-hit-color: var(--theme-text);
+ --docsearch-footer-shadow: inset 0 2px 10px #000;
+ --docsearch-modal-shadow: inset 0 0 8px #000;
+}
+
+::selection {
+ color: var(--theme-selection-color);
+ background-color: var(--theme-selection-bg);
+}
diff --git a/smoke/docs-main/reference/api-reference.md b/smoke/docs-main/reference/api-reference.md
new file mode 100644
index 000000000..afb6316cd
--- /dev/null
+++ b/smoke/docs-main/reference/api-reference.md
@@ -0,0 +1,195 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: API Reference
+---
+
+## `Astro` global
+
+The `Astro` global is available in all contexts in `.astro` files. It has the following functions:
+
+### `Astro.fetchContent()`
+
+`Astro.fetchContent()` is a way to load local `*.md` files into your static site setup. You can either use this on its own, or within [Astro Collections](/core-concepts/collections).
+
+```jsx
+// ./src/components/my-component.astro
+---
+const data = Astro.fetchContent('../pages/post/*.md'); // returns an array of posts that live at ./src/pages/post/*.md
+---
+
+<div>
+{data.slice(0, 3).map((post) => (
+ <article>
+ <h1>{post.title}</h1>
+ <p>{post.description}</p>
+ <a href={post.url}>Read more</a>
+ </article>
+))}
+</div>
+```
+
+`.fetchContent()` only takes one parameter: a relative URL glob of which local files you'd like to import. Currently only `*.md` files are supported. It’s synchronous, and returns an array of items of type:
+
+```js
+{
+ /** frontmatter from the post.. example frontmatter:
+ title: '',
+ tag: '',
+ date: '',
+ image: '',
+ author: '',
+ description: '',
+ **/
+ astro: {
+ headers: [], // an array of h1...h6 elements in the markdown file
+ source: '', // raw source of the markdown file
+ html: '' // rendered HTML of the markdown file
+ },
+ url: '' // the rendered path
+ }[]
+```
+
+### `Astro.slots`
+
+`Astro.slots` returns an object with any slotted regions passed into the current Astro file.
+
+```js
+const {
+ heading as headingSlot, // true or undefined, based on whether `<* slot="heading">` was used.
+ default as defaultSlot, // true or undefined, based on whether `<* slot>` or `<* default>` was used.
+} = Astro.slots;
+```
+
+### `Astro.request`
+
+`Astro.request` returns an object with the following properties:
+
+| Name | Type | Description |
+| :------------- | :---- | :---------------------------------------------- |
+| `url` | `URL` | The URL of the request being rendered. |
+| `canonicalURL` | `URL` | [Canonical URL][canonical] of the current page. |
+
+⚠️ Temporary restriction: this is only accessible in top-level pages and not in sub-components.
+
+### `Astro.site`
+
+`Astro.site` returns a `URL` made from `buildOptions.site` in your Astro config. If undefined, this will return a URL generated from `localhost`.
+
+## Collections API
+
+### `collection` prop
+
+```jsx
+const { collection } = Astro.props;
+```
+
+When using the [Collections API](/core-concepts/collections), `collection` is a prop exposed to the page with the following shape:
+
+| Name | Type | Description |
+| :------------------------ | :-------------------: | :-------------------------------------------------------------------------------------------------------------------------------- |
+| `collection.data` | `Array` | Array of data returned from `data()` for the current page. |
+| `collection.start` | `number` | Index of first item on current page, starting at `0` (e.g. if `pageSize: 25`, this would be `0` on page 1, `25` on page 2, etc.). |
+| `collection.end` | `number` | Index of last item on current page. |
+| `collection.total` | `number` | The total number of items across all pages. |
+| `collection.page.current` | `number` | The current page number, starting with `1`. |
+| `collection.page.size` | `number` | How many items per-page. |
+| `collection.page.last` | `number` | The total number of pages. |
+| `collection.url.current` | `string` | Get the URL of the current page (useful for canonical URLs) |
+| `collection.url.prev` | `string \| undefined` | Get the URL of the previous page (will be `undefined` if on page 1). |
+| `collection.url.next` | `string \| undefined` | Get the URL of the next page (will be `undefined` if no more pages). |
+| `collection.params` | `object` | If page params were used, this returns a `{ key: value }` object of all values. |
+
+### `createCollection()`
+
+```jsx
+export async function createCollection() {
+ return {
+ async data({ params }) {
+ // load data
+ },
+ pageSize: 25,
+ routes: [{ tag: 'movie' }, { tag: 'television' }],
+ permalink: ({ params }) => `/tag/${params.tag}`,
+ };
+}
+```
+
+When using the [Collections API](/core-concepts/collections), `createCollection()` is an async function that returns an object of the following shape:
+
+| Name | Type | Description |
+| :---------- | :--------------------------------------: | :--------------------------------------------------------------------------------------------------------- |
+| `data` | `async ({ params }) => any[]` | **Required.** Load an array of data with this function to be returned. |
+| `pageSize` | `number` | Specify number of items per page (default: `25`). |
+| `routes` | `params[]` | **Required for URL Params.** Return an array of all possible URL `param` values in `{ name: value }` form. |
+| `permalink` | `({ params }) => string` | **Required for URL Params.** Given a `param` object of `{ name: value }`, generate the final URL.\* |
+| `rss` | [RSS](/reference/api-reference#rss-feed) | Optional: generate an RSS 2.0 feed from this collection ([docs](/reference/api-reference#rss-feed)) |
+
+_\* Note: don't create confusing URLs with `permalink`, e.g. rearranging params conditionally based on their values._
+
+⚠️ `createCollection()` executes in its own isolated scope before page loads. Therefore you can't reference anything from its parent scope. If you need to load data you may fetch or use async `import()`s within the function body for anything you need (that’s why it’s `async`—to give you this ability). If it wasn't isolated, then `collection` would be undefined! Therefore, duplicating imports between `createCollection()` and your Astro component is OK.
+
+#### RSS Feed
+
+You can optionally generate an RSS 2.0 feed from `createCollection()` by adding an `rss` option. Here are all the options:
+
+```jsx
+export async function createCollection() {
+ return {
+ async data({ params }) {
+ // load data
+ },
+ pageSize: 25,
+ rss: {
+ title: 'My RSS Feed',
+ description: 'Description of the feed',
+ /** (optional) add xmlns:* properties to root element */
+ xmlns: {
+ itunes: 'http://www.itunes.com/dtds/podcast-1.0.dtd',
+ content: 'http://purl.org/rss/1.0/modules/content/',
+ },
+ /** (optional) add arbitrary XML to <channel> */
+ customData: `<language>en-us</language>
+<itunes:author>The Sunset Explorers</itunes:author>`,
+ /** Format each item from things returned in data() */
+ item: (item) => ({
+ title: item.title,
+ description: item.description,
+ pubDate: item.pubDate + 'Z', // enforce GMT timezone (otherwise it'll be different based on where it’s built)
+ /** (optional) add arbitrary XML to each <item> */
+ customData: `<itunes:episodeType>${item.type}</itunes:episodeType>
+<itunes:duration>${item.duration}</itunes:duration>
+<itunes:explicit>${item.explicit || false}</itunes:explicit>`,
+ }),
+ },
+ };
+}
+```
+
+Astro will generate an RSS 2.0 feed at `/feed/[collection].xml` (for example, `/src/pages/$podcast.xml` would generate `/feed/podcast.xml`).
+
+⚠️ Even though Astro will create the RSS feed for you, you'll still need to add `<link>` tags manually in your `<head>` HTML:
+
+```html
+<link
+ rel="alternate"
+ type="application/rss+xml"
+ title="My RSS Feed"
+ href="/feed/podcast.xml"
+/>
+```
+
+## `import.meta`
+
+All ESM modules include a `import.meta` property. Astro adds `import.meta.env` through [Vite](https://vitejs.dev/guide/env-and-mode.html).
+
+**import.meta.env.SSR** can be used to know when rendering on the server. Sometimes you might want different logic, for example a component that should only be rendered in the client:
+
+```jsx
+import { h } from 'preact';
+
+export default function () {
+ return import.meta.env.SSR ? <div class="spinner"></div> : <FancyComponent />;
+}
+```
+
+[canonical]: https://en.wikipedia.org/wiki/Canonical_link_element
diff --git a/smoke/docs-main/src/components/Card.astro b/smoke/docs-main/src/components/Card.astro
new file mode 100644
index 000000000..98ac59a07
--- /dev/null
+++ b/smoke/docs-main/src/components/Card.astro
@@ -0,0 +1,57 @@
+---
+const { data, index } = Astro.props;
+const hasScreenshot = !!data.demo;
+const backgroundStyle = hasScreenshot
+ ? `url('https://v1.screenshot.11ty.dev/${encodeURIComponent(data.demo)}/medium/9:16/')`
+ : `linear-gradient(60deg, var(--theme-bg-accent), var(--theme-accent))`;
+---
+
+<article class={`card ${hasScreenshot ? 'has-screenshot' : ''}`} style={`background: ${backgroundStyle}; background-size: cover;`}>
+ {hasScreenshot && <div class="background-dimmer"></div>}
+ <div class="card-body">
+ <a href={data.github} class="card-header" target="_blank">
+ {data.name}
+ <span>{` →`}</span>
+ </a>
+ </div>
+</article>
+
+<style>
+ .card {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ grid-column: span 1;
+ flex-grow: 1;
+ height: 200px;
+ justify-content: center;
+ align-items: center;
+ padding: 1rem;
+ text-align: center;
+ }
+ .card-header {
+ flex-grow: 1;
+ font-weight: bold;
+ font-size: 1.8rem;
+ }
+ .background-dimmer {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+ width: 100%;
+ background: linear-gradient(45deg, #0004, #000b);
+ z-index: 2;
+ }
+ .card-body,
+ .card-header {
+ color: var(--text-color);
+ }
+ .card-body {
+ z-index: 3;
+ }
+ .card.has-screenshot .card-header,
+ .card.has-screenshot .card-body {
+ color: white;
+ }
+</style>
diff --git a/smoke/docs-main/src/components/Footer/AvatarList.astro b/smoke/docs-main/src/components/Footer/AvatarList.astro
new file mode 100644
index 000000000..7c078a2c0
--- /dev/null
+++ b/smoke/docs-main/src/components/Footer/AvatarList.astro
@@ -0,0 +1,155 @@
+---
+// fetch all commits for just this page’s path
+
+export interface Props {
+ path: string;
+}
+
+const { path } = Astro.props as Props;
+const commitPath = 'docs/' + path;
+const url = `https://api.github.com/repos/withastro/astro/commits?path=${commitPath}`;
+const commitsURL = `https://github.com/withastro/astro/commits/main/${commitPath}`;
+
+async function getCommits(url) {
+ try {
+ const token = import.meta.env.SNOWPACK_PUBLIC_GITHUB_TOKEN;
+ if (!token) {
+ throw new Error('Cannot find "SNOWPACK_PUBLIC_GITHUB_TOKEN" used for escaping rate-limiting.');
+ }
+
+ const auth = `Basic ${Buffer.from(token, 'binary').toString('base64')}`;
+
+ const res = await fetch(url, {
+ method: 'GET',
+ headers: {
+ Authorization: auth,
+ 'User-Agent': 'astro-docs/1.0',
+ },
+ });
+
+ const data = await res.json();
+
+ if (!res.ok) {
+ throw new Error(
+ `Request to fetch commits failed. Reason: ${res.statusText}
+ Message: ${data.message}`
+ );
+ }
+
+ return data;
+ } catch (e) {
+ console.warn(`[error] /src/components/AvatarList.astro
+ ${e?.message ?? e}`);
+ return new Array();
+ }
+}
+
+function removeDups(arr) {
+ if (!arr) {
+ return new Array();
+ }
+ let map = new Map();
+
+ for (let item of arr) {
+ let author = item.author;
+ // Deduplicate based on author.id
+ map.set(author.id, { login: author.login, id: author.id });
+ }
+
+ return Array.from(map.values());
+}
+
+const data = await getCommits(url);
+const unique = removeDups(data);
+const recentContributors = unique.slice(0, 3); // only show avatars for the 3 most recent contributors
+const additionalContributors = unique.length - recentContributors.length; // list the rest of them as # of extra contributors
+---
+
+<!-- Thanks to @5t3ph for https://smolcss.dev/#smol-avatar-list! -->
+<div class="contributors">
+ <ul class="avatar-list" style={`--avatar-count: ${recentContributors.length}`}>
+ {recentContributors.map((item) => (
+ <li>
+ <a href={`https://github.com/${item.login}`}>
+ <img alt={`Contributor ${item.login}`} title={`Contributor ${item.login}`} width="64" height="64" src={`https://avatars.githubusercontent.com/u/${item.id}`} />
+ </a>
+ </li>
+ ))}
+ </ul>
+ {additionalContributors > 0 && (
+ <span>
+ <a href={commitsURL}>{`and ${additionalContributors} additional contributor${additionalContributors > 1 ? 's' : ''}.`}</a>
+ </span>
+ )}
+ {unique.length === 0 && <a href={commitsURL}>Contributors</a>}
+</div>
+
+<style>
+ .avatar-list {
+ --avatar-size: 2.5rem;
+ --avatar-count: 3;
+
+ display: grid;
+ list-style: none;
+ /* Default to displaying most of the avatar to
+ enable easier access on touch devices, ensuring
+ the WCAG touch target size is met or exceeded */
+ grid-template-columns: repeat(var(--avatar-count), max(44px, calc(var(--avatar-size) / 1.15)));
+ /* `padding` matches added visual dimensions of
+ the `box-shadow` to help create a more accurate
+ computed component size */
+ padding: 0.08em;
+ font-size: var(--avatar-size);
+ }
+
+ @media (any-hover: hover) and (any-pointer: fine) {
+ .avatar-list {
+ /* We create 1 extra cell to enable the computed
+ width to match the final visual width */
+ grid-template-columns: repeat(calc(var(--avatar-count) + 1), calc(var(--avatar-size) / 1.75));
+ }
+ }
+
+ .avatar-list li {
+ width: var(--avatar-size);
+ height: var(--avatar-size);
+ }
+
+ .avatar-list li:hover ~ li a,
+ .avatar-list li:focus-within ~ li a {
+ transform: translateX(33%);
+ }
+
+ .avatar-list img,
+ .avatar-list a {
+ display: block;
+ border-radius: 50%;
+ }
+
+ .avatar-list a {
+ transition: transform 180ms ease-in-out;
+ }
+
+ .avatar-list img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ background-color: #fff;
+ box-shadow: 0 0 0 0.05em #fff, 0 0 0 0.08em rgba(0, 0, 0, 0.15);
+ }
+
+ .avatar-list a:focus {
+ outline: 2px solid transparent;
+ /* Double-layer trick to work for dark and light backgrounds */
+ box-shadow: 0 0 0 0.08em var(--theme-accent), 0 0 0 0.12em white;
+ }
+
+ .contributors {
+ display: flex;
+ align-items: center;
+ }
+
+ .contributors > * + * {
+ margin-left: 0.75rem;
+ }
+</style>
diff --git a/smoke/docs-main/src/components/Footer/Footer.astro b/smoke/docs-main/src/components/Footer/Footer.astro
new file mode 100644
index 000000000..d13f832e5
--- /dev/null
+++ b/smoke/docs-main/src/components/Footer/Footer.astro
@@ -0,0 +1,16 @@
+---
+import AvatarList from './AvatarList.astro';
+const { path } = Astro.props;
+---
+
+<footer>
+ <AvatarList {path} />
+</footer>
+
+<style>
+ footer {
+ margin-top: auto;
+ padding: 2rem 0;
+ border-top: 3px solid var(--theme-divider);
+ }
+</style>
diff --git a/smoke/docs-main/src/components/HeadCommon.astro b/smoke/docs-main/src/components/HeadCommon.astro
new file mode 100644
index 000000000..daa39db13
--- /dev/null
+++ b/smoke/docs-main/src/components/HeadCommon.astro
@@ -0,0 +1,42 @@
+<!-- Global Metadata -->
+<meta charset="utf-8" />
+<meta name="viewport" content="width=device-width" />
+<meta name="theme-color" content="#ff5e00" />
+<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
+<link rel="alternate icon" type="image/x-icon" href="/favicon.ico" />
+<link rel="sitemap" href="/sitemap.xml" />
+
+<!-- Global CSS -->
+<link rel="stylesheet" href="/theme.css" />
+<link rel="stylesheet" href="/code.css" />
+<link rel="stylesheet" href="/index.css" />
+
+<!-- Preload Fonts -->
+<link rel="preconnect" href="https://fonts.googleapis.com" />
+<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
+<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital@0;1&display=swap" rel="stylesheet" />
+
+<!-- Scrollable a11y code helper -->
+<script type="module" src="/make-scrollable-code-focusable.js"></script>
+
+<!-- This is intentionally inlined to avoid FOUC -->
+<script>
+ const root = document.documentElement;
+ const theme = localStorage.getItem('theme');
+ if (theme === 'dark' || (!theme && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
+ root.classList.add('theme-dark');
+ } else {
+ root.classList.remove('theme-dark');
+ }
+</script>
+
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-130280175-15"></script>
+<script>
+ window.dataLayer = window.dataLayer || [];
+ function gtag() {
+ dataLayer.push(arguments);
+ }
+ gtag('js', new Date());
+ gtag('config', 'UA-130280175-15');
+</script>
diff --git a/smoke/docs-main/src/components/HeadSEO.astro b/smoke/docs-main/src/components/HeadSEO.astro
new file mode 100644
index 000000000..42f87bd59
--- /dev/null
+++ b/smoke/docs-main/src/components/HeadSEO.astro
@@ -0,0 +1,46 @@
+---
+import { SITE, OPEN_GRAPH } from '../config.ts';
+import { getLanguageFromURL } from '../util.ts';
+export interface Props {
+ content: any;
+ site: any;
+ canonicalURL: URL;
+}
+const { content = {}, canonicalURL } = Astro.props;
+const imageSrc = content?.image?.src ?? OPEN_GRAPH.image.src;
+const canonicalImageSrc = new URL(imageSrc, Astro.site);
+const imageAlt = content?.image?.alt ?? OPEN_GRAPH.image.alt;
+const lang = getLanguageFromURL(canonicalURL?.pathname || '/');
+const ogLocale = lang.replace(/-/g, '_');
+---
+
+<!-- Page Metadata -->
+<link rel="canonical" href={canonicalURL} />
+
+<!-- Algolia docsearch language facet -->
+<meta name="docsearch:language" content={lang} />
+
+<!-- OpenGraph Tags -->
+<meta property="og:title" content={content.title ?? SITE.title} />
+<meta property="og:type" content="article" />
+<meta property="og:url" content={canonicalURL} />
+<meta property="og:locale" content={ogLocale} />
+<meta property="og:image" content={canonicalImageSrc} />
+<meta property="og:image:alt" content={imageAlt} />
+<meta name="description" property="og:description" content={content.description ? content.description : SITE.description} />
+<meta property="og:site_name" content={SITE.title} />
+
+<!-- Twitter Tags -->
+<meta name="twitter:card" content="summary_large_image" />
+<meta name="twitter:site" content={OPEN_GRAPH.twitter} />
+<meta name="twitter:title" content={content.title ?? SITE.title} />
+<meta name="twitter:description" content={content.description ? content.description : SITE.description} />
+<meta name="twitter:image" content={canonicalImageSrc} />
+<meta name="twitter:image:alt" content={imageAlt} />
+
+<!--
+ TODO: Add json+ld data, maybe https://schema.org/APIReference makes sense?
+ Docs: https://developers.google.com/search/docs/advanced/structured-data/intro-structured-data
+ https://www.npmjs.com/package/schema-dts seems like a great resource for implementing this.
+ Even better, there’s a React component that integrates with `schema-dts`: https://github.com/google/react-schemaorg
+-->
diff --git a/smoke/docs-main/src/components/Header/AstroLogo.astro b/smoke/docs-main/src/components/Header/AstroLogo.astro
new file mode 100644
index 000000000..49daa3c4b
--- /dev/null
+++ b/smoke/docs-main/src/components/Header/AstroLogo.astro
@@ -0,0 +1,29 @@
+---
+const { size } = Astro.props;
+---
+
+<svg class="logo" width={size} height={size} viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <style>
+ #flame {
+ /* fill: #ff5d01; */
+ fill: #3894ff;
+ }
+ #a {
+ /* fill: #000014; */
+ fill: #3894ff;
+ }
+ </style>
+ <title>Logo</title>
+ <path
+ id="a"
+ fill-rule="evenodd"
+ clip-rule="evenodd"
+ d="M163.008 18.929c1.944 2.413 2.935 5.67 4.917 12.181l43.309 142.27a180.277 180.277 0 00-51.778-17.53l-28.198-95.29a3.67 3.67 0 00-7.042.01l-27.857 95.232a180.225 180.225 0 00-52.01 17.557l43.52-142.281c1.99-6.502 2.983-9.752 4.927-12.16a15.999 15.999 0 016.484-4.798c2.872-1.154 6.271-1.154 13.07-1.154h31.085c6.807 0 10.211 0 13.086 1.157a16.004 16.004 0 016.487 4.806z"
+ ></path>
+ <path
+ id="flame"
+ fill-rule="evenodd"
+ clip-rule="evenodd"
+ d="M168.19 180.151c-7.139 6.105-21.39 10.268-37.804 10.268-20.147 0-37.033-6.272-41.513-14.707-1.602 4.835-1.961 10.367-1.961 13.902 0 0-1.056 17.355 11.015 29.426 0-6.268 5.081-11.349 11.349-11.349 10.743 0 10.731 9.373 10.721 16.977v.679c0 11.542 7.054 21.436 17.086 25.606a23.27 23.27 0 01-2.339-10.2c0-11.008 6.463-15.107 13.974-19.87 5.976-3.79 12.616-8.001 17.192-16.449a31.024 31.024 0 003.743-14.82c0-3.299-.513-6.479-1.463-9.463z"
+ ></path>
+</svg>
diff --git a/smoke/docs-main/src/components/Header/Header.astro b/smoke/docs-main/src/components/Header/Header.astro
new file mode 100644
index 000000000..9bcf89ca7
--- /dev/null
+++ b/smoke/docs-main/src/components/Header/Header.astro
@@ -0,0 +1,172 @@
+---
+import SkipToContent from './SkipToContent.astro';
+import SidebarToggle from './SidebarToggle.tsx';
+import LanguageSelect from './LanguageSelect.tsx';
+import Search from './Search.tsx';
+import { getLanguageFromURL } from '../../util.ts';
+const { currentPage } = Astro.props;
+const lang = currentPage && getLanguageFromURL(currentPage);
+---
+
+<header>
+ <SkipToContent />
+ <nav class="nav-wrapper" title="Top Navigation">
+ <div class="menu-toggle">
+ <SidebarToggle client:idle />
+ </div>
+ <div class="logo flex">
+ <a href="https://astro.build/">
+ <h1 class="sr-only">Astro</h1>
+ <svg xmlns="http://www.w3.org/2000/svg" width="363" height="102" viewBox="0 0 363 102" fill="none">
+ <style>
+ .text {
+ fill: var(--theme-text);
+ }
+ .hover {
+ fill: var(--theme-accent);
+ }
+ </style>
+ <path
+ class="text"
+ fill-rule="evenodd"
+ d="M55.07 14.216l16.81 54.865a72.6 72.6 0 00-20.765-6.984L39.808 24.135a1.475 1.475 0 00-2.827.005L25.81 62.078a72.598 72.598 0 00-20.859 6.995L21.847 14.2c.998-3.243 1.497-4.865 2.47-6.066a8 8 0 013.239-2.392c1.434-.576 3.13-.576 6.524-.576h8.751c3.398 0 5.097 0 6.532.577a8 8 0 013.241 2.397c.972 1.203 1.47 2.827 2.465 6.076z"
+ clip-rule="evenodd"></path>
+ <path
+ fill="#FF5D01"
+ fill-rule="evenodd"
+ d="M54.618 71.779c-2.863 2.432-8.578 4.091-15.161 4.091-8.08 0-14.852-2.499-16.649-5.86-.642 1.926-.786 4.13-.786 5.539 0 0-.423 6.915 4.418 11.725 0-2.498 2.037-4.522 4.551-4.522 4.309 0 4.304 3.734 4.3 6.764v.27c0 4.6 2.829 8.541 6.852 10.203a9.22 9.22 0 01-.938-4.064c0-4.386 2.592-6.02 5.604-7.917 2.396-1.51 5.06-3.188 6.894-6.554a12.297 12.297 0 001.502-5.905c0-1.314-.206-2.581-.587-3.77z"
+ clip-rule="evenodd"></path>
+ <path
+ class="text"
+ d="M126.554 69c13.115 0 21.047-3.14 25.68-9.654 0 2.904.157 5.651.55 8.163h7.774c-.706-4.082-.863-6.75-.863-14.128V43.334c0-10.831-8.403-16.56-24.424-16.56-15.47 0-25.522 5.964-26.779 14.598h8.246c1.256-5.808 7.774-8.87 18.533-8.87 10.602 0 16.885 3.69 16.885 9.969v.785l-24.502 1.413c-9.974.549-13.665 1.962-16.492 4.003-2.67 1.962-4.162 5.023-4.162 8.555C107 64.683 114.696 69 126.554 69zm2.513-5.573c-9.109 0-14.135-2.119-14.135-6.357 0-4.553 3.141-6.593 14.214-7.3l23.01-1.412v1.805c0 8.241-9.66 13.264-23.089 13.264zM196.086 69c16.256 0 22.775-5.337 22.775-13.108 0-6.436-4.006-9.732-14.215-10.596l-19.083-1.49c-5.183-.393-8.088-1.884-8.088-5.102 0-4.082 4.476-6.201 14.135-6.201 10.995 0 16.727 2.198 20.497 7.064l6.361-3.061c-3.927-6.122-12.644-9.733-26.151-9.733-13.9 0-22.224 4.631-22.224 12.244 0 6.829 4.947 10.125 14.292 10.91l18.926 1.492c6.204.47 8.089 1.726 8.089 4.944 0 4.631-4.79 6.829-14.293 6.829-11.544 0-18.847-3.14-22.381-8.87l-6.204 3.376C173.312 64.918 181.715 69 196.086 69zM234.929 34.151v18.916c0 7.77 2.67 15.54 17.198 15.54 3.691 0 8.167-.706 10.131-1.57V60.68c-2.749.628-6.047 1.1-9.267 1.1-6.832 0-10.523-2.67-10.523-9.42V34.151h19.633v-5.887h-19.633V15l-7.539 3.061v10.204h-12.33v5.886h12.33zM280.823 28.265h-6.911v39.244h7.461V52.83c0-5.65 1.099-10.439 4.24-13.735 2.749-3.061 6.283-4.788 12.487-4.788 2.12 0 3.455.157 5.262.471v-7.22c-1.65-.393-3.063-.472-5.184-.472-8.402 0-15.078 4.945-17.355 12.558v-11.38zM334.807 69C351.534 69 363 60.523 363 47.887c0-12.637-11.466-21.114-28.193-21.114-16.727 0-28.193 8.477-28.193 21.114C306.614 60.523 318.08 69 334.807 69zm0-6.2c-12.329 0-20.261-5.809-20.261-14.913 0-9.105 7.932-14.913 20.261-14.913 12.251 0 20.261 5.808 20.261 14.913 0 9.104-8.01 14.912-20.261 14.912z"
+ ></path>
+ </svg>
+ </a>
+ <a href="https://docs.astro.build/">
+ <h1 class="sr-only">Docs</h1>
+ <svg xmlns="http://www.w3.org/2000/svg" width="226" height="102" viewBox="0 0 226 102" fill="none">
+ <path
+ fill="currentColor"
+ d="M25.805 68c14.688 0 24.883-8.41 24.883-21.14 0-12.786-9.62-19.756-24.653-19.756H0V68h25.805zm-14.17-33.005H24.25c8.352 0 14.17 4.09 14.17 12.039 0 8.236-5.3 13.075-14.113 13.075H11.635V34.995zM82.673 69.382c16.704 0 27.418-8.582 27.418-21.83 0-13.248-10.771-21.83-27.418-21.83-16.589 0-27.418 8.582-27.418 21.83 0 13.19 10.83 21.83 27.418 21.83zm0-8.64c-9.1 0-15.149-5.299-15.149-13.19 0-7.891 6.048-13.19 15.15-13.19 9.1 0 15.205 5.299 15.205 13.19 0 7.891-6.105 13.19-15.206 13.19zM141.497 69.382c13.306 0 22.637-5.299 25.978-14.572l-11.866-2.535c-1.67 5.415-6.393 8.295-13.709 8.295-9.216 0-15.033-5.127-15.033-13.018 0-8.006 5.702-13.018 14.918-13.018 7.43 0 12.154 3.053 13.709 8.64l12.038-2.13c-2.707-9.562-12.268-15.322-25.574-15.322-16.128 0-27.302 9.043-27.302 22.003 0 13.133 10.425 21.657 26.841 21.657zM194.94 69.382c14.745 0 23.212-5.01 23.212-14.054 0-7.603-4.665-10.944-15.955-12.096l-11.289-1.094c-5.242-.576-6.97-1.556-6.97-4.09 0-2.765 3.456-4.262 9.792-4.262 7.834 0 13.709 2.476 16.762 6.508l7.315-6.163c-5.069-5.702-13.133-8.41-23.501-8.41-13.997 0-21.888 4.781-21.888 12.903 0 7.546 4.781 11.232 14.803 12.326l12.557 1.383c4.896.518 6.624 1.555 6.624 4.09 0 3.225-3.456 4.723-10.886 4.723-8.352 0-14.688-3.226-18.087-8.007l-8.294 5.818c4.205 6.451 13.709 10.425 25.805 10.425z"
+ ></path>
+ </svg>
+ </a>
+ </div>
+ <div style="flex-grow: 1;"></div>
+ {lang && <LanguageSelect lang={lang} client:idle />}
+ <div class="search-item"><Search {lang} client:idle /></div>
+ </nav>
+</header>
+
+<style>
+ header {
+ z-index: 11;
+ height: var(--theme-navbar-height);
+ width: 100%;
+ background-color: var(--theme-navbar-bg);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+ position: sticky;
+ top: 0;
+ }
+
+ .logo {
+ direction: ltr;
+ display: flex;
+ overflow: hidden;
+ width: 30px;
+ font-size: 1rem;
+ flex-shrink: 0;
+ font-weight: 600;
+ line-height: 1;
+ color: hsla(var(--color-base-white), 100%, 1);
+ text-decoration: none;
+ gap: 0.5em;
+ z-index: -1;
+ }
+
+ .logo a {
+ padding: 0.5em 0.25em;
+ margin: -0.5em -0.25em;
+ }
+
+ .logo svg {
+ height: 40px;
+ width: auto;
+ display: block;
+ color: var(--theme-accent);
+ }
+
+ .logo .hover {
+ opacity: 0;
+ }
+ .logo a {
+ transition: transform 180ms ease-out;
+ }
+
+ .logo a:hover,
+ .logo a:focus {
+ outline: none;
+ opacity: 1;
+ transform: translateY(-2px);
+ }
+
+ .logo h1 {
+ font: inherit;
+ color: inherit;
+ margin: 0;
+ }
+
+ .nav-wrapper {
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ gap: 1em;
+ width: 100%;
+ max-width: 82em;
+ padding: 0 1rem;
+ }
+ @media (min-width: 50em) {
+ header {
+ position: static;
+ padding: 2rem 0rem 0 2rem;
+ }
+ .logo {
+ width: auto;
+ margin: 0;
+ z-index: 0;
+ }
+ .menu-toggle {
+ display: none;
+ }
+ .logo {
+ width: auto;
+ }
+ }
+
+ /** Style Algolia */
+ :root {
+ --docsearch-primary-color: var(--theme-accent);
+ --docsearch-logo-color: var(--theme-text);
+ }
+
+ .search-item {
+ display: none;
+ position: relative;
+ z-index: 10;
+ flex-grow: 1;
+ padding-right: 0.7rem;
+ display: flex;
+ max-width: 200px;
+ }
+ :global(.search-item > *) {
+ flex-grow: 1;
+ }
+ @media (min-width: 50em) {
+ .search-item {
+ max-width: 400px;
+ }
+ }
+</style>
diff --git a/smoke/docs-main/src/components/Header/LanguageSelect.css b/smoke/docs-main/src/components/Header/LanguageSelect.css
new file mode 100644
index 000000000..4c6cf6123
--- /dev/null
+++ b/smoke/docs-main/src/components/Header/LanguageSelect.css
@@ -0,0 +1,50 @@
+.language-select {
+ flex-grow: 1;
+ width: 48px;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0.33em 2rem;
+ overflow: visible;
+ font-weight: 500;
+ font-size: 1rem;
+ font-family: inherit;
+ line-height: inherit;
+ background-color: var(--theme-bg);
+ border-color: var(--theme-text-lighter);
+ color: var(--theme-text-light);
+ border-style: solid;
+ border-width: 1px;
+ border-radius: 0.25rem;
+ outline: 0;
+ cursor: pointer;
+ transition-timing-function: ease-out;
+ transition-duration: 0.2s;
+ transition-property: border-color, color;
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
+ background-position: 97%;
+ background-repeat: no-repeat;
+ background-size: 1.5em 1.5em;
+ -webkit-font-smoothing: antialiased;
+ -webkit-appearance: none;
+}
+.language-select-wrapper .language-select:hover,
+.language-select-wrapper .language-select:focus {
+ color: var(--theme-text);
+ border-color: var(--theme-text-light);
+}
+.language-select-wrapper {
+ color: var(--theme-text-light);
+ position: relative;
+}
+.language-select-wrapper > svg {
+ position: absolute;
+ top: 8px;
+ left: 8px;
+ pointer-events: none;
+}
+
+@media (min-width: 50em) {
+ .language-select {
+ width: 100%;
+ }
+}
diff --git a/smoke/docs-main/src/components/Header/LanguageSelect.tsx b/smoke/docs-main/src/components/Header/LanguageSelect.tsx
new file mode 100644
index 000000000..8e179c481
--- /dev/null
+++ b/smoke/docs-main/src/components/Header/LanguageSelect.tsx
@@ -0,0 +1,97 @@
+import type { FunctionalComponent } from 'preact';
+import { h } from 'preact';
+import './LanguageSelect.css';
+
+const LanguageSelect: FunctionalComponent<{ lang: string }> = ({ lang }) => {
+ return (
+ <div class="language-select-wrapper">
+ <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 88.6 77.3" height="1.2em" width="1.2em">
+ <path fill="currentColor" d="M61,24.6h7.9l18.7,51.6h-7.7l-5.4-15.5H54.3l-5.6,15.5h-7.2L61,24.6z M72.6,55l-8-22.8L56.3,55H72.6z" />
+ <path
+ fill="currentColor"
+ d="M53.6,60.6c-10-4-16-9-22-14c0,0,1.3,1.3,0,0c-6,5-20,13-20,13l-4-6c8-5,10-6,19-13c-2.1-1.9-12-13-13-19h8 c4,9,10,14,10,14c10-8,10-19,10-19h8c0,0-1,13-12,24l0,0c5,5,10,9,19,13L53.6,60.6z M1.6,16.6h56v-8h-23v-7h-9v7h-24V16.6z"
+ />
+ </svg>
+ <select
+ class="language-select"
+ value={lang}
+ aria-label="Select language"
+ onChange={(e) => {
+ const newLang = e.target.value;
+ window.location.pathname = `/${newLang}/getting-started`;
+ // TODO: Preserve the current page, if it exists:
+ // const oldPathname = window.location.pathname;
+ // const oldPathnameParts = oldPathname.split('/');
+ // oldPathnameParts.shift();
+ // if (/^[a-z]{2}$/.test(oldPathnameParts[0])) {
+ // oldPathnameParts.shift();
+ // }
+ // if (newLang !== 'en') {
+ // oldPathnameParts.unshift(newLang);
+ // }
+ // window.location.pathname = '/' + oldPathnameParts.join('/');
+ }}
+ >
+ <option value="en">
+ <span>English</span>
+ </option>
+ <option value="de">
+ <span>Deutsch</span>
+ </option>
+ <option value="nl">
+ <span>Nederlands</span>
+ </option>
+ <option value="pt-br">
+ <span>Português do Brasil</span>
+ </option>
+ <option value="fi">
+ <span>Suomi</span>
+ </option>
+ <option value="es">
+ <span>Español</span>
+ </option>
+ <option value="zh-CN">
+ <span>简体中文</span>
+ </option>
+ <option value="zh-TW">
+ <span>正體中文</span>
+ </option>
+ <option value="bg">
+ <span>Български</span>
+ </option>
+ <option value="fr">
+ <span>Français</span>
+ </option>
+ <option value="bn">
+ <span>বাংলা</span>
+ </option>
+ <option value="kr">
+ <span>한국어</span>
+ </option>
+ <option value="ar">
+ <span>العربية</span>
+ </option>
+ <option value="da">
+ <span>Dansk</span>
+ </option>
+ <option value="ja">
+ <span>日本語</span>
+ </option>
+ <option value="ru">
+ <span>Русский</span>
+ </option>
+ <option value="it">
+ <span>Italiano</span>
+ </option>
+ <option value="pl">
+ <span>Polish</span>
+ </option>
+ <option value="hu">
+ <span>Hungarian</span>
+ </option>
+ </select>
+ </div>
+ );
+};
+
+export default LanguageSelect;
diff --git a/smoke/docs-main/src/components/Header/Search.css b/smoke/docs-main/src/components/Header/Search.css
new file mode 100644
index 000000000..42da3832c
--- /dev/null
+++ b/smoke/docs-main/src/components/Header/Search.css
@@ -0,0 +1,75 @@
+/** Style Algolia */
+:root {
+ --docsearch-primary-color: var(--theme-accent);
+ --docsearch-logo-color: var(--theme-text);
+}
+
+.DocSearch-Modal .DocSearch-Hit a {
+ box-shadow: none;
+ border: 1px solid var(--theme-accent);
+}
+
+/** Style Search Bar */
+.search-placeholder {
+ flex-grow: 1;
+ text-align: initial;
+}
+.search-input {
+ flex-grow: 1;
+ box-sizing: border-box;
+ width: 100%;
+ margin: 0;
+ padding: 0.33em 0.5em;
+ overflow: visible;
+ font-weight: 500;
+ font-size: 1rem;
+ font-family: inherit;
+ line-height: inherit;
+ background-color: var(--theme-divider);
+ border-color: var(--theme-divider);
+ color: var(--theme-text-light);
+ border-style: solid;
+ border-width: 1px;
+ border-radius: 0.25rem;
+ outline: 0;
+ cursor: pointer;
+ transition-timing-function: ease-out;
+ transition-duration: 0.2s;
+ transition-property: border-color, color;
+ -webkit-font-smoothing: antialiased;
+}
+.search-input:hover,
+.search-input:focus {
+ color: var(--theme-text);
+ border-color: var(--theme-text-light);
+}
+.search-input:hover::placeholder,
+.search-input:focus::placeholder {
+ color: var(--theme-text-light);
+}
+.search-input::placeholder {
+ color: var(--theme-text-light);
+}
+.search-hint {
+ padding: 3px 5px;
+ display: none;
+ display: none;
+ align-items: center;
+ justify-content: center;
+ letter-spacing: 0.125em;
+ font-size: 13px;
+ font-family: var(--font-mono);
+ pointer-events: none;
+ border-color: var(--theme-text-lighter);
+ color: var(--theme-text-light);
+ border-style: solid;
+ border-width: 1px;
+ border-radius: 0.25rem;
+ line-height: 14px;
+}
+
+@media (min-width: 50em) {
+ .search-hint {
+ display: flex;
+ }
+}
diff --git a/smoke/docs-main/src/components/Header/Search.tsx b/smoke/docs-main/src/components/Header/Search.tsx
new file mode 100644
index 000000000..c4fd6f984
--- /dev/null
+++ b/smoke/docs-main/src/components/Header/Search.tsx
@@ -0,0 +1,82 @@
+/* jsxImportSource: react */
+import { useState, useCallback, useRef } from 'react';
+import { createPortal } from 'react-dom';
+import * as docsearch from '@docsearch/react';
+import '@docsearch/css/dist/style.css';
+import './Search.css';
+
+const { DocSearchModal, useDocSearchKeyboardEvents } = (docsearch as unknown as { default: typeof docsearch }).default || docsearch;
+
+export default function Search(props) {
+ const [isOpen, setIsOpen] = useState(false);
+ const searchButtonRef = useRef();
+ const [initialQuery, setInitialQuery] = useState(null);
+ const { lang = 'en' } = props;
+
+ const onOpen = useCallback(() => {
+ setIsOpen(true);
+ }, [setIsOpen]);
+
+ const onClose = useCallback(() => {
+ setIsOpen(false);
+ }, [setIsOpen]);
+
+ const onInput = useCallback(
+ (e) => {
+ setIsOpen(true);
+ setInitialQuery(e.key);
+ },
+ [setIsOpen, setInitialQuery]
+ );
+
+ useDocSearchKeyboardEvents({
+ isOpen,
+ onOpen,
+ onClose,
+ onInput,
+ searchButtonRef,
+ });
+
+ return (
+ <>
+ <button type="button" ref={searchButtonRef} onClick={onOpen} className="search-input">
+ <svg width="24" height="24" fill="none">
+ <path d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
+ </svg>
+ <span className="search-placeholder">Search</span>
+ <span className="search-hint">
+ <span className="sr-only">Press </span>
+ <kbd>/</kbd>
+ <span className="sr-only"> to search</span>
+ </span>
+ </button>
+ {isOpen &&
+ createPortal(
+ <DocSearchModal
+ initialQuery={initialQuery}
+ initialScrollY={window.scrollY}
+ onClose={onClose}
+ indexName="astro"
+ appId='7AFBU8EPJU'
+ apiKey="4440670147c44d744fd8da35ff652518"
+ searchParameters={{ facetFilters: [[`lang:${lang}`]] }}
+ getMissingResultsUrl={({ query }) => `https://github.com/withastro/docs/issues/new?title=Missing+results+for+query+%22${encodeURIComponent(query)}%22`}
+ transformItems={(items) => {
+ return items.map((item) => {
+ // We transform the absolute URL into a relative URL to
+ // work better on localhost, preview URLS.
+ const a = document.createElement('a');
+ a.href = item.url;
+ const hash = a.hash === '#overview' ? '' : a.hash;
+ return {
+ ...item,
+ url: `${a.pathname}${hash}`,
+ };
+ });
+ }}
+ />,
+ document.body
+ )}
+ </>
+ );
+}
diff --git a/smoke/docs-main/src/components/Header/SidebarToggle.tsx b/smoke/docs-main/src/components/Header/SidebarToggle.tsx
new file mode 100644
index 000000000..90b180461
--- /dev/null
+++ b/smoke/docs-main/src/components/Header/SidebarToggle.tsx
@@ -0,0 +1,27 @@
+import type { FunctionalComponent } from 'preact';
+import { h, Fragment } from 'preact';
+import { useState, useEffect } from 'preact/hooks';
+
+const MenuToggle: FunctionalComponent = () => {
+ const [sidebarShown, setSidebarShown] = useState(false);
+
+ useEffect(() => {
+ const body = document.getElementsByTagName('body')[0];
+ if (sidebarShown) {
+ body.classList.add('mobile-sidebar-toggle');
+ } else {
+ body.classList.remove('mobile-sidebar-toggle');
+ }
+ }, [sidebarShown]);
+
+ return (
+ <button type="button" aria-pressed={sidebarShown ? 'true' : 'false'} id="menu-toggle" onClick={() => setSidebarShown(!sidebarShown)}>
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="none" viewBox="0 0 24 24" stroke="currentColor">
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
+ </svg>
+ <span className="sr-only">Toggle sidebar</span>
+ </button>
+ );
+};
+
+export default MenuToggle;
diff --git a/smoke/docs-main/src/components/Header/SkipToContent.astro b/smoke/docs-main/src/components/Header/SkipToContent.astro
new file mode 100644
index 000000000..9e3844e6f
--- /dev/null
+++ b/smoke/docs-main/src/components/Header/SkipToContent.astro
@@ -0,0 +1,22 @@
+<a href="#article" class="sr-only focus:not-sr-only skiplink"><span>Skip to Content</span></a>
+
+<style>
+ .skiplink,
+ .skiplink:focus,
+ .skiplink:focus-visible {
+ position: absolute;
+ padding: 0.25em;
+ font-size: larger;
+ top: 0;
+ left: 0;
+ right: 0;
+ z-index: 9;
+ display: block;
+ text-align: center;
+ background-color: var(--theme-text-accent);
+ color: var(--theme-bg);
+ border-radius: 0.25em;
+ outline: var(--theme-bg) solid 1px;
+ outline-offset: 0;
+ }
+</style>
diff --git a/smoke/docs-main/src/components/LeftSidebar/LeftSidebar.astro b/smoke/docs-main/src/components/LeftSidebar/LeftSidebar.astro
new file mode 100644
index 000000000..66963e34e
--- /dev/null
+++ b/smoke/docs-main/src/components/LeftSidebar/LeftSidebar.astro
@@ -0,0 +1,170 @@
+---
+import { SIDEBAR } from '../../config.ts';
+import { getLanguageFromURL, removeLeadingSlash, removeTrailingSlash } from '../../util.ts';
+const { currentPage } = Astro.props;
+
+// Get the slug w/o a leading or trailing slash
+const currentPageMatch = removeLeadingSlash(removeTrailingSlash(currentPage));
+const langCode = getLanguageFromURL(currentPage);
+// SIDEBAR is a flat array. Group it by sections to properly render.
+const sidebarSections = SIDEBAR[langCode].reduce((col, item) => {
+ if (item.header) {
+ col.push({ ...item, children: [] });
+ } else {
+ col[col.length - 1].children.push(item);
+ }
+ return col;
+}, []);
+---
+
+<nav aria-labelledby="grid-left">
+ <ul class="nav-groups">
+ <li>
+ <div class="nav-group">
+ <h2 class="sponsors-title">Sponsored by</h2>
+ <div class="sponsors">
+ <a href="https://www.netlify.com/" aria-label="Go to Netlify website">
+ <svg class="sponsor-logo__netlify" viewBox="0 0 147 40" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+ ><radialGradient
+ id="netlify-gradient"
+ cx="-779.0521"
+ cy="1839.7205"
+ gradientTransform="matrix(0 38.301 44.1228 0 -81154.2578 29839.2441)"
+ gradientUnits="userSpaceOnUse"
+ r="1.0011"><stop offset="0" stop-color="#20c6b7"></stop><stop offset="1" stop-color="#4d9abf"></stop></radialGradient
+ ><path
+ clip-rule="evenodd"
+ d="m53.37 12.98.12 2.2c1.4-1.7 3.24-2.55 5.53-2.55 3.95 0 5.96 2.27 6.03 6.8v12.57h-4.26v-12.32c0-1.21-.26-2.1-.78-2.68s-1.37-.87-2.55-.87c-1.72 0-3 .78-3.84 2.34v13.53h-4.26v-19.02zm24.38 19.37c-2.7 0-4.89-.85-6.57-2.56-1.68-1.7-2.52-3.98-2.52-6.81v-.53c0-1.9.36-3.59 1.1-5.09.73-1.49 1.76-2.66 3.08-3.49s2.79-1.25 4.42-1.25c2.58 0 4.58.83 5.99 2.48s2.11 3.99 2.11 7.01v1.72h-12.4c.13 1.57.65 2.81 1.57 3.73s2.07 1.37 3.46 1.37c1.95 0 3.54-.79 4.77-2.37l2.3 2.2c-.76 1.14-1.77 2.02-3.04 2.65s-2.69.94-4.27.94zm-.51-16.29c-1.17 0-2.11.41-2.83 1.23s-1.18 1.96-1.38 3.43h8.12v-.32c-.09-1.43-.47-2.51-1.14-3.24-.67-.74-1.59-1.1-2.77-1.1zm16.76-7.7v4.62h3.35v3.16h-3.35v10.62c0 .73.14 1.25.43 1.57s.8.48 1.54.48c.5 0 1-.06 1.49-.18v3.31c-.97.27-1.9.4-2.81.4-3.27 0-4.91-1.81-4.91-5.43v-10.77h-3.12v-3.16h3.12v-4.63zm11.14 23.64h-4.26v-27h4.26zm9.17 0h-4.26v-19.02h4.26zm-4.52-23.96c0-.65.21-1.2.62-1.63.42-.43 1.01-.65 1.78-.65s1.37.22 1.79.65.63.98.63 1.64c0 .64-.21 1.18-.63 1.61s-1.02.64-1.79.64-1.36-.21-1.78-.64c-.41-.44-.62-.98-.62-1.62zm10.66 23.96v-15.86h-2.89v-3.16h2.89v-1.74c0-2.11.58-3.74 1.75-4.89s2.81-1.72 4.91-1.72c.75 0 1.54.11 2.39.32l-.1 3.34c-.54-.1-1.08-.15-1.63-.14-2.04 0-3.05 1.05-3.05 3.15v1.69h3.86v3.16h-3.86v15.85zm17.87-6.12 3.86-12.9h4.54l-7.54 21.9c-1.16 3.2-3.12 4.8-5.89 4.8-.62 0-1.3-.11-2.05-.32v-3.31l.81.05c1.07 0 1.88-.2 2.43-.59.54-.39.97-1.05 1.29-1.98l.61-1.64-6.66-18.93h4.6z"
+ fill-rule="evenodd"></path><path
+ d="m27.89 14.14-.01-.01c-.01 0-.02-.01-.02-.01-.02-.02-.03-.06-.03-.09l.77-4.73 3.62 3.63-3.77 1.6c-.01 0-.02.01-.03.01h-.02s-.01-.01-.02-.02c-.14-.16-.31-.29-.49-.38zm5.26-.29 3.88 3.88c.81.81 1.21 1.21 1.35 1.67.02.07.04.14.05.21l-9.26-3.92s-.01 0-.01-.01c-.04-.02-.08-.03-.08-.07s.04-.06.08-.07l.01-.01zm5.12 7c-.2.38-.59.77-1.25 1.43l-4.37 4.37-5.65-1.18-.03-.01c-.05-.01-.1-.02-.1-.06-.04-.47-.28-.9-.66-1.19-.02-.02-.02-.06-.01-.09v-.01l1.06-6.53v-.02c.01-.05.01-.11.06-.11.46-.06.88-.3 1.16-.67.01-.01.01-.02.03-.03.03-.01.07 0 .1.01zm-6.62 6.8-7.19 7.19 1.23-7.56v-.01c0-.01 0-.02.01-.03.01-.02.04-.03.06-.04h.01c.27-.11.51-.29.69-.52.02-.03.05-.06.09-.06h.03zm-8.71 8.71-.81.81-8.95-12.94s-.01-.01-.01-.01c-.01-.02-.03-.04-.03-.06s.01-.03.02-.04l.01-.01c.03-.04.05-.08.07-.12l.02-.03c.01-.02.03-.05.05-.06s.05-.01.07 0l9.92 2.05c.03 0 .05.02.08.03.01.01.02.03.02.04.14.53.52.97 1.03 1.17.03.01.02.05 0 .08-.01.01-.01.03-.01.05-.12.74-1.19 7.27-1.48 9.04zm-1.69 1.69c-.6.59-.95.9-1.35 1.03-.39.12-.81.12-1.21 0-.47-.15-.87-.55-1.67-1.36l-8.99-8.99 2.35-3.64c.01-.02.02-.03.04-.05s.06-.01.09 0c.54.16 1.12.13 1.64-.08.03-.01.05-.02.07 0l.03.03zm-14.09-10.19-2.06-2.06 4.07-1.74c.01 0 .02-.01.03-.01.03 0 .05.03.07.07.04.06.08.12.13.18l.01.02c.01.02 0 .03-.01.05zm-2.98-2.97-2.61-2.61c-.44-.44-.77-.77-.99-1.04l7.94 1.65h.03c.05.01.1.02.1.06 0 .05-.06.07-.11.09l-.02.01zm-4.05-5c.01-.17.04-.33.09-.5.15-.47.55-.87 1.36-1.67l3.34-3.34c1.54 2.23 3.08 4.46 4.63 6.69.03.04.06.08.03.11-.15.16-.29.34-.4.53-.01.02-.03.05-.05.06-.01.01-.03 0-.04 0zm5.68-6.4 4.49-4.49c.42.19 1.96.83 3.33 1.41 1.04.44 1.99.84 2.29.97.03.01.06.02.07.05.01.02 0 .04 0 .06-.14.66.05 1.35.52 1.83.03.03 0 .07-.03.11l-.01.02-4.56 7.06c-.01.02-.02.04-.04.05s-.06.01-.09 0c-.18-.05-.36-.07-.54-.07-.16 0-.34.03-.52.06-.02 0-.04.01-.05 0-.02-.01-.03-.03-.05-.05zm5.4-5.4 5.81-5.81c.81-.81 1.21-1.21 1.67-1.36.39-.12.81-.12 1.21 0 .47.15.87.55 1.67 1.36l1.26 1.26-4.14 6.4c-.01.02-.02.03-.04.05s-.06.01-.09 0c-.66-.2-1.38-.06-1.92.37-.03.03-.07.01-.1 0-.53-.24-4.73-2.01-5.33-2.27zm12.5-3.67 3.82 3.82-.92 5.7v.02c0 .01 0 .03-.01.04-.01.02-.03.02-.05.03-.2.06-.38.15-.55.27-.01.01-.01.01-.02.02s-.02.02-.04.02c-.01 0-.03 0-.04-.01l-5.82-2.47-.01-.01c-.04-.02-.08-.03-.08-.07-.03-.32-.14-.64-.31-.91-.03-.05-.06-.09-.03-.14zm-3.93 8.6 5.45 2.31c.03.01.06.03.08.06.01.02.01.04 0 .06-.02.08-.03.17-.03.26v.15c0 .04-.04.05-.08.07h-.01c-.86.37-12.13 5.17-12.15 5.17s-.03 0-.05-.02c-.03-.03 0-.07.03-.11 0-.01.01-.01.01-.02l4.48-6.94.01-.01c.03-.04.06-.09.1-.09l.05.01c.1.01.19.03.28.03.68 0 1.31-.33 1.69-.9.01-.02.02-.03.03-.04.04-.01.08 0 .11.01zm-6.25 9.19 12.28-5.24s.02 0 .03.02c.07.07.12.11.18.15l.03.02c.02.01.05.03.05.06v.02l-1.05 6.46v.03c-.01.05-.01.11-.06.11-.57.04-1.08.36-1.37.85v.01c-.01.02-.03.05-.05.06s-.05.01-.07 0l-9.79-2.02c-.02-.02-.16-.53-.18-.53z"
+ fill="url(#netlify-gradient)"></path></svg
+ >
+ </a>
+ </div>
+ </div>
+ </li>
+ {sidebarSections.map((section) => (
+ <li>
+ <div class="nav-group">
+ <h2 class="nav-group-title">{section.text}</h2>
+ <ul>
+ {section.children.map((child) => (
+ <li class="nav-link">
+ <a href={`${Astro.site.pathname}${child.link}`} aria-current={`${currentPageMatch === child.link ? 'page' : 'false'}`}>
+ {child.text}
+ </a>
+ </li>
+ ))}
+ </ul>
+ </div>
+ </li>
+ ))}
+ </ul>
+</nav>
+
+<script>
+ window.addEventListener('DOMContentLoaded', (event) => {
+ var target = document.querySelector('[aria-current="page"]');
+ if (target && target.offsetTop > window.innerHeight - 100) {
+ document.querySelector('.nav-groups').scrollTop = target.offsetTop;
+ }
+ });
+</script>
+
+<style lang="scss">
+ nav {
+ width: 100%;
+ margin-right: 1rem;
+ }
+ .nav-groups {
+ height: 100%;
+ padding: 2rem 0;
+ overflow-x: visible;
+ overflow-y: auto;
+ max-height: 100vh;
+
+ > li + li {
+ margin-top: 1.75rem;
+ }
+
+ > :first-child {
+ padding-top: var(--doc-padding);
+ }
+
+ > :last-child {
+ padding-bottom: 2rem;
+ margin-bottom: var(--theme-navbar-height);
+ }
+
+ @media (min-width: 50em) {
+ padding: 0;
+ }
+ }
+
+ .nav-group-title {
+ font-size: 1rem;
+ font-weight: 700;
+ padding: 0.1rem 1rem;
+ text-transform: uppercase;
+ margin-bottom: 0.5rem;
+ }
+
+ .nav-link a {
+ font-size: 1rem;
+ margin: 1px;
+ padding: 0.3rem 1rem;
+ font: inherit;
+ color: inherit;
+ text-decoration: none;
+ display: block;
+
+ &:hover,
+ &:focus {
+ background-color: var(--theme-bg-hover);
+ }
+
+ &[aria-current='page'] {
+ color: var(--theme-text-accent);
+ background-color: var(--theme-bg-accent);
+ font-weight: 600;
+ }
+ }
+
+ :global(:root.theme-dark) .nav-link a[aria-current='page'] {
+ color: hsla(var(--color-base-white), 100%, 1);
+ }
+
+ .sponsors {
+ display: grid;
+ padding-left: 1rem;
+ padding-top: 0.25rem;
+ margin-bottom: -0.375rem; // logo overshoot creates extra perceived space
+ grid-gap: 0.5rem;
+ grid-template-columns: repeat(auto-fit, minmax(80px, 1fr));
+
+ svg {
+ color: var(--theme-text);
+ fill: currentColor;
+ }
+ }
+
+ .sponsor-logo__netlify {
+ width: 90px;
+ }
+
+ .sponsor-logo__vercel {
+ width: 90px;
+ }
+ :global(:root.theme-dark .sponsors-title) {
+ color: hsl(var(--color-base-gray), 75%);
+ }
+ .sponsors-title {
+ color: hsl(var(--color-base-gray), 25%);
+ font-size: 0.8em;
+ font-weight: 300;
+ letter-spacing: 0.0625em;
+ margin: 0 0 0.5rem;
+ padding-left: 1rem;
+ text-transform: uppercase;
+ }
+</style>
diff --git a/smoke/docs-main/src/components/PageContent/PageContent.astro b/smoke/docs-main/src/components/PageContent/PageContent.astro
new file mode 100644
index 000000000..38bf397e8
--- /dev/null
+++ b/smoke/docs-main/src/components/PageContent/PageContent.astro
@@ -0,0 +1,73 @@
+---
+import MoreMenu from '../RightSidebar/MoreMenu.astro';
+import TableOfContents from '../RightSidebar/TableOfContents.tsx';
+import { getLanguageFromURL } from '../../util.ts';
+import { SIDEBAR } from '../../config.ts';
+const { content, githubEditUrl, currentPage } = Astro.props;
+const title = content.title;
+const headers = content.astro?.headers;
+const langCode = getLanguageFromURL(currentPage);
+const links = SIDEBAR[langCode].filter((x) => x.link && typeof x.header === 'undefined');
+// handle cases with a trailing slash or not
+const index = links.findIndex((x) => `/${x.link}/` === currentPage || `/${x.link}` === currentPage);
+const next = index !== -1 ? (index === links.length - 1 ? null : links[index + 1]) : null;
+const previous = index !== -1 ? (index === 0 ? null : links[index - 1]) : null;
+---
+
+<article id="article" class="content">
+ <section class="main-section">
+ <h1 class="content-title" id="overview">{title}</h1>
+ {headers && (
+ <nav class="block sm:hidden">
+ <TableOfContents client:media="(max-width: 50em)" headers={headers} />
+ </nav>
+ )}
+ <slot />
+ </section>
+ <nav class="block sm:hidden">
+ <MoreMenu editHref={githubEditUrl} />
+ </nav>
+ {(previous || next) && (
+ <aside>
+ {previous && (
+ <div>
+ Previous Article:{' '}
+ <a rel="prev" href={new URL(previous.link, Astro.site).pathname}>
+ {previous.text}
+ </a>
+ </div>
+ )}
+ {next && (
+ <div>
+ Next Article:{' '}
+ <a rel="next" href={new URL(next.link, Astro.site).pathname}>
+ {next.text}
+ </a>
+ </div>
+ )}
+ </aside>
+ )}
+</article>
+
+<style>
+ .content {
+ padding: 0;
+ max-width: 75ch;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ }
+ .content > section {
+ margin-bottom: 4rem;
+ }
+ .block {
+ display: block;
+ }
+
+ @media (min-width: 50em) {
+ .sm\:hidden {
+ display: none;
+ }
+ }
+</style>
diff --git a/smoke/docs-main/src/components/RightSidebar/MoreMenu.astro b/smoke/docs-main/src/components/RightSidebar/MoreMenu.astro
new file mode 100644
index 000000000..31d31bdbb
--- /dev/null
+++ b/smoke/docs-main/src/components/RightSidebar/MoreMenu.astro
@@ -0,0 +1,74 @@
+---
+import ThemeToggleButton from './ThemeToggleButton.tsx';
+const { editHref } = Astro.props;
+---
+
+<h2 class="heading">More</h2>
+<ul>
+ <li class={`header-link depth-2`}>
+ <a class="edit-on-github" href={editHref} target="_blank">
+ <svg
+ aria-hidden="true"
+ focusable="false"
+ data-prefix="fas"
+ data-icon="pen"
+ class="svg-inline--fa fa-pen fa-w-16"
+ role="img"
+ xmlns="http://www.w3.org/2000/svg"
+ viewBox="0 0 512 512"
+ height="1em"
+ width="1em"
+ >
+ <path
+ fill="currentColor"
+ d="M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z"
+ ></path>
+ </svg>
+ <span>Edit this page</span>
+ </a>
+ </li>
+ <li class={`header-link depth-2`}>
+ <a href="https://github.com/withastro/astro/blob/main/CONTRIBUTING.md#translations" target="_blank">
+ <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 88.6 77.3" height="1.24em" width="1.24em" style="margin: -2px;">
+ <path fill="currentColor" d="M61,24.6h7.9l18.7,51.6h-7.7l-5.4-15.5H54.3l-5.6,15.5h-7.2L61,24.6z M72.6,55l-8-22.8L56.3,55H72.6z"></path>
+ <path
+ fill="currentColor"
+ d="M53.6,60.6c-10-4-16-9-22-14c0,0,1.3,1.3,0,0c-6,5-20,13-20,13l-4-6c8-5,10-6,19-13c-2.1-1.9-12-13-13-19h8 c4,9,10,14,10,14c10-8,10-19,10-19h8c0,0-1,13-12,24l0,0c5,5,10,9,19,13L53.6,60.6z M1.6,16.6h56v-8h-23v-7h-9v7h-24V16.6z"
+ ></path>
+ </svg>
+ <span>Translate this page</span>
+ </a>
+ </li>
+ <li class={`header-link depth-2`}>
+ <a href="https://astro.build/chat" target="_blank">
+ <svg
+ aria-hidden="true"
+ focusable="false"
+ data-prefix="fas"
+ data-icon="comment-alt"
+ class="svg-inline--fa fa-comment-alt fa-w-16"
+ role="img"
+ xmlns="http://www.w3.org/2000/svg"
+ viewBox="0 0 512 512"
+ height="1em"
+ width="1em"
+ >
+ <path fill="currentColor" d="M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z"
+ ></path>
+ </svg>
+ <span>Join our community</span>
+ </a>
+ </li>
+</ul>
+<div style="margin: 2rem 0; text-align: center;">
+ <ThemeToggleButton client:visible />
+</div>
+
+<style>
+ .edit-on-github {
+ text-decoration: none;
+ font: inherit;
+ color: inherit;
+ font-size: 1rem;
+ }
+</style>
diff --git a/smoke/docs-main/src/components/RightSidebar/RightSidebar.astro b/smoke/docs-main/src/components/RightSidebar/RightSidebar.astro
new file mode 100644
index 000000000..c27232cf6
--- /dev/null
+++ b/smoke/docs-main/src/components/RightSidebar/RightSidebar.astro
@@ -0,0 +1,27 @@
+---
+import TableOfContents from './TableOfContents.tsx';
+import MoreMenu from './MoreMenu.astro';
+const { content, githubEditUrl } = Astro.props;
+const headers = content.astro?.headers;
+---
+
+<nav class="sidebar-nav" aria-labelledby="grid-right">
+ <div class="sidebar-nav-inner">
+ {headers && <TableOfContents client:media="(min-width: 50em)" headers={headers} />}
+ <MoreMenu editHref={githubEditUrl} />
+ </div>
+</nav>
+
+<style>
+ .sidebar-nav {
+ width: 100%;
+ position: sticky;
+ top: 0;
+ }
+ .sidebar-nav-inner {
+ height: 100%;
+ padding: 0;
+ padding-top: var(--doc-padding);
+ overflow: auto;
+ }
+</style>
diff --git a/smoke/docs-main/src/components/RightSidebar/TableOfContents.tsx b/smoke/docs-main/src/components/RightSidebar/TableOfContents.tsx
new file mode 100644
index 000000000..578d2aa98
--- /dev/null
+++ b/smoke/docs-main/src/components/RightSidebar/TableOfContents.tsx
@@ -0,0 +1,45 @@
+import type { FunctionalComponent } from 'preact';
+import { h, Fragment } from 'preact';
+import { useState, useEffect, useRef } from 'preact/hooks';
+
+const TableOfContents: FunctionalComponent<{ headers: any[] }> = ({ headers = [] }) => {
+ const itemOffsets = useRef([]);
+ const [activeId, setActiveId] = useState<string>(undefined);
+
+ useEffect(() => {
+ const getItemOffsets = () => {
+ const titles = document.querySelectorAll('article :is(h1, h2, h3, h4)');
+ itemOffsets.current = Array.from(titles).map((title) => ({
+ id: title.id,
+ topOffset: title.getBoundingClientRect().top + window.scrollY,
+ }));
+ };
+
+ getItemOffsets();
+ window.addEventListener('resize', getItemOffsets);
+
+ return () => {
+ window.removeEventListener('resize', getItemOffsets);
+ };
+ }, []);
+
+ return (
+ <>
+ <h2 class="heading">On this page</h2>
+ <ul>
+ <li class={`header-link depth-2 ${activeId === 'overview' ? 'active' : ''}`.trim()}>
+ <a href="#overview">Overview</a>
+ </li>
+ {headers
+ .filter(({ depth }) => depth > 1 && depth < 4)
+ .map((header) => (
+ <li class={`header-link depth-${header.depth} ${activeId === header.slug ? 'active' : ''}`.trim()}>
+ <a href={`#${header.slug}`}>{header.text}</a>
+ </li>
+ ))}
+ </ul>
+ </>
+ );
+};
+
+export default TableOfContents;
diff --git a/smoke/docs-main/src/components/RightSidebar/ThemeToggleButton.css b/smoke/docs-main/src/components/RightSidebar/ThemeToggleButton.css
new file mode 100644
index 000000000..d8cd7c2ac
--- /dev/null
+++ b/smoke/docs-main/src/components/RightSidebar/ThemeToggleButton.css
@@ -0,0 +1,38 @@
+.theme-toggle {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.25em;
+ padding: 0.33em 0.67em;
+ border-radius: 99em;
+ background-color: var(--theme-code-inline-bg);
+}
+
+.theme-toggle > label:focus-within {
+ outline: 2px solid transparent;
+ box-shadow: 0 0 0 0.08em var(--theme-accent), 0 0 0 0.12em white;
+}
+
+.theme-toggle > label {
+ color: var(--theme-code-inline-text);
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ opacity: 0.5;
+ cursor: pointer;
+}
+
+.theme-toggle .checked {
+ color: var(--theme-accent);
+ opacity: 1;
+}
+
+input[name='theme-toggle'] {
+ position: absolute;
+ opacity: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: -1;
+}
diff --git a/smoke/docs-main/src/components/RightSidebar/ThemeToggleButton.tsx b/smoke/docs-main/src/components/RightSidebar/ThemeToggleButton.tsx
new file mode 100644
index 000000000..bd92388d9
--- /dev/null
+++ b/smoke/docs-main/src/components/RightSidebar/ThemeToggleButton.tsx
@@ -0,0 +1,71 @@
+import type { FunctionalComponent } from 'preact';
+import { h, Fragment } from 'preact';
+import { useState, useEffect } from 'preact/hooks';
+import './ThemeToggleButton.css';
+
+const themes = ['light', 'dark'];
+
+const icons = [
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="currentColor">
+ <path
+ fill-rule="evenodd"
+ d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
+ clip-rule="evenodd"
+ />
+ </svg>,
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="currentColor">
+ <path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" />
+ </svg>,
+];
+
+function ThemeToggle() {
+ const [theme, setTheme] = useState(() => {
+ if (import.meta.env.SSR) {
+ return undefined;
+ }
+ if (typeof localStorage !== 'undefined' && localStorage.getItem('theme')) {
+ return localStorage.getItem('theme');
+ }
+ if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
+ return 'dark';
+ }
+ return 'light';
+ });
+
+ useEffect(() => {
+ const root = document.documentElement;
+ if (theme === 'light') {
+ root.classList.remove('theme-dark');
+ } else {
+ root.classList.add('theme-dark');
+ }
+ }, [theme]);
+
+ return (
+ <div class="theme-toggle">
+ {themes.map((t, i) => {
+ const icon = icons[i];
+ const checked = t === theme;
+ return (
+ <label class={checked ? 'checked' : ''}>
+ {icon}
+ <input
+ type="radio"
+ name="theme-toggle"
+ checked={checked}
+ value={t}
+ title={`Use ${t} theme`}
+ aria-label={`Use ${t} theme`}
+ onChange={() => {
+ localStorage.setItem('theme', t);
+ setTheme(t);
+ }}
+ />
+ </label>
+ );
+ })}
+ </div>
+ );
+}
+
+export default ThemeToggle;
diff --git a/smoke/docs-main/src/config.ts b/smoke/docs-main/src/config.ts
new file mode 100644
index 000000000..4c27e7247
--- /dev/null
+++ b/smoke/docs-main/src/config.ts
@@ -0,0 +1,215 @@
+export const SIDEBAR = {
+ en: [
+ { text: 'Setup', header: true },
+ { text: 'Getting Started', link: 'en/getting-started' },
+ { text: 'Quickstart', link: 'en/quick-start' },
+ { text: 'Installation', link: 'en/installation' },
+ { text: 'Migration Guide', link: 'en/migrate' },
+ { text: 'Themes', link: 'en/themes' },
+ { text: 'Astro vs. X', link: 'en/comparing-astro-vs-other-tools' },
+
+ { text: 'Basics', header: true },
+ { text: 'Project Structure', link: 'en/core-concepts/project-structure' },
+ { text: 'Component Syntax', link: 'en/core-concepts/astro-components' },
+ { text: 'Pages', link: 'en/core-concepts/astro-pages' },
+ { text: 'Layouts', link: 'en/core-concepts/layouts' },
+ { text: 'Routing', link: 'en/core-concepts/routing' },
+ { text: 'Partial Hydration', link: 'en/core-concepts/component-hydration' },
+
+ { text: 'Guides', header: true },
+ { text: 'Styling & CSS', link: 'en/guides/styling' },
+ { text: 'Markdown', link: 'en/guides/markdown-content' },
+ { text: 'Debugging', link: 'en/guides/debugging' },
+ { text: 'Data Fetching', link: 'en/guides/data-fetching' },
+ { text: 'Pagination', link: 'en/guides/pagination' },
+ { text: 'RSS', link: 'en/guides/rss' },
+ { text: 'Supported Imports', link: 'en/guides/imports' },
+ { text: 'Aliases', link: 'en/guides/aliases' },
+ { text: 'Environment Variables', link: 'en/guides/environment-variables' },
+ { text: 'Deploy to the web', link: 'en/guides/deploy' },
+ { text: 'Publish to npm', link: 'en/guides/publish-to-npm' },
+
+ { text: 'Reference', header: true },
+ { text: 'Built-In Components', link: 'en/reference/builtin-components' },
+ { text: 'API Reference', link: 'en/reference/api-reference' },
+ { text: 'CLI Reference', link: 'en/reference/cli-reference' },
+ {
+ text: 'Configuration Reference',
+ link: 'en/reference/configuration-reference',
+ },
+ { text: 'Renderer Reference', link: 'en/reference/renderer-reference' },
+ ],
+ de: [
+ { text: 'Einrichtung', header: true },
+ { text: 'Erste Schritte', link: 'de/getting-started' },
+ { text: 'Schnellstart', link: 'de/quick-start' },
+ { text: 'Installation', link: 'de/installation' },
+ { text: 'Vorlagen', link: 'de/themes' },
+ { text: 'Astro vs. X', link: 'de/comparing-astro-vs-other-tools' },
+ { text: 'Umstellung auf v0.21', link: 'de/migration/0.21.0' },
+
+ { text: 'Grundlagen', header: true },
+ { text: 'Projektstruktur', link: 'de/core-concepts/project-structure' },
+ { text: 'Astro-Komponenten', link: 'de/core-concepts/astro-components' },
+ { text: 'Astro-Seiten', link: 'de/core-concepts/astro-pages' },
+ { text: 'Layouts', link: 'de/core-concepts/layouts' },
+ { text: 'Routing', link: 'de/core-concepts/routing' },
+ { text: 'Partial Hydration', link: 'de/core-concepts/component-hydration' },
+
+ { text: 'Anleitungen', header: true },
+ { text: 'Styling & CSS', link: 'de/guides/styling' },
+
+ { text: 'Referenz', header: true },
+ ],
+ nl: [
+ { text: 'Welkom', header: true },
+ { text: 'Beginnen', link: 'nl/getting-started' },
+ { text: 'Snel start', link: 'nl/quick-start' },
+ ],
+ fi: [
+ { text: 'Tervetuloa', header: true },
+ { text: 'Aloittaminen', link: 'fi/getting-started' },
+ { text: 'Pika-aloitus', link: 'fi/quick-start' },
+ { text: 'Asennus', link: 'fi/installation' },
+ ],
+ es: [
+ { text: 'Configuración', header: true },
+ { text: 'Empezando', link: 'es/getting-started' },
+ { text: 'Comienzo rápido', link: 'es/quick-start' },
+ { text: 'Instalación', link: 'es/installation' },
+ { text: 'Astro vs. X', link: 'es/comparing-astro-vs-other-tools' },
+
+ { text: 'Fundamentos', header: true },
+ {
+ text: 'Estructura del Proyecto',
+ link: 'es/core-concepts/project-structure',
+ },
+ {
+ text: 'Sintaxis del Componente',
+ link: 'es/core-concepts/astro-components',
+ },
+ { text: 'Páginas', link: 'es/core-concepts/astro-pages' },
+ { text: 'Maquetas', link: 'es/core-concepts/layouts' },
+ { text: 'Enrutamiento', link: 'es/core-concepts/routing' },
+ {
+ text: 'Hidratación parcial',
+ link: 'es/core-concepts/component-hydration',
+ },
+
+ { text: 'Guías', header: true },
+ { text: 'Estilo y CSS', link: 'es/guides/styling' },
+ { text: 'Markdown', link: 'es/guides/markdown-content' },
+ { text: 'Depuración', link: 'es/guides/debugging' },
+ { text: 'Obtención de datos', link: 'es/guides/data-fetching' },
+ { text: 'Paginación', link: 'es/guides/pagination' },
+ { text: 'RSS', link: 'es/guides/rss' },
+ { text: 'Importaciones admitidas', link: 'es/guides/imports' },
+ { text: 'Alias', link: 'es/guides/aliases' },
+ { text: 'Desplegar en la web', link: 'es/guides/deploy' },
+ { text: 'Publicar en npm', link: 'es/guides/publish-to-npm' },
+
+ { text: 'Referencia', header: true },
+ {
+ text: 'Componentes incorporados',
+ link: 'es/reference/builtin-components',
+ },
+ { text: 'Referencia de API', link: 'es/reference/api-reference' },
+ { text: 'Referencia de CLI', link: 'es/reference/cli-reference' },
+ {
+ text: 'Referencia de configuración',
+ link: 'es/reference/configuration-reference',
+ },
+ {
+ text: 'Referencia de renderizador',
+ link: 'es/reference/renderer-reference',
+ },
+ ],
+ 'zh-CN': [
+ { text: '起步', header: true },
+ { text: '入门指南', link: 'zh-CN/getting-started' },
+ { text: '快速入门', link: 'zh-CN/quick-start' },
+ { text: '安装指南', link: 'zh-CN/installation' },
+ { text: '模板样例', link: 'zh-CN/examples' },
+ {
+ text: 'Astro 对比其他框架',
+ link: 'zh-CN/comparing-astro-vs-other-tools',
+ },
+ ],
+ 'zh-TW': [
+ { text: '設定', header: true },
+ { text: '新手上路', link: 'zh-TW/getting-started' },
+ { text: '快速開始', link: 'zh-TW/quick-start' },
+ { text: '安裝', link: 'zh-TW/installation' },
+ { text: '佈景主題', link: 'zh-TW/themes' },
+ ],
+ bg: [
+ { text: 'Главни', header: true },
+ { text: 'Започваме!', link: 'bg/getting-started' },
+ ],
+ fr: [
+ { text: 'Bienvenue', header: true },
+ { text: 'Bien démarrer', link: 'fr/getting-started' },
+ { text: 'Démarrage rapide', link: 'fr/quick-start' },
+ { text: 'Installation', link: 'fr/installation' },
+ ],
+ bn: [
+ { text: 'সেটআপ', header: true },
+ { text: 'শুরু করুন', link: 'bn/getting-started' },
+ ],
+ kr: [
+ { text: '환영합니다', header: true },
+ { text: '시작하기', link: 'kr/getting-started' },
+ ],
+ ar: [
+ { text: 'التهيئة', header: true },
+ { text: 'باشر البدأ', link: 'ar/getting-started' },
+ ],
+ da: [
+ { text: 'Velkommen', header: true },
+ { text: 'Introduktion', link: 'da/getting-started' },
+ ],
+ ja: [
+ { text: 'セットアップ', header: true },
+ { text: 'はじめに', link: 'ja/getting-started' },
+ { text: 'クイックスタート', link: 'ja/quick-start' },
+ { text: 'インストール', link: 'ja/installation' },
+ { text: 'テーマ', link: 'ja/themes' },
+ { text: 'Astro vs. X', link: 'ja/comparing-astro-vs-other-tools' },
+
+ { text: '基本', header: true },
+ { text: 'ディレクトリ構成', link: 'ja/core-concepts/project-structure' },
+ ],
+ ru: [
+ { text: 'Введение', header: true },
+ { text: 'Начало работы', link: 'ru/getting-started' },
+ { text: 'Быстрый старт', link: 'ru/quick-start' },
+ ],
+ it: [
+ { text: 'Impostare', header: true },
+ { text: 'Come iniziare', link: 'it/getting-started' },
+ ],
+ pl: [
+ { text: 'Konfiguracja', header: true },
+ { text: 'Na początek', link: 'pl/getting-started' },
+ ],
+ hu: [
+ { text: 'Beállítás', header: true },
+ { text: 'Első Lépések', link: 'hu/getting-started' },
+ { text: 'Gyors Beállítás', link: 'hu/quick-start' },
+ { text: 'Telepítés', link: 'hu/installation' },
+ ],
+};
+
+export const SITE = {
+ title: 'Astro Documentation',
+ description: 'Build faster websites with less client-side Javascript.',
+};
+
+export const OPEN_GRAPH = {
+ locale: 'en_US',
+ image: {
+ src: '/default-og-image.png?v=1',
+ alt: 'astro logo on a starry expanse of space,' + ' with a purple saturn-like planet floating in the right foreground',
+ },
+ twitter: 'astrodotbuild',
+};
diff --git a/smoke/docs-main/src/data/components.json b/smoke/docs-main/src/data/components.json
new file mode 100644
index 000000000..089d31f79
--- /dev/null
+++ b/smoke/docs-main/src/data/components.json
@@ -0,0 +1,29 @@
+{
+ "official": [],
+ "community": [
+ {
+ "name": "Accessible Astro Components",
+ "description": "A set of accessible modals, buttons, toggles and more.",
+ "github": "https://www.npmjs.com/package/accessible-astro-components",
+ "demo": null
+ },
+ {
+ "name": "Astro Static Tweet",
+ "description": "A lightweight static-HTML tweet embed.",
+ "github": "https://www.npmjs.com/package/@rebelchris/astro-static-tweet",
+ "demo": null
+ },
+ {
+ "name": "Astro SEO",
+ "description": "SEO tags for your website.",
+ "github": "https://github.com/jonasmerlin/astro-seo",
+ "demo": null
+ },
+ {
+ "name": "Astro SPA",
+ "description": "A component for Astro JS that turns a website into an SPA.",
+ "github": "https://www.npmjs.com/package/astro-spa",
+ "demo": ["https://ohka-bots-site-astro-ksoqn4flk7-li4hm4z1a-tc-001.vercel.app/", "https://astro-spafy-component-demo.netlify.app/"]
+ }
+ ]
+}
diff --git a/smoke/docs-main/src/data/themes.json b/smoke/docs-main/src/data/themes.json
new file mode 100644
index 000000000..27142ac3c
--- /dev/null
+++ b/smoke/docs-main/src/data/themes.json
@@ -0,0 +1,80 @@
+{
+ "featured": [
+ {
+ "name": "Ink",
+ "description": "Crisp, minimal, personal blog theme for Astro",
+ "github": "https://github.com/one-aalam/astro-ink",
+ "demo": "https://astro-ink.vercel.app/",
+ "sandbox": "https://github.dev/one-aalam/astro-ink",
+ "command": "npm init astro -- --template one-aalam/astro-ink"
+ }
+ ],
+ "official": [
+ {
+ "name": "Starter Kit",
+ "description": "A default starter project for Astro. Flexible enough to handle anything that you might want to build.",
+ "github": "https://github.com/withastro/astro/tree/main/examples/starter",
+ "demo": null,
+ "sandbox": "https://github.dev/withastro/astro/tree/main/examples/starter",
+ "command": "npm init astro"
+ },
+ {
+ "name": "Docs",
+ "description": "A documentation website theme, complete with i18n, search, dark mode and more.",
+ "github": "https://github.com/withastro/astro/tree/main/examples/docs",
+ "demo": null,
+ "sandbox": "https://github.dev/withastro/astro/tree/main/examples/docs",
+ "command": "npm init astro -- --template docs"
+ },
+ {
+ "name": "Blog",
+ "description": "A blog theme, perfect for personal and company blogs.",
+ "github": "https://github.com/withastro/astro/tree/main/examples/blog",
+ "demo": null,
+ "sandbox": "https://github.dev/withastro/astro/tree/main/examples/blog",
+ "command": "npm init astro -- --template blog"
+ },
+ {
+ "name": "Portfolio",
+ "description": "A portfolio theme, perfect for your personal or professional online portfolio.",
+ "github": "https://github.com/withastro/astro/tree/main/examples/portfolio",
+ "demo": null,
+ "sandbox": "https://github.dev/withastro/astro/tree/main/examples/portfolio",
+ "command": "npm init astro -- --template portfolio"
+ },
+ {
+ "name": "Portfolio-svelte",
+ "description": "A portfolio theme using Svelte components, perfect for your personal or professional online portfolio.",
+ "github": "https://github.com/withastro/astro/tree/main/examples/portfolio-svelte",
+ "demo": null,
+ "sandbox": "https://github.dev/withastro/astro/tree/main/examples/portfolio-svelte",
+ "command": "npm init astro -- --template portfolio-svelte"
+ },
+ {
+ "name": "Minimal",
+ "description": "A minimal theme, with just the bare minimum needed to get started.",
+ "github": "https://github.com/withastro/astro/tree/main/examples/minimal",
+ "demo": null,
+ "sandbox": "https://github.dev/withastro/astro/tree/main/examples/minimal",
+ "command": "npm init astro -- --template minimal"
+ }
+ ],
+ "community": [
+ {
+ "name": "Accessible Astro Starter",
+ "description": "A starter project with accessible features using Astro static site builder.",
+ "github": "https://github.com/markteekman/accessible-astro-starter",
+ "demo": "https://accessible-astro.markteekman.nl/",
+ "sandbox": "https://github.dev/markteekman/accessible-astro-starter",
+ "command": "npm init astro -- --template markteekman/accessible-astro-starter"
+ },
+ {
+ "name": "Astro Theme Creek",
+ "description": "Creek is an open source blog theme for Astro SSG.",
+ "github": "https://github.com/robertguss/Astro-Theme-Creek",
+ "demo": "https://astro-theme-creek.netlify.app/",
+ "sandbox": "https://github.dev/robertguss/Astro-Theme-Creek",
+ "command": "npm init astro -- --template robertguss/Astro-Theme-Creek"
+ }
+ ]
+}
diff --git a/smoke/docs-main/src/layouts/MainLayout.astro b/smoke/docs-main/src/layouts/MainLayout.astro
new file mode 100644
index 000000000..9ebe2f22e
--- /dev/null
+++ b/smoke/docs-main/src/layouts/MainLayout.astro
@@ -0,0 +1,124 @@
+---
+import HeadCommon from '../components/HeadCommon.astro';
+import HeadSEO from '../components/HeadSEO.astro';
+import Header from '../components/Header/Header.astro';
+import PageContent from '../components/PageContent/PageContent.astro';
+import LeftSidebar from '../components/LeftSidebar/LeftSidebar.astro';
+import RightSidebar from '../components/RightSidebar/RightSidebar.astro';
+import { SITE } from '../config.ts';
+import { getLanguageFromURL } from '../util.ts';
+
+const { content = {}, hideRightSidebar = false } = Astro.props;
+const currentPage = Astro.request.url.pathname;
+const currentFile = `src/pages${currentPage.replace(/\/$/, '')}.md`;
+const githubEditUrl = `https://github.com/withastro/docs/blob/main/${currentFile}`;
+const formatTitle = (content, SITE) => (content.title ? `${content.title} 🚀 ${SITE.title}` : SITE.title);
+const lang = getLanguageFromURL(Astro.request.url.pathname);
+---
+
+<html dir={content.dir ?? 'ltr'} {lang} class="initial">
+ <head>
+ <HeadCommon />
+ <HeadSEO {content} canonicalURL={Astro.request.canonicalURL} />
+ <title>{formatTitle(content, SITE)}</title>
+ <style>
+ body {
+ width: 100%;
+ display: grid;
+ grid-template-rows: var(--theme-navbar-height) 1fr;
+ --gutter: 0.5rem;
+ --doc-padding: 2rem;
+ }
+ .layout {
+ display: grid;
+ grid-auto-flow: column;
+ grid-template-columns:
+ minmax(var(--gutter), 1fr)
+ minmax(0, var(--max-width))
+ minmax(var(--gutter), 1fr);
+ overflow-x: hidden;
+ }
+ .layout :global(> *) {
+ width: 100%;
+ height: 100%;
+ }
+ .grid-sidebar {
+ height: 100vh;
+ position: sticky;
+ top: 0;
+ padding: 0;
+ }
+ #grid-left {
+ position: fixed;
+ background-color: var(--theme-bg);
+ z-index: 10;
+ display: none;
+ }
+ #grid-main {
+ padding: var(--doc-padding) var(--gutter);
+ grid-column: 2;
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ }
+ #grid-right {
+ display: none;
+ }
+ :global(.mobile-sidebar-toggle) {
+ overflow: hidden;
+ }
+ :global(.mobile-sidebar-toggle #grid-left) {
+ display: block;
+ top: 2rem;
+ }
+ @media (min-width: 50em) {
+ .layout {
+ overflow: initial;
+ grid-template-columns:
+ 20rem
+ minmax(0, var(--max-width));
+ gap: 1em;
+ }
+ #grid-left {
+ display: flex;
+ padding-left: 2rem;
+ position: sticky;
+ grid-column: 1;
+ }
+ }
+
+ @media (min-width: 72em) {
+ .layout {
+ grid-template-columns:
+ 20rem
+ minmax(0, var(--max-width))
+ 18rem;
+ padding-left: 0;
+ padding-right: 0;
+ margin: 0 auto;
+ }
+ #grid-right {
+ grid-column: 3;
+ display: flex;
+ }
+ }
+ </style>
+ </head>
+
+ <body>
+ <Header {currentPage} />
+ <main class="layout">
+ <aside id="grid-left" class="grid-sidebar" title="Site Navigation">
+ <LeftSidebar {currentPage} />
+ </aside>
+ <div id="grid-main">
+ <PageContent {content} {githubEditUrl} {currentPage}>
+ <slot />
+ </PageContent>
+ </div>
+ <aside id="grid-right" class="grid-sidebar" title="Table of Contents">
+ {!hideRightSidebar && <RightSidebar content={content} githubEditUrl={githubEditUrl} />}
+ </aside>
+ </main>
+ </body>
+</html>
diff --git a/smoke/docs-main/src/layouts/SplashLayout.astro b/smoke/docs-main/src/layouts/SplashLayout.astro
new file mode 100644
index 000000000..6483ac951
--- /dev/null
+++ b/smoke/docs-main/src/layouts/SplashLayout.astro
@@ -0,0 +1,50 @@
+---
+import HeadCommon from '../components/HeadCommon.astro';
+import Header from '../components/Header/Header.astro';
+import { SITE } from '../config.ts';
+import { getLanguageFromURL } from '../util.ts';
+
+const { title, dir = 'ltr' } = Astro.props;
+const lang = getLanguageFromURL(Astro.request.url.pathname);
+---
+
+<html {dir} {lang} class="initial">
+ <head>
+ <HeadCommon />
+ <title>{`${title} 🚀 ${SITE.title}`}</title>
+ <style>
+ body {
+ width: 100%;
+ display: grid;
+ grid-template-rows: var(--theme-navbar-height) 1fr;
+ --gutter: 0.5rem;
+ --doc-padding: 2rem;
+ }
+ .layout {
+ display: grid;
+ grid-auto-flow: column;
+ grid-template-columns:
+ minmax(var(--gutter), 1fr)
+ minmax(0, var(--max-width))
+ minmax(var(--gutter), 1fr);
+ overflow-x: hidden;
+ }
+ article {
+ padding: var(--doc-padding) var(--gutter);
+ grid-column: 2;
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ }
+ </style>
+ </head>
+
+ <body>
+ <Header />
+ <main class="layout splash-layout">
+ <article>
+ <slot />
+ </article>
+ </main>
+ </body>
+</html>
diff --git a/smoke/docs-main/src/pages/404.astro b/smoke/docs-main/src/pages/404.astro
new file mode 100644
index 000000000..8a0bfbb5b
--- /dev/null
+++ b/smoke/docs-main/src/pages/404.astro
@@ -0,0 +1,9 @@
+---
+import SplashLayout from '../layouts/SplashLayout.astro';
+---
+
+<SplashLayout title="Not Found">
+ <h1>404</h1>
+ <p>This page isn't in our solar system.</p>
+ <a href="/">Take me home.</a>
+</SplashLayout>
diff --git a/smoke/docs-main/src/pages/[...slug].astro b/smoke/docs-main/src/pages/[...slug].astro
new file mode 100644
index 000000000..be6500ec7
--- /dev/null
+++ b/smoke/docs-main/src/pages/[...slug].astro
@@ -0,0 +1,19 @@
+---
+export async function getStaticPaths() {
+ // get english pages that moved from `/` to `/en/`
+ const englishPages = Astro.fetchContent('./en/**/*.md');
+
+ // add pages that are `*.astro` files as well
+ const otherPages = [{ url: '/en/themes' }];
+ return [...englishPages, ...otherPages].map((page) => ({
+ params: {
+ slug: page.url.slice(4),
+ },
+ props: {
+ englishSlug: page.url,
+ },
+ }));
+}
+---
+
+<meta http-equiv="refresh" content={`0;url=${Astro.props.englishSlug}`} />
diff --git a/smoke/docs-main/src/pages/[slug].astro b/smoke/docs-main/src/pages/[slug].astro
new file mode 100644
index 000000000..4717cc732
--- /dev/null
+++ b/smoke/docs-main/src/pages/[slug].astro
@@ -0,0 +1,19 @@
+---
+export async function getStaticPaths() {
+ // get english pages that moved from `/` to `/en/`
+ const englishPages = Astro.fetchContent('./en/**.md');
+
+ // add pages that are `*.astro` files as well
+ const otherPages = [{ url: '/en/themes' }];
+ return [...englishPages, ...otherPages].map((page) => ({
+ params: {
+ slug: page.url.slice(4),
+ },
+ props: {
+ englishSlug: page.url,
+ },
+ }));
+}
+---
+
+<meta http-equiv="refresh" content={`0;url=/docs${Astro.props.englishSlug}`} />
diff --git a/smoke/docs-main/src/pages/ar/getting-started.md b/smoke/docs-main/src/pages/ar/getting-started.md
new file mode 100644
index 000000000..565ad8904
--- /dev/null
+++ b/smoke/docs-main/src/pages/ar/getting-started.md
@@ -0,0 +1,79 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: باشر بالبدأ
+dir: rtl
+---
+
+Astro هو باني موقع ثابت. تعرف أكثر حول ماهية Astro من خلال [صفحتنا الرئيسية](https://astro.build/) أو نشرة [الإصدارات](https://astro.build/blog/introducing-astro). تُعد هذه الصفحة نُبذة موجزة للتوثيق الخاص بـAstro وأيضًا لكل المصادر التي تتعلق به.
+
+إن كنت تتطلع عن ملخص سريع حول ما هو Astro بشكلٍ عام؟ [تفقد صفحتنا الرئيسية.](https://astro.build/blog/introducing-astro)
+
+## جرب Astro
+
+أبسط طريقة لتجرب Astro هي بتنفيذ أمر `npm init astro` في داخل مُجلد جديد على جهازك، وسيقوم Astro CLI بمُساعدتك على بدأ مشروع Astro جديد.
+
+لتباشر البدأ باستخدام Astro من خلال 5 خطوات سريعة وبسيطة، تفقد [دليل البدأ-بسرعة](quick-start).
+
+أو إقرأ [دليل التثبيت](/installation) إن كنت تريد الغوص في عملية تهيئة Astro.
+
+### أمثلة على بعض المشاريع
+
+أن كنت تفضل التعلم عن طريق الأمثلة، ألقي نظرةٍ على [مكتبة الأمثلة الشاملة](https://github.com/withastro/astro/tree/main/examples) المتواجدة على Github.
+
+بمقدورك الإطلاع على أي من هذه الأمثلة وتجربتها مُباشرةً على جهازك،
+فقط نفذ الأمر <code ltr="left">npm init astro</code> متبوعًا بـ
+`--template`. الإشارة `--template` أيضًا تدعم الامثلة الخارجية التي يصنعها المجتمع
+
+```bash
+# أمر تهيئة أحد القوالب الرسمية التي يوفرها استرو
+npm init astro -- --template [OFFICIAL_EXAMPLE_NAME]
+# أمر تهيئة القوالب الخارجية التي يوفرها المُجتمع
+npm init astro -- --template [GITHUB_USER]/[REPO_NAME]
+npm init astro -- --template [GITHUB_USER]/[REPO_NAME]/path/to/example
+```
+
+### جربه على المُتصفح
+
+إن كنت مهتمًا وتريد اللعب وتجربة Astro على المتصفح، بمقدورك استخدام online code playground، جرب قالب مشروعنا "Hello World" على [CodeSandbox](https://codesandbox.io/s/astro-template-hugb3).
+
+_ملحوظة: بعض المُميزات مُقتصرة على CodeSandbx (مثلاً: التحديث السريع "Fast Refresh") حاليًا._
+
+## تعلمُ Astro
+
+يأتي العديد الأشخاص من خلفياتِ تعلم مُختلفة إلى Astro، أيًا كانت طريقة التعليم التي تفضلها سواءً أكنت تفضل الطريقة النظرية أو الطريقة العملية، نتمنى أن تجد هذا القسم مفيدًا.
+
+- إن كُنت تُفضل **التعلم من خلال التجربة العملية**، أبدأ من خلال [مكتبتنا للأمثلة](https://github.com/withastro/astro/tree/main/examples).
+- إن كُنت تُفضل **التعلم من خلال الفهم خطوةً بخطوة**، أبدأ من خلال [دليل المفاهيم الأساسية والإرشادات](/core-concepts/project-structure).
+
+مثل أي تقنيةٍ ليست بمألوفة، Astro يأتيك بمنحنى تعليمي مختلف بعض الشيء، ولكن على أي حال، مع بعض الصبر والممارسة، نحن متأكدون بأنك _ستتأقلم معه_ في وقتٍ هين دون أن تشعر.
+
+### تعلمُ تركيب <code dir="ltr">.astro</code> النحوي (syntax)
+
+مع بدأ تعلمك لـAstro ستلاحظ العديد من الملفات التي تنتهي بصيغة <code dir="ltr">.astro</code> هي ملفات مكتوبة بـ Astro’s Component Syntax والتي تعد: طريقة كتابة مشابهة جدًا لملفات HTML يستخدمها Astro في القوالب.
+صممت هذه الصيغة لتكون قريبة ومشابهة للـ HTML و JSX، إن كنت تعرف أحدهما فستتأقلم مع <code dir="ltr">.astro</code> بسهولة.
+
+تفقد دليلنا المساعد [مكونات Astro](/core-concepts/astro-components) سيكون مدخل يساعدك على تعلم Astro syntax، ويعد أفضل طريقة للتعلم.
+
+### مرجع للـAPI
+
+يُفيدك هذا الجزء من التوثيق حينما تريد الإطلاع أكثر بشأن تفاصيل Astro API. على سبيل المثال، يتضمن [مرجع الإعداد](/reference/configuration-reference) قائمة لكل الإعدادات الممكنة المتاحة لكي تستخدمها. [المكونات المصممة مسبقًا](/reference/builtin-components) تتضمن قائمة بكل العناصر الرئيسية مثل <span dir="ltr">`<Markdown />` و `<Code />`</span>.
+
+### إصدارات التوثيق
+
+هذا التوثيق يُسلط الضوء دومًا على أخر إصدار مستقر من Astro، وريثما نصل إلى إصدار 1.0 الرئيسي سنقوم بإضافة القابلية لتصفح اللإصدارات المختلفة من التوثيق.
+
+## أبقى مُطلعًا
+
+حساب [@astrodotbuild](https://twitter.com/astrodotbuild) على تويتر هو المصدر الرسمي لأخر المُستجدات من فريق Astro.
+
+ونحن أيضًا نُعد نشرة إصدارات ونعلن عنها في [مُجتمعنا على ديسكورد](https://astro.build/chat) على قناة <span dir="ltr">#announcements</span>
+
+ليست كل إصدارات Astro تملك تدوينة نشرةٍ خاصة بها، لكن ستجد سجلًا للتغيرات في ملف [`CHANGELOG.md` في مستودع Astro](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md).
+
+## شيءٌ ما ناقص؟
+
+إن كان هناك شيءُ ما غير مُوثق أو لو كنت تشعر بالحيرة والإرتباك من جزءٍ معين في التوثيق، لا تتردد في [رفع طلب خطبٌ ما في ملف التوثيق](https://github.com/withastro/astro/issues/new/choose)، مع اقتراحك للتحسين، أو قم بتغريد تغريدةٍ إلى حسابنا على تويتر [@astrodotbuild](https://twitter.com/astrodotbuild)، نحب سماع آرائك!
+
+## التَقدِير
+
+دليل باشر بالبدأ معتمدٌ على دليل البدأ الخاص بـ[React](https://ar.reactjs.org/).
diff --git a/smoke/docs-main/src/pages/bg/getting-started.md b/smoke/docs-main/src/pages/bg/getting-started.md
new file mode 100644
index 000000000..31f6143c0
--- /dev/null
+++ b/smoke/docs-main/src/pages/bg/getting-started.md
@@ -0,0 +1,60 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Започваме!
+---
+
+Astro е модерен builder за статични сайтове. Научете всичко за Astro от [нашата начална страница](https://astro.build/) или от [release поста](https://astro.build/blog/introducing-astro). Тази страница е оглед на документацията на Astro и всички свързани ресурси.
+
+## Пробвайте Astro
+
+Най-лесният начин да пробвате Astro е да изпълните `npm init astro` в нова локална директория. Нашият CLI Wizard ще Ви помогне да започнете нов Astro проект.
+
+За да започнете с Astro в 5 бързи и лесни стъпки, посетете нашия [Гид за бърз старт](quick-start).
+
+Алтернативно, можете да прочетете нашия [Инсталационен гид](/installation) за всичко относно настройката на Astro.
+
+### Онлайн площадки (playgrounds)
+
+Ако искате да си експериментирате с Astro в браузъра, можете да използвате онлайн площадка за код. Пробвайте нашия "Hello World!" темплейт на [CodeSandbox](https://codesandbox.io/s/astro-template-hugb3).
+
+_Бележка: някои функционалности (например: Fast Refresh) са лимитирани на CodeSandbox засега._
+
+## Научете Astro
+
+Всякакви видове хора с различни методи за обучение се ориентират към Astro. Независимо дали предпочитате по-теоретичен, или по-практически подход, ние се надяваме че ще намерите тази секция за полезна.
+
+- Ако предпочитате да **учите чрез практика**, започнете с нашата [библиотека с примери](https://github.com/withastro/astro/tree/main/examples).
+- Ако предпочитате да **учите концепции стъпка по стъпка**, започнете с нашите [базови концепции и гидове](/core-concepts/project-structure).
+
+Като всяка непозната технология, Astro изисква известно време, за да се научи. Но с практика и малко търпение, ние сме сигурни, че _ще го схванете_ за нула време.
+
+### Научете `.astro` синтаксис
+
+Когато започнете да учите Astro, ще видите много файлове с разширение `.astro`. Това е **Компонентният синтаксис на Astro** -
+специален файлов формат наподобяващ HTML, който Astro използва за изграждане на страници (templating). Направен е, така че да е познат на всеки с HTML или JSX опит.
+
+Нашият помощен гид за [Astro компонентите](/core-concepts/astro-components) Ви запознава със синтаксисът на Astro и е най-добрият начин да се научите.
+
+### API Справка
+
+Тази секция е полезна, когато искате да научите повече детайли относно даден Astro API. Например - [Конфигурационната справка](/reference/configuration-reference) изброява всички възможни конфигурационни опции. [Справката за вградени компоненти](/reference/builtin-components) изброява всички възможни базови (core) компоненти, като `<Markdown />` и `<Code />`.
+
+### Версия на документацията
+
+Тази документация винаги рефлектира последната стабилна версия на Astro. Когато пуснем версия 1.0, ще добавим опция за преглед на предишни или бъдещи версии.
+
+## Бъдете информирани
+
+Официалният източник за новини от екипа на Astro е Twitter акаунтът - [@astrodotbuild](https://twitter.com/astrodotbuild).
+
+Публикуваме и съобщения относно нови версии в [нашия Discord сървър](https://astro.build/chat) в #announcements канала.
+
+Не всяка нова версия на Astro заслужава собствен блог пост, но можете да намерите регистър на промените за всеки релийз в [`CHANGELOG.MD` файла, намиращ се в репото на Astro](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md).
+
+## Нещо липсва?
+
+Ако нещо липсва в документацията или намирате нещо за объркващо, моля [подайте го като issue за документацията](https://github.com/withastro/astro/issues/new/choose) с Вашите предложения за подобрение или пуснете tweet към [@astrodotbuild](https://twitter.com/astrodotbuild). Обичаме да чуваме от Вас!
+
+## Credit
+
+Първоначално този гид е базиран на документацията на [React](https://reactjs.org/).
diff --git a/smoke/docs-main/src/pages/bn/getting-started.md b/smoke/docs-main/src/pages/bn/getting-started.md
new file mode 100644
index 000000000..351e47e9c
--- /dev/null
+++ b/smoke/docs-main/src/pages/bn/getting-started.md
@@ -0,0 +1,59 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: শুরু করুন
+---
+
+Astro হচ্ছে একটি আধুনিক স্ট্যাটিক ওয়েবসাইট বিল্ডার। Astro সম্পর্কে বিস্তারিত জানুন [আমাদের হোমপেজ](https://astro.build/) থেকে অথবা [আমাদের রিলিজ পোস্ট](https://astro.build/blog/introducing-astro) থেকে। এই পেজটি Astro-এর ডকুমেন্টেশন এবং এ সম্পর্কিত সকল বিষয়ের একটি সারাংশ।
+
+## Astro ব্যবহার করুন
+
+Astro ব্যবহার করার সবচেয়ে সহজ উপায় হচ্ছে আপনার কম্পিউটারের নতুন কোন ফোল্ডারে `npm init astro` রান করা। আমাদের সিএলআই উইজার্ড আপনাকে একটি নতুন Astro প্রোজেক্ট শুরু করতে সাহায্য করবে।
+
+মাত্র ৫টি সহজ ও ছোট ধাপে Astro নিয়ে কাজ করা শুরু করতে , আমাদের [কুইকস্টার্ট গাইডটি](quick-start) চেক করুন।
+
+অথবা, Astro সেটআপ এর উপর সম্পূর্ণ একটি ওয়াকথ্রুর জন্য আমাদের [ইন্সটলেশন গাইডটি](/installation) চেক করুন।
+
+### অনলাইন প্লেগ্রাউন্ড
+
+আপনি যদি ব্রাউজারে Astro নিয়ে কাজ করতে চান, তাহলে আপনি একটি অনলাইন কোড প্লেগ্রাউন্ড ব্যবহার করতে পারেন। এজন্য আমাদের [কোডস্যান্ডবক্স](https://codesandbox.io/s/astro-template-hugb3)-এর "Hello World!" টেমপ্লেটটি ব্যবহার করতে পারেন।
+
+_দ্রষ্টব্য: বর্তমানে কোডস্যান্ডবক্সে কিছু ফিচার (যেমন: ফাস্ট রিফ্রেশ) প্রাথমিক পর্যায়ে রয়েছে।_
+
+## Astro শিখুন
+
+বিভিন্ন ব্যাকগ্রাউন্ডের বিভিন্ন ধরণের মানুষ বিভিন্ন পদ্ধতিতে শিখার আগ্রহ নিয়ে Astro-তে আসে। আপনি ব্যবহারিক বা তাত্ত্বিক যে পদ্ধতিতেই শিখতে পছন্দ করেন, আমাদের আশা এই অংশটি আপনাকে সহায়তা করবে।
+
+- যদি আপনি **করে করে** শিখতে পছন্দ করেন, তাহলে আমাদের [উদাহরণগুলো](https://github.com/withastro/astro/tree/main/examples) দিয়ে শুরু করুন।
+- আর যদি আপনি **ধাপে ধাপে** বিষয়গুলো বুঝতে চান, তাহলে আমাদের [মৌলিক ধারণা এবং সহায়িকাসমূহ](/core-concepts/project-structure) দেখুন।
+
+অন্যান্য যেকোনো অপরিচিত প্রযুক্তির মতো, Astro শিখতেও কিছুটা প্রচেষ্টার প্রয়োজন রয়েছে। কিন্তু, আমরা জানি, আপনি লেগে থাকলে অতি দ্রুতই এর সাথে মানিয়ে নিতে _পারবেন_।
+
+### `.astro` সিনট্যাক্স শিখুন
+
+আপনি যখন Astro শিখা শুরু করবেন, আপনি অনেকগুলো `.astro` ফাইল খেয়াল করবেন। এটা **Astro-এর কম্পোনেন্ট সিনট্যাক্স**, একটি বিশেষ এইচটিএমএল-এর মতো ফাইল ফরম্যাট যা Astro টেমপ্লেটিং-এর জন্য ব্যবহার করে। এটাকে এইচটিএমএল এবং জেএসএক্স-এর সাথে মিল রেখে তৈরি করা হয়েছে।
+
+আমাদের [Astro কম্পোনেন্ট](/core-concepts/astro-components)-এর উপর সহায়ক গাইডটি আপনাকে Astro সিনট্যাক্স-এর সাথে পরিচিত করে তুলবে, আর এটিই শিখার সবচেয়ে ভালো উপায়।
+
+### এপিআই রেফারেন্স
+
+যদি আপনি কোনো নির্দিষ্ট Astro এপিআই-এর সম্বন্ধে বিস্তারিত জানতে চান তাহলে এই ডকুমেন্টেশনটি আপনাকে সাহায্য করবে। উদাহরণস্বরূপ, [কনফিগারেশন রেফারেন্সে](/reference/configuration-reference) সকল কনফিগারেশন অপশনের তালিকা দেয়া আছে। [বিল্ট-ইন কম্পোনেন্টস রেফারেন্সে](/reference/builtin-components) সকল বিল্ট-ইন কম্পোনেন্টের তালিকা দেয়া আছে, যেমন `<Markdown />` আর `<Prism />`।
+
+### ভার্সনকৃত ডকুমেন্টেশন
+
+এই ডকুমেন্টেশনটি সবসময় Astro-এর লেটেস্ট ভার্সনকে প্রতিফলিত করে। যখন আমরা v1.0-এর মাইলফলকটি স্পর্শ করব, তখন আমরা ভার্সনকৃত ডকুমেন্টেশন ফিচারটি সংযোজন করব।
+
+## অবগত থাকুন
+
+[@astrodotbuild](https://twitter.com/astrodotbuild) টুইটার অ্যাকাউন্টটি Astro টিম থেকে যেকোনো আপডেট পাওয়ার অফিসিয়াল মাধ্যম।
+
+আমরা আমাদের [ডিসকর্ড সার্ভারের](https://astro.build/chat) **#announcements** চ্যানেলেও যেকোনো নতুন বিজ্ঞপ্তি প্রকাশ করে থাকি।
+
+প্রতিটি Astro রিলিজের জন্য আমরা নতুন ব্লগ পোস্ট করি না, কিন্তু আপনি Astro রিপোজিটরির [`CHANGELOG.md`](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md) ফাইলে প্রতিটি রিলিজের বিস্তারিত পরিবর্তনসূচি দেখতে পারবেন।
+
+## কিছু অনুপস্থিত মনে হচ্ছে?
+
+আপনার যদি ডকুমেন্টেশনে কোনো কিছু অনুপস্থিত মনে হয় বা কোনো অংশকে বিভ্রান্তিকর মনে হয়, তাহলে দয়া করে আপনার পরামর্শসহ [একটি ইস্যু ফাইল করুন](https://github.com/withastro/astro/issues/new/choose) অথবা [@astrodotbuild](https://twitter.com/astrodotbuild) টুইটার অ্যাকাউন্টটিতে টুইট করুন। আমরা আপনাদের পরামর্শ শুনতে সর্বদা আগ্রহী!
+
+## ক্রেডিট
+
+এই গাইডটি মূলত [React-এর](https://reactjs.org/) **শুরু করুন** গাইডের উপর ভিত্তি করে লিখা হয়েছিল।
diff --git a/smoke/docs-main/src/pages/da/getting-started.md b/smoke/docs-main/src/pages/da/getting-started.md
new file mode 100644
index 000000000..df7000224
--- /dev/null
+++ b/smoke/docs-main/src/pages/da/getting-started.md
@@ -0,0 +1,74 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Introduktion
+description: En grundlæggende introduktion til Astro.
+---
+
+Astro er en moderne statisk side bygger. Lær hvad Astro handler om på [vores hjemmeside](https://astro.build/) eller [vores udgivelsesmeddelelser](https://astro.build/blog/introducing-astro). Denne side er et overblik over Astro-dokumentationen og alle relaterede ressourcer.
+
+## Prøv Astro
+
+Den nemmeste måde at prøve Astro på er ved at køre `npm init astro` i en ny mappe på din maskine. Vores CLI-guide vil hjælpe dig med at starte et nyt Astro projekt.
+
+Besøg vores [Hurtigstartsguide](/quick-start) for at komme i gang med Astro i 5 hurtige og nemme trin.
+
+Alternativt kan du læse vores [Installationsguide](/installation) for en fuld gennemgang af hvordan du sætter Astro op.
+
+### Eksempelprojekter
+
+Hvis du foretrækker at lære Astro ved hjælp af eksempler, kan du tjekke vores [fulde bibliotek af eksempler](https://github.com/withastro/astro/tree/main/examples) på GitHub.
+
+Du kan tjekke alle disse eksempler på din lokale maskine ved at køre `npm init astro` med CLI-flaget `--template`. Flaget `--template` understøtter også tredjeparts-skabeloner lavet af fællesskabet.
+
+```bash
+# Kør init-guiden og brug denne officielle skabelon
+npm init astro -- --template [OFFICIEL_EKSEMPEL_NAVN]
+# Kør init-guiden og brug denne skabelon lavet af fællesskabet
+npm init astro -- --template [GITHUB_BRUGER]/[REPO_NAVN]
+npm init astro -- --template [GITHUB_BRUGER]/[REPO_NAVN]/sti/til/eksempel
+```
+
+### Online Legepladser
+
+Hvis du er interesseret i at lege med Astro i browseren, kan du straks starte et nyt Astro projekt med vores brugerflade på [astro.new](https://astro.new/).
+
+Du kan prøve Astro i online kodeeditorer som Stackblitz, CodeSandbox, Gitpod eller GitHub Codespaces. Klik på "Open in Stackblitz" linket i et af eksemplerne i vores [liste af eksempler](https://github.com/withastro/astro/tree/main/examples). Eller, [klik her](https://stackblitz.com/fork/astro) for at starte et nyt projekt i [Stackblitz](https://stackblitz.com/fork/astro).
+
+## Lær Astro
+
+Alle slags mennesker kommer til Astro fra forskellige baggrunde og medbringer forskellige læringsstile. Uanset om du foretrækker en mere teoretisk eller praktisk tilgang, håber vi at du finder dette afsnit nyttigt.
+
+- Hvis du foretrækker at **lære ved at gøre**, kan du starte med vores [liste af eksempler](https://github.com/withastro/astro/tree/main/examples).
+- Hvis du foretrækker at **lære koncepter trin for trin**, kan du starte med vores [grundlæggende koncepter og vejledninger](/core-concepts/project-structure).
+
+Som enhver anden ukendt teknologi har Astro en lille indlæringskurve. Men med øvelse og lidt tålmodighed, ved vi at du _vil_ få styr på det på ingen tid.
+
+### Lær `.astro` Syntaks
+
+Når du begynder at lære Astro, vil du se mange filer med filtypen `.astro`. Dette er **Astros Komponent Syntaks**: et specielt HTML-lignende filformat som Astro bruger til templating. Det er designet til at føles bekendt for alle med HTML- eller JSX-erfaring
+
+Vores nyttige guide om [Astro-komponenter](/core-concepts/astro-components) introducerer dig til Astro-syntaksen, og er den bedste måde at lære på.
+
+### API Reference
+
+Dette dokumentationsafsnit er nyttigt når du vil lære flere detaljer om en bestemt Astro API. F.eks. indeholder [Konfigurationsreference](/reference/configuration-reference) en liste over alle tilgængelige konfigurationsmuligheder. [Indbyggede komponenter-reference](/reference/builtin-components) indeholder en liste over alle tilgængelige kernekomponenter, såsom `<Markdown />` og `<Code />`.
+
+### Versioneret dokumentation
+
+Denne dokumentation afspejler altid den seneste stabile version af Astro. Når vi når v1.0-milepælen, vil vi tilføje muligheden for at se versioneret dokumentation.
+
+## Hold dig orienteret
+
+Twitter-kontoen [@astrodotbuild](https://twitter.com/astrodotbuild) er den officielle kilde til opdateringer fra Astro-teamet.
+
+Vi sender også udgivelsesmeddelelser til vores [Discord-fællesskab](https://astro.build/chat) i #announcements kanalen.
+
+Ikke hver Astro udgivelse fortjener sit eget blogindlæg, men du kan finde en detaljeret ændringsliste for hver udgivelse i [`CHANGELOG.md` filen i Astro-repositoriet](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md).
+
+## Mangler der noget?
+
+Hvis der mangler noget i dokumentationen, eller hvis du synes, at en del er forvirrende, skal du [indsende et Issue om dokumentationen](https://github.com/withastro/astro/issues/new/choose) med dit forslag til forbedringer, eller tweet på [@astrodotbuild](https://twitter.com/astrodotbuild) Twitter-kontoen. Vi elsker at høre fra dig!
+
+## Kredit
+
+Denne startvejledning var oprindeligt baseret på [React’s](https://reactjs.org/) startvejledning.
diff --git a/smoke/docs-main/src/pages/de/404.astro b/smoke/docs-main/src/pages/de/404.astro
new file mode 100644
index 000000000..7107cc49a
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/404.astro
@@ -0,0 +1,9 @@
+---
+import SplashLayout from '../../layouts/SplashLayout.astro';
+---
+
+<SplashLayout title="Nicht gefunden">
+ <h1>404</h1>
+ <p>Diese Seite befindet sich nicht in unserem Sonnensystem.</p>
+ <a href="/">Bring mich nach Hause.</a>
+</SplashLayout>
diff --git a/smoke/docs-main/src/pages/de/comparing-astro-vs-other-tools.md b/smoke/docs-main/src/pages/de/comparing-astro-vs-other-tools.md
new file mode 100644
index 000000000..7462ced85
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/comparing-astro-vs-other-tools.md
@@ -0,0 +1,233 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Vergleiche Astro
+description: Vergleiche Astro mit anderen statischen Site-Renderern wie Gatsby, Next.js, Nuxt, Hugo, Eleventy und weiteren.
+---
+
+Wir werden oft gefragt, "Wie verhält sich Astro im Vergleich zu meinem bevorzugten Site-Renderer **\_\_\_\_**?" Diese Anleitung wurde verfasst, um diese Frage für verschiedene populäre Site-Renderer und Astro-Alternativen zu beantworten.
+
+Falls dein bevorzugter Site-Renderer hier nicht aufgeführt ist, [frag uns danach in Discord](https://astro.build/chat).
+
+## Projektstatus
+
+Eine kurze Anmerkung zum Entwicklungsstand des Projektes: **Astro ist noch im Beta-Stadium.** Viele der Werkzeuge, die hier aufgeführt werden, sind sehr viel weiter fortgeschritten. Einige sind mehr als zwölf Jahre älter als Astro!
+
+Einige Features sind noch nicht verfügbar und Teile der API noch nicht vollständig. Wie auch immer, das Projekt wird bezüglich seiner Fehleranfälligkeit als stabil angesehen und verschiedene Websites wurden schon für den produktiven Einsatz mit Astro umgesetzt. Dies ist ein wichtiger Punkt, wenn es um eine Entscheidung in Bezug auf den Einsatz von Astro geht.
+
+## Docusaurus vs. Astro
+
+[Docusaurus](https://docusaurus.io/) ist ein populärer Dokumentationssite-Renderer. Docusaurus verwendet React, um deine Website-UI zu generieren, während Astro in diesem Bereich React, Preact, Vue, Svelte, Solid und andere unterstützt - sowie auch eine an HTML angelehnte Komponenten-Syntax, die sich ähnlich verhält wie HTML + JSX.
+
+Docusaurus wurde entwickelt, um Dokumentationswebsites zu erzeugen und bietet einige dokumentationsspezifische Features, über die Astro nicht verfügt. Stattdessen kannst du in Astro auf dokumentationsspezifische Features mittels einer offiziellen [`docs`](https://github.com/withastro/astro/tree/main/examples/docs)-Vorlage zugreifen, die du für deine Site verwenden kannst. Diese Dokumentationswebsite wurde unter Verwendung dieser Vorlage erstellt!
+
+### Leistungsvergleich Docusaurus vs. Astro
+
+In den meisten Fällen werden Astro-Websites deutlich schneller laden als Docusaurus-Websites. Dies liegt vor allem daran, dass Astro unnötiges JavaScript vermeidet und nur diejenigen Komponenten einer Seite mit JavaScript anreichert, die dies benötigen. Dieses Feature wird [Partial Hydration](/de/core-concepts/component-hydration) genannt.
+
+Docusaurus unterstützt Partial Hydration nicht. Stattdessen wird die gesamte Seite im Browser mit JavaScript angereichert, selbst wenn der größte Teil der Seite statisch ist. Dies führt zu längeren Ladezeiten und insgesamt schlechterer Leistung deiner Website. Es gibt keine Möglichkeit dieses Verhalten in Docusaurus abzuschalten.
+
+### Fallstudie: Kompilieren einer Dokumentationswebsite
+
+[docusaurus.io/docs](https://docusaurus.io/docs) ist die offizielle Docusaurus-Dokumentationswebsite - kompiliert mit Docusaurus. Die Website bietet ein ausreichend ähnliches Design und ausreichend ähnliche Funktionalität, um sie mit der offiziellen Astro-Dokumentationswebsite zu vergleichen. Dies ermöglicht uns einen **_grob realistischen_** Vergleich zwischen beiden Site-Renderern.
+
+- **Docusaurus Leistungswert**: 61 von 100 [(vollständige Prüfung)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocusaurus.io%2Fdocs)
+- **Astro Leistungswert**: 99 von 100 [(vollständige Prüfung)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+Ein wesentlicher Grund für diesen Leistungsunterschied liegt in Astros geringerer JavaScript-Last: [docusaurus.io/docs](https://docusaurus.io/docs) lädt **238kB** JavaScript mit dem ersten Seitenaufruf während [docs.astro.build](https://docs.astro.build) **78.7kB** (67% weniger JavaScript insgesamt) _nach_ dem ersten Seitenaufruf lädt.
+
+## Elder.js vs. Astro
+
+[Elder.js](https://elderguide.com/tech/elderjs/) ist ein Site-Renderer für Svelte mit stark ausgeprägten eigenen Vorstellungen.
+
+Elder.js verwendet Svelte, um deine Website zu rendern. Astro ist hierin flexibler: Du kannst frei entscheiden mit welcher UI-Komponenten-Bibliothek du deine Oberfläche erzeugen willst (React, Preact, Vue, Svelte, Solid und andere), oder du verwendest die an HTML angelehnte Komponenten-Syntax von Astro, die sich ähnlich verhält wie HTML + JSX.
+
+Elder.js hat eine besondere Stellung in dieser Auflistung, da es neben Astro der einzige Site-Renderer ist, der [Partial Hydration](/de/core-concepts/component-hydration) unterstützt. Sowohl Astro als auch Elder.js vermeiden automatisch unnötiges JavaScript auf der Seite und reichern nur die Komponenten damit an, die dies benötigen. Elders API für Partial Hydration unterscheidet sich etwas von der, die Astro verwendet. Und Astro unterstützt einige Features, über die Elder.js nicht verfügt (wie z. B. `client:media`). Wie auch immer, beide Werkzeuge erzeugen bezüglich der Leistung betrachtet sehr ähnliche Sites.
+
+Elder.js verwendet eine spezifische Routing-Lösung, die für neue Entwickler ungewohnt erscheinen kann. Astro verwendet [dateibasiertes Routing](/de/core-concepts/routing), das sich für alle vertraut anfühlen sollte, die Erfahrung mit Next.js, SvelteKit oder auch anderen Site-Renderern wie Eleventy haben.
+
+Elder.js wurde entwickelt, um große Websites zu erzeugen - und behauptet, es könne eine Website mit ca 20.000 Seiten in weniger als 10 Minuten rendern (auf einer durchschnittlichen VM). Zum Zeitpunkt der Erstellung dieses Textes rendert Astro ca 1.000 Seiten in 66 Sekunden, aber wurde noch nicht mit Projekten im Umfang von 20.000 Seiten getestet. Astro ist noch in einem frühen Beta-Stadium, und Elder.js Render-Geschwindigkeit zu erreichen ist ein Ziel für Astro v1.0.
+
+Elder.js unterstützt sowohl statische Site-Generierung (SSG) als auch Server-seitiges Rendering (SSR). Zum jetzigen Zeitpunkt unterstützt Astro nur statische Site-Generierung (SSG).
+
+## Eleventy vs. Astro
+
+[Eleventy](https://www.11ty.dev/) ist ein beliebter statischer Site-Renderer auf der Grundlage von Node.js.
+
+Eleventy verwendet verschiedene [ältere Sprachen für HTML-Templates](https://www.11ty.dev/docs/languages/), um deine Website zu rendern: Nunjucks, Liquid, Pug, EJS und andere. Astro erlaubt dir deine Websites mit deiner bevorzugten UI-Komponenten-Bibliothek (React, Preact, Vue, Svelte und andere) zu erzeugen, oder du verwendest die an HTML angelehnte Komponenten-Syntax von Astro, die sich ähnlich verhält wie HTML + JSX. Eleventy unterstützt keine modernen UI-Bibliotheken für die Erstellung von HTML-Templates.
+
+### Leistungsvergleich Eleventy vs. Astro
+
+Konzeptuell ist Eleventy auf Augenhöhe mit Astros "minimalistischem Einsatz von Client-seitigem JavaScript" bei der Web-Entwicklung. Eleventy und Astro bieten somit eine ähnliche Leistungsgrundlage durch ihre jeweilige Null-JavaScript-Strategie.
+
+Eleventy erreicht dies, indem es dich dazu anhält JavaScript gänzlich zu vermeiden. Eleventy-Sites werden oft mit sehr wenig bis hin zu gar keinem JavaScript geschrieben. Dies wird allerdings dann zum Thema, wenn du tatsächlich Client-seitig JavaScript einsetzen musst. Es bleibt dann dir überlassen eine entsprechende Build-Pipeline für deine Skripte und weitere Elemente aufzubauen. Dies kann sich sehr zeitaufwendig gestalten, und es zwingt dich das Packen der Anwendung, sowie Minifizierung und weitere komplizierte Optimierungen von Hand aufzusetzen.
+
+Im Gegensatz dazu kompiliert Astro automatisch dein Client-seitiges JavaScript & CSS für dich. Astro entfernt automatisch unnötiges JavaScript von der Seite und reichert nur die individuellen Komponenten damit an, die dies benötigen. Dieses Feature wird [Partial Hydration](/de/core-concepts/component-hydration) genannt. Während es dir natürlich möglich ist dieses Feature in Eleventy von Hand einzurichten, steht es dir in Astro bereits von vornherein zur Verfügung.
+
+## Gatsby vs. Astro
+
+[Gatsby](https://www.gatsbyjs.com/) ist eine beliebte Website- und Anwendungsbibliothek für React.
+
+Gatsby verwendet React, um deine Website zu rendern. Astro ist hierin flexibler: Du kannst frei entscheiden mit welcher UI-Komponenten-Bibliothek du deine Oberfläche erzeugen willst (React, Preact, Vue, Svelte, Solid und andere), oder du verwendest die an HTML angelehnte Komponenten-Syntax von Astro, die sich ähnlich verhält wie HTML + JSX.
+
+Gatsby v4 unterstützt statische Site-Generierung (Static Site Generation, SSG) mit inkrementellen Rebuilds sowie verzögerte statische Generierung (Deferred Static Generation, DSG), aber auch Server-seitiges Rendering (Server-Side Rendering, SSR). Zur Zeit unterstützt Astro nur statische Site-Generierung (SSG).
+
+Gatsby erfordert für deine gesamte Arbeit mit Site-Inhalten eine eigene GraphQL-API. Während einige Entwicklerinnen und Entwickler an diesem Modell Gefallen finden, besteht eine häufig geäußerte Kritik an Gatsby darin, dass dieses Modell auf Dauer zu komplex und schwer aufrechtzuerhalten ist, insbesondere wenn Sites sehr umfangreich werden. Für die Arbeit mit Astro ist GraphQL nicht erforderlich, stattdessen bietet es gewohnte API (wie `fetch()` und `await` auf oberster Ebene), um Daten nah bei ihrer Anwendung zu laden.
+
+### Leistungsvergleich Gatsby vs. Astro
+
+In den meisten Fällen werden Astro-Websites deutlich schneller laden als Gatsby-Websites. Dies liegt vor allem daran, dass Astro unnötiges JavaScript vermeidet und nur diejenigen Komponenten einer Seite mit JavaScript anreichert, die dies benötigen. Dieses Feature wird [Partial Hydration](/de/core-concepts/component-hydration) genannt.
+
+Gatsby unterstützt Partial Hydration nicht und lässt stattdessen den Browser die gesamte Seite erneut laden und mit JavaScript anreichern, selbst wenn der größte Teil der Seite statisch ist. Dies führt zu längeren Ladezeiten und schlechterer Leistung für deine Website. Gatsby verfügt über ein [Community Plugin](https://www.gatsbyjs.com/plugins/gatsby-plugin-no-javascript/), das sämtliches JavaScript von einer Seite entfernt, doch dies führt auch dazu, dass viele Websites nicht mehr wie beabsichtigt funktionieren. In Bezug auf Interaktivität auf einzelnen Seiten ist entprechend nur eine Entscheidung zwischen ganz oder gar nicht möglich.
+
+Gatsby verfügt über ein großes Plugin-Ökosystem, was in Abhängigkeit von dem, was du benötigst, Gatsby zur besseren Wahl machen kann. [gatsby-plugin-image](https://www.gatsbyjs.com/plugins/gatsby-plugin-image/) z. B. ist ein beliebtes Plugin für Bildoptimierungen, das Gatsby zur besseren Wahl für bilderlastige Websites machen könnte.
+
+### Fallstudie: Kompilieren einer Dokumentationswebsite
+
+[gatsbyjs.com/docs](https://www.gatsbyjs.com/docs/quick-start/) ist die offizielle Gatsby-Dokumentationswebsite - kompiliert mit Gatsby. Die Website bietet ein ausreichend ähnliches Design und ausreichend ähnliche Funktionalität, um sie mit der offiziellen Astro-Dokumentationswebsite zu vergleichen. Dies ermöglicht uns einen **_grob realistischen_** Vergleich zwischen beiden Site-Renderern.
+
+- **Gatsby Leistungswert**: 64 von 100 [(vollständige Prüfung)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fwww.gatsbyjs.com%2Fdocs%2Fquick-start%2F)
+- **Astro Leistungswert**: 99 von 100 [(vollständige Prüfung)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+Ein wesentlicher Grund für diesen Leistungsunterschied liegt in Astros geringerer JavaScript-Last: [gatsbyjs.com/docs](https://www.gatsbyjs.com/docs/quick-start/) lädt **417kB** JavaScript mit dem ersten Seitenaufruf während [docs.astro.build](https://docs.astro.build) **78.7kB** (81% weniger JavaScript insgesamt) _nach_ dem ersten Seitenaufruf lädt.
+
+## Hugo vs. Astro
+
+[Hugo](https://gohugo.io/) ist ein beliebter statischer Site-Renderer auf der Grundlage von Go.
+
+Hugo verwendet eine eigene [Templating Language](https://gohugo.io/templates/introduction/), um deine Website zu rendern. Astro erlaubt dir deine Websites mit deiner bevorzugten UI-Komponenten-Bibliothek (React, Preact, Vue, Svelte, Solid und andere) zu erzeugen, oder du verwendest die an HTML angelehnte Komponenten-Syntax von Astro, die sich ähnlich verhält wie HTML + JSX. Hugo unterstützt keine modernen UI-Bibliotheken für die Erstellung von HTML-Templates.
+
+### Leistungsvergleich Hugo vs. Astro
+
+Konzeptuell ist Hugo auf Augenhöhe mit Astros "minimalistischem Einsatz von Client-seitigem JavaScript" bei der Web-Entwicklung. Hugo und Astro bieten somit eine ähnliche Leistungsgrundlage durch ihre jeweilige Null-JavaScript-Strategie.
+
+Sowohl Hugo als auch Astro bieten von vornherein Unterstützung beim Kompilieren, Packen und Minifizieren von JavaScript. Astro entfernt automatisch unnötiges JavaScript von der Seite und reichert nur die individuellen Komponenten damit an, die dies benötigen. Dieses Feature wird [Partial Hydration](/de/core-concepts/component-hydration) genannt. Während es dir natürlich möglich ist dieses Feature in Hugo von Hand einzurichten, steht es dir in Astro ebenfalls bereits von vornherein zur Verfügung.
+
+## Jekyll vs. Astro
+
+[Jekyll](https://jekyllrb.com/) ist ein beliebter statischer Site-Renderer auf der Grundlage von Ruby.
+
+Jekyll verwendet eine ältere [Templating Language](https://jekyllrb.com/docs/liquid/) mit dem Namen Liquid, um deine Website zu rendern. Astro erlaubt dir deine Websites mit deiner bevorzugten UI-Komponenten-Bibliothek (React, Preact, Vue, Svelte, Solid und andere) zu erzeugen, oder du verwendest die an HTML angelehnte Komponenten-Syntax von Astro, die sich ähnlich verhält wie HTML + JSX. Jekyll unterstützt keine modernen UI-Bibliotheken für die Erstellung von HTML-Templates.
+
+### Leistungsvergleich Jekyll vs. Astro
+
+Konzeptuell ist Jekyll auf Augenhöhe mit Astros "minimalistischem Einsatz von Client-seitigem JavaScript" bei der Web-Entwicklung. Jekyll und Astro bieten somit eine ähnliche Leistungsgrundlage durch ihre jeweilige Null-JavaScript-Strategie.
+
+Jekyll erreicht dies, indem es dich dazu anhält JavaScript gänzlich zu vermeiden. Jekyll-Sites werden oft mit sehr wenig bis hin zu gar keinem JavaScript geschrieben. Dies wird allerdings dann zum Thema, wenn du tatsächlich Client-seitig JavaScript einsetzen musst. Es bleibt dann dir überlassen eine entsprechende Build-Pipeline für deine Skripte und weitere Elemente aufzubauen. Dies kann sich sehr zeitaufwendig gestalten, und es zwingt dich das Packen der Anwendung, sowie Minifizierung und weitere komplizierte Optimierungen von Hand aufzusetzen.
+
+Im Gegensatz dazu kompiliert Astro automatisch dein Client-seitiges JavaScript für dich. Astro sendet nur die minimal notwendige Menge an JavaScript an den Browser, minifiziert, gepackt und optimiert für die Veröffentlichung. Dieses Feature wird [Partial Hydration](/de/core-concepts/component-hydration) genannt. Während es dir natürlich möglich ist dieses Feature in Jekyll von Hand einzurichten, steht es dir in Astro bereits von vornherein zur Verfügung.
+
+## SvelteKit vs. Astro
+
+[SvelteKit](https://kit.svelte.dev/) ist eine beliebte Website- und Anwendungsbibliothek für Svelte.
+
+SvelteKit verwendet Svelte, um deine Website zu rendern. Astro ist hierin flexibler: Du kannst frei entscheiden mit welcher UI-Komponenten-Bibliothek du deine Oberfläche erzeugen willst (React, Preact, Vue, Svelte, Solid und andere), oder du verwendest die an HTML angelehnte Komponenten-Syntax von Astro, die sich ähnlich verhält wie HTML + JSX.
+
+Sowohl SvelteKit als auch Astro sind Bibliotheken für die Erzeugung von Websites. SvelteKit funktioniert am besten mit hochdynamischen Websites (wie Dashboards und Nachrichteneingängen), während Astro am besten mit größtenteils statischen Websites funktioniert (wie Content- und E-Commerce-Websites).
+
+SvelteKit unterstützt sowohl statische Site-Generierung (Static Site Generation, SSG) als auch Server-seitiges Rendering (Server-Side Rendering, SSR). Zur Zeit unterstützt Astro nur statische Site-Generierung (SSG).
+
+### Leistungsvergleich SvelteKit vs. Astro
+
+In den meisten Fällen werden Astro-Websites schneller laden als SvelteKit-Websites. Dies liegt vor allem daran, dass Astro unnötiges JavaScript vermeidet und nur diejenigen Komponenten einer Seite mit JavaScript anreichert, die dies benötigen. Dieses Feature wird [Partial Hydration](/de/core-concepts/component-hydration) genannt.
+
+SvelteKit unterstützt Partial Hydration nicht und lässt stattdessen den Browser die gesamte Seite erneut laden und mit JavaScript anreichern, selbst wenn der größte Teil der Seite statisch ist. Dies führt zu längeren Ladezeiten und schlechterer Leistung für deine Website. SvelteKit unterstützt mit [Page-Level Static und Zero-JavaScript Pages](https://kit.svelte.dev/docs#ssr-and-javascript-hydrate) das Entfernen von JavaScript per Seite oder für die gesamte Anwendung. Wie auch immer, eine Unterstützung für die Anreicherung individueller Komponenten einer Seite ist nicht geplant. In Bezug auf Interaktivität auf einzelnen Seiten ist entprechend nur eine Entscheidung zwischen ganz oder gar nicht möglich.
+
+### Fallstudie: Kompilieren einer Dokumentationswebsite
+
+[kit.svelte.dev](https://kit.svelte.dev/docs#ssr-and-javascript-hydrate) ist die offizielle SvelteKit-Dokumentationswebsite - kompiliert mit SvelteKit. Die Website bietet ein ausreichend ähnliches Design und ausreichend ähnliche Funktionalität, um sie mit der offiziellen Astro-Dokumentationswebsite zu vergleichen. Dies ermöglicht uns einen **_grob realistischen_** Vergleich zwischen beiden Site-Renderern.
+
+Ein wichtiger zu beachtender Unterschied zwischen beiden Sites im Test: SveltKits Dokumentation wird als einzelne Seite ausgeliefert, während Astros Dokumentation in einzelne Seiten geteilt ausgeliefert wird. Diese höhere Content-Last dürfte einen leicht negativen Einfluss auf die Leistung haben und ist nicht auf das Werkzeug an sich zurückzuführen.
+
+- **SvelteKit Leistungswert**: 92 von 100 [(vollständige Prüfung)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fkit.svelte.dev%2Fdocs)
+- **Astro Leistungswert**: 99 von 100 [(vollständige Prüfung)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+Der Leistungswert von SvelteKit in diesem Test ist vergleichbar mit dem von Astro.
+
+## Next.js vs. Astro
+
+[Next.js](https://nextjs.org/) ist eine beliebte Website- und Anwendungsbibliothek für React.
+
+Next.js verwendet React, um deine Website zu rendern. Astro ist hierin flexibler: Du kannst frei entscheiden mit welcher UI-Komponenten-Bibliothek du deine Oberfläche erzeugen willst (React, Preact, Vue, Svelte, Solid und andere), oder du verwendest die an HTML angelehnte Komponenten-Syntax von Astro, die sich ähnlich verhält wie HTML + JSX.
+
+Sowohl Next.js als auch Astro sind Bibliotheken für die Erzeugung von Websites. Next.js funktioniert am besten mit hochdynamischen Websites (wie Dashboards und Nachrichteneingängen), während Astro am besten mit größtenteils statischen Websites funktioniert (wie Content- und E-Commerce-Websites).
+
+Next.js unterstützt sowohl statische Site-Generierung (Static Site Generation, SSG) als auch Server-seitiges Rendering (Server-Side Rendering, SSR). Zur Zeit unterstützt Astro nur statische Site-Generierung (SSG).
+
+### Leistungsvergleich Next.js vs. Astro
+
+In den meisten Fällen werden Astro-Websites deutlich schneller laden als Next.js-Websites. Dies liegt vor allem daran, dass Astro unnötiges JavaScript vermeidet und nur diejenigen Komponenten einer Seite mit JavaScript anreichert, die dies benötigen. Dieses Feature wird [Partial Hydration](/de/core-concepts/component-hydration) genannt.
+
+Next.js unterstützt Partial Hydration nicht und lässt stattdessen den Browser die gesamte Seite erneut laden und mit JavaScript anreichern, selbst wenn der größte Teil der Seite statisch ist. Dies führt zu längeren Ladezeiten und schlechterer Leistung für deine Website. Next.js verfügt über [Experimental Support](https://piccalil.li/blog/new-year-new-website/#heading-no-client-side-react-code) für vollständig statische, Null-JavaScript-Seiten. Wie auch immer, eine Unterstützung für die Anreicherung individueller Komponenten einer Seite ist nicht geplant. In Bezug auf Interaktivität auf einzelnen Seiten ist entprechend nur eine Entscheidung zwischen ganz oder gar nicht möglich.
+
+Next.js verfügt über sehr gute integrierte Bildoptimierungen, was Next.js zur besseren Wahl für bilderlastige Websites machen könnte.
+
+### Fallstudie: Kompilieren einer Dokumentationswebsite
+
+[nextjs.org/docs](https://nextjs.org/docs/getting-started) ist die offizielle Next.js-Dokumentationswebsite - kompiliert mit Next.js. Die Website bietet ein ausreichend ähnliches Design und ausreichend ähnliche Funktionalität, um sie mit der offiziellen Astro-Dokumentationswebsite zu vergleichen. Dies ermöglicht uns einen **_grob realistischen_** Vergleich zwischen beiden Site-Renderern.
+
+- **Next.js Leistungswert**: 59 von 100 [(vollständige Prüfung)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fnextjs.org%2Fdocs%2Fgetting-started)
+- **Astro Leistungswert**: 99 von 100 [(vollständige Prüfung)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+Ein wesentlicher Grund für diesen Leistungsunterschied liegt in Astros geringerer JavaScript-Last: [nextjs.org/docs](https://nextjs.org/docs/getting-started) lädt **463kB** JavaScript mit dem ersten Seitenaufruf, während [docs.astro.build](https://docs.astro.build) **78.7kB** (83% weniger JavaScript insgesamt) _nach_ dem ersten Seitenaufruf lädt.
+
+## Nuxt vs. Astro
+
+[Nuxt](https://nuxtjs.org/) ist eine beliebte Website- und Anwendungsbibliothek für Vue. Es ist ähnlich aufgebaut wie Next.js.
+
+Nuxt verwendet Vue, um deine Website zu rendern. Astro ist hierin flexibler: Du kannst frei entscheiden mit welcher UI-Komponenten-Bibliothek du deine Oberfläche erzeugen willst (React, Preact, Vue, Svelte, Solid und andere), oder du verwendest die an HTML angelehnte Komponenten-Syntax von Astro, die sich ähnlich verhält wie HTML + JSX.
+
+Sowohl Nuxt als auch Astro sind Bibliotheken für die Erzeugung von Websites. Nuxt funktioniert am besten mit hochdynamischen Websites (wie Dashboards und Nachrichteneingängen), während Astro am besten mit größtenteils statischen Websites funktioniert (wie Content- und E-Commerce-Websites).
+
+Nuxt unterstützt sowohl statische Site-Generierung (Static Site Generation, SSG) als auch Server-seitiges Rendering (Server-Side Rendering, SSR). Zur Zeit unterstützt Astro nur statische Site-Generierung (SSG).
+
+### Leistungsvergleich Nuxt vs. Astro
+
+In den meisten Fällen werden Astro-Websites deutlich schneller laden als Nuxt-Websites. Dies liegt vor allem daran, dass Astro unnötiges JavaScript vermeidet und nur diejenigen Komponenten einer Seite mit JavaScript anreichert, die dies benötigen. Dieses Feature wird [Partial Hydration](/de/core-concepts/component-hydration) genannt.
+
+Nuxt unterstützt Partial Hydration nicht und lässt stattdessen den Browser die gesamte Seite erneut laden und mit JavaScript anreichern, selbst wenn der größte Teil der Seite statisch ist. Dies führt zu längeren Ladezeiten und schlechterer Leistung für deine Website. Es besteht keine Möglichkeit dieses Verhalten abzuschalten.
+
+Nuxt verfügt über sehr gute integrierte Bildoptimierungen, was Nuxt zur besseren Wahl für bilderlastige Websites machen könnte.
+
+### Fallstudie: Kompilieren einer Dokumentationswebsite
+
+[nuxtjs.org/docs](https://nuxtjs.org/docs/2.x/get-started/installation) ist die offizielle Nuxt-Dokumentationswebsite - kompiliert mit Nuxt. Die Website bietet ein ausreichend ähnliches Design und ausreichend ähnliche Funktionalität, um sie mit der offiziellen Astro-Dokumentationswebsite zu vergleichen. Dies ermöglicht uns einen **_grob realistischen_** Vergleich zwischen beiden Site-Renderern.
+
+- **Nuxt Leistungswert**: 48 von 100 [(vollständige Prüfung)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fnuxtjs.org%2Fdocs%2F2.x%2Fget-started%2Finstallation)
+- **Astro Leistungswert**: 99 von 100 [(vollständige Prüfung)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+Ein wesentlicher Grund für diesen Leistungsunterschied liegt in Astros geringerer JavaScript-Last: [nuxtjs.org/docs](https://nuxtjs.org/docs/2.x/get-started/installation) lädt **469kb** JavaScript mit dem ersten Seitenaufruf, während [docs.astro.build](https://docs.astro.build) **78.7kB** (83% weniger JavaScript insgesamt) _nach_ dem ersten Seitenaufruf lädt.
+
+## VuePress vs. Astro
+
+[VuePress](https://vuepress.vuejs.org/guide/) ist ein populärer Dokumentationssite-Renderer auf der Grundlage von Vue. VuePress verwendet Vue, um deine Website-UI zu generieren, während Astro in diesem Bereich React, Preact, Vue, Svelte, Solid und andere unterstützt - sowie auch eine an HTML angelehnte Komponenten-Syntax, die sich ähnlich verhält wie HTML + JSX.
+
+VuePress wurde entwickelt, um Dokumentationswebsites zu erzeugen und bietet einige dokumentationsspezifische Features, über die Astro nicht verfügt. Stattdessen verfügst du in Astro über dokumentationsspezifische Features mittels einer offiziellen [`docs`](https://github.com/withastro/astro/tree/main/examples/docs)-Vorlage, die du für deine Site verwenden kannst. Diese Website wurde unter Verwendung dieser Vorlage erstellt!
+
+Evan You (Erfinder von Vue) arbeitet zur Zeit an einer neuen Version von VuePress, genannt [VitePress](https://vitepress.vuejs.org/). Wenn du eine moderne Alternative zu VuePress suchst, [lies Evans Post](https://github.com/withastro/astro/issues/1159#issue-974035962) darüber, warum VitePress hierfür eine bessere Option darstellen kann.
+
+### Leistungsvergleich VuePress vs. Astro
+
+In den meisten Fällen werden Astro-Websites deutlich schneller laden als VuePress-Websites. Dies liegt vor allem daran, dass Astro unnötiges JavaScript vermeidet und nur diejenigen Komponenten einer Seite mit JavaScript anreichert, die dies benötigen. Dieses Feature wird [Partial Hydration](/de/core-concepts/component-hydration) genannt.
+
+VuePress unterstützt Partial Hydration nicht und lässt stattdessen den Browser die gesamte Seite erneut laden und mit JavaScript anreichern, selbst wenn der größte Teil der Seite statisch ist. Dies führt zu längeren Ladezeiten und schlechterer Leistung für deine Website. Es besteht keine Möglichkeit dieses Verhalten abzuschalten.
+
+### Fallstudie: Kompilieren einer Dokumentationswebsite
+
+[vuepress.vuejs.org](https://vuepress.vuejs.org/guide/) ist die offizielle VuePress-Dokumentationswebsite - kompiliert mit VuePress. Die Website bietet ein ausreichend ähnliches Design und ausreichend ähnliche Funktionalität, um sie mit der offiziellen Astro-Dokumentationswebsite zu vergleichen. Dies ermöglicht uns einen **_grob realistischen_** Vergleich zwischen beiden Site-Renderern.
+
+- **Vuepress Leistungswert**: 63 von 100 [(vollständige Prüfung)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fvuepress.vuejs.org%2Fguide%2F)
+- **Astro Leistungswert**: 99 von 100 [(vollständige Prüfung)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+Ein wesentlicher Grund für diesen Leistungsunterschied liegt in Astros geringerer JavaScript-Last: [vuepress.vuejs.org](https://vuepress.vuejs.org/guide/) lädt **166kb** JavaScript mit dem ersten Seitenaufruf, während [docs.astro.build](https://docs.astro.build) **78.7kB** (53% weniger JavaScript insgesamt) _nach_ dem ersten Seitenaufruf lädt.
+
+## Zola vs. Astro
+
+[Zola](https://www.getzola.org/) ist ein beliebter statischer Site-Renderer auf der Grundlage von Rust.
+
+Zola verwendet [Tera](https://tera.netlify.app/), um deine Website zu rendern. Astro erlaubt dir deine Websites mit deiner bevorzugten UI-Komponenten-Bibliothek (React, Preact, Vue, Svelte, Solid und andere) zu erzeugen, oder du verwendest die an HTML angelehnte Komponenten-Syntax von Astro, die sich ähnlich verhält wie HTML + JSX. Zola unterstützt keine modernen UI-Bibliotheken für die Erstellung von HTML-Templates.
+
+### Leistungsvergleich Zola vs. Astro
+
+Konzeptuell ist Zola auf Augenhöhe mit Astros "minimalistischem Einsatz von Client-seitigem JavaScript" bei der Web-Entwicklung. Zola und Astro bieten somit eine ähnliche Leistungsgrundlage durch ihre jeweilige Null-JavaScript-Strategie.
+
+Sowohl Zola als auch Astro bieten Unterstützung beim Kompilieren, Packen und Minifizieren von JavaScript. Zola benötigt hierfür ein zusätzliches Werkzeug wie Webpack, um JavaScript zu packen und zu verarbeiten. Astro entfernt automatisch unnötiges JavaScript von der Seite und reichert nur die individuellen Komponenten damit an, die dies benötigen. Dieses Feature wird [Partial Hydration](/de/core-concepts/component-hydration) genannt. Während es dir natürlich möglich ist dieses Feature in Zola von Hand einzurichten, steht es dir in Astro bereits von vornherein zur Verfügung.
diff --git a/smoke/docs-main/src/pages/de/core-concepts/astro-components.md b/smoke/docs-main/src/pages/de/core-concepts/astro-components.md
new file mode 100644
index 000000000..18ce76789
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/core-concepts/astro-components.md
@@ -0,0 +1,386 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Astro-Komponenten
+description: Einführung in die .astro-Komponenten-Syntax.
+---
+
+**Astro-Komponenten** (Dateien mit der Endung `.astro`) sind die Grundlage des Server-seitigen Templating in Astro. Du kannst dir die Astro-Komponenten-Syntax als HTML - erweitert um JavaScript - vorstellen.
+
+Eine neue Syntax kann zu Beginn einschüchternd wirken, daher haben wir bei der Entwicklung der Astro-Komponenten-Syntax besonders darauf geachtet, dass sie sich für Web-Entwickler so vertraut wie möglich anfühlt. Sie lehnt sich sehr stark an Modelle an, die du wahrscheinlich schon kennst: Komponenten, Frontmatter, Props und JSX-Ausdrücke. Wir sind zuversichtlich, dass du mit Hilfe dieser Anleitung in kürzester Zeit Astro-Komponenten schreiben wirst, besonders wenn du bereits mit HTML & JavaScript vertraut bist.
+
+## Syntax-Übersicht
+
+Eine einzelne `.astro`-Datei repräsentiert eine einzelne Astro-Komponente in deinem Projekt. Dieses Modell wird als **Single-File Component (SFC)** bezeichnet. Sowohl Svelte (`.svelte`) als auch Vue (`.vue`) folgen ebenfalls diesem Modell.
+
+Im Weiteren findest du eine eingehende Beschreibung der verschiedenen Elemente und Merkmale der Astro-Komponenten-Syntax. Du kannst sie von Anfang bis Ende durchlesen oder auch zwischen den Abschnitten springen.
+
+### HTML-Template
+
+Die Astro-Komponenten-Syntax ist eine Obermenge von HTML. **Wenn du HTML kennst, weißt du bereits genug, um deine erste Komponente zu schreiben.**
+
+Zum Beispiel ist diese dreizeilige Datei eine gültige Astro-Komponente:
+
+```html
+<!-- Beispiel1.astro - statisches HTML ist eine gültige Astro-Komponente! -->
+<div class="beispiel-1">
+ <h1>Hallo Welt!</h1>
+</div>
+```
+
+Eine Astro-Komponente repräsentiert einen Schnipsel HTML in deinem Projekt. Dies kann eine mehrfach verwendbare Komponente sein, oder eine vollständige Seite HTML einschließlich `<html>`-, `<head>`- und `<body>`-Elementen. Lies auch unsere Anleitung zu [Astro-Seiten](/de/core-concepts/astro-pages), um zu lernen wie du deine erste vollständige HTML-Seite mit Astro erzeugen kannst.
+
+**Jede Astro-Komponente muss ein HTML-Template beinhalten.** Auch wenn du deine Komponente auf vielfältige Weise erweitern kannst (siehe unten), bestimmt am Ende des Tages doch das HTML-Template, wie deine gerenderte Komponente aussehen wird.
+
+### CSS-Styles
+
+CSS-Regeln innerhalb eines `<style>`-Tag werden spezifisch nur auf diese Komponente angewendet. Das bedeutet auch, dass du Klassennamen über unterschiedliche Komponenten hinweg wiederholt verwenden kannst, ohne auf mögliche Konflikte achten zu müssen. Styles werden mit jedem Build automatisch extrahiert und optimiert, so dass du dir über das Laden der passenden Styles keine Gedanken machen musst.
+
+Um dabei die besten Ergebnisse zu erzielen, solltest du nicht mehr als ein `<style>`-Tag pro Astro-Komponente verwenden. Dies ist keine zwingende Beschränkung, wird aber oftmals zu einer besseren Optimierung des CSS in einem Build führen. Wenn du mit kompletten Seiten arbeitest, kann das `<style>`-Tag innerhalb des `<head>`
+-Blocks stehen. In alleinstehenden Komponenten kann ein `<style>`-Tag in der oberste Ebene eines Template gesetzt werden.
+
+```html
+<!-- Astro-Komponente CSS-Beispiel -->
+<style>
+ .kreis {
+ background-color: red;
+ border-radius: 999px;
+ height: 50px;
+ width: 50px;
+ }
+</style>
+<div class="kreis"></div>
+```
+
+```html
+<!-- Astro-Seite CSS-Beispiel -->
+<html>
+ <head>
+ <style>
+ .kreis {
+ background-color: red;
+ border-radius: 999px;
+ height: 50px;
+ width: 50px;
+ }
+ </style>
+ </head>
+ <body>
+ ...
+ </body>
+</html>
+```
+
+Die Verwendung von `<style global>` schaltet die ausschließlich spezifische Anwendung auf die enthaltende Komponente oder Seite für jede CSS-Regel im `<style>`-Block aus. Diese Umgehung sollte wann immer möglich vermieden werden, kann aber nützlich sein, wenn du zum Beispiel das Styling von HTML-Elementen aus einer externen Bibliothek ändern musst.
+
+Sass (eine Alternative zu CSS) ist ebenfalls verfügbar via `<style lang="scss">`.
+
+📚 Lies unsere vollständige Anleitung zum [Styling von Komponenten](/guides/styling), um mehr zu erfahren.
+
+### Frontmatter-Skript
+
+Um dynamische Komponenten zu erzeugen, bringen wir die Idee eines Frontmatter-Komponenten-Skripts ein. [Frontmatter](https://jekyllrb.com/docs/front-matter/) ist ein in Markdown übliches Muster, bei dem Konfigurations- und Metadaten innerhalb einer Code-Begrenzung (`---`) am Anfang der Datei stehen. Astro bietet etwas Vergleichbares, jedoch mit vollständiger Unterstützung für JavaScript & TypeScript innerhalb deiner Komponenten.
+
+Bedenke dass Astro eine Server-seitige Template-Sprache ist, also wird dein Komponenten-Skript während des Build ausgeführt, aber für den Browser wird nur das HTML gerendert. Um auch JavaScript an den Browser zu senden, kannst du ein `<script>`-Tag in deinem HTML-Template verwenden - oder du [konvertierst deine Komponente für die Verwendung einer bestimmten Frontend-Bibliothek](/de/core-concepts/component-hydration) wie React, Svelte, Vue etc.
+
+```astro
+---
+// Alles innnerhalb der `---`-Code-Begrenzung ist dein Komponenten-Skript.
+// Dieser JavaScript-Code wird während des Build ausgeführt.
+// Siehe weiter unten, was du damit machen kannst.
+console.log('Dies hier wird mit dem Build ausgeführt - ist in der CLI-Ausgabe zu sehen');
+// Tipp: TypeScript wird ebenfalls direkt unterstützt!
+const thisWorks: number = 42;
+---
+<div class="example-1">
+ <h1>Hallo Welt!</h1>
+</div>
+```
+
+### Komponenten-Importe
+
+Eine Astro-Komponente kann andere Astro-Komponenten innerhalb des eigenen HTML-Template wiederverwenden. Dies legt den Grundstein für unser Komponenten-System: Erzeuge neue Komponenten und verwende sie anschließend überall in deinem Projekt.
+
+Um eine Astro-Komponente in deinem Projekt zu verwenden, musst du sie zunächst im Frontmatter-Komponenten-Skript importieren. Eine Astro-Komponente ist immer der Standard-Import der Datei.
+
+Einmal importiert, kannst du sie wie jedes andere HTML-Element in deinem Template verwenden. Beachte dass eine Astro-Komponente mit einem Großbuchstaben beginnen **MUSS**. Astro nutzt dies, um zwischen nativen HTML-Elementen (`form`, `input`, etc.) und deinen eigenen Astro-Komponenten zu unterscheiden.
+
+```astro
+---
+// Importiere deine Komponenten in deinem Komponenten-Skript...
+import EineKomponente from './EineKomponente.astro';
+---
+<!-- ... und verwende sie dann in deinem HTML! -->
+<div>
+ <EineKomponente />
+</div>
+```
+
+📚 Du kannst auch Komponenten aus anderen Frontend-Bibliotheken wie React, Svelte, Vue und anderen importieren und verwenden. Lies unsere Anleitung zu [Partial Hydration](/de/core-concepts/component-hydration), um mehr zu erfahren.
+
+### Dynamische JSX-Ausdrücke
+
+Anstatt für dynamisches Templating unsere eigene Syntax zu entwickeln, geben wir dir den direkten Zugriff auf JavaScript innerhalb deines HTML, indem wir etwas verwenden, das sich wie [JSX](https://reactjs.org/docs/introducing-jsx.html) anfühlt.
+
+Astro-Komponenten können lokale Variablen innerhalb des Frontmatter-Skriptes definieren. Jedes Skript-Variable ist anschließend automatisch im HTML-Template darunter verfügbar.
+
+#### Dynamische Werte
+
+```astro
+---
+const name = "Dein Name hier";
+---
+<div>
+ <h1>Hallo {name}!</h1>
+</div>
+```
+
+#### Dynamische Attribute
+
+```astro
+---
+const name = "Dein Name hier";
+---
+<div>
+ <div data-name={name}>Attribut-Ausdrücke unterstützt</div>
+ <div data-hint={`Verwende Template Literals, um ${"variables"} zu mischen.`}>So gut!</div>
+</div>
+```
+
+#### Dynamisches HTML
+
+```astro
+---
+const items = ["Hund", "Katze", "Schnabeltier"];
+---
+<ul>
+ {items.map((item) => (
+ <li>{item}</li>
+ ))}
+</ul>
+```
+
+### Komponenten-Eigenschaften (Props)
+
+Eine Astro-Komponente kann Eigenschaften definieren und annehmen. Eigenschaften sind über die `Astro.props` global in deinem Frontmatter-Skript verfügbar.
+
+```astro
+---
+// Beispiel: <EineKomponente greeting="(Optional) Hallo" name="Erforderlicher Name" />
+const { greeting = 'Hallo', name } = Astro.props;
+---
+<div>
+ <h1>{greeting}, {name}!</h1>
+</div>
+```
+
+Du kannst deine Eigenschaften mit TypeScript definieren, indem du eine `Props`-Type-Schnittstelle exportierst. Astro wird automatisch jede exportierte `Props`-Type-Schnittstelle erfassen und Type-Warnungen/Errors für dein Projekt generieren und ausgeben.
+
+Stelle sicher, dass du alle `import`- und `export`-Anweisungen oben in der Komponente angibst - vor jeder weiteren JavaScript- oder TypeScript-Logik!
+
+```astro
+---
+// Gib `import`- und `export`-Anweisungen zuerst
+// Beispiel: <EineKomponente /> (WARNUNG: "name"-Prop ist erforderlich)
+export interface Props {
+ name: string;
+ greeting?: string;
+}
+
+// Nachdem alle `import`- und `export`-Anweisungen gemacht sind, gib den Rest der Komponenten-Logik hier an
+const { greeting = 'Hallo', name } = Astro.props;
+---
+<div>
+ <h1>{greeting}, {name}!</h1>
+</div>
+```
+
+Anschließend kannst du die Komponenten-Eigenschaften folgendermaßen weiterreichen:
+
+```astro
+---
+// EineAndereKomponente.astro
+import EineKomponente from "./EineKomponente.astro";
+let firstName = "Welt!";
+---
+<EineKomponente name={firstName}/>
+```
+
+### Slots
+
+`.astro`-Dateien verwenden das [`<slot>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot)-Tag, um Komponenten-Zusammenstellungen zu ermöglichen. Wenn du von React oder Preact kommst, entspricht dies dem Konzept der `children`. Du kannst dir das `<slot>`-Element als einen Platzhalter für Markup vorstellen, das von außerhalb der Komponente hinzugefügt wird.
+
+```astro
+<!-- Beispiel: MeineKomponente.astro -->
+<div id="meine-komponente">
+ <slot /> <!-- untergeordnete Elemente landen hier -->
+</div>
+
+<!-- Verwendung -->
+<MeineKomponente>
+ <h1>Hallo Welt!</h1>
+</MeineKomponente>
+```
+
+Beachte dass, wenn der `<slot>`-Tag in einem HTML-Template nicht verwendet wird, alle untergeordneten Elemente, die an die Komponente übergeben werden, nicht gerendert werden.
+
+Slots werden sogar noch mächtiger, wenn **benannte Slots** verwendet werden. Anders als ein einzelnes `<slot>`-Element, das _alle_ untergeordneten Elemente rendert, erlauben benannte Slots mehrere Orte zu bestimmen, an denen untergeordnete Elemente plaziert werden sollen.
+
+> **Beachte:** Das `slot`-Attribut ist nicht auf reines HTML beschränkt, Komponenten können `slot` ebenfalls verwenden!
+
+```astro
+<!-- Beispiel: MeineKomponente.astro -->
+<div id="meine-komponente">
+ <header>
+ <!-- Untergeordnete Elemente mit dem `slot="header"`-Attribut landen hier -->
+ <slot name="header" />
+ </header>
+ <main>
+ <!-- Untergeordnete Elemente ohne `slot`- oder mit dem `slot="default"`-Attribut landen hier -->
+ <slot />
+ </main>
+ <footer>
+ <!-- Untergeordnete Elemente mit dem `slot="footer"`-Attribut landen hier -->
+ <slot name="footer" />
+ </footer>
+</div>
+
+<!-- Verwendung -->
+<MeineKomponente>
+ <h1 slot="header">Hallo Welt!</h1>
+ <p>Lorem ipsum ...</p>
+ <FooterKomponente slot="footer" />
+</MeineKomponente>
+```
+
+Slots können auch **Fallback-Platzhalter** rendern. Wenn keine passenden untergeordneten Elemente an einen `<slot>` weitergereicht werden, wird dieses `<slot>`-Element seine eigenen untergeordneten Platzhalter-Elemente rendern.
+
+```astro
+<!-- MeineKomponente.astro -->
+<div id="meine-komponente">
+ <slot>
+ <h1>Ich werde gerendert, wenn dieser Slot keine untergeordneten Elemente hat!</h1>
+ </slot>
+</div>
+
+<!-- Verwendung -->
+<MeineKomponente />
+```
+
+### Fragmente & Mehrfache Elemente
+
+Ein Astro-Komponenten-Template kann so viele Elemente in der obersten Ebene rendern, wie du willst. Anders als bei anderen UI-Komponenten-Bibliotheken musst du nicht alles mit einzelnen `<div>`-Elementen umschließen, wenn du das nicht bevorzugst.
+
+```html
+<!-- Eine Astro-Komponente kann mehrere Elemente in der obersten Ebene beinhalten: -->
+<div id="a" />
+<div id="b" />
+<div id="c" />
+```
+
+Allerdings musst du innerhalb eines JSX-Ausdrucks mehrere Elemente immer mit einem **Fragment** umschließen. Fragmente lassen dich auf einmal mehrere Elementen rendern, ohne dem DOM zusätzliche Nodes hinzuzufügen. Dies wird bei JSX-Ausdrücken auf Grund einer Beschränkung in JavaScript vorausgesetzt: Du kannst niemals mehr als ein Element in einem JavaScript-Ausdruck oder einer JavaScript-Funktion `zurückgeben`. Die Verwendung eines Fragments löst dieses Problem.
+
+Ein Fragment muss mit `<>` öffnen und mit `</>` schließen. Keine Sorge, wenn du es vergisst, wird dich der Astro-Kompilierer daran erinnern.
+
+```astro
+---
+const items = ["Hund", "Katze", "Schnabeltier"];
+---
+<ul>
+ {items.map((item) => (
+ <>
+ <li>Rot {item}</li>
+ <li>Blau {item}</li>
+ <li>Grün {item}</li>
+ </>
+ ))}
+</ul>
+```
+
+### Priorisierte Skripte
+
+Standardmäßig macht Astro keine Annahmen dazu, wie deine Skripte bereitgestellt werden sollen. Wenn du also einer Seite oder einer Komponente ein `<script>`-Tag hinzufügst, wird es nicht angerührt.
+
+Wenn du jedoch die Skripte aus der Komponente lösen und an den Anfang der Seite verschieben und anschließend für die Veröffentlichung gebündelt haben möchtest, kannst du das mit priorisierten Skripten machen.
+
+Ein **priorisiertes Skript** sieht so aus:
+
+```astro
+<script hoist>
+ // Ein Inline-Skript
+</script>
+```
+
+Oder es kann auf eine externe Skript-Datei verweisen:
+
+```astro
+<script src={Astro.resolve('./meine-komponente.js')} hoist></script>
+```
+
+Ein priorisiertes Skript kann innerhalb einer Seite oder Komponente stehen, und unabhängig davon wie oft die Komponente verwendet wird, das Skript wird nur einmal hinzugefügt:
+
+```astro
+---
+import TwitterTimeline from '../components/TwitterTimeline.astro';
+---
+
+<-- Das Skript wird nur einmal in den `head`-Block eingefügt. -->
+<TwitterTimeline />
+<TwitterTimeline />
+<TwitterTimeline />
+```
+
+## Vergleich `.astro` vs. `.jsx`
+
+`.astro`-Dateien können im Laufe der Entwicklung `.jsx`-Dateien sehr ähnlich werden, aber es gibt einige wesentliche Unterschiede. Hier ein Vergleich beider Formate.
+
+| Merkmal | Astro | JSX |
+| ------------------------------ | --------------------------------------------------- | ----------------------------------------------------- |
+| Dateiendungen | `.astro` | `.jsx` or `.tsx` |
+| Selbstdefinierte Komponenten | `<Großschreibung>` | `<Großschreibung>` |
+| Syntax Ausdruck | `{}` | `{}` |
+| Spread-Attribute | `{...props}` | `{...props}` |
+| Boolsche Attribute | `autocomplete` === `autocomplete={true}` | `autocomplete` === `autocomplete={true}` |
+| Inline-Funktionen | `{items.map(item => <li>{item}</li>)}` | `{items.map(item => <li>{item}</li>)}` |
+| IDE-Unterstützung | WIP - [VS Code][code-ext] | Phänomenal |
+| Benötigt JS-Import | Nein | Ja, (`React` oder `h`) müssen im Geltungsbereich sein |
+| Fragmente | Autom. oberste Ebene, `<>` innerhalb von Funktionen | Einfassen mit `<Fragment>` oder `<>` |
+| Mehrere Bibliotheken pro Datei | Ja | Nein |
+| Änderungen von `<head>` | Einfach `<head>` verwenden | Je nach Bibliothek (`<Head>`, `<svelte:head>`, etc.) |
+| Kommentarstil | `<!-- HTML -->` | `{/* JavaScript */}` |
+| Spezielle Zeichen | `&nbsp;` | `{'\xa0'}` oder `{String.fromCharCode(160)}` |
+| Attribute | `dash-case` | `camelCase` |
+
+## URL-Auflösung
+
+Es ist wichtig zu verstehen, dass Astro HTML-Referenzen **nicht** transformiert. Zum Beispiel in einem `<img>`-Tag mit einem relativen `src`-Attribut in `src/pages/about.astro`:
+
+```html
+<!-- ❌ Inkorrekt: wird versuchen `/about/thumbnail.png` zu laden -->
+<img src="./thumbnail.png" />
+```
+
+Da `src/pages/about.astro` als `/about/index.html` gespeichert wird, wird es dich möglicherweise überraschen, dass das Bild nach `/about/thumbnail.png` gespeichert wird. Um Konflikte zu vermeiden, wähle eine der zwei folgenden Optionen:
+
+#### Option 1: Absolute URL
+
+```html
+<!-- ✅ Korrekt: referenziert public/thumbnail.png -->
+<img src="/thumbnail.png" />
+```
+
+Der empfohlene Ansatz ist Dateien innerhalb von `public/*` zu speichern. Dies referenziert eine Datei unter `public/thumbnail.png`, welche nach dem Build zu `/thumbnail.png` aufgelöst wird (da `public/` dabei unter `/` endet).
+
+#### Option 2: Asset-Import-Referenzen
+
+```astro
+---
+// ✅ Korrekt: referenziert src/thumbnail.png
+import thumbnailSrc from './thumbnail.png';
+---
+
+<img src={thumbnailSrc} />
+```
+
+Falls du bevorzugst Assets gemeinsam mit Astro-Komponenten zu verwalten, kannst du die Datei mit JavaScript innerhalb des Komponenten-Skriptes importieren. Dies wird wie beabsichtigt funktionieren, erschwert jedoch die Referenzierung von `thumnail.png` an anderen Stellen innerhalb der Anwendung, da die finale URL nur schwer vorhersagbar ist (anders als mit Assets in `public/*`, wo sich die Adresse garantiert nie ändern wird).
+
+[code-ext]: https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode
diff --git a/smoke/docs-main/src/pages/de/core-concepts/astro-pages.md b/smoke/docs-main/src/pages/de/core-concepts/astro-pages.md
new file mode 100644
index 000000000..15beec1f4
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/core-concepts/astro-pages.md
@@ -0,0 +1,67 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Astro-Seiten
+description: Eine Einführung in Astro-Seiten - Komponenten die wie vollständige Seiten funktionieren.
+---
+
+**Seiten** sind eine spezielle Art der [Astro-Komponente](/de/core-concepts/astro-components), die das Routing, das Laden von Daten und das Templating für eine Seite deiner Website erledigt. Du kannst sie dir wie eine einfache Astro-Komponente vorstellen - jedoch mit erweiterter Zuständigkeit.
+
+Astro unterstützt Markdown für Content-lastige Seiten, wie Blog-Posts und Dokumentationen. Lies [Markdown-Inhalte](/guides/markdown-content), um mehr über das Schreiben von Seiten mit Markdown zu erfahren.
+
+## Dateibasiertes Routing
+
+Astro verwendet Seiten für etwas das **dateibasiertes Routing** genannt wird. Jede Datei in deinem `src/pages`-Verzeichnis wird eine Seite deiner Website - unter Verwendung des Dateinamens für die Festlegung der endgültigen Route.
+
+Astro-Komponenten (`.astro`) und Markdown-Dateien (`.md`) sind die einzigen Seitenformate, die in Astro unterstützt werden. Andere Seitentypen (wie z. B. `.jsx`-React-Komponenten) werden nicht unterstützt, aber du kannst andere Formate als UI-Komponenten _innerhalb_ einer `.astro`-Seite verwenden, um ein vergleichbares Ergebnis zu erhalten.
+
+```
+src/pages/index.astro -> meinesite.com/
+src/pages/about.astro -> meinesite.com/about
+src/pages/about/index.astro -> meinesite.com/about
+src/pages/about/me.astro -> meinesite.com/about/me
+src/pages/posts/1.md -> meinesite.com/posts/1
+```
+
+## Seiten-Templating
+
+Alle Astro-Komponenten geben HTML aus. Astro-Seiten geben ebenfalls HTML aus, müssen zusätzlich jedoch die besondere Aufgabe erfüllen eine vollständige _Seitenantwort_ zu liefern - einschließlich `<html>...</html>`, `<head>` ([MDN<span class="sr-only">- head</span>](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head)) und `<body>` ([MDN<span class="sr-only">- body</span>](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/body)).
+
+`<!doctype html>` ist optional - es wird automatisch hinzugefügt.
+
+```astro
+---
+// Beispiel: HTML-Seite Grundgerüst
+---
+<!doctype html>
+<html>
+ <head>
+ <title>Titel des Dokuments</title>
+ </head>
+ <body>
+ <h1>Hallo, Welt!</h1>
+ </body>
+</html>
+```
+
+## Laden von Daten
+
+Astro-Seiten können Daten abrufen, die benötigt werden, um deine Seiten zu generieren. Astro stellt dir zwei verschiedene Werkzeuge dafür zur Verfügung, die dabei helfen: **fetch()** und **top-level await**.
+
+📚 Lies unsere [vollständige Anleitung](/guides/data-fetching) über das Abrufen von Daten, um mehr zu erfahren.
+
+```astro
+---
+// Beispiel: Astro-Komponenten-Skripte, werden ausgeführt während des Build-Prozesses
+const response = await fetch('http://beispiel.de/filme.json');
+const data = await response.json();
+console.log(data);
+---
+<!-- Ausgabe des Ergebnisses auf der Seite -->
+<div>{JSON.stringify(data)}</div>
+```
+
+## Eigene 404-Fehlerseite
+
+Um eine eigene allgemeine 404-Fehlerseite zu erhalten, erzeuge eine `404.astro`-Datei in `/src/pages`. Diese Datei kompiliert zu einer `404.html`-Seite. Die meisten [Veröffentlichungsdienste](/guides/deploy) können diese Seite aufgreifen und verwenden sie entsprechend.
+
+Dieses Verhalten unterscheidet sich von dem standardmäßigen Verhalten beim Kompilieren von `page.astro` (oder `page/index.astro`) zu `page/index.html`.
diff --git a/smoke/docs-main/src/pages/de/core-concepts/component-hydration.md b/smoke/docs-main/src/pages/de/core-concepts/component-hydration.md
new file mode 100644
index 000000000..a804805b5
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/core-concepts/component-hydration.md
@@ -0,0 +1,113 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Partial Hydration in Astro
+description: Lerne wie Partial Hydration unter Verwendung der "Islands-Architecture" in Astro funktioniert.
+---
+
+**Astro generiert jede Website standardmäßig mit Null Client-seitigem JavaScript.** Verwende irgendeine Frontend-UI-Bibliothek, die dir gefällt (React, Svelte, Vue etc.), und Astro wird deine Arbeit im Build-Prozess automatisch als HTML rendern und sämtliches JavaScript entfernen. Dies führt dazu, dass jede Seite standardmäßig schnell lädt.
+
+Doch manchmal wird Client-seitiges JavaScript zwingend benötigt. Diese Anleitung zeigt, wie interaktive Komponenten in Astro funktionieren - unter Verwendung einer Technik die Partial Hydration (Partielle Anreicherung) genannt wird.
+
+```astro
+---
+// Beispiel: Eine React-Komponente importieren und anschließend verwenden.
+// Standardmäßig rendert Astro die Komponente als HTML und CSS während deines Build
+// - ohne Client-seitiges JavaScript.
+// (Du brauchst Client-seitiges JavaScript? Lies weiter...)
+import MeineReactKomponente from '../components/MeineReactKomponente.jsx';
+---
+<!-- 100% HTML, Null JavaScript! -->
+<MeineReactKomponente />
+```
+
+## Konzept: Partial Hydration
+
+Es gibt viele Fälle in denen du eine interaktive UI-Komponente benötigst, die im Browser ausgeführt wird:
+
+- Ein Bilder-Karussel
+- Eine Suche mit Auto-Vervollständigung
+- Ein Toggle-Button zum Öffnen und Schließen einer Sidebar
+- Ein "Jetzt kaufen"-Button
+
+In Astro ist es deine Aufgabe als Entwicklerin oder Entwickler innerhalb einer Seite die Ausführbarkeit von Komponenten im Browser ausdrücklich zu "deklarieren". Astro kann anschließend diese Information verwenden, um herauszufinden welches JavaScript benötigt wird - und die Seite um exakt das anreichern, was benötigt wird. Diese Technik wird als Partial Hydration bezeichnet.
+
+**Partial Hydration** -- das ausschließliche Anreichern der Komponenten, die JavaScript benötigen, während der Rest der Seite statisches HTML bleibt -- klingt eigentlich sehr einfach - und das sollte es auch sein! Websites wurden über Jahrzehnte so gebaut. Erst in den letzten Jahren erschienen immer mehr so genannte Single-Page-Anwendungen (SPAs), die die Idee ins Spiel brachten, dass deine gesamte Website in JavaScript geschrieben werden und das Ganze schließlich von jeder einzelnen Nutzerin und jedem einzelnen Nutzer im Browser kompiliert und ausgeführt werden könne.
+
+_Beachte: Partial Hydration (Partielle Anreicherung) wird manchmal auch als “Progressive Enhancement” oder “Progressive Hydration.” bezeichnet. Während durchaus leichte Unterschiede zwischen den Begriffen bestehen, kannst du sie für unsere Zwecke als verschiedene Synonyme des selben Konzeptes betrachten._
+
+**Partial Hydration ist das Geheimnis hinter der Geschichte von der standardmäßigen Schnelligkeit von Astro.** Next.js, Gatsby und andere JavaScript-Bibliotheken können Partial Hydration nicht unterstützen, da sie deine gesamte Website als eine einzelne JavaScript-Anwendung betrachten.
+
+## Konzept: Islands Architecture
+
+**Islands Architecture** ist die Idee Partial Hydration zu verwenden, um komplette Websites zu erzeugen. Islands Architecture ist eine Alternative zu der beliebten Idee deine gesamte Website in eine Client-seitige JavaScript-Anwendung zu packen, welche von den Nutzerinnen und Nutzern heruntergeladen werden muss.
+
+> In einem Modell aus "Inseln" ist Server-seitiges Rendering nicht die angeflanschte Optimierung, die darauf abzielt die SEO- oder UX-Werte zu verbessern. Stattdessen ist es die grundlegende Methode mit der Seiten an den Browser ausgeliefert werden. Das HTML das als Antwort auf eine Navigation zurückgegeben wird, enthält eine bedeutsame und unmittelbar gerenderte Repräsentation des Inhaltes, den die Nutzerin oder der Nutzer angefordert hat.
+> <br/> -- [Jason Miller](https://jasonformat.com/islands-architecture/)
+
+Neben den offensichtlichen Leistungsvorteilen, wenn weniger JavaScript an den Browser geschickt und dort ausgeführt wird, verfügt eine Islands Architecture über zwei wesentliche Vorteile:
+
+- **Komponenten laden einzeln.** Eine leichtgewichtige Komponente (wie ein Sidebar-Toggle) wird schnell laden und rendern ohne von den schwereren Komponenten auf der Seite blockiert zu werden.
+- **Komponenten laden isoliert voneinander.** Jeder Teil einer Seite ist eine isolierte Einheit, und ein Leistungsproblem einer Einheit hat keinen direkten Einfluss auf die anderen.
+
+![Diagram](https://res.cloudinary.com/wedding-website/image/upload/v1596766231/islands-architecture-1.png)
+
+## Interaktive Komponenten anreichern
+
+Astro rendert jede Komponente auf dem Server **während des Build-Prozesses**, solange nicht [client:only](#mycomponent-clientonly-) verwendet wird. Um Komponenten Client-seitig **während der Laufzeit** anzureichern, kannst du jede der folgenden `client:*`-Direktiven verwenden. Eine Direktive ist das Attribut einer Komponente (getrennt durch einen `:`), das Astro mitteilt, wie deine Komponente gerendert werden sollte.
+
+```astro
+---
+// Beispiel: eine React-Komponente im Browser anreichern.
+import MeineReactKomponente from '../components/MeineReactKomponente.jsx';
+---
+<!-- "client:visible" bedeutet, die Komponente lädt solange kein
+ Client-seitiges JavaScript, bis sie im Browser sichtbar wird. -->
+<MeineReactKomponente client:visible />
+```
+
+### `<MeineKomponente client:load />`
+
+Reichere die Komponente beim Laden der Seite an.
+
+### `<MeineKomponente client:idle />`
+
+Reichere die Komponente an, sobald der Haupt-Thread frei ist (verwendet [requestIdleCallback()][mdn-ric]).
+
+### `<MeineKomponente client:visible />`
+
+Reichere die Komponente an, sobald das Element im Viewport der Nutzerin bzw. des Nutzers sichtbar wird (verwendet [IntersectionObserver][mdn-io]). Nützlich für Inhalte weiter unten auf der Seite.
+
+### `<MeineKomponente client:media={QUERY} />`
+
+Reichere die Komponente an, wenn der Browser der vorgegebenen Media-Query entspricht (verwendet [matchMedia][mdn-mm]). Nützlich für Sidebar-Toggles oder andere Elemente, die nur auf Mobil- oder nur auf Desktop-Geräten angezeigt werden sollen.
+
+### `<MeineKomponente client:only />`
+
+Reichert die Komponente beim Laden der Seite an, ähnlich wie `client:load`. Die Komponente wird während des Build-Prozessses **ausgelassen**, nützlich für Komponenten die vollständig von Client-seitigen API abhängig sind. Diese Direktive sollte am besten vermieden werden, solange sie nicht unbedingt benötigt wird. In den meisten Fällen ist es am besten, Server-seitig Platzhalter-Inhalte zu rendern und etwaige API-Aufrufe im Browser solange zu verzögern, bis die Komponente im Browser angereichert wurde.
+
+Falls mehr als ein Renderer in der Astro-[Konfiguration](/reference/configuration-reference) angegeben werden, benötigt `client:only` einen Hinweis, um zu wissen, welcher Renderer für die Komponente eingesetzt werden soll. Zum Beispiel würde `client:only="react"` sicherstellen, dass die Komponente im Browser mit dem React-Renderer angereichert wird. Bei eigenen Renderern, die nicht über `@astrojs` bereitgestellt werden, verwende den vollen Namen, so wie er in der Astro-Konfiguration erscheint, z. B. `<client:only="mein-eigener-renderer" />`.
+
+## Kann ich Astro-Komponenten anreichern?
+
+[Astro-Komponenten](./astro-components) (`.astro`-Dateien) sind reine HTML-Templating-Komponenten ohne Client-seitige Laufzeit. Wenn du versuchst eine Astro-Komponente über einem `client`-Modifikator anzureichern, wird ein Fehler ausgegeben.
+
+Um deine Astro-Komponente interaktiv zu machen, musst du sie zu einer Frontend-Bibliothek deiner Wahl konvertieren: React, Svelte, Vue etc. Für den Fall, dass du keine bestimmte Bibliothek bevorzugst, empfehlen wir React oder Preact, da sie am meisten Ähnlichkeit mit Astros Syntax aufweisen.
+
+Alternativ hierzu könntest du auch ein `<script>`-Tag zu deiner Astro-Komponente hinzufügen und auf diesem Weg JavaScript an den Browser senden. Das kann bei einfachen Funktionen noch ein guter Weg sein, bei komplexeren oder interaktiven Komponenten empfehlen wir eine Frontend-Bibliothek zu verwenden.
+
+```astro
+---
+// Beispiel: Astro mit script-Tags verwenden
+---
+<h1>Nicht geklickt</h1>
+<button>Klicke, um die Überschrift zu ändern</button>
+<script>
+document.querySelector("button").addEventListener("click",() => {
+ document.querySelector("h1").innerText = "geklickt"
+})
+</script>
+```
+
+[mdn-io]: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API
+[mdn-ric]: https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback
+[mdn-mm]: https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia
diff --git a/smoke/docs-main/src/pages/de/core-concepts/layouts.md b/smoke/docs-main/src/pages/de/core-concepts/layouts.md
new file mode 100644
index 000000000..ce630dde2
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/core-concepts/layouts.md
@@ -0,0 +1,155 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Layouts
+description: Einführung in Layouts, eine Art der Astro-Komponente, die für gemeinsame Layouts auf verschiedenen Seiten verwendet wird.
+---
+
+**Layouts** sind eine besondere Art [Komponente](/de/core-concepts/astro-components) - sie können dir helfen gemeinsame Seiten-Layouts über dein Projekt verteilt zu nutzen.
+
+Layouts verhalten sich so, wie andere mehrfach verwendbare Astro-Komponenten auch. Es gibt keine neue Syntax oder API zu erlernen. Allerdings sind mehrfach verwendbare Layouts ein so weit verbreitetes Modell im Bereich der Web-Entwicklung, dass wir diese Anleitung verfasst haben, um dich bei der Verwendung zu unterstützen.
+
+## Anwendung
+
+Astro-Layouts unterstützen Props, Slots und alle anderen Merkmale von Astro-Komponenten. Layouts sind letztendlich einfach normale Komponenten!
+
+Anders als andere Komponenten enthalten Layouts allerdings oft auch die einfassenden Seitenelemente `<html>`, `<head>` und `<body>` (die so genannte **Page Shell**).
+
+Es ist ein allgemein übliches Verfahren alle Layout-Komponenten unter einem einzigen `src/layouts`-Verzeichnis anzulegen.
+
+## Beispiel
+
+```astro
+---
+// src/layouts/BasisLayout.astro
+const {title} = Astro.props;
+---
+<html>
+ <head>
+ <title>Beispiel-Layout: {title}</title>
+ </head>
+ <body>
+ <!-- Fügt jeder Seite eine Navigationsleiste hinzu. -->
+ <nav>
+ <a href="#">Home</a>
+ <a href="#">Posts</a>
+ <a href="#">Kontakt</a>
+ </nav>
+ <!-- slot: Deine Seiteninhalte werden hier eingefügt. -->
+ <slot />
+ </body>
+</html>
+```
+
+📚 Über das `<slot />`-Element lässt sich in Astro definieren, wo untergeordnete Elemente (die an das Layout übergeben werden) erscheinen sollen. Erfahre mehr darüber wie `<slot />` funktioniert in unserer [Anleitung zu Astro-Komponenten](/de/core-concepts/astro-components).
+
+Sobald du dein erstes Layout erstellt hast, kannst du es so verwenden, wie du jede andere Komponente in einer Seite verwenden würdest. Denke daran, dass dein Layout den gesamten Seitenaufbau enthält: `<html>`, `<head>`, und `<body>`. Du musst nur den Seiteninhalt hinzufügen.
+
+```astro
+---
+// src/pages/index.astro
+import BasisLayout from '../layouts/BasisLayout.astro'
+---
+<BasisLayout title="Homepage">
+ <h1>Hallo Welt!</h1>
+ <p>Dies ist mein Seiteninhalt, er wird innerhalb eines Layouts ausgegeben.</p>
+</BasisLayout>
+```
+
+## Verschachtelte Layouts
+
+Du kannst Layouts ineinander verschachteln, wenn du vom Basis-Layout abweichende Layout-Elemente auf einzelnen Seiten einsetzen willst, ohne dabei jedes Mal das gesamte Layout zu wiederholen. Es ist ein übliches Verfahren in Astro ein generisches `BasisLayout` zu verwenden und auf diesem weitere spezifische Layouts (`PostLayout`, `ProduktLayout` etc.) aufzusetzen, die das `BasisLayout` als Grundlage verwenden.
+
+```astro
+---
+// src/layouts/PostLayout.astro
+import BasisLayout from '../layouts/BasisLayout.astro'
+const {title, author} = Astro.props;
+---
+ <!-- Dieses Layout verwendet das Basis-Layout (siehe obiges Beispiel): -->
+<BasisLayout title={title}>
+ <!-- Fügt neue Post-spezifische Inhalte zu jeder Seite hinzu. -->
+ <div>Post-Autor/Autorin: {author}</div>
+ <!-- slot: Deine Seiteninhalte werden hier eingefügt. -->
+ <slot />
+</BasisLayout>
+```
+
+## Layouts zusammenstellen
+
+Manchmal benötigst du detailliertere Kontrolle über deine Seiten. Zum Beispiel willst du vielleicht SEO- oder Social-Media-`meta`-Tags auf bestimmten Seiten hinzufügen, auf anderen aber nicht. Das kannst du mit Props in deinem Layout erreichen (`<BasisLayout addMeta={true} ...`) - ab einem bestimmten Punkt ist es möglicherweise jedoch leichter deine Layouts nicht zu verschachteln.
+
+Anstatt deine gesamte `<html>`-Seite als ein einziges großes Layout zu definieren, kannst du die `head`- und `body`-Inhalte als kleinere, getrennte Komponenten definieren. Hierdurch kannst du verschiedene Layouts auf jeder Seite zusammenstellen.
+
+```astro
+---
+// src/layouts/BasisHead.astro
+const {title, description} = Astro.props;
+---
+<meta charset="UTF-8">
+<title>{title}</title>
+<meta name="description" content={description}>
+<link rel="preconnect" href="https://fonts.gstatic.com">
+<link href="https://fonts.googleapis.com/css2?family=Spectral:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet">
+```
+
+Beachte dass dieses Layout deine **page shell** nicht mit einschließt und nur einige generische Elemente auflistet, die in deinem `<head>`-Block erscheinen sollen. Du hast mehr Kontrolle über die Struktur der einzelnen Seite und kannst mehrere Layout-Komponenten kombinieren.
+
+```astro
+---
+// src/pages/index.astro
+import BasisHead from '../layouts/BasisHead.astro';
+import OpenGraphMeta from '../layouts/OpenGraphMeta.astro';
+---
+<html>
+ <head>
+ <!-- Nun hast du volle Kontrole über `head` - pro Seite. -->
+ <BasisHead title="Title der Seite" description="Beschreibung der Seite" />
+ <OpenGraphMeta />
+ <!-- Du kannst je nach Bedarf sogar eigene einmalig benötigte Elemente hinzufügen. -->
+ <link rel="alternate" type="application/rss+xml" href="/feed/posts.xml">
+ </head>
+ <body>
+ <!-- ... -->
+ </body>
+</html>
+```
+
+Der Nachteil bei diesem Ansatz ist, dass du die `<html>`-, `<head>`- und `<body>`-Elemente dabei auf jeder Seite definieren musst. Diese werden benötigt, um die Seite vollständig zusammenzustellen, da die Layout-Komponenten nicht mehr die gesamte **Page Shell** beinhalten.
+
+## Markdown-Layouts
+
+Für Markdown-Dateien ist ein Layout unerlässlich. Markdown-Dateien können ein bestimmtes Layout im Frontmatter aufrufen. Jede Markdown-Datei wird als HTML gerendert und anschließend an der Stelle in den `<slot />` eingespeist, wo dieser im Layout definiert ist.
+
+```markdown
+---
+title: Blogpost
+layout: ../layouts/PostLayout.astro
+---
+
+Dieser Blogpost wird innerhalb des `<PostLayout />`-Layout **gerendert**.
+```
+
+Markdown-Seiten übergeben immer eine oder mehrere `content`-Eigenschaften an ihr Layout. Dies ist sehr hilfreich, um Informationen über die Seite, einen Titel, Metadaten, eine Index-Tabelle, Kopfzeilen und anderes für die Seite zur Verfügung zu haben.
+
+```astro
+---
+// src/layouts/PostLayout.astro
+const { content } = Astro.props;
+---
+<html>
+ <head>
+ <title>{content.title}</title>
+ </head>
+ <body>
+ <h1>{content.title}</h1>
+ <h2>{content.description}</h2>
+ <img src={content.image} alt="">
+ <article>
+ <!-- slot: Markdown-Inhalte erscheinen hier! -->
+ <slot />
+ </article>
+ </body>
+</html>
+```
+
+📚 Lerne mehr über die Verwendung von Markdown in Astro in unserer [Markdown-Anleitung](/guides/markdown-content).
diff --git a/smoke/docs-main/src/pages/de/core-concepts/project-structure.md b/smoke/docs-main/src/pages/de/core-concepts/project-structure.md
new file mode 100644
index 000000000..d1204b2a4
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/core-concepts/project-structure.md
@@ -0,0 +1,58 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Projektstruktur
+description: Lerne wie die Projektstruktur in Astro aufgebaut ist.
+---
+
+Astro verwendet eine dogmatische Verzeichnisstruktur für dein Projekt. Jedes Astro-Projekt muss die folgenden Verzeichnisse und Dateien enthalten:
+
+- `src/*` - Dein Source-Code (Komponenten, Seiten etc.)
+- `public/*` - Deine Nicht-Code-Assets (Schriften, Icons etc.)
+- `package.json` - Ein Projekt-Manifest
+
+Der einfachste Weg dein neues Projekt aufzusetzen, ist mittels `npm init astro`. Lies unsere [Installationsanleitung](/de/installation), um einen vollständigen Überblick darüber zu erhalten, wie ein Projekt automatisch (mit `npm init astro`) oder manuell aufgesetzt werden kann.
+
+## Projektstruktur
+
+```
+├── src/
+│ ├── components/
+│ ├── layouts/
+│ └── pages/
+│ └── index.astro
+├── public/
+└── package.json
+```
+
+### `src/`
+
+Das `src`-Verzeichnis beinhaltet den Großteil des Source-Code zu deinem Projekt. Dazu zählen:
+
+- [Astro-Komponenten](/core-concepts/astro-components)
+- [Astro-Seiten](/de/core-concepts/astro-pages)
+- [Layouts](/de/core-concepts/layouts)
+- [JavaScript-Komponenten](/de/core-concepts/component-hydration)
+- [Styling (CSS, Sass)](/guides/styling)
+- [Markdown](/guides/markdown-content)
+
+Astro hat vollständige Kontrolle darüber, wie diese Dateien verarbeitet, optimiert und in deinem abschließenden Website-Build gepackt werden. Einige Dateien (wie Astro-Komponenten) kommen niemals direkt im Browser an - sie werden stattdessen als HTML gerendert und ausgegeben. Andere Dateien (wie CSS) werden an den Browser gesendet, werden möglicherweise aber gepackt - in Abhängigkeit davon, wie deine Site sie einsetzt.
+
+### `src/components`
+
+[Komponenten](/de/core-concepts/astro-components) sind mehrfach verwendbare Einheiten der UI deiner Seiten. Es wird empfohlen (aber dies ist nicht zwingend notwendig), Komponenten in diesem Verzeichnis anzulegen. Wie diese darin strukturiert sind, kannst du frei entscheiden.
+
+Deine Nicht-Astro-Komponenten (React, Preact, Svelte, Vue etc.) können ebenfalls im `src/components`-Verzeichnis abgelegt werden. Astro wird automatisch alle Komponeneten als HTML rendern, solange du nicht mittels [Partial Hydration](/de/core-concepts/component-hydration) eine bestimmte Frontend-Komponente aktiviert hast.
+
+### `src/layouts`
+
+[Layouts](/de/core-concepts/layouts) sind mehrfach verwendbare Komponenten für die Gestaltung einzelner Seiten. Es wird empfohlen (aber dies ist nicht zwingend notwendig) Layout-Komponenten in diesem Verzeichnis anzulegen. Wie diese darin strukturiert sind, kannst du frei entscheiden.
+
+### `src/pages`
+
+[`src/pages`](/de/core-concepts/astro-pages) enthält alle Seiten (`.astro` und `.md` werden unterstützt) für deine Website. Es ist **zwingend** notwendig, dass du deine Seiten in diesem Verzeichnis anlegst.
+
+### `public/`
+
+Bei den meisten Nutzerinnen und Nutzern, wird der Großteil der Dateien innerhalb des `src`-Verzeichnisses liegen, so dass Astro sie in der richtigen Art und Weise während des Build-Prozesses verarbeiten und optimieren kann. Im Gegensatz dazu ist das `public`-Verzeichnis der passende Ort für alle Dateien, die nicht von Astros Build-Prozess abhängig sind.
+
+Wenn du eine Datei im `public`-Verzeichnis ablegst, wird diese von Astro nicht bearbeitet. Stattdessen wird sie unverändert in das `build`-Verzeichnis kopiert. Dies kann nützlich sein bei Assets von Bildern und Schriften - oder wenn du spezielle Dateien wie `robots.txt` oder `manifest.webmanifest` unverändert im Build verwenden willst.
diff --git a/smoke/docs-main/src/pages/de/core-concepts/routing.md b/smoke/docs-main/src/pages/de/core-concepts/routing.md
new file mode 100644
index 000000000..d42d2b094
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/core-concepts/routing.md
@@ -0,0 +1,102 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Routing
+description: Einführung in das Routing in Astro.
+---
+
+Astro verwendet **Datei-basiertes Routing**, um während des Build-Prozesses - entsprechend der Datei-Struktur im `src/pages`-Verzeichnis deines Projekts - die gültigen Routen und URL festzulegen. Wenn eine Datei zum `src/pages`-Verzeichnis deines Projekts hinzugefügt wird, ist sie basierend auf ihrem Dateinmanen automatisch über die entsprechende Route mit der entsprechenden URL erreichbar.
+
+## Statische Routen
+
+Astro-Komponenten (`.astro`) und Markdown-Dateien (`.md`) im `src/pages`-Verzeichnis werden zu Seiten deiner Website. Die Route zu jeder Seite wird zusammengesetzt aus den Dateinamen und dem Pfad zu den Dateien innerhalb des `src/pages`-Verzeichnisses. Das bedeutet, dass in einem Astro-Projekt keine separate Routing-Konfiguration verwaltet werden muss.
+
+```bash
+# Beispiel: Statische Routen
+src/pages/index.astro -> meinesite.com/
+src/pages/about.astro -> meinesite.com/about
+src/pages/about/index.astro -> meinesite.com/about
+src/pages/about/me.astro -> meinesite.com/about/me
+src/pages/posts/1.md -> meinesite.com/posts/1
+```
+
+## Dynamische Routen
+
+Manchmal musst du zu einer einzelnen Page-Komponente mehrere URLs generieren. Astro verwendet Datei-basiertes Routing, um **dynamische Routing-Parameter** zu unterstützen, so dass eine Seite - basierend auf einem Filter - zu verschiedenen dynamischen Routen passt.
+
+Es ist wichtig dabei zu beachten, dass Astro statische Seiten generiert. Es gibt keinen Astro-Server, der die Seiten auf Anfrage generiert und ausliefert. Dies bedeutet, dass jede Seite vorab erzeugt werden muss. Seiten die dynamische Routen verwenden, müssen daher eine `getStaticPaths()`-Funktion exportieren, die Astro genau vorgibt, welche Seiten generiert werden müssen. Du erfährst mehr darüber in der vollständigen [API-Referenz](/reference/api-reference#getstaticpaths).
+
+### Benannte Parameter
+
+Dynamische Parameter werden im Dateinamen unter Verwendung der `[Klammer]`-Schreibweise kodiert:
+
+- `pages/blog/[slug].astro` → `/blog/:slug` (`/blog/hallo-welt`, `/blog/post-2` etc.)
+- `pages/[username]/einstellungen.astro` → (`/fred/einstellungen`, `/drew/einstellungen` etc.)
+- `pages/[lang]-[version]/info.astro` → (`/en-v1/info`, `/fr-v2/info` etc.)
+
+#### Beispiel: Benannte Parameter
+
+Angenommen du hast eine Seite `pages/post/[pid].astro`:
+
+```astro
+---
+// Beispiel: src/pages/post/[pid].astro
+const {pid} = Astro.request.params;
+---
+<p>Post: {pid}</p>
+```
+
+Allen Routen mit z. B. `/post/1`, `/post/abc` etc. werden `pages/post/[pid].astro` entsprechen. Jeder passende Pfad-Parameter wird an die Page-Komponente unter `Astro.request.params` weitergegeben.
+
+Zum Beispiel wird die Route `/post/abc` das folgende `Astro.request.params`-Objekt zur Verfügung halten:
+
+```json
+{ "pid": "abc" }
+```
+
+Es können mehrere dynamische Routen-Abschnitte kombiniert werden, und sie funktionieren in der gleichen Weise. Die Seite `pages/post/[pid]/[kommentar].astro` wird der Route `/post/abc/ein-kommentar` entsprechen, und ihr `query`-Objekt wird entsprechend lauten:
+
+```json
+{ "pid": "abc", "kommentar": "ein-kommentar" }
+```
+
+### Rest-Parameter
+
+Falls du beim URL-Routing mehr Flexibilität benötigst, kannst du den Rest-Parameter als universalen Fänger verwenden. Dies erreichst du, indem du in den eckigen Klammern deinem Parameter drei Punkte (`...`) voranstellst. Zum Beispiel:
+
+- `pages/post/[...slug].astro` → (`/post/a`, `/post/a/b`, `/post/a/b/c`, etc.)
+
+Passende Parameter werden als `query`-Parameter (`slug` in diesem Beispiel) an die Seite übergeben. Dem obigen Beispiel folgend heißt das dem Pfad `post/a/b/c` entsprechende `query`-Objekt:
+
+```json
+{ "slug": "a/b/c" }
+```
+
+Du kannst auch andere Benennungen als `slug` verwenden, z. B.: `[...param]` oder `[...name]`.
+
+Rest-Parameter sind standardmäßig optional, `pages/post/[...slug]` würde also auch `/post/` entsprechen.
+
+#### Beispiel: Rest-Parameter
+
+Für ein `real-world`-Beispiel würdest du den `Github File Viewer` folgendermaßen implementieren:
+
+```
+/[org]/[repo]/tree/[branch]/[...file]
+```
+
+In diesem Beispiel würde eine Abfrage von `/withastro/astro/tree/main/docs/public/favicon.svg` folgende Parameter für die Seite verfügbar machen:
+
+```js
+{
+ org: 'withastro',
+ repo: 'astro',
+ branch: 'main',
+ file: 'docs/public/favicon.svg'
+}
+```
+
+## Warnungen
+
+- Statische Routen ohne Pfad-Parameter haben stets Vorrang vor allen anderen Routen, und Routen mit benannten Pfad-Parametern haben Vorrang vor Routen mit Rest-Parametern. Schau dir folgende Beispiele an:
+ - `pages/post/create.astro` - wird `/post/create` entsprechen
+ - `pages/post/[pid].astro` - wird `/post/1`, `/post/abc` etc. entsprechen, aber nicht `/post/create`
+ - `pages/post/[...slug].astro` - wird `/post/1/2`, `/post/a/b/c` etc. entsprechen, aber nicht `/post/create`, `/post/abc`
diff --git a/smoke/docs-main/src/pages/de/getting-started.md b/smoke/docs-main/src/pages/de/getting-started.md
new file mode 100644
index 000000000..470b9e2df
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/getting-started.md
@@ -0,0 +1,74 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Erste Schritte
+description: Eine einfache Einführung in Astro
+---
+
+Astro ist ein moderner Static-Site-Renderer (auch SSG - Static-Site-Generator). Erfahre worum es bei Astro eigentlich geht auf [unserer Homepage](https://astro.build/), oder lies [unseren Release Blogpost](https://astro.build/blog/introducing-astro).
+
+Diese Seite dient als Übersicht für die Astro-Dokumentation und alle damit verbundenen Ressourcen.
+
+## Astro ausprobieren
+
+Der einfachste Weg Astro auszuprobieren ist `npm init astro` in einem neuen Verzeichnis auf deinem Rechner auszuführen. Der CLI-Wizard wird dir helfen ein neues Astro-Projekt aufzusetzen.
+
+Um in fünf einfachen Schritten mit Astro loszulegen, lies [unsere Schnellstart-Anleitung](/de/quick-start).
+
+Alternativ kannst du unsere [Installationsanleitung](/de/installation) lesen, um eine ausführlichere Schritt-für-Schritt-Anleitung zu erhalten.
+
+### Beispielprojekte
+
+Falls du Astro lieber anhand von Beispielen kennenlernen möchtest, sieh dir unsere [vollständige Beispiel-Bibliothek](https://github.com/withastro/astro/tree/main/examples) auf GitHub an.
+
+Du kanst jedes dieser Beispiele lokal auf deinem Rechner ausprobieren, indem du `npm init astro` mit der CLI-Kennzeichnung `--template` im Terminal aufrufst. Die Kennzeichnung `--template` unterstützt auch externe Vorlagen und Vorlagen der Community.
+
+```bash
+# Rufe den Wizard zur Initialisierung auf und verwende diese offizielle Vorlage
+npm init astro -- --template [OFFIZIELLES_BEISPIEL_NAME]
+# Rufe den Wizard zur Initialisierung auf und verwende diese Community-Vorlage
+npm init astro -- --template [GITHUB_NAME]/[REPO_NAME]
+npm init astro -- --template [GITHUB_NAME]/[REPO_NAME]/pfad/zur/vorlage
+```
+
+### Online-Playgrounds
+
+Falls du Astro gerne in deinem Browser ausprobieren willst, kannst du einen Online-Code-Editor wie z. B. Stackblitz, CodeSandbox, Gitpod oder GitHub Codespaces verwenden. Nutze den "Open in Stackblitz"-Link zu einem beliebigen Besipiel aus unserer [Beispiel-Bibliothek](https://github.com/withastro/astro/tree/main/examples), oder [klicke hier](https://stackblitz.com/fork/astro), um ein neues Projekt in [Stackblitz](https://stackblitz.com/fork/astro) aufzusetzen.
+
+## Astro lernen
+
+Verschiedene Menschen mit unterschiedlichen Hintergründen und unterschiedlichen Lernansätzen kommen zu Astro. Gleichgültig ob du einen theoretischen oder einen praktischen Ansatz bevorzugst, wir hoffen, dass dieser Abschnitt hilfreich für dich ist.
+
+- Falls du **praktisches Lernen** bevorzugst, starte direkt mit ein Beispiel aus unserer [Beispiel-Liste](https://github.com/withastro/astro/tree/main/examples).
+- Falls du bevorzugst **Schritt für Schritt zu lernen**, starte mit unseren [grundlegenden Konzepten und Anleitungen](/de/core-concepts/project-structure).
+
+Wie jede unbekannte Technik, bringt Astro eine gewisse Lernkurve mit sich. Wir sind jedoch sicher, dass du mit ein bisschen Übung und Geduld schnell lernen _wirst_, wie Astro funktioniert.
+
+### Lerne die `.astro`-Syntax
+
+Wenn du anfängst mit Astro zu arbeiten, wirst du viele Dateien mit der Dateiendung `.astro` sehen. Das ist **Astros Komponenten-Syntax**: ein spezielles, HTML-ähnliches Dateiformat, welches Astro für Vorlagen benutzt. Es wurde in Anlehnung an HTML und JSX entworfen und sollte allen, die mit diesen Formaten Erfahrung haben, bekannt vorkommen.
+
+Unsere unterstützende Anleitung zu [Astro-Komponenten](/de/core-concepts/astro-components) ist eine gute Einführung in die Astro-Syntax - und der beste Weg sie zu lernen.
+
+### API-Referenz
+
+Dieser Abschnitt der Dokumentation ist nützlich, wenn du weitere Details zu einer bestimmen Astro-API erhalten möchtest. Zum Besipiel listet die [Referenz zur Konfiguration](/reference/configuration-reference) alle möglichen Konfigurationseigenschaften auf, die dir zur Verfügung stehen. Die [Referenz zu integrierten Komponenten](/reference/builtin-components) listet alle verfügbaren Kernkomponenten wie z. B. `<Markdown />` und `<Code />` auf.
+
+### Versionsdokumentation
+
+Diese Dokumentation ist immer auf dem Stand der letzten _stabilen_ Version von Astro. Sobald wir den v1.0-Meilenstein erreicht haben, werden wir auch die Möglichkeit anbieten eine versionsspezifische Dokumentation einzusehen.
+
+## Auf dem Laufenden bleiben
+
+Der [@astrodotbuild](https://twitter.com/astrodotbuild) Twitter-Account ist die offizielle Quelle für Ankündigungen vom Astro-Team.
+
+Zusätzlich veröffentlichen wir alle Ankündigungen in unserer [Discord-Community](https://astro.build/chat) im `#announcements`-Channel.
+
+Nicht jedes Astro-Release verdient einen eigenen Blogpost, aber du kannst ein detailliertes Log aller Änderungen für jedes Release im [`CHANGELOG.md` des Astro Repository](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md) nachlesen.
+
+## Fehlt etwas?
+
+Falls etwas in der Dokumentation fehlt, oder falls du einen bestimmten Teil verwirrend findest, [erstelle bitte ein Issue](https://github.com/withastro/astro/issues/new/choose) mit deinen Verbesserungsvorschlägen oder tweete an den [@astrodotbuild](https://twitter.com/astrodotbuild) Twitter-Account. Wir freuen uns, von dir zu hören!
+
+## Credit
+
+Diese Einführung basierte ursprünglich auf der Einführung zu [React](https://reactjs.org/).
diff --git a/smoke/docs-main/src/pages/de/guides/styling.md b/smoke/docs-main/src/pages/de/guides/styling.md
new file mode 100644
index 000000000..3d8fb0c82
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/guides/styling.md
@@ -0,0 +1,644 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Styling & CSS
+description: Lerne Komponenten mit Astro zu gestalten.
+---
+
+Astro verfügt über eine besondere Möglichkeit, um das Schreiben von CSS so einfach wie möglich zu halten: Astro-Komponenten können über das Einfügen eines `<style>`-Tags an beliebiger Stelle gestaltet werden.
+
+## Styles in Astro-Komponenten
+
+Standardmäßig werden in Astro-Komponenten alle Styles nur auf Elemente im Rahmen der Komponente (genannt **Scope**) angewandt, der sie hinzugefügt wurden. Dies kann die Arbeit mit Styles erheblich erleichtern, da du dich zu jeder Zeit nur um die Gestaltung der Komponente kümmern musst, an der du arbeitest.
+
+```html
+<!-- src/components/MeineKomponente.astro -->
+<style>
+ /* Klassen-Selektor im Scope der Komponente */
+ .text {
+ font-family: cursive;
+ }
+ /* Element-Selektor im Scope der Komponente */
+ h1 {
+ color: red;
+ }
+</style>
+
+<h1>Ich bin ein Style im Scope der Komponente, und ich bin rot!</h1>
+<p class="text">
+ Ich bin ein Style im Scope der Komponente, und ich bin kursiv!!
+</p>
+```
+
+Beachte dass der `h1`-Selektor hier nicht über die Komponente hinaus wirksam wird! Die Styles werden nicht auf andere `h1`-Tags außerhalb dieses Dokuments angewandt - auch nicht in untergeordneten Komponenten.
+
+_Tipp: Auch wenn es möglich ist hier Element-Selektoren zu verwenden, sollten doch bevorzugt Klassen-Namen verwendet werden. Das ist nicht nur ein klein wenig performanter, es ist auch leichter zu lesen, insbesondere in einem umfangreichen Dokument._
+
+### Globale Styles
+
+Natürlich besteht die tatsächliche Macht von CSS darin, Styles so häufig wie möglich wiederzuverwenden! Die bevorzugte Methode um globale Styles einzubinden, ist die Verwendung eines `<link>`-Tags im `<head>`-Block, ganz so wie du es gewohnt bist. Diese Methode kann in Astro auch im Zusammenhang mit dem `<style>`-Tag im Scope der Komponente angewandt werden:
+
+```html
+<!-- src/pages/index.astro -->
+<head>
+ <!-- Styles - geladen über src/styles/utils.css unter Verwendung von Astro.resolve() -->
+ <link rel="stylesheet" type="text/css"
+ href={Astro.resolve('../styles/utils.css')} />
+</head>
+<body>
+ <!-- Styles die nur im Scope der aktuellen Seite gelten
+ (nicht für untergeordnete Seiten oder andere Komponenten) -->
+ <style>
+ .title {
+ font-size: 32px;
+ font-weight: bold;
+ }
+ </style>
+
+ <!-- Die Klasse ".title" ist im Scope, aber wir können auch unsere
+ globalen Hilfsklasssen "align-center" und "margin top: 4" aus utils.css verwenden -->
+ <h1 class="title align-center mt4">Seitentitel im Scope</h1>
+</body>
+```
+
+_Beachte: `Astro.resolve()` ist ein nützliches Hilfsmittel, um Verweise auf Dateien von überall her aufzulösen ([docs][astro-resolve])_
+
+#### Styling untergeordneter Elemente
+
+Falls du Styles, die im Scope der Komponente gesetzt werden, auch auf untergeordnete Komponenten anwenden willst, kannst du auf die `:global()`-Funktion aus den [CSS-Modules][css-modules] zurückgreifen:
+
+```astro
+<!-- src/components/MeineKomponente.astro -->
+---
+import PostContent from './Post.astro';
+---
+<style>
+ /* Nur im Scope der aktuellen Komponente gültig */
+ h1 {
+ color: red;
+ }
+
+ /* Im Scope aller Komponenten unterhalb des Elements mit der .blogpost-Klasse gültig */
+ .blogpost :global(h1) {
+ color: blue;
+ }
+</style>
+
+<h1>Titel</h1>
+<article class="blogpost">
+ <PostContent />
+</article>
+```
+
+Dies ist eine sehr gute Methode, um Dinge zu stylen wie Blogposts oder Dokumente, die mit Inhalten aus einem CMS außerhalb von Astro gefüttert werden. Aber Vorsicht, wenn untergeordnete Elemente frei von Abhängigkeiten gestaltet werden, bricht dies auch die Verkapselung der Komponente auf. Das Arbeiten mit Komponenten die unterschiedlich aussehen, abhängig davon ob sie ein bestimmtes übergeordnetes Element haben oder nicht, kann sehr schnell unübersichtlich werden.
+
+#### Globale Styles innerhalb eines `<style>`-Tags
+
+Falls du globale Styles verwenden willst, ohne einen normalen `<link>`-Tag im `<head>`-Block zu verwenden (die empfohlene Variante), gibt es dafür mit `<style global>` eine Notlösung:
+
+```html
+<style global>
+ /* Wird auf alle h1-Tags der gesamten Site angewandt */
+ h1 {
+ font-size: 32px;
+ }
+</style>
+
+<h1>Globaler Style</h1>
+```
+
+Dasselbe kannst du erreichen, indem du einem Selektor die `:global()`-Funktion voranstellst:
+
+```html
+<style>
+ /* Wird auf alle h1-Tags deiner gesamten Site angewandt */
+ :global(h1) {
+ font-size: 32px;
+ }
+
+ /* h1-Style nur im Scope dieser Datei angewandt */
+ h1 {
+ color: blue;
+ }
+</style>
+```
+
+Es wird empfohlen diese Methoden nur dort einzusetzen, wo ein `<link>`-Tag nicht funktionieren würde. Es ist sehr schwer irrige globale Styles aufzuspüren, wenn sie verteilt auftreten und nicht in einer zentralen CSS-Datei stehen.
+
+📚 Lies unseren vollständigen Artikel über die Syntax in [Astro-Komponenten][astro-component], um mehr über die Verwendung des `<style>`-Tags zu erfahren.
+
+## Autoprefixer
+
+[Autoprefixer][autoprefixer] kümmert sich für dich um Browser-übergreifende CSS-Kompatibilität. Installiere autoprefixer (`npm install --save-dev autoprefixer`) und füge eine Datei mit dem Namen `postcss.config.cjs` deinem Hauptverzeichnis hinzu:
+
+```js
+// postcss.config.cjs
+module.exports = {
+ plugins: [require('autoprefixer')],
+};
+```
+
+_Beachte: Astro v0.21 und spätere Versionen erfordern diesen Schritt zur Einrichtung von autoprefixer. Vorherige Versionen haben dies automatisch ausgeführt._
+
+## PostCSS
+
+Du kannst jedes beliebige PostCSS-Plugin verwenden, indem du eine `postcss.config.cjs`-Datei deinem Hauptverzeichnis hinzufügst. Für das Setup und die Konfiguration des Plugins, das du installieren willst, folge der Dokumentation zu dem Plugin.
+
+---
+
+## Unterstützte Styling-Optionen
+
+Styling in Astro sollte so flexibel sein, wie du es haben willst! Die folgenden Optionen werden unterstützt:
+
+| Framework | Globales CSS | Scoped CSS | CSS-Modules |
+| :--------------- | :----------: | :--------: | :---------: |
+| `.astro` | ✅ | ✅ | N/A¹ |
+| `.jsx` \| `.tsx` | ✅ | ❌ | ✅ |
+| `.vue` | ✅ | ✅ | ✅ |
+| `.svelte` | ✅ | ✅ | ❌ |
+
+¹ _`.astro`-Dateien haben keine Laufzeit, daher nimmt Scoped-CSS hier den Platz von CSS-Modules ein (Styles sind im Scope der Komponenten, benötigen aber keine dynamischen Werte)_
+
+Alle Styles in Astro werden automatisch minifiziert und gepackt, du kannst so einfach nur dein CSS schreiben - und wir machen den Rest ✨.
+
+---
+
+## Frameworks und Bibliotheken
+
+### 📘 React/Preact
+
+`.jsx`-Dateien unterstützen sowohl globales CSS als auch CSS-Modules. Um letztere zu verwenden, benutze die Erweitereung `.module.css` (oder `.module.scss`/`.module.sass` wenn du Sass einsetzt).
+
+```js
+import './global.css'; // Verwende globales CSS
+import Styles from './styles.module.css'; // Verwende CSS-Modules (muss auf `.module.css`, `.module.scss`, or `.module.sass` enden!)
+```
+
+### 📗 Vue
+
+Vue unterstützt in Astro die selben Methoden wie `vue-loader`:
+
+- [vue-loader - Scoped-CSS][vue-scoped]
+- [vue-loader - CSS-Modules][vue-css-modules]
+
+### 📕 Svelte
+
+Svelte funktioniert in Astro ebenfalls genauso wie gewohnt: [Svelte-Styling-Docs][svelte-style].
+
+### 🎨 CSS-Präprozessoren (Sass, Stylus, etc.)
+
+Astro unterstützt als CSS-Präprozessoren [Sass][sass], [Stylus][stylus] und [Less][less] mittels [Vite][vite-preprocessors]. Der jeweils gewünschte Präprozessor kann wie folgt aufgesetzt werden:
+
+- **Sass**: Führe `npm install -D sass` aus und verwende `<style lang="scss">` oder `<style lang="sass">` (eingerückt) in `.astro`-Dateien
+- **Stylus**: Führe `npm install -D stylus` aus und verwende `<style lang="styl">` oder `<style lang="stylus">` in `.astro`-Dateien
+- **Less**: Führe `npm install -D less` aus und verwende `<style lang="less">` in `.astro`-Dateien
+
+Alle oben genannten können auch innerhalb eines JS-Frameworks ausgeführt werden! Folge einfach den Modellen, die das jeweilige Framework hierfür empfielt:
+
+- **React**/**Preact**: `import Styles from './styles.module.scss'`;
+- **Vue**: `<style lang="scss">`
+- **Svelte**: `<style lang="scss">`
+
+Darüber hinaus unterstützt Astro auch [PostCSS](#-postcss), aber die Einrichtung erfolgt [etwas abweichend hiervon](#-postcss).
+
+_Beachte: CSS unterhalb des `public/`-Verzeichnisses wird **nicht** verarbeitet! Platziere es stattdessen unterhalb des `src/`-Verzeichnisses._
+
+### 🍃 Tailwind
+
+Astro kann sehr einfach für die Verwendung von [Tailwind][tailwind] konfiguriert werden! Installiere die Abhängigkeiten:
+
+```
+npm install --save-dev tailwindcss
+```
+
+Und erzeuge zwei Dateien in deinem Hauptverzeichnis: `tailwind.config.cjs` und `postcss.config.cjs`:
+
+```js
+// tailwind.config.cjs
+module.exports = {
+ mode: 'jit',
+ purge: ['./public/**/*.html', './src/**/*.{astro,js,jsx,svelte,ts,tsx,vue}'],
+ // Weitere Optionen hier ...
+};
+```
+
+```js
+// postcss.config.cjs
+module.exports = {
+ plugins: [require('tailwindcss')],
+};
+```
+
+Damit bist du ausgerüstet, um Tailwind einzusetzen! Der von uns empfohlene Ansatz ist, eine Datei `src/styles/global.css` (oder wie du dein globales Stylesheet bevorzugterweise nennst) mit den [Tailwind-Utilities][tailwind-utilities] darin zu erzeugen - ungefähr in dieser Form:
+
+```css
+/* src/styles/global.css */
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+```
+
+Füge die Datei deiner Astro-Seite (oder deiner Layout-Komponente) hinzu:
+
+```astro
+<head>
+ <style global>
+ @import "../styles/global.css";
+ </style>
+</head>
+```
+
+Alternativ zu einer Datei `src/styles/global.css` kannst du Tailwind-Utilities auch in einzelnen `pages/*.astro`-Komponenten in einem `<style>`-Block hinzufügen. Aber vermeide sorgfältig etwaige Dopplungen! Falls du mehrere von Tailwind verwaltete Stylesheets verwendest, stelle sicher, dass du nicht die selben CSS-Styles mehrfach in verschiedenen CSS-Dateien an die Benutzerinnen und Benutzer schickst.
+
+#### Umziehen von v0.19
+
+Mit der [Version 0.20.0](https://github.com/withastro/astro/releases/tag/astro%400.20.0) packt, kompiliert und prozessiert Astro keine Dateien mehr, die im Verezichnis `public/` liegen. Wir haben ursprünglich empfohlen sämtliche Tailwind-Dateien im `public`-Verzeichnis zu speichern. Falls du dein Projekt diesem Modell folgend begonnen hast, solltest du alle Tailwind-Dateien in das `src`-Verzeichnis verschieben und sie in deinem Template über [Astro.resolve()][astro-resolve] importieren:
+
+```astro
+ <link
+ rel="stylesheet"
+ href={Astro.resolve("../styles/global.css")}
+ >
+```
+
+### 🎭 PostCSS
+
+PostCSS zu verwenden ist so einfach wie eine [`postcss.config.cjs`](https://github.com/postcss/postcss#usage)-Datei in deinem Hauptverzeichnis zu erzeugen.
+
+Beachte, dass dieses Plugin sämtliches CSS in deinem Projekt verarbeitet, einschließlich jeglicher Dateien die nach CSS kompiliert wurden (wie zum Beispiel `.scss`-Sass-Dateien).
+
+_Beachte: CSS unterhalb des `public/`-Verzeichnisses **wird nicht verarbeitet!** Platziere es stattdessen unterhalb des `src/`-Verzeichnisses, wenn PostCSS es vearbeiten soll._
+
+## Bündeln
+
+Sämtliches CSS wird minifiziert und automatisch gebündelt, wenn du `astro build` ausführst. Ohne zu sehr in die Tiefe zu gehen, die grundlgenden Regeln lauten wie folgt:
+
+- Wenn ein Style nur innerhalb einer Route auftaucht, wird er nur für diese Route geladen (`/_astro/[page]-[hash].css`)
+- Wenn ein Style innerhalb mehrerer Routen auftaucht, wird er in einem `/_astro/common-[hash].css`-Bündel zusammengefasst
+- Sämtliche Styles erhalten ihre Hashes in Bezug auf die Inhalte, für die sie gelten (das bedeutet, die Hashes ändern sich nur, wenn die Inhalte sich ändern)
+
+Wir werden unsere Styling-Optimierungen im Laufe der Zeit stetig weiterentwickeln und würden gerne euer Feedback dazu hören! Falls `astro build` unerwartete Styles generiert, oder wenn du Vorschläge zur Verbesserung hast, [eröffne bitte ein Issue][issues].
+
+_Beachte: Wenn einige Seiten-Styles gemeinsam gebündelt werden und andere Seiten-Styles auf die Seite bezogen bleiben, entwickeln sich hieraus meistens keine Probleme. Aber wenn Teile deiner Styles gebündelt werden, könnten sie \_technisch_ auch in einer anderen Reihenfolge laden, als von dir in deiner Kaskade intendiert. Auch wenn dieses Problem nicht nur Astro zu eigen ist - es besteht potentiell bei so ziemlich jedem Bündelungsprozess - so kann es dich doch unerwartet treffen, wenn du diese Möglichkeit nicht von vorne herein in Betracht ziehst. Stelle sicher, dass du deinen abschließenden Build eingehend diesbezüglich inspizierst - und [melde bitte auftretende Probleme][issues], auf die du stößt.\_
+
+## Fortgeschrittene Styling-Architektur
+
+Zu viele Entwicklungsumgebungen legen die Hände in den Schoß, wen es um CSS geht - oder sie warten im besten Fall mit erfundenen Beispielen auf, die dich nicht wirklich weiter bringen. Entwicklern zu sagen "Verwende einfach die Styling-Lösung, die dir gefällt!", ist ein netter Ansatz, der sich in der Praxis nicht bewährt. Nur sehr wenige Styling-Lösungen taugen für wirklich jedes Setup. Mit Astro verhält es sich in dieser Hinsicht nicht anders - manche Ansätze _werden_ besser funktionieren als andere.
+
+Ein Beispiel, um dies zu bebildern: Astro entfernt JS welches zur Laufzeit ausgeführt wird (sogar das eigentliche Framework wenn möglich). Somit wäre es eine schlechte Idee für sämtliche Styles auf gestylte JS-Elemente zu setzen, da dann React auch auf Seiten geladen werden müsste, wo es eigentlich nicht gebraucht wird. Oder du erzeugst mit dem Laden einen "[FOUC][fouc]", wenn dein statisches HTML geladen wird, aber der Browser noch darauf wartet, dass JavaScript vollständig heruntergeladen und ausgeführt wird. Oder stelle dir ein weiteres Beispiel am anderen Ende des Spektrums vor: _BEM_. Du kannst in Astro einen vollständig entkoppelten [BEM][bem]- oder [SMACSS][smacss]-Ansatz verfolgen. Doch das bedeutet eine große Menge manueller Wartung, die du vermeiden könntest - und es lässt dich vieles von dem Komfort verpassen, den dir [Astro-Komponenten](/de/core-concepts/astro-components) bieten können.
+
+Wir denken, es gibt einen Mittelweg zwischen intuitivem, aber langsamem CSS-in-JS und schnellem, aber mühseligem globalem CSS: **Hybrides Scoped-CSS + Utility-CSS**. Dieser Ansatz funktioniert gut in Astro, ist performant für die Nutzerinnen und Nutzer und ist entsprechend die wohl beste Styling-Lösung in Astro für _die meisten Leute_ (vorausgesetzt du bist bereit dich damit auseinanderzusetzen). Eine kurze Übersicht:
+
+**Dieser Ansatz ist gut für…**
+
+- Entwickler und Entwicklerinnen die etwas Neues bezüglich Styling ausprobieren wollen
+- Entwickler und Entwicklerinnen die ein paar dogmatische Annahmen bezüglich der CSS-Architektur zu schätzen wissen
+
+**Dieser Ansatz ist _NICHT_ gut für…**
+
+- Entwickler und Entwicklerinnen die bereits selbst starke dogmatische Annahmen bezüglich des Styling haben - und alles selbst kontrollieren wollen
+
+Lies weiter, wenn du nach ein paar dogmatischen Annahmen suchst 🙂. Wir werden den Ansatz beschreiben, indem wir ein paar Grundregeln festlegen, die dich anleiten sollen deine Styles zu definieren:
+
+### Hybrides Scoped-CSS + Utility-CSS
+
+#### Scoped Styles
+
+Du benötigst keine Erläuterung zu Komponenten-basiertem Design. Dir ist bereits klar, dass die Wiederverwendung von Komponenten eine gute Idee ist. Und es war diese Idee, die die Leute dazu brachte sich an Konzepte wie [gestylte Komponenten][styled-components] und [gestyltes JSX][styled-jsx] zu gewöhnen. Aber anstatt deine Nutzerinnen und Nutzer mit den langen Ladezeiten von CSS-in-JS zu belasten, kannst du mit Astro etwas Besseres einsetzen: **eingebaute Styles im Scope der Komponente**.
+
+```astro
+---
+// src/components/Button.astro -->
+---
+<style lang="scss">
+ /* ✅ Lokal im Scope! */
+ .btn {
+ padding: 0.5em 1em;
+ border-radius: 3px;
+ font-weight: 700;
+ }
+</style>
+<button type="button" class="btn">
+ <slot></slot>
+</button>
+```
+
+_Beachte: Wir verwenden hier in sämtlichen Beispielen `lang="scss"`, welches das Verschachteln und Teilen von [Farben und Variablen][sass-use] stark vereinfacht. Dies ist jedoch gänzlich optional, und du kannst ebenso gut normales CSS verwenden._
+
+Die `.btn`-Klasse ist auf die Komponente begrenzt und wird nicht über das Dokument hinaus wirksam. Dies bedeutet, du kannst dich **auf das Styling und musst dich nicht auf die Benennung konzentrieren**. Dieser Ansatz, der das Lokale an den Anfang stellt, fügt sich sehr gut in das ESM-getriebene Design von Astro, das Einkapselung und Wiederverwendbarkeit über eine globale Wirksamkeit stellt. Auch wenn es sich um ein einfaches Beispiel handelt, sollte festgehalten werden, dass dies **extrem gut skaliert**. Und für den Fall, dass du gemeinsame Werte zwischen Komponenten teilen willst, empfehlen wir das [Sass-Modulsystem][sass-use], das sehr einfach zu verwenden ist und sich perfekt in ein Design einfügt, in dem die Komponente an den Anfang gestellt wird.
+
+Im Kontrast zu diesem Ansatz erlaubt Astro auch globale Styles mittels der `:global()` und `<style global>`-Notlösungen. Es sollte jedoch soweit möglich vermieden werden sie einzusetzen. Ein einfaches Beispiel: Nehmen wir an, du hast deinen Button in einer `<Nav />`-Komponente verwendet und willst ihn dort anders gestalten. Du könntest versucht sein, das folgendermaßen zu probieren:
+
+```astro
+---
+// src/components/Nav.astro
+import Button from './Button.astro';
+---
+
+<style lang="scss">
+ .nav :global(.btn) {
+ /* ❌ Dies wird einen Konflikt mit <Button>-Styles erzeugen */
+ }
+</style>
+
+<nav class="nav">
+ <Button>Menü</Button>
+</nav>
+```
+
+Dies ist allerdings nicht erstrebenswert, da nun `<Nav>` und `<Button>` bei der endgültigen Gestaltung des Buttons konkurrieren. Sobald du jetzt den einen veränderst, musst du auch den anderen anpassen, und sie sind nicht mehr wirklich isoliert, so wie zuvor (sie sind nun verbunden in bidirektionaler Abhängigkeit). Es ist sehr leicht sich vorzustellen, dass dieses Modell nur ein paar mal wiederholt werden muss, bis die Befürchtung aufkommt, dass jede Veränderung von Styles _irgendwo_ das Styling in einem ganz anderem Teil der Anwendung kaputt macht.
+
+Stattdessen kannst du `<Button>` seine eigenen Styles kontrollieren lassen und es mit einer Prop versuchen:
+
+```astro
+---
+// src/components/Button.astro
+const { theme } = Astro.props;
+---
+<style lang="scss">
+ .btn {
+ /* ✅ <Button> hat nun wieder die Kontrolle über das Styling! */
+ [data-theme='nav'] {
+ // nav-friendly styles here…
+ }
+ }
+</style>
+
+<button type="button" data-theme={theme}>
+ <slot></slot>
+</button>
+```
+
+An anderer Stelle kannst du nun `<Button theme="nav">` verwenden, um zu bestimmen, welche Art von Button es ist. Dies bewahrt den Vertrag, in dem steht, dass _Button sich um seine Styles kümmert und Nav sich um seine_. Und du kannst den einen bearbeiten ohne den anderen zu beeinflussen. Der schlimmstmögliche Fall bei der Verwendung globaler Styles ist, dass eine Komponente kaputt und nicht mehr nutzbar ist (ihr fehlen wesentliche Teile ihrer Styles). Aber der schlimmstmögliche Fall bei der Verwendung von Props (z. B. bei einem Tippfehler) ist, dass die Komponente zurückgesetzt wird auf ihren ursprünglichen, aber immer noch nutzbaren, Zustand.
+
+💁 **Warum dies mit Astro gut funktioniert**. Astro ist im Wesentlichen von JavaScript-Modulen inspiriert: Du musst zu jeder Zeit nur wissen, was sich in deiner Datei befindet, und du musst dir niemals Gedanken darüber machen, welches Element aus einer anderen Datei Einfluss darauf hat, wie der Code ausgeführt wird. Aber wir sind damit nicht allein; Vue und Svelte haben beide die Idee vorangetrieben und popularisiert, dass Markup und Styles in ein und derselben Komponenten-Datei gut zusammenpassen. [Du kannst verschiedene Belange immer noch gut voneinander trennen][peace-on-css], sogar wenn Markup, Styles und Logik in einer Datei enthalten sind. Und tatsächlich ist es genau das, was Komponeten-Design so mächtig macht! Du kannst also einfach CSS schreiben ohne fürchten zu müssen, dass du einen Namen verwendest, der bereits von einer anderen Komponente in der App verwendet wird.
+
+#### Utility-CSS
+
+Vor Kurzem gab es eine Debatte über die ausschließliche Verwendung von Komponenten-Styles im Scope vs. die ausschließliche Verwendung von Utility-CSS. Aber wir stimmen Leuten wie Sarah Dayan zu, die fragen, [warum können wir nicht beides haben][utility-css]? Tatsache ist doch, dass während es großartig ist, Styles im Scope der Komponente zu haben, es immer noch hunderte von Male vorkommt, dass wenn die Website vollständig zusammengesetzt ist, zwei Elemente nicht _gut_ zusammenspielen und eines von beiden einen kleinen Stupser braucht. Oder es wird vielleicht eine abweichende Behandlung eines Textes in einer Komponenten-Instanz benötigt.
+
+Zwar ist die Vorstellung von perfekten, makellosen Komponenten schön, aber sie ist auch unrealistisch. Kein Design-System ist absolut perfekt, und jedes Design-System zeigt auch Ungereimtheiten. Und es passiert bei dem Versuch diese Ungereimtheiten aufzulösen, dass Komponenten ohne Utility-CSS durcheinander geraten. Utility-CSS ist großartig darin kleinere Optimierungen hinzuzufügen, um die Website fertigzustellen und ausliefern zu können. Aber es ist an sich auch unvollständig auf ganz eigene Art - wenn du z. B. jemals versuchst responsive Styles oder Fokussierungen mit Utility-CSS zu verwalten, kann das schnell zu einem großen Durcheinander werden!
+**Utility-CSS funktioniert am besten in Partnerschaft mit Styles im Scope der Komponente**. Und um so leicht wie möglich anwendbar zu sein, sollte Utility-CSS global sein (und sollte möglicherweise auch das einzige globale CSS sein - vielleicht neben reset.css), so dass du nicht mit Importen arbeiten musst, die allesamt willkürlich sind.
+
+Einige größere Probleme, die am besten mit Utility-CSS gelöst werden, sind:
+
+- [margin](https://github.com/drwpow/sass-utils#-margin--padding)
+- [padding](https://github.com/drwpow/sass-utils#-margin--padding)
+- [text- und background-color](https://github.com/drwpow/sass-utils#-color)
+- [font-size und font-family](https://github.com/drwpow/sass-utils#%F0%9F%85%B0%EF%B8%8F-font--text)
+- [Standardelement-Styling](https://github.com/kognise/water.css)
+
+In Astro empfehlen wir folgendes Setup hierfür:
+
+```html
+<head>
+ <link rel="stylesheet" href={Astro.resolve("../styles/global.css")} >
+</head>
+```
+
+Und in deinem lokalen Dateisystem kannst du natürlich auch Sass' [@use][sass-use] verwenden, um Dateien umstandslos miteinander zu kombinieren:
+
+```
+├── src/
+│ └── styles/
+│ ├── _base.scss
+│ ├── _tokens.scss
+│ ├── _typography.scss
+│ ├── _utils.scss
+│ └── global.scss
+```
+
+Was in jeder dieser Dateien stehen sollte, musst du selbst bestimmen, aber es lohnt sich, klein anzufangen. Füge Utilities immer erst hinzu, sobald du sie benötigst, und du wirst dein CSS-Gewicht unglaublich gering halten können. Und Utilities die du selbst geschrieben hast, um deinen realen Bedarf zu erfüllen, werden immer besser sein als etwas aus dem Regal.
+
+Zusammengefasst kannst du dir Styles im Scope der Komponente als das Rückgrat deiner gesamten Styles vorstellen, was etwa 80% ausmacht - und die fehlenden 20% füllen CSS-Utilities. Beide funktionieren gut im Tandem und gleichen gegenseitig ihre Schwächen aus.
+
+💁 **Warum dies in Astro gut funktioniert**: Astro wurde um die Idee von **"Scoped-CSS und globales Utility-CSS leben harmonisch zusammen** ♥️!" herum entwickelt. Nutze das so gut du kannst.
+
+### Weitere Vorschläge
+
+"Aber halt!", wirst du vielleicht sagen, nachdem du den vorherigen Abschnitt gelesen hast. "Das berücksichtigt nicht [meinen Anwendungsfall]!" Wenn du nach weiteren Ratschlägen zu einigen gängigen Styling-Problemen suchst, könnten dich die folgenden Vorschläge ineteressieren. Sie stehen alle miteinander in Verbindung und passen zu der Philosophie von **Hybrides Scoped-CSS + Utility-CSS**.
+
+1. Unterteile deine App in Layout-Komponenten und Basis-Komponenten
+2. Vermeide Flexbox- und Grid-Bibliotheken (schreibe deine eigenen!)
+3. Vermeide die Verwendung von `margin` in Wrappern für Komponenten
+4. Vermeide globale Media-Queries
+
+#### Vorschlag #1: Unterteile deine App in Layout-Komponenten und Basis-Komponenten
+
+Sicher wird diese Anleitung niemals lang genug sein, um die Frage zu beantworten _"Wie sollte eine Seite aufgebaut sein?"_ (das ist ein [Design-Problem!][cassie-evans-css]).
+Und doch liegt darin versteckt auch eine etwas spezifischere Frage, die wir beantworten _können_: _"Ein bestimmtes Layout angenommen - wie sollten Komponenten und Styles darin organisiert sein?"_ Die Antwort ist, **brenne niemals das Layout in Komponenten ein**. Erzeuge Layout-Komponenten, die das Layout bestimmen, und Basis-Komponenten (Buttons, Karten etc.) die nicht das Layout bestimmen. _Was bedeutet das?_ Gehen wir das an einem Beispiel durch, damit es klarer wird. Angenommen wir haben eine Seite, die folgendermaßen aussieht (die Zahlen stehen für unterschiedliche Komponenten):
+
+```
+|---------------|
+| 1 |
+|-------+-------|
+| 2 | 2 |
+|---+---|---+---|
+| 3 | 3 | 3 | 3 |
+|---+---+---+---|
+| 3 | 3 | 3 | 3 |
+|---+---+---+---|
+```
+
+Das Layout besteht aus einem riesig großen Post über die gesamte Breite, gefolgt von Posts mit halber Breite darunter. Und darunter wollen wir einen Haufen kleinerer Posts, die den Rest der Seite auffüllen. Der Einfachheit halber nennen wir sie `<RiesenPost>` (1), `<HalbePosts>` (2), und `<KleinePosts>` (3). Wir fügen sie wie folgt unserer Seite hinzu:
+
+```astro
+---
+// src/pages/index.astro
+
+import Nav from '../components/Nav.astro';
+import RiesenPost from '../components/RiesenPost.astro';
+import Grid from '../components/Grid.astro';
+import HalbePosts from '../components/HalberPost.astro';
+import KleinePosts from '../components/KleinerPost.astro';
+import Footer from '../components/Footer.astro';
+---
+<html>
+ <body>
+ <Nav />
+
+ <Grid>
+ <RiesenPost />
+ <HalbePosts />
+ <KleinePosts />
+ </Grid>
+
+ <Footer />
+ </body>
+</html>
+```
+
+Das ist _anscheinend_ sauber voneinander getrennt, aber der Schein kann trügen. Auf den ersten Blick nehmen wir vielleicht an, dass `<Grid>` das Layout kontrolliert, aber dieser Eindruck täuscht. Tatsächlich bestimmt `<RiesenPost>` seine Breite selbst, `<HalbePosts>` lädt zwei Komponenten und bestimmt die eigene Breite, und `<KleinePosts>` lädt vier oder mehr Komponenten und bestimmt seine eigene Breite. Insgesamt - `<Grid>` eingeschlossen - streiten sich **vier Komponenten** um dasselbe Layout. Entferne einen Post von `<HalbePosts>` und das Layout zerbricht. Bearbeite `<RiesenPost>`, das Layout zerbricht. Bearbeite `<Grid>`, das Layout zerbricht. Wenn du es dir genau überlegst, ist keine dieser Komponenten wirklich wiederverwendbar - sie könnten auch einfach in einer einzigen großen Datei stehen.
+
+Das ist tatsächlich das **Problem mit globalem CSS** in hübscher Verkleidung - mehrere Komponenten kämpfen darum, wie sie angeordnet werden, ohne dass es ein Layout in zentraler Verantwortung gibt (in der Art wie globales CSS)! Nun, da wir das Problem identifiziert haben, bestünde eine Möglichkeit es zu lösen darin, das gesamte Layout auf die oberste Ebene zu heben und dort ebenfalls alle Komponenten zu laden:
+
+```astro
+---
+// src/pages/index.astro
+
+import Nav from '../components/Nav.astro';
+import RiesenPost from '../components/RiesenPost.astro';
+import HalbePosts from '../components/HalberPost.astro';
+import KleinePosts from '../components/KleinerPost.astro';
+import Footer from '../components/Footer.astro';
+---
+
+<html>
+ <head>
+ <style lang="scss">
+ .wrapper {
+ max-width: 60rem;
+ margin-right: auto;
+ margin-left: auto;
+ padding-right: 2rem;
+ padding-left: 2rem;
+ }
+
+ .grid {
+ display: grid;
+ grid-gap: 1.5rem;
+ grid-template columns: 1fr 1fr 1fr 1fr;
+ }
+
+ .riesen-post {
+ grid-column: span 4;
+ }
+
+ .halber-post {
+ grid-column: span 2;
+ }
+
+ .kleiner-post {
+ grid-column: span 1;
+ }
+ </style>
+ </head>
+ <body>
+ <Nav />
+
+ <div class="wrapper">
+ <div class="grid">
+ <div class="riesen-post"><RiesenPost postId={12345} /></div>
+
+ <div class="halber-post"><HalberPost postId={12345} /></div>
+ <div class="halber-post"><HalberPost postId={12345} /></div>
+
+ <div class="kleiner-post"><KleinerPost postId={12345} /></div>
+ <div class="kleiner-post"><KleinerPost postId={12345} /></div>
+ <div class="kleiner-post"><KleinerPost postId={12345} /></div>
+ <div class="kleiner-post"><KleinerPost postId={12345} /></div>
+ <div class="kleiner-post"><KleinerPost postId={12345} /></div>
+ <div class="kleiner-post"><KleinerPost postId={12345} /></div>
+ <div class="kleiner-post"><KleinerPost postId={12345} /></div>
+ <div class="kleiner-post"><KleinerPost postId={12345} /></div>
+ </div>
+ </div>
+
+ <Footer />
+ </body>
+</html>
+```
+
+Einmal davon abgesehen, dass das mehr Code ist, bedeutet es tatsächlich eine viel klarere Trennung. Was zuvor ein 4-Komponenten-Layout war, wird nun zu 100% innerhalb der `index.astro`-Datei auf der obersten Ebene verwaltet (welche wir nun als **Layout-Komponente** betrachten - und wenn wir es weiterverwenden wollten, könnten wir es auch in eine eigene Datei extrahieren). Dein Layout ist jetzt zentralisiert, und die Komponenten sind nun wirklich wiederverwendbar, da es ihnen komplett egal ist, ob sie sich mit den anderen im selben Grid befinden oder nicht. Du kannst in jeder dieser Dateien die Styles bearbeiten ohne Gefahr zu laufen, dadurch Styles in anderen zu stören.
+
+Die Grundregel beim Arrangieren mehrerer Komponenten lautet, **es handelt sich um eine besondere Verantwortung**, die an einem zentralen Ort wahrgenommen werden sollte, anstatt über vier Komponenten hinweg, wie wir es angelegt hatten. Und tatsächlich sind Seiten auf der obersten Ebene sehr gut darin und sie sollten dir stets als Ausgangspunkt für deine Layout-Komponenten dienen. Probiere aus, wie weit du damit kommst, und extrahiere nur dann Layout-Komponenten hieraus, wenn es absolut notwendig ist.
+
+Zusammengefasst: **Wenn du mehrere Dateien anfassen musst, um dein Layout zu ändern, solltest du vielleicht alles gmeinsam in einer einzelnen Layout-Komponente neu organisieren.**
+
+💁 **Warum das in Astro gut funktioniert**: In Astro kann alles eine `.astro`-Komponente sein, und du bekommst niemals Performance-Probleme, gleichgültig wieviele Komponenten du hinzufügst. Aber der größte Vorteil beim Einsatz von [Layout-Isolierung][layout-isolated] besteht in den Einsparungen bei der Menge an CSS, die du benötigst.
+
+#### Vorschlag #2: Vermeide Flexbox- und Grid-Bibliotheken (schreibe deine eigenen!)
+
+Es mag sich sehr übergriffig anfühlen, wenn dir gesagt wird, du solltest deine geliebte Layout-Bibliothek, mit der du gut vertraut bist, nicht verwenden. Immerhin hat sie dich bis hierher gebracht! Aber die Zeiten von [Float-Madness](https://zellwk.com/blog/responsive-grid-system/) sind vorbei, ersetzt durch Flexbox und Grid - und um die zu verwalten brauchen wir keine Bibliotheken (Bibliotheken können die Aufgabe sogar erschweren).
+
+Viele Front-End-Entwicklerinnen und -Entwickler kennen den folgenden Gedankengang:
+
+1. Ich sollte soviel CSS wie möglich mehrfach verwenden (_gut!_)
+2. Viele Seiten verwenden dasselbe Layout (_hmm?_)
+3. Ich könnte eine bereits bestehende Lösung einsetzen, um meine gesamten Layout-Duplikate zu verwalten (_Moment mal!_)
+
+Während die Logik in sich stimmig ist, ist es in Wirklichkeit doch so, dass #2 nur selten auf ein Projekt zutrifft. Möglicherweise wurden viele Teile der Website nicht entwickelt, um in diese netten, gepflegten 12-Säulen-Raster einer Bibliothek zu passen. Sogar relativ bescheidene Websites können _hunderte_ Layouts enthalten, wenn du sämtliche Breakpoints mit einrechnest. Frage dich einmal selbst: _Wenn die Website, die ich baue, wirklich soviele unterschiedliche Layouts beinhaltet, warum verwende ich dann eine schwergewichtige Grid-Bibliothek, die mir nur generische Layouts ermöglicht?_
+
+Ein paar gut geschriebene Zeilen CSS-Grid hier und da werden sich perfekt an jede Situation anpassen; das Ganze ist höchstwahrscheinlich leichtgewichtiger und einfacher zu verwalten, als die schwergewichtige Bibliothek, mit der du doch so lange gekämpft hast. Anders herum betrachtet: Wenn du schon einige Stunden benötigst, um eine proprietäre Styling-Bibliothek zu lernen, dich mit ihr auseinanderzusetzen, Probleme zu melden etc., wäre es nicht besser diese Zeit darauf zu verwenden den Umgang mit Flexbox und Grid zu erlernen? Viele Leute brauchen nur eine Stunde, um die Grundlagen ausreichend zu verstehen - und damit kommt man schon ziemlich weit! Es gibt großartige kostenlose Lernmöglichkeiten, in die du deine Zeit investieren kannnst:
+
+- [Flexbox Froggy](https://flexboxfroggy.com/)
+- [CSS Grid Garden](https://cssgridgarden.com/)
+
+Kurz gesagt: Hör auf Layouts zu vereinfachen, wenn da nichts zu vereinfachen ist! Du wirst sehen, dass nicht nur deine Styles leichter zu organisieren, sondern dein CSS auch leichter und die Ladezeiten kürzer sind.
+
+💁 **Warum das in Astro gut funktioniert**: Grid-Bibliotheken sind ein einfacher und schneller Weg, um Stylesheets aufzublähen - und damit auch ein wesentlicher Beitrag zum Gebrauch von [Treeshaking][css-treeshaking], um überflüssige Styles wieder loszuwerden. Astro verwendet **kein** Treeshaking, um ungenutztes CSS für dich zu entfernen, da dies zu [Problemen][css-treeshaking] führen kann. Wir sagen nicht, dass du vollständig ohne Bibliotheken arbeiten sollst; wir sind große Fans von einigen Bibliotheken, wie zum Beispiel [Material UI][material-ui]. Aber wenn du zumindest die abertausende Layouts, die du nicht verwendest, aus deiner Bibliothek entfernen kannst, musst du später möglicherweise auch kein automatisches Treeshaking einsetzen.
+
+#### Vorschlag #3: Vermeide die Verwendung von `margin` in Wrappern für Komponenten
+
+Anders ausgedrückt, tu Folgendes nicht:
+
+```astro
+<!-- src/components/MeineKomponente.astro -->
+<style lang="scss">
+ .wrapper {
+ /* ❌ Tu das nicht! */
+ margin-top: 3rem;
+ }
+</style>
+
+<div class="wrapper"></div>
+```
+
+Wenn du dir das [CSS-Box-Model][box-model] vor Augen führst, dehnt sich darin `margin` stets über die Grenzen einer Box hinweg aus. Das bedeutet, wenn du `margin` auf das äußerste Element deiner Komponente anwendest, wird dies die Position angrenzender Komponenten beeinflussen. Selbst wenn die Styles im Scope der Komponete sind, betreffen sie _technisch_ auch Elemente um die Komponente herum - somit bricht dies mit dem [Konzept der Einschließung von Styles][layout-isolated].
+
+Wenn du Komponenten verwendest, die sich neu arrangieren oder anders dargestellt werden, sobald sie sich in der Nähe anderer Komponenten befinden, bedeutet dies einen Kampf, den du nur schwer gewinnen kannst. **Komponenten sollten sich identisch verhalten und aussehen, unabhängig davon wo sie platziert werden.** Das ist es, was sie zu Komponenten macht!
+
+💁 **Warum das in Astro gut funktioniert**: `margins` die andere Komponenten herumschubsen, unterwandern deine Styling-Architektur auf heimtückische Weise, und das kann zu wackeligen oder brüchigen Layout-Komponenten führen. Solche Dinge grundsätzlich zu vermeiden, erlaubt dir deine Layout-Komponenten einfach zu halten - und du wirst weniger Zeit mit Styling zubringen.
+
+#### Vorschlag #4: Vermeide globale Media-Queries
+
+Dieser letzte Punkt behandelt eine natürliche Beschränkung von **Styles im Scope**. Und diese bezieht sich auch auf Breakpoints! Du kennst diesen einen, seltsamen Breakpoint, bei dem deine `<Card />`-Komponente bei einer bestimmten Größe ungünstig umbricht? Du solltest dieses Problem innerhalb von `<Card />` lösen, und nicht _irgendwo_ anders.
+
+Selbst wenn du am Ende einen willkürlichen Wert wie `@media (min-width: 732px)` verwendest, wird das wahrscheinlich besser funktionieren, als es irgendwo mit einer _globalen_ [magischen Zahl][magic-number] zu probieren, die aber doch nur _in einem einzigen Kontext_ angewandt wird (eine willkürliche Zahl mag für den Rest der Anwendung "rätselhaft" sein, aber sie hat immer noch eine "konkrete" Bedeutung im Kontext einer Komponente, die diesen Wert benötigt).
+
+Zugegeben, diese Art von Konflikt vollständig zu lösen war bisher nahezu unmöglich; glücklicherweise gibt es inzwischen wachsende [Unterstützung für Container-Queries!][container-queries].
+
+Ein weiterer Anlass zur Beschwerde bei diesem Ansatz liegt in der Frage, "_Was ist aber, wenn ich zwei Komponenten habe, die dasselbe am selben Breakpoint tun?_", worauf ich antworten würde: Ein oder zwei solcher Punkte wird es immer geben; behandle sie einfach wie _Sonderfälle_. Wenn aber deine gesamte Anwendung aus Dutzenden solcher Fälle besteht, solltest du versuchen die Unterteilung deiner Komponenten so zu verändern, dass sie grundsätzlich deine [Layout-Isolierung][layout-isolated] besser unterstützen.
+
+💁 **Warum das in Astro gut funktioniert**: Dies ist wahrscheinlich der am wenigsten wichtige Punkt, weshalb er auch am Ende steht. Tatsächlich kannst du ihn auch überspringen, wenn er so für dich keine Rolle spielt. Aber es handelt sich um etwas, dem Leute versuchen in größerem Umfang Rechnung zu tragen - und dafür ein _globales_ System zu verwenden kann auch vollkommen unnötig sein. Versuche einmal _nicht_ auf globale Media-Queries ausgerichtet zu entwickeln - und schau wie weit du damit kommst!
+
+### 👓 Weitere Lektüre
+
+Diese Anleitung wäre nicht möglich ohne die folgenden Blogposts, die auf diese Themen eingehen und sie vertiefend erklären. Bitte lies sie - es lohnt sich!
+
+- [**Layout-isolated Components**][layout-isolated] von Emil Sjölander
+- [**In defense of utility-first CSS**][utility-css] von Sarah Dayan
+
+Wirf bitte auch einen Blick auf das [Stylelint][stylelint]-Projekt, mit dem du deine Styles in Form bringen kannst. Du bringst dein JS in Form, warum nicht auch dein CSS?
+
+[autoprefixer]: https://github.com/postcss/autoprefixer
+[astro-component]: /de/core-concepts/astro-components#css-styles
+[astro-resolve]: /reference/api-reference#astroresolve
+[bem]: http://getbem.com/introduction/
+[box-model]: https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/The_box_model
+[browserslist]: https://github.com/browserslist/browserslist
+[browserslist-defaults]: https://github.com/browserslist/browserslist#queries
+[cassie-evans-css]: https://twitter.com/cassiecodes/status/1392756828786790400?s=20
+[container-queries]: https://ishadeed.com/article/say-hello-to-css-container-queries/
+[css-modules]: https://github.com/css-modules/css-modules
+[css-treeshaking]: https://css-tricks.com/how-do-you-remove-unused-css-from-a-site/
+[fouc]: https://en.wikipedia.org/wiki/Flash_of_unstyled_content
+[layout-isolated]: https://web.archive.org/web/20210227162315/https://visly.app/blogposts/layout-isolated-components
+[less]: https://lesscss.org/
+[issues]: https://github.com/withastro/astro/issues
+[magic-number]: https://css-tricks.com/magic-numbers-in-css/
+[material-ui]: https://material.io/components
+[peace-on-css]: https://didoo.medium.com/let-there-be-peace-on-css-8b26829f1be0
+[sass]: https://sass-lang.com/
+[sass-use]: https://sass-lang.com/documentation/at-rules/use
+[smacss]: http://smacss.com/
+[styled-components]: https://styled-components.com/
+[stylus]: https://stylus-lang.com/
+[styled-jsx]: https://github.com/vercel/styled-jsx
+[stylelint]: https://stylelint.io/
+[svelte-style]: https://svelte.dev/docs#style
+[tailwind]: https://tailwindcss.com
+[tailwind-utilities]: https://tailwindcss.com/docs/adding-new-utilities#using-css
+[utility-css]: https://frontstuff.io/in-defense-of-utility-first-css
+[vite-preprocessors]: https://vitejs.dev/guide/features.html#css-pre-processors
+[vue-css-modules]: https://vue-loader.vuejs.org/guide/css-modules.html
+[vue-scoped]: https://vue-loader.vuejs.org/guide/scoped-css.html
diff --git a/smoke/docs-main/src/pages/de/installation.md b/smoke/docs-main/src/pages/de/installation.md
new file mode 100644
index 000000000..969f70046
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/installation.md
@@ -0,0 +1,178 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Installation
+description: So installierst du Astro mit NPM, PNPM oder Yarn.
+---
+
+Es gibt verschiedene Möglichkeiten Astro mit einem neuen Projekt zu installieren.
+
+## Vorbereitungen
+
+- **Node.js** - `v14.15.0`, `v16.0.0` oder höher
+- **Texteditor** - Wir empfehlen [VS Code](https://code.visualstudio.com/) mit unserer [offiziellen Astro-Erweiterung](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode)
+- **Terminal** - Astro wird im Wesentlichen über die Befehlszeile des Terminals gesteuert
+
+Zu Demonstrationszwecken verwenden wir in den folgenden Beispielen [`npm`](https://www.npmjs.com/), aber du kannst ebenso [`yarn`](https://yarnpkg.com/) oder [`pnpm`](https://pnpm.io/) verwenden, falls du eine npm-Alternative bevorzugst.
+
+## Astro-Projekt erzeugen
+
+`npm init astro` ist der einfachste Weg in einem neuen Projekt Astro zu installieren. Führe diesen Befehl in deinem Terminal aus, um unseren `create-astro`-Installationsassistenten zu starten, der dich bei der Einrichtung eines neuen Projekts unterstützt.
+
+```shell
+# Mit NPM
+npm init astro
+
+# Yarn
+yarn create astro
+
+# Pnpm
+pnpm create astro
+```
+
+Der [`create-astro`](https://github.com/withastro/astro/tree/main/packages/create-astro)-Assistent lässt dich aus einer Reihe von [Start-Vorlagen](https://github.com/withastro/astro/tree/main/examples) auswählen. Alternativ könntest du auch dein eigenes Astro-Projekt direkt aus GitHub heraus importieren.
+
+```bash
+# Hinweis: Ersetze "mein-astro-projekt" durch den Namen deines Projekts.
+
+# npm 6.x
+npm init astro mein-astro-projekt --template starter
+# npm 7+ (zusätzliche Bindestriche sind erforderlich)
+npm init astro mein-astro-projekt -- --template starter
+# yarn
+yarn create astro mein-astro-projekt --template starter
+# pnpm
+pnpm create astro mein-astro-projekt -- --template starter
+# Verwenden einer Drittanbietervorlage
+npm init astro mein-astro-projekt -- --template [GITHUB_NAME]/[REPO_NAME]
+# Verwenden einer Drittanbietervorlage innerhalb eines Repos
+npm init astro mein-astro-projekt -- --template [GITHUB_NAME]/[REPO_NAME]/pfad/zur/vorlage
+```
+
+Nachdem `create-astro` dein Projekt eingerichtet hat, denke daran die Abhängigkeiten deines Projekts mittels npm oder dem Paketmanager deiner Wahl zu installieren. In diesem Beispiel verwenden wir npm:
+
+```bash
+npm install
+```
+
+Du kannst dein Astro-Projekt nun [starten](#start-astro). Sobald du dein Astro-Projekt fertiggestellt hast, kannst du dein Projekt [kompilieren](#build-astro). Astro wird dann deine Anwendung fertig packen und dafür die statischen Seiten generieren, die du bei deinem bevorzugten Hosting-Anbieter [veröffentlichen](/guides/deploy) kannst.
+
+## Manuelle Installation
+
+Du kannst Astro auch ohne die Hilfe des `create-astro`-Assistenten einrichten. Nachfolgend findest du die wenigen zusätzlichen Schritte, die erforderlich sind, um Astro zum Laufen zu bringen.
+
+### Setze dein Projekt auf
+
+```bash
+# Verzeichnis erzeugen und in das Verzeichnis wechseln
+mkdir mein-astro-projekt
+cd mein-astro-projekt
+```
+
+Erstelle ein leeres Verzeichnis mit dem Namen deines Projekts und navigiere dann dorthin.
+
+### Erzeuge `package.json`
+
+```bash
+# Dieser Befehl erstellt eine grundlegende package.json-Datei für dich
+npm init --yes
+```
+
+Astro ist darauf ausgerichtet mit dem gesamten npm-Paket-Ökosystem zu arbeiten. Diese Arbeit wird durch ein Projektmanifest im Stammverzeichnis deines Projekts verwaltet, das als `package.json` bekannt ist. Für den Fall, dass du mit der `package.json`-Datei nicht vertraut bist, empfehlen wir dir dich kurz dazu in der [npm-Dokumentation] (https://docs.npmjs.com/creating-a-package-json-file) einzulesen.
+
+### Installiere Astro
+
+Soweit du den obigen Anweisungen gefolgt bist, solltest du ein Verzeichnis mit einer einzelnen `package.json`-Datei darin haben. Du kannst Astro jetzt in deinem Projekt aufsetzen.
+
+```bash
+npm install astro
+```
+
+Jetzt kannst du den Platzhalter im Abschnitt "scripts" deiner `package.json`-Datei, die `npm init` für dich erstellt hat, durch Folgendes ersetzen:
+
+```diff
+ "scripts": {
+- "test": "echo \"Error: no test specified\" && exit 1"
++ "dev": "astro dev",
++ "build": "astro build",
++ "preview": "astro preview"
+ },
+}
+```
+
+Der Befehl [`dev`](#start-astro) startet den Astro Entwicklungsserver auf `http://localhost:3000`. Sobald dein Projekt fertig ist, gibt der Befehl [`build`](#build-astro) dein Projekt in das Verzeichnis `dist/` aus. [Lese mehr über das Veröffentlichen von Astro-Builds](/guides/deploy).
+
+### Erstelle deine erste Seite
+
+Öffne deinen bevorzugten Texteditor und erstelle eine neue Datei in deinem Projekt:
+
+1. Erstelle eine neue Datei unter `src/pages/index.astro`.
+2. Kopiere den folgenden Code-Schnipsel (einschließlich der Bindestriche `---`) und füge ihn ein.
+
+```astro
+---
+// JS/TS-Code, der zwischen den (---) Bindestrichen geschrieben wurde,
+// wird ausschließlich auf dem Server ausgeführt!
+console.log('Du siehst mich im Terminal')
+---
+
+<html>
+ <body>
+ <h1>Hello, World!</h1>
+ </body>
+</html>
+
+<style lang='css||scss'>
+ body{
+ h1{
+ color:orange;
+ }
+ }
+</style>
+
+<script>
+ // Hier eingegebener JS-Code wird ausschließlich im Browser ausgeführt
+ console.log('Du siehst mich in den devTools')
+</script>
+```
+
+Das Obige ist ein Beispiel für Astros Komponenten-Syntax, die sowohl HTML als auch JSX umfasst.
+
+Du kannst weitere Seiten im Verzeichnis `src/pages` erstellen - Astro verwendet den Dateinamen, um neue Seiten für deine Site zu erzeugen. Zum Beispiel wird Astro durch das Erzeugen einer neuen Datei unter `src/pages/about.astro` (auch unter Wiederverwendung des Code-Schnipsels) eine neue Seite unter der URL `http://localhost/about` generieren.
+
+## [Starte Astro](#start-astro)
+
+```bash
+npm run dev
+```
+
+Astro wird von nun an deine Anwendung unter `http://localhost:3000` bereitstellen. Wenn du diese URL in deinem Browser öffnest, solltest du Astros "Hello, World" sehen.
+
+Falls du deinen Entwicklungsfortschritt im lokalen Netzwerk teilen oder die Anwendung von einem Telefon aus testen möchtest, füge einfach die folgende Option in `astro.config.mjs` hinzu:
+
+```js
+devOptions: {
+ hostname: '0.0.0.0';
+}
+```
+
+## [Kompiliere dein Projekt](#build-astro)
+
+Führe in deinem Projektverzeichnis den folgenden Befehl im Terminal aus:
+
+```bash
+npm run build
+```
+
+Dies weist Astro an deine Site zu erstellen und direkt zu speichern. Deine Anwendung steht nun im `dist/`-Verzeichnis bereit.
+
+## Nächste Schritte
+
+Geschafft! Du kannst jetzt mit dem Entwickeln beginnen!
+
+Wir möchten dich ermutigen, dir etwas Zeit zu nehmen, um mit der Art und Weise vertraut zu werden, wie Astro funktioniert. Am besten befasst du dich weitergehend mit der Dokumentation. Hier ein paar Empfehlungen:
+
+📚 Lerne mehr über die Projektstruktur in Astro in unserem [Artikel zur Projektstruktur](/de/core-concepts/project-structure)
+
+📚 Lerne mehr über die Komponenten-Syntax in Astro in unserem [Artikel zu Astro-Komponenten](/de/core-concepts/astro-components)
+
+📚 Lerne mehr über das dateibasierte Routing in Astro in unserem [Artikel zu Astro-Seiten](/de/core-concepts/astro-pages) und unserem [Artikel über Routing](/de/core-concepts/routing).
diff --git a/smoke/docs-main/src/pages/de/migration/0.21.0.md b/smoke/docs-main/src/pages/de/migration/0.21.0.md
new file mode 100644
index 000000000..3d8409ded
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/migration/0.21.0.md
@@ -0,0 +1,229 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Umstellung auf v0.21
+description: Projekte von Astro v0.20 umziehen.
+---
+
+## Vite
+
+Beginnend mit v0.21 werden Astro-Builds mittels [Vite](https://vitejs.dev) kompiliert.
+Bedingt hierdurch sollten Konfigurationen, die in `snowpack.config.mjs` geschrieben wurden, nach `astro.config.mjs` transferiert werden.
+
+```js
+// @ts-check
+
+/** @type {import('astro').AstroUserConfig} */
+export default {
+ renderers: [],
+ vite: {
+ plugins: [],
+ },
+};
+```
+
+Um mehr über die Konfiguration von Vite zu erfahren, lies bitte den [Vite Configuration Guide](https://vitejs.dev/config).
+
+## Aliasierung
+
+In Astro v0.21 können Aliase in `tsconfig.json` oder `jsconfig.json` hinzugefügt werden, um sie bei der Verwendung von _import_ einzusetzen.
+
+```json
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "@/components/*": ["components/*"]
+ }
+ }
+}
+```
+
+_Diese Aliase werden automatisch in die Konfiguration von [VSCode](https://code.visualstudio.com/docs/languages/jsconfig) und anderen Editoren übernommen._
+
+## Variablen in \<script> & \<style>
+
+In Astro v0.21 können _serialisierbare_ Server-seitige Variablen innerhalb Client-seitiger `<style>`- oder `<script>`-Tags übergeben werden.
+
+```astro
+---
+// tick.astro
+const foregroundColor = "rgb(221 243 228)";
+const backgroundColor = "rgb(24 121 78)";
+---
+<style define:vars={{foregroundColor, backgroundColor}}>
+ h-tick {
+ background-color: var(--backgroundColor);
+ border-radius: 50%;
+ color: var(--foregroundColor);
+ height: 15px;
+ width: 15px;
+ }
+</style>
+<h-tick>✓</h-tick>
+```
+
+## Komponenten in Markdown
+
+In Astro v0.21 können Komponenten aus beliebigen Frameworks in Markdown-Dateien verwendet werden.
+
+```markdown
+---
+layout: '...'
+setup: |
+ import MeineReactKomponente from '../components/MeineReactKomponente.jsx'
+---
+
+# Partial Hydration wenn sichtbar
+
+<MeineReactKomponente client:visible>
+
+# Hallo Welt!
+
+</MeineReactKomponente>
+```
+
+## Komponenten in Titeln(Frontmatter)
+
+Bisher ließen sich Astro-Komponenten innerhalb des Astro-Frontmatter erzeugen, indem dort JSX-Syntax anstelle der Astro-Syntax verwendet wurde. Mit dem neuen Compiler ist das nicht mehr möglich. Wir hoffen, dass wir diese Möglichkeit in einer zukünftigen Version von Astro wieder einführen können - in der wir hierfür jedoch eine andere API an Stelle der JSX-API verwenden werden.
+
+Um auf v0.21 umzustellen, konvertiere bitte alle JSX-Astro-Komponenten (dies sind alle Astro-Komponenten, die innerhalb des Frontmatter einer anderen Komponente erzeugt werden) in eigenständige Komponenten.
+
+## Umgebungsvariablen
+
+In Astro v21.0 können Umgebungsvariablen aus .env-Dateien in deinem Projektverzeichnis geladen werden.
+
+```ini
+.env # wird in allen Fällen geladen
+.env.local # wird in allen Fällen geladen, ignoriert von git
+.env.[mode] # wird nur im spezifizierten Modus geladen
+.env.[mode].local # wird nur im spezifizierten Modus geladen, ignoriert von git
+```
+
+Aus Sicherheitsgründen sind ausschließlich Variablen mit dem Prefix `PUBLIC_` für deinen Code verfügbar.
+
+```ini
+GEHEIMES_KENNWORT=kennwort123
+PUBLIC_IRGENDWER=dieser
+```
+
+In diesem Beispiel ist `PUBLIC_IRGENDWER` verfügbar als ìmport.meta.env.PUBLIC_IRGENDWER für Server- oder Client-seitigen Code, `GEHEIMES_KENNWORT` hingegen nicht.
+
+> In früheren Versionen wurde diesen Variablen das Prefix `SNOWPACK_PUBLIC` vorangestellt, und sie erforderten darüber hinaus das Plugin `@snowpack/plugin-env`.
+
+## Dateiendungen
+
+In Astro v21.0 muss auf Dateien unter Nennung ihrer tatsächlichen Erweiterung verwiesen werden - exakt so wie sie gespeichert sind.
+
+```tsx
+// Div.tsx
+export default function Div(props) {
+ return <div />;
+}
+```
+
+In diesem Beispiel müsste auf `Div.tsx` mit `Div.tsx` verwiesen werden, nicht mit `Div.jsx`.
+
+```diff
+- import Div from './Div.jsx' // Astro v0.20
++ import Div from './Div.tsx' // Astro v0.21
+```
+
+Diese Änderung betrifft auch Style-Dateien.
+
+```scss
+// Div.scss
+div {
+ all: unset;
+}
+```
+
+```diff
+- <link rel="stylesheet" href={Astro.resolve('./Div.css')}>
++ <link rel="stylesheet" href={Astro.resolve('./Div.scss')}>
+```
+
+## Plugins
+
+In Astro v0.21 können Vite-Plugins innerhalb von `astro.config.mjs` konfiguriert werden.
+
+```js
+import { imagetools } from 'vite-imagetools';
+
+export default {
+ vite: {
+ plugins: [imagetools()],
+ },
+};
+```
+
+Um mehr über Vite-Plugins zu lernen, lies bitte den [Vite Plugin Guide](https://vitejs.dev/guide/using-plugins.html).
+
+## Benutzerdefinierte Renderer
+
+In Astro v0.21 sollten Plugins ab jetzt `viteConfig()` verwenden.
+
+```diff
+// renderer-svelte/index.js
++ import { svelte } from '@sveltejs/vite-plugin-svelte';
+
+export default {
+ name: '@astrojs/renderer-svelte',
+ client: './client.js',
+ server: './server.js',
+- snowpackPlugin: '@snowpack/plugin-svelte',
+- snowpackPluginOptions: { compilerOptions: { hydratable: true } },
++ viteConfig() {
++ return {
++ optimizeDeps: {
++ include: ['@astrojs/renderer-svelte/client.js', 'svelte', 'svelte/internal'],
++ exclude: ['@astrojs/renderer-svelte/server.js'],
++ },
++ plugins: [
++ svelte({
++ emitCss: true,
++ compilerOptions: { hydratable: true },
++ }),
++ ],
++ };
++ },
+}
+```
+
+Um mehr über Vite-Plugins zu lernen, lies bitte den [Vite Plugin Guide](https://vitejs.dev/guide/using-plugins.html).
+
+> In früheren Versionen wurden diese Plugins mittels `snowpackPlugin` oder `snowpackPluginOptions` konfiguriert.
+
+## Änderungen bei der Gestaltung
+
+### Autoprefixer
+
+Autoprefixer wird nicht mehr automatisch eingebunden. Aktiviere Autoprefixer in zwei Schritten:
+
+1. Installiere zunächst die aktuelle Version (`npm i autoprefixer`)
+2. Erzeuge die Datei `postcss.config.cjs` im Hauptverzeichnis deines Projekts mit:
+ ```js
+ module.exports = {
+ plugins: {
+ autoprefixer: {},
+ },
+ };
+ ```
+ Die in Vite enthaltene Post-CSS-Konfiguration wird hierdurch ersetzt.
+
+### Tailwind-CSS
+
+Stelle sicher, dass Post-CSS installiert ist. Dies war optional in vorherigen Versionen, ist aber nun Voraussetzung:
+
+1. Intalliere die aktuelle Version von Post-CSS (`npm i -D postcss`)
+2. Erzeuge die Datei `postcss.config.cjs` im Hauptverzeichnis deines Projekts mit:
+ ```js
+ module.exports = {
+ plugins: {
+ tailwindcss: {},
+ },
+ };
+ ```
+ Für weitere Informationen lies die [Tailwind CSS Documentation](https://tailwindcss.com/docs/installation#add-tailwind-as-a-post-css-plugin)
+
+[vite]: https://vitejs.dev
+[snowpack]: https://www.snowpack.dev
diff --git a/smoke/docs-main/src/pages/de/quick-start.md b/smoke/docs-main/src/pages/de/quick-start.md
new file mode 100644
index 000000000..aa0b0a43d
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/quick-start.md
@@ -0,0 +1,78 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Schnellstart
+description: Die einfachste Weg schnell mit Astro loszulegen.
+---
+
+```shell
+# Vorbereitung: Überprüfe, ob Node.js die Version 14.15.0+, oder 16+ ist
+node --version
+
+# Erstelle einen neues Projektverzeichnis und navigiere direkt dorthin
+mkdir mein-astro-projekt && cd $_
+
+# Bereite dich auf den Start vor
+npm init astro
+
+# Installiere benötigte Pakete
+npm install
+
+# Beginne mit dem Entwickeln!
+npm run dev
+```
+
+Export - fertig zum Veröffentlichen:
+
+```shell
+# Wenn du soweit bist, exportiere deine Site nach `dist/`
+npm run build
+```
+
+Um mehr über den Installationsprozess und den ersten Einsatz von Astro zu lernen [lies unsere Installationsanleitung](/de/installation).
+
+Wenn du es bevorzugst anhand eines Beispiels zu lernen, werfe einen Blick auf die [komplette Liste der Beispiele](https://github.com/withastro/astro/tree/main/examples) auf GitHub.
+Du kannst jedes dieser Beispiele ausprobieren, indem du `npm init astro -- --template "BEISPIEL_NAME"` ausführst.
+
+## Starte dein Projekt
+
+In deinem Projektverzeichnis führe den folgenden Befehl in deinem Terminal aus:
+
+```bash
+npm run dev
+```
+
+Astro wird von nun an deine Anwendung unter [http://localhost:3000](http://localhost:3000) bereitstellen. Wenn du diese URL in deinem Browser öffnest, solltest du Astros "Hello, World" sehen.
+
+Der Server wird nun auf alle Änderungen in deinem `src/`-Verzeichnisch lauschen, sodass du deine Anwendung nicht nach jeder Änderung neu starten musst.
+
+## Kompiliere dein Projekt
+
+In deinem Projektverzeichnis führe den folgenden Befehl in deinem Terminal aus:
+
+```bash
+npm run build
+```
+
+Dies weist Astro an deine Site zu erstellen und direkt zu speichern. Deine Anwendung steht nun im `dist/`-Verzeichnis bereit.
+
+## Veröffentliche dein Projekt
+
+Astro-Sites sind statisch, sodass sie ganz einfach bei deinem bevorzugten Hoster veröffentlicht werden können:
+
+- [AWS S3 bucket](https://aws.amazon.com/s3/)
+- [Google Firebase](https://firebase.google.com/)
+- [Netlify](https://www.netlify.com/)
+- [Vercel](https://vercel.com/)
+- [Erfahre mehr über das Veröffentlichen von Astro-Builds](/guides/deploy).
+
+## Nächste Schritte
+
+Geschafft! Du kannst jetzt mit dem Entwickeln beginnen!
+
+Wir möchten dich ermutigen, dir etwas Zeit zu nehmen, um mit der Art und Weise vertraut zu werden, wie Astro funktioniert. Am besten befasst du dich weitergehend mit der Dokumentation. Hier ein paar Empfehlungen:
+
+📚 Lerne mehr über die Projektstruktur in Astro in unserem [Artikel zur Projektstruktur](/de/core-concepts/project-structure)
+
+📚 Lerne mehr über die Komponenten-Syntax in Astro in unserem [Artikel zu Astro-Komponenten](/de/core-concepts/astro-components)
+
+📚 Lerne mehr über das dateibasierte Routing in Astro in unserem [Artikel zu Astro-Seiten](/de/core-concepts/astro-pages) und unserem [Artikel über Routing](/de/core-concepts/routing).
diff --git a/smoke/docs-main/src/pages/de/themes.astro b/smoke/docs-main/src/pages/de/themes.astro
new file mode 100644
index 000000000..b33fe3c03
--- /dev/null
+++ b/smoke/docs-main/src/pages/de/themes.astro
@@ -0,0 +1,53 @@
+---
+import Layout from '../../layouts/MainLayout.astro';
+import Card from '../../components/Card.astro';
+import { Markdown } from 'astro/components';
+import themes from '../../data/themes.json';
+import components from '../../data/components.json';
+---
+
+<Layout content={{ title: 'Vorlagen' }} hideRightSidebar>
+ <style>
+ .card-grid {
+ display: grid;
+ grid-column-gap: 15px;
+ grid-row-gap: 15px;
+ grid-auto-flow: dense;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ }
+ </style>
+ <Markdown>
+ ## Vorgestellte Vorlagen
+ </Markdown>
+ <div class="card-grid">
+ {themes.featured.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ ## Offizielle Vorlagen
+
+ Astro pflegt verschiedene offizielle Vorlagen für Dokumentationssites, Portfolios und mehr.
+ </Markdown>
+ <div class="card-grid">
+ {themes.official.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ ## Vorlagen aus der Community
+
+ Sieh dir einige von unserer Community entwickelte Vorlagen an!
+ </Markdown>
+ <div class="card-grid">
+ {themes.community.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ ## Vorgestellte Packages
+
+ Unser Package-Ökosystem wächst stetig! Sieh dir die hier vorgestellten Packages unserer Community an. Durchsuche unsere vollständige Sammlung [auf npm.](https://www.npmjs.com/search?q=keywords%3Aastro-component)
+ </Markdown>
+ <div class="card-grid">
+ {components.community.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ > Möchtest du deine eigene Arbeit hier sehen? [Teile sie in Discord!](https://astro.build/chat)
+ > Wir teilen hier regelmäßig unsere Favoriten aus dem #showcase-Channel.
+ </Markdown>
+</Layout>
diff --git a/smoke/docs-main/src/pages/en/comparing-astro-vs-other-tools.md b/smoke/docs-main/src/pages/en/comparing-astro-vs-other-tools.md
new file mode 100644
index 000000000..adae8184d
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/comparing-astro-vs-other-tools.md
@@ -0,0 +1,233 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Comparing Astro
+description: Comparing Astro with other static site generators like Gatsby, Next.js, Nuxt, Hugo, Eleventy, and more.
+---
+
+We often get asked the question, "How does Astro compare to my favorite site builder, **\_\_\_\_**?" This guide was written to help answer that question for several popular site builders and Astro alternatives.
+
+If you don't see your favorite site builder listed here, [ask us in Discord.](https://astro.build/chat)
+
+## Project Status
+
+A quick note on project maturity: **Astro is still in beta.** Many of the tools listed here are much more mature. Some predate Astro by over 12 years!
+
+A few features are still missing from Astro, and several APIs are not yet finalized. However, the project is considered stable from a bug perspective and several production websites have already been built using Astro. This is an important point to consider when choosing Astro.
+
+## Docusaurus vs. Astro
+
+[Docusaurus](https://docusaurus.io/) is a popular documentation website builder. Docusaurus uses React to generate your website UI while Astro supports React, Vue.js, Svelte, and raw HTML templating.
+
+Docusaurus was designed to build documentation websites and has some built-in, documentation-specific website features that Astro does not. Instead, Astro offers documentation-specific features through an official [`docs`](https://github.com/withastro/astro/tree/main/examples/docs) theme that you can use for your site. This website was built using that template!
+
+### Comparing Docusaurus vs. Astro Performance
+
+In most cases, Astro websites will load significantly faster than Docusaurus websites. This is because Astro automatically strips unnecessary JavaScript from the page, hydrating only the individual components that need it. This feature is called [partial hydration](/en/core-concepts/component-hydration).
+
+Docusaurus doesn't support partial hydration, and instead makes the user load and rehydrate the entire page in the browser, even if most of the page content is static. This creates a slower page load and worse performance for your website. There is no way to disable this behavior in Docusaurus.
+
+### Case Study: Building a Documentation Website
+
+[docusaurus.io/docs](https://docusaurus.io/docs) is the official Docusaurus documentation website, built with Docusaurus. The website offers a similar enough design and featureset to compare against the official Astro documentation website. This gives us a **_rough, real-world_** comparison between the two site builders.
+
+- **Docusaurus performance score**: 61 out of 100 [(full audit)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocusaurus.io%2Fdocs)
+- **Astro performance score**: 99 out of 100 [(full audit)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+One big reason behind this performance difference is Astro’s smaller JavaScript payload: [docusaurus.io/docs](https://docusaurus.io/docs) loads **238kb** of JavaScript on first page load while [docs.astro.build](https://docs.astro.build) loads **78.7kb** (67% less JavaScript, overall) _after_ first load.
+
+## Elder.js vs. Astro
+
+[Elder.js](https://elderguide.com/tech/elderjs/) is an opinionated static site builder built for Svelte.
+
+Elder.js uses Svelte to render your website. Astro is more flexible: you are free to build UI with any popular component library (React, Preact, Vue, Svelte, Solid and others) or Astro’s HTML-like component syntax which is similar to HTML + JSX.
+
+Elder.js is unique on this list as the only other site builder to support [partial hydration](/en/core-concepts/component-hydration). Both Astro and Elder.js automatically strip unnecessary JavaScript from the page, hydrating only the individual components that need it. Elder’s API for partial hydration is a bit different and Astro supports a few features that Elder.js doesn't (like `client:media`). However performance-wise, both projects will build very similar sites.
+
+Elder.js uses a custom routing solution that may feel unfamiliar to new developers. Astro uses [file-based routing](/en/core-concepts/routing) which should feel familiar to anyone coming from Next.js, SvelteKit, and even other static site builders like Eleventy.
+
+Elder.js was designed to run on large websites, and claims to build one website of ~20k pages in less than 10 minutes (on a modest VM). At the time of writing, Astro builds ~1k pages in 66 seconds but has not yet been tested on 20k+ page projects. Astro is still in early beta, and matching Elder.js build speed is a goal for Astro v1.0.
+
+Elder.js supports both Static Site Generation (SSG) and Server-Side Rendering (SSR). Today, Astro only supports Static Site Generation (SSG).
+
+## Eleventy vs. Astro
+
+[Eleventy](https://www.11ty.dev/) is a popular static site builder, powered by Node.js.
+
+Eleventy uses several [older HTML templating languages](https://www.11ty.dev/docs/languages/) to render your website: Nunjucks, Liquid, Pug, EJS, and others. Astro lets you create pages using your favorite UI component libraries (React, Preact, Vue, Svelte, and others) or a built-in component syntax which is similar to HTML + JSX. Eleventy does not support using modern UI components for HTML templating.
+
+### Comparing Eleventy vs. Astro Performance
+
+Conceptually, Eleventy is aligned with Astro’s "minimal client-side JavaScript" approach to web development. Eleventy and Astro both offer similar, zero-JavaScript-by-default performance baselines.
+
+Eleventy achieves this by pushing you to avoid JavaScript entirely. Eleventy sites are often written with little to no JavaScript at all. This becomes an issue when you do need client-side JavaScript. It is up to you to create your own asset build pipeline for Eleventy. This can be time consuming and forces you to set up bundling, minification, and other complex optimizations yourself.
+
+By contrast, Astro automatically builds your client-side JavaScript & CSS for you. Astro automatically strips unnecessary JavaScript from the page, hydrating only the individual components that need it. This feature is called [partial hydration](/en/core-concepts/component-hydration). While it is possible to achieve this yourself in Eleventy, Astro offers it built in by default.
+
+## Gatsby vs. Astro
+
+[Gatsby](https://www.gatsbyjs.com/) is a popular website & application framework for React.
+
+Gatsby uses React to render your website. Astro is more flexible: you are free to build UI with any popular component library (React, Preact, Vue, Svelte, Solid and others) or Astro’s HTML-like component syntax which is similar to HTML + JSX.
+
+Gatsby v4 supports both Static Site Generation (SSG) with incremental rebuilds, Deferred Static Generation (DSG), and Server-Side Rendering (SSR). Today, Astro only supports Static Site Generation (SSG).
+
+Gatsby requires a custom GraphQL API for working with all of your site content. While some developers enjoy this model, a common criticism of Gatsby is that this model becomes too complex and difficult to maintain over time, especially as sites grow. Astro has no GraphQL requirement, and instead provides familiar APIs (like `fetch()` and top-level `await`) for data loading close to where the data is needed.
+
+### Comparing Gatsby vs. Astro Performance
+
+In most cases, Astro websites will load significantly faster than Gatsby websites. This is because Astro automatically strips unnecessary JavaScript from the page, hydrating only the individual components that need it. This feature is called [partial hydration](/en/core-concepts/component-hydration).
+
+Gatsby doesn't support partial hydration, and instead makes the user load and rehydrate the entire page in the browser, even if most of the page content is static. This creates a slower page load and worse performance for your website. Gatsby has [a community plugin](https://www.gatsbyjs.com/plugins/gatsby-plugin-no-javascript/) for removing all JavaScript from the page, but this would break many websites. This leaves you with an all-or-nothing decision for interactivity on each page.
+
+Gatsby has a great plugin ecosystem, which could make Gatsby a better choice for your project depending on your needs. [gatsby-plugin-image](https://www.gatsbyjs.com/plugins/gatsby-plugin-image/) is a popular plugin for image optimizations, which could make Gatsby a better choice for some image-heavy websites.
+
+### Case Study: Building a Documentation Website
+
+[gatsbyjs.com/docs](https://www.gatsbyjs.com/docs/quick-start/) is the official Gatsby documentation website, built with Gatsby. The website offers a similar enough design and feature-set to compare against the official Astro documentation website. This gives us a **_rough, real-world_** comparison between the two site builders for this common use-case.
+
+- **Gatsby performance score**: 64 out of 100 [(full audit)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fwww.gatsbyjs.com%2Fdocs%2Fquick-start%2F)
+- **Astro performance score**: 99 out of 100 [(full audit)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+One big reason behind this performance difference is Astro’s smaller JavaScript payload: [gatsbyjs.com/docs](https://www.gatsbyjs.com/docs/quick-start/) loads **417kb** of JavaScript on first page load while [docs.astro.build](https://docs.astro.build) loads **78.7kb** (81% less JavaScript, overall) _after_ first load.
+
+## Hugo vs. Astro
+
+[Hugo](https://gohugo.io/) is a popular static site generator, powered by Go.
+
+Hugo uses a custom [templating language](https://gohugo.io/templates/introduction/) to render your website. Astro lets you create pages using your favorite UI component libraries (React, Preact, Vue, Svelte, and others) or a built-in component syntax which is similar to HTML + JSX. Hugo does not support using modern UI components for HTML templating.
+
+### Comparing Hugo vs. Astro Performance
+
+Conceptually, Hugo is aligned with Astro’s "minimal client-side JavaScript" approach to web development. Hugo and Astro both offer similar, zero-JavaScript-by-default performance baselines.
+
+Both Hugo and Astro offer built-in support for building, bundling and minifying JavaScript. Astro automatically strips unnecessary JavaScript from the page, hydrating only the individual components that need it. This feature is called [partial hydration](/en/core-concepts/component-hydration). While it is possible to achieve this yourself in Hugo, Astro offers it built in by default.
+
+## Jekyll vs. Astro
+
+[Jekyll](https://jekyllrb.com/) is a popular static site generator, powered by Ruby.
+
+Jekyll uses an older [templating language](https://jekyllrb.com/docs/liquid/) to render your website called Liquid. Astro lets you create pages using your favorite UI component libraries (React, Preact, Vue, Svelte, and others) or a built-in component syntax which is similar to HTML + JSX. Jekyll does not support using modern UI components for HTML templating.
+
+### Comparing Jekyll vs. Astro Performance
+
+Conceptually, Jekyll is aligned with Astro’s "minimal client-side JavaScript" approach to web development. Jekyll and Astro both offer similar, zero-JavaScript-by-default performance baselines.
+
+Jekyll achieves this by pushing you to avoid JavaScript entirely. Jekyll sites are often written with little to no JavaScript at all, and instead promote server-side HTML rendering. This becomes an issue when you do need client-side JavaScript. It is up to you to create your own build pipeline for Jekyll. This can be time-consuming and forces you to set up bundling, minification, and other optimizations yourself.
+
+By contrast, Astro automatically builds your client-side JavaScript for you. Astro only sends the bare minimum amount of JavaScript to the browser, minified, bundled and optimized for production. While it is possible to achieve this yourself in Jekyll, with Astro this is built in by default.
+
+## SvelteKit vs. Astro
+
+[SvelteKit](https://kit.svelte.dev/) is a popular website & application framework for Svelte.
+
+SvelteKit uses Svelte to render your website. Astro is more flexible: you are free to build UI with any popular component library (React, Preact, Vue, Svelte, Solid and others) or Astro’s HTML-like component syntax which is similar to HTML + JSX.
+
+Both SvelteKit and Astro are frameworks for building websites. SvelteKit does best with highly dynamic websites (like dashboards and inboxes) while Astro does best with highly static websites (like content and eCommerce websites).
+
+SvelteKit supports both Static Site Generation (SSG) and Server-Side Rendering (SSR). Today, Astro only supports Static Site Generation (SSG).
+
+### Comparing SvelteKit vs. Astro Performance
+
+In most cases, Astro websites will load faster than SvelteKit websites. This is because Astro automatically strips unnecessary JavaScript from the page, hydrating only the individual components that need it. This feature is called [partial hydration](/en/core-concepts/component-hydration).
+
+SvelteKit doesn't support partial hydration, and instead makes the user load and rehydrate the entire page in the browser, even if most of the page content is static. This creates a slower page load and worse performance for your website. SvelteKit does offer support for [page-level static, zero-JavaScript pages](https://kit.svelte.dev/docs#ssr-and-javascript-hydrate). However, there is no planned support for hydrating individual components on the page. This leaves you with an all-or-nothing decision for interactivity on each page.
+
+### Case Study: Building a Documentation Website
+
+[kit.svelte.dev](https://kit.svelte.dev/docs#ssr-and-javascript-hydrate) is the official SvelteKit documentation website, built with SvelteKit. The website offers a similar enough design and featureset to compare against the official Astro documentation website. This gives us a **_rough, real-world_** comparison between the two site builders for this common use-case.
+
+One notable difference between the two sites being tested: SvelteKit’s documentation is served as a single page while Astro’s is broken up into multiple pages. This larger content payload should have a slight negative impact on performance that is not related to the tool itself.
+
+- **SvelteKit performance score**: 92 out of 100 [(full audit)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fkit.svelte.dev%2Fdocs)
+- **Astro performance score**: 99 out of 100 [(full audit)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+SvelteKit performed comparably to Astro in this test.
+
+## Next.js vs. Astro
+
+[Next.js](https://nextjs.org/) is a popular website & application framework for React.
+
+Next.js uses React to render your website. Astro is more flexible: you are free to build UI with any popular component library (React, Preact, Vue, Svelte, Solid and others) or Astro’s HTML-like component syntax which is similar to HTML + JSX.
+
+Both Next.js and Astro are frameworks for building websites. Next.js does best with highly dynamic websites (like dashboards and inboxes) while Astro does best with highly static websites (like content and eCommerce websites).
+
+Next.js supports both Static Site Generation (SSG) and Server-Side Rendering (SSR). Today, Astro only supports Static Site Generation (SSG).
+
+### Comparing Next.js vs. Astro Performance
+
+In most cases, Astro websites will load significantly faster than Next.js websites. This is because Astro automatically strips unnecessary JavaScript from the page, hydrating only the individual components that need it. This feature is called [partial hydration](/en/core-concepts/component-hydration).
+
+Next.js doesn't support partial hydration, and instead makes the user load and rehydrate the entire page in the browser, even if most of the page content is static. This creates a slower page load and worse performance for your website. Next.js has [experimental support](https://piccalil.li/blog/new-year-new-website/#heading-no-client-side-react-code) for fully-static, zero-JavaScript pages. However, there is no planned support for hydrating individual components on the page. This leaves you with an all-or-nothing decision for interactivity on each page.
+
+Next.js has great built-in image optimizations, which could make Next.js a better choice for some image-heavy websites.
+
+### Case Study: Building a Documentation Website
+
+[nextjs.org/docs](https://nextjs.org/docs/getting-started) is the official Next.js documentation website, built with Next.js. The website offers a similar enough design and featureset to compare against the official Astro documentation website. This gives us a **_rough, real-world_** comparison between the two site builders for this common use-case.
+
+- **Next.js performance score**: 59 out of 100 [(full audit)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fnextjs.org%2Fdocs%2Fgetting-started)
+- **Astro performance score**: 99 out of 100 [(full audit)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+One big reason behind this performance difference is Astro’s smaller JavaScript payload: [nextjs.org/docs](https://nextjs.org/docs/getting-started) loads **463kb** of JavaScript on first page load while [docs.astro.build](https://docs.astro.build) loads **78.7kb** (83% less JavaScript, overall) _after_ first load.
+
+## Nuxt vs. Astro
+
+[Nuxt](https://nuxtjs.org/) is a popular website & application framework for Vue. It is similar to Next.js.
+
+Nuxt uses Vue to render your website. Astro is more flexible: you are free to build UI with any popular component library (React, Preact, Vue, Svelte, Solid and others) or Astro’s HTML-like component syntax which is similar to HTML + JSX.
+
+Both Nuxt and Astro are frameworks for building websites. Nuxt does best with highly dynamic websites (like dashboards and inboxes) while Astro does best with highly static websites (like content and eCommerce websites).
+
+Nuxt supports both Static Site Generation (SSG) and Server-Side Rendering (SSR). Today, Astro only supports Static Site Generation (SSG).
+
+### Comparing Nuxt vs. Astro Performance
+
+In most cases, Astro websites will load significantly faster than Nuxt websites. This is because Astro automatically strips unnecessary JavaScript from the page, hydrating only the individual components that need it. This feature is called [partial hydration](/en/core-concepts/component-hydration).
+
+Nuxt doesn't support partial hydration, and instead makes the user load and rehydrate the entire page in the browser, even if most of the page content is static. This creates a slower page load and worse performance for your website. There is no way to disable this behavior in Nuxt.
+
+Nuxt has great built-in image optimizations, which could make Nuxt a better choice for some image-heavy websites.
+
+### Case Study: Building a Documentation Website
+
+[nuxtjs.org/docs](https://nuxtjs.org/docs/2.x/get-started/installation) is the official Nuxt documentation website, built with Nuxt. The website offers a similar enough design and featureset to compare against the official Astro documentation website. This gives us a **_rough, real-world_** comparison between the two site builders for this common use-case.
+
+- **Nuxt performance score**: 48 out of 100 [(full audit)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fnuxtjs.org%2Fdocs%2F2.x%2Fget-started%2Finstallation)
+- **Astro performance score**: 99 out of 100 [(full audit)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+One big reason behind this performance difference is Astro’s smaller JavaScript payload: [nuxtjs.org/docs](https://nuxtjs.org/docs/2.x/get-started/installation) loads **469kb** of JavaScript on first page load while [docs.astro.build](https://docs.astro.build) loads **78.7kb** (83% less JavaScript), _after_ first load.
+
+## VuePress vs. Astro
+
+[VuePress](https://vuepress.vuejs.org/guide/) is a popular documentation website builder from the creators of Vue.js. VuePress uses Vue.js to generate your website UI while Astro supports React, Vue.js, Svelte, and raw HTML templating.
+
+VuePress was designed for documentation websites and has some built-in, documentation-specific website features that Astro does not support out of the box. Instead, Astro offers documentation-specific features through an official [`docs`](https://github.com/withastro/astro/tree/main/examples/docs) theme that you can use for your site. This website was built using that template!
+
+Evan You (creator of Vue.js) is currently working on a new version of Vuepress called [VitePress.](https://vitepress.vuejs.org/). If you want a modern alternative to VuePress, [check out Evan’s post](https://github.com/withastro/astro/issues/1159#issue-974035962) on why VitePress may be a better option.
+
+### Comparing VuePress vs. Astro Performance
+
+In most cases, Astro websites will load significantly faster than VuePress websites. This is because Astro automatically strips unnecessary JavaScript from the page, hydrating only the individual components that need it. This feature is called [partial hydration](/en/core-concepts/component-hydration).
+
+VuePress doesn't support partial hydration, and instead makes the user load and rehydrate the entire page in the browser, even if most of the page content is static. This creates a slower page load and worse performance for your website. There is no way to disable this behavior in VuePress.
+
+### Case Study: Building a Documentation Website
+
+[vuepress.vuejs.org](https://vuepress.vuejs.org/guide/) is the official VuePress documentation website, built with VuePress. The website offers a similar enough design and featureset to compare against the official Astro documentation website. This gives us a **_rough, real-world_** comparison between the two site builders for this common use-case.
+
+- **Vuepress performance score**: 63 out of 100 [(full audit)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fvuepress.vuejs.org%2Fguide%2F)
+- **Astro performance score**: 99 out of 100 [(full audit)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+One big reason behind this performance difference is Astro’s smaller JavaScript payload: [vuepress.vuejs.org](https://vuepress.vuejs.org/guide/) loads **166kb** of JavaScript on first page load while [docs.astro.build](https://docs.astro.build) loads **78.7kb** (53% less JavaScript, overall) _after_ first load.
+
+## Zola vs. Astro
+
+[Zola](https://www.getzola.org/) is a popular and fast static site generator, powered by Rust.
+
+Zola uses [Tera](https://tera.netlify.app/) to render your website. Astro lets you create pages using your favorite UI component libraries (React, Preact, Vue, Svelte, and others) or a built-in component syntax which is similar to HTML + JSX. Zola does not support using modern UI components for HTML templating.
+
+### Comparing Zola vs. Astro Performance
+
+Conceptually, Zola is aligned with Astro’s "minimal client-side JavaScript" approach to web development. Zola and Astro both offer similar, zero-JavaScript-by-default performance baselines.
+
+Astro offer built-in support for building, bundling and minifying JavaScript. Zola requires using another build tool like Webpack to bundle and process JavaScript. Astro automatically strips unnecessary JavaScript from the page, hydrating only the individual components that need it. This feature is called [partial hydration](/en/core-concepts/component-hydration). While it is possible to achieve this yourself in Zola, Astro offers it built in by default.
diff --git a/smoke/docs-main/src/pages/en/core-concepts/astro-components.md b/smoke/docs-main/src/pages/en/core-concepts/astro-components.md
new file mode 100644
index 000000000..a86c1b9ff
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/core-concepts/astro-components.md
@@ -0,0 +1,382 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Astro Components
+description: An intro to the .astro component syntax.
+---
+
+**Astro Components** (files ending with `.astro`) are the foundation of server-side templating in Astro. Think of the Astro component syntax as HTML enhanced with JavaScript.
+
+Learning a new syntax can feel intimidating, so we carefully designed the Astro component syntax to feel as familiar to web developers as possible. It borrows heavily from patterns you likely already know: components, frontmatter, props, and JSX expressions. We're confident that this guide will have you writing Astro components in no time, especially if you are already familiar with HTML & JavaScript.
+
+## Syntax Overview
+
+A single `.astro` file represents a single Astro component in your project. This pattern is known as a **Single-File Component (SFC)**. Both Svelte (`.svelte`) and Vue (`.vue`) also follow this pattern.
+
+Below is a walk-through of the different pieces and features of the Astro component syntax. You can read it start-to-finish, or jump between sections.
+
+### HTML Template
+
+Astro component syntax is a superset of HTML. **If you know HTML, you already know enough to write your first Astro component.**
+
+For example, this three-line file is a valid Astro component:
+
+```html
+<!-- Example1.astro - Static HTML is a valid Astro component! -->
+<div class="example-1">
+ <h1>Hello world!</h1>
+</div>
+```
+
+An Astro component represents some snippet of HTML in your project. This can be a reusable component, or an entire page of HTML including `<html>`, `<head>` and `<body>` elements. See our guide on [Astro Pages](/en/core-concepts/astro-pages) to learn how to build your first full HTML page with Astro.
+
+**Every Astro component must include an HTML template.** While you can enhance your component in several ways (see below), at the end of the day it’s the HTML template that dictates what your rendered Astro component will look like.
+
+### CSS Styles
+
+CSS rules inside of a `<style>` tag are automatically scoped to that component. That means that you can reuse class names across multiple components, without worrying about conflicts. Styles are automatically extracted and optimized in the final build so that you don't need to worry about style loading.
+
+For best results, you should only have one `<style>` tag per-Astro component. This isn't necessarily a limitation, but it will often result in better-optimized CSS in your final build. When you're working with pages, the `<style>` tag can go nested inside of your page `<head>`. For standalone components, the `<style>` tag can go at the top-level of your template.
+
+```html
+<!-- Astro Component CSS example -->
+<style>
+ .circle {
+ background-color: red;
+ border-radius: 999px;
+ height: 50px;
+ width: 50px;
+ }
+</style>
+<div class="circle"></div>
+```
+
+```html
+<!-- Astro Page CSS example -->
+<html>
+ <head>
+ <style>
+ ...;
+ </style>
+ </head>
+ <body>
+ ...
+ </body>
+</html>
+```
+
+Using `<style global>` will skip automatic scoping for every CSS rule in the `<style>` block. This escape hatch should be avoided if possible but can be useful if, for example, you need to modify styling for HTML elements added by an external library.
+
+Sass (an alternative to CSS) is also available via `<style lang="scss">`.
+
+📚 Read our full guide on [Component Styling](/en/guides/styling) to learn more.
+
+### Frontmatter Script
+
+To build dynamic components, we introduce the idea of a frontmatter component script. [Frontmatter](https://jekyllrb.com/docs/front-matter/) is a common pattern in Markdown, where some config/metadata is contained inside a code fence (`---`) at the top of the file. Astro does something similar, but with full support for JavaScript & TypeScript in your components.
+
+Remember that Astro is a server-side templating language, so your component script will run during the build but only the HTML is rendered to the browser. To send JavaScript to the browser, you can use a `<script>` tag in your HTML template or [convert your component to use a frontend framework](/en/core-concepts/component-hydration) like React, Svelte, Vue, etc.
+
+```astro
+---
+// Anything inside the `---` code fence is your component script.
+// This JavaScript code runs at build-time.
+// See below to learn more about what you can do.
+// Tip: TypeScript is also supported out-of-the-box!
+const thisWorks: number = 42;
+console.log('This runs at build-time, is visible in the CLI output', thisWorks);
+---
+<div class="example-1">
+ <h1>Hello world!</h1>
+</div>
+```
+
+### Component Imports
+
+An Astro component can reuse other Astro components inside of its HTML template. This becomes the foundation of our component system: build new components and then reuse them across your project.
+
+To use an Astro component in your template, you first need to import it in the frontmatter component script. An Astro component is always the file’s default import.
+
+Once imported, you can use it like any other HTML element in your template. Note that an Astro component **MUST** begin with an uppercase letter. Astro will use this to distinguish between native HTML elements (`form`, `input`, etc.) and your custom Astro components.
+
+```astro
+---
+// Import your components in your component script...
+import SomeComponent from './SomeComponent.astro';
+---
+<!-- ... then use them in your HTML! -->
+<div>
+ <SomeComponent />
+</div>
+```
+
+📚 You can also import and use components from other frontend frameworks like React, Svelte, and Vue. Read our guide on [Component Hydration](/en/core-concepts/component-hydration) to learn more.
+
+### Dynamic JSX Expressions
+
+Instead of inventing our own custom syntax for dynamic templating, we give you direct access to JavaScript values inside of your HTML, using something that feels just like [JSX](https://reactjs.org/docs/introducing-jsx.html).
+
+Astro components can define local variables inside of the Frontmatter script. Any script variables are then automatically available in the HTML template below.
+
+#### Dynamic Values
+
+```astro
+---
+const name = "Your name here";
+---
+<div>
+ <h1>Hello {name}!</h1>
+</div>
+```
+
+#### Dynamic Attributes
+
+```astro
+---
+const name = "Your name here";
+---
+<div>
+ <div data-name={name}>Attribute expressions supported</div>
+ <div data-hint={`Use JS template strings to mix ${"variables"}.`}>So good!</div>
+</div>
+```
+
+#### Dynamic HTML
+
+```astro
+---
+const items = ["Dog", "Cat", "Platipus"];
+---
+<ul>
+ {items.map((item) => (
+ <li>{item}</li>
+ ))}
+</ul>
+```
+
+### Component Props
+
+An Astro component can define and accept props. Props are available on the `Astro.props` global in your frontmatter script.
+
+```astro
+---
+// Example: <SomeComponent greeting="(Optional) Hello" name="Required Name" />
+const { greeting = 'Hello', name } = Astro.props;
+---
+<div>
+ <h1>{greeting}, {name}!</h1>
+</div>
+```
+
+You can define your props with TypeScript by exporting a `Props` type interface. Astro will automatically pick up any exported `Props` interface and give type warnings/errors for your project.
+
+Make sure to keep all `import` and `export` statements at the top of the component, before any other JavaScript or TypeScript logic!
+
+```astro
+---
+// include any `import` and `export` statements first
+// Example: <SomeComponent /> (WARNING: "name" prop is required)
+export interface Props {
+ name: string;
+ greeting?: string;
+}
+
+// with `import`s and `export`s out of the way, include the rest of the component logic here
+const { greeting = 'Hello', name } = Astro.props;
+---
+<div>
+ <h1>{greeting}, {name}!</h1>
+</div>
+```
+
+You can then pass the component props like this:
+
+```astro
+---
+// SomeOtherComponent.astro
+import SomeComponent from "./SomeComponent.astro";
+let firstName = "world!";
+---
+<SomeComponent name={firstName}/>
+```
+
+### Slots
+
+`.astro` files use the [`<slot>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot) tag to enable component composition. Coming from React or Preact, this is the same concept as `children`. You can think of the `<slot>` element as a placeholder for markup which will be passed in from outside of the component.
+
+```astro
+<!-- Example: MyComponent.astro -->
+<div id="my-component">
+ <slot /> <!-- children will go here -->
+</div>
+
+<!-- Usage -->
+<MyComponent>
+ <h1>Hello world!</h1>
+</MyComponent>
+```
+
+Note that if the `<slot>` tag is not used in the HTML template, any children passed to the component will not be rendered.
+
+Slots become even more powerful when using **named slots**. Rather than a single `<slot>` element which renders _all_ children, named slots allow you to specify multiple places where children should be placed.
+
+> **Note:** The `slot` attribute is not restricted to plain HTML, components can use `slot` as well!
+
+```astro
+<!-- Example: MyComponent.astro -->
+<div id="my-component">
+ <header>
+ <!-- children with the `slot="header"` attribute will go here -->
+ <slot name="header" />
+ </header>
+ <main>
+ <!-- children without a `slot` (or with the `slot="default"`) attribute will go here -->
+ <slot />
+ </main>
+ <footer>
+ <!-- children with the `slot="footer"` attribute will go here -->
+ <slot name="footer" />
+ </footer>
+</div>
+
+<!-- Usage -->
+<MyComponent>
+ <h1 slot="header">Hello world!</h1>
+ <p>Lorem ipsum ...</p>
+ <FooterComponent slot="footer" />
+</MyComponent>
+```
+
+Slots can also render **fallback content**. When there are no matching children passed to a `<slot>`, a `<slot>` element will render its own placeholder children.
+
+```astro
+<!-- MyComponent.astro -->
+<div id="my-component">
+ <slot>
+ <h1>I will render when this slot does not have any children!</h1>
+ </slot>
+</div>
+
+<!-- Usage -->
+<MyComponent />
+```
+
+### Fragments & Multiple Elements
+
+An Astro component template can render as many top-level elements as you'd like. Unlike other UI component frameworks, you don't need to wrap everything in a single `<div>` if you'd prefer not to.
+
+```html
+<!-- An Astro component can contain multiple top-level HTML elements: -->
+<div id="a" />
+<div id="b" />
+<div id="c" />
+```
+
+When working inside a JSX expression, however, you must wrap multiple elements inside of a **Fragment**. Fragments let you render a set of elements without adding extra nodes to the DOM. This is required in JSX expressions because of a limitation of JavaScript: You can never `return` more than one thing in a JavaScript function or expression. Using a Fragment solves this problem.
+
+A Fragment must open with `<>` and close with `</>`. Don't worry if you forget this, Astro’s compiler will warn you that you need to add one.
+
+> **Note:** Astro also supports opening a fragment with `<Fragment>` and closing it with `</Fragment>` if you prefer to use that syntax.
+
+```astro
+---
+const items = ["Dog", "Cat", "Platipus"];
+---
+<ul>
+ {items.map((item) => (
+ <>
+ <li>Red {item}</li>
+ <li>Blue {item}</li>
+ <li>Green {item}</li>
+ </>
+ ))}
+</ul>
+```
+
+### Hoisted scripts
+
+By default Astro does not make any assumptions on how you want scripts to be served, so if you add a `<script>` tag in a page or a component it will be left alone.
+
+However if you'd like all of your scripts to be hoisted out of components and moved to the top of the page, and then later bundled together in production, you can achieve this with hoisted scripts.
+
+A **hoisted script** looks like this:
+
+```astro
+<script hoist>
+ // An inline script
+</script>
+```
+
+Or it can link to an external JavaScript file:
+
+```astro
+<script src={Astro.resolve('./my-component.js')} hoist></script>
+```
+
+A hoisted script can be within a page or a component, and no matter how many times the component is used, the script will only be added once:
+
+```astro
+---
+import TwitterTimeline from '../components/TwitterTimeline.astro';
+---
+
+<-- The script will only be injected into the head once. -->
+<TwitterTimeline />
+<TwitterTimeline />
+<TwitterTimeline />
+```
+
+## Comparing `.astro` versus `.jsx`
+
+`.astro` files can end up looking very similar to `.jsx` files, but there are a few key differences. Here’s a comparison between the two formats.
+
+| Feature | Astro | JSX |
+| ---------------------------- | ---------------------------------------------------------- | -------------------------------------------------- |
+| File extension | `.astro` | `.jsx` or `.tsx` |
+| User-Defined Components | `<Capitalized>` | `<Capitalized>` |
+| Expression Syntax | `{}` | `{}` |
+| Spread Attributes | `{...props}` | `{...props}` |
+| Boolean Attributes | `autocomplete` === `autocomplete={true}` | `autocomplete` === `autocomplete={true}` |
+| Inline Functions | `{items.map(item => <li>{item}</li>)}` | `{items.map(item => <li>{item}</li>)}` |
+| IDE Support | WIP - [VS Code][code-ext] | Phenomenal |
+| Requires JS import | No | Yes, `jsxPragma` (`React` or `h`) must be in scope |
+| Fragments | Automatic top-level, `<Fragment>` or `<>` inside functions | Wrap with `<Fragment>` or `<>` |
+| Multiple frameworks per-file | Yes | No |
+| Modifying `<head>` | Just use `<head>` | Per-framework (`<Head>`, `<svelte:head>`, etc) |
+| Comment Style | `<!-- HTML -->` | `{/_ JavaScript _/} |
+| Special Characters | `&nbsp;` | `&nbsp;` |
+| Attributes | `dash-case` | `camelCase` |
+
+## URL resolution
+
+It’s important to note that Astro **won't** transform HTML references for you. For example, consider an `<img>` tag with a relative `src` attribute inside `src/pages/about.astro`:
+
+```html
+<!-- ❌ Incorrect: will try and load `/about/thumbnail.png` -->
+<img src="./thumbnail.png" />
+```
+
+Since `src/pages/about.astro` will build to `/about/index.html`, you may not have expected that image to live at `/about/thumbnail.png`. So to fix this, choose either of two options:
+
+#### Option 1: Absolute URLs
+
+```html
+<!-- ✅ Correct: references public/thumbnail.png -->
+<img src="/thumbnail.png" />
+```
+
+The recommended approach is to place files within `public/*`. This references a file at `public/thumbnail.png`, which will resolve to `/thumbnail.png` at the final build (since `public/` ends up at `/`).
+
+#### Option 2: Asset import references
+
+```astro
+---
+// ✅ Correct: references src/thumbnail.png
+import thumbnailSrc from './thumbnail.png';
+---
+
+<img src={thumbnailSrc} />
+```
+
+If you'd prefer to organize assets alongside Astro components, you may import the file in JavaScript inside the component script. This works as intended but this makes `thumbnail.png` harder to reference in other parts of your app, as its final URL isn't easily-predictable (unlike assets in `public/*`, where the final URL is guaranteed to never change).
+
+[code-ext]: https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode
diff --git a/smoke/docs-main/src/pages/en/core-concepts/astro-pages.md b/smoke/docs-main/src/pages/en/core-concepts/astro-pages.md
new file mode 100644
index 000000000..f68b8656e
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/core-concepts/astro-pages.md
@@ -0,0 +1,134 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Pages
+description: An intro to Astro pages, components that function as full pages.
+---
+
+**Pages** are a special type of [Astro Component](/en/core-concepts/astro-components) that handle routing, data loading, and templating for each page of your website. You can think of them like any other Astro component, just with extra responsibilities.
+
+Astro also supports Markdown for content-heavy pages, like blog posts and documentation. See [Markdown Content](/en/guides/markdown-content) for more information on writing pages with Markdown.
+
+## File-based Routing
+
+Astro uses Pages to do something called **file-based routing.** Every file in your `src/pages` directory becomes a page on your site, using the file name to decide the final route.
+
+Astro Components (`.astro`) and Markdown Files (`.md`) are the only supported formats for pages. Other page types (like a `.jsx` React component) are not supported, but you can use anything as a UI component inside of an `.astro` page to achieve a similar result.
+
+```
+src/pages/index.astro -> mysite.com/
+src/pages/about.astro -> mysite.com/about
+src/pages/about/index.astro -> mysite.com/about
+src/pages/about/me.astro -> mysite.com/about/me
+src/pages/posts/1.md -> mysite.com/posts/1
+```
+
+## Page Templating
+
+All Astro components are responsible for returning HTML. Astro Pages return HTML as well, but have the unique responsibility of returning a full `<html>...</html>` page response, including `<head>` ([MDN<span class="sr-only">- head</span>](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head)) and `<body>` ([MDN<span class="sr-only">- body</span>](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/body)).
+
+`<!doctype html>` is optional, and will be added automatically.
+
+```astro
+---
+// Example: HTML page skeleton
+---
+<!doctype html>
+<html>
+ <head>
+ <title>Document title</title>
+ </head>
+ <body>
+ <h1>Hello, world!</h1>
+ </body>
+</html>
+```
+
+## Data Loading
+
+Astro pages can fetch data to help generate your pages. Astro provides two different tools to pages to help you do this: **fetch()** and **top-level await.**
+
+📚 Read our [full guide](/en/guides/data-fetching) on data-fetching to learn more.
+
+```astro
+---
+// Example: Astro component scripts run at build time
+const response = await fetch('http://example.com/movies.json');
+const data = await response.json();
+console.log(data);
+---
+<!-- Output the result to the page -->
+<div>{JSON.stringify(data)}</div>
+```
+
+## Custom 404 Error Page
+
+For a custom 404 error page create a `404.astro` file in `/src/pages`. That builds to a `404.html` page. Most [deploy services](/en/guides/deploy) will find and use it.
+This is special and different to the default behavior building `page.astro` (or `page/index.astro`) to `page/index.html`.
+
+## Non-HTML Pages
+
+> ⚠️ This feature is currently only supported with the `--experimental-static-build` CLI flag. This feature may be refined over the next few weeks/months as SSR support is finalized.
+
+Non-HTML pages, like `.json` or `.xml`, can be built from `.js` and `.ts`. All that's needed is to export a `get()` function that returns a string `body` with the rendered file contents.
+
+Built filenames and extensions are based on the source file's name, ex: `src/pages/data.json.ts` will be built to match the `/data.json` route in your final build.
+
+```js
+// src/pages/company.json.ts
+export async function get() {
+ return {
+ body: JSON.stringify({
+ name: 'Astro',
+ url: 'https://astro.build/',
+ }),
+ };
+}
+```
+
+**Is this different from SSR?** Yes! This feature allows JSON, XML, etc. files to be output at build time. Keep an eye out for full SSR support if you need to build similar files when requested, for example as a serverless function in your deployment host.
+
+### Routing
+
+File-based routing works the same as HTML pages, including dynamic routes with `getStaticPaths()`. See the [routing](/en/core-concepts/routing/) docs for more details.
+
+### Data Loading
+
+The [`Astro` global](/en/reference/api-reference/#astro-global) is only available in `.astro` files. Instead, [`import.meta.glob`](/en/reference/api-reference/#importmeta) can be used to load local `.md` files.
+
+Similar to `.astro` pages, **fetch()** can be used to fetch data. 📚 Read our [full guide](/en/guides/data-fetching) on data-fetching to learn more.
+
+### Examples
+
+```typescript
+// src/pages/company.json.ts
+export async function get() {
+ return {
+ body: JSON.stringify({
+ name: 'Astro Technology Company',
+ url: 'https://astro.build/',
+ }),
+ };
+}
+```
+
+#### Example with dynamic routes
+
+What about `getStaticPaths()`? It **just works**™.
+
+```typescript
+// src/pages/[slug].json.ts
+export async function getStaticPaths() {
+ return [
+ { params: { slug: 'thing1' }},
+ { params: { slug: 'thing2' }}
+ ]
+}
+
+export async function get(params) {
+ const { slug } = params
+
+ return {
+ body: // ...JSON.stringify()
+ }
+}
+``` \ No newline at end of file
diff --git a/smoke/docs-main/src/pages/en/core-concepts/component-hydration.md b/smoke/docs-main/src/pages/en/core-concepts/component-hydration.md
new file mode 100644
index 000000000..46c3665fe
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/core-concepts/component-hydration.md
@@ -0,0 +1,116 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Partial Hydration in Astro
+description: Learn how partial hydration works using the "Islands Architecture" in Astro.
+---
+
+**Astro generates every website with zero client-side JavaScript, by default.** Use any frontend UI component that you'd like (React, Svelte, Vue, etc.) and Astro will automatically render it to HTML at build-time and strip away all JavaScript. This keeps every site fast by default.
+
+But sometimes, client-side JavaScript is required. This guide shows how interactive components work in Astro using a technique called partial hydration.
+
+```astro
+---
+// Example: Importing and then using a React component.
+// By default, Astro renders this to HTML and CSS during
+// your build, with no client-side JavaScript.
+// (Need client-side JavaScript? Read on...)
+import MyReactComponent from '../components/MyReactComponent.jsx';
+---
+<!-- 100% HTML, Zero JavaScript! -->
+<MyReactComponent />
+```
+
+## Concept: Partial Hydration
+
+There are plenty of cases where you need an interactive UI component to run in the browser:
+
+- An image carousel
+- An auto-complete search bar
+- A mobile sidebar open/close button
+- A "Buy Now" button
+
+In Astro, it’s up to you as the developer to explicitly "opt-in" any components on the page that need to run in the browser. Astro can then use this info to know exactly what JavaScript is needed, and only hydrate exactly what’s needed on the page. This technique is known as partial hydration.
+
+**Partial hydration** -- the act of only hydrating the individual components that require JavaScript and leaving the rest of your site as static HTML -- may sound relatively straightforward. It should! Websites have been built this way for decades. It was only recently that Single-Page Applications (SPAs) introduced the idea that your entire website is written in JavaScript and compiled/rendered by every user in the browser.
+
+_Note: Partial hydration is sometimes called "progressive enhancement" or "progressive hydration." While there are slight nuances between the terms, for our purposes you can think of these all as synonyms of the same concept._
+
+**Partial hydration is the secret to Astro’s fast-by-default performance story.** Next.js, Gatsby, and other JavaScript frameworks cannot support partial hydration because they imagine your entire website/page as a single JavaScript application.
+
+## Concept: Island Architecture
+
+**Island architecture** is the idea of using partial hydration to build entire websites. Island architecture is an alternative to the popular idea of building your website into a client-side JavaScript bundle that must be shipped to the user.
+
+> In an "islands" model, server rendering is not a bolt-on optimization aimed at improving SEO or UX. Instead, it is a fundamental part of how pages are delivered to the browser. The HTML returned in response to navigation contains a meaningful and immediately renderable representation of the content the user requested.
+> <br/> -- [Jason Miller](https://jasonformat.com/islands-architecture/)
+
+Besides the obvious performance benefits of sending less JavaScript down to the browser, there are two key benefits to island architecture:
+
+- **Components load individually.** A lightweight component (like a sidebar toggle) will load and render quickly without being blocked by the heavier components on the page.
+- **Components render in isolation.** Each part of the page is an isolated unit, and a performance issue in one unit won't directly affect the others.
+
+![diagram](https://res.cloudinary.com/wedding-website/image/upload/v1596766231/islands-architecture-1.png)
+
+## Hydrate Interactive Components
+
+Astro renders every component on the server **at build time**, unless [client:only](#mycomponent-clientonly-) is used. To hydrate components on the client **at runtime**, you may use any of the following `client:*` directives. A directive is a component attribute (always with a `:`) which tells Astro how your component should be rendered.
+
+```astro
+---
+// Example: hydrating a React component in the browser.
+import MyReactComponent from '../components/MyReactComponent.jsx';
+---
+<!-- "client:visible" means the component won't load any client-side
+ JavaScript for the component until it becomes visible in the
+ user’s browser. -->
+<MyReactComponent client:visible />
+```
+
+Note that the renderer JS (e.g. React) and the component’s CSS are downloaded with the page. The `client:*` directives only dictate when the component JS is imported and when the component is hydrated.
+
+### `<MyComponent client:load />`
+
+Start importing the component JS at page load. Hydrate the component when import completes.
+
+### `<MyComponent client:idle />`
+
+Start importing the component JS as soon as main thread is free (uses [requestIdleCallback()][mdn-ric]). Hydrate the component when import completes.
+
+### `<MyComponent client:visible />`
+
+Start importing the component JS as soon as the element enters the viewport (uses [IntersectionObserver][mdn-io]). Hydrate the component when import completes. Useful for content lower down on the page.
+
+### `<MyComponent client:media={QUERY} />`
+
+Start importing the component JS as soon as the browser matches the given media query (uses [matchMedia][mdn-mm]). Hydrate the component when import completes. Useful for sidebar toggles, or other elements that should only display on mobile or desktop devices.
+
+### `<MyComponent client:only />`
+
+Start importing the component JS at page load and hydrate when the import completes, similar to `client:load`. The component will be **skipped** at build time, useful for components that are entirely dependent on client-side APIs. This is best avoided unless absolutely needed, in most cases it is best to render placeholder content on the server and delay any browser API calls until the component hydrates in the browser.
+
+If more than one renderer is included in the Astro [config](/en/reference/configuration-reference), `client:only` needs a hint to know which renderer to use for the component. For example, `client:only="react"` would make sure that the component is hydrated in the browser with the React renderer. For custom renderers not provided by `@astrojs`, use the full name of the renderer provided in your Astro config, i.e. `<client:only="my-custom-renderer" />`.
+
+## Can I Hydrate Astro Components?
+
+[Astro components](/en/core-concepts/astro-components) (`.astro` files) are HTML-only templating components with no client-side runtime. If you try to hydrate an Astro component with a `client:` modifier, you will get an error.
+
+To make your Astro component interactive, you will need to convert it to the frontend framework of your choice: React, Svelte, Vue, etc. If you have no preference, we recommend React or Preact as they are most similar to Astro’s syntax. Using a frontend framework provides a client-side runtime that encapsulates the JavaScript and allows usage of `client:` modifiers per component instance.
+
+Alternatively, you could add a `<script>` tag to your Astro component HTML template and send JavaScript to the browser that way, but this script will execute in the global scope and there will be no client-side component to attach a `client:` modifier to. While this is fine for the simple stuff, we recommend a frontend framework for more complex interactive components.
+
+```astro
+---
+// Example: Using Astro with script tags
+---
+<h1>Not clicked</h1>
+<button>Click to change heading</button>
+<script>
+document.querySelector("button").addEventListener("click",() => {
+ document.querySelector("h1").innerText = "clicked"
+})
+</script>
+```
+
+[mdn-io]: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API
+[mdn-ric]: https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback
+[mdn-mm]: https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia
diff --git a/smoke/docs-main/src/pages/en/core-concepts/layouts.md b/smoke/docs-main/src/pages/en/core-concepts/layouts.md
new file mode 100644
index 000000000..42252049a
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/core-concepts/layouts.md
@@ -0,0 +1,155 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Layouts
+description: An intro to layouts, a type of Astro component that is shared between pages for common layouts.
+---
+
+**Layouts** are a special type of [Component](/en/core-concepts/astro-components) that help you share and reuse common page layouts within your project.
+
+Layouts are just like any other reusable Astro component. There’s no new syntax or APIs to learn. However, reusable page layouts are such a common pattern in web development that we created this guide to help you use them.
+
+## Usage
+
+Astro layouts support props, slots, and all of the other features of Astro components. Layouts are just normal components, after all!
+
+Unlike other components, layouts will often contain the full page `<html>`, `<head>` and `<body>` (often referred to as the **page shell**).
+
+It’s a common pattern to put all of your layout components in a single `src/layouts` directory.
+
+## Example
+
+```astro
+---
+// src/layouts/BaseLayout.astro
+const {title} = Astro.props;
+---
+<html>
+ <head>
+ <title>Example Layout: {title}</title>
+ </head>
+ <body>
+ <!-- Adds a navigation bar to every page. -->
+ <nav>
+ <a href="#">Home</a>
+ <a href="#">Posts</a>
+ <a href="#">Contact</a>
+ </nav>
+ <!-- slot: your page content will be injected here. -->
+ <slot />
+ </body>
+</html>
+```
+
+📚 The `<slot />` element lets Astro components define where any children elements (passed to the layout) should go. Learn more about how `<slot/>` works in our [Astro Component guide.](/en/core-concepts/astro-components)
+
+Once you have your first layout, you can use it like you would any other component on your page. Remember that your layout contains your page `<html>`, `<head>`, and `<body>`. You only need to provide the custom page content.
+
+```astro
+---
+// src/pages/index.astro
+import BaseLayout from '../layouts/BaseLayout.astro'
+---
+<BaseLayout title="Homepage">
+ <h1>Hello, world!</h1>
+ <p>This is my page content. It will be nested inside a layout.</p>
+</BaseLayout>
+```
+
+## Nesting Layouts
+
+You can nest layouts when you want to create more specific page types without copy-pasting. It is common in Astro to have one generic `BaseLayout` and then many more specific layouts (`PostLayout`, `ProductLayout`, etc.) that reuse and build on top of it.
+
+```astro
+---
+// src/layouts/PostLayout.astro
+import BaseLayout from '../layouts/BaseLayout.astro'
+const {title, author} = Astro.props;
+---
+ <!-- This layout reuses BaseLayout (see example above): -->
+<BaseLayout title={title}>
+ <!-- Adds new post-specific content to every page. -->
+ <div>Post author: {author}</div>
+ <!-- slot: your page content will be injected here. -->
+ <slot />
+</BaseLayout>
+```
+
+## Composing Layouts
+
+Sometimes, you need more granular control over your page. For instance, you may want to add SEO or social `meta` tags on some pages, but not others. You could implement this with a prop on your layout (`<BaseLayout addMeta={true} ...`) but at some point it may be easier to compose your layouts without nesting.
+
+Instead of defining your entire `<html>` page as one big layout, you can define the `head` and `body` contents as smaller, separate components. This lets you compose multiple layouts together in unique ways on every page.
+
+```astro
+---
+// src/layouts/BaseHead.astro
+const {title, description} = Astro.props;
+---
+<meta charset="UTF-8">
+<title>{title}</title>
+<meta name="description" content={description}>
+<link rel="preconnect" href="https://fonts.gstatic.com">
+<link href="https://fonts.googleapis.com/css2?family=Spectral:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet">
+```
+
+Notice how this layout doesn't include your page shell, and only includes some generic elements that should go in your `<head>`. This lets you combine multiple layout components together with more control over the overall page structure.
+
+```astro
+---
+// src/pages/index.astro
+import BaseHead from '../layouts/BaseHead.astro';
+import OpenGraphMeta from '../layouts/OpenGraphMeta.astro';
+---
+<html>
+ <head>
+ <!-- Now, you have complete control over the head, per-page. -->
+ <BaseHead title="Page Title" description="Page Description" />
+ <OpenGraphMeta />
+ <!-- You can even add custom, one-off elements as needed. -->
+ <link rel="alternate" type="application/rss+xml" href="/feed/posts.xml">
+ </head>
+ <body>
+ <!-- ... -->
+ </body>
+</html>
+```
+
+The one downside to this approach is that you'll need to define the `<html>`, `<head>`, and `<body>` elements on every page yourself. This is needed to construct the page because the layout components no longer contain the full page shell.
+
+## Markdown Layouts
+
+Layouts are essential for Markdown files. Markdown files can declare a layout in the file frontmatter. Each Markdown file will be rendered to HTML and then injected into the layout’s `<slot />` location.
+
+```markdown
+---
+title: Blog Post
+layout: ../layouts/PostLayout.astro
+---
+
+This blog post will be **rendered** inside of the `<PostLayout />` layout.
+```
+
+Markdown pages always pass a `content` prop to their layout, which is useful to grab information about the page, title, metadata, table of contents headers, and more.
+
+```astro
+---
+// src/layouts/PostLayout.astro
+const { content } = Astro.props;
+---
+<html>
+ <head>
+ <title>{content.title}</title>
+ </head>
+ <body>
+ <h1>{content.title}</h1>
+ <h2>{content.description}</h2>
+ <img src={content.image} alt="">
+ <article>
+ <!-- slot: Markdown content goes here! -->
+ <slot />
+ </article>
+ </body>
+</html>
+```
+
+📚 Learn more about Astro’s markdown support in our [Markdown guide](/en/guides/markdown-content).
diff --git a/smoke/docs-main/src/pages/en/core-concepts/project-structure.md b/smoke/docs-main/src/pages/en/core-concepts/project-structure.md
new file mode 100644
index 000000000..8759bfae6
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/core-concepts/project-structure.md
@@ -0,0 +1,58 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Project Structure
+description: Learn how to structure a project with Astro.
+---
+
+Astro includes an opinionated folder layout for your project. Every Astro project must include these directories and files:
+
+- `src/*` - Your project source code (components, pages, etc.)
+- `public/*` - Your non-code assets (fonts, icons, etc.)
+- `package.json` - A project manifest.
+
+The easiest way to set up your new project is with `npm init astro`. Check out our [Installation Guide](/en/installation) for a walkthrough of how to set up your project automatically (with `npm init astro`) or manually.
+
+## Project Structure
+
+```
+├── src/
+│ ├── components/
+│ ├── layouts/
+│ └── pages/
+│ └── index.astro
+├── public/
+└── package.json
+```
+
+### `src/`
+
+The src folder is where most of your project source code lives. This includes:
+
+- [Astro Components](/en/core-concepts/astro-components)
+- [Pages](/en/core-concepts/astro-pages)
+- [Layouts](/en/core-concepts/layouts)
+- [Frontend JS Components](/en/core-concepts/component-hydration)
+- [Styling (CSS, Sass)](/en/guides/styling)
+- [Markdown](/en/guides/markdown-content)
+
+Astro has complete control over how these files get processed, optimized, and bundled in your final site build. Some files (like Astro components) never make it to the browser directly and are instead rendered to HTML. Other files (like CSS) are sent to the browser but may be bundled with other CSS files depending on how your site uses them.
+
+### `src/components`
+
+[Components](/en/core-concepts/astro-components) are reusable units of UI for your HTML pages. It is recommended (but not required) that you put your components in this directory. How you organize them within this directory is up to you.
+
+Your non-Astro UI components (React, Preact, Svelte, Vue, etc.) can also live in the `src/components` directory. Astro will automatically render all components to HTML unless you've enabled a frontend component via partial hydration.
+
+### `src/layouts`
+
+[Layouts](/en/core-concepts/layouts) are reusable components for HTML page layouts. It is recommended (but not required) that you put your layout components in this directory. How you organize them within this directory is up to you.
+
+### `src/pages`
+
+[Pages](/en/core-concepts/astro-pages) contain all pages (`.astro` and `.md` supported) for your website. It is **required** that you put your pages in this directory.
+
+### `public/`
+
+For most users, the majority of your files will live inside of the `src/` directory so that Astro can properly handle and optimize them in your final build. By contrast, the `public/` directory is the place for any files to live outside of the Astro build process.
+
+If you put a file into the public folder, it will not be processed by Astro. Instead it will be copied into the build folder untouched. This can be useful for assets like images and fonts, or when you need to include a specific file like `robots.txt` or `manifest.webmanifest`.
diff --git a/smoke/docs-main/src/pages/en/core-concepts/routing.md b/smoke/docs-main/src/pages/en/core-concepts/routing.md
new file mode 100644
index 000000000..826ee5db8
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/core-concepts/routing.md
@@ -0,0 +1,102 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Routing
+description: An intro to routing with Astro.
+---
+
+Astro uses **file-based routing** to generate your build URLs based on the file layout of your project `src/pages` directory. When a file is added to the `src/pages` directory of your project, it is automatically available as a route based on its filename.
+
+## Static routes
+
+Astro Components (`.astro`) and Markdown Files (`.md`) in the `src/pages` directory become pages on your website. Each page’s route is decided based on its filename and path within the `src/pages` directory. This means that there is no separate "routing config" to maintain in an Astro project.
+
+```bash
+# Example: Static routes
+src/pages/index.astro -> mysite.com/
+src/pages/about.astro -> mysite.com/about
+src/pages/about/index.astro -> mysite.com/about
+src/pages/about/me.astro -> mysite.com/about/me
+src/pages/posts/1.md -> mysite.com/posts/1
+```
+
+## Dynamic routes
+
+Sometimes, you need to generate many URLs from a single page component. Astro uses file-based routing to support **dynamic route parameters** in the filename, so that one page can match many dynamic routes based on some pattern.
+
+An important thing to keep in mind: Astro is a static site builder. There is no Astro server to run in production, which means that every page must be built ahead of time. Pages that use dynamic routes must export a `getStaticPaths()` function which will tell Astro exactly what pages to generate. Learn more by viewing the complete [API Reference](/en/reference/api-reference#getstaticpaths).
+
+### Named parameters
+
+Dynamic parameters are encoded into the filename using `[bracket]` notation:
+
+- `pages/blog/[slug].astro` → `/blog/:slug` (`/blog/hello-world`, `/blog/post-2`, etc.)
+- `pages/[username]/settings.astro` → (`/fred/settings`, `/drew/settings`, etc.)
+- `pages/[lang]-[version]/info.astro` → (`/en-v1/info`, `/fr-v2/info`, etc.)
+
+#### Example: Named parameters
+
+Consider the following page `pages/post/[pid].astro`:
+
+```astro
+---
+// Example: src/pages/post/[pid].astro
+const {pid} = Astro.request.params;
+---
+<p>Post: {pid}</p>
+```
+
+Any route like `/post/1`, `/post/abc`, etc. will be matched by `pages/post/[pid].astro`. The matched path parameter will be passed to the page component at `Astro.request.params`.
+
+For example, the route `/post/abc` will have the following `Astro.request.params` object available:
+
+```json
+{ "pid": "abc" }
+```
+
+Multiple dynamic route segments can be combined to work the same way. The page `pages/post/[pid]/[comment].astro` will match the route `/post/abc/a-comment` and its `query` object will be:
+
+```json
+{ "pid": "abc", "comment": "a-comment" }
+```
+
+### Rest parameters
+
+If you need more flexibility in your URL routing, you can use a rest parameter as a universal catch-all. You do this by adding three dots (`...`) inside your brackets. For example:
+
+- `pages/post/[...slug].astro` → (`/post/a`, `/post/a/b`, `/post/a/b/c`, etc.)
+
+Matched parameters will be sent as a query parameter (`slug` in the example) to the page. In the example above, the path `/post/a/b/c` will have the following `query` object:
+
+```json
+{ "slug": "a/b/c" }
+```
+
+You can use names other than `slug`, such as: `[...param]` or `[...name]`.
+
+Rest parameters are optional by default, so `pages/post/[...slug].astro` could match `/post/` as well.
+
+#### Example: Rest parameters
+
+For a real-world example, you might implement GitHub’s file viewer like so:
+
+```
+/[org]/[repo]/tree/[branch]/[...file]
+```
+
+In this example, a request for `/withastro/astro/tree/main/docs/public/favicon.svg` would result in the following parameters being available to the page:
+
+```js
+{
+ org: 'withastro',
+ repo: 'astro',
+ branch: 'main',
+ file: 'docs/public/favicon.svg'
+}
+```
+
+## Caveats
+
+- Static routes without path params will take precedence over all other routes, and named path params over catch all path params. Take a look at the following examples:
+ - `pages/post/create.astro` - Will match `/post/create`
+ - `pages/post/[pid].astro` - Will match `/post/1`, `/post/abc`, etc. But not `/post/create`
+ - `pages/post/[...slug].astro` - Will match `/post/1/2`, `/post/a/b/c`, etc. But not `/post/create`, `/post/abc`
diff --git a/smoke/docs-main/src/pages/en/getting-started.md b/smoke/docs-main/src/pages/en/getting-started.md
new file mode 100644
index 000000000..2e7a19e62
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/getting-started.md
@@ -0,0 +1,74 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Getting Started
+description: A basic intro to Astro.
+---
+
+Astro is a modern static site builder. Learn what Astro is all about from [our homepage](https://astro.build/) or [our release post](https://astro.build/blog/introducing-astro). This page is an overview of the Astro documentation and all related resources.
+
+## Try Astro
+
+The easiest way to try Astro is to run `npm init astro` in a new directory on your machine. Our CLI wizard will assist you in starting a new Astro project.
+
+To get started with Astro in 5 quick and easy steps, visit our [Quick-Start guide](/en/quick-start).
+
+Alternatively, read our [Installation Guide](/en/installation) for a full walk-through on getting set up with Astro.
+
+### Example Projects
+
+If you prefer to learn Astro by example, check out our [complete library of examples](https://github.com/withastro/astro/tree/main/examples) on GitHub.
+
+You can check out any of these examples on your local machine by running `npm init astro` with the `--template` CLI flag. The `--template` flag also supports third-party, community templates.
+
+```bash
+# Run the init wizard and use this official template
+npm init astro -- --template [OFFICIAL_EXAMPLE_NAME]
+# Run the init wizard and use this community template
+npm init astro -- --template [GITHUB_USER]/[REPO_NAME]
+npm init astro -- --template [GITHUB_USER]/[REPO_NAME]/path/to/example
+```
+
+### Online Playgrounds
+
+If you're interested in playing around with Astro in the browser, you can instantly spin up a new Astro project with our UI at [astro.new](https://astro.new/).
+
+You can try Astro in online code editors like Stackblitz, CodeSandbox, Gitpod, and GitHub Codespaces. Click the "Open in Stackblitz" link in any of the examples in our [examples library](https://github.com/withastro/astro/tree/main/examples). Or, [click here](https://stackblitz.com/fork/astro) to start a new project in [Stackblitz](https://stackblitz.com/fork/astro).
+
+## Learn Astro
+
+All manner of people come to Astro from different backgrounds bringing with them different learning styles. Whether you prefer a more theoretical or a practical approach, we hope you'll find this section helpful.
+
+- If you prefer to **learn by doing**, start with our [examples library](https://github.com/withastro/astro/tree/main/examples).
+- If you prefer to **learn concepts step by step**, start with our [basic concepts and guides](/en/core-concepts/project-structure).
+
+Like any unfamiliar technology, Astro comes with a slight learning curve. However, with practice and some patience, we know, you _will_ get the hang of it, in no time.
+
+### Learn `.astro` Syntax
+
+When you begin to learn Astro, you'll see many files using the `.astro` file extension. This is **Astro’s Component Syntax**: a special HTML-like file format which Astro uses for templating. It was designed to feel familiar to anyone with HTML or JSX experience.
+
+Our helpful guide on [Astro components](/en/core-concepts/astro-components) introduces you to the Astro syntax, and is the best way to learn.
+
+### API Reference
+
+This documentation section is useful when you want to learn more details about a particular Astro API. For example, [Configuration Reference](/en/reference/configuration-reference) lists all possible configuration options available to you. [Built-in Components Reference](/en/reference/builtin-components) lists all available core components, like `<Markdown />` and `<Code />`.
+
+### Versioned Documentation
+
+This documentation always reflects the latest stable version of Astro. Once we hit the v1.0 milestone, we will add the ability to view versioned documentation.
+
+## Staying Informed
+
+The [@astrodotbuild](https://twitter.com/astrodotbuild) Twitter account is the official source for the updates from the Astro team.
+
+We also post release announcements to our [Discord community](https://astro.build/chat) in the #announcements channel.
+
+Not every Astro release deserves its own blog post, but you can find a detailed changelog for every release in the [`CHANGELOG.md` file in the Astro repository](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md).
+
+## Something Missing?
+
+If something is missing in the documentation or if you found some part confusing, please [file an issue for the documentation](https://github.com/withastro/astro/issues/new/choose) with your suggestions for improvement, or tweet at the [@astrodotbuild](https://twitter.com/astrodotbuild) Twitter account. We love hearing from you!
+
+## Credit
+
+This getting started guide was originally based off of [React’s](https://reactjs.org/) getting started guide.
diff --git a/smoke/docs-main/src/pages/en/guides/aliases.md b/smoke/docs-main/src/pages/en/guides/aliases.md
new file mode 100644
index 000000000..3860d555b
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/guides/aliases.md
@@ -0,0 +1,46 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Aliases
+description: An intro to aliases with Astro.
+---
+
+An **alias** is a way to create shortcuts for your imports.
+
+Aliases can help improve the development experience in codebases with many directories or relative imports.
+
+```astro
+---
+// my-project/src/pages/about/company.astro
+
+import Button from '../../components/controls/Button.astro';
+import logoUrl from '../../assets/logo.png?url';
+---
+```
+
+In this example, a developer would need to understand the tree relationship between `src/pages/about/company.astro`, `src/components/controls/Button.astro`, and `src/assets/logo.png`. And then, if the `company.astro` file were to be moved, these imports would also need to be updated.
+
+You can add import aliases from either `tsconfig.json` or `jsconfig.json`.
+
+```json
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "@/components/*": ["src/components/*"]
+ }
+ }
+}
+```
+
+With this change, you can now import using the aliases anywhere in your project:
+
+```astro
+---
+// my-project/src/pages/about/company.astro
+
+import Button from 'component:Button';
+import logoUrl from 'asset:logo.png';
+---
+```
+
+These aliases are also integrated automatically into [VSCode](https://code.visualstudio.com/docs/languages/jsconfig) and other editors.
diff --git a/smoke/docs-main/src/pages/en/guides/data-fetching.md b/smoke/docs-main/src/pages/en/guides/data-fetching.md
new file mode 100644
index 000000000..a0481f059
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/guides/data-fetching.md
@@ -0,0 +1,56 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Data Fetching
+description: Learn how to fetch remote data with Astro using the fetch API.
+---
+
+Astro components and pages can fetch remote data to help generate your pages. Astro provides two different tools to pages to help you do this: **fetch()** and **top-level await.**
+
+## `fetch()`
+
+Astro pages have access to the global `fetch()` function in their setup script. `fetch()` is a native JavaScript API ([MDN<span class="sr-only">- fetch</span>](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch)) that lets you make HTTP requests for things like APIs and resources.
+
+Even though Astro component scripts run inside of Node.js (and not in the browser) Astro provides this native API so that you can fetch data at page build time.
+
+```astro
+---
+// Movies.astro
+const response = await fetch('https://example.com/movies.json');
+const data = await response.json();
+// Remember: Astro component scripts log to the CLI
+console.log(data);
+---
+<!-- Output the result to the page -->
+<div>{JSON.stringify(data)}</div>
+```
+
+## Top-level await
+
+`await` is another native JavaScript feature that lets you await the response of some asynchronous promise ([MDN<span class="sr-only">- await</span>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await)). Astro supports `await` in the top-level of your component script.
+
+**Important:** These are not yet available inside of non-page Astro components. Instead, do all of your data loading inside of your pages, and then pass them to your components as props.
+
+## Using `fetch()` outside of Astro Components
+
+If you want to use `fetch()` in a non-astro component, it is also globally available:
+
+```tsx
+// Movies.tsx
+import type { FunctionalComponent } from 'preact';
+import { h } from 'preact';
+
+const data = fetch('https://example.com/movies.json').then((response) =>
+ response.json()
+);
+
+// Components that are build-time rendered also log to the CLI.
+// If you loaded this component with a directive, it would log to the browser console.
+console.log(data);
+
+const Movies: FunctionalComponent = () => {
+ // Output the result to the page
+ return <div>{JSON.stringify(data)}</div>;
+};
+
+export default Movies;
+```
diff --git a/smoke/docs-main/src/pages/en/guides/debugging.md b/smoke/docs-main/src/pages/en/guides/debugging.md
new file mode 100644
index 000000000..786070267
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/guides/debugging.md
@@ -0,0 +1,7 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Debugging
+description: Debug in Astro using the Debug component
+---
+
+Astro runs on the server and logs directly to your terminal, so it can be difficult to debug values from Astro. Astro’s built-in `<Debug>` component can help you inspect values inside your files on the clientside. Read more about the [built-in Debug Component](/en/reference/builtin-components#debug-).
diff --git a/smoke/docs-main/src/pages/en/guides/deploy.md b/smoke/docs-main/src/pages/en/guides/deploy.md
new file mode 100644
index 000000000..cb82ae33a
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/guides/deploy.md
@@ -0,0 +1,528 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Deploy a Website
+description: Multiple different methods to deploy a website with Astro.
+---
+
+The following guides are based on some shared assumptions:
+
+- You are using the default build output location (`dist/`). This location [can be changed using the `dist` configuration option](/en/reference/configuration-reference).
+- You are using npm. You can use equivalent commands to run the scripts if you are using Yarn or other package managers.
+- Astro is installed as a local dev dependency in your project, and you have set up the following npm scripts:
+
+```json
+{
+ "scripts": {
+ "start": "astro dev",
+ "build": "astro build",
+ "preview": "astro preview"
+ }
+}
+```
+
+## Building The App
+
+You may run `npm run build` command to build the app.
+
+```bash
+$ npm run build
+```
+
+By default, the build output will be placed at `dist/`. You may deploy this `dist/` folder to any of your preferred platforms.
+
+## GitHub Pages
+
+> **Warning:** By default, Github Pages will break the `_astro/` directory of your deployed website. To disable this behavior and fix this issue, make sure that you use the `deploy.sh` script below or manually add an empty `.nojekyll` file to your `public/` site directory.
+
+1. Set the correct `buildOptions.site` in `astro.config.mjs`.
+1. Inside your project, create `deploy.sh` with the following content (uncommenting the appropriate lines), and run it to deploy:
+
+ ```bash
+ #!/usr/bin/env sh
+
+ # abort on errors
+ set -e
+
+ # build
+ npm run build
+
+ # navigate into the build output directory
+ cd dist
+
+ # add .nojekyll to bypass GitHub Page’s default behavior
+ touch .nojekyll
+
+ # if you are deploying to a custom domain
+ # echo 'www.example.com' > CNAME
+
+ git init
+ git add -A
+ git commit -m 'deploy'
+
+ # if you are deploying to https://<USERNAME>.github.io
+ # git push -f git@github.com:<USERNAME>/<USERNAME>.github.io.git main
+
+ # if you are deploying to https://<USERNAME>.github.io/<REPO>
+ # git push -f git@github.com:<USERNAME>/<REPO>.git main:gh-pages
+
+ cd -
+ ```
+
+ > You can also run the above script in your CI setup to enable automatic deployment on each push.
+
+### GitHub Actions
+
+1. In the astro project repo, create `gh-pages` branch then go to Settings > Pages and set to `gh-pages` branch for GitHub Pages and set directory to `/` (root).
+2. Set the correct `buildOptions.site` in `astro.config.mjs`.
+3. Create the file `.github/workflows/main.yml` and add in the yaml below. Make sure to edit in your own details.
+4. In GitHub go to Settings > Developer settings > Personal Access tokens. Generate a new token with repo permissions.
+5. In the astro project repo (not \<YOUR USERNAME\>.github.io) go to Settings > Secrets and add your new personal access token with the name `API_TOKEN_GITHUB`.
+6. When you push changes to the astro project repo CI will deploy them to \<YOUR USERNAME\>.github.io for you.
+
+```yaml
+# Workflow to build and deploy to your GitHub Pages repo.
+
+# Edit your project details here.
+# Remember to add API_TOKEN_GITHUB in repo Settings > Secrets as well!
+env:
+ githubEmail: <YOUR GITHUB EMAIL ADDRESS>
+ deployToRepo: <NAME OF REPO TO DEPLOY TO (E.G. <YOUR USERNAME>.github.io)>
+
+name: Github Pages Astro CI
+
+on:
+ # Triggers the workflow on push and pull request events but only for the main branch
+ push:
+ branches: [main]
+ pull_request:
+ branches: [main]
+
+ # Allows you to run this workflow manually from the Actions tab.
+ workflow_dispatch:
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+
+ steps:
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - uses: actions/checkout@v2
+
+ # Install dependencies with npm
+ - name: Install dependencies
+ run: npm ci
+
+ # Build the project and add .nojekyll file to supress default behaviour
+ - name: Build
+ run: |
+ npm run build
+ touch ./dist/.nojekyll
+
+ # Push to your pages repo
+ - name: Push to pages repo
+ uses: cpina/github-action-push-to-another-repository@main
+ env:
+ API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
+ with:
+ source-directory: 'dist'
+ destination-github-username: ${{ github.actor }}
+ destination-repository-name: ${{ env.deployToRepo }}
+ user-email: ${{ env.githubEmail }}
+ commit-message: Deploy ORIGIN_COMMIT
+ target-branch: gh-pages
+```
+
+### Travis CI
+
+1. Set the correct `buildOptions.site` in `astro.config.mjs`.
+2. Create a file named `.travis.yml` in the root of your project.
+3. Run `npm install` locally and commit the generated lockfile (`package-lock.json`).
+4. Use the GitHub Pages deploy provider template, and follow the [Travis CI documentation](https://docs.travis-ci.com/user/deployment/pages/).
+
+ ```yaml
+ language: node_js
+ node_js:
+ - lts/*
+ install:
+ - npm ci
+ script:
+ - npm run build
+ deploy:
+ provider: pages
+ skip_cleanup: true
+ local_dir: dist
+ # A token generated on GitHub allowing Travis to push code on you repository.
+ # Set in the Travis settings page of your repository, as a secure variable.
+ github_token: $GITHUB_TOKEN
+ keep_history: true
+ on:
+ branch: master
+ ```
+
+## GitLab Pages
+
+1. Set the correct `buildOptions.site` in `astro.config.mjs`.
+2. Set `dist` in `astro.config.mjs` to `public` and `public` in `astro.config.mjs` to a newly named folder that is holding everything currently in `public`. The reasoning is because `public` is a second source folder in astro, so if you would like to output to `public` you'll need to pull public assets from a different folder. Your `astro.config.mjs` might end up looking like this:
+
+ ```js
+ export default /** @type {import('astro').AstroUserConfig} */ ({
+ // Enable the Preact renderer to support Preact JSX components.
+ renderers: ['@astrojs/renderer-preact'],
+ // files in `static/` will be blindly copied to `public/`
+ public: 'static',
+ // `public/` is where the built website will be output to
+ dist: 'public',
+ buildOptions: {
+ sitemap: true,
+ site: 'https://astro.build/',
+ },
+ });
+ ```
+
+3. Create a file called `.gitlab-ci.yml` in the root of your project with the content below. This will build and deploy your site whenever you make changes to your content:
+
+ ```yaml
+ image: node:14
+ pages:
+ cache:
+ paths:
+ - node_modules/
+ script:
+ - npm install
+ - npm run build
+ artifacts:
+ paths:
+ - public
+ only:
+ - main
+ ```
+
+## Netlify
+
+**Note:** If you are using an older [build image](https://docs.netlify.com/configure-builds/get-started/#build-image-selection) on Netlify, make sure that you set your Node.js version in either a [`.nvmrc`](https://github.com/nvm-sh/nvm#nvmrc) file (example: `node v14.17.6`) or a `NODE_VERSION` environment variable. This step is no longer required by default.
+
+You can configure your deployment in two ways, via the Netlify website or with a local project `netlify.toml` file.
+
+### `netlify.toml` file
+
+Create a new `netlify.toml` file at the top level of your project repository with the following settings:
+
+```toml
+[build]
+ command = "npm run build"
+ publish = "dist"
+```
+
+Push the new `netlify.toml` file up to your hosted git repository. Then, set up a new project on [Netlify](https://netlify.com) for your git repository. Netlify will read this file and automatically configure your deployment.
+
+### Netlify Website UI
+
+You can skip the `netlify.toml` file and go directly to [Netlify](https://netlify.com) to configure your project. Netlify should now detect Astro projects automatically and pre-fill the configuration for you. Make sure that the following settings are entered before hitting the "Deploy" button:
+
+- **Build Command:** `astro build` or `npm run build`
+- **Publish directory:** `dist`
+
+## Google Cloud
+
+Different from most available deploy options here, [Google Cloud](https://cloud.google.com) requires some UI clicks to deploy projects. (Most of these actions can also be done using the gcloud CLI).
+
+### Cloud Run
+
+1. Create a new GCP project, or select one you already have.
+
+2. Make sure the Cloud Run API is enabled.
+
+3. Create a new service.
+
+4. Use a container from Docker Hub or build your own using [Cloud Build](https://cloud.google.com/build).
+
+5. Configure a port from which the files are served.
+
+6. Enable public access by adding a new permission to `allUsers` called `Cloud Run Invoker`.
+
+### Cloud Storage
+
+1. Create a new GCP project, or select one you already have.
+
+2. Create a new bucket under [Cloud Storage](https://cloud.google.com/storage).
+
+3. Give it a name and other required settings.
+
+4. Upload your `dist` folder into it or upload using [Cloud Build](https://cloud.google.com/build).
+
+5. Enable public access by adding a new permission to `allUsers` called `Storage Object Viewer`.
+
+6. Edit the website configuration and add `ìndex.html` as entrypoint and `404.html` as errorpage.
+
+## Google Firebase
+
+1. Make sure you have [firebase-tools](https://www.npmjs.com/package/firebase-tools) installed.
+
+2. Create `firebase.json` and `.firebaserc` at the root of your project with the following content:
+
+ `firebase.json`:
+
+ ```json
+ {
+ "hosting": {
+ "public": "dist",
+ "ignore": []
+ }
+ }
+ ```
+
+ `.firebaserc`:
+
+ ```json
+ {
+ "projects": {
+ "default": "<YOUR_FIREBASE_ID>"
+ }
+ }
+ ```
+
+3. After running `npm run build`, deploy using the command `firebase deploy`.
+
+## Surge
+
+1. First install [surge](https://www.npmjs.com/package/surge), if you haven't already.
+
+2. Run `npm run build`.
+
+3. Deploy to surge by typing `surge dist`.
+
+You can also deploy to a [custom domain](http://surge.sh/help/adding-a-custom-domain) by adding `surge dist yourdomain.com`.
+
+## Heroku
+
+1. Install [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli).
+
+2. Create a Heroku account by [signing up](https://signup.heroku.com).
+
+3. Run `heroku login` and fill in your Heroku credentials:
+
+ ```bash
+ $ heroku login
+ ```
+
+4. Create a file called `static.json` in the root of your project with the below content:
+
+ `static.json`:
+
+ ```json
+ {
+ "root": "./dist"
+ }
+ ```
+
+ This is the configuration of your site; read more at [heroku-buildpack-static](https://github.com/heroku/heroku-buildpack-static).
+
+5. Set up your Heroku git remote:
+
+ ```bash
+ # version change
+ $ git init
+ $ git add .
+ $ git commit -m "My site ready for deployment."
+
+ # creates a new app with a specified name
+ $ heroku apps:create example
+
+ # set buildpack for static sites
+ $ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-static.git
+ ```
+
+6. Deploy your site:
+
+ ```bash
+ # publish site
+ $ git push heroku master
+
+ # opens a browser to view the Dashboard version of Heroku CI
+ $ heroku open
+ ```
+
+## Vercel
+
+You can deploy Astro to [Vercel](http://vercel.com) through the CLI or the Vercel git integrations.
+
+### CLI
+
+1. Install the [Vercel CLI](https://vercel.com/cli) and run `vercel` to deploy.
+2. When asked `Want to override the settings? [y/N]`, choose `Y`.
+3. Update `Output Directory` to `./dist`.
+4. Your application is deployed! (e.g. [astro.vercel.app](https://astro.vercel.app/))
+
+```bash
+$ npm i -g vercel
+$ vercel
+```
+
+### Git
+
+1. Push your code to your git repository (GitHub, GitLab, BitBucket).
+2. [Import your project](https://vercel.com/new) into Vercel.
+3. Update `Output Directory` to `./dist`.
+4. Your application is deployed! (e.g. [astro.vercel.app](https://astro.vercel.app/))
+
+After your project has been imported and deployed, all subsequent pushes to branches will generate [Preview Deployments](https://vercel.com/docs/concepts/deployments/environments#preview), and all changes made to the Production Branch (commonly “main”) will result in a [Production Deployment](https://vercel.com/docs/concepts/deployments/environments#production).
+
+Learn more about Vercel’s [Git Integration](https://vercel.com/docs/concepts/git).
+
+## Azure Static Web Apps
+
+You can deploy your Astro project with Microsoft Azure [Static Web Apps](https://aka.ms/staticwebapps) service. You need:
+
+- An Azure account and a subscription key. You can create a [free Azure account here](https://azure.microsoft.com/free).
+- Your app code pushed to [GitHub](https://github.com).
+- The [SWA Extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurestaticwebapps) in [Visual Studio Code](https://code.visualstudio.com).
+
+Install the extension in VS Code and navigate to your app root. Open the Static Web Apps extension, sign in to Azure, and click the '+' sign to create a new Static Web App. You will be prompted to designate which subscription key to use.
+
+Follow the wizard started by the extension to give your app a name, choose a framework preset, and designate the app root (usually `/`) and built file location `/dist`. The wizard will run and will create a GitHub action in your repo in a `.github` folder.
+
+The action will work to deploy your app (watch its progress in your repo’s Actions tab) and, when successfully completed, you can view your app in the address provided in the extension’s progress window by clicking the 'Browse Website' button that appears when the GitHub action has run.
+
+## Cloudflare Pages
+
+You can deploy your Astro project on [Cloudflare Pages](https://pages.cloudflare.com). You need:
+
+- A Cloudflare account. If you don’t already have one, you can create a free Cloudflare account during the process.
+- Your app code pushed to a [GitHub](https://github.com) or a [GitLab](https://about.gitlab.com/) repository.
+
+Then, set up a new project on Cloudflare Pages.
+
+Use the following build settings:
+
+- **Framework preset**: `Astro`
+- **Build command:** `npm run build`
+- **Build output directory:** `dist`
+- **Environment variables (advanced)**: Currently, Cloudflare Pages supports `NODE_VERSION = 12.18.0` in the Pages build environment by default. Astro requires `14.15.0`, `v16.0.0`, or higher. You can add an environment variable with the **Variable name** of `NODE_VERSION` and a **Value** of a [Node version that’s compatible with Astro](https://docs.astro.build/installation#prerequisites) or by specifying the node version of your project in a `.nvmrc` or `.node-version` file.
+
+Then click the **Save and Deploy** button.
+
+## Render
+
+You can deploy your Astro project on [Render](https://render.com/) following these steps:
+
+1. Create a [render.com account](https://dashboard.render.com/) and sign in
+2. Click the **New +** button from your dashboard and select **Static Site**
+3. Connect your [GitHub](https://github.com/) or [GitLab](https://about.gitlab.com/) repository or alternatively enter the public URL of a public repository
+4. Give your website a name, select the branch and specify the build command and publish directory
+ - **build command:** `npm run build`
+ - **publish directory:** `dist`
+5. Click the **Create Static Site** button
+
+## Buddy
+
+You can deploy your Astro project using [Buddy](https://buddy.works). To do so you'll need to:
+
+1. Create a **Buddy** account [here](https://buddy.works/sign-up).
+2. Create a new project and connect it with a git repository (GitHub, GitLab, BitBucket, any private Git Repository or you can use Buddy Git Hosting).
+3. Add a new pipeline.
+4. In the newly created pipeline add a **[Node.js](https://buddy.works/actions/node-js)** action.
+5. In this action add:
+
+ ```bash
+ npm install
+ npm run build
+ ```
+
+6. Add a deployment action - there are many to choose from, you can browse them [here](https://buddy.works/actions). Although their can settings differ, remember to set the **Source path** to `dist`.
+7. Press the **Run** button.
+
+## Layer0
+
+You can deploy your Astro project using the steps in the following sections.
+
+### Create the Astro Site
+
+If you don't have an existing Astro site, you can create one by running:
+
+```bash
+# Make a new project directory, and navigate directly into it
+$ mkdir my-astro-project && cd $_
+
+# prepare for liftoff...
+$ npm init astro
+
+# install dependencies
+$ npm install
+
+# start developing!
+$ npm run dev
+
+# when you're ready: build your static site to `dist/`
+$ npm run build
+```
+
+### Add Layer0
+
+```bash
+# First, globally install the Layer0 CLI:
+$ npm i -g @layer0/cli
+
+# Then, add Layer0 to your Astro site:
+$ 0 init
+```
+
+### Update your Layer0 Router
+
+Paste the following into routes.ts:
+
+```js
+// routes.ts
+import { Router } from '@layer0/core';
+
+export default new Router()
+ .get(
+ '/:path*/:file.:ext(js|css|png|ico|jpg|gif|svg)',
+ ({ cache, serveStatic }) => {
+ cache({
+ browser: {
+ // cache js, css, and images in the browser for one hour...
+ maxAgeSeconds: 60 * 60,
+ },
+ edge: {
+ // ... and at the edge for one year
+ maxAgeSeconds: 60 * 60 * 24 * 365,
+ },
+ });
+ serveStatic('dist/:path*/:file.:ext');
+ }
+ )
+ .match('/:path*', ({ cache, serveStatic, setResponseHeader }) => {
+ cache({
+ // prevent the browser from caching html...
+ browser: false,
+ edge: {
+ // ...cache html at the edge for one year
+ maxAgeSeconds: 60 * 60 * 24 * 365,
+ },
+ });
+ setResponseHeader('content-type', 'text/html; charset=UTF-8');
+ serveStatic('dist/:path*');
+ });
+```
+
+You can remove the origin backend from `layer0.config.js`:
+
+```js
+module.exports = {};
+```
+
+### Deploy to Layer0
+
+To deploy your site to Layer0, run:
+
+```bash
+# Create a production build of your astro site
+$ npm run build
+
+# Deploy it to Layer0
+$ 0 deploy
+```
+
+## Credits
+
+This guide was originally based off [Vite](https://vitejs.dev/)’s well-documented static deploy guide.
diff --git a/smoke/docs-main/src/pages/en/guides/environment-variables.md b/smoke/docs-main/src/pages/en/guides/environment-variables.md
new file mode 100644
index 000000000..c8546c8d7
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/guides/environment-variables.md
@@ -0,0 +1,48 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Using environment variables
+description: Learn how to use environment variables in an Astro project.
+---
+
+Astro uses Vite for environment variables, and allows you to use any of its methods to get and set environment variables. Note that all environment variables must be prefixed with `PUBLIC_` to be accessible by client side code.
+
+The ability to access private variables on the server side is [still being discussed](https://github.com/withastro/astro/issues/1765).
+
+## Setting environment variables
+
+Vite includes `dotenv` by default, allowing you to easily set environment variables without any extra configuration in Astro projects. You can also attach a mode (either `production` or `development`) to the filename, like `.env.production` or `.env.development`, which makes the environment variables only take effect in that mode.
+
+Just create a `.env` file in the project directory and add some variables to it.
+
+```bash
+# .env
+PUBLIC_POKEAPI="https://pokeapi.co/api/v2"
+```
+
+## Getting environment variables
+
+Instead of using `process.env`, with Vite you use `import.meta.env`, which uses the `import.meta` feature added in ES2020 (don't worry about browser support though, Vite replaces all `import.meta.env` mentions with static values). For example, to get the `PUBLIC_POKEAPI` environment variable, you could use `import.meta.env.PUBLIC_POKEAPI`.
+
+```js
+fetch(`${import.meta.env.PUBLIC_POKEAPI}/pokemon/squirtle`);
+```
+
+> ⚠️WARNING⚠️:
+> Because Vite statically replaces `import.meta.env`, you cannot access it with dynamic keys like `import.meta.env[key]`.
+
+## IntelliSense for TypeScript
+
+By default, Vite provides type definition for `import.meta.env` in `vite/client.d.ts`. While you can define more custom env variables in `.env.[mode]` files, you may want to get TypeScript IntelliSense for user-defined env variables which prefixed with `PUBLIC_`.
+
+To achieve, you can create an `env.d.ts` in `src` directory, then augment `ImportMetaEnv` like this:
+
+```ts
+interface ImportMetaEnv {
+ readonly PUBLIC_POKEAPI: string;
+ // more env variables...
+}
+
+interface ImportMeta {
+ readonly env: ImportMetaEnv;
+}
+```
diff --git a/smoke/docs-main/src/pages/en/guides/imports.md b/smoke/docs-main/src/pages/en/guides/imports.md
new file mode 100644
index 000000000..e0bc41f80
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/guides/imports.md
@@ -0,0 +1,142 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Supported Imports
+description: Learn how to import different content types with Astro.
+---
+
+Astro uses Vite as its internal build system. Vite provides Astro with built-in support for the following file types, with no configuration required:
+
+- JavaScript (`.js`, `.mjs`)
+- TypeScript (`.ts`, `.tsx`)
+- JSON (`.json`)
+- JSX (`.jsx`, `.tsx`)
+- CSS (`.css`)
+- CSS Modules (`.module.css`)
+- Images & Assets (`.svg`, `.jpg`, `.png`, etc.)
+- Astro Components (`.astro`)
+- Markdown (`.md`)
+- WASM (`.wasm`)
+
+Any files in your `public/` directory are copied into the final build, untouched by Vite or Astro. The following applies to files in your `src/` directory, which Astro is ultimately responsible for.
+
+## JavaScript & ESM
+
+Astro was designed for JavaScript’s native ES Module (ESM) syntax. ESM lets you define explicit imports & exports that browsers and build tools can better understand and optimize for. If you're familiar with the `import` and `export` keywords in JavaScript, then you already know ESM!
+
+```js
+// ESM Example - src/user.js
+export function getUser() {
+ /* ... */
+}
+
+// src/index.js
+import { getUser } from './user.js';
+```
+
+All browsers now support ESM, so Astro is able to ship this code directly to the browser during development.
+
+## TypeScript
+
+Astro includes built-in support to build TypeScript files (`*.ts`) to JavaScript. Astro components also support TypeScript in the frontmatter script section.
+
+Note that this built-in support is build only. By default, Astro does not type-check your TypeScript code.
+
+<!-- To integrate type checking into your development/build workflow, add the [@snowpack/plugin-typescript](https://www.npmjs.com/package/@snowpack/plugin-typescript) plugin. -->
+
+## JSX
+
+Astro includes built-in support to build JSX files (`*.jsx` & `*.tsx`) to JavaScript.
+
+If you are using Preact, Astro will detect your Preact import and switch to use the Preact-style JSX `h()` function. This is all done automatically for you.
+
+**Note: Astro does not support JSX in `.js`/`.ts` files.**
+
+## JSON
+
+```js
+// Load the JSON object via the default export
+import json from './data.json';
+```
+
+Astro supports importing JSON files directly into your application. Imported files return the full JSON object in the default import.
+
+## CSS
+
+```js
+// Load and inject 'style.css' onto the page
+import './style.css';
+```
+
+Astro supports importing CSS files directly into your application. Imported styles expose no exports, but importing one will automatically add those styles to the page. This works for all CSS files by default, and can support compile-to-CSS languages like Sass & Less via plugins.
+
+If you prefer not to write CSS, Astro also supports all popular CSS-in-JS libraries (ex: styled-components) for styling.
+
+## CSS Modules
+
+```jsx
+// 1. Converts './style.module.css' classnames to unique, scoped values.
+// 2. Returns an object mapping the original classnames to their final, scoped value.
+import styles from './style.module.css';
+
+// This example uses JSX, but you can use CSS Modules with any framework.
+return <div className={styles.error}>Your Error Message</div>;
+```
+
+Astro supports CSS Modules using the `[name].module.css` naming convention. Like any CSS file, importing one will automatically apply that CSS to the page. However, CSS Modules export a special default `styles` object that maps your original classnames to unique identifiers.
+
+CSS Modules help you enforce component scoping & isolation on the frontend with unique-generated class names for your stylesheets.
+
+## Other Assets
+
+```jsx
+import imgReference from './image.png'; // img === '/src/image.png'
+import svgReference from './image.svg'; // svg === '/src/image.svg'
+import txtReference from './words.txt'; // txt === '/src/words.txt'
+
+// This example uses JSX, but you can use import references with any framework.
+<img src={imgReference} />;
+```
+
+All other assets not explicitly mentioned above can be imported via ESM `import` and will return a URL reference to the final built asset. This can be useful for referencing non-JS assets by URL, like creating an image element with a `src` attribute pointing to that image.
+
+It can also be useful to place images in the `public/`-folder as explained on the [project-structure page](/en/core-concepts/project-structure/#public).
+
+## WASM
+
+```js
+// Loads and intializes the requested WASM file
+const wasm = await WebAssembly.instantiateStreaming(fetch('/example.wasm'));
+```
+
+Astro supports loading WASM files directly into your application using the browser’s [`WebAssembly`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly) API.
+
+## NPM Packages
+
+```js
+// Returns the React & React-DOM npm packages
+import React from 'react';
+import ReactDOM from 'react-dom';
+```
+
+Astro lets you import npm packages directly in the browser. Even if a package was published using a legacy format, Astro will up-convert the package to ESM before serving it to the browser.
+
+When you start up your dev server or run a new build, you may see a message that Vite is "installing dependencies". This means that Vite is converting your dependencies to run in the browser. This needs to run only once, or until you next change your dependency tree by adding or removing dependencies.
+
+## Node Builtins
+
+We encourage Astro users to avoid Node.js builtins (`fs`, `path`, etc) whenever possible. Astro aims to be compatible with multiple JavaScript runtimes in the future. This includes [Deno](https://deno.land/) and [Cloudflare Workers](https://workers.cloudflare.com/) which do not support Node builtin modules such as `fs`.
+
+Our aim is to provide Astro alternatives to common Node.js builtins. However, no such alternatives exist today. So, if you _really_ need to use these builtin modules we don't want to stop you. Astro supports Node.js builtins using Node’s newer `node:` prefix. If you want to read a file, for example, you can do so like this:
+
+```astro
+---
+// Example: import the "fs/promises" builtin from Node.js
+import fs from 'node:fs/promises';
+
+const url = new URL('../../package.json', import.meta.url);
+const json = await fs.readFile(url, 'utf-8');
+const data = JSON.parse(json);
+---
+
+<span>Version: {data.version}</span>
+```
diff --git a/smoke/docs-main/src/pages/en/guides/markdown-content.md b/smoke/docs-main/src/pages/en/guides/markdown-content.md
new file mode 100644
index 000000000..9113833eb
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/guides/markdown-content.md
@@ -0,0 +1,357 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Markdown
+description: An intro to Markdown with Astro.
+---
+
+Astro comes with out-of-the-box Markdown support powered by the expansive [remark](https://remark.js.org/) ecosystem.
+
+## Parsers
+
+Astro lets you use any Markdown parser you want. It just needs to be a function that follows the `MarkdownParser` type declared inside [this file](https://github.com/withastro/astro/blob/main/packages/astro/src/@types/astro.ts). You can declare it inside `astro.config.mjs`:
+
+```js
+// astro.config.mjs
+export default {
+ markdownOptions: {
+ render: [
+ 'parser-name', // or import('parser-name') or (contents) => {...}
+ {
+ // options
+ },
+ ],
+ },
+};
+```
+
+Astro comes with the `@astrojs/markdown-remark` package - the default parser.
+
+### Remark and Rehype Plugins
+
+In addition to custom components inside the [`<Markdown>` component](/en/guides/markdown-content#astros-markdown-component), the default parser comes with these plugins pre-enabled:
+
+- [GitHub-flavored Markdown](https://github.com/remarkjs/remark-gfm)
+- [remark-smartypants](https://github.com/silvenon/remark-smartypants)
+- [rehype-slug](https://github.com/rehypejs/rehype-slug)
+
+Also, Astro supports third-party plugins for Markdown. You can provide your plugins in `astro.config.mjs`.
+
+> **Note:** Enabling custom `remarkPlugins` or `rehypePlugins` removes Astro’s built-in support for the plugins previously mentioned. You must explicitly add these plugins to your `astro.config.mjs` file, if desired.
+
+### Add a Markdown plugin in Astro
+
+If you want to add a plugin, you need to install the npm package dependency in your project and then update `remarkPlugins` or `rehypePlugins` inside the `@astrojs/markdown-remark` options depending on what plugin you want to have:
+
+```js
+// astro.config.mjs
+export default {
+ markdownOptions: {
+ render: [
+ '@astrojs/markdown-remark',
+ {
+ remarkPlugins: [
+ // Add a Remark plugin that you want to enable for your project.
+ // If you need to provide options for the plugin, you can use an array and put the options as the second item.
+ // ['remark-autolink-headings', { behavior: 'prepend'}],
+ ],
+ rehypePlugins: [
+ // Add a Rehype plugin that you want to enable for your project.
+ // If you need to provide options for the plugin, you can use an array and put the options as the second item.
+ // 'rehype-slug',
+ // ['rehype-autolink-headings', { behavior: 'prepend'}],
+ ],
+ },
+ ],
+ },
+};
+```
+
+You can provide names of the plugins as well as import them:
+
+```js
+import autolinkHeadings from 'remark-autolink-headings';
+
+// astro.config.mjs
+export default {
+ markdownOptions: {
+ render: [
+ '@astrojs/markdown-remark',
+ {
+ remarkPlugins: [[autolinkHeadings, { behavior: 'prepend' }]],
+ },
+ ],
+ },
+};
+```
+
+### Syntax Highlighting
+
+Astro comes with built-in support for [Prism](https://prismjs.com/) and [Shiki](https://shiki.matsu.io/). By default, Prism is enabled. You can modify this behavior by updating the `@astrojs/markdown-remark` options:
+
+```js
+// astro.config.mjs
+export default {
+ markdownOptions: {
+ render: [
+ '@astrojs/markdown-remark',
+ {
+ // Pick a syntax highlighter. Can be 'prism' (default), 'shiki' or false to disable any highlighting.
+ syntaxHighlight: 'prism',
+ // If you are using shiki, here you can define a global theme and
+ // add custom languages.
+ shikiConfig: {
+ theme: 'github-dark',
+ langs: [],
+ wrap: false,
+ },
+ },
+ ],
+ },
+};
+```
+
+You can read more about custom Shiki [themes](https://github.com/shikijs/shiki/blob/main/docs/themes.md#loading-theme) and [languages](https://github.com/shikijs/shiki/blob/main/docs/languages.md#supporting-your-own-languages-with-shiki).
+
+## Markdown Pages
+
+Astro treats any `.md` files inside of the `/src/pages` directory as pages. These files can contain frontmatter, but are otherwise processed as plain markdown files and do not support components. If you're looking to embed rich components in your markdown, take a look at the [Markdown Component](#astros-markdown-component) section.
+
+### Layouts
+
+Markdown pages have a special frontmatter property for `layout`. This defines the relative path to an `.astro` component which should wrap your Markdown content, for example a [Layout](/en/core-concepts/layouts) component. All other frontmatter properties defined in your `.md` page will be exposed to the component as properties of the `content` prop. The rendered Markdown content is placed into the default `<slot />` element.
+
+```markdown
+---
+# src/pages/index.md
+layout: ../layouts/BaseLayout.astro
+title: My cool page
+draft: false
+---
+
+# Hello World!
+```
+
+```astro
+---
+// src/layouts/BaseLayout.astro
+const { content } = Astro.props;
+---
+<html>
+ <head>
+ <title>{content.title}</title>
+ </head>
+
+ <body>
+ <slot />
+ </body>
+</html>
+```
+
+For Markdown files, the `content` prop also has an `astro` property which holds special metadata about the page such as the complete Markdown `source` and a `headers` object. An example of what a blog post `content` object might look like is as follows:
+
+```json
+{
+ /** Frontmatter from a blog post
+ "title": "Astro 0.18 Release",
+ "date": "Tuesday, July 27 2021",
+ "author": "Matthew Phillips",
+ "description": "Astro 0.18 is our biggest release since Astro launch.",
+ "draft": false,
+ **/
+ "astro": {
+ "headers": [
+ {
+ "depth": 1,
+ "text": "Astro 0.18 Release",
+ "slug": "astro-018-release"
+ },
+ {
+ "depth": 2,
+ "text": "Responsive partial hydration",
+ "slug": "responsive-partial-hydration"
+ }
+ /* ... */
+ ],
+ "source": "# Astro 0.18 Release\\nA little over a month ago, the first public beta [...]"
+ },
+ "url": ""
+}
+```
+
+> Keep in mind that the only guaranteed properties coming from the `content` prop are `astro` and `url`.
+
+### Images and videos
+
+Using images or videos follows Astro’s normal import rules:
+
+- Place them in the `public/` as explained on the [project-structure page](/en/core-concepts/project-structure/#public)
+ - Example: Image is located at `/public/assets/img/astonaut.png` → Markdown: `![Astronaut](/assets/img/astronaut.png)`
+- Or use `import` as explained on the [imports page](/en/guides/imports#other-assets) (when using Astro’s Markdown Component)
+
+### Components
+
+You can import any component into your markdown file and use it along the markdown syntax.
+
+```markdown
+---
+setup: |
+ import Author from '../../components/Author.astro'
+ import Button from '../../components/Button.svelte'
+author: Leon
+---
+# Blog post title
+<Author name={frontmatter.author}/>
+<Button>Label</Button>
+```
+
+
+### Markdown draft pages
+
+By default, Astro excludes `draft` Markdown pages when building your site. This is a built-in, Astro solution for marking individual pages or posts as "unpublished" and excluding them from the site build. No page will be created on your site for a Markdown page that includes `draft: true` in its front matter.
+
+To enable building of draft pages, you can set `buildOptions.drafts: true` in `astro.config.mjs`, or pass the `--drafts` flag when running `astro build`. Markdown pages which do not have the `draft` property set are not affected.
+
+An example of a Markdown draft blog post:
+
+```markdown
+---
+# src/pages/blog-post.md
+title: My Blog Post
+draft: true
+---
+
+This is my blog post which is currently incomplete, and will not exist on my built site.
+```
+
+An example of a Markdown post which is not a draft:
+
+```markdown
+---
+# src/pages/blog-post.md
+title: My Blog Post
+draft: false
+---
+
+This is my published blog post.
+```
+
+> This feature only applies to local markdown pages, not the `<Markdown />` component, or remote markdown.
+
+
+⚠️ Although `draft: true` will prevent a page from being built on your site, `Astro.fetchContent()` currently returns **all your Markdown files**. So, any function to fetch your Markdown files and render a list of blog posts **will include the data from all existing files**, whether or not they are marked as `draft`. To exclude the post data (e.g. title, link, description) from showing up in your post archive, or list of most recent posts, be sure that your `Astro.fetchContent()` function also filters to exclude any draft posts.
+
+
+## Astro’s Markdown Component
+
+Astro has a dedicated component used to let you render your markdown as HTML components. This is a special component that is only exposed to `.astro` files. To use the `<Markdown>` component, within your frontmatter block use the following import statement:
+
+```astro
+---
+import { Markdown } from 'astro/components';
+---
+```
+
+You can utilize this within your `.astro` file by doing the following:
+
+```astro
+---
+import { Markdown } from 'astro/components';
+---
+
+<Layout>
+ <Markdown>
+ # Hello world!
+
+ The contents inside here is all in markdown.
+ </Markdown>
+</Layout>
+```
+
+`<Markdown>` components provide more flexibility and allow you to use plain HTML or custom components. For example:
+
+````astro
+---
+// For now, this import _must_ be named "Markdown" and _must not_ be wrapped with a custom component
+// We're working on easing these restrictions!
+import { Markdown } from 'astro/components';
+import Layout from '../layouts/main.astro';
+import MyFancyCodePreview from '../components/MyFancyCodePreview.tsx';
+
+const expressions = 'Lorem ipsum';
+---
+
+<Layout>
+ <Markdown>
+ # Hello world!
+
+ **Everything** supported in a `.md` file is also supported here!
+
+ There is _zero_ runtime overhead.
+
+ In addition, Astro supports:
+ - Astro {expressions}
+ - Automatic indentation normalization
+ - Automatic escaping of expressions inside code blocks
+
+ ```js
+ // This content is not transformed!
+ const object = { someOtherValue };
+ ```
+
+ - Rich component support like any `.astro` file!
+ - Recursive Markdown support (Component children are also processed as Markdown)
+
+ <MyFancyCodePreview client:visible>
+ ```js
+ const object = { someOtherValue };
+ ```
+ </MyFancyCodePreview client:visible>
+ </Markdown>
+</Layout>
+````
+
+## Remote Markdown
+
+If you have Markdown in a remote source, you may pass it directly to the Markdown component through the `content` attribute. For example, the example below fetches the README from Snowpack’s GitHub repository and renders it as HTML.
+
+```astro
+---
+import { Markdown } from 'astro/components';
+
+const content = await fetch('https://raw.githubusercontent.com/withastro/docs/main/README.md').then(res => res.text());
+---
+
+<Layout>
+ <Markdown content={content} />
+</Layout>
+```
+
+There might be times when you want to combine both dynamic, and static markdown. If that is the case, you can nest `<Markdown>` components with each other to get the best of both worlds.
+
+```astro
+---
+import { Markdown } from 'astro/components';
+
+const content = await fetch('https://raw.githubusercontent.com/withastro/docs/main/README.md').then(res => res.text());
+---
+
+<Layout>
+ <Markdown>
+ ## Markdown example
+
+ Here we have some __Markdown__ code. We can also dynamically render content from remote places.
+
+ <Markdown content={content} />
+ </Markdown>
+</Layout>
+```
+
+## Security FAQs
+
+**Aren't there security concerns to rendering remote markdown directly to HTML?**
+
+Yes! Just like with regular HTML, improper use of the `Markdown` component can open you up to a [cross-site scripting (XSS)](https://en.wikipedia.org/wiki/Cross-site_scripting) attack. If you are rendering untrusted content, be sure to _sanitize your content **before** rendering it_.
+
+**Why not use a prop like React’s `dangerouslySetInnerHTML={{ __html: content }}`?**
+
+Rendering a string of HTML (or Markdown) is an extremely common use case when rendering a static site and you probably don't need the extra hoops to jump through. Rendering untrusted content is always dangerous! Be sure to _sanitize your content **before** rendering it_.
diff --git a/smoke/docs-main/src/pages/en/guides/pagination.md b/smoke/docs-main/src/pages/en/guides/pagination.md
new file mode 100644
index 000000000..1321da8b6
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/guides/pagination.md
@@ -0,0 +1,108 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Pagination
+description: An intro to Astro pagination to split large amounts of data into different pages.
+---
+
+Astro supports built-in, automatic pagination for large collections of data that need to be split into multiple pages. Astro also automatically includes pagination metadata for things like previous/next page URL, total number of pages, and more.
+
+## When to use pagination
+
+Pagination is only useful when you need to generate multiple, numbered pages from a larger data set.
+
+If all of your data can fit on a single page then you should consider using a static [page component](/en/core-concepts/astro-pages) instead.
+
+If you need to split your data into multiple pages but do not want those page URLs to be numbered, then you should use a [dynamic page](/en/core-concepts/routing) instead without pagination (Example: `/tag/[tag].astro`).
+
+## How to use pagination
+
+### Create your page component
+
+To automatically paginate some data, you'll first need to create your page component. This is the component `.astro` file that every page in the paginated collection will inherit from.
+
+Pagination is built on top of dynamic page routing, with the page number in the URL represented as a dynamic route param: `[page].astro` or `[...page].astro`. If you aren't familiar with routing in Astro, quickly familiarize yourself with our [Routing documentation](/en/core-concepts/routing) before continuing.
+
+Your first page URL will be different depending on which type of query param you use:
+
+- `/posts/[page].astro` will generate the URLs `/posts/1`, `/posts/2`, `/posts/3`, etc.
+- `/posts/[...page].astro` will generate the URLs `/posts`, `/posts/2`, `/posts/3`, etc.
+
+### calling the `paginate()` function
+
+Once you have decided on the file name/path for your page component, you'll need to export a [`getStaticPaths()`](/en/reference/api-reference#getstaticpaths) function from the component. `getStaticPaths()` is where you tell Astro what pages to generate.
+
+`getStaticPaths()` provides the `paginate()` function that we'll use to paginate your data. In the example below, we'll use `paginate()` to split a list of 150 Pokemon into 15 pages of 10 Pokemon each.
+
+```js
+export async function getStaticPaths({ paginate }) {
+ // Load your data with fetch(), Astro.fetchContent(), etc.
+ const response = await fetch(`https://pokeapi.co/api/v2/pokemon?limit=150`);
+ const result = await response.json();
+ const allPokemon = result.results;
+ // Return a paginated collection of paths for all posts
+ return paginate(allPokemon, { pageSize: 10 });
+}
+// If set up correctly, The page prop now has everything that
+// you need to render a single page (see next section).
+const { page } = Astro.props;
+```
+
+`paginate()` generates the correct array of path objects for `getStaticPaths()`. This automatically tells Astro to create a new URL for every page of the collection. The page data will then be passed as a `page` prop to the `.astro` page component.
+
+### using the `page` prop
+
+Once you've set up your page component and defined your `getStaticPaths()` function, you're ready to design your page template. Each page in the paginated collection will be passed its data in the `page` prop.
+
+```astro
+---
+export async function getStaticPaths { /* ... */ }
+const { page } = Astro.props;
+---
+<h1>Page {page.currentPage}</h1>
+<ul>
+ {page.data.map(item => <li>{item.title}</li>)}
+</ul>
+```
+
+The `page` prop has several useful properties, but the most important one is `page.data`. This is the array containing the page’s slice of data that you passed to the `paginate()` function. For example, if you called `paginate()` on an array of 150 Pokemon:
+
+- `/1`: `page.data` would be an array of the first 10 Pokemon
+- `/2`: `page.data` would be an array of Pokemon 11-20
+- `/3`: `page.data` would be an array of Pokemon 21-30
+- etc. etc.
+
+The `page` prop includes other helpful metadata, like `page.url.next`, `page.url.prev`, `page.total`, and more. See our [API reference](/en/reference/api-reference#the-pagination-page-prop) for the full `page` interface.
+
+## Nested pagination
+
+A more advanced use-case for pagination is **nested pagination.** This is when pagination is combined with other dynamic route params. You can use nested pagination to group your paginated collection by some property or tag.
+
+For example, if you want to group your paginated markdown posts by some tag, you would use nested pagination by creating a `/src/pages/[tag]/[page].astro` page that would match the following URLS:
+
+- `/red/1` (tag=red)
+- `/red/2` (tag=red)
+- `/blue/1` (tag=blue)
+- `/green/1` (tag=green)
+
+Nested pagination works by returning an array of `paginate()` results from `getStaticPaths()`, one for each grouping. In the following example, we will implement nested pagination to build the URLs listed above:
+
+```astro
+---
+// Example: /src/pages/[tag]/[page].astro
+export function getStaticPaths({paginate}) {
+ const allTags = ['red', 'blue', 'green'];
+ const allPosts = Astro.fetchContent('../../posts/*.md');
+ // For every tag, return a paginate() result.
+ // Make sure that you pass `{params: {tag}}` to `paginate()`
+ // so that Astro knows which tag grouping the result is for.
+ return allTags.map((tag) => {
+ const filteredPosts = allPosts.filter((post) => post.tag === tag);
+ return paginate(filteredPosts, {
+ params: { tag },
+ pageSize: 10
+ });
+ });
+}
+const { page } = Astro.props;
+const { params } = Astro.request;
+```
diff --git a/smoke/docs-main/src/pages/en/guides/publish-to-npm.md b/smoke/docs-main/src/pages/en/guides/publish-to-npm.md
new file mode 100644
index 000000000..d49f678af
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/guides/publish-to-npm.md
@@ -0,0 +1,216 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Publish to NPM
+description: Learn how to publish Astro components to NPM
+---
+
+Building a new Astro component? **Publish it to [npm!](https://npmjs.com/)**
+
+Publishing a component is a great way to reuse work across your team, your company, or the entire world. Astro components can be published to and installed from npm, just like any other JavaScript package.
+
+**Astro’s ability to publish and reuse popular components is one of it’s most powerful features!**
+
+Even if you don't plan on publishing your components online, the patterns outlined below can help any developer design reusable components in isolation from their custom website or business logic.
+
+Looking for inspiration? Check out some of [our favorite themes & components][/themes] from the Astro community. You can also [search npm](https://www.npmjs.com/search?q=keywords:astro-component) to see the entire public catalog.
+
+## Creating a package
+
+> Before diving in, it will help have a basic understanding of:
+>
+> - [Node Modules](https://docs.npmjs.com/creating-node-js-modules)
+> - [JSON Manifest (`package.json`)](https://docs.npmjs.com/creating-a-package-json-file)
+> - [Workspaces](https://docs.npmjs.com/cli/v7/configuring-npm/package-json#workspaces)
+
+To create a new package, we recommend developing with **workspaces**. This will allow you to develop your component alongside a working copy of Astro.
+
+```
+my-project/
+ ├─ demo/
+ └─ ... for testing and demonstration
+ ├─ package.json
+ └─ packages/
+ └─ my-component/
+ ├─ index.js
+ ├─ package.json
+ └─ ... additional files used by the package
+```
+
+In this example, named `my-project`, we create a project with a single package, named `my-component`, and a `demo` directory for testing and demonstrating the component.
+
+This is configured in the project root’s `package.json` file.
+
+```json
+{
+ "name": "my-project",
+ "workspaces": ["demo", "packages/*"]
+}
+```
+
+In this example, multiple packages can be developed together from the `packages` directory. These packages can also be referenced from `demo`, where you can install a working copy of Astro.
+
+```shell
+npm init astro demo --template minimal
+```
+
+Now let’s explore the files that will make up your individual package:
+
+### `package.json`
+
+The `package.json` in the package directory includes all of the information related to your package, including its description, dependencies, and any other package metadata.
+
+```json
+{
+ "name": "my-component",
+ "description": "... description",
+ "version": "1.0.0",
+ "type": "module",
+ "exports": {
+ ".": "./index.js",
+ "./astro": "./MyAstroComponent.astro",
+ "./react": "./MyReactComponent.jsx"
+ },
+ "files": ["index.js", "MyAstroComponent.astro", "MyReactComponent.jsx"],
+ "keywords": ["astro-component", "... etc", "... etc"]
+}
+```
+
+#### `package.json#description`
+
+The short description of your component used to help others know what it does.
+
+```json
+{
+ "description": "An Astro Element Generator"
+}
+```
+
+#### `package.json#type`
+
+The module format used by Node.js and Astro to interpret your `index.js` files.
+
+```json
+{
+ "type": "module"
+}
+```
+
+We recommend using `"type": "module"` so that your `index.js` can be used as an entrypoint with `import` and `export`.
+
+#### `package.json#exports`
+
+The entry points allowed by Astro to import your component or any of its [files](#packagejsonfiles).
+
+```json
+{
+ "exports": {
+ ".": "./index.js",
+ "./astro": "./MyAstroComponent.astro",
+ "./react": "./MyReactComponent.jsx"
+ }
+}
+```
+
+In this example, importing `my-component` would use `index.js`, while importing `my-component/astro` or `my-component/react` would use `MyAstroComponent.astro` or `MyReactComponent.jsx`.
+
+#### `package.json#files`
+
+```json
+{
+ "files": ["index.js", "MyAstroComponent.astro", "MyReactComponent.jsx"]
+}
+```
+
+#### `package.json#keywords`
+
+An array of keywords relevant to your component that are used to help others [find your component on npm](https://www.npmjs.com/search?q=keywords:astro-component) and any other search catalogs.
+
+We recommend adding the `astro-component` as a special keyword to maximize its discoverability in the Astro ecosystem.
+
+```json
+{
+ "keywords": ["astro-component", "... etc", "... etc"]
+}
+```
+
+---
+
+### `index.js`
+
+The main **package entrypoint** used whenever your package is imported.
+
+```js
+export { default as MyAstroComponent } from './MyAstroComponent.astro';
+
+export { default as MyReactComponent } from './MyReactComponent.jsx';
+```
+
+This allows you to package multiple components together into a single interface.
+
+#### Example: Using Named Imports
+
+```astro
+---
+import { MyAstroComponent } from 'my-component';
+import { MyReactComponent } from 'my-component';
+---
+<MyAstroComponent />
+<MyReactComponent />
+```
+
+#### Example: Using Namespace Imports
+
+```astro
+---
+import * as Example from 'example-astro-component';
+---
+<Example.MyAstroComponent />
+<Example.MyReactComponent />
+```
+
+#### Example: Using Individual Imports
+
+```astro
+---
+import MyAstroComponent from 'example-astro-component/astro';
+import MyReactComponent from 'example-astro-component/react';
+---
+<MyAstroComponent />
+<MyReactComponent />
+```
+
+---
+
+## Developing your package
+
+Astro does not have a dedicated "package mode" for development. Instead, you should use a demo project to develop and test your package inside of your project. This can be a private website only used for development, or a public demo/documentation website for your package.
+
+If you are extracting components from an existing project, you can even continue to use that project to develop your now-extracted components.
+
+## Testing your component
+
+Astro does not currently ship a test runner. This is something that we would like to tackle before our v1.0 release. _(If you are interested in helping out, [join us on Discord!](https://astro.build/chat))_
+
+In the meantime, our current recommendation for testing is:
+
+1. Add a test `fixtures` directory to your `demo/src/pages` directory.
+2. Add a new page for every test that you'd like to run.
+3. Each page should include some different component usage that you'd like to test.
+4. Run `astro build` to build your fixtures, then compare the output of the `dist/__fixtures__/` directory to what you expected.
+
+```bash
+my-project/demo/src/pages/__fixtures__/
+ ├─ test-name-01.astro
+ ├─ test-name-02.astro
+ └─ test-name-03.astro
+```
+
+## Publishing your component
+
+Once you have your package ready, you can publish it to npm!
+
+To publish a package to npm, use the `npm publish` command. If that fails, make sure that you've logged in via `npm login` and that your package.json is correct. If it succeeds, you're done!
+
+Notice that there was no `build` step for Astro packages. Any file type that Astro supports can be published directly without a build step, because we know that Astro already supports them natively. This includes all files with extensions like `.astro`, `.ts`, `.jsx`, and `.css`.
+
+If you need some other file type that isn't natively supported by Astro, you are welcome to add a build step to your package. This advanced exercise is left up to you.
diff --git a/smoke/docs-main/src/pages/en/guides/rss.md b/smoke/docs-main/src/pages/en/guides/rss.md
new file mode 100644
index 000000000..4e33eedca
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/guides/rss.md
@@ -0,0 +1,53 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: RSS
+description: An intro to RSS in Astro
+---
+
+Astro supports fast, automatic RSS feed generation for blogs and other content websites. For more information about RSS feeds in general, see [aboutfeeds.com](https://aboutfeeds.com/).
+
+You can create an RSS feed from any Astro page that uses a `getStaticPaths()` function for routing. Only dynamic routes can use `getStaticPaths()` today (see [Routing](/en/core-concepts/routing)).
+
+> We hope to make this feature available to all other pages before v1.0. As a workaround, you can convert a static route to a dynamic route that only generates a single page. See [Routing](/en/core-concepts/routing) for more information about dynamic routes.
+
+Create an RSS Feed by calling the `rss()` function that is passed as an argument to `getStaticPaths()`. This will create an `rss.xml` file in your final build based on the data that you provide using the `items` array.
+
+```js
+// Example: /src/pages/posts/[...page].astro
+// Place this function inside your Astro component script.
+export async function getStaticPaths({rss}) {
+ const allPosts = Astro.fetchContent('../post/*.md');
+ const sortedPosts = allPosts.sort((a, b) => new Date(b.date) - new Date(a.date));
+ // Generate an RSS feed from this collection
+ rss({
+ // The RSS Feed title, description, and custom metadata.
+ title: 'Don’s Blog',
+ // See "Styling" section below
+ stylesheet: true,
+ description: 'An example blog on Astro',
+ customData: `<language>en-us</language>`,
+ // The list of items for your RSS feed, sorted.
+ items: sortedPosts.map(item => ({
+ title: item.title,
+ description: item.description,
+ link: item.url,
+ pubDate: item.date,
+ })),
+ // Optional: Customize where the file is written to.
+ // Otherwise, defaults to "/rss.xml"
+ dest: "/my/custom/feed.xml",
+ });
+ // Return your paths
+ return [...];
+}
+```
+
+Note: RSS feeds will **not** be built during development. Currently, RSS feeds are only generated during your final build.
+
+### Styling
+
+RSS Feeds can be styled with an XSL stylesheet for a more pleasant user experience when they are opened directly in a browser. By default, Astro does not set a stylesheet for RSS feeds, but it can be enabled by setting the `stylesheet` option.
+
+Astro can automatically use [Pretty Feed](https://github.com/genmon/aboutfeeds/blob/main/tools/pretty-feed-v3.xsl), a popular open-source XSL stylesheet. To enable this behavior, pass `stylesheet: true`.
+
+If you'd like to use a custom XSL stylesheet, you can pass a string value like `stylesheet: '/my-custom-stylesheet.xsl'`. This file should be in your `public/` directory (in this case, `public/my-custom-stylesheet.xsl`).
diff --git a/smoke/docs-main/src/pages/en/guides/styling.md b/smoke/docs-main/src/pages/en/guides/styling.md
new file mode 100644
index 000000000..01bc20ce0
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/guides/styling.md
@@ -0,0 +1,640 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Styling & CSS
+description: Learn how to style components with Astro.
+---
+
+Astro includes special handling to make writing CSS as easy as possible. Styling inside of Astro components is done by adding a `<style>` tag anywhere.
+
+## Astro component styles
+
+By default, all Astro component styles are **scoped**, meaning they only apply to the current component. This can be very easy to work with, as you only have to worry about what’s in your current document at any given time.
+
+```html
+<!-- src/components/MyComponent.astro -->
+<style>
+ /* Scoped class selector within the component */
+ .text {
+ font-family: cursive;
+ }
+ /* Scoped element selector within the component */
+ h1 {
+ color: red;
+ }
+</style>
+
+<h1>I’m a scoped style and I’m red!</h1>
+<p class="text">I'm a scoped style and I’m cursive!</p>
+```
+
+Note that the `h1` selector won’t bleed out of the current component! These styles won’t apply to any other `h1` tags outside this document. Not even child components.
+
+_Tip: even though you can use element selectors, using classnames is preferred. This is not only slightly more performant, but is also easier to read, especially in a large document._
+
+### Global styles
+
+Of course, the real power of CSS is being able to reuse as much as possible! The preferred method of loading global styles is by using a standard `<link>` tag like you’re used to. It can even be used in conjunction with Astro’s scoped `<style>` tag:
+
+```html
+<!-- src/pages/index.astro -->
+<head>
+ <!-- load styles from src/styles/utils.css using Astro.resolve() -->
+ <link rel="stylesheet" type="text/css"
+ href={Astro.resolve('../styles/utils.css')} />
+</head>
+<body>
+ <!-- scoped Astro styles that apply only to the current page (not to children or other components) -->
+ <style>
+ .title {
+ font-size: 32px;
+ font-weight: bold;
+ }
+ </style>
+
+ <!-- the ".title" class is scoped, but we can also use our global "align-center" and "margin top: 4" utility classes from utils.css -->
+ <h1 class="title align-center mt4">Scoped Page Title</h1>
+</body>
+```
+
+_Note: `Astro.resolve()` is a handy utility that helps resolve files from anywhere ([docs][astro-resolve])_
+
+#### Styling children
+
+If you’d like scoped styles to apply to children, you can use the special `:global()` function borrowed from [CSS Modules][css-modules]:
+
+```astro
+<!-- src/components/MyComponent.astro -->
+---
+import PostContent from './Post.astro';
+---
+<style>
+ /* Scoped to current component only */
+ h1 {
+ color: red;
+ }
+
+ /* Scoped to all descendents of the scoped .blog-post class */
+ .blog-post :global(h1) {
+ color: blue;
+ }
+</style>
+
+<h1>Title</h1>
+<article class="blog-post">
+ <PostContent />
+</article>
+```
+
+This is a great way to style things like blog posts, or documents with CMS-powered content where the contents live outside of Astro. But be careful when styling children unconditionally, as it breaks component encapsulation. Components that appear different based on whether or not they have a certain parent component can become unwieldy quickly.
+
+#### Global styles within style tag
+
+If you’d like to use global styles but you don’t want to use a normal `<link>` tag (recommended), there is a `<style global>` escape hatch:
+
+```html
+<style global>
+ /* Applies to all h1 tags in your entire site */
+ h1 {
+ font-size: 32px;
+ }
+</style>
+
+<h1>Globally-styled</h1>
+```
+
+You can achieve the same by using the `:global()` function at the root of a selector:
+
+```html
+<style>
+ /* Applies to all h1 tags in your entire site */
+ :global(h1) {
+ font-size: 32px;
+ }
+
+ /* normal scoped h1 that applies to this file only */
+ h1 {
+ color: blue;
+ }
+</style>
+```
+
+It’s recommended to only use this in scenarios where a `<link>` tag won’t work. It’s harder to track down errant global styles when they’re scattered around and not in a central CSS file.
+
+📚 Read our full guide on [Astro component syntax][astro-component] to learn more about using the `<style>` tag.
+
+## Autoprefixer
+
+[Autoprefixer][autoprefixer] takes care of cross-browser CSS compatibility for you. Use it in astro by installing it (`npm install --save-dev autoprefixer`) and adding a `postcss.config.cjs` file to the root of your project:
+
+```js
+// postcss.config.cjs
+module.exports = {
+ plugins: [require('autoprefixer')],
+};
+```
+
+_Note: Astro v0.21 and later requires this manual setup for autoprefixer. Previous versions ran this automatically._
+
+## PostCSS
+
+You can use any [PostCSS plugin](https://www.postcss.parts/) by adding a `postcss.config.cjs` file to the root of your project. Follow the documentation for the plugin you’re trying to install for configuration and setup.
+
+---
+
+## Supported Styling Options
+
+Styling in Astro is meant to be as flexible as you'd like it to be! The following options are all supported:
+
+| Framework | Global CSS | Scoped CSS | CSS Modules |
+| :--------------- | :--------: | :--------: | :---------: |
+| `.astro` | ✅ | ✅ | N/A¹ |
+| `.jsx` \| `.tsx` | ✅ | ❌ | ✅ |
+| `.vue` | ✅ | ✅ | ✅ |
+| `.svelte` | ✅ | ✅ | ❌ |
+
+¹ _`.astro` files have no runtime, therefore Scoped CSS takes the place of CSS Modules (styles are still scoped to components, but don't need dynamic values)_
+
+All styles in Astro are automatically minified and bundled, so you can just write CSS and we'll handle the rest ✨.
+
+---
+
+## Frameworks and Libraries
+
+### 📘 React / Preact
+
+`.jsx` files support both global CSS and CSS Modules. To enable the latter, use the `.module.css` extension (or `.module.scss`/`.module.sass` if using Sass).
+
+```js
+import './global.css'; // include global CSS
+import Styles from './styles.module.css'; // Use CSS Modules (must end in `.module.css`, `.module.scss`, or `.module.sass`!)
+```
+
+### 📗 Vue
+
+Vue in Astro supports the same methods as `vue-loader` does:
+
+- [vue-loader - Scoped CSS][vue-scoped]
+- [vue-loader - CSS Modules][vue-css-modules]
+
+### 📕 Svelte
+
+Svelte in Astro also works exactly as expected: [Svelte Styling Docs][svelte-style].
+
+### 🎨 CSS Preprocessors (Sass, Stylus, etc.)
+
+Astro supports CSS preprocessors such as [Sass][sass], [Stylus][stylus], and [Less][less] through [Vite][vite-preprocessors]. It can be enabled via the following:
+
+- **Sass**: Run `npm install -D sass` and use `<style lang="scss">` or `<style lang="sass">` (indented) in `.astro` files
+- **Stylus**: Run `npm install -D stylus` and use `<style lang="styl">` or `<style lang="stylus">` in `.astro` files
+- **Less**: Run `npm install -D less` and use `<style lang="less">` in `.astro` files.
+
+You can also use all of the above within JS frameworks as well! Simply follow the patterns each framework recommends:
+
+- **React** / **Preact**: `import Styles from './styles.module.scss'`;
+- **Vue**: `<style lang="scss">`
+- **Svelte**: `<style lang="scss">`
+
+Additionally, [PostCSS](#-postcss) is supported, but the setup is [slightly different](#-postcss).
+
+_Note: CSS inside `public/` will **not** be transformed! Place it within `src/` instead._
+
+### 🍃 Tailwind
+
+Astro can be configured to use [Tailwind][tailwind] easily! Install the dependencies:
+
+```
+npm install --save-dev tailwindcss
+```
+
+And create 2 files in your project root: `tailwind.config.cjs` and `postcss.config.cjs`:
+
+```js
+// tailwind.config.cjs
+module.exports = {
+ content: [
+ './public/**/*.html',
+ './src/**/*.{astro,js,jsx,svelte,ts,tsx,vue}',
+ ],
+ // more options here
+};
+```
+
+```js
+// postcss.config.cjs
+module.exports = {
+ plugins: [require('tailwindcss')],
+};
+```
+
+Now you're ready to write Tailwind! Our recommended approach is to create a `src/styles/global.css` file (or whatever you‘d like to name your global stylesheet) with [Tailwind utilities][tailwind-utilities] like so:
+
+```css
+/* src/styles/global.css */
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+```
+
+Lastly, add it to your Astro page (or layout template):
+
+```astro
+<head>
+ <style global>
+ @import "../styles/global.css";
+ </style>
+</head>
+```
+
+As an alternative to `src/styles/global.css`, You may also add Tailwind utilities to individual `pages/*.astro` components in `<style>` tags, but be mindful of duplication! If you end up creating multiple Tailwind-managed stylesheets for your site, make sure you're not sending the same CSS to users over and over again in separate CSS files.
+
+#### Migrating from v0.19
+
+As of [version 0.20.0](https://github.com/withastro/astro/releases/tag/astro%400.20.0), Astro will no longer bundle, build and process `public/` files. Previously, we'd recommended putting your tailwind files in the `public/` directory. If you started a project with this pattern, you should move any Tailwind styles into the `src` directory and import them in your template using [Astro.resolve()][astro-resolve]:
+
+```astro
+ <link
+ rel="stylesheet"
+ href={Astro.resolve("../styles/global.css")}
+ >
+```
+
+### 🎭 PostCSS
+
+Using PostCSS is as simple as placing a [`postcss.config.cjs`](https://github.com/postcss/postcss#usage) file in the root of your project.
+
+Be aware that this plugin will run on all CSS in your project, including any files that compiled to CSS (like `.scss` Sass files, for example).
+
+_Note: CSS in `public/` **will not be transformed!** Instead, place it within `src/` if you’d like PostCSS to run over your styles._
+
+## Bundling
+
+All CSS is minified and bundled automatically for you in running `astro build`. Without getting too in the weeds, the general rules are:
+
+- If a style only appears on one route, it’s only loaded for that route (`/_astro/[page]-[hash].css`)
+- If a style appears on multiple routes, it’s deduplicated into a `/_astro/common-[hash].css` bundle
+- All styles are hashed according to their contents (the hashes only change if the contents do!)
+
+We'll be expanding our styling optimization story over time, and would love your feedback! If `astro build` generates unexpected styles, or if you can think of improvements, [please open an issue][issues].
+
+_Note: be mindful when some page styles get extracted to the "common" bundle, and some page styles stay on-page. For most people this may not pose an issue, but when part of your styles are bundled they technically may load in a different order and your cascade may be different. While this problem isn't unique to Astro and is present in almost any CSS bundling process, it can be unexpected if you're not anticipating it. Be sure to inspect your final production build, and please [report any issues][issues] you may come across._
+
+## Advanced Styling Architecture
+
+Too many development setups take a hands-off approach to CSS, or at most leave you with only contrived examples that don't get you very far. Telling developers "Use whatever styling solution you want!" is a nice thought that rarely works out in practice. Few styling approaches lend themselves to every setup. Astro is no different—certain styling approaches _will_ work better than others.
+
+An example to illustrate this: Astro removes runtime JS (even the core framework if possible). Thus, depending on Styled Components for all your styles would be bad, as that would require React to load on pages where it’s not needed. Or at best, you'd get a "[FOUC][fouc]" as your static HTML is served but the user waits for JavaScript to download and execute. Or consider a second example at the opposite end of the spectrum: _BEM_. You _can_ use a completely-decoupled [BEM][bem] or [SMACSS][smacss] approach in Astro. But that’s a lot of manual maintenance you can avoid, and it leaves out a lot of convenience of [Astro components](/en/core-concepts/astro-components).
+
+We think there’s a great middle ground between intuitive-but-slow CSS-in-JS and fast-but-cumbersome global CSS: **Hybrid Scoped + Utility CSS**. This approach works well in Astro, is performant for users, and will be the best styling solution in Astro _for most people_ (provided you're willing to learn a little). So as a quick recap:
+
+**This approach is good for…**
+
+- Developers wanting to try out something new in regard to styling
+- Developers that would appreciate some strong opinions in CSS architecture
+
+**This approach is **NOT** good for…**
+
+- Developers that already have strong opinions on styling, and want to control everything themselves
+
+Read on if you're looking for some strong opinions 🙂. We'll describe the approach by enforcing a few key rules that should govern how you set your styles:
+
+### Hybrid Scoped + Utility CSS
+
+#### Scoped styles
+
+You don't need an explanation on component-based design. You already know that reusing components is a good idea. And it’s this idea that got people used to concepts like [Styled Components][styled-components] and [Styled JSX][styled-jsx]. But rather than burden your users with slow load times of CSS-in-JS, Astro has something better: **built-in scoped styles.**
+
+```astro
+---
+// src/components/Button.astro -->
+---
+<style lang="scss">
+ /* ✅ Locally scoped! */
+ .btn {
+ padding: 0.5em 1em;
+ border-radius: 3px;
+ font-weight: 700;
+ }
+</style>
+<button type="button" class="btn">
+ <slot></slot>
+</button>
+```
+
+_Note: all the examples here use `lang="scss"` which is a great convenience for nesting, and sharing [colors and variables][sass-use], but it’s entirely optional and you may use normal CSS if you wish._
+
+That `.btn` class is scoped within that component, and won't leak out. It means that you can **focus on styling and not naming.** Local-first approach fits in very well with Astro’s ESM-powered design, favoring encapsulation and reusability over global scope. While this is a simple example, it should be noted that **this scales incredibly well.** And if you need to share common values between components, [Sass' module system][sass-use] also gets our recommendation for being easy to use, and a great fit with component-first design.
+
+By contrast, Astro does allow global styles via the `:global()` and `<style global>` escape hatches. However, this should be avoided if possible. To illustrate this: say you used your button in a `<Nav />` component, and you wanted to style it differently there. You might be tempted to have something like:
+
+```astro
+---
+// src/components/Nav.astro
+import Button from './Button.astro';
+---
+
+<style lang="scss">
+ .nav :global(.btn) {
+ /* ❌ This will fight with <Button>’s styles */
+ }
+</style>
+
+<nav class="nav">
+ <Button>Menu</Button>
+</nav>
+```
+
+This is undesirable because now `<Nav>` and `<Button>` fight over what the final button looks like. Now, whenever you edit one, you'll always have to edit the other, and they are no longer truly isolated as they once were (now coupled by a bidirectional styling dependency). It’s easy to see how this pattern only has to be repeated a couple times before being afraid that touching any styles _anywhere_ may break styling in a completely different part of the app (queue `peter-griffin-css-blinds.gif`).
+
+Instead, let `<Button>` control its own styles, and try a prop:
+
+```astro
+---
+// src/components/Button.astro
+const { theme } = Astro.props;
+---
+<style lang="scss">
+ .btn {
+ /* ✅ <Button> is now back in control of its own styling again! */
+ &[data-theme='nav'] {
+ // nav-friendly styles here…
+ }
+ }
+</style>
+
+<button type="button" data-theme={theme}>
+ <slot></slot>
+</button>
+```
+
+Elsewhere, you can use `<Button theme="nav">` to set the type of button it is. This preserves the contract of _Button is in charge of its styles, and Nav is in charge of its styles_, and now you can edit one without affecting the other. The worst case scenario of using global styles is that the component is broken and unusable (it’s missing part of its core styles). But the worst case scenario of using props (e.g. typo) is that a component will only fall back to its default, but still usable, state.
+
+💁 **Why this works well in Astro**: Astro is inspired most by JavaScript modules: you only need to know about what’s in one file at a time, and you never have to worry about something in a remote file affecting how this code runs. But we're not alone in this; Vue and Svelte have both capitalized on and popularized the idea that styles and markup are natural fits in the same component file. [You can still have separation of concerns][peace-on-css] even with markup, styling, and logic contained in one file. In fact, that’s what makes component design so powerful! So write CSS without fear that you picked a name that’s used by some other component across your app.
+
+#### Utility CSS
+
+Recently there has been a debate of all-scoped component styles vs utility-only CSS. But we agree with people like Sarah Dayan who ask [why can't we have both][utility-css]? Truth is that while having scoped component styles are great, there are still hundreds of times when the website’s coming together when two components just don't line up _quite_ right, and one needs a nudge. Or different text treatment is needed in one component instance.
+
+While the thought of having perfect, pristine components is nice, it’s unrealistic. No design system is absolutely perfect, and every design system has inconsistencies. And it’s in reconciling these inconsistencies where components can become a mess without utility CSS. Utility CSS is great for adding minor tweaks necessary to get the website out the door. But they also are incomplete on their own—if you've ever tried to manage responsive styles or accessible focus states with utility CSS it can quickly become a mess! **Utility CSS works best in partnership with component (scoped) CSS**. And in order to be as easy as possible to use, Utility CSS should be global (arguably should be your only global CSS, besides maybe reset.css) so you don't have to deal with imports all willy-nilly.
+
+Some great problems best handled with Utility CSS are:
+
+- [margin](https://github.com/drwpow/sass-utils#-margin--padding)
+- [padding](https://github.com/drwpow/sass-utils#-margin--padding)
+- [text/background color](https://github.com/drwpow/sass-utils#-color)
+- [font size and family](https://github.com/drwpow/sass-utils#%F0%9F%85%B0%EF%B8%8F-font--text)
+- [default element styling](https://github.com/kognise/water.css)
+
+In Astro, we recommend the following setup for this:
+
+```html
+<head>
+ <link rel="stylesheet" href="/styles/global.css" />
+</head>
+```
+
+And in your local filesystem, you can even use Sass' [@use][sass-use] to combine files together effortlessly:
+
+```
+├── src/
+│ └── styles/
+│ ├── _base.scss
+│ ├── _tokens.scss
+│ ├── _typography.scss
+│ ├── _utils.scss
+│ └── global.scss
+```
+
+What’s in each file is up to you to determine, but start small, add utilities as you need them, and you'll keep your CSS weight incredibly low. And utilities you wrote to meet your real needs will always be better than anything off the shelf.
+
+So to recap, think of scoped styles as the backbone of your styles that get you 80% of the way there, and utility CSS filling in the remaining 20%. They both work well in tandem, with each compensating for the other’s weakness.
+
+💁 **Why this works well in Astro**: Astro was built around the idea of **Scoped CSS and Global Utility CSS living together in harmony** ♥️! Take full advantage of it.
+
+### More suggestions
+
+"But wait!" you may ask, having read the previous section. "That doesn't take care of [my usecase]!" If you‘re looking for more pointers on some common styling problems, you may be interested in the following suggestions. These all are cohesive, and fit with the **Hybrid Scoped + Utility** philosophy:
+
+1. Split your app into Layout Components and Base Components
+1. Avoid Flexbox and Grid libraries (write your own!)
+1. Avoid `margin` on a component wrapper
+1. Avoid global media queries
+
+#### Suggestion #1: Split your app into Layout Components and Base Components
+
+While this guide will never be long enough to answer the question _"How should a page be laid out?"_ (that’s a [design problem!][cassie-evans-css]) there is a more specific question hiding within that we _can_ answer: _"Given a layout, how should components/styles be organized?"_ The answer is **don't bake layout into components.** Have layout components that control layout, and base components (buttons, cards, etc.) that don't control layout. _What does that mean?_ Let’s walk through an example so it’s more clear. Pretend we have a page that looks like this (numbers for different components):
+
+```
+|---------------|
+| 1 |
+|-------+-------|
+| 2 | 2 |
+|---+---|---+---|
+| 3 | 3 | 3 | 3 |
+|---+---+---+---|
+| 3 | 3 | 3 | 3 |
+|---+---+---+---|
+```
+
+The layout consists of a big, giant, full-width post at top, followed by two half-width posts below it. And below that, we want a bunch of smaller posts to fill out the rest of the page. For simplicity, we'll just call these `<BigPost>` (1), `<MediumPost>` (2), and `<SmallPost>` (3). We add them to our page like so:
+
+```astro
+---
+// src/pages/index.astro
+
+import Nav from '../components/Nav.astro';
+import BigPost from '../components/BigPost.astro';
+import Grid from '../components/Grid.astro';
+import MediumPosts from '../components/MediumPosts.astro';
+import SmallPosts from '../components/SmallPosts.astro';
+import Footer from '../components/Footer.astro';
+---
+<html>
+ <body>
+ <Nav />
+
+ <Grid>
+ <BigPost />
+ <MediumPosts />
+ <SmallPosts />
+ </Grid>
+
+ <Footer />
+ </body>
+</html>
+```
+
+This _looks_ clean, but looks can be deceiving. At first glance, we may think that `<Grid>` is controlling the layout, but that’s an illusion. We actually have `<BigPost>` handling its own width, `<MediumPosts>` loading 2 components and controlling its width, and `<SmallPosts>` loading 4+ components and controlling its width. In total, including `<Grid>`, that means **4 components** are all fighting over the same layout. Remove one post from `<MediumPosts>`, the layout breaks. Edit `<BigPost>`, the layout breaks. Edit `<Grid>`, the layout breaks. If you think about it, none of these components are truly reusable—they might as well just be one big file.
+
+This is actually the **Global CSS Problem** in disguise—multiple components fight over how they all lay out together, without layout being one, central responsibility (kinda like global CSS)! Now that we identified the problem, one way to fix this is to hoist the entire layout to the top level, and load all components there, too:
+
+```astro
+---
+// src/pages/index.astro
+
+import Nav from '../components/Nav.astro';
+import BigPost from '../components/BigPost.astro';
+import MediumPost from '../components/MediumPost.astro';
+import SmallPost from '../components/SmallPost.astro';
+import Footer from '../components/Footer.astro';
+---
+
+<html>
+ <head>
+ <style lang="scss">
+ .wrapper {
+ max-width: 60rem;
+ margin-right: auto;
+ margin-left: auto;
+ padding-right: 2rem;
+ padding-left: 2rem;
+ }
+
+ .grid {
+ display: grid;
+ grid-gap: 1.5rem;
+ grid-template columns: 1fr 1fr 1fr 1fr;
+ }
+
+ .big-post {
+ grid-column: span 4;
+ }
+
+ .medium-post {
+ grid-column: span 2;
+ }
+
+ .small-post {
+ grid-column: span 1;
+ }
+ </style>
+ </head>
+ <body>
+ <Nav />
+
+ <div class="wrapper">
+ <div class="grid">
+ <div class="big-post"><BigPost postId={12345} /></div>
+
+ <div class="medium-post"><MediumPost postId={12345} /></div>
+ <div class="medium-post"><MediumPost postId={12345} /></div>
+
+ <div class="small-post"><SmallPost postId={12345} /></div>
+ <div class="small-post"><SmallPost postId={12345} /></div>
+ <div class="small-post"><SmallPost postId={12345} /></div>
+ <div class="small-post"><SmallPost postId={12345} /></div>
+ <div class="small-post"><SmallPost postId={12345} /></div>
+ <div class="small-post"><SmallPost postId={12345} /></div>
+ <div class="small-post"><SmallPost postId={12345} /></div>
+ <div class="small-post"><SmallPost postId={12345} /></div>
+ </div>
+ </div>
+
+ <Footer />
+ </body>
+</html>
+```
+
+Getting over that this is more code, it’s actually a much cleaner separation. What was a four-component layout is now managed 100% within the top-level `index.astro` (which we can now consider a **Layout Component**, and if we wanted to reuse this we could extract this into its own file). Your layout is centralized, and now these components truly are reusable because they don't care one bit about whether they're in the same grid or not. You can edit styles in any of these files now without fear of styles breaking in another.
+
+The basic rule is that when orchestrating multiple components, **that’s a unique responsibility** that should live in one central place, rather than split between 4 components as we were doing. In fact, top-level pages are great at this, and should always be the starting point of your layout components. See how far you can take it, and only extract layout components when you absolutely have to.
+
+To recap: **if you have to touch multiple files to manage one layout, you probably need to reorganize everything into a Layout Component.**
+
+💁 **Why this works well in Astro**: In Astro, anything can be a `.astro` component, and you never incur performance problems no matter how many components you add. But the main benefit to [Layout isolation][layout-isolated] is how much it cuts down on the amount of CSS you need.
+
+#### Suggestion #2: Avoid Flexbox and Grid libraries (write your own!)
+
+This may feel like a complete overreach to tell you not to use your favorite layout framework you're familiar with. After all, it’s gotten you this far! But the days of [float madness](https://zellwk.com/blog/responsive-grid-system/) are gone, replaced by Flexbox and Grid. And the latter don't need libraries to manage them (often they can make it harder).
+
+Many front-end developers experience the following train of thought:
+
+1. I should reuse as much CSS as possible (_good!_)
+2. Many pages reuse the same layout, … (_hold up—_)
+3. … therefore I can find an existing solution to manage all my duplicate layouts (_wait a minute—_)
+
+While the logic is sound, the reality is that #2 isn't truth for many projects. Probably, many parts of the website weren't designed to fit into these nice, neat, 12 column grids. Even modest web apps can contain _hundreds_ of unique layouts when you factor in all the breakpoints. Ask yourself: _If the website I'm building really contains so many unique layouts, why am I using a heavy grid library that only gives me generic layouts?_
+
+A few well-written lines of CSS Grid here and there will not only be perfect in every occasion; it’s likely lighter and easier to manage than that heavy library you've fought with for so long. Another way to look at it: if you have to spend a couple hours learning a proprietary styling framework, wrestling with it, filing issues, etc., why not just spend that time on Flexbox and Grid instead? For many people, learning the basics only takes an hour, and that can get you pretty far! There are great, free, learning resources that are worth your time:
+
+- [Flexbox Froggy](https://flexboxfroggy.com/)
+- [CSS Grid Garden](https://cssgridgarden.com/)
+
+So in short: stop trying to deduplicate layouts when there’s nothing to deduplicate! You'll find your styles not only easier to manage, but your CSS payloads much lighter, and load times faster.
+
+💁 **Why this works well in Astro**: grid libraries are a quick path to stylesheet bloat, and a major contributor to people attempting to [treeshake their styles][css-treeshaking]. Astro does **not** treeshake unused CSS for you, because [that can cause problems][css-treeshaking]. We're not saying you have to be library free; we're big fans of libraries like [Material UI][material-ui]. But if you can at least shed the thousands upon thousands of layouts you're not using from your styling library, you probably don't need automatic treeshaking.
+
+#### Suggestion #3: Avoid `margin` on a component wrapper
+
+In other words, don't do this:
+
+```astro
+<!-- src/components/MyComponent.astro -->
+<style lang="scss">
+ .wrapper {
+ /* ❌ Don't do this! */
+ margin-top: 3rem;
+ }
+</style>
+
+<div class="wrapper"></div>
+```
+
+If you remember the [CSS box model][box-model], `margin` extends beyond the boundaries of the box. This means that when you place `margin` on the outermost element, now that will push other components next to it. Even though the styles are scoped, it’s _technically_ affecting elements around it, so it [breaks the concept of style containment][layout-isolated].
+
+When you have components that rearrange, or appear different when they're next to other components, that’s a hard battle to win. **Components should look and act the same no matter where they are placed.** That’s what makes them components!
+
+💁 **Why this works well in Astro**: margins pushing other components around creeps into your styling architecture in sneaky ways, and can result in the creation of some wonky or brittle layout components. Avoiding it altogether will keep your layout components simpler, and you'll spend less time styling in general.
+
+#### Suggestion #4: Avoid global media queries
+
+The final point is a natural boundary of **Scoped Styles**. That extends to breakpoints, too! You know that one, weird breakpoint where your `<Card />` component wraps awkwardly at a certain size? You should handle that within `<Card />`, and not anywhere else.
+
+Even if you end up with some random value like `@media (min-width: 732px) {`, that'll probably work better than trying to create a global [magic number][magic-number] somewhere that only applies to one context (an arbitrary value may be "magic" to the rest of an app, but it does still have meaning within the context of a component that needs that specific value).
+
+Granted, this has been near-impossible to achieve until Container Queries; fortunately [they are finally landing!][container-queries]
+
+Also, a common complaint of this approach is when someone asks _"What if I have 2 components that need to do the same thing at the same breakpoint?"_ to which my answer is: you'll always have one or two of those; just handle those as edge cases. But if your entire app is made up of dozens of these cases, perhaps your component lines could be redrawn so that they're more [layout-isolated][layout-isolated] in general.
+
+💁 **Why this works well in Astro**: this is probably the least important point, which is why it’s saved for last. In fact, you could probably skip this if it doesn't work for you. But it’s something that people try to architect for at scale, and having a global system to manage this can often be unnecessary. Give _not_ architecting for global media queries a try, and see how far it takes you!
+
+### 👓 Further Reading
+
+This guide wouldn't be possible without the following blog posts, which expand on these topics and explain them in more detail. Please give them a read!
+
+- [**Layout-isolated Components**][layout-isolated] by Emil Sjölander
+- [**In defense of utility-first CSS**][utility-css] by Sarah Dayan
+
+Also please check out the [Stylelint][stylelint] project to whip your styles into shape. You lint your JS, why not your CSS?
+
+[autoprefixer]: https://github.com/postcss/autoprefixer
+[astro-component]: /en/core-concepts/astro-components#css-styles
+[astro-resolve]: /en/reference/api-reference#astroresolve
+[bem]: http://getbem.com/introduction/
+[box-model]: https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/The_box_model
+[browserslist]: https://github.com/browserslist/browserslist
+[browserslist-defaults]: https://github.com/browserslist/browserslist#queries
+[cassie-evans-css]: https://twitter.com/cassiecodes/status/1392756828786790400?s=20
+[container-queries]: https://ishadeed.com/article/say-hello-to-css-container-queries/
+[css-modules]: https://github.com/css-modules/css-modules
+[css-treeshaking]: https://css-tricks.com/how-do-you-remove-unused-css-from-a-site/
+[fouc]: https://en.wikipedia.org/wiki/Flash_of_unstyled_content
+[layout-isolated]: https://web.archive.org/web/20210227162315/https://visly.app/blogposts/layout-isolated-components
+[less]: https://lesscss.org/
+[issues]: https://github.com/withastro/astro/issues
+[magic-number]: https://css-tricks.com/magic-numbers-in-css/
+[material-ui]: https://material.io/components
+[peace-on-css]: https://didoo.medium.com/let-there-be-peace-on-css-8b26829f1be0
+[sass]: https://sass-lang.com/
+[sass-use]: https://sass-lang.com/documentation/at-rules/use
+[smacss]: http://smacss.com/
+[styled-components]: https://styled-components.com/
+[stylus]: https://stylus-lang.com/
+[styled-jsx]: https://github.com/vercel/styled-jsx
+[stylelint]: https://stylelint.io/
+[svelte-style]: https://svelte.dev/docs#style
+[tailwind]: https://tailwindcss.com
+[tailwind-utilities]: https://tailwindcss.com/docs/adding-new-utilities#using-css
+[utility-css]: https://frontstuff.io/in-defense-of-utility-first-css
+[vite-preprocessors]: https://vitejs.dev/guide/features.html#css-pre-processors
+[vue-css-modules]: https://vue-loader.vuejs.org/guide/css-modules.html
+[vue-scoped]: https://vue-loader.vuejs.org/guide/scoped-css.html
diff --git a/smoke/docs-main/src/pages/en/installation.md b/smoke/docs-main/src/pages/en/installation.md
new file mode 100644
index 000000000..873b17c82
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/installation.md
@@ -0,0 +1,176 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Installation
+description: How to install Astro with NPM, PNPM, or Yarn.
+---
+
+There are a few different ways to install Astro in a new project.
+
+## Prerequisites
+
+- **Node.js** - `14.15.0`, `v16.0.0`, or higher.
+- **Text editor** - We recommend [VS Code](https://code.visualstudio.com/) with our [Official Astro extension](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode).
+- **Terminal** - Astro is mainly accessed via the terminal’s command-line.
+
+For demonstration purposes, we will be using [`npm`](https://www.npmjs.com/) in the examples below, but you could also use [`yarn`](https://yarnpkg.com/) or [`pnpm`](https://pnpm.io/) if you prefer an npm alternative.
+
+## Create Astro
+
+`npm init astro` is the easiest way to install Astro in a new project. Run this command in your terminal to start our `create-astro` install wizard to assist you with setting up a new project.
+
+```shell
+# With NPM
+npm init astro
+
+# Yarn
+yarn create astro
+
+# Pnpm
+pnpm create astro
+```
+
+[`create-astro`](https://github.com/withastro/astro/tree/main/packages/create-astro) wizard lets you choose from a set of [starter templates](https://github.com/withastro/astro/tree/main/examples) or alternatively, you could import your own Astro project directly from GitHub.
+
+```bash
+# Note: Replace "my-astro-project" with the name of your project.
+
+# npm 6.x
+npm init astro my-astro-project --template starter
+# npm 7+ (extra double-dash is needed)
+npm init astro my-astro-project -- --template starter
+# yarn
+yarn create astro my-astro-project --template starter
+# pnpm
+pnpm create astro my-astro-project -- --template starter
+# Using a third-party template
+npm init astro my-astro-project -- --template [GITHUB_USER]/[REPO_NAME]
+# Using a third-party template, inside a repo
+npm init astro my-astro-project -- --template [GITHUB_USER]/[REPO_NAME]/path/to/template
+```
+
+After `create-astro` scaffolds out your project, remember to install your projects dependencies using npm or your package manager of choice. In this example, we'll use npm:
+
+```bash
+npm install
+```
+
+You can now [Start](#start-astro) your Astro project. Once you have completed assembling your Astro project you can then [Build](#build-astro) your project. Astro would then package up your application and have the static files ready for you to [Deploy](/en/guides/deploy) to your favourite hosting provider.
+
+## Manual Install
+
+You can also set up Astro without the aide of the `create-astro` wizard, below are the few extra steps that are required to get Astro going.
+
+### Set up your project
+
+```bash
+# Make and enter a new directory
+mkdir my-astro-project
+cd my-astro-project
+```
+
+Create an empty directory with the name of your project, and then navigate into it:
+
+### Create `package.json`
+
+```bash
+# This command will create a basic package.json for you
+npm init --yes
+```
+
+Astro is designed to work with the entirety of the npm package ecosystem. This is managed by a project manifest at the root of your project known as `package.json` . If you're not familiar with the `package.json` file, we highly recommend you to have a quick read over it on [the npm documentation](https://docs.npmjs.com/creating-a-package-json-file).
+
+### Install Astro
+
+Following the instructions above, you should have a directory with a single `package.json` file inside of it. You can now set up Astro inside your project.
+
+```bash
+npm install astro
+```
+
+You can now replace the placeholder "scripts" section of your `package.json` file that `npm init` created for you with the following:
+
+```diff
+ "scripts": {
+- "test": "echo \"Error: no test specified\" && exit 1"
++ "dev": "astro dev",
++ "build": "astro build",
++ "preview": "astro preview"
+ },
+}
+```
+
+The [`dev`](#start-astro) command launches the Astro Dev Server on `http://localhost:3000`. Once your project is ready, the [`build`](#build-astro) command outputs your project to the `dist/` directory. [Read more about deploying Astro in the Deploy guide.](/en/guides/deploy)
+
+### Create your first page
+
+Astro Open up your favourite text editor, and create a new file in your project:
+
+1. Create a new file at `src/pages/index.astro`
+2. Copy-and-paste the following snippet (including `---` dashes) into it.
+
+```astro
+---
+// JS/TS Code written in between the (---) code fence,
+// is ran solely on the Server!
+console.log('See me in the Terminal')
+---
+
+<html>
+ <body>
+ <h1>Hello, World!</h1>
+ </body>
+</html>
+
+<style lang='css||scss'>
+ body{
+ h1{
+ color:orange;
+ }
+ }
+</style>
+
+<script>
+ // JS Code entered here is ran entirely on the Browser
+ console.log('See me in the devTools')
+</script>
+```
+
+Above is an example of the Astro’s Component’s Syntax, which comprises of both HTML & JSX.
+
+You can create more pages in the `src/pages` directory, and Astro will use the filename to create new pages on your site. For example, by creating a new file at `src/pages/about.astro` (reusing the previous snippet), Astro will generate a new page at the URL : `http://localhost/about`
+
+## [Start Astro](#start-astro)
+
+```bash
+npm run dev
+```
+
+Astro will now start serving your application on `http://localhost:3000`. By opening this URL in your browser, you should see the Astro’s “Hello, World”.
+
+If you need to share your development progress on the local network or check out the app from a phone, just add the following option to `astro.config.mjs`:
+
+```js
+devOptions: {
+ hostname: '0.0.0.0',
+}
+```
+
+## [Build Astro](#build-astro)
+
+```bash
+npm run build
+```
+
+This will instruct Astro to build your site and save it directly to disk. Your application is now ready in the `dist/` directory.
+
+## Next Steps
+
+Success! You're now ready to start developing!
+
+We highly encourage you to get more familiar with the way Astro works. You can do so by further exploring our Docs, we suggest that you consider the following:
+
+📚 Learn more about Astro’s project structure in our [Project Structure guide.](/en/core-concepts/project-structure)
+
+📚 Learn more about Astro’s component syntax in our [Astro Components guide.](/en/core-concepts/astro-components)
+
+📚 Learn more about Astro’s file-based routing in our [Routing guide.](/en/core-concepts/astro-pages)
diff --git a/smoke/docs-main/src/pages/en/migrate.md b/smoke/docs-main/src/pages/en/migrate.md
new file mode 100644
index 000000000..f4dc1e9af
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/migrate.md
@@ -0,0 +1,198 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Migration Guide
+description: How to migrate your project to latest version of Astro.
+---
+
+## Migrate to v0.23
+
+### Deprecated: Unescaped HTML
+
+In Astro v0.23+, unescaped HTML content in expressions is now deprecated.
+In future releases, content within expressions will have strings escaped to protect against unintended HTML injection.
+
+```diff
+- <h1>{title}</h1> <!-- <h1>Hello <strong>World</strong></h1> -->
++ <h1>{title}</h1> <!-- <h1>Hello &lt;strong&gt;World&lt;/strong&gt;</h1> -->
+```
+
+To continue injecting unescaped HTML, you can now use `set:html`.
+
+```diff
+- <h1>{title}</h1>
++ <h1 set:html={title} />
+```
+
+To avoid a wrapper element, `set:html` can work alongside `<Fragment>`.
+
+```diff
+- <h1>{title}!</h1>
++ <h1><Fragment set:html={title}>!</h1>
+```
+
+You can also protect against unintended HTML injection with `set:text`.
+
+```astro
+<h1 set:text={title} /> <!-- <h1>Hello &lt;strong&gt;World&lt;/strong&gt;</h1> -->
+```
+
+## Migrate to v0.21
+
+### Vite
+
+Starting in v0.21, Astro is built with [Vite].
+As a result, configurations written in `snowpack.config.mjs` should be moved into `astro.config.mjs`.
+
+```js
+// @ts-check
+
+/** @type {import('astro').AstroUserConfig} */
+export default {
+ renderers: [],
+ vite: {
+ plugins: [],
+ },
+};
+```
+
+To learn more about configuring Vite, please visit their [configuration guide](https://vitejs.dev/config/).
+
+#### Vite Plugins
+
+In Astro v0.21+, Vite plugins may be configured within `astro.config.mjs`.
+
+```js
+import { imagetools } from 'vite-imagetools';
+
+export default {
+ vite: {
+ plugins: [imagetools()],
+ },
+};
+```
+
+To learn more about Vite plugins, please visit their [plugin guide](https://vitejs.dev/guide/using-plugins.html).
+
+#### Vite Changes to Renderers
+
+In Astro v0.21+, plugins should now use `viteConfig()`.
+
+```diff
+// renderer-svelte/index.js
++ import { svelte } from '@sveltejs/vite-plugin-svelte';
+
+export default {
+ name: '@astrojs/renderer-svelte',
+ client: './client.js',
+ server: './server.js',
+- snowpackPlugin: '@snowpack/plugin-svelte',
+- snowpackPluginOptions: { compilerOptions: { hydratable: true } },
++ viteConfig() {
++ return {
++ optimizeDeps: {
++ include: ['@astrojs/renderer-svelte/client.js', 'svelte', 'svelte/internal'],
++ exclude: ['@astrojs/renderer-svelte/server.js'],
++ },
++ plugins: [
++ svelte({
++ emitCss: true,
++ compilerOptions: { hydratable: true },
++ }),
++ ],
++ };
++ },
+}
+```
+
+To learn more about Vite plugins, please visit their [plugin guide](https://vitejs.dev/guide/using-plugins.html).
+
+> In prior releases, these were configured with `snowpackPlugin` or `snowpackPluginOptions`.
+
+
+### Aliasing
+
+In Astro v0.21+, import aliases can be added from `tsconfig.json` or `jsconfig.json`.
+
+```json
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "@/components/*": ["src/components/*"]
+ }
+ }
+}
+```
+
+_These aliases are integrated automatically into [VSCode](https://code.visualstudio.com/docs/languages/jsconfig) and other editors._
+
+### File Extensions in Imports
+
+In Astro v0.21+, files need to be referenced by their actual extension, exactly as it is on disk. In this example, `Div.tsx` would need to be referenced as `Div.tsx`, not `Div.jsx`.
+
+```diff
+- import Div from './Div.jsx' // Astro v0.20
++ import Div from './Div.tsx' // Astro v0.21
+```
+
+This same change applies to a compile-to-css file like `Div.scss`:
+
+```diff
+- <link rel="stylesheet" href={Astro.resolve('./Div.css')}>
++ <link rel="stylesheet" href={Astro.resolve('./Div.scss')}>
+```
+
+### Removed: Components in Frontmatter
+
+Previously, you could create mini Astro Components inside of the Astro Frontmatter, using JSX syntax instead of Astro’s component syntax. This was always a bit of a hack, but in the new compiler it became impossible to support. We hope to re-introduce this feature in a future release of Astro using a different, non-JSX API.
+
+To migrate to v0.21+, please convert all JSX Astro components (that is, any Astro components created inside of another component’s frontmatter) to standalone components.
+
+
+### Styling Changes
+
+#### Autoprefixer
+
+Autoprefixer is no longer run by default. To enable:
+
+1. Install the latest version (`npm i autoprefixer`)
+2. Create a `postcss.config.cjs` file at the root of your project with:
+ ```js
+ module.exports = {
+ plugins: {
+ autoprefixer: {},
+ },
+ };
+ ```
+
+#### Tailwind CSS
+
+Ensure you have PostCSS installed. This was optional in previous releases, but is required now:
+
+1. Install the latest version of postcss (`npm i -D postcss`)
+2. Create a `postcss.config.cjs` file at the root of your project with:
+ ```js
+ module.exports = {
+ plugins: {
+ tailwindcss: {},
+ },
+ };
+ ```
+ For more information, read the [Tailwind CSS documentation](https://tailwindcss.com/docs/installation#add-tailwind-as-a-post-css-plugin)
+
+
+### Known Issues
+
+#### Imports on top
+
+In Astro v0.21+, a bug has been introduced that requires imports inside components to be at the top of your frontmatter.
+
+```astro
+---
+import Component from '../components/component.astro'
+const whereShouldIPutMyImports = "on top!"
+---
+```
+
+
+[vite]: https://vitejs.dev
diff --git a/smoke/docs-main/src/pages/en/migration/0.21.0.astro b/smoke/docs-main/src/pages/en/migration/0.21.0.astro
new file mode 100644
index 000000000..038b1e662
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/migration/0.21.0.astro
@@ -0,0 +1 @@
+<meta http-equiv="refresh" content="5;url=/en/migrate"> \ No newline at end of file
diff --git a/smoke/docs-main/src/pages/en/quick-start.md b/smoke/docs-main/src/pages/en/quick-start.md
new file mode 100644
index 000000000..ebe69e6b1
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/quick-start.md
@@ -0,0 +1,77 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Quick Start
+description: The easiest way to get started quickly with Astro.
+---
+
+```shell
+# prerequisite: check that Node.js is 14.15.0+, or 16+
+node --version
+
+# Make a new project directory, and navigate directly into it
+mkdir my-astro-project && cd $_
+
+# prepare for liftoff...
+npm init astro
+
+# install dependencies
+npm install
+
+# start developing!
+npm run dev
+```
+
+For production sites,
+
+```shell
+# when you're ready: build your static site to `dist/`
+npm run build
+```
+
+To learn more about installing and using Astro for the first time, please [read our installation guide.](/en/installation)
+
+If you prefer to learn by example, check out our [complete library of examples](https://github.com/withastro/astro/tree/main/examples) on GitHub. You can check out any of these examples locally by running `npm init astro -- --template "EXAMPLE_NAME"`.
+
+## Start your project
+
+From inside your project directory, enter the following command into your terminal:
+
+```bash
+npm run dev
+```
+
+Astro will now start serving your application on [http://localhost:3000](http://localhost:3000). Opening this URL in your browser, you should see the Astro’s "Hello, World".
+
+The server will listen for live file changes in your `src/` directory, so you do not need to restart the application as you make changes during development.
+
+## Build your project
+
+To build your project, from inside your directory enter the following build command into your terminal:
+
+```bash
+npm run build
+```
+
+This will instruct Astro to build your site and save it directly to disk. Your application is now ready in the `dist/` directory.
+
+## Deploy your project
+
+Astro sites are static, so they can be deployed to your favourite host:
+
+- [AWS S3 bucket](https://aws.amazon.com/s3/)
+- [Google Firebase](https://firebase.google.com/)
+- [Netlify](https://www.netlify.com/)
+- [Vercel](https://vercel.com/)
+- [Read more about deploying Astro in our Deploy guide.](/en/guides/deploy)
+
+## Next Steps
+
+Success! You're now ready to start developing!
+
+We recommend that you to take some time to get more familiar with the way Astro works. You can do so by further exploring our Docs, we suggest that you consider the following:
+
+📚 Learn more about Astro’s project structure in our [Project Structure guide.](/en/core-concepts/project-structure)
+
+📚 Learn more about Astro’s component syntax in our [Astro Components guide.](/en/core-concepts/astro-components)
+
+📚 Learn more about Astro’s file-based routing in our [Routing guide.](/en/core-concepts/astro-pages)
diff --git a/smoke/docs-main/src/pages/en/reference/api-reference.md b/smoke/docs-main/src/pages/en/reference/api-reference.md
new file mode 100644
index 000000000..91857af48
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/reference/api-reference.md
@@ -0,0 +1,329 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: API Reference
+---
+
+## `Astro` global
+
+The `Astro` global is available in all contexts in `.astro` files. It has the following functions:
+
+### `Astro.fetchContent()`
+
+`Astro.fetchContent()` is a way to load local `*.md` files into your static site setup.
+
+```astro
+---
+// ./src/components/my-component.astro
+const data = Astro.fetchContent('../pages/post/*.md'); // returns an array of posts that live at ./src/pages/post/*.md
+---
+
+<div>
+{data.slice(0, 3).map((post) => (
+ <article>
+ <h1>{post.title}</h1>
+ <p>{post.description}</p>
+ <a href={post.url}>Read more</a>
+ </article>
+))}
+</div>
+```
+
+`.fetchContent()` only takes one parameter: a relative URL glob of which local files you'd like to import. Currently only `*.md` files are supported. It’s synchronous, and returns an array of items of type:
+
+```js
+{
+ /* frontmatter from the post
+
+ example:
+ {
+ title: '',
+ tag: '',
+ date: '',
+ image: '',
+ author: '',
+ description: '',
+ }
+ */
+ astro: {
+ headers: [], // an array of h1...h6 elements in the markdown file
+ source: '', // raw source of the markdown file
+ html: '', // rendered HTML of the markdown file
+ },
+ url: '', // the rendered path
+}[]
+```
+
+### `Astro.request`
+
+`Astro.request` returns an object with the following properties:
+
+| Name | Type | Description |
+| :------------- | :---- | :---------------------------------------------- |
+| `url` | `URL` | The URL of the request being rendered. |
+| `canonicalURL` | `URL` | [Canonical URL][canonical] of the current page. |
+
+### `Astro.resolve()`
+
+`Astro.resolve()` helps with creating URLs relative to the current Astro file, allowing you to reference files within your `src/` folder.
+
+Astro _does not_ resolve relative links within HTML, such as images:
+
+```html
+<img src="../images/penguin.png" />
+```
+
+The above will be sent to the browser as-is and the browser will resolve it relative to the current **page**. If you want it to be resolved relative to the .astro file you are working in, use `Astro.resolve`:
+
+```astro
+<img src={Astro.resolve('../images/penguin.png')} />
+```
+
+### `Astro.site`
+
+`Astro.site` returns a `URL` made from `buildOptions.site` in your Astro config. If undefined, this will return a URL generated from `localhost`.
+
+```astro
+---
+const path = Astro.site.pathname;
+---
+
+<h1>Welcome to {path}</h1>
+```
+
+### `Astro.slots`
+
+`Astro.slots` returns an object with any slotted regions passed into the current Astro file.
+
+```js
+const {
+ heading as headingSlot, // true or undefined, based on whether `<* slot="heading">` was used.
+ default as defaultSlot, // true or undefined, based on whether `<* slot>` or `<* default>` was used.
+} = Astro.slots;
+```
+
+## `getStaticPaths()`
+
+If a page uses dynamic params in the filename, that component will need to export a `getStaticPaths()` function.
+
+This function is required because Astro is a static site builder. That means that your entire site is built ahead of time. If Astro doesn't know to generate a page at build time, your users won't see it when they visit your site.
+
+```astro
+---
+export async function getStaticPaths() {
+ return [
+ { params: { /* required */ }, props: { /* optional */ } },
+ { params: { ... } },
+ { params: { ... } },
+ // ...
+ ];
+}
+---
+<!-- Your HTML template here. -->
+```
+
+The `getStaticPaths()` function should return an array of objects to determine which paths will be pre-rendered by Astro.
+
+⚠️ The `getStaticPaths()` function executes in its own isolated scope once, before any page loads. Therefore you can't reference anything from its parent scope, other than file imports. The compiler will warn if you break this requirement.
+
+### `params`
+
+The `params` key of every returned object tells Astro what routes to build. The returned params must map back to the dynamic parameters and rest parameters defined in your component filepath.
+
+`params` are encoded into the URL, so only strings are supported as values. The value for each `params` object must match the parameters used in the page name.
+
+For example, suppose that you have a page at `src/pages/posts/[id].astro`. If you export `getStaticPaths` from this page and return the following for paths:
+
+```astro
+---
+export async function getStaticPaths() {
+ return [
+ { params: { id: '1' } },
+ { params: { id: '2' } },
+ ];
+}
+
+const { id } = Astro.request.params;
+---
+<h1>{id}</h1>
+```
+
+Then Astro will statically generate `posts/1` and `posts/2` at build time.
+
+### Data Passing with `props`
+
+To pass additional data to each generated page, you can also set a `props` value on every returned path object. Unlike `params`, `props` are not encoded into the URL and so aren't limited to only strings.
+
+For example, suppose that you generate pages based off of data fetched from a remote API. You can pass the full data object to the page component inside of `getStaticPaths`:
+
+```astro
+---
+export async function getStaticPaths() {
+ const data = await fetch('...').then(response => response.json());
+
+ return data.map((post) => {
+ return {
+ params: { id: post.id },
+ props: { post },
+ };
+ });
+}
+
+const { id } = Astro.request.params;
+const { post } = Astro.props;
+---
+<h1>{id}: {post.name}</h1>
+```
+
+You can also pass a regular array, which may be helpful when generating or stubbing a known list of routes.
+
+```astro
+---
+export async function getStaticPaths() {
+ const posts = [
+ {id: '1', category: "astro", title: "API Reference"},
+ {id: '2', category: "react", title: "Creating a React Counter!"}
+ ];
+ return posts.map((post) => {
+ return {
+ params: { id: post.id },
+ props: { post} };
+ });
+}
+const {id} = Astro.request.params;
+const {post} = Astro.props;
+---
+<body>
+ <h1>{id}: {post.title}</h1>
+ <h2>Category: {post.category}</h2>
+</body>
+```
+
+Then Astro will statically generate `posts/1` and `posts/2` at build time using the page component in `pages/posts/[id].astro`. The page can reference this data using `Astro.props`:
+
+### `paginate()`
+
+Pagination is a common use-case for websites that Astro natively supports via the `paginate()` function. `paginate()` will automatically generate the array to return from `getStaticPaths()` that creates one URL for every page of the paginated collection. The page number will be passed as a param, and the page data will be passed as a `page` prop.
+
+```js
+export async function getStaticPaths({ paginate }) {
+ // Load your data with fetch(), Astro.fetchContent(), etc.
+ const response = await fetch(`https://pokeapi.co/api/v2/pokemon?limit=150`);
+ const result = await response.json();
+ const allPokemon = result.results;
+
+ // Return a paginated collection of paths for all posts
+ return paginate(allPokemon, { pageSize: 10 });
+}
+
+// If set up correctly, The page prop now has everything that
+// you need to render a single page (see next section).
+const { page } = Astro.props;
+```
+
+`paginate()` assumes a file name of `[page].astro` or `[...page].astro`. The `page` param becomes the page number in your URL:
+
+- `/posts/[page].astro` would generate the URLs `/posts/1`, `/posts/2`, `/posts/3`, etc.
+- `/posts/[...page].astro` would generate the URLs `/posts`, `/posts/2`, `/posts/3`, etc.
+
+#### The pagination `page` prop
+
+Pagination will pass a `page` prop to every rendered page that represents a single page of data in the paginated collection. This includes the data that you've paginated (`page.data`) as well as metadata for the page (`page.url`, `page.start`, `page.end`, `page.total`, etc). This metadata is useful for things like a "Next Page" button or a "Showing 1-10 of 100" message.
+
+| Name | Type | Description |
+| :----------------- | :-------------------: | :-------------------------------------------------------------------------------------------------------------------------------- |
+| `page.data` | `Array` | Array of data returned from `data()` for the current page. |
+| `page.start` | `number` | Index of first item on current page, starting at `0` (e.g. if `pageSize: 25`, this would be `0` on page 1, `25` on page 2, etc.). |
+| `page.end` | `number` | Index of last item on current page. |
+| `page.size` | `number` | How many items per-page. |
+| `page.total` | `number` | The total number of items across all pages. |
+| `page.currentPage` | `number` | The current page number, starting with `1`. |
+| `page.lastPage` | `number` | The total number of pages. |
+| `page.url.current` | `string` | Get the URL of the current page (useful for canonical URLs) |
+| `page.url.prev` | `string \| undefined` | Get the URL of the previous page (will be `undefined` if on page 1). |
+| `page.url.next` | `string \| undefined` | Get the URL of the next page (will be `undefined` if no more pages). |
+
+### `rss()`
+
+RSS feeds are another common use-case that Astro supports natively. Call the `rss()` function to generate an `/rss.xml` feed for your project using the same data that you loaded for this page. This file location can be customized (see below).
+
+```js
+// Example: /src/pages/posts/[...page].astro
+// Place this function inside your Astro component script.
+export async function getStaticPaths({rss}) {
+ const allPosts = Astro.fetchContent('../post/*.md');
+ const sortedPosts = allPosts.sort((a, b) => new Date(b.date) - new Date(a.date));
+
+ // Generate an RSS feed from this collection
+ rss({
+ // The RSS Feed title, description, and custom metadata.
+ title: 'Don’s Blog',
+ description: 'An example blog on Astro',
+ customData: `<language>en-us</language>`,
+ // The list of items for your RSS feed, sorted.
+ items: sortedPosts.map(item => ({
+ title: item.title,
+ description: item.description,
+ link: item.url,
+ pubDate: item.date,
+ })),
+ // Optional: Customize where the file is written to.
+ // Defaults to "/rss.xml"
+ dest: "/my/custom/feed.xml",
+ });
+
+ // Return a paginated collection of paths for all posts
+ return [ ... ];
+}
+```
+
+```ts
+// The full type definition for the rss() function argument:
+interface RSSArgument {
+ /** (required) Title of the RSS Feed */
+ title: string;
+ /** (required) Description of the RSS Feed */
+ description: string;
+ /** Specify arbitrary metadata on opening <xml> tag */
+ xmlns?: Record<string, string>;
+ /** Specify custom data in opening of file */
+ customData?: string;
+ /**
+ * Specify where the RSS xml file should be written.
+ * Relative to final build directory. Example: '/foo/bar.xml'
+ * Defaults to '/rss.xml'.
+ */
+ dest?: string;
+ /** Return data about each item */
+ items: {
+ /** (required) Title of item */
+ title: string;
+ /** (required) Link to item */
+ link: string;
+ /** Publication date of item */
+ pubDate?: Date;
+ /** Item description */
+ description?: string;
+ /** Append some other XML-valid data to this item */
+ customData?: string;
+ }[];
+}
+```
+
+## `import.meta`
+
+> In this section we use `[dot]` to mean `.`. This is because of a bug in our build engine that is rewriting `import[dot]meta[dot]env` if we use `.` instead of `[dot]`.
+
+All ESM modules include a `import.meta` property. Astro adds `import[dot]meta[dot]env` through [Vite](https://vitejs.dev/guide/env-and-mode.html).
+
+**`import[dot]meta[dot]env[dot]SSR`** can be used to know when rendering on the server. Sometimes you might want different logic, for example a component that should only be rendered in the client:
+
+```jsx
+import { h } from 'preact';
+
+export default function () {
+ // Note: rewrite "[dot]" to "." for this to to work in your project.
+ return import[dot]meta[dot]env[dot]SSR ? <div class="spinner"></div> : <FancyComponent />;
+}
+```
+
+[canonical]: https://en.wikipedia.org/wiki/Canonical_link_element
diff --git a/smoke/docs-main/src/pages/en/reference/builtin-components.md b/smoke/docs-main/src/pages/en/reference/builtin-components.md
new file mode 100644
index 000000000..6b06f3786
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/reference/builtin-components.md
@@ -0,0 +1,70 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Built-In Components
+---
+
+Astro includes several builtin components for you to use in your projects. All builtin components are available via `import {} from 'astro/components';`.
+
+## `<Code />`
+
+```astro
+---
+import { Code } from 'astro/components';
+---
+<!-- Syntax highlight some JavaScript code. -->
+<Code code={`const foo = 'bar';`} lang="js" />
+<!-- Optional: customize your theme. -->
+<Code code={`const foo = 'bar';`} lang="js" theme="dark-plus" />
+<!-- Optional: Enable word wrapping. -->
+<Code code={`const foo = 'bar';`} lang="js" wrap />
+```
+
+This component provides syntax highlighting for code blocks at build time (no client-side JavaScript included). The component is powered internally by shiki and it supports all popular [themes](https://github.com/shikijs/shiki/blob/main/docs/themes.md) and [languages](https://github.com/shikijs/shiki/blob/main/docs/languages.md). Plus, you can add your custom themes and languages by passing them to `theme` and `lang` respectively.
+
+You can also use the `<Prism />` component for syntax highlighting powered by the [Prism](https://prismjs.com/) syntax highlighting library. This is the library that Astro’s Markdown uses by default. However, we will be transitioning all usage over to `<Code>` as we move towards our v1.0 release.
+
+## `<Markdown />`
+
+```astro
+---
+import { Markdown } from 'astro/components';
+---
+<Markdown>
+ # Markdown syntax is now supported! **Yay!**
+</Markdown>
+```
+
+See our [Markdown Guide](/en/guides/markdown-content) for more info.
+
+<!-- TODO: We should move some of the specific component info here. -->
+
+## `<Prism />`
+
+```astro
+---
+import { Prism } from 'astro/components';
+---
+<Prism lang="js" code={`const foo = 'bar';`} />
+```
+
+This component provides language-specific syntax highlighting for code blocks. Since this never changes in the client it makes sense to use an Astro component (it’s equally reasonable to use a framework component for this kind of thing; Astro is server-only by default for all frameworks!).
+
+See the [list of languages supported by Prism](https://prismjs.com/#supported-languages) where you can find a language’s corresponding alias. And, you can also display your Astro code blocks with lang="astro"!
+
+## `<Debug />`
+
+```astro
+---
+import Debug from 'astro/debug';
+const serverObject = {
+ a: 0,
+ b: "string",
+ c: {
+ nested: "object"
+ }
+}
+---
+<Debug {serverObject} />
+```
+
+This component provides a way to inspect values on the clientside, without any JavaScript.
diff --git a/smoke/docs-main/src/pages/en/reference/cli-reference.md b/smoke/docs-main/src/pages/en/reference/cli-reference.md
new file mode 100644
index 000000000..0ada6b8a2
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/reference/cli-reference.md
@@ -0,0 +1,72 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: CLI Reference
+---
+
+## Commands
+
+### `astro dev`
+
+Runs the Astro development server. This starts an HTTP server that responds to requests for pages stored in `src/pages` (or which folder is specified in your [configuration](/en/reference/configuration-reference)).
+
+**Flags**
+
+#### `--port`
+
+Specifies should port to run on. Defaults to `3000`.
+
+### `astro build`
+
+Builds your site for production.
+
+### `astro preview`
+
+Start a local static file server to serve your built `dist/` directory. Useful for previewing your static build locally, before deploying it.
+
+This command is meant for local testing only, and is not designed to be run in production. For help with production hosting, check out our guide on [Deploying an Astro Website](/en/guides/deploy).
+
+### `astro check`
+
+Runs diagnostics (such as type-checking) against your project and reports errors to the console. If any errors are found the process will exit with a code of **1**.
+
+This command is intended to be used in CI workflows.
+
+## Global Flags
+
+### `--config path`
+
+Specify the path to the config file. Defaults to `astro.config.mjs`. Use this if you use a different name for your configuration file or have your config file in another folder.
+
+```shell
+astro --config config/astro.config.mjs dev
+```
+
+### `--project-root path`
+
+Specify the path to the project root. If not specified the current working directory is assumed to be the root.
+
+The root is used for finding the Astro configuration file.
+
+```shell
+astro --project-root examples/snowpack dev
+```
+
+### `--reload`
+
+Clears the cache (dependencies are built within Astro apps).
+
+### `--verbose`
+
+Enables verbose logging, which is helpful when debugging an issue.
+
+### `--silent`
+
+Enables silent logging, which is helpful for when you don't want to see Astro logs.
+
+### `--version`
+
+Print the Astro version number and exit.
+
+### `--help`
+
+Print the help message and exit.
diff --git a/smoke/docs-main/src/pages/en/reference/configuration-reference.md b/smoke/docs-main/src/pages/en/reference/configuration-reference.md
new file mode 100644
index 000000000..9c729ee0b
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/reference/configuration-reference.md
@@ -0,0 +1,80 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Configuration Reference
+---
+
+To configure Astro, add an `astro.config.mjs` file to the root of your project.
+
+```js
+export default /** @type {import('astro').AstroUserConfig} */ ({
+ // all options are optional; these values are the defaults
+ projectRoot: './',
+ public: './public/',
+ dist: './dist/',
+ src: './src/',
+ pages: './src/pages/',
+ renderers: [
+ '@astrojs/renderer-svelte',
+ '@astrojs/renderer-vue',
+ '@astrojs/renderer-react',
+ '@astrojs/renderer-preact',
+ ],
+ vite: {},
+});
+```
+
+#### projectRoot
+
+The `projectRoot` option sets the working directory used by Astro. Astro will resolve all other directory options from this path.
+
+**Default**: The current working directory.
+
+#### public
+
+The `public` option sets the directory used to resolve public assets. Astro does not process any files within this directory.
+
+**Default**: The `public` directory within the `projectRoot` directory.
+
+#### dist
+
+The `dist` option sets the directory used to output the final build of the project. Contents of the `public` directory are also copied into this directory.
+
+**Default**: The `dist` directory within the `projectRoot` directory.
+
+#### src
+
+The `src` option sets the directory used to resolve source files, like `pages`. Astro may process, optimize, and bundle any files in this directory.
+
+**Default**: The `src` directory within the `projectRoot` directory.
+
+#### pages
+
+The `pages` option sets the directory used to resolve pages, relative to the `projectRoot` option.
+
+**Default**: The `src/pages` directory within the `projectRoot` directory.
+
+#### renderers
+
+The `renderers` option defines the framework renderers to be used by Astro.
+
+**Default**: An array of `@astrojs/renderer-svelte`, `@astrojs/renderer-vue`, `@astrojs/renderer-react`, and `@astrojs/renderer-preact`. To assign no renderers at all, you must provide an empty array (`[]`).
+
+#### buildOptions
+
+The `buildOptions` option configures how a site is built, including its base URL (`buildOptions.site`), whether it includes a sitemap (`buildOptions.sitemap`), whether markdown draft pages should be included in the build (`buildOptions.drafts`), and whether its pages should be files (`path.html`) or directories (`path/index.html`) (`buildOptions.pageUrlFormat`).
+
+#### devOptions
+
+The `devOptions` option configures features used during development, including the server hostname (`devOptions.hostname`), the server port (`devOptions.port`), and whether urls should include a trailing slash (`devOptions.trailingSlash`).
+
+#### vite
+
+The `vite` option configures the internals of Vite. These options can be explored on [ViteJS.dev](https://vitejs.dev/config/).
+
+#### markdownOptions
+
+The `markdownOptions` option assigns options to the Markdown parser. These options can be explored on [GitHub](https://github.com/withastro/astro/blob/latest/packages/astro/src/@types/astro.ts).
+
+---
+
+You can view the entire configuration API on [GitHub](https://github.com/withastro/astro/blob/latest/packages/astro/src/@types/astro.ts).
diff --git a/smoke/docs-main/src/pages/en/reference/renderer-reference.md b/smoke/docs-main/src/pages/en/reference/renderer-reference.md
new file mode 100644
index 000000000..0ade91e56
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/reference/renderer-reference.md
@@ -0,0 +1,229 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: UI Renderer Reference
+---
+
+Astro is designed to support your favorite UI frameworks. [React](https://npm.im/@astrojs/renderer-react), [Svelte](https://npm.im/@astrojs/renderer-svelte), [Vue](https://npm.im/@astrojs/renderer-vue), and [Preact](https://npm.im/@astrojs/renderer-preact) are all built-in to Astro and supported out of the box. No configuration is needed to enable these.
+
+Internally, each framework is supported via a framework **renderer.** A renderer is a type of Astro plugin that adds support for a framework. Some are built-in, but you can also provide your own third-party renderers to add Astro support for new frameworks.
+
+## What is a renderer?
+
+A renderer is an NPM package that has two responsibilities:
+
+1. _render a component to a static string of HTML_ at build time.
+2. _rehydrate that HTML to create an interactive component_ on the client.
+
+Take a look at any one of Astro’s built-in [`renderers`](https://github.com/withastro/astro/tree/main/packages/renderers) to see this in action. We'll go into more detail in the following sections.
+
+## Building Your Own Renderer
+
+> **Building a renderer?** We'd love for you to contribute renderers for popular frameworks back to the Astro repo. Feel free to open an issue or pull request to discuss.
+
+A simple renderer only needs a few files:
+
+```
+/my-custom-renderer/
+├── package.json
+├── index.js
+├── server.js
+└── client.js
+```
+
+### Package Manifest (`package.json`)
+
+A renderer should include any framework dependencies as package dependencies. For example, `@astrojs/renderer-react` includes `react` & `react-dom` as dependencies in the `package.json` manifest.
+
+```js
+// package.json
+"name": "@astrojs/renderer-react",
+"dependencies": {
+ "react": "^17.0.2",
+ "react-dom": "^17.0.2"
+}
+```
+
+This means that Astro users don't need to install the UI framework packages themselves. The renderer is the only package that your users will need to install.
+
+### Renderer Entrypoint (`index.js`)
+
+The main entrypoint of a renderer is a simple JS file which exports a manifest for the renderer. The required values are `name`, `server`, and `client`.
+
+Additionally, this entrypoint can define a [Vite config object](https://vitejs.dev/config/) that should be used to load non-JavaScript files.
+
+```js
+import myVitePlugin from 'vite-plugin-myplugin';
+
+export default {
+ name: '@astrojs/renderer-xxx', // the renderer name
+ client: './client.js', // relative path to the client entrypoint
+ server: './server.js', // (optional) relative path to the server entrypoint
+ viteConfig(options = { mode: 'development', command: 'serve' }) {
+ // (optional) return config object for Vite (https://vitejs.dev/config/)
+ return {
+ plugins: [myVitePlugin()], // tip: usually this will depend on a Vite plugin
+ optimizeDeps: {
+ include: ['my-client-dep'], // tip: it’s always a good idea to specify any client-side hydration deps here
+ },
+ ssr: {
+ external: ['my-client-dep/node/server.js'], // tip: use ssr.external in case you encounter code meant only for Node
+ },
+ };
+ },
+ polyfills: ['./shadow-dom-polyfill.js'], // (optional) scripts that should be injected on the page for the component
+ hydrationPolyfills: ['./hydrate-framework.js'], // (optional) polyfills that need to run before hydration ever occurs
+ jsxImportSource: 'preact', // (optional) the name of the library from which JSX is imported ("react", "preact", "solid-js", etc.)
+ jsxTransformOptions: async (options = { mode: 'development', ssr: true }) => {
+ // (optional) a function to transform JSX files
+ const {
+ default: { default: jsx },
+ } = await import('@babel/plugin-transform-react-jsx');
+ return {
+ plugins: [jsx({}, { runtime: 'automatic', importSource: 'preact' })],
+ };
+ },
+};
+```
+
+### JSX Support
+
+Astro is unique in that it allows you to mix multiple types of JSX/TSX files in a single project. It does this by reading the `jsxImportSource` and `jsxTransformOptions` from renderers and transforming a file with [Babel](https://babeljs.io/).
+
+#### `jsxImportSource`
+
+This is the name of your library (for example `preact` or `react` or `solid-js`) which, if encountered in a file, will signal to Astro that this renderer should be used.
+
+Users may also manually define `/** @jsxImportSource preact */` in to ensure that the file is processed by this renderer (if, for example, the file has no imports).
+
+#### `jsxTransformOptions`
+
+This is an `async` function that returns information about how to transform matching JSX files with [Babel](https://babeljs.io/). It supports [`plugins`](https://babeljs.io/docs/en/plugins) or [`presets`](https://babeljs.io/docs/en/presets) to be passed directly to Babel.
+
+> Keep in mind that this transform doesn't need to handle TSX separately from JSX, Astro handles that for you!
+
+`jsxTransformOptions` receives context about whether it’s running in `development` or `production` mode, as well as whether or not it’s running in SSR or client hydration. These allow you to pass separate Babel configurations for various conditions, like if your files should be compiled differently in SSR mode.
+
+```ts
+export interface JSXTransformOptions {
+ (context: {
+ /** "development" or "production" */
+ mode: string;
+ /** True if builder is in SSR mode */
+ ssr: boolean;
+ }) => {
+ plugins?: any[];
+ presets?: any[];
+ }
+}
+```
+
+### Server Entrypoint (`server.js`)
+
+The server entrypoint of a renderer is responsible for checking if a component should use this renderer, and if so, how that component should be rendered to a string of static HTML.
+
+```js
+export default {
+ // should Component use this renderer?
+ check(Component, props, childHTML) {},
+ // Component => string of static HTML
+ renderToStaticMarkup(Component, props, childHTML) {},
+};
+```
+
+#### `check`
+
+`check` is a function that determines whether a Component should be "claimed" by this renderer.
+
+In its simplest form, it can check for the existence of a flag on Object-based components.
+
+```js
+function check(Component) {
+ return Component.isMyFrameworkComponent;
+}
+```
+
+In more complex scenarios, like when a Component is a `Function` without any flags, you may need to use `try/catch` to attempt a full render. This result is cached so that it only runs once per-component.
+
+```js
+function check(Component, props, childHTML) {
+ try {
+ const { html } = renderToStaticMarkup(Component, props, childHTML);
+ return Boolean(html);
+ } catch (e) {}
+ return false;
+}
+```
+
+#### `renderToStaticMarkup`
+
+`renderToStaticMarkup` is a function that renders a Component to a static string of HTML. There’s usually a method exported by frameworks named something like `renderToString`.
+
+```js
+import { h, renderToString } from 'xxx';
+
+function renderToStaticMarkup(Component, props, childHTML) {
+ const html = renderToString(h(Component, { ...props, innerHTML: childHTML }));
+ return { html };
+}
+```
+
+Note that `childHTML` is an HTML string representing this component’s children. If your framework does not support rendering HTML directly, you are welcome to use a wrapper component. By convention, Astro uses the `astro-fragment` custom element to inject `childHTML` into. Your renderer should use that, too.
+
+```js
+import { h, renderToString } from 'xxx';
+
+const Wrapper = ({ value }) =>
+ h('astro-fragment', { dangerouslySetInnerHTML: { __html: value } });
+
+function renderToStaticMarkup(Component, props, childHTML) {
+ const html = renderToString(
+ h(Component, props, h(Wrapper, { value: childHTML }))
+ );
+ return { html };
+}
+```
+
+The `renderToStaticMarkup` function also supports `async/await` for render functions that return a `Promise`.
+
+```js
+import { h, renderToString } from 'xxx';
+
+async function renderToStaticMarkup(Component, props, childHTML) {
+ const html = await renderToString(
+ h(Component, { ...props, innerHTML: childHTML })
+ );
+ return { html };
+}
+```
+
+### Client Entrypoint (`client.js`)
+
+The client entrypoint of a renderer is responsible for rehydrating static HTML (the result of `renderToStaticMarkup`) back into a fully interactive component. Its `default` export should be a `function` which accepts the host element of the Component, an `astro-root` custom element.
+
+> If your framework supports non-destructive component hydration (as opposed to a destructive `render` method), be sure to use that! Following your framework’s Server Side Rendering (SSR) guide should point you in the right direction.
+
+```js
+import { h, hydrate } from 'xxx';
+
+export default (element) => {
+ return (Component, props, childHTML) => {
+ hydrate(h(Component, { ...props, innerHTML: childHTML }), element);
+ };
+};
+```
+
+Note that `childHTML` is an HTML string representing this component’s children. If your framework does not support rendering HTML directly, you should use the same wrapper component you used for the server entrypoint.
+
+```js
+import { h, hydrate } from 'xxx';
+import SharedWrapper from './SharedWrapper.js';
+
+export default (element) => {
+ return (Component, props, childHTML) => {
+ hydrate(
+ h(Component, props, h(SharedWrapper, { value: childHTML })),
+ element
+ );
+ };
+};
+```
diff --git a/smoke/docs-main/src/pages/en/themes.astro b/smoke/docs-main/src/pages/en/themes.astro
new file mode 100644
index 000000000..5fa3cb3d6
--- /dev/null
+++ b/smoke/docs-main/src/pages/en/themes.astro
@@ -0,0 +1,53 @@
+---
+import Layout from '../../layouts/MainLayout.astro';
+import Card from '../../components/Card.astro';
+import { Markdown } from 'astro/components';
+import themes from '../../data/themes.json';
+import components from '../../data/components.json';
+---
+
+<Layout content={{ title: 'Themes' }} hideRightSidebar>
+ <style>
+ .card-grid {
+ display: grid;
+ grid-column-gap: 15px;
+ grid-row-gap: 15px;
+ grid-auto-flow: dense;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ }
+ </style>
+ <Markdown>
+ ## Featured Theme
+ </Markdown>
+ <div class="card-grid">
+ {themes.featured.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ ## Official Themes
+
+ Astro maintains several official themes for documentation sites, portfolios, and more.
+ </Markdown>
+ <div class="card-grid">
+ {themes.official.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ ## Community Themes
+
+ Checkout some themes developed by our community!
+ </Markdown>
+ <div class="card-grid">
+ {themes.community.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ ## Featured Packages
+
+ Our package ecosystem is growing! Check out these featured community packages. Search the entire collection [on npm.](https://www.npmjs.com/search?q=keywords%3Aastro-component)
+ </Markdown>
+ <div class="card-grid">
+ {components.community.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ > Want to see your own work featured? [Share it to Discord!](https://astro.build/chat)
+ > We'll often take our favorites from the `#showcase` channel and post them here.
+ </Markdown>
+</Layout>
diff --git a/smoke/docs-main/src/pages/es/comparing-astro-vs-other-tools.md b/smoke/docs-main/src/pages/es/comparing-astro-vs-other-tools.md
new file mode 100644
index 000000000..7ac60fa92
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/comparing-astro-vs-other-tools.md
@@ -0,0 +1,232 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Astro versus X
+---
+
+Con frecuencia nos preguntamos, "¿Cómo se comporta Astro en comparación a mi generador de páginas web favorito, **\_\_\_\_**?". Esta guía fue escrita para responder a esa pregunta, al comparar varios generadores de páginas web y alternativas a Astro.
+
+Si no ves tu generador de páginas web favorito en la lista, [pregúntanos en Discord.](https://astro.build/chat)
+
+## Estado del Proyecto
+
+Una nota rápida sobre la madurez del proyecto: **Astro aún se encuentra en beta.** Muchas de las herramientas listadas aquí son mucho más maduras. !Algunas tienen más de 12 años en comparación a Astro!
+
+Algunas características, aunque son pocas, aún no están disponibles en Astro y algunas APIs aún no están terminadas. Sin embargo, el proyecto se considera estable desde un punto de vista de los errores; además, ya se han construido muchas páginas web usando Astro. Esto es un punto importante a considerar al momento de escoger a Astro.
+
+## Docusaurus vs. Astro
+
+[Docusaurus](https://docusaurus.io/) es un popular generador de sitios web sobre documentación. Docusaurus desarrollado por React para generar tu UI del sitio web; mientras que Astro soporta React, Vue.js, Svelte, y plantillas HTML.
+
+Docusaurus fue diseñada para construir la documentación de las páginas web y tienen una creación propia y unas características específicas de documentación que Astro no posee. En lugar de eso, Astro ofrece características específicas de documentación mediante un tema oficial [`docs`](https://github.com/withastro/astro/tree/main/examples/docs) que puedes utilizar en tu sitio. !Este sitio web se construyó usando ese tema!
+
+#### Comparando el Rendimiento de Docusaurus vs. Astro
+
+En la mayoría de casos, los sitios web de Astro cargarán mucho más rápido que los sitios web de Docusaurus. Esto es porque Astro automáticamente quita el código JavaScript innecesario de la página, cargando sólo los componentes individuales que la página que necesita. Esta característica se llama [hidratación parcial](/es/core-concepts/component-hydration).
+
+Docusaurus no soporta hidratación parcial, en lugar de eso, hace que el usuario cargue y rehidrata la página completa en el navegador, incluso si la mayoría del contenido de la página es estático. Esto crea una carga de página más lenta y un peor rendimiento para tu sitio web. No hay manera de deshabilitar este comportamiento en Docusaurus.
+
+#### Caso de Estudio: Documentando un sitio web
+
+[docusaurus.io/docs](https://docusaurus.io/docs) es la documentación oficial de Docusaurus y está construida con Docusaurus. El sitio web ofrece unas características similares en su diseño y funcionalidad al compararla con documentación oficial de Astro. Esto nos da una **_vista detallada y realista_** entre los dos generadores de sitios web.
+
+- **Puntaje de rendimiento de Docusaurus**: 61 de 100 [(ver detalles)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocusaurus.io%2Fdocs)
+- **Puntaje de rendimiento de Astro**: 99 de 100 [(ver detalles)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+Una de las más grandes razones detrás de la diferencia en los rendimientos es que la carga de Javascript en Astro es el poco tiempo de carga de Javascropt en Astro: [docusaurus.io/docs](https://docusaurus.io/docs) carga **238kb** de Javascript en la primera carga; mientras que [docs.astro.build](https://docs.astro.build/es/getting-started) carga **78.7kb** (en general, 67% menos de JavaScript) _después_ de la primera carga.
+
+## Elder.js vs. Astro
+
+[Elder.js](https://elderguide.com/tech/elderjs/) es un dogmático generador de sitios web estáticos de código abierto que desarrollado para Svelte.
+
+Elder.js utiliza Svelte para generar tu sitio web. Astro es más flexible: eres libre de crear un componente UI en cualquier librería popular (React, Preact, Vue, Svelte, Solid entre otros) o puedes crear un componente de Astro con una sintaxis parecida a HTML, que es similar a HTML + JSX.
+
+Elder.js es el único en esta lista, junto con Astro, que soporta [hidratación parcial](/es/core-concepts/component-hydration). Astro y Elder.js automáticamente quitan el código JavaScript innecesario de la página, cargando sólo los componentes individuales que se necesiten. Elder.js tiene una API de hidratación parcial un poco diferente, pero Astro soporta algunas características que Elder.js no soporta (como `client:media`). Sin embargo, ambos generadores de sitios web construyen sitios web similares en temas de rendimiento.
+
+Elder.js utiliza una solución de rutas personalizadas que puede sentirse poco familiar para los nuevos desarrolladores. Astro utiliza [rutas basadas en archivos](/es/core-concepts/routing) que debería sentirse familiar a todos los desarrolladores que han visto Next.js, SvelteKit y otros generadores de sitios web estáticos como Eleventy.
+
+Elder.js fue diseñado para correr en sitios web grandes y afirma que puede construir un sitio web de 20 mil páginas en menos de 10 minutos (en una modesta máquina virtual). Al momento de escribir esto, Astro construye mil páginas en 66 segundos, pero aún no ha sido probado en proyectos de más de 20 mil páginas. Astro está aún en la fase inicial y la meta para Astro v1.0 es alcanzar la velocidad de construcción sitios web de Elder.js.
+
+Elder.js soporta tanto Static Site Generation (SSG) como Server-Side Rendering (SSR). Hoy en día, Astro tan sólo soporta Static Site Generation (SSG).
+
+## Eleventy vs. Astro
+
+[Eleventy](https://www.11ty.dev/) es un popular creador de sitios estáticos desarrollado por Node.js.
+
+Eleventy utiliza mucho [plantillas de lenguaje HTML antiguas](https://www.11ty.dev/docs/languages/) para renderizar tu sitio web: Nunjucks, Liquid, Pug, EJS, entre otros. Astro es más flexible: eres libre de crear un componente UI en cualquier librería popular (React, Preact, Vue, Svelte, Solid entre otros) o puedes crear un componente de Astro con una sintaxis parecida a HTML, que es similar a HTML + JSX.
+
+#### Comparando el Rendimiento de Eleventy vs. Astro
+
+Conceptualmente, Eleventy está alineado con el enfoque de Astro sobre "el uso mínimo de Javascript en el lado del cliente". Tanto Eleventy y Astro ofrecen un rendimiento similar, un uso extremadamente bajo de Javascript por defecto.
+
+Eleventy alcanza este punto al empujarte a evitar usar Javascript. Los sitios de Eleventy son escritos, con frecuencia, con poco o ninguna línea de Javascript. Esto se convierte en un problema cuando necesitas Javascript en el lado del cliente. Es tu responsabilidad crear tu propia línea de construcción de recursos para Eleventy. Esto puede ser una tarea difícil y te obliga a configurar una gran cantidad de optimizaciones, como la fusión de archivos, la minificación y otros.
+
+Por otro lado, Astro automáticamente construye el CSS y Javascript en el lado del cliente por ti. Astro automáticamente quita el código Javascript innecesario de la página, cargando sólo los componentes individuales que se necesiten. Está funcionalidad se llama [hidratación parcial](/es/core-concepts/component-hydration). Mientras que en Eleventy lo puedes alcanzar esto por ti mismo; Astro la ofrece desde el inicio y sin configuración extra.
+
+## Gatsby vs. Astro
+
+[Gatsby](https://www.gatsbyjs.com/) es una popular página web y framework de React.
+
+Gatsby utiliza React para renderizar tu sitio web. Astro es más flexible: eres libre de crear un componente UI en cualquier librería popular (React, Preact, Vue, Svelte, Solid, entre otros) o puedes crear un componente de Astro con una sintaxis parecida a HTML, que es similar a HTML + JSX.
+
+Gatsby v4 soporta tanto Static Site Generation (SSG) como Server-Side Rendering (SSR). Hoy en día, Astro tan sólo soporta Static Site Generation (SSG).
+
+Gatsby requiere de una API personalizada de GraphQL para trabajar con todo el contenido de tu sitio web. Aunque algunos desarrolladores disfrutan de este modelo, una crítica común a Gatsby es que este modelo se vuelve demasiado complejo y difícil de mantener en el tiempo, especialmente cuando las páginas crecen. Astro no requiere una API de GraphQL, en su lugar ofrece apoyos para API familiares (como `fetch()` y `await`) para la carga de datos cuando se necesite.
+
+#### Comparando el Rendimiento de Gatsby vs. Astro
+
+En la mayoría de casos, los sitios de Astro cargarán mucho más rápido que los sitios de Gatsby. Esto pasa porque Astro automáticamente quita el código Javascript innecesario de la página, cargando sólo los componentes individuales que se necesiten. Esta característica se llama [hidratación parcial](/es/core-concepts/component-hydration).
+
+Gatsby no soporta la hidratación parcial. En su lugar, hace que el usuario cargue e hidrate la página completa en el navegador, incluso si la mayoría del contenido es estático. Esto hace que las páginas carguen más lentamente y que el rendimiento sea más bajo para tu sitio web. Gatsby tiene [un plugin comunitario](https://www.gatsbyjs.com/plugins/gatsby-plugin-no-javascript/) para remover todo el Javascript de la página, pero esto rompería muchos sitios web. Esto le queda a usted con una decisión de todo-o-nada para la interactividad en cada una de las páginas.
+
+Gatsby tiene un gran ecosistema de plugins, el cual podría hacer que Gatsby sea una gran opción para tu proyecto dependiendo de tus necesidades. [gatsby-plugin-image](https://www.gatsbyjs.com/plugins/gatsby-plugin-image/) es un popular plugin para optimizar imágenes, esto podría convertir a Gatsby en una mejor opción para algunas páginas con muchas imágenes.
+
+#### Caso de Estudio: Documentando un sitio web
+
+[gatsbyjs.com/docs](https://www.gatsbyjs.com/docs/quick-start/) es la documentación oficial de Gatsby, construida con Gatsby. El sitio web ofrece una interfaz similar y un conjunto de características a comparar con la documentación oficial de Astro. Esto nos da una **_vista detallada y realista_** entre los dos generadores de sitios web.
+
+- **Puntaje de rendimiento de Gatsby**: 64 de 100 [(ver detalles)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fwww.gatsbyjs.com%2Fdocs%2Fquick-start%2F)
+- **Puntaje de rendimiento de Astro**: 99 de 100 [(ver detalles)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+Una de las más grandes razones detrás de la diferencia en los rendimientos es que la carga de Javascript en Astro es el poco tiempo de carga de Javascropt en Astro: [gatsbyjs.com/docs](https://www.gatsbyjs.com/docs/quick-start/) carga **417kb** de Javascript en la primera carga; mientras que [docs.astro.build](https://docs.astro.build/es/getting-started) loads **78.7kb** (en general, 81% menos de JavaScript) _después_ de la primera carga.
+
+## Hugo vs. Astro
+
+[Hugo](https://gohugo.io/) es un generador de sitios web estático desarrollado por Go.
+
+Hugo utiliza una [plantilla de lenguajes personalizados](https://gohugo.io/templates/introduction/) para renderizar tu sitio web. Astro te deja crear un componente UI en cualquier librería popular (React, Preact, Vue, Svelte, Solid, entre otros) o puedes crear un componente de Astro con una sintaxis parecida a HTML, que es similar a HTML + JSX.
+
+#### Comparando el Rendimiento de Hugo vs. Astro
+
+Conceptualmente, Hugo está alineado con el enfoque de Astro sobre "el uso mínimo de Javascript en el lado del cliente". Tanto Hugo y Astro ofrecen un rendimiento similar, un uso extremadamente bajo de Javascript por defecto.
+
+Tanto Hugo como Astro, traen incorporado soporte para la construcción, el empaquetado y la minificación de JavaScript. Astro automáticamente quita el código Javascript innecesario de la página, cargando sólo los componentes individuales que se necesiten. Esta característica se llama [hidratación parcial](/es/core-concepts/component-hydration). Mientras que esto lo puedes hacer en Hugo por ti mismo, Astro lo ofrece incorporado por defecto.
+
+## Jekyll vs. Astro
+
+[Jekyll](https://jekyllrb.com/) es un popular generador de sitios estáticos, desarrollado por Ruby.
+
+Jekyll utiliza una vieja versión de [lenguaje de plantillas](https://jekyllrb.com/docs/liquid/) para renderizar tu sitio web. Astro te permite crear páginas usando una interfaz de usuario de librerías de componentes (React, Preact, Vue, Svelte, entre otros otros) o una sintaxis de componente similar a HTML + JSX. Jekyll no soporta la utilización de componentes modernos para las plantillas de HTML.
+
+#### Comparando el Rendimiento de Jekyll vs. Astro
+
+Conceptualmente, Eleventy está alineado con el enfoque de Astro sobre "el uso mínimo de Javascript en el lado del cliente". Tanto Jekyll y Astro ofrecen un rendimiento similar, un uso extremadamente bajo de Javascript por defecto.
+
+Jekyll alcanza este punto porque no permite que el usuario cargue Javascript. Los sitios Jekyll son frecuentemente escritos con poco a ningún Javascript, en su lugar promueven el renderizado de HTML en el lado del servidor. Esto se convierte en un problema cuando necesitas utilizar JavaScript en el lado del cliente. Es tu responsabilidad crear tu propia cadena de procesos de construcción para Jekyll. Esto consume mucho de tu tiempo y te obliga a configurar la empaquetación, la minificación y otras optimizaciones por ti mismo.
+
+En contraste, Astro automáticamente construye el Javascript del lado del cliente para ti. Astro sólo envía el mínimo de Javascript al navegador, minificado, empaquetado y optimizado para producción. Esto puede ser posible por ti mismo en Jekyll, pero con Astro esto se hace por defecto.
+
+## SvelteKit vs. Astro
+
+[SvelteKit](https://kit.svelte.dev/) es un popular sitio web y un marco de trabajo para Svelte.
+
+SeveltKit utiliza Svelte para renderizar tu sitio web. Astro es más flexible: eres libre de crear un componente UI en cualquier librería popular (React, Preact, Vue, Svelte, Solid, entre otros) o puedes crear un componente de Astro con una sintaxis parecida a HTML, que es similar a HTML + JSX.
+
+Tanto SveltKit como Astro, son estructuras o frameworks para crear sitios web. SvelteKit funciona mejor con sitios web altamente dinámicos (como tableros y bandejas de entradas); mientras que Astro funciona mejor con sitios altamente estáticos (como contenido web y sitios de comercio electrónico).
+
+SvelteKit soporta tanto Static Site Generation (SSG) como Server-Side Rendering (SSR). Hoy en día, Astro tan sólo soporta Static Site Generation (SSG).
+
+#### Comparando el Rendimiento de SveltKit vs. Astro
+
+En la mayoría de casos, los sitios de Astro cargarán mucho más rápido que los sitios de SveltKit. Esto pasa porque Astro automáticamente quita el código Javascript innecesario de la página, cargando sólo los componentes individuales que se necesiten. Esta característica se llama [hidratación parcial](/es/core-concepts/component-hydration).
+
+SveltKit no soporta la hidratación parcial, en su lugar hace que el usuario cargue e hidrate la página completa en el navegador, incluso si la mayoría del contenido de la página es estático. Esto crea una carga de página más lenta y un rendimiento inferior para tu sitio web. SveltKit ofrece soporte para [páginas estáticas, con cero JavaScript](https://kit.svelte.dev/docs#ssr-and-javascript-hydrate). Sin embargo, en su página no hay planificación para realizar la hidratación parcial de componentes individuales. Por lo tanto, queda a tu criterio tomar la decisión de todo-o-nada en la interactividad de cada página.
+
+#### Caso de Estudio: Documentando un sitio web
+
+[kit.svelte.dev](https://kit.svelte.dev/docs#ssr-and-javascript-hydrate) es el sitio oficial de SvelteKit, está construido con SvelteKit. El sitio web ofrece una interfaz similar y un conjunto de características a comparar con la documentación oficial de Astro. Esto nos da una **_vista detallada y realista_** entre los dos generadores de sitios web.
+
+Una notable diferencia entre los dos sitios web que se están probando: es que la documentación de SvelteKit se proporciona como una sola página, mientras que la documentación de Astro se divide en múltiples páginas. Este mayor contenido debería tener un impacto negativo en el rendimiento que no está relacionado con la herramienta en sí misma.
+
+- **Puntaje de rendimiento de SveltKit**: 92 de 100 [(ver detalles)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fkit.svelte.dev%2Fdocs)
+- **Puntaje de rendimiento de Astro**: 99 de 100 [(ver detalles)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+El rendimiento de SvelteKit fue muy similar al de Astro en esta prueba.
+
+## Next.js vs. Astro
+
+[Next.js](https://nextjs.org/) es una popular y un framework para React.
+
+Next.js utiliza React para renderizar tu sitio web. Astro es más flexible: eres libre de crear un componente UI en cualquier librería popular (React, Preact, Vue, Svelte, Solid, entre otros) o puedes crear un componente de Astro con una sintaxis parecida a HTML, que es similar a HTML + JSX.
+
+Tanto Next.js como Astro, son frameworks para crear sitios web. Nesxt.js funciona mejor en sitios web altamente dinámicos (como tableros y bandejas de entradas); mientras que Astro funciona mejor con sitios altamente estáticos (como contenido web y sitios de comercio electrónico).
+
+Next.js soporta tanto Static Site Generation (SSG) como Server-Side Rendering (SSR). Hoy en día, Astro tan sólo soporta Static Site Generation (SSG).
+
+#### Comparando el Rendimiento de Gatsby vs. Astro
+
+En la mayoría de casos, los sitios de Astro cargarán mucho más rápido que los sitios de Next.js. Esto pasa porque Astro automáticamente quita el código Javascript innecesario de la página, cargando sólo los componentes individuales que se necesiten. Esta característica se llama [hidratación parcial](/es/core-concepts/component-hydration).
+
+Next.js no soporta hidratación parcial, en su lugar hace que el usuario cargue e hidrate la página completa en el navegador, incluso si la mayoría del contenido de la página es estático. Esto crea una carga de página más lenta y un rendimiento inferior para tu sitio web. Next.js ofrece un [ soporte experimental](https://piccalil.li/blog/new-year-new-website/#heading-no-client-side-react-code) para sitios completamente estáticos con cero Javascript. Sin embargo, en su página no hay planificación para realizar la hidratación parcial de componentes individuales. Por lo tanto, queda a tu criterio tomar la decisión de todo-o-nada en la interactividad de cada página.
+
+Next.js tiene un gran soporte para optimizar imágenes, lo que podría hacer que Next.js sea una buena opción para sitios web con muchas imágenes.
+
+#### Caso de Estudio: Documentando un sitio web
+
+[nextjs.org/docs](https://nextjs.org/docs/getting-started) es la página oficial de Next.js, está construida con Next.js. El sitio web ofrece una interfaz similar y un conjunto de características a comparar con la documentación oficial de Astro. Esto nos da una **_vista detallada y realista_** entre los dos generadores de sitios web.
+
+- **Puntaje de rendimiento de Next.js**: 59 de 100 [(ver detalles)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fnextjs.org%2Fdocs%2Fgetting-started)
+- **Puntaje de rendimiento de Astro**: 99 de 100 [(ver detalles)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+Una razón de peso por lo que se produce esta diferencia de rendimiento es que Astro tiene una menor carga de JavaScript: [nextjs.org/docs](https://nextjs.org/docs/getting-started) carga **463kb** de JavaScript en la primera carga de la página, mientras que [docs.astro.build](https://docs.astro.build/es/getting-started) carga **78.7kb** (en general, 83% menos de JavaScript) _después_ de la primera carga.
+
+## Nuxt vs. Astro
+
+[Nuxt](https://nuxtjs.org/) es una popular página web y un framework para Vue. Es similar a Next.js
+
+Nuxt utiliza Vue para renderizar tu sitio web. Astro es más flexible: eres libre de crear un componente UI en cualquier librería popular (React, Preact, Vue, Svelte, Solid, entre otros) o puedes crear un componente de Astro con una sintaxis parecida a HTML, que es similar a HTML + JSX.
+
+Tanto Nuxt como Astro, son frameworks para crear sitios web. Nuxt funciona mejor con sitios web altamente dinámicos (como tableros y bandejas de entradas); mientras que Astro funciona mejor con sitios altamente estáticos (como contenido web y sitios de comercio electrónico).
+
+Nuxt soporta tanto Static Site Generation (SSG) como Server-Side Rendering (SSR). Hoy en día, Astro tan sólo soporta Static Site Generation (SSG).
+
+#### Comparando el Rendimiento de Nuxt vs. Astro
+
+En la mayoría de casos, los sitios de Astro cargarán mucho más rápido que los sitios de Nuxt. Esto pasa porque Astro automáticamente quita el código Javascript innecesario de la página, cargando sólo los componentes individuales que se necesiten. Esta característica se llama [hidratación parcial](/es/core-concepts/component-hydration).
+
+Nuxt no soporta hidratación parcial, en su lugar hace que el usuario cargue e hidrate la página completa en el navegador, incluso si la mayoría del contenido de la página es estático. Esto crea una carga de página más lenta y un rendimiento inferior para tu sitio web. No hay forma de deshabilitar este comportamiento en Nuxt.
+
+Nuxt tiene un gran soporte para optimizar imágenes, lo que podría hacer que Nuxt sea una buena opción para sitios web con muchas imágenes.
+
+#### Caso de Estudio: Documentando un sitio web
+
+[nuxtjs.org/docs](https://nuxtjs.org/docs/2.x/get-started/installation) es la documentación oficial de Nuxt, construida con Gatsby. El sitio web ofrece una interfaz similar y un conjunto de características a comparar con la documentación oficial de Astro. Esto nos da una **_vista detallada y realista_** entre los dos generadores de sitios web.
+
+- **Puntaje de rendimiento de Nuxt**: 48 de 100 [(ver detalles)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fnuxtjs.org%2Fdocs%2F2.x%2Fget-started%2Finstallation)
+- **Puntaje de rendimiento de Astro**: 99 de 100 [(ver detalles)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+Una de las más grandes razones detrás de la diferencia en los rendimientos es que la carga de Javascript en Astro es el poco tiempo de carga de Javascropt en Astro: [nuxtjs.org/docs](https://nuxtjs.org/docs/2.x/get-started/installation) carga **469kb** de Javascript en la primera carga; mientras que [docs.astro.build](https://docs.astro.build/es/getting-started) loads **78.7kb** (en general, 83% menos de JavaScript) _después_ de la primera carga.
+
+## VuePress vs. Astro
+
+[VuePress](https://vuepress.vuejs.org/guide/) es un constructor de documentación de sitios web, desarrollado por los creadores de Vue.js. VuePress utiliza Vue.js para generar la interfaz de usuario de tu sitio web, mientras que Astro soporta React, Vue.js, Svelte, y plantillas HTML.
+
+VuePress fue diseñado para documentar sitios web y tiene funcionalidades y características propias que Astro no soporta por defecto. En su lugar, Astro ofrece características específicas de documentación mediante un tema oficial [`docs`](https://github.com/withastro/astro/tree/main/examples/docs), el cual puedes usar para tu sitio web. !Este sitio web fue construido usando ese tema!
+
+Actualmente, Evan You (creador de Vue.js) está trabajando en una nueva versión de Vuepress llamado [VitePress.](https://vitepress.vuejs.org/). Si quieres conocer una moderna alternativa a VuePress, [revisa este post de Evan](https://github.com/withastro/astro/issues/1159#issue-974035962) del porqué VitePress podría ser una mejor opción.
+
+#### Comparando el VuePress de Gatsby vs. Astro
+
+En la mayoría de casos, los sitios de Astro cargarán mucho más rápido que los sitios de VuePress. Esto pasa porque Astro automáticamente quita el código Javascript innecesario de la página, cargando sólo los componentes individuales que se necesiten. Esta característica se llama [hidratación parcial](/es/core-concepts/component-hydration).
+
+VuePress no soporta hidratación parcial, en su lugar hace que el usuario cargue e hidrate la página completa en el navegador, incluso si la mayoría del contenido de la página es estático. Esto crea una carga de página más lenta y un rendimiento inferior para tu sitio web. No hay forma de deshabilitar este comportamiento en VuePress.
+
+#### Caso de Estudio: Documentando un sitio web
+
+[vuepress.vuejs.org](https://vuepress.vuejs.org/guide/) es la documentación oficial de VuePress, construida con VuePress. El sitio web ofrece una interfaz similar y un conjunto de características a comparar con la documentación oficial de Astro. Esto nos da una **_vista detallada y realista_** entre los dos generadores de sitios web.
+
+- **Puntaje de rendimiento de Vuepress**: 63 de 100 [(ver detalles)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fvuepress.vuejs.org%2Fguide%2F)
+- **Puntaje de rendimiento de Astro**: 99 de 100 [(ver detalles)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+Una de las más grandes razones detrás de la diferencia en los rendimientos es que la carga de Javascript en Astro es el poco tiempo de carga de Javascropt en Astro: [vuepress.vuejs.org](https://vuepress.vuejs.org/guide/) carga **166kb** de Javascript en la primera carga; mientras que [docs.astro.build](https://docs.astro.build/es/getting-started) loads **78.7kb** (en general, 53% menos de JavaScript) _después_ de la primera carga.
+
+## Zola vs. Astro
+
+[Zola](https://www.getzola.org/) es un popular y rápido generador de sitios estáticos, desarrollado por Rust.
+
+Zola utiliza [Tera](https://tera.netlify.app/) para renderizar tu sitio web. Astro es más flexible: eres libre de crear un componente UI en cualquier librería popular (React, Preact, Vue, Svelte, Solid, entre otros) o puedes crear un componente de Astro con una sintaxis parecida a HTML, que es similar a HTML + JSX. Zola no soporta el uso de componentes modernos para plantillas HTML.
+
+#### Comparando el Rendimiento de Gatsby vs. Astro
+
+Conceptualmente, Zola está alineado con el enfoque de Astro sobre "el uso mínimo de Javascript en el lado del cliente". Tanto Zola y Astro ofrecen un rendimiento similar, un uso extremadamente bajo de Javascript por defecto.
+
+Astro ofrece soporte para construir, empaquetar y minimizar JavaScript. Zola requiere usar otra herramienta de construcción como Webpack para empaquetar y procesar JavaScript. Astro automáticamente quita el código Javascript innecesario de la página, cargando sólo los componentes individuales que se necesiten. Esta característica se llama [hidratación parcial](/es/core-concepts/component-hydration). Mientras que Zola puedes hacerlo por ti mismo, Astro lo ofrece incorporado por defecto.
diff --git a/smoke/docs-main/src/pages/es/core-concepts/astro-components.md b/smoke/docs-main/src/pages/es/core-concepts/astro-components.md
new file mode 100644
index 000000000..759d01e85
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/core-concepts/astro-components.md
@@ -0,0 +1,378 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Componentes de Astro
+---
+
+Los **componentes de Astro** (archivos que terminan con `.astro`) son la base de las plantillas del lado del servidor en Astro. Piensa en la sintaxis del componente Astro como HTML mejorado con JavaScript.
+
+Aprender una nueva sintaxis puede ser intimidante, por lo que cuidadosamente diseñamos la sintaxis del componente Astro para que los desarrolladores web se familizarizen lo más pronto posible. En gran medida se basa en patrones que probablemente ya conozcas: componentes, portada, propiedades y expresiones JSX. Estamos seguros de que esta guía te permitirá escribir componentes de Astro en poco tiempo, especialmente si ya estás familiarizado con HTML y JavaScript.
+
+## Visión general de la sintaxis
+
+Un único archivo `.astro` representa un solo componente Astro en tu proyecto. Este patrón se conoce como **Componente de archivo único (SFC, del inglés Single-File Component)**. Tanto Svelte (`.svelte`) como Vue (`.vue`) también siguen este patrón.
+
+A continuación se muestra un recorrido por las diferentes piezas y características de la sintaxis del componente Astro. Puedes leerlo de principio a fin o saltar entre secciones.
+
+### Plantilla HTML
+
+La sintaxis del componente Astro es un superconjunto de HTML. **Si conoces HTML, ya sabes lo suficiente como para escribir tu primer componente Astro.**
+
+Por ejemplo, este archivo de tres líneas es un componente Astro válido:
+
+```html
+<!-- Ejemplo1.astro - ¡El HTML estático es un componente Astro válido! -->
+<div class="ejemplo-1">
+ <h1>¡Hola mundo!</h1>
+</div>
+```
+
+Un componente Astro representa un fragmento de HTML en tu proyecto. Puede ser un componente reutilizable o una página completa de HTML que incluya elementos `<html>`, `<head>` y `<body>`. Consulta nuestra guía sobre [Páginas de Astro](/es/core-concepts/astro-pages) para aprender a crear tu primera página HTML completa con Astro.
+
+**Cada componente de Astro debe incluir una plantilla HTML.** Aunque puede mejorar su componente de varias maneras (ver más abajo), al fin y al cabo es la plantilla HTML la que dicta cómo se verá tu componente Astro renderizado.
+
+### Estilos CSS
+
+Las reglas CSS dentro de una etiqueta `<style>` se ajustan automáticamente a ese componente. Eso significa que puedes reutilizar los nombres de las clases en varios componentes, sin preocuparse por los conflictos. Los estilos se extraen y optimizan automáticamente en la compilación final para que no tengas que preocuparte por la carga de estilos.
+
+Para obtener los mejores resultados, solo debes tener una etiqueta `<style>` por componente Astro. Esto no es necesariamente una limitación, pero a menudo dará como resultado un CSS mejor optimizado en su compilación final. Cuando trabajas con páginas, la etiqueta `<style>` puede ir anidada dentro de tu página `<head>`. Para los componentes independientes, la etiqueta `<style>` puede ir al nivel superior de su plantilla.
+
+```html
+<!-- Ejemplo de CSS del componente Astro -->
+<style>
+ .circle {
+ background-color: red;
+ border-radius: 999px;
+ height: 50px;
+ width: 50px;
+ }
+</style>
+<div class="circle"></div>
+```
+
+```html
+<!-- Ejemplo de CSS de Astro Page -->
+<html>
+ <head>
+ <style>
+ ...;
+ </style>
+ </head>
+ <body>
+ ...
+ </body>
+</html>
+```
+
+El uso de `<style global>` omitirá el alcance automático para cada regla CSS en el bloque `<style>`. Esta trampilla de escape debe evitarse si es posible, pero puede ser útil si, por ejemplo, necesitas modificar el estilo de los elementos HTML agregados por una librería externa.
+
+Sass (una alternativa a CSS) está también disponible mediante `<style lang="scss">`.
+
+📚 Lee nuestra guía completa sobre [Estilo de los componentes](/es/guides/styling) para obtener más información.
+
+### Script preliminar
+
+Para construir componentes dinámicos, presentamos la idea de un script preliminar del componente. [Frontmatter](https://jekyllrb.com/docs/front-matter/) es un patrón común en Markdown, donde algunos config/metadata están contenidos dentro de una valla de código (`---`) en la parte superior del archivo . Astro hace algo similar, pero con soporte completo para JavaScript y TypeScript en sus componentes.
+
+Recuerda que Astro es un lenguaje de plantillas del lado del servidor, por lo que el script de su componente se ejecutará durante la compilación, pero solo el HTML se representará en el navegador. Para enviar JavaScript al navegador, puedes usar una etiqueta `<script>` en su plantilla HTML o [convertir tu componente para usar un framework de frontend](/es/core-concepts/component-hydration) como React, Svelte, Vue, etc.
+
+```astro
+---
+// Todo lo que esté dentro de la valla de código `---` es el script de tu componente.
+// Este código JavaScript se ejecuta en tiempo de compilación.
+// Consulte a continuación para obtener más información sobre lo que puede hacer.
+console.log('Esto se ejecuta en el momento de la compilación, es visible en la salida CLI');
+// Consejo: ¡TypeScript también es compatible de forma inmediata!
+const thisWorks: number = 42;
+---
+<div class="ejemplo-1">
+ <h1>¡Hola mundo!</h1>
+</div>
+```
+
+### Importaciones de componentes
+
+Un componente Astro puede reutilizar otros componentes de Astro dentro de su plantilla HTML. Esto se convierte en la base de nuestro sistema de componentes: crea nuevos componentes y luego reutilízalos en todo tu proyecto.
+
+Para utilizar un componente Astro en tu plantilla, primero debes importarlo en el script preliminar del componente. Un componente Astro es siempre la importación predeterminada del archivo.
+
+Una vez importado, puedes usarlo como cualquier otro elemento HTML en tu plantilla. Ten en cuenta que un componente de Astro **DEBE** comenzar con una letra mayúscula. Astro usará esto para distinguir entre elementos HTML nativos (`from`,` input`, etc.) y tus componentes de Astro personalizados.
+
+```astro
+---
+// Importa tus componentes en tu script del componente
+import AlgunComponente from './AlgunComponente.astro';
+---
+<!-- ... ¡luego utilízalos en su HTML! -->
+<div>
+ <AlgunComponente />
+</div>
+```
+
+📚 También puedes importar y usar componentes de otros frameworks frontend como React, Svelte y Vue. Lee nuestra guía sobre [Hidratación de componentes](/es/core-concepts/component-hydration) para obtener más información.
+
+### Expresiones JSX dinámicas
+
+En lugar de inventar nuestra propia sintaxis personalizada para la creación de plantillas dinámicas, te brindamos acceso directo a los valores de JavaScript dentro de su HTML, utilizando algo que se parece a [JSX](https://reactjs.org/docs/introducing-jsx.html) .
+
+Los componentes de Astro pueden definir variables locales dentro del script de Frontmatter. Todas las variables de secuencia de comandos están disponibles automáticamente en la plantilla HTML a continuación.
+
+#### Dynamic Values
+
+```astro
+---
+const nombre = "Tu nombre aquí";
+---
+<div>
+ <h1>¡Hola {nombre}!</h1>
+</div>
+```
+
+#### Atributos dinámicos
+
+```astro
+---
+const nombre = "Tu nombre aquí";
+---
+<div>
+ <div data-nombre={nombre}>Se admiten expresiones de atributo</div>
+ <div data-consejo={`Utilice cadenas de plantilla JS para mezclar ${"variables"}.`}>¡Qué bueno!</div>
+</div>
+```
+
+#### HTML Dinámico
+
+```astro
+---
+const elementos = ["Perro", "Gato", "Ornitorrinco"];
+---
+<ul>
+ {elementos.map((elemento) => (
+ <li>{elemento}</li>
+ ))}
+</ul>
+```
+
+### Propiedades del Componente
+
+Un componente Astro puede definir y aceptar propiedades. Las propiedades están disponibles en el global `Astro.props` en su script preliminar.
+
+```astro
+---
+// Ejemplo: <AlgunComponente saludo="(Opcional) Hola" name="Nombre requerido" />
+const { saludo = 'Hola', nombre } = Astro.props;
+---
+<div>
+ <h1>¡{saludo}, {nombre}!</h1>
+</div>
+```
+
+Puedes definir tus propiedades con TypeScript exportando un `Props` de tipo _interface_.
+
+> _**En el futuri**_, Astro recogerá automáticamente cualquier interfaz de `Props` exportada y dará advertencias/errores de tipo para su proyecto.
+
+```astro
+---
+// Ejemplo: <AlgunComponente /> (CUIDADO: propiedad "nombre" obligatoria)
+export interface Props {
+ nombre: string;
+ saludo?: string;
+}
+const { saludo = 'Hola', nombre } = Astro.props;
+---
+<div>
+ <h1>¡{saludo}, {nombre}!</h1>
+</div>
+```
+
+Luego puede pasar las propiedades del componente de esta manera:
+
+```astro
+---
+// AlgunOtroCompoennte.astro
+import AlgunComponente from "./AlgunComponente.astro";
+let nombreDePila = "mundo";
+---
+<AlgunComponente nombre={nombreDePila}/>
+```
+
+### Ranuras
+
+Los archivos `.astro` utilizan la etiqueta [`<slot>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot) para habilitar la composición de componentes. Viniendo de React o Preact, este es el mismo concepto que `hijos`. Puedes pensar en el elemento `<slot>` como un marcador de posición para el marcado que se pasará desde fuera del componente.
+
+```astro
+<!-- Example: MiComponente.astro -->
+<div id="mi-componente">
+ <slot /> <!-- los hijos irán aquí -->
+</div>
+
+<!-- Usage -->
+<MiComponente>
+ <h1>¡Hola mundo!</h1>
+</MiComponente>
+```
+
+Ten en cuenta que si la etiqueta `<slot>` no se usa en la plantilla HTML, los elementos secundarios pasados al componente no se procesarán.
+
+Las ranuras se vuelven aún más poderosas cuando se utilizan **ranuras con nombre **. En lugar de un solo elemento `<slot>` que representa a _todos_ los hijos, las ranuras con nombre te permiten especificar varios lugares donde los hijos deben ser colocados.
+
+> **Nora:** El atributo `slot` attribute no está restringido a HTML simple, ¡los componentes también pueden usar `slot`!
+
+```astro
+<!-- Ejemplo: MiComponente.astro -->
+<div id="mi-componente">
+ <header>
+ <!-- hijo con el atributo `slot="cabecera"` irá aquí -->
+ <slot name="cabecera" />
+ </header>
+ <main>
+ <!-- hijo sin atributo `slot` (or con el `slot="default"`) irá aquí -->
+ <slot />
+ </main>
+ <footer>
+ <!-- hijo con el atributo `slot="pie"` irá aquí -->
+ <slot name="pie" />
+ </footer>
+</div>
+
+<!-- Usage -->
+<MiComponente>
+ <h1 slot="cabecera">¡Hola mundo!</h1>
+ <p>Lorem ipsum ...</p>
+ <FooterComponent slot="pie" />
+</MiComponente>
+```
+
+Las ranuras también pueden devolver **contenido de respaldo**. Cuando no hay hijos pasados a un `<slot>` que coincidan, un elemento `<slot>` renderizará sus propios hijos de marcador de posición.
+
+Slots can also render **fallback content**. When there are no matching children passed to a `<slot>`, a `<slot>` element will render its own children.
+
+```astro
+<!-- MiComponente.astro -->
+<div id="mi-componente">
+ <slot>
+ <h1>¡Me renderizaré cuando esta ranura no tenga hijos!</h1>
+ </slot>
+</div>
+
+<!-- Usage -->
+<MiComponente />
+```
+
+### Fragmentos y elementos múltiples
+
+Una plantilla de componente Astro puede representar tantos elementos de nivel superior como desees. A diferencia de otros frameworks de componentes de interfaz de usuario, no es necesario que envuelvas todo en un único `<div>` si prefieres no hacerlo.
+
+```html
+<!-- Un componente Astro puede contener varios elementos HTML de nivel superior: -->
+<div id="a" />
+<div id="b" />
+<div id="c" />
+```
+
+Sin embargo, cuando trabajes dentro de una expresión JSX, debes envolver varios elementos dentro de un **Fragmento**. Los fragmentos te permiten renderizar un conjunto de elementos sin agregar nodos adicionales al DOM. Esto es necesario en las expresiones JSX debido a una limitación de JavaScript: nunca puede "devolver" más de una cosa en una función o expresión de JavaScript. El uso de un fragmento resuelve este problema.
+
+Un Fragmento debe abrirse con `<>` y cerrarse con `</>`. No se preocupe si olvida esto, el compilador de Astro le advertirá que debe agregar uno.
+
+```astro
+---
+const elementos = ["Perro", "Gato", "Ornitorrinco"];
+---
+<ul>
+ {elementos.map((elemento) => (
+ <>
+ <li>{elemento} rojo</li>
+ <li>{elemento} azul</li>
+ <li>{elemento} verde</li>
+ </>
+ ))}
+</ul>
+```
+
+### Scripts izados
+
+Por defecto, Astro no hace ninguna suposición sobre cómo deseas que se sirvan los scripts, por lo que si agregas una etiqueta `<script>` en una página o un componente, se quedará sola.
+
+Sin embargo, si deseas que todos tus scripts se extraigan de los componentes y se muevan a la parte superior de la página, y luego se agrupen en producción, puedes lograrlo con scripts izados.
+
+Un **script izado** se ve así:
+
+```astro
+<script hoist>
+ // Una secuencia de comandos en línea
+</script>
+```
+
+O puede vincularse a un archivo JavaScript externo:
+
+```astro
+<script src={Astro.resolve('./mi-componente.js')} hoist></script>
+```
+
+Un script elevado puede estar dentro de una página o un componente, y no importa cuántas veces se use el componente, el script solo se agregará una vez:
+
+```astro
+---
+import TwitterTimeline from '../components/TwitterTimeline.astro';
+---
+
+<-- The script will only be injected into the head once. -->
+<TwitterTimeline />
+<TwitterTimeline />
+<TwitterTimeline />
+```
+
+## Comparando `.astro` versus` .jsx`
+
+Los archivos `.astro` puede terminar pareciendo muy similares a los archivos `.jsx`, pero hay algunas diferencias claves. Aquí hay una comparación entre los dos formatos.
+
+| Feature | Astro | JSX |
+| ------------------------------------ | ------------------------------------------ | -------------------------------------------------------------- |
+| Extensión de archivo | `.astro` | `.jsx` or `.tsx` |
+| Componentes definidos por el usuario | `<Capitalized>` | `<Capitalized>` |
+| Sintaxis de expresiones | `{}` | `{}` |
+| Difundir atributos | `{...props}` | `{...props}` |
+| Atributos booleanos | `autocomplete` === `autocomplete={true}` | `autocomplete` === `autocomplete={true}` |
+| Funciones en línea | `{items.map(item => <li>{item}</li>)}` | `{items.map(item => <li>{item}</li>)}` |
+| Soporte IDE | WIP - [VS Code][code-ext] | Fenomenal |
+| Requiere importación JS | No | Sí, `jsxPragma` (`React` or `h`) debe estar dentro del alcance |
+| Fragmentos | Automatic top-level, `<>` inside functions | Envolver con `<Fragment>` or `<>` |
+| Múltiples frameworks por archivo | Yes | No |
+| Modificando `<head>` | Just use `<head>` | Por-framework (`<Head>`, `<svelte:head>`, etc) |
+| Estilo de comentario | `<!-- HTML -->` | `{/* JavaScript */}` |
+| Caracteres especiales | `&nbsp;` | `{'\xa0'}` or `{String.fromCharCode(160)}` |
+| Atributos | `dash-case` | `camelCase` |
+
+## Resolución de URL
+
+Es importante tener en cuenta que Astro **no** transformará las referencias HTML por ti. Por ejemplo, considera una etiqueta `<img>` con un atributo relativo `src` dentro de `src/pages/about.astro`:
+
+```html
+<!-- ❌ Incorrecto: Intentará cargar `/about/thumbnail.png` -->
+<img src="./thumbnail.png" />
+```
+
+Dado que `src/pages/about.astro` se compilará en `/about/index.html`, es posible que no haya esperado que la imagen viva en `/about/thumbnail.png`. Entonces, para solucionar este problema, elige una de las dos opciones:
+
+#### Opción 1: URL absolutas
+
+```html
+<!-- ✅ Correcto: referencia a public/thumbnail.png -->
+<img src="/thumbnail.png" />
+```
+
+El enfoque recomendado es colocar archivos dentro de `public/*`. Esto hace referencia a un archivo en `public/thumbnail.png`, que se resolverá en `/thumbnail.png` en la compilación final (ya que `public/` termina en `/`).
+
+#### Opción 2: Referencias de importación de activos
+
+```astro
+---
+// ✅ Correcto: referencia a src/thumbnail.png
+import thumbnailSrc from './thumbnail.png';
+---
+
+<img src={thumbnailSrc} />
+```
+
+Si prefieres organizar los activos junto con los componentes de Astro, puedes importar el archivo en JavaScript dentro del script del componente. Esto funciona según lo previsto, pero hace que sea más difícil hacer referencia a `thumbnail.png` en otras partes de su aplicación, ya que su URL final no es fácilmente predecible (a diferencia de los recursos en ` public/*`, donde se garantiza que la URL final nunca cambia).
+
+[code-ext]: https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode
diff --git a/smoke/docs-main/src/pages/es/core-concepts/astro-pages.md b/smoke/docs-main/src/pages/es/core-concepts/astro-pages.md
new file mode 100644
index 000000000..881ca6010
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/core-concepts/astro-pages.md
@@ -0,0 +1,66 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Páginas
+---
+
+**Páginas** son un tipo especial de [Componente de Astro](/es/core-concepts/astro-components) que manejan el enrutamiento, la carga de datos y la creación de plantillas para cada página de su sitio web. Puedes pensar en ellos como cualquier otro componente de Astro, solo que con responsabilidades adicionales.
+
+Astro también admite Markdown para páginas con mucho contenido, como publicaciones de blogs y documentación. Consulta [Contenido de Markdown](/es/guides/markdown-content) para obtener más información sobre cómo escribir páginas con Markdown.
+
+## Enrutamiento basado en archivos
+
+Astro usa Páginas para hacer algo llamado **enrutamiento basado en archivos.** Cada archivo en tu directorio `src/pages` se convierte en una página en tu sitio, usando el nombre del archivo para decidir la ruta final.
+
+Los Componentes de Astro (`.astro`) y archivos Markdown (`.md`) son los únicos formatos admitidos para las páginas. No se admiten otros tipos de páginas (como un componente React `.jsx`), pero puedes usar cualquier cosa como componente de la interfaz de usuario dentro de una página `.astro` para lograr un resultado similar.
+
+```
+src/pages/index.astro -> mysite.com/
+src/pages/about.astro -> mysite.com/about
+src/pages/about/index.astro -> mysite.com/about
+src/pages/about/me.astro -> mysite.com/about/me
+src/pages/posts/1.md -> mysite.com/posts/1
+```
+
+## Plantillas de página
+
+Todos los componentes de Astro son responsables de devolver HTML. Las páginas de Astro también devuelven HTML, pero tienen la responsabilidad única de devolver una respuesta de página completa `<html> ... </html>`, incluyendo `<head>` ([MDN <span class = "sr-only">- head</span>](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head)) y `<body>` ([MDN <span class = "sr-only ">- body</span>](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/body)).
+
+`<! doctype html>` es opcional y se agregará automáticamente.
+
+```astro
+---
+// Ejemplo: esqueleto de página HTML
+---
+<!doctype html>
+<html>
+ <head>
+ <title>Título del documento</title>
+ </head>
+ <body>
+ <h1>¡Hola mundo!</h1>
+ </body>
+</html>
+```
+
+## Carga de datos
+
+Las páginas de Astro pueden obtener datos para ayudar a generar tus páginas. Astro proporciona dos herramientas diferentes a las páginas para ayudarte a hacer esto: **fetch()** y **await de alto nivel**.
+
+📚 Lee nuestra [guía completa sobre la obtención de datos](/es/guides/data-fetching) para obtener más información.
+
+```astro
+---
+// Ejemplo: los scripts del componente de Astro se ejecutan en el momento de la compilación
+const response = await fetch('http://example.com/movies.json');
+const data = await response.json();
+console.log(data);
+---
+<!-- Envía el resultado a la página -->
+<div>{JSON.stringify(data)}</div>
+```
+
+## Página de error 404 personalizada
+
+Para una página de error 404 personalizada, crea un archivo `404.astro` en `/src/pages`. Eso genera una página `404.html`. La mayoría de los [servicios de despliegue](/es/guides/deploy) lo encontrarán y lo utilizarán.
+
+Esto es especial y diferente al comportamiento predeterminado de construir `page.astro` (o `page/index.astro`) a `page/index.html`.
diff --git a/smoke/docs-main/src/pages/es/core-concepts/component-hydration.md b/smoke/docs-main/src/pages/es/core-concepts/component-hydration.md
new file mode 100644
index 000000000..e1c7cfe26
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/core-concepts/component-hydration.md
@@ -0,0 +1,112 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Hidratación Parcial en Astro
+---
+
+**Astro genera todos los sitios web sin JavaScript en el lado del cliente, de forma predeterminada.** Utiliza cualquier componente de interfaz de usuario que desee (React, Svelte, Vue, etc.) y Astro lo representará automáticamente en HTML en el momento de la compilación y elimina todo el JavaScript. Esto mantiene todos los sitios rápidos de forma predeterminada.
+
+Pero a veces, se requiere JavaScript del lado del cliente. Esta guía muestra cómo funcionan los componentes interactivos en Astro mediante una técnica llamada hidratación parcial.
+
+```astro
+---
+// Ejemplo: Importar y luego usar un componente React.
+// De forma predeterminada, Astro representa esto en HTML y CSS durante
+// su compilación, sin JavaScript del lado del cliente.
+// (¿Necesitas JavaScript del lado del cliente? Sigue leyendo...)
+import MyReactComponent from '../components/MyReactComponent.jsx';
+---
+<!-- 100% HTML, Zero JavaScript! -->
+<MyReactComponent />
+```
+
+## Concepto: Hidratación parcial
+
+Hay muchos casos en los que necesita un componente de UI interactivo para ejecutarse en el navegador:
+
+- Un carrusel de imágenes
+- Una barra de búsqueda de autocompletar
+- Un botón de apertura/cierre de la barra lateral móvil
+- Un botón "Comprar ahora"
+
+En Astro, depende de ti, como desarrollador, "habilitar" explícitamente cualquier componente de la página que deba ejecutarse en el navegador. Astro puede usar esta información para saber exactamente qué JavaScript se necesita y solo hidratar exactamente lo que se necesita en la página. Esta técnica se conoce como hidratación parcial.
+
+**Hidratación parcial**, el acto de solo hidratar los componentes individuales que requieren JavaScript y dejar el resto de su sitio como HTML estático, puede parecer relativamente sencillo. ¡Debería! Los sitios web se han construido de esta manera durante décadas. Recientemente, las aplicaciones de una sola página (SPA) introdujeron la idea de que todo su sitio web está escrito en JavaScript y compilado/renderizado por cada usuario en el navegador.
+
+\_Nota: La hidratación parcial a veces se denomina "mejora progresiva" o "hidratación progresiva". Si bien hay ligeros matices entre los términos, para nuestros propósitos, puede pensar en todos ellos como sinónimos del mismo concepto.
+
+**La hidratación parcial es el secreto de la historia de rendimiento rápido por defecto de Astro.** Next.js, Gatsby y otros marcos de JavaScript no pueden admitir la hidratación parcial porque imaginan todo su sitio web/página como una sola aplicación de JavaScript.
+
+## Concepto: Arquitectura de la isla
+
+**La arquitectura de la isla** es la idea de utilizar la hidratación parcial para construir sitios web completos. La arquitectura de la isla es una alternativa a la idea popular de construir su sitio web en un paquete de JavaScript del lado del cliente que debe enviarse al usuario.
+
+> En un modelo de "islas", la representación del servidor no es una optimización complementaria destinada a mejorar el SEO o la UX. En cambio, es una parte fundamental de cómo se envían las páginas al navegador. El HTML devuelto en respuesta a la navegación contiene una representación significativa e inmediatamente renderizable del contenido solicitado por el usuario.
+> <br/> -- [Jason Miller](https://jasonformat.com/islands-architecture/)
+
+Además de los obvios beneficios de rendimiento de enviar menos JavaScript al navegador, existen dos beneficios clave para la arquitectura de la isla:
+
+- **Los componentes se cargan individualmente.** Un componente liviano (como una barra lateral) se cargará y renderizará rápidamente sin ser bloqueado por los componentes más pesados ​​de la página.
+- **Los componentes se procesan de forma aislada.** Cada parte de la página es una unidad aislada y un problema de rendimiento en una unidad no afectará directamente a las demás.
+
+![diagram](https://res.cloudinary.com/wedding-website/image/upload/v1596766231/islands-architecture-1.png)
+
+## Hidrata los componentes interactivos
+
+Astro procesa todos los componentes en el servidor **en el momento de la compilación**, a menos que se use [client:only](#mycomponent-clientonly-). Para hidratar componentes en el cliente **en tiempo de ejecución**, puede usar cualquiera de las siguientes directivas `client:*`. Una directiva es un atributo de componente (siempre con un `:`) que le dice a Astro cómo debe renderizarse tu componente.
+
+```astro
+---
+// Ejemplo: hidratación de un componente React en el navegador.
+import MyReactComponent from '../components/MyReactComponent.jsx';
+---
+<!-- "client:visible" significa que el componente no cargará ningún Javascript
+ del lado del cliente hasta que sea visible en el navegador del usuario. -->
+<MyReactComponent client:visible />
+```
+
+### `<MyComponent client:load />`
+
+Hidratar el componente al cargar la página.
+
+### `<MyComponent client:idle />`
+
+Hidrata el componente tan pronto como el hilo principal esté libre (usa [requestIdleCallback()] [mdn-ric]).
+
+### `<MyComponent client:visible />`
+
+Hidrata el componente tan pronto como el elemento entre en la ventana gráfica (usa [IntersectionObserver] [mdn-io]). Útil para el contenido que se encuentra más abajo en la página.
+
+### `<MyComponent client:media={QUERY} />`
+
+Hidrata el componente tan pronto como el navegador coincida con la consulta de medios dada (usa [matchMedia] [mdn-mm]). Útil para alternar la barra lateral u otros elementos que solo deberían mostrarse en dispositivos móviles o de escritorio.
+
+### `<MyComponent client:only />`
+
+Hidrata el componente en la carga de la página, similar a `client:load`. El componente se **omitirá** en el momento de la compilación, lo que resulta útil para los componentes que dependen por completo de las API del lado del cliente. Es mejor evitar esto a menos que sea absolutamente necesario; en la mayoría de los casos, es mejor representar el contenido del marcador de posición en el servidor y retrasar las llamadas a la API del navegador hasta que el componente se hidrate en el navegador.
+
+Si se incluye más de un renderizador en Astro [config](/es/reference/configuration-reference), `client:only` necesita una pista para saber qué renderizador usar para el componente. Por ejemplo, `client:only="react"` aseguraría que el componente esté hidratado en el navegador con el renderizador React. Para los renderizadores personalizados no proporcionados por `@astrojs`, use el nombre completo del renderizador proporcionado en su configuración de Astro, es decir,`<client: only="my-custom-renderer" />`.
+
+## ¿Puedo hidratar los componentes de Astro?
+
+Los [componentes de Astro](./astro-components)(archivos `.astro`) son componentes con plantillas de solo HTML sin ejecución del lado del cliente. Si intentas hidratar un componente Astro con un modificador `client:`, obtendrás un error.
+
+Para hacer que su componente Astro sea interactivo, necesitará convertirlo al framework de su elección: React, Svelte, Vue, etc. Si no tienes preferencias, recomendamos React o Preact ya que son más similares a la sintaxis de Astro.
+
+Alternativamente, puedes agregar una etiqueta `<script>` a tu plantilla HTML del componente de Astro y enviar JavaScript al navegador de esa manera. Aunque esto está bien para las cosas simples, recomendamos un framework de frontend para componentes interactivos más complejos.
+
+```astro
+---
+// Ejemplo: uso de Astro con etiquetas de secuencia de comandos
+---
+<h1>No clickeado</h1>
+<button>Haz click para cambiar el título</button>
+<script>
+document.querySelector("button").addEventListener("click",() => {
+ document.querySelector("h1").innerText = "clickeado"
+})
+</script>
+```
+
+[mdn-io]: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API
+[mdn-ric]: https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback
+[mdn-mm]: https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia
diff --git a/smoke/docs-main/src/pages/es/core-concepts/layouts.md b/smoke/docs-main/src/pages/es/core-concepts/layouts.md
new file mode 100644
index 000000000..572d6b130
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/core-concepts/layouts.md
@@ -0,0 +1,154 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Maquetas
+---
+
+**Las maquetas** son un tipo especial de [Componente](/es/core-concepts/astro-components) que te ayudan a compartir y reutilizar maquetas de página comunes dentro de tu proyecto.
+
+Las maquetas son como cualquier otro componente de Astro reutilizable. No hay una nueva sintaxis o API que aprender. Sin embargo, las maquetas de página reutilizables son un patrón tan común en el desarrollo web que creamos esta guía para ayudarte a usarlos.
+
+## Uso
+
+Las maquetas de Astro soportan propiedades, slots y todas las otras características de los componentes de Astro. Las maquetas son solo componentes normales, ¡después de todo!
+
+A diferencia de otros componentes, las maquetas suelen contener la página completa `<html>`, `<head>` y `<body>` (a menudo denominado **cáscara de la página**).
+
+Es un patrón común colocar todos los componentes de su diseño en un solo directorio `src/layouts`.
+
+## Example
+
+```astro
+---
+// src/layouts/BaseLayout.astro
+const {title} = Astro.props;
+---
+<html>
+ <head>
+ <title>Ejemplo de maqueta: {title}</title>
+ </head>
+ <body>
+ <!-- Añade una barra de navegación a cada página. -->
+ <nav>
+ <a href="#">Inicio</a>
+ <a href="#">Artículos</a>
+ <a href="#">Contacto</a>
+ </nav>
+ <!-- ranura: el contenido de su página se inyectará aquí. -->
+ <slot />
+ </body>
+</html>
+```
+
+📚 El elemento `<slot />` permite que los componentes de Astro definan dónde deben ir los elementos secundarios (pasados a la maqueta). Obtén más información sobre cómo funciona `<slot />` en nuestra [Guía de componentes de Astro](/es/core-concepts/astro-components).
+
+Una vez que tengas tu primera maqueta, puedes usarla como lo harías con cualquier otro componente de tu página. Recuerda que tu maqueta contiene tu página `<html>`, `<head>` y `<body>`. Solo necesitas proporcionar el contenido de la página personalizada.
+
+```astro
+---
+// src/pages/index.astro
+import BaseLayout from '../layouts/BaseLayout.astro'
+---
+<BaseLayout title="Inicio">
+ <h1>Hola, ¡mundo!</h1>
+ <p>Este es el contenido de mi página. Estará anidado dentro de una maqueta.</p>
+</BaseLayout>
+```
+
+## Maquetas anidadas
+
+Puedes anidar maquetas cuando desees crear tipos de página más específicos sin copiar y pegar. Es común en Astro tener un `BaseLayout` genérico y luego muchos más maquetas específicas (`PostLayout`, `ProductLayout`, etc.) que se reutilizan y construyen sobre él.
+
+```astro
+---
+// src/layouts/PostLayout.astro
+import BaseLayout from '../layouts/BaseLayout.astro'
+const {titulo, author} = Astro.props;
+---
+<!-- Este maqueta reutiliza BaseLayout (ver el ejemplo anterior): -->
+<BaseLayout titulo={titulo}>
+ <!-- Añade contenido nuevo específico de publicación a cada página. -->
+ <div>Autor del artículo: {author}</div>
+ <!-- ranura: el contenido de su página se inyectará aquí. -->
+ <slot />
+</BaseLayout>
+```
+
+## Composición de maquetas
+
+A veces, necesitas un control más granular sobre tu página. Por ejemplo, es posible que desees agregar SEO o etiquetas `meta` sociales en algunas páginas, pero no en otras. Puedes implementar esto con un accesorio en su maqueta (`<BaseLayout addMeta={true}...`) pero en algún momento puede ser más fácil componer tus maquetas sin anidar.
+
+En lugar de definir toda la página `<html>` como un diseño grande, puedes definir los contenidos de `head` y `body` como componentes separados más pequeños. Esto te permite componer varias maquetas juntas de formas únicas en cada página.
+
+```astro
+---
+// src/layouts/BaseHead.astro
+const {title, description} = Astro.props;
+---
+<meta charset="UTF-8">
+<title>{title}</title>
+<meta name="description" content={description}>
+<link rel="preconnect" href="https://fonts.gstatic.com">
+<link href="https://fonts.googleapis.com/css2?family=Spectral:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet">
+```
+
+Observa cómo esta maqueta no incluye la carcasa de su página, y solo incluye algunos elementos genéricos que deberían ir en tu `<head>`. Esto te permite combinar varios componentes de maqueta juntos con más control sobre la estructura general de la página.
+
+```astro
+---
+// src/pages/index.astro
+import BaseHead from '../layouts/BaseHead.astro';
+import OpenGraphMeta from '../layouts/OpenGraphMeta.astro';
+---
+<html>
+ <head>
+ <!-- Ahora, tienes control total sobre el encabezado, por página. -->
+ <BaseHead title="Page Title" description="Page Description" />
+ <OpenGraphMeta />
+ <!-- Incluso puedes agregar elementos personalizados y únicos según sea necesario. -->
+ <link rel="alternate" type="application/rss+xml" href="/feed/posts.xml">
+ </head>
+ <body>
+ <!-- ... -->
+ </body>
+</html>
+```
+
+La única desventaja de este enfoque es que deberás definir los elementos `<html>`, `<head>` y `<body>` en cada página tú mismo. Esto es necesario para construir la página porque los componentes de maqueta ya no contienen la carcasa completa de la página.
+
+## Maquetas Markdown
+
+Las maquetas son esenciales para los archivos Markdown. Los archivos de Markdown pueden declarar una maqueta en el texto preliminar del archivo. Cada archivo Markdown se procesará en HTML y luego se inyectará en la ubicación `<slot />` de la maqueta.
+
+```markdown
+---
+title: Publicación del blog
+layout: ../layouts/PostLayout.astro
+---
+
+Esta publicación de blog se **renderizará** dentro de la maqueta `<PostLayout />`.
+```
+
+Las páginas de Markdown siempre pasan una propiedad `content` a su maqueta, que es útil para obtener información sobre la página, el título, los metadatos, los encabezados de la tabla de contenido y más.
+
+```astro
+---
+// src/layouts/PostLayout.astro
+const { content } = Astro.props;
+---
+<html>
+ <head>
+ <title>{content.title}</title>
+ </head>
+ <body>
+ <h1>{content.title}</h1>
+ <h2>{content.description}</h2>
+ <img src={content.image} alt="">
+ <article>
+ <!-- slot: ¡El contenido de Markdown va aquí! -->
+ <slot />
+ </article>
+ </body>
+</html>
+```
+
+📚 Aprende más sobre el soporte de Markdown de Astro en nuestra [guía de Markdown](/es/guides/markdown-content).
diff --git a/smoke/docs-main/src/pages/es/core-concepts/project-structure.md b/smoke/docs-main/src/pages/es/core-concepts/project-structure.md
new file mode 100644
index 000000000..2ba1e6b31
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/core-concepts/project-structure.md
@@ -0,0 +1,57 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Estructura del proyecto
+---
+
+Astro incluye un diseño de carpeta dogmático para tu proyecto. Cada proyecto de Astro debe incluir estos directorios y archivos:
+
+- `src/*` - El código fuente de tu proyecto (componentes, páginas, etc.)
+- `public/*` - Tus activos sin código (tipografías, iconos, etc.)
+- `package.json` - Un manifiesto de proyecto.
+
+La forma más sencilla de configurar tu nuevo proyecto es con `npm init astro`. Consulta nuestra [Guía de instalación](/es/installation) para obtener un tutorial sobre cómo configurar tu proyecto automáticamente (con `npm init astro`) o manualmente.
+
+## Estructura del proyecto
+
+```
+├── src/
+│ ├── components/
+│ ├── layouts/
+│ └── pages/
+│ └── index.astro
+├── public/
+└── package.json
+```
+
+### `src/`
+
+La carpeta src es donde vive la mayor parte del código fuente de tu proyecto. Esto incluye:
+
+- [Components de Astro](/es/core-concepts/astro-components)
+- [Páginas](/es/core-concepts/astro-pages)
+- [Maquetas](/es/core-concepts/layouts)
+- [Componentes frontend JS](/es/core-concepts/component-hydration)
+- [Estilado (CSS, Sass)](/es/guides/styling)
+- [Marcado](/es/guides/markdown-content)
+
+Astro tiene un control total sobre cómo estos archivos se procesan, optimizan y empaquetan en la construcción final de tu sitio. Algunos archivos (como los componentes de Astro) nunca llegan directamente al navegador y, en cambio, se procesan en HTML. Otros archivos (como CSS) se envían al navegador, pero es posible que se incluyan con otros archivos CSS dependiendo de cómo los utilice tu sitio.
+
+### `src/components`
+
+Los [components](/es/core-concepts/astro-components) son unidades reutilizables de Interfaz de Usuario (UI) para tus páginas HTML. Se recomienda (pero no es obligatorio) que coloques tus componentes en este directorio. La forma en que los organices dentro de este directorio depende de ti.
+
+Tus componentes de UI que no son de Astro (React, Preact, Svelte, Vue, etc.) también pueden vivir en el directorio `src/components`. Astro procesará automáticamente todos los componentes en HTML a menos que hayas habilitado un componente de interfaz a través de la hidratación parcial.
+
+### `src/layouts`
+
+Las [maquetas](/es/core-concepts/layouts) son componentes reutilizables para maquetar páginas HTML. Se recomienda (pero no es obligatorio) que coloques tus componentes de maqueta en este directorio. La forma en que los organices dentro de este directorio depende de ti.
+
+### `src/pages`
+
+Las [páginas](/es/core-concepts/astro-pages) páginas contienen todas las páginas (compatibles con `.astro` y `.md`) de tu sitio web. Es **obligatorio** que coloques tus páginas en este directorio.
+
+### `public/`
+
+Para la mayoría de los usuarios, la mayoría de sus archivos vivirán dentro del directorio `src/` para que Astro pueda manejarlos y optimizarlos adecuadamente en su compilación final. Por el contrario, el directorio `public/` es el lugar para que cualquier archivo viva fuera del proceso de construcción de Astro.
+
+Si colocas un archivo en la carpeta pública, Astro no lo procesará. En su lugar, se copiará intacto en la carpeta de compilación. Esto puede ser útil para activos como imágenes y fuentes, o cuando necesita incluir un archivo específico como `robots.txt` o `manifest.webmanifest`.
diff --git a/smoke/docs-main/src/pages/es/core-concepts/routing.md b/smoke/docs-main/src/pages/es/core-concepts/routing.md
new file mode 100644
index 000000000..e45bae37c
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/core-concepts/routing.md
@@ -0,0 +1,101 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Enrutamiento
+---
+
+Astro utiliza **enrutamiento basado en archivos** para generar sus URL de compilación en función del archivo de maqueta del directorio `src/pages` de tu proyecto. Cuando se agrega un archivo al directorio `src/pages` de tu proyecto, está automáticamente disponible como una ruta basada en su nombre de archivo.
+
+## Rutas estáticas
+
+Los Componentes de Astro (`.astro`) y Archivos Markdown (`.md`) en el directorio `src/pages` se convierten en páginas de tu sitio web. La ruta de cada página se decide en función de su nombre de archivo y ruta dentro del directorio `src/pages`. Esto significa que no hay una "configuración de enrutamiento" separada para mantener en un proyecto Astro.
+
+```bash
+# Example: Static routes
+src/pages/index.astro -> mysite.com/
+src/pages/about.astro -> mysite.com/about
+src/pages/about/index.astro -> mysite.com/about
+src/pages/about/me.astro -> mysite.com/about/me
+src/pages/posts/1.md -> mysite.com/posts/1
+```
+
+## Rutas dinámicas
+
+A veces, necesitas generar muchas URLs a partir de un solo componente de página. Astro utiliza el enrutamiento basado en archivos para admitir **parámetros de ruta dinámica** en el nombre de archivo, de modo que una página pueda coincidir con muchas rutas dinámicas según algún patrón.
+
+Una cosa importante a tener en cuenta: Astro es un creador de sitios estáticos. No hay un servidor Astro para ejecutar en producción, lo que significa que cada página debe crearse con anticipación. Las páginas que usan rutas dinámicas deben exportar una función `getStaticPaths()` que le dirá a Astro exactamente qué páginas generar. Obtenga más información al ver la completa [Referencia de API](/es/reference/api-reference#getstaticpaths).
+
+### Parámetros con nombre
+
+Los parámetros dinámicos se codifican en el nombre del archivo usando la notación `[corchete]`:
+
+- `pages/blog/[slug].astro` → `/blog/:slug` (`/blog/hello-world`, `/blog/post-2`, etc.)
+- `pages/[username]/settings.astro` → (`/fred/settings`, `/drew/settings`, etc.)
+- `pages/[lang]-[version]/info.astro` → (`/en-v1/info`, `/fr-v2/info`, etc.)
+
+#### Ejemplo: parámetros con nombre
+
+Considera la siguiente página `pages/post/[pid].astro`:
+
+```astro
+---
+// Example: src/pages/post/[pid].astro
+const {pid} = Astro.request.params;
+---
+<p>Artículo: {pid}</p>
+```
+
+Cualquier ruta como `/post/1`, `/post/abc`, etc. se corresponderá con `pages/post/[pid].astro`. El parámetro de ruta coincidente se pasará al componente de la página en `Astro.request.params`.
+
+Por ejemplo, la ruta `/post/abc` tendrás disponible el siguiente objeto `Astro.request.params`:
+
+```json
+{ "pid": "abc" }
+```
+
+Se pueden combinar varios segmentos de ruta dinámica para que funcionen de la misma manera. La página `pages/post/[pid]/[comment].astro` coincidirá con la ruta`/post/abc/a-comment` y su objeto `query` será:
+
+```json
+{ "pid": "abc", "comment": "a-comment" }
+```
+
+### Parámetros Rest
+
+Si necesitas más flexibilidad en el enrutamiento de tu URL, puedes usar un parámetro Rest como un comodín universal. Haz esto agregando tres puntos (`...`) dentro de tus corchetes. Por ejemplo:
+
+- `pages/post/[...slug].astro` → (`/post/a`, `/post/a/b`, `/post/a/b/c`, etc.)
+
+Los parámetros coincidentes se enviarán en un parámetro de consulta (`slug` en el ejemplo) a la página. En el ejemplo anterior, la ruta `/post/a/b/c` tendrá el siguiente objeto `query`:
+
+```json
+{ "slug": "a/b/c" }
+```
+
+Puede utilizar nombres distintos a `slug`, como: `[...param]` o `[...name]`.
+
+Los parámetros Rest son opcionales por defecto, por lo que `pages/post/[...slug].astro` también podría coincidir con `/post/`.
+
+#### Ejemplo: Parametros Rest
+
+Para un ejemplo del mundo real, puede implementar el visor de archivos de GitHub así:
+
+```
+/[org]/[repo]/tree/[branch]/[...file]
+```
+
+En este ejemplo, una solicitud de `/withastro/astro/tree/main/docs/public/favicon.svg` daría como resultado que los siguientes parámetros estuvieran disponibles para la página:
+
+```js
+{
+ org: 'snowpackjs',
+ repo: 'astro',
+ branch: 'main',
+ file: 'docs/public/favicon.svg'
+}
+```
+
+## Advertencias
+
+- Las rutas estáticas sin parámetros de ruta tendrán prioridad sobre todas las demás rutas, y los parámetros de ruta con nombre sobre la captura de todos los parámetros de ruta. Echa un vistazo a los siguientes ejemplos:
+ - `pages/post/create.astro` - Coincidirá `/post/create`
+ - `pages/post/[pid].astro` - Coincidirá `/post/1`, `/post/abc`, etc. Pero no `/post/create`
+ - `pages/post/[...slug].astro` - Coincidirá `/post/1/2`, `/post/a/b/c`, etc. Pero no `/post/create`, `/post/abc`
diff --git a/smoke/docs-main/src/pages/es/getting-started.md b/smoke/docs-main/src/pages/es/getting-started.md
new file mode 100644
index 000000000..ebc2d34c6
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/getting-started.md
@@ -0,0 +1,59 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Empezando
+---
+
+Astro es un creador de sitios estáticos moderno. Aprende de qué trata Astro en nuestra [página principal](https://astro.build/) o nuestra [publicación de lanzamiento](https://astro.build/blog/introducing-astro). Esta página es una descripción general de la documentación de Astro y todos los recursos relacionados.
+
+## Prueba Astro
+
+La forma más fácil de probar Astro es ejecutando `npm init astro` en un nuevo directorio en tu máquina. Nuestro asistente CLI te ayudará a comenzar un nuevo proyecto Astro.
+
+Para comenzar con Astro en 5 sencillos y rápidos pasos, visita nuestra guía de [inicio rápido](/es/quick-start).
+
+Alternativamente, lee nuestra guía de [instalación](/es/installation) para un recorrido completo de cómo configurar Astro.
+
+### Playground en línea
+
+Si estás interesado en jugar con Astro en el navegador, puedes usar un playground de código en línea. Prueba nuestro template "Hola Mundo!" en [CodeSandbox](https://codesandbox.io/s/astro-template-hugb3).
+
+_Nota: Algunas características (ex: Fast Refresh) actualmente están limitadas en CodeSandbox._
+
+## Aprende Astro
+
+Todo tipo de personas vienen a Astro de diferentes orígenes trayendo consigo diferentes estilos de aprendizaje. Ya sea que prefieras un enfoque más teórico o práctico, esperamos que esta sección te resulte útil.
+
+- Si prefieres **aprender haciendo**, comienza con nuestra biblioteca de [ejemplos](https://github.com/withastro/astro/tree/main/examples).
+- Si prefieres **aprender conceptos paso a paso**, comienza con nuestros [conceptos básicos y guías](https://docs.astro.build/es/core-concepts/project-structure).
+
+Como cualquier tecnología desconocida, Astro viene con una ligera curva de aprendizaje. Sin embargo, con práctica y algo de paciencia, sabemos que lo dominarás en poco tiempo.
+
+### Aprende la sintaxis de `.astro`
+
+Cuando comiences a aprender Astro, verás muchos archivos con la extensión `.astro`. Esta es la **sintaxis de componentes de Astro**: un formato de archivo especial similar a HTML que Astro usa para crear templates. Fue diseñado para que resulte familiar a cualquiera que tenga experiencia con HTML o JSX.
+
+Nuestra guía sobre [componentes de Astro](https://docs.astro.build/core-concepts/astro-components) presenta la sintaxis de Astro y es la mejor manera de aprender.
+
+### Referencia de la API
+
+Esta sección de documentación es útil cuando deseas obtener más detalles sobre una API de Astro en particular. Por ejemplo, la [referencia de configuración](https://docs.astro.build/reference/configuration-reference) enumera todas las opciones de configuración disponibles. La [referencia de componentes incluidos](https://docs.astro.build/reference/builtin-components) enumera todos los componentes básicos disponibles, como `<Markdown />` y `<Code />`.
+
+### Documentación versionada
+
+Esta documentación siempre refleja la última versión estable de Astro. Una vez que alcancemos la versión v1.0, agregaremos la capacidad de ver documentación versionada.
+
+## Mantenerse informado
+
+La cuenta de Twitter [@astrodotbuild](https://twitter.com/astrodotbuild) es la fuente oficial de las actualizaciones del equipo de Astro.
+
+También publicamos anuncios de lanzamiento en nuestra comunidad de [Discord](https://astro.build/chat) en el canal de #announcements.
+
+No todos los lanzamientos de Astro merecen su propia publicación en el blog, pero puedes encontrar un registro de cambios detallado para cada versión en el archivo [CHANGELOG.md](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md) en el repositorio de Astro.
+
+## ¿Falta algo?
+
+Si falta algo en la documentación o si alguna parte te resulta confusa, por favor [abre una issue para la documentación](https://github.com/withastro/astro/issues/new/choose) con tus sugerencias de mejora o menciona a la cuenta de Twitter [@astrodotbuild](https://twitter.com/astrodotbuild). ¡Nos encanta saber de ti!
+
+## Créditos
+
+Esta guía de **Empezando** se basó originalmente en la guía de Empezando de [React](https://reactjs.org/).
diff --git a/smoke/docs-main/src/pages/es/guides/aliases.md b/smoke/docs-main/src/pages/es/guides/aliases.md
new file mode 100644
index 000000000..4d34b9f50
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/guides/aliases.md
@@ -0,0 +1,45 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Alias
+---
+
+Un **alias** es un atajo útil para tus importaciones de JavaScript. Esta puede ser una gran opción si no te gustan las rutas de importación relativas largas con muchos segmentos repetidos `../`. Define un alias para importar cosas directamente desde algún directorio de proyecto de nivel superior, sin importar qué tan profundamente anidado esté ubicado un archivo.
+
+Con un alias, puedes importar desde `"$components/SomeComponent.astro"` en lugar de `" ../../../../../components/SomeComponent.astro "`.
+
+## Agregar un alias personalizado
+
+Para agregar un alias personalizado a tu proyecto, busca el archivo `snowpack.config.mjs` de tu proyecto. Este archivo de configuración contiene las instrucciones y la configuración de la herramienta de compilación interna de Astro [Snowpack](https://www.snowpack.dev/reference/configuration). Si no ves un archivo `snowpack.config.mjs` en el nivel superior de su proyecto (dentro de la misma carpeta que tu `package.json`), puedes crear un archivo en blanco ahora.
+
+Para agregar un nuevo alias de importación, define una nueva entrada `alias`:
+
+```ts
+// snowpack.config.mjs
+export default {
+ alias: {
+ // Asignar importaciones de "$components/*" a "src/components/*"
+ $components: './src/components',
+ // Asignar importaciones de "$/*" a "src/*"
+ $: './src',
+ // ¡Defina el tuyo!
+ '$my-special-alias': './src/some/special/folder',
+ },
+ // ...
+};
+```
+
+Una vez que hayas definido tu(s) alia(s) y hayas reiniciado Astro (si es necesario), puedes comenzar a importar desde el alias en cualquier lugar de tu proyecto:
+
+```js
+import MyComponent from '$components/MyComponent.astro';
+import mySvgUrl from '$/logo.svg';
+```
+
+Puede leer más sobre la configuración de `alias` en [la documentación de Snowpack](https://www.snowpack.dev/reference/configuration#alias).
+
+## Consejos y trucos
+
+- Recomendamos comenzar todos los alias con el carácter especial `$`. No es necesario.
+- Es común definir un alias `$` de nivel superior para tu directorio `src`. No es necesario.
+- Para agregar soporte VSCode para tus alias, también necesitarás definir tus alias en un archivo `tsconfig.json` o `jsconfig.json` a través del valor de configuración `"paths"`. Esto habilitará Intellisense en VSCode y la mayoría de los demás editores de texto.
+- ¡No necesitas usar un alias con Astro! Algunas personas prefieren menos magia en su código y no quieren molestarse con pasos adicionales para la compatibilidad con el editor de texto.
diff --git a/smoke/docs-main/src/pages/es/guides/data-fetching.md b/smoke/docs-main/src/pages/es/guides/data-fetching.md
new file mode 100644
index 000000000..53d729ce2
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/guides/data-fetching.md
@@ -0,0 +1,64 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Obtención de datos
+---
+
+Los componentes y las páginas de Astro pueden obtener datos remotos para ayudar a generar tus páginas. Astro proporciona dos herramientas diferentes a las páginas para ayudarte a hacer esto: **fetch()** y **await de nivel superior**.
+
+## `fetch()`
+
+Las páginas de Astro tienen acceso a la función global `fetch()` en su script de configuración. `fetch()` es una API de JavaScript nativa ([MDN <span class = "sr-only">- fetch</span>](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch)) que te permite realizar solicitudes HTTP para cosas como API y recursos.
+
+Aunque los scripts de componentes de Astro se ejecutan dentro de Node.js (y no en el navegador), Astro proporciona esta API nativa para que pueda obtener datos en el momento de la creación de la página.
+
+```astro
+---
+// Movies.astro
+const response = await fetch('https://example.com/movies.json');
+const data = await response.json();
+// Recuerda: las secuencias de comandos del componente de Astro se registran en la CLI
+console.log(data);
+---
+<!-- Envía el resultado a la página -->
+<div>{JSON.stringify(data)}</div>
+```
+
+## await de nivel superior
+
+`await` es otra característica nativa de JavaScript que te permite esperar la respuesta de alguna promesa asincrónica ([MDN <span class =" sr-only ">- await</span>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await)). Astro admite "await" en el nivel superior de la secuencia de comandos de tu componente.
+
+**Importante:** Estos aún no están disponibles dentro de los componentes de Astro que no son de página. En su lugar, carga todos tus datos dentro de tus páginas y luego pásalos a tus componentes como propiedades.
+
+## Usando `fetch()` fuera de Componentes de Astro
+
+Si quieres usar `fetch()` en un componente que no sea Astro, usa la biblioteca [`node-fetch`](https://github.com/node-fetch/node-fetch):
+
+```tsx
+// Movies.tsx
+import fetch from 'node-fetch';
+import type { FunctionalComponent } from 'preact';
+import { h } from 'preact';
+
+const data = fetch('https://example.com/movies.json').then((response) =>
+ response.json()
+);
+
+// Los componentes que se procesan en tiempo de compilación también se registran en la CLI.
+// Si cargaste este componente con una directiva, se registraría en la consola del navegador.
+console.log(data);
+
+const Movies: FunctionalComponent = () => {
+ // Envía el resultado a la página
+ return <div>{JSON.stringify(data)}</div>;
+};
+
+export default Movies;
+```
+
+Si cargas un componente usando `node-fetch` [interactivamente](/es/core-concepts/component-hydration), con `client:load`, `client:visible`, etc., necesitarás no usar `node-fetch` o cambiar a una librería [isomórfica](https://en.wikipedia.org/wiki/Isomorphic_JavaScript) que se ejecutará tanto en el momento de la compilación como en el cliente, como [`node-fetch` README.md](https://github.com/node-fetch/node-fetch#motivation) recomienda:
+
+> En lugar de implementar XMLHttpRequest en Node.js para ejecutar [Fetch polyfill] específico del navegador (https://github.com/github/fetch), ¿por qué no pasar de http nativo a buscar API directamente? Por lo tanto, node-fetch, código mínimo para una API compatible con window.fetch en tiempo de ejecución de Node.js.
+>
+> Consulta [isomorphic-unfetch](https://www.npmjs.com/package/isomorphic-unfetch) de Jason Miller o [cross-fetch] de Leonardo Quixada (https://github.com/lquixada/cross-fetch) para uso isomórfico (exporta node-fetch para el lado del servidor, whatwg-fetch para el lado del cliente).
+
+> Citado de https://github.com/node-fetch/node-fetch#motivation
diff --git a/smoke/docs-main/src/pages/es/guides/debugging.md b/smoke/docs-main/src/pages/es/guides/debugging.md
new file mode 100644
index 000000000..f51f275d7
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/guides/debugging.md
@@ -0,0 +1,6 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Depuración
+---
+
+Astro se ejecuta en el servidor y se registra directamente en su terminal, por lo que puede ser difícil depurar valores de Astro. El componente `<Debug>` incorporado de Astro puede ayudarte a inspeccionar los valores dentro de tus archivos en el lado del cliente. Lee más sobre el [componente de depuración incorporado](/es/reference/builtin-components#debug-).
diff --git a/smoke/docs-main/src/pages/es/guides/deploy.md b/smoke/docs-main/src/pages/es/guides/deploy.md
new file mode 100644
index 000000000..176a26535
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/guides/deploy.md
@@ -0,0 +1,369 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Desplegar en la web
+---
+
+Las siguientes guías se basan en algunos supuestos compartidos:
+
+- Estás utilizando la ubicación de salida de compilación predeterminada (`dist/`). Esta ubicación [se puede cambiar usando la opción de configuración `dist`](/es/reference/configuration-reference).
+- Estás usando npm. Puedes usar comandos equivalentes para ejecutar los scripts si estás usando Yarn u otros administradores de paquetes.
+- Astro está instalado como una dependencia de desarrollo local en su proyecto, y has configurado los siguientes scripts npm:
+
+```json
+{
+ "scripts": {
+ "start": "astro dev",
+ "build": "astro build",
+ "preview": "astro preview"
+ }
+}
+```
+
+## Construyendo la aplicación
+
+Puedes ejecutar el comando `npm run build` para compilar la aplicación.
+
+```bash
+$ npm run build
+```
+
+Por defecto, la salida de la compilación se colocará en `dist/`. Puedes desplegar esta carpeta `dist/` en cualquiera de tus plataformas preferidas.
+
+## Páginas de GitHub
+
+> **Advertencia:** De forma predeterminada, las páginas de Github romperán el directorio `_astro/` de su sitio web desplegado. Para deshabilitar este comportamiento y solucionar este problema, asegúrate de usar el script `deploy.sh` de abajo o agrega manualmente un archivo `.nojekyll` vacío a tu directorio `public/`.
+
+1. Establece el `buildOptions.site` correcto en `astro.config.mjs`.
+2. Dentro de tu proyecto, crea `deploy.sh` con el siguiente contenido (sin comentar las líneas apropiadas) y ejecútalo para implementar:
+
+ ```bash
+ #!/usr/bin/env sh
+
+ # abortar en errores
+ set -e
+
+ # construir
+ npm run build
+
+ # navegar hasta el directorio de salida de la compilación
+ cd dist
+
+ # añade .nojekyll para omitir el comportamiento predeterminado de las páginas de GitHub
+ touch .nojekyll
+
+ # si estás implementando en un dominio personalizado
+ # echo 'www.example.com' > CNAME
+
+ git init
+ git add -A
+ git commit -m 'deploy'
+
+ # si estás desplegando en https://<USERNAME>.github.io
+ # git push -f git@github.com:<USERNAME>/<USERNAME>.github.io.git main
+
+ # si estás desplegando en https://<USERNAME>.github.io/<REPO>
+ # git push -f git@github.com:<USERNAME>/<REPO>.git main:gh-pages
+
+ cd -
+ ```
+
+ > También puedes ejecutar el script anterior en tu configuración de CI para habilitar la implementación automática en cada envío.
+
+### GitHub Actions
+
+1. En el repositorio del proyecto astro, crea la rama `gh-pages`, luego ve a Configuración > Páginas y establece la rama `gh-pages` para las Páginas de GitHub y establece el directorio en `/` (raíz).
+2. Establezca el `buildOptions.site` correcto en `astro.config.mjs`.
+3. Crea el archivo `.github/workflows/main.yml` y agrega el yaml de abajo. Asegúrate de editar con tus propios datos.
+4. En GitHub, ve a Configuración > Configuración de desarrollador > Tokens de acceso personal. Genere un nuevo token con permisos de repositorio.
+5. En el repositorio del proyecto Astro (no \<SU NOMBRE DE USUARIO\>.github.io) ve a Configuración > Secretos y agregue tu nuevo token de acceso personal con el nombre `API_TOKEN_GITHUB`.
+6. Cuando envíes cambios al repositorio del proyecto Astro, CI los desplegará en \<SU NOMBRE DE USUARIO \>.github.io por ti.
+
+```yaml
+# Flujo de trabajo para compilar y desplegar en tus páginas de GitHub del repositorio.
+
+# Edita los detalles de tu proyecto aquí.
+# ¡Recuerda agregar API_TOKEN_GITHUB en Configuración del repositorio > Secretos también!
+env:
+ githubEmail: <YOUR GITHUB EMAIL ADDRESS>
+ deployToRepo: <NAME OF REPO TO DEPLOY TO (E.G. <YOUR USERNAME>.github.io)>
+
+name: Github Pages Astro CI
+
+on:
+ # Activa el flujo de trabajo en eventos de push y pull requests, pero solo para la rama principal
+ push:
+ branches: [main]
+ pull_request:
+ branches: [main]
+
+ # Permite ejecutar este flujo de trabajo manualmente desde la pestaña Acciones.
+ workflow_dispatch:
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+
+ steps:
+ # Registra tu repositorio en $GITHUB_WORKSPACE, para que tu trabajo pueda acceder a él.
+ - uses: actions/checkout@v2
+
+ # Instalar dependencias con npm
+ - name: Install dependencies
+ run: npm ci
+
+ # Construye el proyecto y agrega el archivo .nojekyll para suprimir el comportamiento predeterminado
+ - name: Build
+ run: |
+ npm run build
+ touch ./dist/.nojekyll
+
+ # Hace push a tu repositorio de páginas
+ - name: Push to pages repo
+ uses: cpina/github-action-push-to-another-repository@main
+ env:
+ API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
+ with:
+ source-directory: 'dist'
+ destination-github-username: ${{ github.actor }}
+ destination-repository-name: ${{ env.deployToRepo }}
+ user-email: ${{ env.githubEmail }}
+ commit-message: Deploy ORIGIN_COMMIT
+ target-branch: gh-pages
+```
+
+### Travis CI
+
+1. Set the correct `buildOptions.site` in `astro.config.mjs`.
+2. Create a file named `.travis.yml` in the root of your project.
+3. Run `npm install` locally and commit the generated lockfile (`package-lock.json`).
+4. Use the GitHub Pages deploy provider template, and follow the [Travis CI documentation](https://docs.travis-ci.com/user/deployment/pages/).
+
+ ```yaml
+ language: node_js
+ node_js:
+ - lts/*
+ install:
+ - npm ci
+ script:
+ - npm run build
+ deploy:
+ provider: pages
+ skip_cleanup: true
+ local_dir: dist
+ # A token generated on GitHub allowing Travis to push code on you repository.
+ # Set in the Travis settings page of your repository, as a secure variable.
+ github_token: $GITHUB_TOKEN
+ keep_history: true
+ on:
+ branch: master
+ ```
+
+## GitLab Pages
+
+1. Establece el `buildOptions.site` correcto en `astro.config.mjs`.
+2. Establece `build` en `astro.config.mjs` a `public` y `public` en `astro.config.mjs` a una carpeta recién nombrada que contiene todo lo que se encuentra actualmente en `public`. El razonamiento es porque `public` es una segunda carpeta de origen en astro, por lo que si desea generar la salida a `public`, deberá extraer los activos públicos de una carpeta diferente.
+3. Crea un archivo llamado `.gitlab-ci.yml` en la raíz de su proyecto con el contenido de abajo. Esto creará y desplegará su sitio cada vez que realice cambios en su contenido:
+
+ ```yaml
+ image: node:10.22.0
+ pages:
+ cache:
+ paths:
+ - node_modules/
+ script:
+ - npm install
+ - npm run build
+ artifacts:
+ paths:
+ - public
+ only:
+ - master
+ ```
+
+## Netlify
+
+**Nota:** Si está utilizando una [imagen de compilación](https://docs.netlify.com/configure-builds/get-started/#build-image-selection) antigua en Netlify, asegúrate de configurar tu versión de Node.js en un archivo [`.nvmrc`](https://github.com/nvm-sh/nvm#nvmrc) (ejemplo:` node v14.17.6`) o una variable de entorno `NODE_VERSION`. Este paso ya no es necesario de forma predeterminada.
+
+Puedes configurar tu implementación de dos maneras, a través del sitio web de Netlify o con un archivo de proyecto local `netlify.toml`.
+
+### `netlify.toml` file
+
+Crea un nuevo archivo `netlify.toml` en el nivel superior del repositorio de su proyecto con la siguiente configuración:
+
+```toml
+[build]
+ command = "npm run build"
+ publish = "dist"
+```
+
+Empuja el nuevo archivo `netlify.toml` a tu repositorio de git alojado. Luego, configura un nuevo proyecto en [Netlify](https://netlify.com) para tu repositorio de git. Netlify leerá este archivo y configurará automáticamente su implementación.
+
+### Interfaz de usuario del sitio web de Netlify
+
+Puedes omitir el archivo `netlify.toml` e ir directamente a [Netlify](https://netlify.com) para configurar tu proyecto. Netlify ahora debería detectar los proyectos de Astro automáticamente y pre-rellenar la configuración por ti. Asegúrate de introducir la siguiente configuración antes de presionar el botón "Desplegar":
+
+- **Comando de construcción:** `astro build` o `npm run build`
+- **Publicar directorio:** `dist`
+
+## Google Firebase
+
+1. Asegúrate de tener [firebase-tools](https://www.npmjs.com/package/firebase-tools) instalado.
+
+2. Crea `firebase.json` y `.firebaserc` en la raíz de tu proyecto con el siguiente contenido:
+
+ `firebase.json`:
+
+ ```json
+ {
+ "hosting": {
+ "public": "dist",
+ "ignore": []
+ }
+ }
+ ```
+
+ `.firebaserc`:
+
+ ```json
+ {
+ "projects": {
+ "default": "<YOUR_FIREBASE_ID>"
+ }
+ }
+ ```
+
+3. Después de ejecutar `npm run build`, despliega usando el comando `firebase deploy`.
+
+## Surge
+
+1. Primero instala [surge](https://www.npmjs.com/package/surge), si aún no lo has hecho.
+
+2. Ejecuta `npm run build`.
+
+3. Despliega en Surge escribiendo `surge dist`.
+
+También puedes implementar en un [dominio personalizado](http://surge.sh/help/adding-a-custom-domain) agregando `surge dist yourdomain.com`.
+
+## Heroku
+
+1. Instalar [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli).
+
+2. Crea una cuenta en Heroku [registrándose](https://signup.heroku.com).
+
+3. Ejecuta `heroku login` y completa tus credenciales de Heroku:
+
+ ```bash
+ $ heroku login
+ ```
+
+4. Crea un archivo llamado `static.json` en la raíz de su proyecto con el siguiente contenido:
+
+ `static.json`:
+
+ ```json
+ {
+ "root": "./dist"
+ }
+ ```
+
+ Esta es la configuración de su sitio; leer más en [heroku-buildpack-static](https://github.com/heroku/heroku-buildpack-static).
+
+5. Configura tu git remoto de Heroku:
+
+ ```bash
+ # cambio de versión
+ $ git init
+ $ git add .
+ $ git commit -m "My site ready for deployment."
+
+ # crear una nueva aplicación con un nombre específico
+ $ heroku apps:create example
+
+ # establecer buildpack para sitios estáticos
+ $ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-static.git
+ ```
+
+6. Implemente su sitio:
+
+ ```bash
+ # publicar sitio
+ $ git push heroku master
+
+ # abre un navegador para ver la tablero de version de Heroku CI
+ $ heroku open
+ ```
+
+## Vercel
+
+Puede implementar Astro en [Vercel](http://vercel.com) a través de la CLI o las integraciones de Vercel Git.
+
+### CLI
+
+1. Instale la [Vercel CLI](https://vercel.com/cli) y ejecute `vercel` para implementar.
+2. Cuando se le pregunte `¿Desea anular la configuración? [s/N]`, seleccione `S`.
+3. Actualice `Directorio de salida` a `./dist`.
+4. ¡Su aplicación está implementada! (por ejemplo, [astro.vercel.app](https://astro.vercel.app/))
+
+```jsx
+$ npm i -g vercel
+$ vercel
+```
+
+### Git
+
+1. Inserte su código en su repositorio git (GitHub, GitLab, BitBucket).
+2. [Importe su proyecto](https://vercel.com/new) a Vercel.
+3. Actualice `Directorio de salida` a `./dist`.
+4. ¡Su aplicación está implementada! (por ejemplo, [astro.vercel.app](https://astro.vercel.app/))
+
+Después de que su proyecto haya sido importado e implementado, todos los envíos subsiguientes a las sucursales generarán [Vista previa de implementaciones] (https://vercel.com/docs/concepts/deployments/environments#preview), y todos los cambios realizados en la rama de producción (comúnmente “principal”) dará como resultado una [Implementación de producción](https://vercel.com/docs/concepts/deployments/environments#production).
+
+Obtenga más información sobre [Git Integration] de Vercel (https://vercel.com/docs/concepts/git).
+
+## Aplicaciones web estáticas de Azure
+
+Puedes implementar tu proyecto Astro con el servicio Microsoft Azure [Static Web Apps](https://aka.ms/staticwebapps). Necesitas:
+
+- Una cuenta de Azure y una clave de suscripción. Aquí puedes crear una [cuenta gratuita de Azure](https://azure.microsoft.com/free).
+- El código de tu aplicación enviado a [GitHub](https://github.com).
+- La [Extensión SWA](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurestaticwebapps) en [Visual Studio Code](https://code.visualstudio.com).
+
+Instala la extensión en VS Code y navega hasta la raíz de tu aplicación. Abre la extensión Static Web Apps, inicia sesión en Azure y haz clic en el signo '+' para crear una nueva Static Web App. Se te pedirá que designes qué clave de suscripción utilizar.
+
+Sigue el asistente iniciado por la extensión para darle un nombre a tu aplicación, elige un framework preestablecido y designa la raíz de la aplicación (generalmente `/`) y la ubicación del archivo construido `/dist`. El asistente se ejecutará y creará una acción de GitHub en su repositorio en una carpeta `.github`.
+
+La acción funcionará para desplegar tu aplicación (observa su progreso en la pestaña Acciones de tu repositorio) y, cuando se complete con éxito, podrá ver su aplicación en la dirección proporcionada en la ventana de progreso de la extensión haciendo clic en el botón 'Explorar sitio web' que aparece cuando el la acción de GitHub se ha ejecutado.
+
+## Cloudflare Pages
+
+Puedes implementar tu proyecto Astro en [Cloudflare Pages](https://pages.cloudflare.com). Necesitas:
+
+- Una cuenta de Cloudflare. Si aún no tienes una, puedes crear una cuenta gratuita de Cloudflare durante el proceso.
+- El código de tu aplicación enviado a un repositorio de [GitHub](https://github.com).
+
+Luego, configura un nuevo proyecto en Cloudflare Pages.
+
+Utiliza la siguiente configuración de compilación:
+
+- **Framework preestablecido**: `Ninguno` (Al momento de escribir este artículo, Astro no está en la lista).
+- **Comando de compilación**: `astro build` o `npm run build`
+- **Directorio de salida de compilación**: `dist`
+- **Variables de entorno (avanzadas)**: agrega una variable de entorno con el **Nombre de variable** de `NODE_VERSION` y un **Valor** de una [Versión de node que es compatible con Astro](https://docs.astro.build/installation#prerequisites), ya que la versión predeterminada de Cloudflare Pages probablemente no funcione.
+
+Entonces haz clic en el botón **Guardar y Desplegar**.
+
+## Render
+
+Puedes desplegar tu proyecto Astro en [Render](https://render.com/) siguiendo estos pasos:
+
+1. Crea una [cuenta en render.com](https://dashboard.render.com/) e inicia sesión.
+2. Haz clic en el botón **Nuevo +** de tu panel y selecciona **Sitio estático**.
+3. Conecta tu repositorio de [GitHub](https://github.com/) o [GitLab](https://about.gitlab.com/) o, alternativamente, introduce la URL pública de un repositorio público.
+4. Asigna un nombre a tu sitio web, selecciona la rama y especifique el comando de compilación y el directorio de publicación.
+ - **comando de compilación**: `npm run build`
+ - **directorio de publicación**: `dist`
+5. Haz clic en el botón **Crear sitio estático**.
+
+## Créditos
+
+Esta guía se basó originalmente en la guía de implementación estática bien documentada de [Vite](https://vitejs.dev/).
diff --git a/smoke/docs-main/src/pages/es/guides/imports.md b/smoke/docs-main/src/pages/es/guides/imports.md
new file mode 100644
index 000000000..7d51852b8
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/guides/imports.md
@@ -0,0 +1,139 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Importaciones soportadas
+---
+
+Astro usa Snowpack como su sistema de construcción interno. Snowpack proporciona a Astro soporte integrado para los siguientes tipos de archivos, sin necesidad de configuración:
+
+- JavaScript (`.js`, `.mjs`)
+- TypeScript (`.ts`, `.tsx`)
+- JSON (`.json`)
+- JSX (`.jsx`, `.tsx`)
+- CSS (`.css`)
+- CSS Modules (`.module.css`)
+- Imágenes y Activos (`.svg`, `.jpg`, `.png`, etc.)
+- Componentes de Astro (`.astro`)
+- Markdown (`.md`)
+- WASM (`.wasm`)
+
+Cualquier archivo en tu directorio `public/` se copia en la compilación final, sin ser tocado por Snowpack o Astro. Lo siguiente se aplica a los archivos en su directorio `src/`, del cual Astro es responsable en última instancia.
+
+## JavaScript y ESM
+
+Astro fue diseñado para la sintaxis nativa de ES Module (ESM) de JavaScript. ESM te permite definir importaciones y exportaciones explícitas que los navegadores y las herramientas de compilación pueden comprender y optimizar mejor. Si estás familiarizado con las palabras clave "import" y "export" en JavaScript, ¡entonces ya conoces ESM!
+
+```js
+// Ejemplo ESM - src/user.js
+export function getUser() {
+ /* ... */
+}
+
+// src/index.js
+import { getUser } from './user.js';
+```
+
+Todos los navegadores ahora son compatibles con ESM, por lo que Astro puede enviar este código directamente al navegador durante el desarrollo.
+
+## TypeScript
+
+Astro incluye soporte integrado para crear archivos TypeScript (`*.ts`) en JavaScript. Los componentes de Astro también son compatibles con TypeScript en la sección de script preliminar.
+
+Ten en cuenta que este soporte integrado es solo de compilación. De forma predeterminada, Astro no verifica el tipo de su código TypeScript.
+
+<!-- Para integrar la verificación de tipos en su flujo de trabajo de desarrollo/compilación, agrega el plugin [@snowpack/plugin-typescript](https://www.npmjs.com/package/@snowpack/plugin-typescript). -->
+
+## JSX
+
+Astro incluye soporte integrado para construir archivos JSX (`*.jsx` & `*.tsx`) a JavaScript.
+
+Si estás usando Preact, Astro detectará la importación de Preact y cambiará para usar la función estilo Preact de JSX `h()`. Todo esto se hace automáticamente.
+
+**Nota: Astro no admite JSX en archivos `.js`/`.ts`.**
+
+## JSON
+
+```js
+// Carga el objeto JSON a través de la exportación predeterminada
+import json from './data.json';
+```
+
+Astro admite la importación de archivos JSON directamente en tu aplicación. Los archivos importados devuelven el objeto JSON completo en la importación predeterminada.
+
+## CSS
+
+```js
+// Load and inject 'style.css' onto the page
+import './style.css';
+```
+
+Astro admite la importación de archivos CSS directamente a tu aplicación. Los estilos importados no exponen exportaciones, pero la importación de uno agregará automáticamente esos estilos a la página. Esto funciona para todos los archivos CSS de forma predeterminada y puede admitir lenguajes de compilación a CSS como Sass y Less a través de complementos.
+
+Si prefieres no escribir CSS, Astro también es compatible con todas las librerías populares de CSS en JS (por ejemplo, styled-components) para el estilo.
+
+## CSS Modules
+
+```js
+// 1. Convierte los nombres de clase './style.module.css' en valores únicos con ámbito.
+// 2. Devuelve un objeto que asigna los nombres de clase originales a su valor de ámbito final.
+import styles from './style.module.css';
+
+// This example uses JSX, but you can use CSS Modules with any framework.
+return <div className={styles.error}>Your Error Message</div>;
+```
+
+Astro admite módulos CSS utilizando la convención de nomenclatura `[nombre].module.css`. Al igual que con cualquier archivo CSS, la importación de uno aplicará automáticamente ese CSS a la página. Sin embargo, los módulos CSS exportan un objeto "estilos" predeterminado especial que asigna sus nombres de clase originales a identificadores únicos.
+
+Los módulos CSS te ayudan a hacer cumplir el alcance y el aislamiento de los componentes en la interfaz con nombres de clase generados de forma única para sus hojas de estilo.
+
+## Otros activos
+
+```jsx
+import imgReference from './image.png'; // img === '/src/image.png'
+import svgReference from './image.svg'; // svg === '/src/image.svg'
+import txtReference from './words.txt'; // txt === '/src/words.txt'
+
+// Este ejemplo usa JSX, pero puedes usar referencias de importación con cualquier marco.
+<img src={imgReference} />;
+```
+
+Todos los demás activos que no se mencionan explícitamente anteriormente se pueden importar a través de "import" de ESM y devolverán una referencia de URL al activo final creado. Esto puede ser útil para hacer referencia a activos que no son de JS por URL, como crear un elemento de imagen con un atributo `src` que apunte a esa imagen.
+
+## WASM
+
+```js
+// Carga e inicializa el archivo WASM solicitado
+const wasm = await WebAssembly.instantiateStreaming(fetch('/example.wasm'));
+```
+
+Astro admite la carga de archivos WASM directamente en tu aplicación utilizando la API [`WebAssembly`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly) del navegador.
+
+## Paquetes npm
+
+```js
+// Devuelve los paquetes npm React & React-DOM
+import React from 'react';
+import ReactDOM from 'react-dom';
+```
+
+Astro te permite importar paquetes npm directamente en el navegador. Incluso si un paquete se publicó utilizando un formato heredado, Astro convertirá el paquete a ESM antes de servirlo en el navegador.
+
+Cuando inicies tu servidor de desarrollo o ejecutes una nueva compilación, es posible que vea un mensaje de que Snowpack está "instalando dependencias". Esto significa que Snowpack está convirtiendo sus dependencias para que se ejecuten en el navegador. Esto debe ejecutarse solo una vez, o hasta que cambie su árbol de dependencias agregando o quitando dependencias.
+
+## Incluidos en Node
+
+Recomendamos a los usuarios de Astro que eviten los archivos incorporados en Node.js (`fs`,` path`, etc.) siempre que sea posible. Astro pretende ser compatible con múltiples tiempos de ejecución de JavaScript en el futuro. Esto incluye [Deno](https://deno.land/) y [Cloudflare Workers](https://workers.cloudflare.com/) que no son compatibles con los módulos integrados de Node como `fs`.
+
+Nuestro objetivo es proporcionar alternativas de Astro a las incorporaciones comunes de Node.js. Sin embargo, hoy en día no existen tales alternativas. Entonces, si _realmente_ necesitas usar estos módulos incorporados, no queremos detenerte. Astro soporta incorporaciones de Node.js usando el prefijo `node:` más nuevo de Node. Si deseas leer un archivo, por ejemplo, puedes hacerlo así:
+
+```astro
+---
+// Ejemplo: importar el "fs/promises" incorporado desde Node.js
+import fs from 'node:fs/promises';
+
+const url = new URL('../../package.json', import.meta.url);
+const json = await fs.readFile(url, 'utf-8');
+const data = JSON.parse(json);
+---
+
+<span>Versión: {data.version}</span>
+```
diff --git a/smoke/docs-main/src/pages/es/guides/markdown-content.astro b/smoke/docs-main/src/pages/es/guides/markdown-content.astro
new file mode 100644
index 000000000..150454626
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/guides/markdown-content.astro
@@ -0,0 +1,12 @@
+---
+import { Markdown } from 'astro/components';
+import MainLayout from '~/layouts/MainLayout.astro';
+const [content] = Astro.fetchContent('/src/pages/en/guides/markdown-content.md');
+---
+
+<MainLayout {content}>
+ <Markdown>
+ > Esta página todavía no está disponible en Español. Se muestra la versión en inglés.
+ </Markdown>
+ {content.astro.html}
+</MainLayout>
diff --git a/smoke/docs-main/src/pages/es/guides/pagination.astro b/smoke/docs-main/src/pages/es/guides/pagination.astro
new file mode 100644
index 000000000..1396cb488
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/guides/pagination.astro
@@ -0,0 +1,12 @@
+---
+import { Markdown } from 'astro/components';
+import MainLayout from '~/layouts/MainLayout.astro';
+const [content] = Astro.fetchContent('/src/pages/en/guides/pagination.md');
+---
+
+<MainLayout {content}>
+ <Markdown>
+ > Esta página todavía no está disponible en Español. Se muestra la versión en inglés.
+ </Markdown>
+ {content.astro.html}
+</MainLayout>
diff --git a/smoke/docs-main/src/pages/es/guides/publish-to-npm.astro b/smoke/docs-main/src/pages/es/guides/publish-to-npm.astro
new file mode 100644
index 000000000..5674e6ee5
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/guides/publish-to-npm.astro
@@ -0,0 +1,12 @@
+---
+import { Markdown } from 'astro/components';
+import MainLayout from '~/layouts/MainLayout.astro';
+const [content] = Astro.fetchContent('/src/pages/en/guides/publish-to-npm.md');
+---
+
+<MainLayout {content}>
+ <Markdown>
+ > Esta página todavía no está disponible en Español. Se muestra la versión en inglés.
+ </Markdown>
+ {content.astro.html}
+</MainLayout>
diff --git a/smoke/docs-main/src/pages/es/guides/rss.md b/smoke/docs-main/src/pages/es/guides/rss.md
new file mode 100644
index 000000000..7b92d4050
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/guides/rss.md
@@ -0,0 +1,42 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: RSS
+---
+
+Astro admite la generación de feeds RSS rápida y automática para blogs y otros sitios web de contenido.
+
+Puedes crear una fuente RSS desde cualquier página de Astro que utilice una función `getStaticPaths()` para el enrutamiento. Solo las rutas dinámicas pueden usar `getStaticPaths()` hoy (ver [Enrutamiento](/es/core-concepts/routing)).
+
+> Esperamos que esta función esté disponible para todas las demás páginas antes de la v1.0. Como solución alternativa, puedes convertir una ruta estática en una ruta dinámica que solo genera una página. Consulta [Enrutamiento](/es/core-concepts/routing) para obtener más información sobre las rutas dinámicas.
+
+Crea una fuente RSS llamando a la función `rss()` que se pasa como argumento a `getStaticPaths ()`. Esto creará un archivo `rss.xml` en tu compilación final basado en los datos que proporciones usando el array `items`.
+
+```js
+// Example: /src/pages/posts/[...page].astro
+// Coloca esta función dentro de la secuencia de comandos del componente de Astro.
+export async function getStaticPaths({rss}) {
+ const allPosts = Astro.fetchContent('../post/*.md');
+ const sortedPosts = allPosts.sort((a, b) => new Date(b.date) - new Date(a.date));
+ // Genera un feed RSS de esta colección
+ rss({
+ // El título, la descripción y los metadatos personalizados de la fuente RSS.
+ title: 'Don’s Blog',
+ description: 'An example blog on Astro',
+ customData: `<language>en-us</language>`,
+ // The list of items for your RSS feed, sorted.
+ items: sortedPosts.map(item => ({
+ title: item.title,
+ description: item.description,
+ link: item.url,
+ pubDate: item.date,
+ })),
+ // Opcional: personaliza dónde se escribe el archivo.
+ // De lo contrario, el valor predeterminado es "/rss.xml".
+ dest: "/my/custom/feed.xml",
+ });
+ // Devuelve tus rutas
+ return [...];
+}
+```
+
+Nota: Las fuentes RSS **no** se crearán durante el desarrollo. Actualmente, las fuentes RSS solo se generan durante la compilación final.
diff --git a/smoke/docs-main/src/pages/es/guides/styling.astro b/smoke/docs-main/src/pages/es/guides/styling.astro
new file mode 100644
index 000000000..0a3f549ce
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/guides/styling.astro
@@ -0,0 +1,12 @@
+---
+import { Markdown } from 'astro/components';
+import MainLayout from '~/layouts/MainLayout.astro';
+const [content] = Astro.fetchContent('/src/pages/en/guides/styling.md');
+---
+
+<MainLayout {content}>
+ <Markdown>
+ > Esta página todavía no está disponible en Español. Se muestra la versión en inglés.
+ </Markdown>
+ {content.astro.html}
+</MainLayout>
diff --git a/smoke/docs-main/src/pages/es/installation.md b/smoke/docs-main/src/pages/es/installation.md
new file mode 100644
index 000000000..910fbb2e0
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/installation.md
@@ -0,0 +1,170 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Instalación
+---
+
+Hay diferentes formas de instalar Astro en un nuevo proyecto.
+
+## Prerrequisitos
+
+- **Node.js** - `v14.15.0`, `v16.0.0`, o mayor.
+- **Editor de texto** - Te recomendamos [VS Code](https://code.visualstudio.com/) con nuestra [extensión oficial de Astro](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode).
+- **Terminal** - Principalmente, puedes ingresar a Astro por medio de linea de comando del terminal.
+
+Con el propósito de realizar una demostración, usaremos [`npm`](https://www.npmjs.com/) en los siguientes ejemplos, pero también puedes usar [`yarn`](https://yarnpkg.com/) o [`pnpm`](https://pnpm.io/), si prefieres un empaquetador alternativo.
+
+## Crear un Proyecto en Astro
+
+`npm init astro` es la forma más fácil de instalar Astro en un proyecto nuevo. Ejecuta este comando en tu terminal para iniciar nuestro asistente de instalación `create-astro` para ayudarte a configurar un nuevo proyecto.
+
+```shell
+# With NPM
+npm init astro
+
+# Yarn
+yarn create astro
+```
+
+El asistente de instalación [`create-astro`](https://github.com/withastro/astro/tree/main/packages/create-astro), te permite escoger de una lista de [plantillas de inicio](/en/themes); por otro lado, puedes importar tus propios proyectos de Astro directamente desde GitHub.
+
+```bash
+# Nota: Reemplaza "my-astro-project" con el nombre de tu proyecto.
+
+# npm 6.x
+npm init astro my-astro-project --template starter
+# npm 7+ (el doble guión extra es necesario)
+npm init astro my-astro-project -- --template starter
+# yarn
+yarn create astro my-astro-project --template starter
+# Usando una plantilla de un tercero
+npm init astro my-astro-project -- --template [GITHUB_USER]/[REPO_NAME]
+# Usando una plantilla de un tercero, dentro de un repositorio
+npm init astro my-astro-project -- --template [GITHUB_USER]/[REPO_NAME]/path/to/template
+```
+
+Después de que `create-astro` cree la estructura básica de tu proyecto, recuerda instalar las dependencias del proyecto usando npm o el manejador de paquetes que prefieras. En este ejemplo, usaremos npm:
+
+```bash
+npm install
+```
+
+Ahora puedes [Iniciar](#start-astro) tu proyecto de Astro. Una vez, que hayas completado tu proyecto, puedes [Compilar](#build-astro) tu proyecto. Astro va a empaquetar tu aplicación y después generará los archivos estáticos, que estarán listos para ser [Desplegados](/es/guides/deploy) en tu proveedor de hosting favorito.
+
+## Manual de Instalación
+
+También puedes configurar Astro sin ayuda del asistente `create-astro`, a continuación, hay algunos pasos adicionales que son necesarios para que Astro funcione.
+
+### Crear un proyecto
+
+```bash
+# Crea un nuevo directorio y navega a el
+mkdir my-astro-project
+cd my-astro-project
+```
+
+Crea un directorio vacío con el nombre de tu proyecto, y entonces navega a él:
+
+### Crear `package.json`
+
+```bash
+# Este comando creará un simple package.json en el directorio actual
+npm init --yes
+```
+
+Astro está diseñado para trabajar con todo el ecosistema de paquetes npm. Este es gestionado por un manifiesto del proyecto en la raíz de tu proyecto llamado `package.json`. Si no estás familiarizado con el archivo `package.json`, te recomendamos que leas un poco sobre él en la [documentación de npm](https://docs.npmjs.com/creating-a-package-json-file).
+
+### Instalar Astro
+
+Siguiendo las instrucciones anteriores, deberías tener un directorio con un único archivo `package.json`. Ahora puedes configurar Astro dentro de tu proyecto.
+
+```bash
+npm install astro
+```
+
+Ahora, puedes reemplazar la sección de "scripts" del archivo `package.json` que `npm init` creó, por lo siguiente:
+
+```diff
+ "scripts": {
+- "test": "echo \"Error: no test specified\" && exit 1"
++ "dev": "astro dev",
++ "build": "astro build",
++ "preview": "astro preview"
+ },
+}
+```
+
+El comando [`dev`](#start-astro) inicia el servidor de desarrollo de Astro en `http://localhost:3000`. Una vez que tu proyecto esté listo, el comando [`build`](#build-astro) genera tu proyecto en el directorio `dist/`. [Lee más sobre cómo desplegar Astro en la guía de despliegue](/es/guides/deploy).
+
+### Crear tu primera página
+
+Abre astro en tu editor de texto favorito, y crea un nuevo archivo en tu proyecto:
+
+1. Crea un archivo nuevo en `src/pages/index.astro`
+2. Copia-y-pega el siguiente código (incluyendo `---` )
+
+```astro
+---
+// El bloque de código escrito entre (---) de JS/TS
+// Funcionará sólo en el lado del servidor!
+console.log('Mírame en la Terminal')
+---
+
+<html>
+ <body>
+ <h1>¡Hola Mundo!</h1>
+ </body>
+</html>
+
+<style lang='css||scss'>
+ body{
+ h1{
+ color:orange;
+ }
+ }
+</style>
+
+<script>
+ // El código escrito en JS se ejecuta sólo en el navegador
+ console.log('Mírame en las Herramientas de Desarrollo')
+</script>
+```
+
+Arriba hay un ejemplo de la sintaxis del componente de Astro, que comprende HTML y JSX.
+
+Puedes crear más páginas en el directorio `src/pages` y Astro utilizará los archivos creados para generar nuevas páginas de tu sitio web. Por ejemplo, Al crear el archivo `about.astro` en `src/pages/about.astro` (reusando el fragmento de código anterior), Astro generará una página HTML en la dirección URL: `http://localhost/about`.
+
+## [Iniciar Astro](#start-astro)
+
+```bash
+npm run dev
+```
+
+Ahora Astro estará corriendo tu aplicación en `http://localhost:3000`. Al abrir esta URL en tu navegador, deberías ver el “¡Hola, Mundo!” de Astro.
+
+Si necesitas compartir tu progreso de desarrollo en la red local o revisar la aplicación desde un teléfono, sólo agrega la siguiente opción en `astro.config.mjs`:
+
+```js
+devOptions: {
+ hostname: '0.0.0.0';
+}
+```
+
+## [Compilar Astro](#build-astro)
+
+```bash
+npm run build
+```
+
+Con esta instrucción Astro generará tu sitio web y lo guardará directamente en el directorio `dist/`. Tu aplicación está ahora lista en el directorio `dist/`.
+
+## Próximos pasos
+
+¡Felicidades! ¡Ahora estás listo para comenzar a desarrollar!
+
+Te recomendamos fervientemente que te familiarices con la forma en que Astro funciona. Lo puedes hacer explorando nuestra documentación, te sugerimos que consideres las siguientes lecturas:
+
+📚 Aprende más sobre la estructura de proyectos de Astro, en nuestra [guía de estructura de proyecto](/es/core-concepts/project-structure).
+
+📚 Aprende más sobre la sintaxis de los componentes de Astro, en nuestra [guía de componentes de Astro](/es/core-concepts/astro-components).
+
+📚 Aprende más sobre la rutas basada en archivos de Astro, en nuestra [guía de rutas](/es/core-concepts/astro-pages).
diff --git a/smoke/docs-main/src/pages/es/quick-start.md b/smoke/docs-main/src/pages/es/quick-start.md
new file mode 100644
index 000000000..4beb1c52b
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/quick-start.md
@@ -0,0 +1,76 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Comienzo rápido
+---
+
+```shell
+# prerrequisitos: revisa que Node.js está en la versión 14.15.0+, ó 16+
+node --version
+
+# crea un nuevo proyecto en el directorio y entra a él
+mkdir my-astro-project && cd $_
+
+# inicializa el proyecto...
+npm init astro
+
+# instala las dependencias
+npm install
+
+# comienza con el desarrollo
+npm run dev
+```
+
+Para los sitios de producción,
+
+```shell
+# cuando estés listo: crea tu sitio estático en la carpeta `dist/`
+npm run build
+```
+
+Para saber más sobre la instalación y uso de Astro por primera vez, por favor [lea nuestra guía de instalación.](installation)
+
+Si prefieres aprender con ejemplos, revisa nuestra [librería completa de ejemplos](https://github.com/withastro/astro/tree/main/examples) en GitHub. Puedes revisar cualquiera de estos ejemplos localmente ejecutando `npm init astro -- --template "EXAMPLE_NAME"`.
+
+## Comienza con tu proyecto
+
+Dentro del directorio de tu proyecto, ingresa el siguiente comando en la terminal:
+
+```bash
+npm run dev
+```
+
+Astro comenzará a correr en el servidor de desarrollo en [http://localhost:3000](http://localhost:3000). Abre esta ubicación en tu navegador, deberías ver la página de "¡Hola Mundo!" de Astro.
+
+El servidor escuchará los cambios en vivo de los archivos en tu carpeta `src/`, así que, no necesitarás reiniciar la aplicación cuando hagas cambios durante el desarrollo.
+
+## Construye tu proyecto
+
+Para construir tu proyecto, ingresa el siguiente comando en la terminal:
+
+```bash
+npm run build
+```
+
+Este comando hará que Astro cree y guarde tu sitio estático en la carpeta `dist/` de tu proyecto.
+
+## Desplega tu proyecto
+
+Los sitios de Astro son estáticos, por lo que puedes desplegarlos en tu servicio de host favorito:
+
+- [AWS S3 bucket](https://aws.amazon.com/s3/)
+- [Google Firebase](https://firebase.google.com/)
+- [Netlify](https://www.netlify.com/)
+- [Vercel](https://vercel.com/)
+- [Lee más acerca del despliegue con nuestra guía de despliegue de Astro.](/es/guides/deploy)
+
+## Próximos Pasos
+
+¡Felicitaciones! Ahora estás listo para comenzar a desarrollar.
+
+Te recomendamos que te tomes tu tiempo para familiarizarte con la forma en la que Astro. Lo puedes hacer al explorar con mayor profundidad nuestra documentación. Te sugerimos que consideres lo siguiente.
+
+📚 Aprende más sobre la estructura de proyectos de Astro, en nuestra [guía de estructura de proyecto](/es/core-concepts/project-structure).
+
+📚 Aprende más sobre la sintaxis de los componentes de Astro, en nuestra [guía de componentes de Astro](/es/core-concepts/astro-components).
+
+📚 Aprende más sobre la rutas basada en archivos de Astro, en nuestra [guía de rutas](core-concepts/astro-pages).
diff --git a/smoke/docs-main/src/pages/es/reference/api-reference.md b/smoke/docs-main/src/pages/es/reference/api-reference.md
new file mode 100644
index 000000000..844e29d3f
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/reference/api-reference.md
@@ -0,0 +1,293 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Referencia de API
+---
+
+## `Astro` global
+
+La variable `Astro` global está disponible en todos los contextos en los archivos `.astro`. Tiene las siguientes funciones:
+
+### `Astro.fetchContent()`
+
+`Astro.fetchContent()` is a way to load local `*.md` files into your static site setup.
+
+```astro
+---
+// ./src/components/my-component.astro
+const data = Astro.fetchContent('../pages/post/*.md'); // returns an array of posts that live at ./src/pages/post/*.md
+---
+
+<div>
+{data.slice(0, 3).map((post) => (
+ <article>
+ <h1>{post.title}</h1>
+ <p>{post.description}</p>
+ <a href={post.url}>Read more</a>
+ </article>
+))}
+</div>
+```
+
+`.fetchContent()` only takes one parameter: a relative URL glob of which local files you'd like to import. Currently only `*.md` files are supported. It’s synchronous, and returns an array of items of type:
+
+```js
+{
+ /** frontmatter from the post.. example frontmatter:
+ title: '',
+ tag: '',
+ date: '',
+ image: '',
+ author: '',
+ description: '',
+ **/
+ astro: {
+ headers: [], // an array of h1...h6 elements in the markdown file
+ source: '', // raw source of the markdown file
+ html: '' // rendered HTML of the markdown file
+ },
+ url: '' // the rendered path
+ }[]
+```
+
+### `Astro.request`
+
+`Astro.request` returns an object with the following properties:
+
+| Name | Type | Description |
+| :------------- | :---- | :---------------------------------------------- |
+| `url` | `URL` | The URL of the request being rendered. |
+| `canonicalURL` | `URL` | [Canonical URL][canonical] of the current page. |
+
+### `Astro.resolve()`
+
+`Astro.resolve()` helps with creating URLs relative to the current Astro file, allowing you to reference files within your `src/` folder.
+
+Astro _does not_ resolve relative links within HTML, such as images:
+
+```html
+<img src="../images/penguin.png" />
+```
+
+The above will be sent to the browser as-is and the browser will resolve it relative to the current **page**. If you want it to be resolved relative to the .astro file you are working in, use `Astro.resolve`:
+
+```astro
+<img src={Astro.resolve('../images/penguin.png')} />
+```
+
+### `Astro.site`
+
+`Astro.site` returns a `URL` made from `buildOptions.site` in your Astro config. If undefined, this will return a URL generated from `localhost`.
+
+```astro
+---
+const path = Astro.site.pathname;
+---
+
+<h1>Welcome to {path}</h1>
+```
+
+### `Astro.slots`
+
+`Astro.slots` returns an object with any slotted regions passed into the current Astro file.
+
+```js
+const {
+ heading as headingSlot, // true or undefined, based on whether `<* slot="heading">` was used.
+ default as defaultSlot, // true or undefined, based on whether `<* slot>` or `<* default>` was used.
+} = Astro.slots;
+```
+
+## `getStaticPaths()`
+
+If a page uses dynamic params in the filename, that component will need to export a `getStaticPaths()` function.
+
+This function is required because Astro is a static site builder. That means that your entire site is built ahead of time. If Astro doesn't know to generate a page at build time, your users won't see it when they visit your site.
+
+```astro
+---
+export async function getStaticPaths() {
+ return [
+ { params: { /* required */ }, props: { /* optional */ },
+ { params: { ... } },
+ { params: { ... } },
+ // ...
+ ];
+}
+---
+<!-- Your HTML template here. -->
+```
+
+The `getStaticPaths()` function should return an array of objects to determine which paths will be pre-rendered by Astro.
+
+⚠️ The `getStaticPaths()` function executes in its own isolated scope once, before any page loads. Therefore you can't reference anything from its parent scope, other than file imports. The compiler will warn if you break this requirement.
+
+### `params`
+
+The `params` key of every returned object tells Astro what routes to build. The returned params must map back to the dynamic parameters and rest parameters defined in your component filepath.
+
+`params` are encoded into the URL, so only strings are supported as values. The value for each `params` object must match the parameters used in the page name.
+
+For example, suppose that you have a page at `src/pages/posts/[id].astro`. If you export `getStaticPaths` from this page and return the following for paths:
+
+```astro
+---
+export async function getStaticPaths() {
+ return [
+ { params: { id: '1' } },
+ { params: { id: '2' } }
+ ];
+}
+const {id} = Astro.request.params;
+---
+<body><h1>{id}</h1></body>
+```
+
+Then Astro will statically generate `posts/1` and `posts/2` at build time.
+
+### Data Passing with `props`
+
+To pass additional data to each generated page, you can also set a `props` value on every returned path object. Unlike `params`, `props` are not encoded into the URL and so aren't limited to only strings.
+
+For example, suppose that you generate pages based off of data fetched from a remote API. You can pass the full data object to the page component inside of `getStaticPaths`:
+
+```astro
+---
+export async function getStaticPaths() {
+ const data = await fetch('...').then(response => response.json());
+ return data.map((post) => {
+ return {
+ params: { id: post.id },
+ props: { post } };
+ });
+}
+const {id} = Astro.request.params;
+const {post} = Astro.props;
+---
+<body><h1>{id}: {post.name}</h1></body>
+```
+
+Then Astro will statically generate `posts/1` and `posts/2` at build time using the page component in `pages/posts/[id].astro`. The page can reference this data using `Astro.props`:
+
+### `paginate()`
+
+Pagination is a common use-case for websites that Astro natively supports via the `paginate()` function. `paginate()` will automatically generate the array to return from `getStaticPaths()` that creates one URL for every page of the paginated collection. The page number will be passed as a param, and the page data will be passed as a `page` prop.
+
+```js
+export async function getStaticPaths({ paginate }) {
+ // Load your data with fetch(), Astro.fetchContent(), etc.
+ const response = await fetch(`https://pokeapi.co/api/v2/pokemon?limit=150`);
+ const result = await response.json();
+ const allPokemon = result.results;
+ // Return a paginated collection of paths for all posts
+ return paginate(allPokemon, { pageSize: 10 });
+}
+// If set up correctly, The page prop now has everything that
+// you need to render a single page (see next section).
+const { page } = Astro.props;
+```
+
+`paginate()` assumes a file name of `[page].astro` or `[...page].astro`. The `page` param becomes the page number in your URL:
+
+- `/posts/[page].astro` would generate the URLs `/posts/1`, `/posts/2`, `/posts/3`, etc.
+- `/posts/[...page].astro` would generate the URLs `/posts`, `/posts/2`, `/posts/3`, etc.
+
+#### The pagination `page` prop
+
+Pagination will pass a `page` prop to every rendered page that represents a single page of data in the paginated collection. This includes the data that you've paginated (`page.data`) as well as metadata for the page (`page.url`, `page.start`, `page.end`, `page.total`, etc). This metadata is useful for things like a "Next Page" button or a "Showing 1-10 of 100" message.
+
+| Name | Type | Description |
+| :----------------- | :-------------------: | :-------------------------------------------------------------------------------------------------------------------------------- |
+| `page.data` | `Array` | Array of data returned from `data()` for the current page. |
+| `page.start` | `number` | Index of first item on current page, starting at `0` (e.g. if `pageSize: 25`, this would be `0` on page 1, `25` on page 2, etc.). |
+| `page.end` | `number` | Index of last item on current page. |
+| `page.size` | `number` | How many items per-page. |
+| `page.total` | `number` | The total number of items across all pages. |
+| `page.currentPage` | `number` | The current page number, starting with `1`. |
+| `page.lastPage` | `number` | The total number of pages. |
+| `page.url.current` | `string` | Get the URL of the current page (useful for canonical URLs) |
+| `page.url.prev` | `string \| undefined` | Get the URL of the previous page (will be `undefined` if on page 1). |
+| `page.url.next` | `string \| undefined` | Get the URL of the next page (will be `undefined` if no more pages). |
+
+### `rss()`
+
+RSS feeds are another common use-case that Astro supports natively. Call the `rss()` function to generate an `/rss.xml` feed for your project using the same data that you loaded for this page. This file location can be customized (see below).
+
+```js
+// Example: /src/pages/posts/[...page].astro
+// Place this function inside your Astro component script.
+export async function getStaticPaths({rss}) {
+ const allPosts = Astro.fetchContent('../post/*.md');
+ const sortedPosts = allPosts.sort((a, b) => new Date(b.date) - new Date(a.date));
+ // Generate an RSS feed from this collection
+ rss({
+ // The RSS Feed title, description, and custom metadata.
+ title: 'Don’s Blog',
+ description: 'An example blog on Astro',
+ customData: `<language>en-us</language>`,
+ // The list of items for your RSS feed, sorted.
+ items: sortedPosts.map(item => ({
+ title: item.title,
+ description: item.description,
+ link: item.url,
+ pubDate: item.date,
+ })),
+ // Optional: Customize where the file is written to.
+ // Defaults to "/rss.xml"
+ dest: "/my/custom/feed.xml",
+ });
+ // Return a paginated collection of paths for all posts
+ return [...];
+}
+```
+
+```ts
+// The full type definition for the rss() function argument:
+interface RSSArgument {
+ /** (required) Title of the RSS Feed */
+ title: string;
+ /** (required) Description of the RSS Feed */
+ description: string;
+ /** Specify arbitrary metadata on opening <xml> tag */
+ xmlns?: Record<string, string>;
+ /** Specify custom data in opening of file */
+ customData?: string;
+ /**
+ * Specify where the RSS xml file should be written.
+ * Relative to final build directory. Example: '/foo/bar.xml'
+ * Defaults to '/rss.xml'.
+ */
+ dest?: string;
+ /** Return data about each item */
+ items: {
+ /** (required) Title of item */
+ title: string;
+ /** (required) Link to item */
+ link: string;
+ /** Publication date of item */
+ pubDate?: Date;
+ /** Item description */
+ description?: string;
+ /** Append some other XML-valid data to this item */
+ customData?: string;
+ }[];
+}
+```
+
+## `import.meta`
+
+> In this section we use `[dot]` to mean `.`. This is because of a bug in our build engine that is rewriting `import[dot]meta[dot]env` if we use `.` instead of `[dot]`.
+
+All ESM modules include a `import.meta` property. Astro adds `import[dot]meta[dot]env` through [Snowpack](https://www.snowpack.dev/).
+
+**`import[dot]meta[dot]env[dot]SSR`** can be used to know when rendering on the server. Sometimes you might want different logic, for example a component that should only be rendered in the client:
+
+```jsx
+import { h } from 'preact';
+
+export default function () {
+ // Note: rewrite "[dot]" to "." for this to to work in your project.
+ return import[dot]meta[dot]env[dot]SSR ? <div class="spinner"></div> : <FancyComponent />;
+}
+```
+
+[canonical]: https://en.wikipedia.org/wiki/Canonical_link_element
diff --git a/smoke/docs-main/src/pages/es/reference/builtin-components.md b/smoke/docs-main/src/pages/es/reference/builtin-components.md
new file mode 100644
index 000000000..356a7d5f9
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/reference/builtin-components.md
@@ -0,0 +1,70 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Componentes integrados
+---
+
+Astro incluye varios componentes integrados para que los utilices en tus proyectos. Todos los componentes integrados están disponibles a través de `import {} from 'astro/components';`.
+
+## `<Code />`
+
+```astro
+---
+import { Code } from 'astro/components';
+---
+<!-- Resaltado de sintaxis de código JavaScript. -->
+<Code code={`const foo = 'bar';`} lang="js" />
+<!-- Opcional: personaliza tu tema. -->
+<Code code={`const foo = 'bar';`} lang="js" theme="dark-plus" />
+<!-- Opcional: habilite el ajuste de palabras. -->
+<Code code={`const foo = 'bar';`} lang="js" wrap />
+```
+
+Este componente proporciona resaltado de sintaxis para bloques de código en el momento de la compilación (no se incluye JavaScript del lado del cliente). El componente funciona internamente con shiki y es compatible con todos los [temas](https://github.com/shikijs/shiki/blob/main/docs/themes.md) populares y [lenguajes](https://github.com /shikijs/shiki/blob/main/docs/languages.md).
+
+También puede utilizar el componente `<Prism />` para el resaltado de sintaxis impulsado por la librería de resaltado de sintaxis [Prism](https://prismjs.com/). Esta es la librería que el Markdown de Astro usa por defecto. Sin embargo, cambiaremos todo el uso a `<Code>` a medida que avanzamos hacia nuestra versión v1.0.
+
+## `<Markdown />`
+
+```astro
+---
+import { Markdown } from 'astro/components';
+---
+<Markdown>
+ # ¡La sintaxis de Markdown ahora es compatible! **¡Hurra!**
+</Markdown>
+```
+
+Mira nuestra [Guía de Markdown](/es/guides/markdown-content) para más información.
+
+<!-- TODO: We should move some of the specific component info here. -->
+
+## `<Prism />`
+
+```astro
+---
+import { Prism } from 'astro/components';
+---
+<Prism lang="js" code={`const foo = 'bar';`} />
+```
+
+Este componente proporciona resaltado de sintaxis específico del lenguaje para bloques de código. Dado que esto nunca cambia en el cliente, tiene sentido usar un componente Astro (es igualmente razonable usar un componente de framework para este tipo de cosas; ¡Astro es solo servidor por defecto para todos los frameworks!).
+
+Consulta la [lista de lenguajes soportados por Prism](https://prismjs.com/#supported-languages) donde puedes encontrar undonde puede encontrar el alias correspondiente de un lenguaje. ¡Y también puedes mostrar tus bloques de código Astro con `lang="astro"`!
+
+## `<Debug />`
+
+```astro
+---
+import Debug from 'astro/debug';
+const serverObject = {
+ a: 0,
+ b: "string",
+ c: {
+ nested: "object"
+ }
+}
+---
+<Debug {serverObject} />
+```
+
+Este componente proporciona una forma de inspeccionar los valores en el lado del cliente, sin JavaScript.
diff --git a/smoke/docs-main/src/pages/es/reference/cli-reference.md b/smoke/docs-main/src/pages/es/reference/cli-reference.md
new file mode 100644
index 000000000..2c3c92f45
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/reference/cli-reference.md
@@ -0,0 +1,66 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Referencia de CLI
+---
+
+## Comandos
+
+### `astro dev`
+
+Ejecuta el servidor de desarrollo de Astro. Esto inicia un servidor HTTP que responde a las solicitudes de páginas almacenadas en `src/pages` (o la carpeta que se especifique en tu [configuración](/es/reference/configuration-reference)).
+
+**Flags**
+
+#### `--port`
+
+Especifica el puerto en el que se ejecutará. El valor predeterminado es `3000`.
+
+### `astro build`
+
+Crea tu sitio para producción.
+
+### `astro preview`
+
+Inicia un servidor de archivos estático local para servir tu directorio `dist/` construido. Útil para obtener una vista previa de tu compilación estática localmente, antes de desplegarla.
+
+Este comando está destinado únicamente a pruebas locales y no está diseñado para ejecutarse en producción. Para obtener ayuda con el alojamiento de producción, consulta nuestra guía sobre [DEspliegue de un sitio web Astro](/es/guides/deploy).
+
+## Global Flags
+
+### `--config path`
+
+Especifica la ruta al archivo de configuración. El valor predeterminado es `astro.config.mjs`. Use esto si usas un nombre diferente para su archivo de configuración o tienes tu archivo de configuración en otra carpeta.
+
+```shell
+astro --config config/astro.config.mjs dev
+```
+
+### `--project-root path`
+
+Especifica la ruta a la raíz del proyecto. Si no se especifica, se supone que el directorio de trabajo actual es la raíz.
+
+La raíz se utiliza para encontrar el archivo de configuración de Astro.
+
+```shell
+astro --project-root examples/snowpack dev
+```
+
+### `--reload`
+
+Borra la caché (las dependencias se crean dentro de las aplicaciones Astro).
+
+### `--verbose`
+
+Habilita el registro detallado, que es útil al depurar un problema.
+
+### `--silent`
+
+Habilita el registro silencioso, que es útil cuando no deseas ver los registros de Astro.
+
+### `--version`
+
+Imprima el número de versión de Astro y sale.
+
+### `--help`
+
+Imprime el mensaje de ayuda y sale.
diff --git a/smoke/docs-main/src/pages/es/reference/configuration-reference.md b/smoke/docs-main/src/pages/es/reference/configuration-reference.md
new file mode 100644
index 000000000..e103a321a
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/reference/configuration-reference.md
@@ -0,0 +1,28 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Referencia de Configuración
+---
+
+Para configurar Astro, agrega un archivo `astro.config.mjs` en la raíz de tu proyecto. Todos los ajustes son opcionales.
+
+Puedes ver la API de configuración completa (incluida la información sobre la configuración predeterminada) en [GitHub](https://github.com/withastro/astro/blob/latest/packages/astro/src/@types/config.ts).
+
+```js
+// Example: astro.config.mjs
+
+// @type-check habilitado!
+// VSCode y otros editores de texto habilitados para TypeScript proporcionarán autocompletado,
+// información sobre herramientas útiles y advertencias si el objeto exportado no es válido.
+// Puede desactivar esto eliminando los comentarios "@ts-check" y `@type` a continuación.
+
+// @ts-check
+export default /** @type {import('astro').AstroUserConfig} */ (
+ {
+ // ...
+ }
+);
+```
+
+## Configuración Snowpack
+
+Astro funciona internamente con Snowpack. Puedes configurar Snowpack directamente creando un archivo `snowpack.config.mjs`. Consulta [snowpack.dev](https://www.snowpack.dev/reference/configuration) para obtener la documentación completa sobre este archivo.
diff --git a/smoke/docs-main/src/pages/es/reference/renderer-reference.astro b/smoke/docs-main/src/pages/es/reference/renderer-reference.astro
new file mode 100644
index 000000000..431ec27f7
--- /dev/null
+++ b/smoke/docs-main/src/pages/es/reference/renderer-reference.astro
@@ -0,0 +1,12 @@
+---
+import { Markdown } from 'astro/components';
+import MainLayout from '~/layouts/MainLayout.astro';
+const [content] = Astro.fetchContent('/src/pages/en/reference/renderer-reference.md');
+---
+
+<MainLayout {content}>
+ <Markdown>
+ > Esta página todavía no está disponible en Español. Se muestra la versión en inglés.
+ </Markdown>
+ {content.astro.html}
+</MainLayout>
diff --git a/smoke/docs-main/src/pages/fi/getting-started.md b/smoke/docs-main/src/pages/fi/getting-started.md
new file mode 100644
index 000000000..c624281a7
--- /dev/null
+++ b/smoke/docs-main/src/pages/fi/getting-started.md
@@ -0,0 +1,57 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Aloittaminen
+---
+
+Astro on moderni työkalu staattisten sivustojen luomiseen. Voit löytää lisätietoa Astrosta englanniksi [kotisivultamme](https://astro.build/) tai [julkistusviestistämme](https://astro.build/blog/introducing-astro). Tämä sivu on yleiskatsaus Astron dokumentaatioon ja liittyviin sisältöihin.
+
+## Kokeile Astroa
+
+Helpoin tapa kokeilla Astroa on suorittaa `npm init astro` uudessa hakemistossa omalla koneellasi. Tämä CLI-komento käy lävitse tarvittavat vaiheet uuden Astro-projektin alkuunsaattamiseksi.
+
+[Asennusoppaastamme](/installation) löydät täyden läpikäynnin Astron saamiseksi käyttökuntoon.
+
+### Netin leikkikentät
+
+Sikäli jos sinua kiinnostaa kokeilla Astroa selaimessa, voit käyttää leikkikenttää netissä. Kokeile Hello World -templaattia [CodeSandboxissa](https://codesandbox.io/s/astro-template-hugb3).
+
+_Huomaa: jotkin toiminnallisuudet (mm. nopea päivitys) ovat toistaiseksi rajallisia CodeSandboxissa._
+
+## Astron oppiminen
+
+Ihmisillä on monenlaisia taustoja ja erilaisia oppimistyylejä. Toivomme sinun saavan irti tästä osiosta riippumatta siitä oletko enemmän teoriatason vaiko käytännön tason oppija.
+
+- Jos suosit **oppimista tekemällä**, kokeile aloittaa [esimerkkikirjastostamme](https://github.com/withastro/astro/tree/main/examples).
+- Jos suosit **konseptien oppimista vaihe vaiheelta**, kokeile aloittaa [peruskonsepteista ja oppaista](/core-concepts/project-structure).
+
+Astrolla on oma oppimiskäyränsä kuten millä tahansa ennestään tuntemattomalla teknologialla. Harjoittelulla ja kärsivällisyydellä _tulet_ pääsemään asioista kärryille.
+
+### `.astro`-syntaksin oppiminen
+
+Aloittaessasi Astrolla tulet kohtaamaan monia `.astro`-päätteellisiä tiedostoja. Nämä sisältävät **Astro-komponenttien syntaksia**, joka on erityistä HTML:n kaltaista templaattikieltä, jota Astro käyttää. Se on suunniteltu olemaan tuttu kenelle tahansa, jolla on kokemusta HTML:stä tai JSX:stä.
+
+Oppaamme [Astron komponenteista](/core-concepts/astro-components) esittelee uuden syntaksin ja on paras paikka sen opiskelulle.
+
+### API-luettelo
+
+Tämä dokumentaation osa on hyödyllisin halutessasi oppia yksityiskohtia tietystä Astron rajapinnasta. Muun muassa [asetusluettelo](/reference/configuration-reference) listaa kaikki mahdolliset asetusvaihtoehdot. [Ydinkomponenttien luettelo](/reference/builtin-components) listaa kaikki käytössä olevat Astron mukana tulevat komponentit kuten `<Markdown />` ja `<Code />`.
+
+### Dokumentaation versioinnista
+
+Tämä dokumentaatio edustaa aina Astron viimeisintä vakaata versiota. Saavutettuamme v1.0 virstanpylvään tulemme lisäämään mahdollisuuden tarkastella versioitua dokumentaatiota.
+
+## Pysyminen ajantasalla
+
+Twitterin [@astrodotbuild](https://twitter.com/astrodotbuild)-tunnus on virallinen lähde Astro-tiimin päivityksille.
+
+Tulemme kertomaan julkaisuista myös [Discord-yhteisössä](https://astro.build/chat) kanavalla #announcements.
+
+Kaikki Astro-julkaisut eivät tule olemaan oman blogikirjoituksensa arvoisia, mutta löydät yksityiskohtaisen muutoslokin jokaiselle julkaisulle [`CHANGELOG.md`-tiedostosta Astron repossa](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md).
+
+## Puuttuuko jotakin?
+
+Mikäli havaitset puutteita dokumentaatiossa tai että osa siitä ovat hämmentäviä, jätäthän [ilmoituksen dokumentaation ongelmasta](https://github.com/withastro/astro/issues/new/choose) sisältäen ehdotuksesi sen parantamiseksi, tai twiittaa [@astrodotbuild](https://twitter.com/astrodotbuild) Twitter-tunnukselle. Otamme palautetta vastaan mielellämme!
+
+## Kiitokset
+
+Tämä aloittamisen opas perustui alkujaan [Reactin](https://reactjs.org/) vastaavaan oppaaseen.
diff --git a/smoke/docs-main/src/pages/fi/installation.md b/smoke/docs-main/src/pages/fi/installation.md
new file mode 100644
index 000000000..a0e206c9f
--- /dev/null
+++ b/smoke/docs-main/src/pages/fi/installation.md
@@ -0,0 +1,93 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Asennus
+---
+
+Astron voi asentaa parilla eri tavalla uuteen projektiin.
+
+## Vaatimukset
+
+- **Node.js** - `v14.15.0`, `v16.0.0` tai uudempi.
+- **Tekstieditori** - Suosittelemme [VS Codea](https://code.visualstudio.com/) yhdessä [Astro-laajennoksen](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode) kanssa.
+- **Terminaali** - Astroa käytetään pääasiassa komentorivin kautta.
+
+## Suositeltu asennus
+
+`npm init astro` on helpoin tapa lisätä Astro uuteen projektiin. Komennon suorittaminen terminaalissa aloittaa `create-astro`-asennusvelhon, joka käy lävitse uuden projektin aloituksen.
+
+```bash
+mkdir <projektin-nimi>
+cd <projektin-nimi>
+npm init astro
+```
+
+Seuraa CLI-ohjelman ohjeistusta asentaaksesi Astron käyttäen yhtä virallisista aloitustemplaateista.
+
+Tämän jälkeen voit siirtyä [pika-aloitusoppaaseen](/quick-start#start-your-project) saadaksesi 30:n sekunnin yhteenvedon siitä, kuinka käynnistää uusi projekti kehittämistä varten, ja kuinka luoda siitä lopullinen sivusto!
+
+## Asentaminen itse
+
+### Projektin valmistelu
+
+Luo uusi tyhjä hakemisto jolla on projektisi nimi ja siirry siihen:
+
+```bash
+mkdir <projektin-nimi>
+cd <projektin-nimi>
+# Huomaa: korvaa <projektin-nimi> projektisi nimellä.
+```
+
+Luo uusi `package.json`-tiedosto projektille. Astro on suunniteltu toimimaan npm-ympäristössä, jota hallinnoidaan `package.json` sisältämien sääntöjen kautta. Mikäli `package.json` ei ole ennestään tuttu, niin suosittelemme tutustumaan [npm:n dokumentaatioon](https://docs.npmjs.com/creating-a-package-json-file).
+
+```bash
+# Tämä komento luo uuden package.json-tiedoston sisältäen muutaman peruskentän
+npm init --yes
+```
+
+### Asenna Astro
+
+Sinulla tulisi olla nyt hakemisto, josta löytyy yksittäinen `package.json`-tiedosto kun aiemmin mainitut toimet on tehty. Astron lisääminen projektiin on nyt mahdollista.
+
+Käytämme `npm`:ää esimerkeissämme, mutta vaihtoehtoisesti voit myös käyttää `yarn`:ia tai `pnpm`:ää. Sikäli jos kumpikaan `yarn` tahi `pnpm` ei ole tuttu, niin suosittelemme pitäytymistä `npm`:ssä.
+
+```bash
+npm install astro
+```
+
+Voit nyt vaihtaa oletuksena toimivan "scripts"-osion `npm init`in luomassa `package.json`:ssa seuraavasti:
+
+```diff
+ "scripts": {
+- "test": "echo \"Error: no test specified\" && exit 1"
++ "dev": "astro dev",
++ "build": "astro build",
++ "preview": "astro preview"
+ },
+}
+```
+
+### Lisää ensimmäinen sivu
+
+Avaa tekstieditori ja luo uusi tiedosto projektiin:
+
+```astro
+---
+// 1. Luo uusi tiedosto <projektin-hakemisto>/src/pages/index.astro
+// 2. Kopioi ja liitä tämä koko tiedosto (sisältäen `-` väliviivat) siihen.
+---
+<html lang="fi">
+ <body>
+ <h1>Moi maailma!</h1>
+ </body>
+</html>
+```
+
+Voit nyt lisätä uusia sivuja `src/pages`-hakemistoon Astron käyttäessä ennettua tiedostonimeä luodakseen uusia sivuja sivustolle. Jos esimerkiksi luot uuden tiedoston nimellä `src/pages/about.astro` (käyttäen edellistä koodia), niin Astro luo uuden sivun osoitteeseen `/about`.
+
+### Seuraavat vaiheet
+
+Näin se hoituu! Olet nyt valmis aloittamaan kehittämisen! Siirry [pika-aloitusoppaaseen](/quick-start#start-your-project) saadaksesi 30:n sekunnin läpikäynnin Astron käynnistämisestä ja projektin luomisesta sivustoksi!
+
+📚 Opi lisää Astron projektien rakenteesta [projektin rakenneoppaassa](/core-concepts/project-structure).
+📚 Opi lisää Astron komponenttien syntaksista [Astro-komponenttien oppaassa](/core-concepts/astro-components).
+📚 Opi lisää Astron tiedostoihin pohjautuvasta reitityksestä [reititysoppaassa](core-concepts/astro-pages).
diff --git a/smoke/docs-main/src/pages/fi/quick-start.md b/smoke/docs-main/src/pages/fi/quick-start.md
new file mode 100644
index 000000000..eb882b1eb
--- /dev/null
+++ b/smoke/docs-main/src/pages/fi/quick-start.md
@@ -0,0 +1,52 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Pika-aloitus
+---
+
+```shell
+# vaatimukset: varmista että Node.js on vähintään versiota 14.15.0+ tai 16+
+node --version
+
+# luo uuden projektin hakemisto ja siirry siihen
+mkdir astrokokeilu && cd "$_"
+
+# valmistaudu laukaisuun...
+npm init astro
+
+# asenna riippuvuudet
+npm install
+
+# aloita kehittäminen!
+npm run dev
+```
+
+```shell
+# kun olet valmis: luo oma staattinen sivustosi hakemistoon `dist/`
+npm run build
+```
+
+Astro-sivuston käyttöönotto tuotannossa vaatii `/dist`-hakemiston (joka luodaan suorittamalla `npm run build`) sisällön siirtämisen haluamallesi palveluntarjoajalle.
+
+[Luo lisää tästä Astron julkaisuoppaassa.](/guides/deploy)
+
+## Projektin käynnistäminen
+
+Siirry takaisin komentoriville ja suorita tämä komento projektin hakemistossa:
+
+```bash
+npm run dev
+```
+
+Tämän jälkeen ohjelma on käynnissä osoitteessa [http://localhost:3000](http://localhost:3000). Avaa tämä URL selaimessa nähdäksesi viestin "Moi maailma!", jonka kopioimme edellisessä vaiheessa.
+
+Astro seuraa muutoksia `src/`-hakemiston sisällä, joten ohjelmaa ei tarvitse käynnistää uudelleen tehdessäsi muutoksia siihen koodatessasi.
+
+## Sivuston luominen
+
+Palaa takaisin komentoriville ja suorita tämä komento projektin hakemistossa:
+
+```bash
+npm run build
+```
+
+Tämä muodostaa projektista valmiit sivuston tiedostot ja kirjoittaa ne `dist/`-hakemistoon. Astro-sivustot ovat staattisia, joten ne voi julkaista mille tahansa palveluntarjoajalle (Vercel, Netlify, S3 bucket, jne.).
diff --git a/smoke/docs-main/src/pages/fr/getting-started.md b/smoke/docs-main/src/pages/fr/getting-started.md
new file mode 100644
index 000000000..8a21033a6
--- /dev/null
+++ b/smoke/docs-main/src/pages/fr/getting-started.md
@@ -0,0 +1,59 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Bien démarrer
+---
+
+Astro est un générateur de site statique moderne. Comprenez ce qu'est Astro en visitant [notre page d'accueil](https://astro.build/) ou [notre annonce de sortie](https://astro.build/blog/introducing-astro). Cette page est une vue d'ensemble de la documentation d'Astro et de toutes les ressources associées.
+
+## Essayer Astro
+
+La manière la plus simple d'essayer Astro est de lancer `npm init astro` à partir d'un nouveau dossier depuis votre machine. Notre utilitaire CLI vous assistera dans la création d'un nouveau projet Astro.
+
+Pour bien débuter avec Astro en 5 étapes rapides et faciles, visitez notre [Guide de démarrage rapide](/fr/quick-start).
+
+Autrement, lisez notre [Guide d'installation](/fr/installation) pour un accompagnement pas-à-pas sur la mise en place d'Astro.
+
+### Terrains de jeu en ligne (Online Playground)
+
+Si vous voulez tester Astro directement dans votre navigateur, vous pouvez utiliser un playground en ligne. Essayez notre modèle "Hello World!" sur [CodeSandbox](https://codesandbox.io/s/astro-template-hugb3).
+
+_Note: quelques-unes des fonctionnalités (ex : Rafraîchissement Rapide) sont pour le moment limitées sur CodeSandbox._
+
+## Apprendre Astro
+
+Tous les développeurs qui essaient Astro n'ont ni la même expérience, ni les mêmes méthodes d'apprentissage. Que vous préfériez une approche plutôt théorique ou pratique, nous espérons que vous trouverez l'aide qu'il vous faut dans cette section.
+
+- Si vous préférez une **approche pratique**, commencez avec notre [librairie d'exemples](https://github.com/withastro/astro/tree/main/examples).
+- Si vous préférez **apprendre les concepts étape par étape**, commencez avec nos [fondamentaux et guides](/core-concepts/project-structure).
+
+Comme toute nouvelle technologie, Astro possède une certaine courbe d'apprentissage. Malgré cela, avec de la pratique et de la patience, nous savons, que _vous_ allez prendre la main, en très peu de temps.
+
+### Apprendre la syntaxe `.astro`
+
+Quand vous débutez l'apprentissage d'Astro, vous allez rencontrer beaucoup de fichier avec l'extension `.astro`. C'est la **Syntaxe des Composants Astro** : des fichiers particuliers avec un format similaire au HTML qu'Astro utilise comme template. Ils ont été conçus pour être familiers à toute personne ayant une expérience avec le HTML ou le JSX.
+
+Notre guide sur les [composants Astro](/core-concepts/astro-components) vous présente la syntaxe Astro et reste la meilleure façon d'apprendre.
+
+### Documentation de l'API
+
+Cette documentation vous sera utile si vous souhaitez comprendre en détails certaines API d'Astro. Par exemple, la [Documentation de la Configuration](/reference/configuration-reference) liste toutes les options de configuration à votre disposition. La [Documentation des Composants de base](/reference/builtin-components) liste tous les composants disponibles de base, comme `<Markdown />` et `<Code />`.
+
+### Documentation versionnée
+
+Cette documentation reflète toujours la dernière version stable d'Astro. Dès que nous auront atteint l'étape de la v1.0, nous ajouterons la possibilité de parcourir la documentation versionnée.
+
+## Rester informé
+
+Le compte Twitter [@astrodotbuild](https://twitter.com/astrodotbuild) est la source officielle d'information de l'équipe Astro.
+
+Nous publions également les annonces de nouvelles versions sur notre [Communauté Discord](https://astro.build/chat) dans le salon #announcements.
+
+Toutes les releases d'Astro ne requièrent pas leur propre article de blog, mais vous pouvez trouver un changelog détaillé de toutes les releases dans le [fichier `CHANGELOG.md` du dépôt Astro](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md).
+
+## Quelque chose vous manque ?
+
+Si vous pensez que quelque chose manque dans la documentation ou si vous en trouvez une partie déroutante, veuillez [créer une "issue" sur le dépôt de la documentation](https://github.com/withastro/astro/issues/new/choose) avec vos suggestions d'amélioration, ou bien mentionnez le compte [@astrodotbuild](https://twitter.com/astrodotbuild) sur Twitter. Nous adorons avoir de vos nouvelles !
+
+## Crédits
+
+Ce guide de démarrage est basé sur le guide "Bien débuter" de [React](https://reactjs.org/).
diff --git a/smoke/docs-main/src/pages/fr/installation.md b/smoke/docs-main/src/pages/fr/installation.md
new file mode 100644
index 000000000..7ef5cade9
--- /dev/null
+++ b/smoke/docs-main/src/pages/fr/installation.md
@@ -0,0 +1,159 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Installation
+---
+
+Il y a plusieurs façons d'installer Astro dans un nouveau projet.
+
+## Prérequis
+
+- **Node.js** - `v14.15.0`, `v16.0.0`, or plus.
+- **Éditeur de texte** - Privilégiez [VS Code](https://code.visualstudio.com/) et [l'extension Astro officielle](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode).
+- **Terminal** - Astro s'utilise principalement en ligne de commande.
+
+Ce guide utilise [`npm`](https://www.npmjs.com/) dans les exemples ci-après, mais vous pouvez utiliser [`yarn`](https://yarnpkg.com/) ou [`pnpm`](https://pnpm.io/) si vous y êtes habitué·e.
+
+## Initialisation complète
+
+`npm init astro` est le moyen le plus facile de créer un nouveau projet avec Astro. Entrez cette commande dans un terminal pour lancer `create-astro`, l'assistant d'installation.
+
+```bash
+# Avec NPM
+npm init astro
+
+# Yarn
+yarn create astro
+```
+
+L'assistant d'installation [`create-astro`](https://github.com/withastro/astro/tree/main/packages/create-astro) vous propose de choisir entre différents [squelettes d'application](/examples), mais offre aussi la possibilité d'importer un projet Astro directement depuis GitHub.
+
+```bash
+# Note : remplacez "my-astro-project" avec le nom de votre projet.
+
+# npm 6.x
+npm init astro my-astro-project --template starter
+# npm 7+ (tiret -- supplémentaire)
+npm init astro my-astro-project -- --template starter
+# yarn
+yarn create astro my-astro-project --template starter
+# À partir d'un template disponible sur GitHub
+npm init astro my-astro-project -- --template [GITHUB_USER]/[REPO_NAME]
+# ... ou si ce template ce trouve à l'intérieur d'un dépôt GitHub
+npm init astro my-astro-project -- --template [GITHUB_USER]/[REPO_NAME]/path/to/template
+```
+
+Après que `create-astro` a mis en place l'architecture de votre projet, n'oubliez pas d'installer les dépendances avec npm, yarn ou pnpm. Par exemple avec npm:
+
+```bash
+npm install
+```
+
+Vous pouvez maintenant [lancer](#démarrer-astro) votre projet. Une fois votre projet prêt à être déployé, vous pourrez [le compiler](#compiler-avec-astro). Astro va empaqueter votre application et produire les fichiers statiques nécessaires pour que vous puissiez [déployer](/guides/deploy) votre application.
+
+## Installation manuelle
+
+Vous pouvez installer Astro en vous passant de l'assistant `create-astro` avec les quelques étapes suivantes.
+
+### Créer un projet
+
+```bash
+# Créez et placez vous dans un nouveau dossier
+mkdir my-astro-project
+cd my-astro-project
+```
+
+### Créer un `package.json`
+
+```bash
+# Cette commande va créer un fichier package.json basique
+npm init --yes
+```
+
+Astro est conçu pour fonctionner avec tout l'ecosystème npm. Cela est rendu possible par un fichier de projet nommé `package.json` à la racine de votre projet. Si vous n'êtes pas familier·e avec le fichier `package.json`, nous vous recommandons fortement de lire [la documentation officielle sur le site de npm](https://docs.npmjs.com/creating-a-package-json-file).
+
+### Installer Astro
+
+En suivant les instructions précédentes, vous devriez avoir un dossier avec un seul fichier `package.json` dedans. Vous pouvez maintenant ajouter Astro à votre projet.
+
+```bash
+npm install astro
+```
+
+Vous pouvez aussi remplacer la section "scripts" du fichier `package.json` avec les lignes suivantes :
+
+```diff
+ "scripts": {
+- "test": "echo \"Error: no test specified\" && exit 1"
++ "dev": "astro dev",
++ "build": "astro build",
++ "preview": "astro preview"
+ },
+}
+```
+
+La commande [`dev`](#start-astro) démarre le serveur de développement Astro à l'adresse `http://localhost:3000`. Une fois votre projet terminé, la commande [`build`](#build-astro) produit votre site dans le dossier `dist/`. [En savoir plus sur le déploiement d'un site développé avec Astro.](/guides/deploy)
+
+### Créer une première page
+
+Ouvrez votre éditeur favori, et créez un nouveau fichier :
+
+1. Créez un nouveau fichier à l'emplacement `src/pages/index.astro`.
+2. Copiez-collez l'extrait suivant (`---` compris) dedans.
+
+```astro
+---
+// Le code JS/TS écrit entre les (---) n'est exécuté que par le serveur
+console.log('Coucou dans le terminal')
+---
+
+<html>
+ <body>
+ <h1>Hello, World!</h1>
+ </body>
+</html>
+
+<style lang="scss">
+ body {
+ h1 {
+ color: orange;
+ }
+ }
+</style>
+
+<script>
+ // Le code JS écrit ici n'est exécuté que dans le navigateur
+ console.log('Coucou dans la console du navigateur')
+</script>
+```
+
+Vous venez de lire un exemple de syntaxe des composants Astro, inspirée par le HTML et le JSX.
+
+Vous pouvez continuer à ajouter des fichiers dans le dossier `src/pages`, et Astro se servira du nom du fichier pour ajouter des pages à votre site. Par exemple, si vous ajoutez une page `src/pages/a-propos.astro` (par exemple en reprenant le code ci-dessus), Astro va générer une nouvelle page à l'adresse `http://localhost:3000/a-propos`.
+
+## [Démarrer Astro](#démarrer-astro)
+
+```bash
+npm run dev
+```
+
+Astro va démarrer votre site à l'adresse `http://localhost:3000`. En ouvrant cette URL dans votre navigateur, vous devriez voir s'afficher "Hello, World", ou bien la page créée précédemment.
+
+## [Compiler avec Astro](#compiler-avec-astro)
+
+```bash
+npm run build
+```
+
+Astro va produire une version allégée du site et la sauvegarder directement sur le disque. Votre application se trouvera dans le dossier `dist/`.
+
+## Prochaines étapes
+
+Vous êtes désormais prêt·e à développer !
+
+Nous vous recommandons de prendre le temps de vous familiariser avec Astro et son fonctionnement. Nous vous recommandons les guides suivants :
+
+📚 En savoir plus sur [la structure des projets Astro](/core-concepts/project-structure).
+
+📚 En savoir plus sur [la syntaxe des composants Astro](/core-concepts/astro-components).
+
+📚 En savoir plus sur [la génération des adresses à partir de l'arborescence.](/core-concepts/astro-pages).
diff --git a/smoke/docs-main/src/pages/fr/quick-start.md b/smoke/docs-main/src/pages/fr/quick-start.md
new file mode 100644
index 000000000..bc3c124dc
--- /dev/null
+++ b/smoke/docs-main/src/pages/fr/quick-start.md
@@ -0,0 +1,72 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Démarrage rapide
+---
+
+```shell
+# Prérequis : vérifiez que Node.js est en version 14.15.0+, ou 16+
+node --version
+
+# Créez un nouveau dossier, et placez-vous dedans
+mkdir my-astro-project && cd $_
+
+# Attention au décollage...
+npm init astro
+
+# Installez les dépendances
+npm install
+
+# Commencez à coder !
+npm run dev
+```
+
+```shell
+# Quand votre site est fin prêt, compilez-en une version statique dans le dossier `dist/`
+npm run build
+```
+
+Si vous désirez en savoir plus sur les différentes façons d'installer Astro dans votre projet, [lisez notre guide d'installation](installation).
+
+## Commencez votre projet
+
+Depuis un terminal ouvert dans votre projet, entrez la commande suivante :
+
+```bash
+npm run dev
+```
+
+Astro va lancer un serveur local sur [http://localhost:3000](http://localhost:3000). Ouvrez cette adresse dans votre navigateur, et vous devriez voir le "Hello, World" d'Astro.
+
+Vous n'avez jamais besoin de redémarrer Astro : à chaque modification dans le dossier `src/`, le serveur recompile votre site.
+
+## Compilez votre projet
+
+Pour compiler votre projet, entrez la commande suivante dans un terminal :
+
+```bash
+npm run build
+```
+
+Astro va produire une version allégée de votre site et la sauvegarder directement sur le disque. Votre application se trouvera dans le dossier `dist/`.
+
+## Mettez en production
+
+Les sites compilés avec Astros sont statiques, et peuvent par conséquent être déployés par votre hébergeur préféré :
+
+- [Vercel](https://vercel.com/)
+- [Netlify](https://www.netlify.com/)
+- [S3 bucket](https://aws.amazon.com/s3/)
+- [Google Firebase](https://firebase.google.com/)
+- [Lire le guide de déploiement sur la documentation Astro](/guides/deploy)
+
+## Prochaines étapes
+
+Vous êtes désormais prêt·e à développer !
+
+Nous vous recommandons de prendre le temps de vous familiariser avec Astro et son fonctionnement. Nous vous recommandons les guides suivants :
+
+📚 En savoir plus sur [la structure des projets Astro](/core-concepts/project-structure).
+
+📚 En savoir plus sur [la syntaxe des composants Astro](/core-concepts/astro-components).
+
+📚 En savoir plus sur [la génération des adresses à partir de l'arborescence.](/core-concepts/astro-pages).
diff --git a/smoke/docs-main/src/pages/hu/getting-started.md b/smoke/docs-main/src/pages/hu/getting-started.md
new file mode 100644
index 000000000..17736b25a
--- /dev/null
+++ b/smoke/docs-main/src/pages/hu/getting-started.md
@@ -0,0 +1,76 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Első lépések
+description: Bevezetés az Astro-ba.
+---
+
+Astro egy modern statikus oldal generátor. Tudj meg többet a [honlapunkon](https://astro.build/) vagy [kiadásról szóló posztunkból](https://astro.build/blog/introducing-astro). Ez az oldal egy áttekintő az Astro dokumentációhoz és minden hozzá kapcsolódó forráshoz.
+
+## Az Astro kipróbálása
+
+Az Astro kipróbálásának legegyszerűbb módja az `npm init astro` parancs futtatása egy új mappában a saját számítógépeden. A parancssoros varázsló végigvezet egy új Astro projekt beállításán.
+
+Ha hamarabb munkához látnál, látogasd meg a [Gyors beállítás - útmutató](/hu/quick-start) oldalunkat.
+
+Ellenkező esetben, olvasd el a [Telepítési útmutató](/hu/installation) oldalunkat, ahol részletesen megtudhatod hogyan telepítsd és állítsd be az Astro-t.
+
+### Minta projektek
+
+Ha jobban szeretsz példák alapján tanulni, nézd meg a [komplett példa gyűjteményünket](https://github.com/withastro/astro/tree/main/examples) GitHub-on.
+
+Bármelyik minta projektet kipróbálhatod a saját számítógépeden az `npm init astro` parancs lefuttatásával és a `--template` paraméterrel. A `--template` paraméter támogatja a harmadik féltől és a közösségtől származó mintákat is.
+
+```bash
+# Inicializáló parancs futtatása a kiválasztott hivatalos mintával
+npm init astro -- --template [HIVATALOS_MINTA_NEVE]
+# Inicializáló parancs futtatása egy közösségi mintával
+npm init astro -- --template [GITHUB_FELHASZNÁLÓ]/[REPO_NEVE]
+npm init astro -- --template [GITHUB_FELHASZNÁLÓ]/[REPO_NEVE]/minta/elérési/útvonala
+```
+
+### Online Játszótér
+
+Ha előbb szeretnéd az Astro-t a böngésződben kipróbálni, pillanatok alatt létrehozhatsz egy új Astro projektet az [astro.new](https://astro.new/) oldalunkon.
+
+Ezen felül az Astro elérhető olyan online kód szerkesztőkben is mint a Stackblitz, CodeSandbox, Gitpod, és GitHub Codespaces. Kattints az "Open in Stackblitz" gombra bármelyik mintánknál a [minta gyűjteményeink](https://github.com/withastro/astro/tree/main/examples) között. Vagy, [kattints ide](https://stackblitz.com/fork/astro) és automatikusan elindul egy új Astro projekt [Stackblitz-en](https://stackblitz.com/fork/astro).
+
+## Tanuld meg az Astro-t
+
+Különböző emberek különféle nyelvekből és háttérből érkeznek az Astro-hoz. Akár az elméleti, akár a gyakorlati tanulást preferálod, reméljük ez a szekció a segítségedre lesz.
+
+- Ha szeretsz **gyakorlással tanulni**, látogass el a [minta gyűjteményeink közé](https://github.com/withastro/astro/tree/main/examples).
+- Ha szereted **az alapokat lépésről lépésre elsajátítani**, kezdd az [alap koncepciókkal és útmutatókkal](/en/core-concepts/project-structure).
+
+Mint minden új technológiának, az Astronak is van egy tanulási görbéje. Azonban gyakorlással és egy kis türelemmel, tudjuk, hogy _meg fogod tanulni_ pillanatokon belül.
+
+### A `.astro` szintaxisa
+
+Amint nekilátsz az Astro tanulásának, hamar észreveheted hogy nagyon sok fájl a `.astro` kiterjesztést használja. Ez az **Astro komponens szintaxisa**: egy különleges HTML-szerű fájlformátum amit az Astro a sablonozáshoz használ. Úgy terveztük hogy ismerős legyen mindenki számára akinek van HTML vagy JSX tapasztalata.
+
+Az [Astro komponensek](/en/core-concepts/astro-components) útmutatónk bevezet az Astro szintaktika világába, a lehető leghatékonyabb módon.
+
+### API Referencia
+
+Ez a szekció hasznos lehet, ha valamelyik konkrét Astro API-ről szeretnél tanulni. Például a [Beállítások Referencia](/en/reference/configuration-reference) kilistázza az összes elérhető opciót a beállításokhoz.
+A [Beépített Komponensek Referencia](/en/reference/builtin-components) kilistázza az összes beépített komponenst, mint
+például a `<Markdown />` és a `<Code />`.
+
+### Verzió kezelt Dokumentáció
+
+Ez a dokumentáció mindig a legfrissebb stabil Astro verziót tükrözi. Amint elérjük a v1.0 mérföldkövet, beépítésre kerül a verziókövetett dokumentáció is.
+
+## Maradj naprakész
+
+Az [@astrodotbuild](https://twitter.com/astrodotbuild) Twitter felhasználó a hivatalos csatornánk ahol új információkat szerezhetsz az Astro csapattól.
+
+Ezen felül az egyes verziók megjelenését bejelentjük a [Discord szerverünkön](https://astro.build/chat) is az #announcements csatornán.
+
+Nem minden verizó kiadás érdemel meg egy külön posztot, de minden verzióhoz találsz részletes naplót, - ahol láthatod mi változott - a [`CHANGELOG.md` fájlban GitHubon](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md).
+
+## Valami hiányzik?
+
+Ha valami hiányzik a dokumentációból, vagy valami féélreérthető, kérjük [készíts egy bejelentést hozzá](https://github.com/withastro/astro/issues/new/choose) a javaslataiddal, vagy tweetelj az [@astrodotbuild](https://twitter.com/astrodotbuild) Twitter fiókunknak. Örömmel hallanánk mit gondolsz!
+
+## Elismerés
+
+Ez az 'Első Lépések' útmutató a [React](https://reactjs.org/) útmutatója alapján készült.
diff --git a/smoke/docs-main/src/pages/hu/installation.md b/smoke/docs-main/src/pages/hu/installation.md
new file mode 100644
index 000000000..7a311c9af
--- /dev/null
+++ b/smoke/docs-main/src/pages/hu/installation.md
@@ -0,0 +1,176 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Telepítés
+description: Hogyan telepítsd fel az Astro-t NPM, PNPM vagy Yarn használatával.
+---
+
+Több opcióból is választhatsz hogy miként szeretnéd az Astro-t egy új projektben telepíteni.
+
+## Előzetes követelmények
+
+- **Node.js** - `14.15.0`, `v16.0.0`, vagy magasabb verzió.
+- **Szöveg szerkesztő** - Mi a [VS Code-ot](https://code.visualstudio.com/) ajánljuk a saját [Hivatalos Astro bővítményünkkel](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode).
+- **Terminál** - Az Astro elsődlegesen terminál alól érhető el.
+
+A bemutató kedvéért [`npm`](https://www.npmjs.com/) csomagkezelőt fogunk használni az alábbi példákban, de ugyanúgy használhatod [`yarn`-al](https://yarnpkg.com/) vagy [`pnpm`-el](https://pnpm.io/) ha azokat jobban szereted.
+
+## Az Astro létrehozása
+
+`npm init astro` a legegyszerűbb módja hogy telepítsd az Astro-t egy új projekthez. Futtasd le ezt a parancsot a terminálban, ez elindítja a `create-astro` varázslót ami végigvezet a projekt beállításán.
+
+```shell
+# NPM-el
+npm init astro
+
+# Yarn-al
+yarn create astro
+
+# Pnpm-el
+pnpm create astro
+```
+
+[`create-astro`](https://github.com/withastro/astro/tree/main/packages/create-astro) varázsló felajánlja hogy válassz a [kezdő minták közül](https://github.com/withastro/astro/tree/main/examples) vagy, importálhatod a saját Astro projektedet GitHub-ról.
+
+```bash
+# Megjegyzés: Cseréld ki a "my-astro-project"-et a saját projekted nevére.
+
+# npm 6.x
+npm init astro my-astro-project --template starter
+# npm 7+ (extra dupla-kötőjel szükséges)
+npm init astro my-astro-project -- --template starter
+# yarn
+yarn create astro my-astro-project --template starter
+# pnpm
+pnpm create astro my-astro-project -- --template starter
+# Harmadik féltől származó minta használata
+npm init astro my-astro-project -- --template [GITHUB_FELHASZNÁLÓ]/[REPO_NEVE]
+# Harmadik féltől származó, repo-ban elhelyezett minta használata
+npm init astro my-astro-project -- --template [GITHUB_FELHASZNÁLÓ]/[REPO_NEVE]/minta/elérési/útvonala
+```
+
+Miután a `create-astro` végez a projekteddel, ne felejtsd el feltelepíteni a függőségeket npm-el vagy az általad választott csomagkezelővel. Ebben a példában npm-et használunk:
+
+```bash
+npm install
+```
+
+Most már [Elindíthatod](#start-astro) az Astro projektedet. Amint összeállítottad a projektet [Megépítheted azt.](#build-astro) Az Astro ezután csomagolja az alkalmazásodat, így a statikus fájlaid készen állnak a [Kitelepítésre](/en/guides/deploy) a kedvenc szolgáltatódhoz.
+
+## Kézi Telepítés
+
+Az Astro-t telepítheted a `create-astro` varázsló segítsége nélkül is. Alább láthatod a pár extra lépésrt amire szükséged lesz hozzá.
+
+### Állítsd be a projektedet
+
+```bash
+# Csinálj egy új mappát és lépj bele
+mkdir my-astro-project
+cd my-astro-project
+```
+
+Csinálj egy üres mappát a projekted nevével, majd lépj bele:
+
+### Hozd létre a `package.json` fájlt
+
+```bash
+# Ez a parancs létrehoz neked egy alap package.json fájlt
+npm init --yes
+```
+
+Az Astro-t úgy terveztük hogy működjön a teljes npm csomagrendszerrel. Ezt egy projekt nyilvántartás vezérli, a projekted gyökérkönyvtárában amit `package.json`-ként ismerhetsz. Ha nem ismerős a `package.json` fájl, javasoljuk hogy olvasd át annak működését az [npm dokumentációjában](https://docs.npmjs.com/creating-a-package-json-file).
+
+### Az Astro telepítése
+
+Ha követted a fenti utasításokat, egy mappád kell legyen, benne egy darab `package.json` fájllal. Mostmár telepítheted az Astro-t a projektedhez.
+
+```bash
+npm install astro
+```
+
+Következő lépésben lecserélheted az ideiglenes "scripts" szekciót a `package.json` fájlban amint az `npm init` hozott létre neked, az alábbira:
+
+```diff
+ "scripts": {
+- "test": "echo \"Error: no test specified\" && exit 1"
++ "dev": "astro dev",
++ "build": "astro build",
++ "preview": "astro preview"
+ },
+}
+```
+
+A [`dev`](#start-astro) parancs elindítja az Astro Fejlesztői Szerverét a `http://localhost:3000` címen. Amikor a projekted elkészül a [`build`](#build-astro) parancs megépíti a projektedet a `dist/` mappába. [Az Astro kiépítéséről többet olvashatsz a Kiépítési útmutatónkban.](/en/guides/deploy)
+
+### Hozd létre az első oldalad
+
+Nyisd meg a kedvenc szöveg szerkesztődet és hozz létre egy új fájlt a projektedben:
+
+1. Hozz létre egy új fájlt: `src/pages/index.astro`
+2. Másold bele az alábbi kódrészletet (beleértve a `---` is).
+
+```astro
+---
+// JS/TS kódot írhatsz a (---) blokkba,
+// ez csak és kizárólag a szerveren fut!
+console.log('A parancssorban láthatsz engem!')
+---
+
+<html>
+ <body>
+ <h1>Hello, World!</h1>
+ </body>
+</html>
+
+<style lang='css||scss'>
+ body{
+ h1{
+ color:orange;
+ }
+ }
+</style>
+
+<script>
+ // JS kód amit ide írsz csak és kizárólag a böngészőben fut!
+ console.log('A böngésző konzolban láthatsz engem!')
+</script>
+```
+
+A fenti az Astro Komponens Szintaxis példája, ami egyszerre áll HTML-ből és JSX-ből.
+
+Létrehozhatsz több oldalt az `src/pages` mappában. Az Astro a fájlok nevét fogja felhasználni hogy új oldalakat hozzon létre a weboldaladon. Például, ha létrehozol egy új fájlt az `src/pages/about.astro` címen (az előző kódrészletet felhasználva), az Astro generál neked egy új oldalt amit a `http://localhost/about` címen érsz el.
+
+## [Astro Indítása](#start-astro)
+
+```bash
+npm run dev
+```
+
+Az Astro mostantól a `http://localhost:3000` címen futtatja az alkalmazásodat. Ha megnyitod ezt a linket a böngésződben, látnod kell az Astro "Hello, World" mintaprogramját.
+
+Ha meg kell osztanod a helyi hálózaton, hogy hogyan halad a fejlesztés, vagy megnéznéd a mobilodról, csak add hozzá a következő opciót az `astro.config.mjs` fájlhoz:
+
+```js
+devOptions: {
+ hostname: '0.0.0.0',
+}
+```
+
+## [Astro Megépítése](#build-astro)
+
+```bash
+npm run build
+```
+
+Ez utasítja az Astro-t hogy építse meg az oldaladat és mentse közvetlenül a lemezre. Az alkalamzásod mostantól készen áll a `dist/` mappában.
+
+## Következő lépések
+
+Siker! Mostmár elkezdheted a fejlesztést!
+
+Javasoljuk hogy fordítsd egy kis időt az Astro megismerésére. Ehhez nézd át a dokumentációnkat. Javasoljuk az alábbi linkeket
+
+📚 Tudj meg többet az Astro projekt struktúrájáról a [Projekt Struktúra útmutatóval.](/en/core-concepts/project-structure)
+
+📚 Tudj meg többet a komponens szintaxisról az [Astro Komponensek útmutatóval.](/en/core-concepts/astro-components)
+
+📚 Tudj meg többet az Astro fájl-alapú átirányításáról az [Átirányítási útmutatóval.](/en/core-concepts/astro-pages)
diff --git a/smoke/docs-main/src/pages/hu/quick-start.md b/smoke/docs-main/src/pages/hu/quick-start.md
new file mode 100644
index 000000000..0386fde06
--- /dev/null
+++ b/smoke/docs-main/src/pages/hu/quick-start.md
@@ -0,0 +1,77 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Gyors beállítás
+description: A legegyszerűbb módja hogy minél hamarabb elkezdhess dolgozni az Astro-val.
+---
+
+```shell
+# követelmények: ellenőrizd hogy a Node.js legalább 14.15.0+, vagy 16+ veziójú
+node --version
+
+# Csinálj egy új mappát és lépj is bele
+mkdir my-astro-project && cd $_
+
+# felszállásra készülj...
+npm init astro
+
+# függőségek telepítése
+npm install
+
+# kezdődhet a fejlesztés!
+npm run dev
+```
+
+Az elkészült weboldalakhoz,
+
+```shell
+# amikor elkészültél: építsd meg a statikus oldalad a `dist/` mappába
+npm run build
+```
+
+Ha többet szeretnél megtudni az Astro telepítéséről és első használatáról, kérünk [olvasd el a telepítési útmutatónkat.](/hu/installation)
+
+Ha jobban szeretsz példák alapján tanulni, nézd meg a [komplett példa gyűjteményünket](https://github.com/withastro/astro/tree/main/examples) GitHub-on. Bármelyik minta projektet kipróbálhatod a saját számítógépeden az `npm init astro -- --template "MINTA_NÉV"` parancs használatával.
+
+## Indítsd el a projektedet
+
+A projekted mappájában, írd be az alábbi parancsot a terminálba:
+
+```bash
+npm run dev
+```
+
+Mostantól az Astro alkalmazásod elérhető a [http://localhost:3000](http://localhost:3000) címen. Ha megnyitod ezt a címet a böngésződben, látnod kell az Astro saját "Hello, World"-jét.
+
+A szerver autómatikusan figyeli az `src/` mappában történő változásokat, így nem kell újraindítanod az alkalmazást ha bármit módosítasz.
+
+## A projekted megépítése
+
+A projekted megépítéséhez a projekt mappában futtasd le az alábbi parancsot:
+
+```bash
+npm run build
+```
+
+Ez a parancs utasítja az Astro-t hogy építse meg az oldaladat, és mentse el a háttértárolóra. Az alkalmazásod mostantól készen áll a `dist/` mappában.
+
+## A projekted kiépítése
+
+Az Astro oldalak statikusak, így bármelyik kedvenc szolgáltatódnál elhelyezheted őket:
+
+- [AWS S3 bucket](https://aws.amazon.com/s3/)
+- [Google Firebase](https://firebase.google.com/)
+- [Netlify](https://www.netlify.com/)
+- [Vercel](https://vercel.com/)
+- [Tudj meg többet az Astro kiépítéséről a Kiépítési útmutatóval.](/en/guides/deploy)
+
+## Következő lépések
+
+Siker! Mostmár elkezdheted a fejlesztést!
+
+Javasoljuk hogy fordítsd egy kis időt az Astro megismerésére. Ehhez nézd át a dokumentációnkat. Javasoljuk az alábbi linkeket
+
+📚 Tudj meg többet az Astro projekt struktúrájáról a [Projekt Struktúra útmutatóval.](/en/core-concepts/project-structure)
+
+📚 Tudj meg többet a komponens szintaxisról az [Astro Komponensek útmutatóval.](/en/core-concepts/astro-components)
+
+📚 Tudj meg többet az Astro fájl-alapú átirányításáról az [Átirányítási útmutatóval.](/en/core-concepts/astro-pages)
diff --git a/smoke/docs-main/src/pages/index.astro b/smoke/docs-main/src/pages/index.astro
new file mode 100644
index 000000000..f619ac7a0
--- /dev/null
+++ b/smoke/docs-main/src/pages/index.astro
@@ -0,0 +1,20 @@
+---
+import Layout from '../layouts/MainLayout.astro';
+---
+
+<meta http-equiv="refresh" content="5;url=/en/getting-started" />
+<script>
+ // WIP: trigger a client-side redirect based on the browser language.
+ // A vercel.json redirect is enforced in production, so no user should ever see this page.
+ // Remove the vercel.json redirect when this is ready.
+ const KNOWN_LANGUAGES = ['bg', 'de', 'en', 'es', 'fi', 'nl', 'pt-br', 'zh-CN', 'zh-TW', 'fr', 'kr', 'da', 'ja', 'pl', 'hu'];
+ let newLangWithRegion = (window.navigator.userLanguage || window.navigator.language || 'en-US').substr(0, 5);
+ let newLang = newLangWithRegion.substr(0, 2);
+ if (KNOWN_LANGUAGES.includes(newLangWithRegion)) {
+ window.location.pathname = '/' + newLangWithRegion + '/getting-started';
+ } else if (KNOWN_LANGUAGES.includes(newLang)) {
+ window.location.pathname = '/' + newLang + '/getting-started';
+ } else {
+ window.location.pathname = '/en/getting-started';
+ }
+</script>
diff --git a/smoke/docs-main/src/pages/it/getting-started.md b/smoke/docs-main/src/pages/it/getting-started.md
new file mode 100644
index 000000000..a1887ccdd
--- /dev/null
+++ b/smoke/docs-main/src/pages/it/getting-started.md
@@ -0,0 +1,72 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Come iniziare
+description: Una guida introduttiva ad Astro.
+---
+
+Astro è un generatore moderno di siti statici. Scopri di più su Astro dalla [nostra homepage](https://astro.build/) o dal nostro [post di rilascio](https://astro.build/blog/introducing-astro). Questa pagina è una panoramica della documentazione di Astro e di tutte le risorse correlate.
+
+## Prova Astro
+
+Il modo più semplice per provare Astro è lanciare `npm init astro` in una nuova cartella nella tua macchina. La procedura guidata da CLI ti assisterà nell'avvio di un nuovo progetto Astro.
+
+Puoi iniziare da subito con Astro in 5 passi semplici, attraverso la nostra [Guida Rapida all'Avvio](/quick-start).
+
+In alternativa, leggi la nostra [Guida all'Installazione](/installation) per una panoramica più completa su come impostare Astro.
+
+### Esempi
+
+Se preferisci imparare Astro tramite esempi, dai un'occhiata alla nostra [libreria completa degli esempi](https://github.com/withastro/astro/tree/main/examples) su GitHub.
+
+Puoi testare uno qualsiasi di questi esempi sulla tua macchina locale lanciando `npm init astro` con la flag `--template` da CLI. La flag `--template` supporta anche template di terze parti della community.
+
+```bash
+# Avvia la procedura guidata e usa questo template ufficiale
+npm init astro -- --template [NOME_ESEMPIO_UFFICIALE]
+# Avvia la procedura guidata e usa questo template della community
+npm init astro -- --template [UTENTE_GITHUB]/[NOME_REPO]
+npm init astro -- --template [UTENTE_GITHUB]/[NOME_REPO]/percorso/al/esempio
+```
+
+### Online Playgrounds
+
+Se ti interessa provare Astro in un browser, puoi utilizzare un code editor online come Stackblitz, CodeSandbox, Gitpod o GitHub Codespaces. Clicca sul link "Open in Stackblitz" in uno dei nostri esempi nella [libreria degli esempi](https://github.com/withastro/astro/tree/main/examples). In alternativa, [clicca qui](https://stackblitz.com/fork/astro) per avviare un nuovo progetto in [Stackblitz](https://stackblitz.com/fork/astro).
+
+## Impara Astro
+
+In Astro arrivano persone di tutti i tipi, con il loro background di conoscenze e stili d'apprendimento diversi. Sia che tu preferisca un approccio più teorico o più pratico, speriamo troverai questa sezione utile.
+
+- Se preferisci **imparare facendo cose**, puoi iniziare con la nostra [libreria degli esempi](https://github.com/withastro/astro/tree/main/examples).
+- Se preferisci **imparare i concetti passo-passo**, puoi iniziare da [guide e concetti base](/core-concepts/project-structure).
+
+Come ogni tecnologia poco familiare, Astro si presenta con una leggera curva di apprendimento. Tuttavia, con un po' di pratica e pazienza, sappiamo che ci riuscirai in poco tempo.
+
+## Imparare la Sintassi `.astro`
+
+Quando inizierai ad imparare Astro, vedrai molti file usare l'estensione `.astro`. Questa è la **Sintassi dei Componenti di Astro**: è un file speciale simile all'HTML che Astro usa per i template. È stato progettato per risultare familiare a chiunque abbia avuto esperienze con l'HTML o JSX.
+
+La nostra utile guida ai [componenti Astro](/core-concepts/astro-components) ti aiuterà a comprendere la sintassi Astro, ed è il modo migliore per impararla.
+
+### Reference API
+
+Questa parte della documentazione è utile quando si vuole comprendere meglio una particolare API di Astro. Ad esempio, la [Reference di Configurazione](/reference/configuration-reference) elenca tutte le possibili opzioni di configurazione possibili. La [Reference dei componenti incorporati](/reference/builtin-components) elenca tutti i componenti principali disponibili, come `<Markdown />` e `<Code />`.
+
+### Documentazione a versioni
+
+Questa documentazione fa riferimento sempre all'ultima versione stabile di Astro. Una volta raggiunta la v1.0, inseriremo la possibilità di navigare tra le versioni della documentazione.
+
+## Rimani aggiornato
+
+L'account Twitter [@astrodotbuild](https://twitter.com/astrodotbuild) è la fonte ufficiale del team Astro per rimanere aggiornati.
+
+Pubblichiamo anche annunci sui rilasci nella nostra [community Discord](https://astro.build/chat) nel canale #announcements.
+
+Non tutte le release di Astro saranno accompagnate da un post sul blog, ma puoi sempre trovare un changelog dettagliato per ogni release nel [file `CHANGELOG.md` nella repository Astro](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md).
+
+## Manca Qualcosa?
+
+Se manca qualcosa nella documentazione o trovi qualche parte confusionaria, per favore [segnala un problema sulla documentazione](https://github.com/withastro/astro/issues/new/choose) con i tuoi suggerimenti per migliorarla, oppure twitta all'account Twitter [@astrodotbuild](https://twitter.com/astrodotbuild). Ci piace ascoltarvi!
+
+## Crediti
+
+Questa guida introduttiva è basata originariamente sulla guida introduttiva di [React](https://reactjs.org/).
diff --git a/smoke/docs-main/src/pages/ja/comparing-astro-vs-other-tools.md b/smoke/docs-main/src/pages/ja/comparing-astro-vs-other-tools.md
new file mode 100644
index 000000000..2ad76467e
--- /dev/null
+++ b/smoke/docs-main/src/pages/ja/comparing-astro-vs-other-tools.md
@@ -0,0 +1,236 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Astro vs. X
+description: Astroと他の静的サイトジェネレーター(Gatsby、Next.js、Nuxt、Hugo、Eleventyなど)の比較
+---
+
+よく、「Astro は、私が気に入ってる静的サイトジェネレーターの **\_\_\_\_** と比べてどうですか?」と聞かれます。このガイドは、いくつかの人気の静的サイトジェネレーターと Astro の代わりに使えるツールについて、その質問に答えるために書かれました。
+
+もし、お気に入りの静的サイトジェネレーターがここに掲載されていない場合は、 [Discord で聞いてみてください](https://astro.build/chat)。
+
+## プロジェクトの状況
+
+プロジェクトの進捗状況について簡単に説明します。**Astro はまだベータ版です**。 ここに掲載されている多くのツールはもっと成熟しており、中には Astro より 12 年以上先行しているものもあります。
+
+Astro にはまだいくつかの機能が欠けており、いくつかの API もまだ完成していません。しかし、バグの観点からは安定していると考えられていて、すでにいくつかの本番用 Web サイトが Astro を使って構築されています。これは、Astro を選択する際の重要なポイントとなるでしょう。
+
+## Docusaurus vs. Astro
+
+[Docusaurus](https://docusaurus.io/) は、人気のあるドキュメントサイト生成ツールです。 Docusaurus は React を使って Web サイトの UI を生成しますが、Astro は React、Vue.js、Svelte、そして生の HTML テンプレートをサポートしています。
+
+Docusaurus は、ドキュメント Web サイトを構築するために設計されていて、Astro にはない、ドキュメントに特化した Web サイト機能がいくつか組み込まれています。その代わり、Astro では、ドキュメントに特化した機能を、サイトに使用できる公式の[`docs`](https://github.com/snowpackjs/astro/tree/main/examples/docs)テーマを通じて提供しています。この Web サイトは、そのテンプレートを使って構築されています。
+
+### Docusaurus と Astro のパフォーマンス比較
+
+ほとんどの場合、Astro の Web サイトは Docusaurus の Web サイトよりも大幅に速く読み込まれます。これは、Astro がページ内の不要な JavaScript を自動的に外し、必要なコンポーネントのみをハイドレーションするためです。この機能を[パーシャルハイドレーション](/core-concepts/component-hydration)と呼びます。
+
+Docusaurus はパーシャルハイドレーションに対応しておらず、ページコンテンツのほとんどが静的なものであっても、ユーザーがブラウザでページ全体を読み込んで再ハイドレーションするようになっています。これにより、ページの読み込みが遅くなり、Web サイトのパフォーマンスが低下します。Docusaurus では、この動作を無効にする方法はありません。
+
+### ケーススタディ:ドキュメントサイトの構築
+
+[docusaurus.io/docs](https://docusaurus.io/docs) は、Docusaurus で構築された Docusaurus の公式ドキュメントサイトです。このサイトは、Astro の公式ドキュメントサイトと比較しても、十分に似たデザインと機能を提供しています。これにより、2 つのサイトビルダーを**大雑把に実際のサイト**で比較できます。
+
+- **Docusaurus のパフォーマンススコア**: 100 点満点中 61 点 [(テスト結果)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocusaurus.io%2Fdocs)
+- **Astro のパフォーマンススコア**: 100 点満点中 99 点 [(テスト結果)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+このパフォーマンス差の大きな理由の 1 つは、Astro の JavaScript ペイロードが小さいことです。
+[docusaurus.io/docs](https://docusaurus.io/docs)が最初のページ読み込み時に**238kb**の JavaScript をロードするのに対し、[docs.astro.build](https://docs.astro.build)は最初の読み込み後に**78.7kb**(全体で 67%の JavaScript 削減)の JavaScript をロードします。
+
+## Elder.js vs. Astro
+
+[Elder.js](https://elderguide.com/tech/elderjs/) は、Svelte のために作られたこだわりの強い静的サイトビルダーです。
+
+Elder.js は Svelte を使って Web サイトをレンダリングします。Astro はより柔軟で、人気のあるコンポーネントライブラリ(React、Preact、Vue、Svelte、Solid など)や、HTML+JSX に似た Astro の HTML ライクなコンポーネント構文を使って UI を自由に構築できます。
+
+Elder.js は、[パーシャルハイドレーション](/core-concepts/component-hydration)をサポートするサイトビルダーとして、このリストの中でもユニークな存在です。Astro も Elder.js も、ページから不要な JavaScript を自動的に外し、必要な個々のコンポーネントだけをハイドレーションします。Elder のパーシャルハイドレーションの API は少し違っていて、Astro は Elder.js がサポートしていないいくつかの機能をサポートしています(`client:media`など)。しかし、パフォーマンス的には、どちらのプロジェクトも非常に似通ったサイトを構築できます。
+
+Elder.js は独自のルーティングを採用しており、新しい開発者には馴染みがないかもしれません。Astro は[ファイルベースのルーティング](/core-concepts/routing)を採用していて、Next.js や SvelteKit、または Eleventy のような静的サイトビルダーを使っている人には馴染みがあるでしょう。
+
+Elder.js は、大規模な Web サイトで動作するように設計されていて、20,000 ページ程度の Web サイトを(手頃な VM 上で)10 分以内に構築できると謳っています。Astro は、記事執筆時点では、1,000 ページを 66 秒で構築していますが、20,000 ページ以上のプロジェクトではまだテストされていません。Astro はまだ初期のベータ版であり、Elder.js のビルド速度に匹敵することが Astro v1.0 の目標です。
+
+Elder.js は、静的サイト生成(SSG)とサーバーサイドレンダリング(SSR)の両方をサポートしています。現在、Astro は静的サイト生成(SSG)のみをサポートしています。
+
+## Eleventy vs. Astro
+
+[Eleventy](https://www.11ty.dev/) は、Node.js を採用した人気の高い静的サイトビルダーです。
+
+Eleventy は、いくつかの [古い HTML テンプレート言語](https://www.11ty.dev/docs/languages/) を使用して Web サイトをレンダリングします。サポートしているテンプレート言語には、Nunjucks、Liquid、Pug、EJS などがあります。Astro では、お気に入りの UI コンポーネントライブラリ(React、Preact、Vue、Svelte など)や、HTML + JSX に似た、組み込みのコンポーネント構文を使ってページを作成できます。 Eleventy は、モダンな UI コンポーネントを使った HTML のテンプレート化には対応していません。
+
+### Eleventy と Astro のパフォーマンス比較
+
+Eleventy のコンセプトは、Astro の「クライアントサイドの JavaScript を最小限にする」という Web 開発のアプローチと一致しています。Eleventy と Astro は、どちらも同様に、デフォルトでは JavaScript を使用しないパフォーマンスを基本として提供します。
+
+Eleventy は、JavaScript を完全に避けることでこれを実現しています。Eleventy のサイトは、往々にして JavaScript をほとんど、あるいはまったく使わずに書かれています。これは、クライアントサイドの JavaScript が必要になったときに問題になります。Eleventy のために独自のアセットビルドパイプラインを作成することは、あなた次第です。そのため、バンドルやミニファイなどの複雑な最適化を自分で設定しなければならず、時間がかかります。
+
+これに対して、Astro は、クライアントサイドの JavaScript と CSS を自動的に構築します。Astro では、ページ内の不要な JavaScript を自動的に外し、必要な個々のコンポーネントのみをハイドレーションします。この機能を[パーシャルハイドレーション](/core-concepts/component-hydration)と呼びます。この機能は、Eleventy でも自分で用意すれば実現可能ですが、Astro では、デフォルトで組み込まれています。
+
+## Gatsby vs. Astro
+
+[Gatsby](https://www.gatsbyjs.com/)は、React 向けの人気の Web サイト&アプリケーションフレームワークです。
+
+Gatsby は React を使って Web サイトをレンダリングします。Astro はより柔軟で、人気のあるコンポーネントライブラリ(React、Preact、Vue、Svelte、Solid など)や、HTML+JSX に似た Astro の HTML ライクなコンポーネント構文を使って UI を自由に構築できます。
+
+Gatsby v4 は、インクリメンタル・リビルドによる静的サイト生成 (SSG)、Deferred Static Generation (DSG)、サーバーサイドレンダリング (SSR)のすべてをサポートしています。現在、Astro は静的サイト生成(SSG)のみをサポートしています。
+
+Gatsby では、サイトのすべてのコンテンツを扱うために、カスタムの GraphQL API が必要です。開発者の中にはこのモデルを好む人もいますが、Gatsby に対する一般的な批判は、このモデルが複雑になりすぎて、とくにサイトの成長に伴って維持するのが難しくなるというものです。Astro では、GraphQL を必要とせず、代わりに(`fetch()`やトップレベル`await`のような)使い慣れた API を提供し、データが必要とされる場所の近くでデータを読み込めます。
+
+### Gatsby と Astro のパフォーマンス比較
+
+ほとんどの場合、Astro の Web サイトは、Gatsby の Web サイトよりも大幅に速く読み込まれます。これは、Astro がページから不要な JavaScript を自動的に外し、必要な個々のコンポーネントのみをハイドレーションするためです。この機能を[パーシャルハイドレーション](/core-concepts/component-hydration)と呼びます。
+
+Gatsby はパーシャルハイドレーションをサポートしておらず、ページコンテンツのほとんどが静的なものであっても、ユーザーがブラウザでページ全体を読み込んで再ハイドレーションするようになっています。これにより、ページの読み込みが遅くなり、Web サイトのパフォーマンスが低下します。Gatsby には、ページからすべての JavaScript を削除するための[コミュニティプラグイン](https://www.gatsbyjs.com/plugins/gatsby-plugin-no-javascript/)がありますが、これでは多くの Web サイトが壊れてしまいます。このプラグインを使うなら、各ページのインタラクティブ性について、「すべてか無か」の決断を迫られることになります。
+
+Gatsby には素晴らしいプラグインエコシステムがあり、ニーズに応じて Gatsby をより良い選択にすることができます。[gatsby-plugin-image](https://www.gatsbyjs.com/plugins/gatsby-plugin-image/)は、画像の最適化のための人気のあるプラグインで、画像を多用する Web サイトには Gatsby が適しているかもしれません。
+
+### ケーススタディ:ドキュメントサイトの構築
+
+[gatsbyjs.com/docs](https://www.gatsbyjs.com/docs/quick-start/) は、Gatsby で構築された Gatsby の公式ドキュメントサイトです。この Web サイトは、Astro の公式ドキュメント Web サイトと比較して、十分に似たデザインと機能セットを提供しています。これにより、この一般的なユースケースにおける、2 つのサイトビルダーの**大雑把に実際のサイト**での比較が可能になりました。
+
+- **Gatsby パフォーマンススコア**: 100 点満点中 64 点 [(テスト結果)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fwww.gatsbyjs.com%2Fdocs%2Fquick-start%2F)
+- **Astro パフォーマンススコア**: 100 点満点中 99 点 [(テスト結果)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+このパフォーマンス差の大きな理由の 1 つは、Astro の JavaScript ペイロードの小ささです。[gatsbyjs.com/docs](https://www.gatsbyjs.com/docs/quick-start/)では、最初のページ読み込み時に**417kb**の JavaScript をロードするのに対し、[docs.astro.build](https://docs.astro.build)では、最初の読み込み後に**78.7kb**(全体で 81%の JavaScript 削減)の JavaScript をロードします。
+
+## Hugo vs. Astro
+
+[Hugo](https://gohugo.io/) は、人気のある静的サイトジェネレーターで、Go で書かれています。
+
+Hugo は独自の[テンプレート言語](https://gohugo.io/templates/introduction/)を使って Web サイトを作成します。Astro では、お気に入りの UI コンポーネントライブラリ(React、Preact、Vue、Svelte など)や、HTML+JSX に似た組み込みのコンポーネント構文を使ってページを作成できます。Hugo は、モダンな UI コンポーネントを使った HTML のテンプレート化をサポートしていません。
+
+### Hugo と Astro のパフォーマンスの比較
+
+Hugo のコンセプトは、Astro の「クライアントサイドの JavaScript を最小限にする」という Web 開発のアプローチと一致しています。Hugo と Astro は、どちらも同様に、デフォルトで JavaScript を使用しないパフォーマンスを基本として提供します。
+
+Hugo も Astro も、JavaScript のビルド、バンドル、ミニファイをサポートします。Astro は、ページから不要な JavaScript を自動的に外し、必要な個々のコンポーネントのみをハイドレーションします。この機能を[パーシャルハイドレーション](/core-concepts/component-hydration)と呼びます。Hugo でもこの機能を実現できますが、Astro ではデフォルトでこの機能が組み込まれています。
+
+## Jekyll vs. Astro
+
+[Jekyll](https://jekyllrb.com/) は、人気の高い静的サイトジェネレーターで、Ruby で書かれています。
+
+Jekyll は、[Liquid と呼ばれる古いテンプレート言語](https://jekyllrb.com/docs/liquid/)を使って Web サイトをレンダリングします。Astro は、お気に入りの UI コンポーネントライブラリ(React、Preact、Vue、Svelte など)や、HTML + JSX に似た組み込みのコンポーネント構文を使ってページを作成できます。Jekyll は、モダンな UI コンポーネントを使った HTML のテンプレート化をサポートしていません。
+
+### Jekyll と Astro のパフォーマンス比較
+
+Jekyll のコンセプトは、Astro の「クライアントサイドの JavaScript を最小限にする」という Web 開発アプローチと一致しています。Jekyll と Astro は、どちらも同じように、デフォルトで JavaScript を使用しないパフォーマンスを基本として提供します。
+
+Jekyll は、JavaScript を完全に避けることでこれを実現しています。Jekyll のサイトは、往々にして JavaScript をほとんど、あるいはまったく使わずに書かれていて、代わりにサーバーサイドでの HTML 生成を推進しています。これは、クライアントサイドの JavaScript が必要になったとき、問題になります。Jekyll のために独自のビルドパイプラインを作成するのはあなた次第です。そのため、バンドルやミニファイなどの最適化を自分で設定しなければならず、手間がかかります。
+
+これに対して、Astro は、クライアントサイドの JavaScript を自動的に構築します。Astro では、必要最低限の JavaScript のみを、最小化、バンドル、最適化してブラウザに送信します。これは、Jekyll でも実現可能ですが、Astro ではデフォルトで組み込まれています。
+
+## SvelteKit vs. Astro
+
+[SvelteKit](https://kit.svelte.dev/) は、Svelte 用の Web サイト&アプリケーションフレームワークとして人気があります。
+
+SvelteKit は、Svelte を使って Web サイトを生成します。Astro はより柔軟で、人気のあるコンポーネントライブラリ(React、Preact、Vue、Svelte、Solid など)や、HTML+JSX に似た Astro の HTML ライクなコンポーネント構文を使って UI を自由に構築できます。
+
+SvelteKit も Astro も、Web サイトを構築するためのフレームワークです。SvelteKit は動的な Web サイト(ダッシュボードや受信トレイなど)に適しており、Astro は静的な Web サイト(コンテンツや e コマースサイトなど)に適しています。
+
+SvelteKit は、静的サイト生成(SSG)とサーバーサイドレンダリング(SSR)の両方をサポートしています。現在、Astro は静的サイト生成(SSG)のみをサポートしています。
+
+### SvelteKit と Astro のパフォーマンス比較
+
+ほとんどの場合、Astro の Web サイトは SvelteKit の Web サイトよりも速く読み込まれます。これは、Astro がページから不要な JavaScript を自動的に取り除き、必要な個々のコンポーネントのみをハイドレーションするためです。この機能は、[パーシャルハイドレーション](/core-concepts/component-hydration)と呼ばれています。
+
+SvelteKit はパーシャルハイドレーションに対応しておらず、ページコンテンツのほとんどが静的なものであっても、ユーザーがブラウザでページ全体を読み込んで再ハイドレーションするようになっています。これにより、ページの読み込みが遅くなり、Web サイトのパフォーマンスが低下します。SvelteKit は、[ページレベルの静的なゼロ JavaScript ページ](https://kit.svelte.dev/docs#ssr-and-javascript-hydrate)をサポートしています。しかし、ページ上の個々のコンポーネントをハイドレートするためのサポートは予定されていません。このため、各ページのインタラクティブ性については、「すべてか無か」の判断を迫られることになります。
+
+### ケーススタディ:ドキュメントサイトの構築
+
+[kit.svelte.dev](https://kit.svelte.dev/docs#ssr-and-javascript-hydrate) は、SvelteKit で構築された SvelteKit の公式ドキュメントサイトです。この Web サイトは、Astro の公式ドキュメント Web サイトと比較して、十分に似たデザインと機能を提供しています。これにより、この一般的なユースケースにおける 2 つのサイトビルダーの**大雑把に実際のサイト**での比較ができます。
+
+今回テストした 2 つのサイトの注目すべき違いが 1 つあります。SvelteKit のドキュメントは 1 つのページとして提供されるのに対し、Astro のドキュメントは複数のページに分かれています。この大きなコンテンツペイロードは、ツール自体とは関係なく、パフォーマンスに若干のマイナス影響を与えるはずです。
+
+- **SvelteKit パフォーマンススコア**: 100 点満点中 92 点 [(テスト結果)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fkit.svelte.dev%2Fdocs)
+- **Astro パフォーマンススコア**: 100 点満点中 99 点 [(テスト結果)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+このテストでは、SvelteKit は Astro と同等のパフォーマンスを発揮しました。
+
+## Next.js vs. Astro
+
+[Next.js](https://nextjs.org/) は、React 用の Web サイト&アプリケーションフレームワークとして人気があります。
+
+Next.js は React を使って Web サイトをレンダリングします。Astro はより柔軟で、人気のあるコンポーネントライブラリ(React、Preact、Vue、Svelte、Solid など)や、HTML+JSX に似た Astro の HTML ライクなコンポーネント構文を使って UI を自由に構築できます。
+
+Next.js も Astro も、Web サイトを構築するためのフレームワークです。Next.js はダッシュボードや受信トレイなどの動的な Web サイトに適しており、Astro はコンテンツや e コマースサイトなどの静的な Web サイトに適しています。
+
+Next.js は静的サイト生成(SSG)とサーバーサイドレンダリング(SSR)の両方をサポートしています。現在、Astro は静的サイト生成(SSG)のみをサポートしています。
+
+### Next.js と Astro のパフォーマンス比較
+
+ほとんどの場合、Astro の Web サイトは Next.js の Web サイトよりも圧倒的に速く読み込まれます。これは、Astro がページから不要な JavaScript を自動的に取り除き、必要な個々のコンポーネントのみをハイドレーションするためです。この機能を[パーシャルハイドレーション](/core-concepts/component-hydration)と呼びます。
+
+Next.js はパーシャルハイドレーションをサポートしておらず、ページコンテンツのほとんどが静的なものであっても、ユーザーがブラウザでページ全体を読み込んで再ハイドレーションするようになっています。そのため、ページの読み込みが遅くなり、Web サイトのパフォーマンスが低下します。Next.js は、完全にスタティックな、JavaScript を使用しないページを[実験的にサポート](https://piccalil.li/blog/new-year-new-website/#heading-no-client-side-react-code) しています。しかし、ページ上の個々のコンポーネントをハイドレートするためのサポートは予定されていません。そのため、各ページのインタラクティブ性については、「すべてか無か」の判断を迫られることになります。
+
+Next.js には画像を最適化する機能が組み込まれているため、画像を多用する Web サイトでは Next.js の方が適しているかもしれません。
+
+### ケーススタディ:ドキュメントサイトの構築
+
+[nextjs.org/docs](https://nextjs.org/docs/getting-started) は、Next.js で構築された公式の Next.js ドキュメントサイトです。この Web サイトは、Astro の公式ドキュメントサイトと比較しても、十分に似たデザインと機能を備えています。これにより、この一般的なユースケースにおける 2 つのサイトビルダーの**大雑把に実際のサイト**での比較ができます。
+
+- **Next.js パフォーマンススコア**: 100 点満点中 59 点 [(テスト結果)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fnextjs.org%2Fdocs%2Fgetting-started)
+- **Astro パフォーマンススコア**: 100 点満点中 99 点 [(テスト結果)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+このパフォーマンス差の大きな理由の 1 つは、Astro の JavaScript ペイロードの小ささです。
+[nextjs.org/docs](https://nextjs.org/docs/getting-started)が最初のページ読み込み時に**463kb**の JavaScript をロードするのに対し、 [docs.astro.build](https://docs.astro.build)は最初の読み込み後に**78.7kb**(全体では 83%の JavaScript 削減)の JavaScript をロードします。
+
+## Nuxt vs. Astro
+
+[Nuxt](https://nuxtjs.org/) は、人気のある Vue の Web サイト&アプリケーションフレームワークです。Next.js に似ています。
+
+Nuxt は Vue を使って Web サイトを生成します。Astro はより柔軟で、人気のあるコンポーネントライブラリ(React、Preact、Vue、Svelte、Solid など)や、HTML+JSX に似た Astro の HTML ライクなコンポーネント構文を使って UI を自由に構築できます。
+
+Nuxt も Astro も、Web サイトを構築するためのフレームワークです。Nuxt は動的な Web サイト(ダッシュボードや受信トレイなど)に最適で、Astro は静的な Web サイト(コンテンツや e コマースサイトなど)に最適です。
+
+Nuxt は静的サイト生成(SSG)とサーバーサイドレンダリング(SSR)の両方をサポートしています。現在、Astro は静的サイト生成(SSG)のみをサポートしています。
+
+### Nuxt と Astro のパフォーマンス比較
+
+ほとんどの場合、Astro の Web サイトは Nuxt の Web サイトよりも圧倒的に速く読み込まれます。これは、Astro がページから不要な JavaScript を自動的に取り除き、必要な個々のコンポーネントのみをハイドレーションするためです。この機能は、[パーシャルハイドレーション](/core-concepts/component-hydration)と呼ばれています。
+
+Nuxt はパーシャルハイドレーションに対応しておらず、ページコンテンツのほとんどが静的なものであっても、ユーザーがブラウザでページ全体を読み込んで再ハイドレーションします。これにより、ページの読み込みが遅くなり、Web サイトのパフォーマンスが低下します。この動作を無効にする方法は、Nuxt にはありません。
+
+Nuxt には優れた画像最適化機能が内蔵されているため、画像を多用する Web サイトでは Nuxt の方が適している場合があります。
+
+### ケーススタディ:ドキュメントサイトの構築
+
+[nuxtjs.org/docs](https://nuxtjs.org/docs/2.x/get-started/installation) は、Nuxt で構築された Nuxt の公式ドキュメントサイトです。この Web サイトは、Astro の公式ドキュメントサイトと比較しても、十分に似たデザインと機能を備えています。これにより、2 つのサイトビルダーを、この一般的なユースケースにおいて、**大雑把に実際のサイト**で比較できます。
+
+- **Nuxt パフォーマンススコア**: 100 点満点中 48 点 [(テスト結果)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fnuxtjs.org%2Fdocs%2F2.x%2Fget-started%2Finstallation)
+- **Astro パフォーマンススコア**: 100 点満点中 99 点 [(テスト結果)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+このパフォーマンスの差の大きな理由の 1 つは、Astro の JavaScript ペイロードの小ささです。
+[nuxtjs.org/docs](https://nuxtjs.org/docs/2.x/get-started/installation)が最初のページ読み込み時に **469kb** の JavaScript をロードするのに対し、 [docs.astro.build](https://docs.astro.build) は最初の読み込み後に **78.7kb**(83%減)の JavaScript をロードします。
+
+## VuePress vs. Astro
+
+[VuePress](https://vuepress.vuejs.org/guide/) は、Vue.js の作者が開発した、人気の高いドキュメント Web サイト生成ツールです。VuePress は Vue.js を使用して Web サイトの UI を生成し、Astro は React、Vue.js、Svelte、生の HTML テンプレートをサポートしています。
+
+VuePress は、ドキュメントサイト用に設計されており、Astro ではサポートしていないドキュメントに特化した Web サイトの機能がいくつか組み込まれています。その代わり、Astro では、ドキュメントに特化した機能を公式の [`docs`](https://github.com/snowpackjs/astro/tree/main/examples/docs)テーマで提供しており、サイトに使用できます。この Web サイトは、そのテンプレートを使って作られています。
+
+Vue.js の作者である Evan You 氏は現在、[VitePress](https://vitepress.vuejs.org/)という VuePress の新バージョンを開発しています。VuePress に代わるモダンなツールをお求めの方は、なぜ、VitePress がより良い選択肢なのか、[Evan 氏の投稿](https://github.com/snowpackjs/astro/issues/1159#issue-974035962)をご覧ください。
+
+### VuePress と Astro のパフォーマンス比較
+
+ほとんどの場合、Astro の Web サイトは VuePress の Web サイトよりも圧倒的に速く読み込まれます。これは、Astro がページから不要な JavaScript を自動的に外し、必要な個々のコンポーネントのみをハイドレーションするためです。この機能は、[パーシャルハイドレーション](/core-concepts/component-hydration)と呼ばれています。
+
+VuePress はパーシャルハイドレーションに対応しておらず、ページコンテンツのほとんどが静的なものであっても、ユーザーがブラウザでページ全体を読み込んで再ハイドレーションするようになっています。これにより、ページの読み込みが遅くなり、Web サイトのパフォーマンスが低下します。VuePress では、この動作を無効にする方法はありません。
+
+### ケーススタディ:ドキュメントサイトの構築
+
+[vuepress.vuejs.org](https://vuepress.vuejs.org/guide/) は、VuePress で構築された、VuePress の公式ドキュメントサイトです。このサイトは、Astro の公式ドキュメントサイトと比較しても、十分に似たデザインと機能セットを提供しています。これにより、2 つのサイトビルダーを、この一般的なユースケースにおいて、**大雑把に実際のサイト**で比較できます。
+
+- **Vuepress パフォーマンススコア**: 100 点満点中 63 点 [(テスト結果)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fvuepress.vuejs.org%2Fguide%2F)
+- **Astro パフォーマンススコア**: 100 点満点中 99 点 [(テスト結果)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+このパフォーマンス差の大きな理由の 1 つは、Astro の JavaScript ペイロードの小ささです。[vuepress.vuejs.org](https://vuepress.vuejs.org/guide/) が最初のページ読み込みで **166kb** の JavaScript をロードするのに対し、 [docs.astro.build](https://docs.astro.build)は最初の読み込み後に **78.7kb**(全体で 53%の JavaScript 削減)の JavaScript をロードします。
+
+## Zola vs. Astro
+
+Zola は、Rust を使った人気の高い高速な静的サイトジェネレーターです。
+
+Zola は [Tera](https://tera.netlify.app/) を使って Web サイトを生成します。Astro は、お気に入りの UI コンポーネントライブラリ(React、Preact、Vue、Svelte など)や、HTML + JSX に似た組み込みのコンポーネント構文を使ってページを作成できます。Zola はモダンな UI コンポーネントを使った HTML のテンプレート化には対応していません。
+
+### Zola と Astro のパフォーマンス比較
+
+コンセプト的には、Zola は Astro の「クライアントサイドの JavaScript を最小限にする」という Web 開発のアプローチと一致しています。Zola と Astro は、どちらも似たような、デフォルトでは JavaScript を使用しないパフォーマンスを基本として提供します。
+
+Astro は、JavaScript のビルド、バンドル、ミニファイをサポートしています。Zola では、JavaScript をバンドルして処理するために、webpack のような別のビルドツールを使用する必要があります。Astro では、ページから不要な JavaScript を自動的に外し、必要な個々のコンポーネントのみをハイドレーションします。この機能を[パーシャルハイドレーション](/core-concepts/component-hydration)と呼びます。Zola でもこの機能を実現することは可能ですが、Astro ではデフォルトでこの機能が組み込まれています。
diff --git a/smoke/docs-main/src/pages/ja/core-concepts/project-structure.md b/smoke/docs-main/src/pages/ja/core-concepts/project-structure.md
new file mode 100644
index 000000000..0ffb54eab
--- /dev/null
+++ b/smoke/docs-main/src/pages/ja/core-concepts/project-structure.md
@@ -0,0 +1,59 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: ディレクトリ構成
+description: Astroを使ったプロジェクトのディレクトリ構成方法を紹介します。
+---
+
+Astroにはプロジェクトのための推奨ディレクトリ構成が含まれています。すべてのAstroプロジェクトは次のディレクトリとファイルが必要です。
+
+- `src/*` - プロジェクトソースコード(コンポーネント、ページなど)
+- `public/*` - コード以外のアセット(フォント、アイコンなど)
+- `package.json` - プロジェクトマニフェスト
+
+新しいプロジェクトのもっとも簡単なセットアップ方法は `npm init astro` です。
+自動(`npm init astro`)、または手動でのプロジェクトのセットアップチュートリアルは、[インストールガイド](/ja/installation)を確認してください。
+
+## ディレクトリ構成
+
+```
+├── src/
+│ ├── components/
+│ ├── layouts/
+│ └── pages/
+│ └── index.astro
+├── public/
+└── package.json
+```
+
+### `src/`
+
+srcディレクトリには、プロジェクトのソースコードのほとんどが格納されています。これには以下が含まれます。
+
+- [Astroコンポーネント](/en/core-concepts/astro-components)
+- [ページ](/en/core-concepts/astro-pages)
+- [レイアウト](/en/core-concepts/layouts)
+- [フロントエンドJSコンポーネント](/en/core-concepts/component-hydration)
+- [スタイル(CSS、Sass)](/en/guides/styling)
+- [Markdown](/en/guides/markdown-content)
+
+これらのファイルがどのように処理され、最適化され、最終的なサイト構築にバンドルされるかは、Astroが完全にコントロールします。一部のファイル(Astroコンポーネントなど)は、そのままブラウザに表示されず、HTMLに変換されます。その他のファイル(CSSなど)は、ブラウザに送信されますが、サイトの使用方法によっては、他のCSSファイルとバンドルされます。
+
+### `src/components`
+
+[コンポーネント](/en/core-concepts/astro-components)は、HTMLページで再利用可能なUIの単位です。このディレクトリにコンポーネントを置くことが推奨されています(必須ではありません)。このディレクトリ内でどのように整理するかは自由です。
+
+Astro以外のUIコンポーネント(React、Preact、Svelte、Vueなど)も、`src/components`ディレクトリに格納します。Astroでは、パーシャルハイドレーションでフロントエンドのコンポーネントを有効にしていない限り、すべてのコンポーネントを自動的にHTMLに変換します。
+
+### `src/layouts`
+
+[レイアウト](/en/core-concepts/layouts)は、HTMLページのレイアウトのための再利用可能なコンポーネントです。レイアウトコンポーネントはこのディレクトリに置くことが推奨されています(必須ではありません)。このディレクトリ内でどのように整理するかは自由です。
+
+### `src/pages`
+
+[ページ](/en/core-concepts/astro-pages)には、ウェブサイトのすべてのページ(`.astro`と`.md`をサポート)が格納されています。ページをこのディレクトリに置くことは**必須**です。
+
+### `public/`
+
+ほとんどのユーザーは、最終的なビルドでAstroが適切に処理して最適化できるように、大部分のファイルを`src/`ディレクトリに置きます。これに対して、`public/`ディレクトリは、Astroのビルドプロセスの外に置かれるファイルのための場所です。
+
+publicディレクトリにファイルを置いても、Astroでは処理されません。代わりに、そのままビルドディレクトリにコピーされます。これは、画像やフォントなどのアセットや、`robots.txt`や`manifest.webmanifest`などの特定のファイルを含める場合に便利です。
diff --git a/smoke/docs-main/src/pages/ja/getting-started.md b/smoke/docs-main/src/pages/ja/getting-started.md
new file mode 100644
index 000000000..802de8739
--- /dev/null
+++ b/smoke/docs-main/src/pages/ja/getting-started.md
@@ -0,0 +1,75 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: はじめに
+---
+
+Astro(アストロ)は、モダンな静的サイトジェネレーターです。Astro については、[ホームページ](https://astro.build/)や[リリース記事](https://astro.build/blog/introducing-astro)をご覧ください。このページでは、Astro のドキュメントおよび関連リソースの概要を紹介します。
+
+Astro の簡単な概要を知りたい方は[ホームページ](https://astro.build/)をご覧ください。
+
+## Astro を試す
+
+もっとも簡単な Astro を試す方法は、あなたのマシンの新しいディレクトリで `npm init astro` を実行することです。新しい Astro プロジェクトを立ち上げる際には、CLI ウィザードがサポートしてくれます。
+
+5 つの簡単なステップで Astro を使い始めるには、[クイックスタートガイド](/ja/quick-start)をご覧ください。
+
+また、[インストールガイド](/ja/installation)では、Astro のセットアップ方法を詳しく解説しています。
+
+## サンプルプロジェクト
+
+サンプルを使って Astro を学びたい方は、GitHub にある[全サンプル](https://github.com/withastro/astro/tree/main/examples)をご覧ください。
+
+これらのサンプルは、`--template` という CLI フラグを付けて `npm init astro` を実行すると、ローカルマシンでチェックアウトできます。また、 `--template` フラグは、サードパーティのコミュニティテンプレートもサポートしています。
+
+```bash
+# 公式テンプレートを使用して、initウィザードを実行
+npm init astro -- --template [OFFICIAL_EXAMPLE_NAME].
+# コミュニティテンプレートを使用して、initウィザードを実行
+npm init astro -- --template [GITHUB_USER]/[REPO_NAME]を実行します。
+npm init astro -- --template [GITHUB_USER]/[REPO_NAME]/path/to/example
+```
+
+### オンラインコードエディター
+
+ブラウザで Astro を使ってみたいという方は、[astro.new](https://astro.new/)にある UI を使ってすぐに新しい Astro プロジェクトを立ち上げられます。
+
+Stackblitz、CodeSandbox、Gitpod、GitHub Codespaces などのオンラインコードエディターでも Astro を試せます。[サンプル集](https://github.com/snowpackjs/astro/tree/main/examples)にあるサンプルの中の「Open in Stackblitz」リンクをクリックしてください。また、[ここをクリック](https://stackblitz.com/fork/astro)すると、[Stackblitz](https://stackblitz.com/fork/astro)で新しいプロジェクトを始められます。
+
+## Astro を学ぶ
+
+Astro には、さまざまなバックグラウンドを持った人が集まっており、学習スタイルもさまざまです。このセクションでは、より理論的なアプローチや実践的なアプローチなど、さまざまな学習スタイルをご紹介していますので、参考になれば幸いです。
+
+- 実際にやってみて学びたいという方は、まず[サンプルライブラリ](https://github.com/withastro/astro/tree/main/examples)から始めてください。
+- また、コンセプトを段階的に学びたい方は、[基本コンセプトとガイド](/core-concepts/project-structure)をご覧ください。
+
+他の慣れない技術と同様、Astro にも若干の習得が必要です。しかし、練習と忍耐力があれば、すぐに使いこなせるようになること間違いなしでしょう。
+
+### `.astro` 構文の学習
+
+Astro の学習を始めると、多くのファイルに `.astro` という拡張子がついているのを目にします。これは**Astro コンポーネント構文**といって、Astro がテンプレートとして使用する HTML に似た特殊なファイル形式です。HTML や JSX の経験がある人には馴染みやすいように設計されています。
+
+[Astro コンポーネント](/core-concepts/astro-components)のガイドでは、Astro コンポーネント構文を紹介していますので、これを参考にしてください。
+
+### API リファレンス
+
+このドキュメントセクションは、特定の Astro API の詳細を知りたい場合に役立ちます。たとえば、[設定リファレンス](/reference/configuration-reference)では、利用可能なすべての設定オプションがリストアップされています。[ビルトインコンポーネントリファレンス](/reference/builtin-components)では、`<Markdown />` や `<Code />` など、利用可能なすべてのコアコンポーネントがリストアップされています。
+
+### バージョン管理されたドキュメント
+
+このドキュメントは、常に最新の安定版の Astro を反映しています。v1.0 になったら、バージョン管理されたドキュメントを見れるようになる予定です。
+
+## 情報を入手する
+
+Astro チームからの最新情報は、[@astrodotbuild](https://twitter.com/astrodotbuild)の Twitter アカウントが公式に発信しています。
+
+また、[Discord コミュニティ](https://astro.build/chat)の #announcements チャンネルにもリリースのお知らせを投稿しています。
+
+すべてのリリースがブログ記事で紹介されるわけではありませんが、[Astro リポジトリの `CHANGELOG.md` ファイル](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)には、すべてのリリースの詳細な変更履歴が記載されています。
+
+## 何か足りない?
+
+ドキュメントに何か足りないところがあったり、わかりにくいところを見つけたら、改善のための提案を[ドキュメントの Issue として提出してください](https://github.com/withastro/astro/issues/new/choose)。または [@astrodotbuild](https://twitter.com/astrodotbuild) の Twitter アカウントにつぶやいてください。皆様のご意見をお待ちしております。
+
+## クレジット
+
+このスタートアップガイドは、[React](https://reactjs.org/)のスタートアップガイドを元にしています。
diff --git a/smoke/docs-main/src/pages/ja/installation.md b/smoke/docs-main/src/pages/ja/installation.md
new file mode 100644
index 000000000..f5f5f48be
--- /dev/null
+++ b/smoke/docs-main/src/pages/ja/installation.md
@@ -0,0 +1,178 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: インストール
+description: npm、pnpm、YarnでのAstroのインストール方法
+---
+
+新しいプロジェクトに Astro をインストールするには、いくつかの方法があります。
+
+## 事前準備
+
+- **Node.js** -`v14.15.0`、`v16.0.0`、またはそれ以上。
+- **テキストエディター** - [VS Code](https://code.visualstudio.com/) と [公式 Astro extension](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode)をオススメします。
+- **ターミナル** - Astro は主にターミナルのコマンドラインからアクセスします。
+
+解説のため、このドキュメントでは [`npm`](https://www.npmjs.com/) を使用しますが、npm の代わりに [`Yarn`](https://yarnpkg.com/) や [`pnpm`](https://pnpm.io/) を使用してもかまいません。
+
+## ウィザードによる作成
+
+新しいプロジェクトに Astro をインストールするには、`npm init astro`がもっとも簡単な方法です。ターミナルでこのコマンドを実行すると、新しいプロジェクトのセットアップを支援する`create-astro`インストールウィザードが起動します。
+
+```shell
+# npm
+npm init astro
+
+# Yarn
+yarn create astro
+
+# pnpm
+pnpm create astro
+```
+
+[`create-astro`](https://github.com/withastro/astro/tree/main/packages/create-astro)ウィザードでは、[スターターテンプレート](https://github.com/withastro/astro/tree/main/examples)から好きなものを選べます。代わりに GitHub から自分の Astro プロジェクトを直接インポートもできます。
+
+```bash
+# 注: "my-astro-project" はあなたのプロジェクト名に置き換えてください。
+
+# npm 6.x
+npm init astro my-astro-project --template starter
+# npm 7+ (追加でダブルダッシュが必要)
+npm init astro my-astro-project -- --template starter
+# Yarn
+yarn create astro my-astro-project --template starter
+# pnpm
+pnpm create astro my-astro-project --template starter
+# サードパーティのテンプレートを使用
+npm init astro my-astro-project -- --template [GITHUB_USER]/[REPO_NAME]
+# パスを指定してサードパーティのテンプレートを使用
+npm init astro my-astro-project -- --template [GITHUB_USER]/[REPO_NAME]/path/to/template
+```
+
+`create-astro` でプロジェクトを作成したら、npm やお好みのパッケージマネージャーを使って、プロジェクトの依存関係をインストールすることを忘れないでください。この例では、npm を使用します。
+
+```bash
+npm install
+```
+
+これで、Astro プロジェクトを[スタート](#astro-の開始)できます。Astro の実行に必要なファイルの準備ができたら、プロジェクトを[ビルド](#astro-のビルド)できます。 Astro はアプリケーションをパッケージ化し、静的ファイルを用意しますので、好きなホスティングサービスに[デプロイ](/guides/deploy)できます。
+
+## 手動インストール
+
+Astro は、`create-astro`ウィザードを使わなくてもインストールできます。以下に、Astro を動作させるために必要な追加手順を示します。
+
+### プロジェクトのセットアップ
+
+```bash
+# 新しいディレクトリを作成し、その中に移動してください。
+mkdir my-astro-project
+cd my-astro-project
+```
+
+プロジェクト名で空のディレクトリを作成し、その中に移動します。
+
+### `package.json` の作成
+
+```bash
+# This command will create a basic package.json for you
+npm init --yes
+```
+
+Astro は、npm パッケージ・エコシステム全体を扱うように設計されています。
+これは、プロジェクトのルートにある「package.json」と呼ばれるプロジェクト・マニフェストで管理されます。もし、`package.json`ファイルに慣れていないのであれば、[npm のドキュメント](https://docs.npmjs.com/creating-a-package-json-file)を参照することを強くオススメします。
+
+### Astro のインストール
+
+上記の手順で、「package.json」ファイルのあるディレクトリが完成しました。これで、プロジェクト内に Astro をインストールできます。
+
+```bash
+npm install astro
+```
+
+次に、`npm init`が作成してくれた`package.json`ファイルの"scripts"セクションを、以下のように置き換えます。
+
+```diff
+ "scripts": {
+- "test": "echo \"Error: no test specified\" && exit 1"
++ "dev": "astro dev",
++ "build": "astro build",
++ "preview": "astro preview"
+ },
+}
+```
+
+[`dev`](#astro-の開始)コマンドは、Astro Dev Server(`http://localhost:3000`)を起動します。プロジェクトの準備ができたら、[`build`](#astro-のビルド)コマンドで、プロジェクトを`dist/`ディレクトリに出力します。Astro のデプロイについては、[デプロイガイド](/guides/deploy)をご覧ください。
+
+### 最初のページを作る
+
+お気に入りのテキストエディターを開き、プロジェクト内に新規ファイルを作成します。
+
+1. `src/pages/index.astro` に新しいファイルを作成する
+2. 以下のスニペットをコピー&ペーストする(`---`のダッシュも含みます)
+
+```astro
+---
+// (---)のコードフェンスの間には、JS/TSコードが書かれています。
+// これらのコードはサーバー上でのみ実行されます!
+console.log('これはターミナルに表示されます')
+---
+
+<html>
+ <body>
+ <h1>Hello, World!</h1>
+ </body>
+</html>
+
+<style lang='css||scss'>
+ body{
+ h1{
+ color:orange;
+ }
+ }
+</style>
+
+<script>
+ // ここに書かれたJSコードは、すべてブラウザ上で実行されます。
+ console.log('これはデベロッパーツールに表示されます')
+</script>
+```
+
+上記は、Astro コンポーネント構文の一例で、HTML と JSX の両方で構成されています。
+
+`src/pages`ディレクトリには、さらに多くのページを作成でき、Astro はそのファイル名を使ってサイトに新しいページを作成します。たとえば、`src/pages/about.astro`に(前のスニペットを再利用して)新しいファイルを作成すると、`http://localhost/about`という URL に新しいページが作成されます。
+
+## [Astro の開始](#astro-の開始)
+
+```bash
+npm run dev
+```
+
+これで Astro は、`http://localhost:3000`でアプリケーションのサービスを開始します。この URL をブラウザで開くと、Astro の「Hello, World」が表示されるはずです。
+
+開発の進捗状況をローカルネットワーク上で共有したり、スマートフォンからアプリを確認したければ、以下の オプションを`astro.config.mjs`に追加してください。
+
+```js
+devOptions: {
+ hostname: '0.0.0.0';
+}
+```
+
+## [Astro のビルド](#astro-のビルド)
+
+```bash
+npm run build
+```
+
+このコマンドを実行すると、Astro はサイトを構築し、ディスクに直接保存するように指示します。
+`dist/`ディレクトリをみると構築されたアプリケーションが確認できます。
+
+## 次のステップ
+
+これで開発を始める準備が整いました。
+
+Astro がどのように機能しているかをもっとよく知ることを強くオススメします。そのためには、これらのドキュメントを探索することを検討してみてください。
+
+📚 Astro のプロジェクト構造については、[プロジェクト構造ガイド](/core-concepts/project-structure)をご覧ください。
+
+📚 Astro のコンポーネント構文については[Astro コンポーネントガイド](/core-concepts/astro-components)を参照してください。
+
+📚 Astro のファイルベースのルーティングについては、[ルーティングガイド](core-concepts/astro-pages)を参照してください。
diff --git a/smoke/docs-main/src/pages/ja/quick-start.md b/smoke/docs-main/src/pages/ja/quick-start.md
new file mode 100644
index 000000000..a51b24b22
--- /dev/null
+++ b/smoke/docs-main/src/pages/ja/quick-start.md
@@ -0,0 +1,74 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: クイックスタート
+---
+
+```shell
+# 必須条件: Node.jsが14.15.0+、または16+であることを確認する。
+node --version
+
+# 新しいプロジェクトディレクトリを作成し、その中に直接移動します
+mkdir my-astro-project && cd $_
+
+# 必要なファイルの準備
+npm init astro
+
+# 依存関係のインストール
+npm install
+
+# 開発を始めよう
+npm run dev
+```
+
+```shell
+# 準備ができたら、`dist/`に静的サイトを構築します。
+npm run build
+```
+
+はじめて Astro をインストールして使用する場合は、[インストールガイド](/ja/installation)をご覧ください。
+
+サンプルを見ながら学びたいという方は、GitHub にある[全サンプル](https://github.com/withastro/astro/tree/main/examples)をご覧ください。 `npm init astro -- --template "EXAMPLE_NAME"` を実行すれば、これらのサンプルをローカルにチェックアウトできます。
+
+## プロジェクトの開始
+
+ターミナルでプロジェクトのディレクトリに移動し、次のコマンドを入力します。
+
+```bash
+npm run dev
+```
+
+これで Astro は、 [http://localhost:3000](http://localhost:3000)で、アプリケーションの提供を開始します。この URL をブラウザで開くと、Astro の「Hello, World」が表示されるはずです。
+
+サーバーは、あなたの`src/`ディレクトリにあるファイルの変更を常に監視しているので、開発中に変更してもアプリケーションを再起動する必要はありません。
+
+## プロジェクトのビルド
+
+プロジェクトをビルドするには、あなたのディレクトリ内で、ターミナルに次のビルドコマンドを入力します。
+
+```bash
+npm run build
+```
+
+このコマンドを実行すると、Astro はサイトを構築し、ディスクに直接保存するように指示します。これで、`dist/`ディレクトリにアプリケーションができあがりました。
+
+## プロジェクトのデプロイ
+
+Astro のサイトは静的なので、お好みのホストにデプロイできます。
+
+- [AWS S3 bucket](https://aws.amazon.com/s3/)
+- [Google Firebase](https://firebase.google.com/)
+- [Netlify](https://www.netlify.com/)
+- [Vercel](https://vercel.com/)
+- もっと詳しい Astro のデプロイについては、[デプロイガイド](/guides/deploy)をご覧ください。
+
+## 次のステップ
+
+これで開発を始める準備が整いました。
+
+次のステップでは、Astro の仕組みをより深く理解することをオススメします。これらのドキュメントを探索することを検討してみてください。
+
+📚 Astro のプロジェクト構造については、[プロジェクト構造ガイド](/core-concepts/project-structure)をご覧ください。
+
+📚 Astro のコンポーネント構文については、[Astro コンポーネントガイド](/core-concepts/astro-components)を参照してください。
+
+📚 Astro のファイルベースのルーティングについては、[ルーティングガイド](/core-concepts/astro-pages)を参照してください。
diff --git a/smoke/docs-main/src/pages/ja/themes.astro b/smoke/docs-main/src/pages/ja/themes.astro
new file mode 100644
index 000000000..5a64cf826
--- /dev/null
+++ b/smoke/docs-main/src/pages/ja/themes.astro
@@ -0,0 +1,53 @@
+---
+import Layout from '../../layouts/MainLayout.astro';
+import Card from '../../components/Card.astro';
+import { Markdown } from 'astro/components';
+import themes from '../../data/themes.json';
+import components from '../../data/components.json';
+---
+
+<Layout content={{ title: 'テーマ' }} hideRightSidebar>
+ <style>
+ .card-grid {
+ display: grid;
+ grid-column-gap: 15px;
+ grid-row-gap: 15px;
+ grid-auto-flow: dense;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ }
+ </style>
+ <Markdown>
+ ## 注目のテーマ
+ </Markdown>
+ <div class="card-grid">
+ {themes.featured.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ ## 公式テーマ
+
+ Astro では、ドキュメントサイトやポートフォリオなど、いくつかの公式テーマを用意しています。
+ </Markdown>
+ <div class="card-grid">
+ {themes.official.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ ## コミュニティテーマ
+
+ コミュニティが開発したテーマをご覧ください。
+ </Markdown>
+ <div class="card-grid">
+ {themes.community.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ ## 注目のパッケージ
+
+ 私たちのパッケージエコシステムは成長し続けています。注目のコミュニティパッケージをご覧ください。コレクション全体は[npm](https://www.npmjs.com/search?q=keywords%3Aastro-component)で検索できます。
+ </Markdown>
+ <div class="card-grid">
+ {components.community.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ > 自分のテーマを紹介したい場合は、[Discord でシェアしてください!](https://astro.build/chat)
+ > `#showcase` チャンネルに投稿されたお気に入りの作品をよくピックアップしています。
+ </Markdown>
+</Layout>
diff --git a/smoke/docs-main/src/pages/kr/getting-started.md b/smoke/docs-main/src/pages/kr/getting-started.md
new file mode 100644
index 000000000..e7a91e695
--- /dev/null
+++ b/smoke/docs-main/src/pages/kr/getting-started.md
@@ -0,0 +1,59 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: 시작하기
+---
+
+Astro는 현대적인 정적 사이트 생성기(Static Site Generator)입니다. [홈페이지](https://astro.build/)나 [블로그](https://astro.build/blog/introducing-astro) 글을 통해 Astro에 대한 모든 것을 알아보세요. 이 페이지는 Astro 문서와 관련된 리소스를 소개합니다.
+
+## Astro 시작하기
+
+Astro를 시작하는 가장 쉬운 방법은 `npm init astro` 명령어를 실행하는 것입니다. 새로운 디렉토리에서 명령어를 실행해주세요. CLI 도우미가 새로운 프로젝트를 시작할 수 있도록 도와줍니다.
+
+이 문서의 퀵스타트 가이드에서는 Astro를 쉽고 빠르게 시작할 수 있도록 도와주는 5가지 단계를 소개하고 있습니다. [퀵스타트 가이드](quick-start) 페이지를 방문해 관련 내용을 자세히 알아보세요.
+
+혹은 [설치 가이드](/installation)를 통해 Astro 시작과 설정에 관한 자세한 설명을 읽어볼 수도 있습니다.
+
+### 온라인 플레이그라운드
+
+온라인 플레이그라운드를 통해 Astro를 브라우저 환경에서 체험해보는 것도 가능합니다. [CodeSandbox](https://codesandbox.io/s/astro-template-hugb3)에서 "Hello World!" 템플릿으로 시작해보세요.
+
+_주의: 몇몇 기능은 아직 CodeSandbox에서 동작하지 않을 수 있습니다. (예: Fast Refresh)_
+
+## Astro 배우기
+
+사람들은 다양한 배경에서 각자 다른 학습 스타일로 Astro에 입문합니다. 이 섹션이 이론적인 접근 방식이나 실용적인 접근 방식을 선호하는 사람 모두에게 도움이 되기를 바랍니다.
+
+- **직접 경험하며 배우는** 방식을 선호한다면, [예제 라이브러리](https://github.com/withastro/astro/tree/main/examples)에서 시작해보세요.
+- **개념부터 차근차근 익히는** 방식을 선호한다면, [기본 개념 가이드](/core-concepts/project-structure)에서 시작해보세요.
+
+다른 낯선 기술과 마찬가지로 Astro에는 러닝 커브(learning curve)가 있습니다. 하지만 약간의 인내심을 가지고 연습한다면 충분히, 쉽게 습득할 수 있습니다.
+
+### `.astro` 문법 배우기
+
+Astro를 배우기 시작하면 많은 파일들이 `.astro` 확장자를 사용하고 있는 것이 눈에 띌 것입니다. 이것은 Astro의 **컴포넌트**를 의미합니다. Astro의 컴포넌트는 HTML과 비슷한 파일 포맷을 가지고 있으며 템플레이팅 (templating)에 사용됩니다. HTML이나 JSX를 사용해본 경험이 있는 사람이라면 누구나 익숙함을 느끼도록 설계되었습니다.
+
+Astro 컴포넌트를 배우는 가장 좋은 방법은 이 문서의 [Astro 컴포넌트 가이드](/core-concepts/astro-components)를 읽는 것입니다. Astro 컴포넌트 페이지에서는 기본 문법을 익히는 데 도움 되는 가이드를 제공합니다.
+
+### API 참조
+
+API 참조 섹션은 특정 Astro API를 자세히 배우고 싶을 때 유용합니다. 예를 들어, [환경 설정](/reference/configuration-reference) 페이지는 설정에 적용 가능한 모든 옵션을 제공하며, [내장 컴포넌트](/reference/builtin-components) 페이지는 `<Markdown />`이나 `<Prism />`과 같은 핵심적인 컴포넌트들의 목록을 보여줍니다.
+
+### 버전 관리된 문서
+
+이 문서는 항상 최신 안정 버전의 Astro를 반영합니다. 이전 버전의 문서를 열람하는 기능은 Astro가 1.0 버전에 도달한 이후에 제공될 예정입니다.
+
+## 최신 소식 받아보기
+
+[@astrodotbuild](https://twitter.com/astrodotbuild) 트위터 계정을 통해 Astro 팀이 게시하는 공식적인 업데이트 소식을 받아볼 수 있습니다.
+
+또한 [디스코드](https://astro.build/chat)의 #announcements 채널에서도 릴리즈 소식을 찾아볼 수 있습니다.
+
+모든 릴리즈가 블로그에 게시되는 것은 아닙니다. 블로그에 게시되지 않은 버전 릴리즈에 관한 자세한 수정사항은 [Astro 리포지터리 안의 `CHANGELOG.md`](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md) 파일에서 읽어볼 수 있습니다.
+
+## 빠진 항목이 있나요?
+
+문서에서 빠진 항목을 발견하거나 혼동되는 부분이 있다면 개선을 위한 제안과 함께 [문서의 리포지터리](https://github.com/withastro/astro/issues/new/choose)에 이슈를 올리거나 [@astrodotbuild](https://twitter.com/astrodotbuild) 트위터 계정으로 트윗해주세요. 여러분의 참여를 기다립니다!
+
+## 크레딧
+
+이 시작하기 가이드는 [React](https://reactjs.org/)의 시작하기 가이드를 참고하여 제작되었습니다.
diff --git a/smoke/docs-main/src/pages/nl/getting-started.md b/smoke/docs-main/src/pages/nl/getting-started.md
new file mode 100644
index 000000000..94dd8138f
--- /dev/null
+++ b/smoke/docs-main/src/pages/nl/getting-started.md
@@ -0,0 +1,57 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Beginnen
+---
+
+Astro is een moderne statische sitebouwer. Leer alles over Astro op onze [homepage](https://astro.build/) of ons [release-bericht](https://astro.build/blog/introducing-astro). Deze pagina is een overzicht van de Astro documentatie en alle gerelateerde bronnen.
+
+## Probeer Astro
+
+De gemakkelijkste manier om Astro te proberen, is door `npm init astro` uit te voeren in een nieuwe map op je computer. Deze CLI opdracht helpt je in verschillende stappen je eerste Astro project op te zetten.
+
+Lees onze [installatiegids](/installation) voor een volledige uitleg over hoe je met Astro aan de slag kunt.
+
+### Online Playgrounds
+
+Als je interesse hebt om Astro online uit te proberen in je browser, kun je een online playground gebruiken. Probeer een Hello World voorbeeld op [CodeSandbox](https://codesandbox.io/s/astro-template-hugb3).
+
+_Opmerking: sommige functies (bv. Snel vernieuwen) zijn momenteel beperkt op CodeSandbox._
+
+## Astro leren
+
+Mensen komen naar Astro vanuit verschillende achtergronden en met verschillende leerstijlen. Of je nu de voorkeur geeft aan een meer theoretische of praktische benadering, we hopen dat je deze sectie nuttig zult vinden.
+
+- Als je liever **leert door te doen**, begin dan met onze [voorbeeldenbibliotheek](https://github.com/withastro/astro/tree/main/examples).
+- Als je de concepten liever **stap voor stap leert**, begin dan met onze [basisconcepten en handleidingen](/core-concepts/project-structure).
+
+Zoals elke onbekende technologie heeft Astro een leercurve. Met wat oefening en wat geduld krijg je het onder de knie.
+
+### Leer de `.astro` syntax
+
+Wanneer je Astro begint te leren, zul je veel bestanden zien die de `.astro` bestandsextensie gebruiken. Dit is de syntax van de **Astro-component**: een speciaal HTML-achtig bestandsformaat dat Astro gebruikt voor sjablonen. Het is ontworpen om vertrouwd te voelen voor iedereen met HTML- of JSX-ervaring.
+
+Onze gids over [Astro-componenten](/core-concepts/astro-components) helpt je door de nieuwe `.astro` syntax en is de beste manier om te leren.
+
+### API referentie
+
+Deze documentatiesectie is handig als je meer details wilt weten over een bepaalde Astro API. [Configuratie referentie](/reference/configuration-reference) vermeldt bijvoorbeeld alle mogelijke configuratieopties die beschikbaar zijn. [Ingebouwde Componenten Referentie](/reference/builtin-components) geeft een overzicht van alle beschikbare kerncomponenten, zoals `<Markdown />` en `<Code />`.
+
+### Documentatie versies
+
+Deze documentatie geeft altijd de laatste stabiele versie van Astro weer. Zodra we de v1.0-mijlpaal hebben bereikt, voegen we de mogelijkheid toe om versiedocumentatie te bekijken.
+
+## Op de hoogte blijven
+
+Het [@astrodotbuild](https://twitter.com/astrodotbuild) Twitter-account is de officiële bron voor de updates van het Astro-team.
+
+We plaatsen ook release-aankondigingen in onze [Discord-community](https://astro.build/chat) in het #announcements kanaal.
+
+Niet elke Astro-release verdient een eigen blogpost, maar je kunt een gedetailleerde changelog voor elke release vinden in het [CHANGELOG.md-bestand in de Astro-repository](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md).
+
+## Mis je iets?
+
+Als er iets ontbreekt in de documentatie of als je een onderdeel verwarrend vond, [dien dan een probleem in voor de documentatie](https://github.com/withastro/astro/issues/new/choose) met je suggesties voor verbetering, of tweet naar het [@astrodotbuild](https://twitter.com/astrodotbuild) Twitter-account. We horen graag van je!
+
+## Credit
+
+Deze handleiding 'Aan de slag' was oorspronkelijk gebaseerd op de handleiding 'Aan de slag' van [React](https://reactjs.org/).
diff --git a/smoke/docs-main/src/pages/nl/quick-start.md b/smoke/docs-main/src/pages/nl/quick-start.md
new file mode 100644
index 000000000..720df3be5
--- /dev/null
+++ b/smoke/docs-main/src/pages/nl/quick-start.md
@@ -0,0 +1,75 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Snel Start
+description: De makkelijkste manier om snel te beginnen met Astro.
+---
+
+```shell
+# voorwaarde: check dat Node.js versie een van de volgende is: 14.15.0+, of 16+
+node --version
+
+# maak een nieuwe project folder en navigeer naar deze folder
+mkdir my-astro-project && cd $_
+
+# maak je klaar voor de lancering
+npm init astro
+
+# afhankelijkheden installeren
+npm install
+
+# start de ontwikkeling!
+npm run dev
+```
+
+```shell
+# zodra je klaar bent, bouw dan je website met het volgende commanda
+npm run build
+```
+
+Voor meer informatie over het voor het gebruik van Astro en het installeren ervan: [lees onze installatie handleiding.](/installation)
+
+Als je liever leert doormiddel van voorbeelden, bekijk dan de [complete bibliotheek van voorbeelden](https://github.com/withastro/astro/tree/main/examples) op GitHub. Je kan deze voorbeelden lokaal bekijken door het volgende commando uit te voeren: `npm init astro -- --template "EXAMPLE_NAME"`.
+
+## Start je project
+
+Navigeer naar je project folder, en voer het volgende commando uit in je terminal:
+
+```bash
+npm run dev
+```
+
+Astro start nu je applicatie op, je kan deze vinden op [http://localhost:3000](http://localhost:3000). Als je deze URL opent zie je de Astro versie van "Hello, World".
+
+De server luistert naar live wijzifgingen in je `src/` folder, dus je hoeft de applicatie niet handmatig te herstarten bij elke wijziging tijdens de ontwikkeling.
+
+## Bouw je project
+
+Om je project te bouwen voor productie kun je het volgende commando uitvoeren in de terminal. (Zorg ervoor dat je in de folder bent).
+
+```bash
+npm run build
+```
+
+Dit zorgt ervoor dat Astro je project bouwt. De applicatie is nu beschikbaar in de `dist/` folder.
+
+## Host je project
+
+Astro websites zijn statisch, dus ze kunnen gehost worden op je favorite hosting platformen:
+
+- [AWS S3 bucket](https://aws.amazon.com/s3/)
+- [Google Firebase](https://firebase.google.com/)
+- [Netlify](https://www.netlify.com/)
+- [Vercel](https://vercel.com/)
+- [Lees meer over Astor hosting in onze hosting handleiding.](/guides/deploy)
+
+## Volgende stappen
+
+Succes! Je bent nu klaar om te beginnen met ontwikkelen!
+
+We raden je aan om wat tijd te nemen om bekend te raken met hoe Astro werkt. Je kan meer informatie verkrijgen door de Docs te bestuderen, we raden de volgende artikelen aan:
+
+📚 Leer meer over Astro’s projectstructuur: [Projectstructuur handleiding.](/core-concepts/project-structure)
+
+📚 Leer meer over Astro’s component syntax: [Astro Components handleiding.](/core-concepts/astro-components)
+
+📚 Lees meer over Astro’s bestand routing [Routing handleiding.](core-concepts/astro-pages)
diff --git a/smoke/docs-main/src/pages/pl/getting-started.md b/smoke/docs-main/src/pages/pl/getting-started.md
new file mode 100644
index 000000000..041736c83
--- /dev/null
+++ b/smoke/docs-main/src/pages/pl/getting-started.md
@@ -0,0 +1,74 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Na początek
+description: Wprowadzenie do Astro.
+---
+
+Astro to progresywny generator stron statycznych. Więcej możesz dowiedzieć się na [naszej stronie](https://astro.build/) oraz [w poście na blogu](https://astro.build/blog/introducing-astro). Ta strona jest wstępem do dokumentacji Astro i powiązanych zasobów.
+
+## Wypróbuj Astro
+
+Najprostszym sposobem, aby wypróbować Astro jest użycie komendy `npm init astro` w nowym katalogu. Kreator projektu pomoże Ci wystartować z nowym projektem Astro.
+
+Możesz zacząć z Astro w 5 szybkich i łatwych krokach, odwiedź [Szybki start](/quick-start)
+lub przeczytaj [Poradnik instalacyjny](/installation) w celu uzyskania pełnych instrukcji krok po kroku jak zacząć z Astro.
+
+### Przykładowe projekty
+
+Jeśli preferujesz uczyć się Astro z przykładów, zobacz naszą [bibliotekę przykładów](https://github.com/withastro/astro/tree/main/examples) na GitHubie.
+
+Możesz także skorzystać z tych przykładów na swojej lokalnej maszynie uruchamiając `npm init astro` z parametrem `--template` w konsoli. Parametr `--template` wspiera także nieoficjalne szablony społeczności.
+
+```bash
+# Uruchomienie kreatora z oficjalnym szablonem
+npm init astro -- --template [NAZWA_OFICJALNEGO_PRZYKŁADU]
+# Uruchomienie kreatora z szablonem społeczności
+npm init astro -- --template [UZYTKOWNIK_GITHUB]/[NAZWA_REPOZYTORIUM]
+# lub
+npm init astro -- --template [UZYTKOWNIK_GITHUB]/[NAZWA_REPOZYTORIUM]/sciezka/do/przykladu
+```
+
+### Piaskownice Online
+
+Jeżeli chciałbyś pobawić się z Astro w swojej przeglądarce, możesz w mgnieniu oka odpalić nowy projekt Astro za pomocą naszego interfejsu na [astro.new](https://astro.new/).
+
+Możesz wypróbować Astro w edytorach kodu online takich jak Stackblitz, CodeSandbox, Gitpod, i GitHub Codespaces. Kliknij w link "Open in Stackblitz" przy jednym z przykładów w naszej [bibliotece przykładów](https://github.com/withastro/astro/tree/main/examples). Albo, [kliknij tutaj](https://stackblitz.com/fork/astro) aby stworzyć nowy projekt na platformie [Stackblitz](https://stackblitz.com/fork/astro).
+
+## Poznaj Astro
+
+Różni ludzie, z różnych środowisk mają odmienne podejście do zaznajamiania się z technologiami. Niezależnie od tego, czy wolisz bardziej teoretyczne, czy praktyczne podejście, mamy nadzieję, że ta sekcja będzie dla Ciebie pomocna.
+
+- Jeżeli preferujesz **praktykę**, zacznij z naszą [biblioteką przykładów](https://github.com/withastro/astro/tree/main/examples).
+- Jeżeli preferujesz **teoretyczne podejście**, zacznij od [podstawowych konceptów i poradników](/core-concepts/project-structure).
+
+Podobnie jak z innymi nieznanymi technologiami, Astro również wymaga poświęcenia chwili na naukę podstaw. Mamy nadzieję, że z odrobiną praktyki i cierpliwości poradzisz sobie z tym w krótkim czasie.
+
+### Poznaj składnię `.astro`
+
+Na początku swojej drogi z Astro zobaczysz, że wiele plików używa rozszerzenia `.astro`. Jest to **Składnia Komponentów Astro**: specjalny format pliku podobny do HTML'a, który używany jest w Astro do tworzenia szablonów. Został on stworzony, aby wyglądał znajomo dla każdej osoby mającej doświadczenie z HTML'em lub JSX'em.
+
+Nasz poradnik - [Komponenty Astro](/core-concepts/astro-components) zapozna Cię ze składnią i w naszej ocenie jest najlepszym sposobem, aby się tego nauczyć.
+
+### Referencje API
+
+Ta sekcja jest szczególnie przydatna gdy chcesz poznać więcej szczegółów na temat konkretnego API w Astro. Na przykład, [Refencja Konfiguracji](/reference/configuration-reference) zawiera dostępne opcje konfiguracji. [Referencja Wbudowanych Komponentów](/reference/builtin-components) zawiera listę wbudowanych komponentów wewnętrznych, takich jak m.in `<Markdown />` i `<Code />`.
+
+### Wersjonowanie dokumentacji
+
+Dokumentacja zawsze odnosi się to najnowszej stabilnej wersji Astro. Gdy osiągniemy wydanie 1.0, pojawi się możliwość wyświetlania dokumentacji z podziałem na wersje.
+
+## Jak być na bieżąco
+
+[@astrodotbuild](https://twitter.com/astrodotbuild) to oficjalne konto na Twitterze oraz źródło dla wszelkich aktualizacji od zespołu Astro.
+
+Publikujemy także ogłoszenia dotyczące nowych wydań Astro na [Discordzie](https://astro.build/chat) na kanale #announcements.
+
+Nie każde wydanie Astro zasługuje na osobny post na blogu, ale możesz znaleźć szczegółową listę zmian dla każdej wersji w pliku [`CHANGELOG.md` w naszym repozytorium](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md).
+
+## Czegoś brakuje?
+
+Jeżeli czegoś brakuje w dokumentacji albo coś cię zaniepokoiło [uzupełnij formularz "issue" na GitHubie](https://github.com/withastro/astro/issues/new/choose) wraz ze swoimi sugestiami i przemyśleniami albo daj znać poprzez Twittera [@astrodotbuild](https://twitter.com/astrodotbuild). Czekamy na twoją opinię!
+
+## Podziękowania
+
+Ten wstęp został podpierdzielony od analogicznego poradnika dla [React'a](https://reactjs.org/docs/getting-started.html).
diff --git a/smoke/docs-main/src/pages/pt-br/getting-started.md b/smoke/docs-main/src/pages/pt-br/getting-started.md
new file mode 100644
index 000000000..18f3ceae5
--- /dev/null
+++ b/smoke/docs-main/src/pages/pt-br/getting-started.md
@@ -0,0 +1,59 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Introdução
+---
+
+Astro é um moderno construtor de site estático. Aprenda mais sobre Astro através da [nossa página inicial](https://astro.build/) ou do [nosso post de lançamento](https://astro.build/blog/introducing-astro). Esta página é uma visão geral da documentação do Astro e de todos os recursos relacionados.
+
+## Experimente Astro
+
+A maneira mais fácil de experimentar Astro é através da execução do comando `npm init astro` em um novo diretório na sua máquina. Nosso assistente para interface de linha de comandos (Wizard CLI) irá te ajudar a iniciar um novo projeto Astro.
+
+Para começar com Astro em 5 etapas rápidas e fáceis, visite nosso [Guia de início rápido](quick-start).
+
+Como alternativa, leia nosso [Guia de Instalação](/installation) para uma guia de instalação completo do Astro.
+
+### Experimente Online
+
+Se você tem interesse em testar Astro online no navegador, você pode usar um editor de código online. Experimente nosso template "Olá Mundo!" em [CodeSandbox](https://codesandbox.io/s/astro-template-hugb3).
+
+_Nota: algumas funcionalidades (ex: Fast Refresh) no momento estão limitadas no CodeSandbox._
+
+## Aprenda Astro
+
+Todos os tipos de pessoas vêm ao Astro com diferentes bagagens trazendo com eles diferentes estilos de aprendizagem. Se você prefere uma abordagem mais teórica ou prática, esperamos que você encontre esta seção útil.
+
+- Se você prefere **aprender fazendo**, comece com nossa [biblioteca de exemplos](https://github.com/withastro/astro/tree/main/examples).
+- Se você prefere **aprender conceitos passo-a-passo**, comece com [conceitos básicos e guias](/core-concepts/project-structure).
+
+Como qualquer tecnologia emergente, Astro vem com uma leve curva de aprendizado. No entanto, com prática e alguma paciência, sabemos que você _vai_ pegar o jeito da coisa.
+
+### Aprenda a Sintaxe do `.astro`
+
+Quando você começa a aprender Astro, você verá muitos arquivos usando a extensão `.astro`. Esta é a **Sintaxe de componentes do Astro**: um formato de arquivo HTML especial que o Astro usa para modelagem. Foi projetado para dar o sentimento de familiaridade para qualquer pessoa com experiência HTML ou JSX.
+
+Nosso guia útil em [componentes de Astro](/core-concepts/astro-components) apresenta você à sintaxe Astro e é a melhor maneira de aprender.
+
+### Referência da API
+
+Esta seção de documentação é útil quando você deseja aprender mais detalhes sobre uma determinada API do Astro. Por exemplo, [Referência de Configuração](/reference/configuration-reference) lista todas as opções de configuração possíveis disponíveis para você. [Referência de componentes incorporados](/reference/builtin-components) listas todos os componentes base disponíveis, como `<Markdown />` e `<Code />`.s
+
+### Documentação por Versão
+
+Esta documentação sempre reflete a última versão estável do Astro. Assim que liberarmos a versão v1.0, adicionaremos a capacidade de visualizar a documentação baseado na versão.
+
+## Fique Informado(a)
+
+A conta do Twitter [@astrodotbuild](https://twitter.com/astrodotbuild) é a fonte oficial de atualizações da equipe do Astro.
+
+Também publicamos anúncios de lançamento em nossa [comunidade no Discord](https://astro.build/chat) no canal #announcements.
+
+Nem todo lançamento do Astro merece sua própria postagem no blog, mas você pode encontrar um changelog detalhado para cada lançamento no arquivo [`CHANGELOG.md` no repositório Astro](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md).
+
+## Algo está faltando?
+
+Se algo estiver faltando na documentação ou se você achar alguma parte confusa, por favor [registre uma nova issue para a documentação](https://github.com/withastro/astro/issues/new/choose) com suas sugestões de melhoria, ou tweet na conta do Twitter [@astrodotbuild](https://twitter.com/astrodotbuild). Nós adoramos ouvir de você!
+
+## Créditos
+
+Este guia de introdução foi originalmente baseado no guia de introdução do [React](https://reactjs.org/).
diff --git a/smoke/docs-main/src/pages/ru/getting-started.md b/smoke/docs-main/src/pages/ru/getting-started.md
new file mode 100644
index 000000000..ed0bc7995
--- /dev/null
+++ b/smoke/docs-main/src/pages/ru/getting-started.md
@@ -0,0 +1,73 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Начало Работы
+---
+
+Astro – это современный сборщик статических сайтов. Вы можете узнать всё об Astro на [главной странице](https://astro.build/) или из [нашего релизного поста](https://astro.build/blog/introducing-astro). Эта страница даёт общее представление о документации и всех относящихся к Asto материалах.
+
+## Пробуем Astro
+
+Самый простой способ попробовать Astro — запустить команду `npm init astro` в новой директории на вашем компьютере. Наш CLI установщик поможет вам в разворачивании нового проекта на Astro.
+
+Для быстрого старта с Astro в 5 простых шагов, посетите страницу руководства по [быстрому старту](ru/quick-start).
+
+Также вы можете развернуть проект с помощью [руководства по установке](/installation), которое пошагово проведёт через процесс разворачивания проекта с Astro.
+
+### Примеры проектов
+
+Если вы предпочитаете учить Astro по примерам, вы можете воспользоваться [полной библиотекой примеров](https://github.com/withastro/astro/tree/main/examples) на GitHub.
+
+Вы можете установить любой из этих примеров на вашу локальную машину с помощью команды `npm init astro` и дополнительного параметра `--template`. Флаг `--template` также поддерживает сторонние шаблоны.
+
+```bash
+# Запустить инициализацию и использовать официальный шаблон
+npm init astro -- --template [OFFICIAL_EXAMPLE_NAME]
+# Запустить инициализацию и использовать шаблон, предложенный сообществом
+npm init astro -- --template [GITHUB_USER]/[REPO_NAME]
+npm init astro -- --template [GITHUB_USER]/[REPO_NAME]/path/to/example
+```
+
+### Онлайн-песочницы
+
+Если вы хотите попробовать Astro прямо в браузере, можно использовать онлайн-редакторы кода, например, Stackblitz, CodeSandbox, Gitpod или GitHub Codespaces.
+Также вы можете нажать на кнопку "Open in Stackblitz" в любом из примеров в нашей [библиотеке](https://github.com/withastro/astro/tree/main/examples). Или [нажмите здесь](https://stackblitz.com/fork/astro), чтобы запустить новый проект на [Stackblitz](https://stackblitz.com/fork/astro).
+
+## Изучаем Astro
+
+Люди, приходящие в Astro из разных областей, приносят свой уникальный стиль изучения. Независимо от того, какой стиль изучения вы предпочитаете: теоретический или практический, мы надеемся, этот раздел будет вам полезен.
+
+- Если вы предпочитаете **изучение на практике**, начните с нашей [библиотеки примеров](https://github.com/withastro/astro/tree/main/examples).
+- Если вы предпочитаете **изучать принципы шаг за шагом**, начните с [основных принципов и руководств](/core-concepts/project-structure).
+
+Как любая новая технология, Astro требует немного изучения.
+Однако мы уверены, что при должной практике и некотором терпении вы быстро _научитесь_ этому.
+
+### Изучаем `.astro` синтаксис
+
+Когда вы начнёте изучать Astro, вы увидите много файлов, которые используют расширение `.astro`. **Синтаксис компонентов Astro** – это специальный, похожий на HTML-формат файл, который Astro изпользует для шаблонизации. Он был разработан так, чтобы быть знакомым для любого человека, у которого есть опыт работы с HTML или JSX.
+
+Наше руководство по [Astro компонентам](/core-concepts/astro-components) даст вам представление о синтаксисе Astro, и это самый лучший путь для их изучения.
+
+### Справочник API
+
+Если вы хотите узнать больше деталей о конкретных Astro API, изучите справочник по API. Например, в нём можно найти документацию по [конфигурации](/reference/configuration-reference) с полным списком доступных настроек, или [полный список встроенных компонентов](/reference/builtin-components), таких как `<Markdown />` и `<Code />`.
+
+### Документация на старые версии Astro
+
+Эта документация всегда описывает последнюю стабильную версию Astro. Как только мы достигнем версии v1.0, добавим возможность для просмотра других версий документации.
+
+## Обратная связь
+
+Твиттер аккаунт [@astrodotbuild](https://twitter.com/astrodotbuild) является официальным источником обновлений от команды Astro.
+
+Также мы выкладываем анонсы релизов в нашем сообществе в [Discord](https://astro.build/chat) в канале #announcements.
+
+Не каждый релиз Astro заслуживает отдельной публикации в нашем блоге, но вы можете найти все детали в описании изменений к релизу в файле [`CHANGELOG.md`](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md) в нашем репозитории на Github.
+
+## Что-то упущено?
+
+Если в документации что-то пропущено или какая-то часть не совсем понятна, пожалуйста, [создайте issue по документации](https://github.com/withastro/astro/issues/new/choose) с вашими предложениями об исправлениях или улучшениях, или упомяните наш [@astrodotbuild](https://twitter.com/astrodotbuild) Твиттер аккаунт в вашем твите. Мы всегда рады услышать ваши мысли об Astro!
+
+## Благодарность
+
+Этот гайд был основан на руководстве по быстрому старту с [React](https://reactjs.org/).
diff --git a/smoke/docs-main/src/pages/ru/quick-start.md b/smoke/docs-main/src/pages/ru/quick-start.md
new file mode 100644
index 000000000..83383c7c9
--- /dev/null
+++ b/smoke/docs-main/src/pages/ru/quick-start.md
@@ -0,0 +1,74 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Быстрый старт
+---
+
+```shell
+# Заметка: проверьте, что у вас установлена Node.js версии 14.15.0+, или 16+
+node --version
+
+# Создайте новую директорию и перейдите в неё
+mkdir my-astro-project && cd $_
+
+# подготовка к запуску...
+npm init astro
+
+# установка зависимостей
+npm install
+
+# начинаем разработку!
+npm run dev
+```
+
+```shell
+# когда все готово: запустите сборку вашего статического сайта в директорию `dist/`
+npm run build
+```
+
+Чтобы узнать больше об установке и использовании Astro, пожалуйста, [прочитайте нашу инструкцию по установке.](installation)
+
+Если вы предпочитаете обучаться по примерам, обратите внимание на [нашу библиотеку примеров](https://github.com/withastro/astro/tree/main/examples) на GitHub. Вы можете развернуть любой из примеров локально, запустив команду `npm init astro -- --template "EXAMPLE_NAME"`.
+
+## Запуск вашего проекта
+
+Находясь в директории проекта запустите команду ниже в терминале:
+
+```bash
+npm run dev
+```
+
+Astro запустит сервер для разработки по адресу [http://localhost:3000](http://localhost:3000). При открытии этого URL в вашем браузере, вы должны увидеть "Hello, World" от Astro.
+
+Сервер будет следить за изменениями в директории `src/`, значит вам не нужно будет перезапускать сервер каждый раз после внесения изменений.
+
+## Сборка проекта
+
+Чтобы собрать ваш проект, находясь в директории проекта, введите и запустите следующую команду в терминале:
+
+```bash
+npm run build
+```
+
+Эта команда запустит процесс сборки и сохранит собранный сайт на диск. После выполнения ваш сайт будет находиться в директории `dist/`.
+
+## Деплой вашего сайта
+
+Сайты, созданные с помощью Astro, являются статичными. Это значит, что они могут быть размещены на любом из хостингов, который вы предпочитаете:
+
+- [AWS S3 bucket](https://aws.amazon.com/s3/)
+- [Google Firebase](https://firebase.google.com/)
+- [Netlify](https://www.netlify.com/)
+- [Vercel](https://vercel.com/)
+- [Читайте больше о деплое сайтов, собранных с помощью Astro, в нашем руководстве по деплою.](/guides/deploy)
+
+## Следующие шаги
+
+Ура! Теперь вы готовы к разработке!
+
+Мы рекомендуем вам потратить немного времени, чтобы познакомиться с работой Astro ближе. Вы можете сделать это с помощью дальнейшего ознакомления с документацией. Мы советуем изучить следующие материалы:
+
+📚 Узнать больше [о структуре проектов Astro.](/core-concepts/project-structure)
+
+📚 Узнать больше [о синтаксисе компонентов Astro.](/core-concepts/astro-components)
+
+📚 Узнать больше [о роутинге, основанном на файловой структуре.](core-concepts/astro-pages)
diff --git a/smoke/docs-main/src/pages/zh-CN/comparing-astro-vs-other-tools.md b/smoke/docs-main/src/pages/zh-CN/comparing-astro-vs-other-tools.md
new file mode 100644
index 000000000..27abfe069
--- /dev/null
+++ b/smoke/docs-main/src/pages/zh-CN/comparing-astro-vs-other-tools.md
@@ -0,0 +1,204 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: Astro 对比其他框架
+---
+
+我们经常被问到这个问题, "Astro 和我最喜欢的网站构建工具**\_\_\_\_**相比如何?"本指南是为了帮助回答这个问题而编写的,适用于几个流行的网站构建工具以及 Astro 替代品。
+
+如果你没有看到你最喜欢的网站构建工具被列在这里。 [请在 Discord 告诉我们](https://astro.build/chat)
+
+## 项目现状
+
+关于项目成熟度的简短说明。**Astro 仍处于测试阶段** 这里列出的许多工具都要比 Astro 成熟得多。有些工具比 Astro 早了 12 年以上。
+
+Astro 仍然缺少一些功能,一些 API 还没有最终确定。虽然项目暂时并不稳定,但是已经有几个生产型网站使用 Astro 建立。这是选择 Astro 时需要考虑的一个重要问题。
+
+## Docusaurus vs. Astro
+
+[Docusaurus](https://docusaurus.io/) 是一个流行的文档网站创建工具。Docusaurus 使用 React 来生成你的网站界面,而 Astro 支持 React、 Vue.js 、Svelte 以及原始 HTML 模板。
+
+Docusaurus 是为建立文档网站而设计的,它有一些内置的、针对文档的网站功能,而 Astro 却没有。相反,Astro 通过一个官方的 [`docs`](https://github.com/withastro/astro/tree/main/examples/docs) 主题提供了特定的文档功能,你可以在你的网站尝试使用。本网站就是用这个模板建立的!
+
+#### 对比 Docusaurus 及 Astro 性能
+
+在大多数情况下,Astro 网站的加载速度将明显快于 Docusaurus 网站。这是因为 Astro 会自动从页面中剥离不必要的 JavaScript,只对需要它的个别组件进行渲染。这个功能被称为[局部渲染](/core-concepts/component-hydration)。
+
+Docusaurus 不支持局部渲染,而是让用户在浏览器中加载并重新渲染整个页面,即使大部分的页面内容是静态的。这为你的网站创造了一个较慢的页面加载和较差的性能。在 Docusaurus 中没有办法停用这种行为。
+
+#### 案例研究 : 构建文档网站
+
+[Docusaurus. io/docs](https://docusaurus.io/docs) 是官方的 Docusaurus 文档网站,由 Docusaurus 构建。该网站提供了大量设计模板和功能插件,可以与官方 Astro 文档网站进行比较。让我们对这两个网站构建工具进行一个粗略的真实的比较。
+
+- **Docusaurus 性能评分**:26 / 100[(更多详情)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocusaurus.io%2Fdocs)
+- **Astro 性能分数**:95(满分 100)[(更多详情)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+性能差异背后的一个主要原因是 Astro 的 JavaScript 依赖更小:[docusaurus.io/docs](https://docusaurus.io/docs)在第一次加载时加载**238kb**的 JavaScript,而[docs.astro.build](https://docs.astro.build)第一次只加载**9.3kb**(总体上减少 96%的 JavaScript)。
+
+## Eleventy vs. Astro
+
+[Eleventy](https://www.11ty.dev/)是一个流行的静态网站构建器,由 Node.js 提供支持。
+
+Eleventy 使用了几种[较老的 HTML 模板语言](https://www.11ty.dev/docs/languages/)来渲染你的网站:Nunjucks, Liquid, Pug, EJS 等等。Astro 允许您使用您喜欢的 UI 组件库(React、Preact、Vue、Svelte 等)或类似于 HTML/JSX 的内置组件语法创建页面。eleven 不支持在 HTML 模板中使用现代 UI 组件。
+
+#### 对比 Eleventy 及 Astro 性能
+
+从概念上讲,Eleventy 与 Astro 的 "最小客户端 JavaScript "的网络开发方法是一致的。Eleventy 和 Astro 都提供类似的零 JavaScript 默认性能基线。
+
+Eleventy 通过推动你完全避免使用 JavaScript 来实现这一目标。Eleventy 的网站通常很少或根本没有使用 JavaScript。当你确实需要客户端的 JavaScript 时,这就成了一个问题。你可以为 Eleventy 创建自己的资产构建管道。这可能会很耗时,并迫使你自己设置捆绑、最小化和其他复杂的优化。
+
+相比之下,Astro 自动为你构建客户端的 JavaScript 和 CSS。Astro 自动从页面中剥离不必要的 JavaScript,只对需要它的个别组件进行渲染。这个功能被称为[局部渲染](/core-concepts/component-hydration)。虽然在 Eleventy 中可以自己实现这个功能,但 Astro 默认提供了内置的功能。
+
+## Gatsby vs. Astro
+
+[Gatsby](https://www.gatsbyjs.com/)是一个流行的 React 的网站和应用程序框架。
+
+Gatsby 使用 React 来渲染你的网站。Astro 更灵活:你可以自由地使用任何流行的组件库(React、Preact、Vue、Svelte、Solid 和其他)或 Astro 的类似 HTML 的组件语法来构建 UI,这类似于 HTML+JSX 。
+
+今天,Gatsby 和 Astro 都只支持静态网站生成(SSG)。Gatsby 支持增量重建,而 Astro 只支持完整的网站重建。Astro 已经表示计划在未来的版本中支持服务器端渲染(SSR),而 Gatsby 没有计划支持 SSR。
+
+Gatsby 需要一个定制的 GraphQL API 来处理所有的网站内容。虽然有些开发者喜欢这种模式,但对 Gatsby 的一个普遍意见是,这种模式随着时间的推移变得过于复杂和难以维护,特别是随着网站的增长。Astro 没有 GraphQL 要求,而是提供熟悉的 API(如`fetch()`和顶层的`await`),以便在需要数据的地方加载数据。
+
+#### 对比 Gatsby 及 Astro 性能
+
+在大多数情况下,Astro 网站的加载速度将明显快于 Gatsby 网站。这是因为 Astro 会自动从页面中剥离不必要的 JavaScript,只对需要它的个别组件进行渲染。这个功能被称为[局部渲染](/core-concepts/component-hydration)。
+
+Gatsby 不支持局部渲染,而是让用户在浏览器中加载并重新渲染整个页面,即使大部分页面内容是静态的。这为你的网站创造了更慢的页面加载和更差的性能。Gatsby 有[一个社区插件](https://www.gatsbyjs.com/plugins/gatsby-plugin-no-javascript/)用于移除页面中的所有 JavaScript 但这将破坏许多网站。这让你在每个页面的互动性上做出一个全有或全无的决定。
+
+Gatsby 有一个很好的插件生态系统,根据你的需要,它可以使 Gatsby 成为你的项目的更好选择。[gatsby-plugin-image](https://www.gatsbyjs.com/plugins/gatsby-plugin-image/)是一个流行的图像优化插件,这可能使 Gatsby 成为一些图像密集型网站的更好选择。
+
+#### 案例研究 : 构建文档网站
+
+[gatsbyjs.com/docs](https://www.gatsbyjs.com/docs/quick-start/)是 Gatsby 的官方文档网站,用 Gatsby 构建。该网站提供了足够相似的设计和功能集,可以与 Astro 官方文档网站进行比较。让我们对这两个网站构建工具进行一个粗略的真实的比较。以满足这个常见的使用情况。
+
+- **Gatsby 性能评分**: 64 分(满分 100 分)[(更多详情)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fwww.gatsbyjs.com%2Fdocs%2Fquick-start%2F)
+- **Astro 性能评分**: 99 分(满分 100 分)[(更多详情)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+这种性能差异背后的一个重要原因是 Astro 的 JavaScript 有效载荷较小。[gatsbyjs.com/docs](https://www.gatsbyjs.com/docs/quick-start/)在首次加载页面时加载了**417kb**的 JavaScript,而[docs.astro.build](https://docs.astro.build)在首次加载后加载了**78.7kb**(总体上减少了 81%的 JavaScript)。
+
+## Hugo vs. Astro
+
+[Hugo](https://gohugo.io/)是一个流行的静态网站生成器,由 Go 驱动。
+
+Hugo 使用一个自定义的[模板语言](https://gohugo.io/templates/introduction/)来渲染你的网站。Astro 让你使用你喜欢的 UI 组件库(React、Preact、Vue、Svelte 等)或类似于 HTML/JSX 的内置组件语法来创建页面。Hugo 不支持使用现代 UI 组件进行 HTML 模板制作。
+
+#### 对比 Hugo 及 Astro 性能
+
+从概念上讲,Hugo 与 Astro 的 "最小客户端 JavaScript "的网络开发方法是一致的。Hugo 和 Astro 都提供了类似的、默认为零的 JavaScript 性能基线。
+
+Hugo 和 Astro 都提供了对构建、捆绑和最小化 JavaScript 的内置支持。Astro 会自动从页面中剥离不必要的 JavaScript,只对需要它的个别组件进行渲染。这个功能被称为[局部渲染](/core-concepts/component-hydration)。虽然在 Hugo 中可以自己实现这个功能,但 Astro 默认提供了内置的功能。
+
+## Jekyll vs. Astro
+
+[Jekyll](https://jekyllrb.com/)是一个流行的静态网站生成器,由 Ruby 驱动。
+
+Jekyll 使用一种较早的[模板语言](https://jekyllrb.com/docs/liquid/)来渲染你的网站,称为 Liquid。Astro 让你使用你喜欢的 UI 组件库(React、Preact、Vue、Svelte 和其他)或类似于 HTML/JSX 的内置组件语法来创建页面。Jekyll 不支持使用现代 UI 组件进行 HTML 模板制作。
+
+#### 对比 Jekyll 及 Astro 性能
+
+在概念上,Jekyll 与 Astro 的 "最小客户端 JavaScript "的网站开发方法是一致的。Jekyll 和 Astro 都提供了类似的、默认为零 JavaScript 的性能基线。
+
+Jekyll 通过推动你完全避免使用 JavaScript 来实现这一目标。Jekyll 的网站通常很少甚至没有使用 JavaScript,而是采用服务器端的 HTML 渲染。当你确实需要客户端的 JavaScript 时,这就成了一个问题。这取决于你是否为 Jekyll 创建自己的构建管道。这可能很耗时,并迫使你自己设置捆绑、最小化和其他优化。
+
+相比之下,Astro 自动为你构建客户端的 JavaScript。Astro 只向浏览器发送最低限度的 JavaScript,并对其进行粉碎、捆绑和优化。虽然在 Jekyll 中可以自己实现这一点,但在 Astro 中,这一点是默认内置的。
+
+## SvelteKit vs. Astro
+
+[SvelteKit](https://kit.svelte.dev/)是 Svelte 的一个流行的网站和应用程序框架。
+
+SvelteKit 使用 Svelte 来渲染你的网站。Astro 更加灵活:你可以使用任何 UI 组件库(React、Preact、Vue、Svelte 和其他)或 Astro 的内置组件语法,这与 HTML/JSX 类似。
+
+SvelteKit 和 Astro 都是构建网站的框架。SvelteKit 对高度动态的网站(如仪表盘和收件箱)效果最好,而 Astro 对高度静态的网站(如内容和电子商务网站)效果最好。
+
+SvelteKit 同时支持静态网站生成(SSG)和服务器端渲染(SSR)。如今,Astro 只支持静态网站生成(SSG)。
+
+#### 对比 SvelteKit 及 Astro 性能
+
+在大多数情况下,Astro 网站的加载速度会比 SvelteKit 网站快。这是因为 Astro 会自动从页面中剥离不必要的 JavaScript,只对需要它的个别组件进行渲染。这个功能被称为[局部渲染](/core-concepts/component-hydration)。
+
+SvelteKit 不支持局部渲染,而是让用户在浏览器中加载并重新渲染整个页面,即使大部分页面内容是静态的。这给你的网站带来了更慢的页面加载和更差的性能。SvelteKit 确实提供了对[页面级静态、零 JavaScript 页面](https://kit.svelte.dev/docs#ssr-and-javascript-hydrate)的支持。然而,没有计划对页面上的单个组件进行渲染支持。这使得你在每个页面的交互性方面只能做一个全有或全无的决定。
+
+#### 案例研究 : 构建文档网站
+
+[kit.svelte.dev](https://kit.svelte.dev/docs#ssr-and-javascript-hydrate)是 SvelteKit 的官方文档网站,用 SvelteKit 构建。该网站提供了大量设计模板和功能插件,可以与官方 Astro 文档网站进行比较。让我们对这两个网站构建工具进行一个粗略的真实的比较。以满足这个常见的使用情况。
+
+测试的两个网站之间有一个明显的区别。SvelteKit 的文档是作为一个单一的页面提供的,而 Astro 的文档被分成多个页面。这种较大的内容有效载荷应该会对性能产生轻微的负面影响,这与工具本身无关。
+
+- **SvelteKit 性能得分**。92 分(满分 100 分)[(更多详情)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fkit.svelte.dev%2Fdocs)
+- **Astro 性能得分**。95 分(满分 100 分)[(更多详情)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+在这项测试中,SvelteKit 的表现与 Astro 相当。
+
+## Next.js vs. Astro
+
+[Next.js](https://nextjs.org/)是 React 的一个流行的网站和应用程序框架。
+
+Next.js 使用 React 来渲染你的网站。Astro 更灵活:你可以使用任何 UI 组件库(React、Preact、Vue、Svelte 等)或 Astro 的内置组件语法,这与 HTML/JSX 类似。
+
+Next.js 和 Astro 都是构建网站的框架。Next.js 对高度动态的网站(如仪表盘和收件箱)效果最好,而 Astro 对高度静态的网站(如内容和电商网站)效果最好。
+
+Next.js 同时支持静态网站生成(SSG)和服务器端渲染(SSR)。如今,Astro 只支持静态网站生成(SSG)。
+
+#### 对比 Next.js 及 Astro 性能
+
+在大多数情况下,Astro 网站的加载速度将明显高于 Next.js 网站。这是因为 Astro 会自动从页面中剥离不必要的 JavaScript,只对需要它的个别组件进行渲染。这个功能被称为[局部渲染](/core-concepts/component-hydration)。
+
+Next.js 不支持局部渲染,而是让用户在浏览器中加载并重新渲染整个页面,即使页面的大部分内容是静态的。这给你的网站带来了较慢的页面加载和较差的性能。Next.js 对完全静态的零 JavaScript 页面有[实验性支持](https://piccalil.li/blog/new-year-new-website/#heading-no-client-side-react-code)。然而,目前还没有计划支持对页面上的单个组件进行渲染。这让你在每个页面的交互性上都要做出全有或全无的决定。
+
+Next.js 有很好的内置图像优化功能,这可以使 Next.js 成为一些图像密集型网站的更好选择。
+
+#### 案例研究 : 构建文档网站
+
+[nextjs.org/docs](https://nextjs.org/docs/getting-started)是 Next.js 官方文档网站,用 Next.js 构建。该网站提供了足够相似的设计和功能集,可以与官方的 Astro 文档网站进行比较。这为我们提供了一个**_的、真实的、_**的两个静态网站构建工具在这个常见的使用情况下的比较。
+
+- **Next.js 的性能得分**。59 分(满分 100 分)[(更多详情)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fnextjs.org%2Fdocs%2Fgetting-started)
+- **Astro 性能得分**。95 分(满分 100 分)[(更多详情)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+这种性能差异背后的一个重要原因是 Astro 的 JavaScript 有效载荷较小。[nextjs.org/docs](https://nextjs.org/docs/getting-started)在首次加载时加载了**463kb**的 JavaScript,而[docs.astro.build](https://docs.astro.build)只加载了**9.3kb**(总体而言,JavaScript 减少了 98%)。
+
+## Nuxt vs. Astro
+
+[Nuxt](https://nextjs.org/)是 Vue 的一个流行的网站和应用程序框架。它类似于 Next.js。
+
+Nuxt 使用 Vue 来渲染你的网站。Astro 更灵活:你可以使用任何 UI 组件库(React、Preact、Vue、Svelte 和其他)或 Astro 的内置组件语法,这与 HTML/JSX 类似。
+
+Nuxt 和 Astro 都是构建网站的框架。Nuxt 最适合高度动态的网站(如仪表盘和收件箱),而 Astro 最适合高度静态的网站(如内容和电商网站)。
+
+Nuxt 同时支持静态网站生成(SSG)和服务器端渲染(SSR)。今天,Astro 只支持静态网站生成(SSG)。
+
+#### 对比 Nuxt 及 Astro 性能
+
+在大多数情况下,Astro 网站的加载速度将明显快于 Nuxt 网站。这是因为 Astro 会自动从页面中剥离不必要的 JavaScript,只对需要它的个别组件进行渲染。这个功能被称为[局部渲染](/core-concepts/component-hydration)。
+
+Nuxt 不支持局部渲染,而是让用户在浏览器中加载并重新渲染整个页面,即使大部分的页面内容是静态的。这给你的网站带来了较慢的页面加载和较差的性能。在 Nuxt 中没有办法禁用这种行为。
+
+Nuxt 有很好的内置图片优化功能,这可以使 Nuxt 成为一些图片密集型网站的更好选择。
+
+#### 案例研究 : 构建文档网站
+
+[nuxtjs.org/docs](https://nuxtjs.org/docs/2.x/get-started/installation)是 Nuxt 官方文档网站,用 Nuxt 构建。该网站提供了大量设计模板和功能插件,可以与官方 Astro 文档网站进行比较。让我们对这两个网站构建工具进行一个粗略的真实的比较。
+
+- **新的性能得分**。48 分(满分 100 分)[(更多详情)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fnuxtjs.org%2Fdocs%2F2.x%2Fget-started%2Finstallation)
+- **Astro 性能得分**。95 分(满分 100 分)[(更多详情)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+这种性能差异背后的一个重要原因是 Astro 的 JavaScript 有效载荷较小。[nuxtjs.org/docs](https://nuxtjs.org/docs/2.x/get-started/installation)在首次加载时加载了**469kb**的 JavaScript,而[docs.astro.build](https://docs.astro.build)只加载了**9.3kb**(总体而言,JavaScript 减少了 98%)。
+
+## VuePress vs. Astro
+
+[VuePress](https://vuepress.vuejs.org/guide/)是一个流行的文档网站建设者。VuePress 使用 Vue.js 来生成你的网站用户界面,而 Astro 支持 React、Vue.js、Svelte 和原始 HTML 模板化。
+
+VuePress 是为建立文档网站而设计的,它有一些内置的、针对文档的网站功能,而 Astro 没有。相反,Astro 通过官方的[`docs`](https://github.com/withastro/astro/tree/main/examples/docs)主题提供了特定的文档功能,你可以在你的网站使用。这个网站就是用这个模板建立的!
+
+#### 对比 VuePress 及 Astro 性能
+
+在大多数情况下,Astro 网站的加载速度将明显快于 VuePress 网站。这是因为 Astro 会自动从页面中剥离不必要的 JavaScript,只对需要它的个别组件进行渲染。这个功能被称为[局部渲染](/core-concepts/component-hydration)。
+
+VuePress 不支持局部渲染,而是让用户在浏览器中加载并重新渲染整个页面,即使页面的大部分内容是静态的。这将使你的网站的页面加载速度变慢,性能变差。在 VuePress 中没有办法禁用这种行为。
+
+#### 案例研究 : 构建文档网站
+
+[vuepress.vuejs.org](https://vuepress.vuejs.org/guide/)是 VuePress 的官方文档网站,用 VuePress 构建。该网站提供了大量设计模板和功能插件,可以与官方 Astro 文档网站进行比较。让我们对这两个网站构建工具进行一个粗略的真实的比较。
+
+- **Vuepress 的性能得分**。63 分(满分 100 分)[(更多详情)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fvuepress.vuejs.org%2Fguide%2F)
+- **Astro 性能得分**。95 分(满分 100 分)[(更多详情)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fdocs.astro.build%2Fgetting-started)
+
+这种性能差异背后的一个重要原因是 Astro 的 JavaScript 有效载荷较小。[vuepress.vuejs.org](https://vuepress.vuejs.org/guide/)在首次加载时加载了**166kb**的 JavaScript,而[docs.astro.build](https://docs.astro.build)只加载了**9.3kb**(总体来说,JavaScript 少了 95%)。
diff --git a/smoke/docs-main/src/pages/zh-CN/examples.md b/smoke/docs-main/src/pages/zh-CN/examples.md
new file mode 100644
index 000000000..dc03178ef
--- /dev/null
+++ b/smoke/docs-main/src/pages/zh-CN/examples.md
@@ -0,0 +1,8 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: 模板样例
+---
+
+如果你喜欢通过实例来学习,请查看我们在 GitHub 上的[模板样例](https://github.com/withastro/astro/tree/main/examples)
+
+<!-- Once we merge astro-docs back into the main repo, we can actually fetch the list of examples at build-time by scanning the examples/ directory! -->
diff --git a/smoke/docs-main/src/pages/zh-CN/getting-started.md b/smoke/docs-main/src/pages/zh-CN/getting-started.md
new file mode 100644
index 000000000..d43377c8c
--- /dev/null
+++ b/smoke/docs-main/src/pages/zh-CN/getting-started.md
@@ -0,0 +1,60 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: 入门指南
+---
+
+Astro 是一个现代的静态网站生成工具. 你可以从 [我们的主页](https://astro.build/) 或者 [我们的 release 公告](https://astro.build/blog/introducing-astro) 中了解到 Astro 的全部内容,本页是 Astro 文档和所有相关资源的概述。
+
+## 尝试一下 Astro
+
+尝试 Astro 的最简单的方法是在新目录下运行 `npm init astro`。我们的 CLI 工具会帮助你创建启动一个新的 Astro 项目。
+
+想要快速了解学习使用 Astro, [快速入门](quick-start).
+
+另外,请阅读我们的 [安装指南](/installation),了解如何使用 Astro 进行安装的全部步骤。
+
+### 在线游乐场
+
+如果你有兴趣在浏览器中尝试 Astro,你可以使用一个在线代码游乐场。试试我们在 [CodeSandbox](https://codesandbox.io/s/astro-template-hugb3) 上的 "Hello World!"模板。
+
+注意:一些功能(例如:快速刷新)目前在 CodeSandbox 上是受限的。
+
+## 学习 Astro
+
+各种各样的人来自不同的背景,带来了不同的学习方式,来到 Astro。无论你喜欢的是理论性强的方法还是实践性强的方法,我们希望你会发现本节内容对你有帮助。
+
+- 如果你喜欢在**实践中**学习,请从我们的 [实例库](https://github.com/withastro/astro/tree/main/examples) 开始学习。
+
+- 如果你喜欢**逐步学习概念**,请从我们的[基本概念和指南](/core-concepts/project-structure)开始。
+
+像任何不熟悉的技术一样,Astro 也有一个轻量化的学习曲线。然而我们相信只要有耐心勤于练习你很快就会掌握诀窍的。
+
+### 学习 `.astro` 语法
+
+当你开始学习 Astro 时,你会看到许多文件使用`.astro`文件扩展名。这是**Astro 的组件语法**:一种特殊的类似 HTML 的文件格式,Astro 用于模板制作。这样设计是为了让任何有 HTML 或 JSX 经验的人更容易上手。
+
+我们在 [Astro 组件](/corecepts/astro-components) 上的有用指南向你介绍了 Astro 语法,这也是学习的最好方法。
+
+### API 参考文档
+
+当你想了解某个特定的 Astro API 的更多细节时,这部分文档是有用的。例如 [配置参考](/reference/configuration-reference) 列出所有可能的配置选项供你使用。 [内置组件参考](/reference/builtin-components) 列出了所有可用的核心组件,如`<Markdown />`和`<Code />`。
+
+### 其他版本文档
+
+本文档总是展示 Astro 的最新稳定版本。一旦我们达到 V1.0 的里程碑,我们将增加查看版本文件的能力。
+
+## 了解最新消息
+
+[@astrodotbuild](https://twitter.com/astrodotbuild) Twitter 账户是 Astro 团队的官方更新来源。
+
+我们也在我们的 [Discord 社区](https://astro.build/chat) 的 #announcements 频道中发布 release 公告。
+
+当然并非每个 Astro 的发布都会有自己的 release 公告,你可以在 Astro 仓库的 [`CHANGELOG.md`文件](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md) 中找到每个版本的详细更新日志。
+
+## 勘误与建议
+
+如果你在阅读的过程中发现文档中缺少什么,或者你发现某些部分令人困惑,请 [为文档提交问题](https://github.com/withastro/astro/issues/new/choose) ,提出你的改进建议,或者在 [@astrodotbuild](https://twitter.com/astrodotbuild) Twitter 账户上发推文。我们希望听到你的建议!
+
+## 参考
+
+本入门指南最初是基于 [React](https://reactjs.org/) 的入门指南。
diff --git a/smoke/docs-main/src/pages/zh-CN/installation.md b/smoke/docs-main/src/pages/zh-CN/installation.md
new file mode 100644
index 000000000..46870ef0c
--- /dev/null
+++ b/smoke/docs-main/src/pages/zh-CN/installation.md
@@ -0,0 +1,170 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: 安装指南
+---
+
+可以使用多种方式创建 Astro 新项目
+
+## 环境要求
+
+- **Node.js** - `v14.15.0` 和 `v16.0.0`,或更高版本。
+- **文本编辑器** - 我们推荐使用 [VS Code](https://code.visualstudio.com/) 搭配 [Astro 官方插件](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode)。
+- **命令行终端** - Astro 主要是通过终端的命令行执行。
+
+下方案例中使用 [`npm`](https://www.npmjs.com/) 为例。也可以使用 [`yarn`](https://yarnpkg.com/) 或 [`pnpm`](https://pnpm.io/) 等 npm 替代方案。
+
+## 创建 Astro 工程
+
+`npm init astro` 是在一个新项目中安装 Astro 的最简单的方法。
+
+在终端运行这个命令,启动我们的 `create-astro` 安装工具,协助你建立一个新项目。
+
+```shell
+# 用 NPM
+npm init astro
+
+# Yarn
+yarn create astro
+```
+
+[`create-astro`](https://github.com/withastro/astro/tree/main/packages/create-astro) 工具让你从预设的 [启动模板](/examples) 中选择,或者你也可以直接从 Github 导入自己的 Astro 项目。
+
+```bash
+# 提醒:把「my-astro-project」改为项目的名称。
+
+# npm 6.x
+npm init astro my-astro-project --template starter
+# npm 7+(一定要多加上一组双横杠)
+npm init astro my-astro-project -- --template starter
+# yarn
+yarn create astro my-astro-project --template starter
+# 使用第三方模板
+npm init astro my-astro-project -- --template [GITHUB_USER]/[REPO_NAME]
+# 在 Repo 里,使用第三方模板
+npm init astro my-astro-project -- --template [GITHUB_USER]/[REPO_NAME]/path/to/template
+```
+
+在 `create-astro` 搭建好你的项目后,记得用 npm 或你选择的软件包管理器安装你的项目依赖。在这个例子中,我们将使用 npm 。
+
+```bash
+npm install
+```
+
+你现在可以[开发](#start-astro)你的 Astro 项目。一旦你完成了 Astro 项目的开发,你就可以[构建](#build-astro)你的项目。然后 Astro 会把你的应用程序打包,并准备好静态文件,让你[部署](/guides/deploy)到你最喜欢的托管服务商。
+
+## 手动安装
+
+当然没有 `create-astro` 工具的协助,也可以创建 Astro 工程。 接下来就是要让 Astro 运行起来的一些额外步骤。
+
+### 创建项目
+
+```bash
+# 创建并进入新项目目录
+mkdir my-astro-project
+cd my-astro-project
+```
+
+### 创建 `package.json`
+
+```bash
+# 初始化项目并生成的默认的 package.json
+npm init --yes
+```
+
+Astro 被设计为与整个 npm 软件包生态系统一起工作。这是由项目根目录下的 `package.json` 管理的。
+
+如果你不熟悉 `package.json` 文件,我们强烈建议你在[npm 文档](https://docs.npmjs.com/creating-a-package-json-file)上快速阅读它。
+
+### 安裝 Astro
+
+按照上面的说明,你的工程目录下会新建一个 `package.json` 文件。
+
+现在你可以在你的项目中安装 Astro
+
+```bash
+npm install astro
+```
+
+现在你可以把 `package.json` 文件中默认为你创建的 `scripts` 部分替换为以下内容。
+
+```diff
+ "scripts": {
+- "test": "echo \"Error: no test specified\" && exit 1"
++ "dev": "astro dev",
++ "build": "astro build",
++ "preview": "astro preview"
+ },
+}
+```
+
+[`dev`](#start-dev) 命令在 `http://localhost:3000` 上启动 Astro 开发服务器。一旦你的项目准备好了。
+
+[`build`](#build-astro)命令将你的项目输出到 `dist/` 目录。[在部署指南中阅读更多关于部署 Astro 的内容。](/guides/deploy)
+
+### 创建第一个页面
+
+打开文本编辑器,在项目添加文件 :
+
+1. 新建 `src/pages/index.astro` 文件
+2. 在文件中复制粘贴以下代码片段(包含横杠 "---" )
+
+```astro
+---
+// 在 (`---`) 范围之内的 JS 或 TS 代码只在服务器上运行!
+console.log('See me in the Terminal')
+---
+
+<html>
+ <body>
+ <h1>Hello, World!</h1>
+ </body>
+</html>
+
+<style lang='css||scss'>
+ body{
+ h1{
+ color:orange;
+ }
+ }
+</style>
+
+<script>
+ // 在在此输入的JS代码完全在浏览器上运行。
+ console.log('See me in the devTools')
+</script>
+```
+
+以上是 Astro 组件语法的一个例子,同時包含 HTML 和 JSX。
+
+你可以在 `src/pages` 目录下创建更多的页面,Astro 将使用该文件名在你的网站上创建新的页面。例如,通过在 `src/pages/about.astro` 创建一个新的文件(重复使用以前的片段),Astro 将生成一个新的页面,URL 为:`http://localhost/about` 。
+
+## [启动 Astro](#start-astro)
+
+```bash
+npm run dev
+```
+
+Astro 会开启预览服务器,地址为 [http://localhost:3000](http://localhost:3000),
+在浏览器打开这个网址,就会看到 Astro 的 HelloWorld 页面
+
+服务器会实时监听 'src/' 目录下的文件改动,所以在开发过程的支持热更新,修改程序后,无需重启。
+
+## [Build Astro](#build-astro)
+
+```bash
+npm run build
+```
+
+这将让 Astro 打包你的网站并直接保存到磁盘。你的应用程序现在已经在 `dist/` 目录中打包好了。
+
+## 下一步
+
+成功了!现在即可开始开发!
+
+我们建议花点时间用于熟悉 Astro 的运作方式。只要在文档中进一步探索,建议看看这些:
+
+📚 深入了解 Astro 的项目结构:[项目结构](/core-concepts/project-structure)
+
+📚 深入了解 Astro 的组件语法:[Astro 组件指南](/core-concepts/astro-components)
+
+📚 深入了解 Astro 根据文件路径生成路由:[路由指南](core-concepts/astro-pages)
diff --git a/smoke/docs-main/src/pages/zh-CN/quick-start.md b/smoke/docs-main/src/pages/zh-CN/quick-start.md
new file mode 100644
index 000000000..6f654c331
--- /dev/null
+++ b/smoke/docs-main/src/pages/zh-CN/quick-start.md
@@ -0,0 +1,73 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: 快速入门
+---
+
+```shell
+# 环境要求:确保 Node.js 版本是 14.15.0+ 或 16 及以上。
+node --version
+
+# 创建并进入新项目目录
+mkdir my-astro-project && cd $_
+
+# 初始化项目
+npm init astro
+
+# 安装项目依赖
+npm install
+
+# 启动项目
+npm run dev
+```
+
+```shell
+# 将项目打包到 dist 文件夹下
+npm run build
+```
+
+如果想要知道还有哪些方法能够使用 Astro 来做开发,请阅读 [安装指南](installation)。
+
+## 启动项目
+
+工程目录下终端输入以下命令:
+
+```bash
+npm run dev
+```
+
+Astro 会开启预览服务器,地址为 [http://localhost:3000](http://localhost:3000),
+在浏览器打开这个网址,就会看到 Astro 的 HelloWorld 页面
+
+服务器会实时监听 'src/' 目录下的文件改动,所以在开发过程的支持热更新,修改程序后,无需重启。
+
+## 打包项目
+
+工程目录下终端输入以下命令:
+
+```bash
+npm run build
+```
+
+这将让 Astro 打包你的网站并直接保存到磁盘。你的应用程序现在已经在`dist/`目录中打包好了。
+
+## 部署项目
+
+Astro 生成的网站是静态的可以发布常见的托管服务商:
+
+- [Vercel](https://vercel.com/)
+- [Netlify](https://www.netlify.com/)
+- [S3 bucket](https://aws.amazon.com/s3/)
+- [Google Firebase](https://firebase.google.com/)
+- 查看 [部署指南](/guides/deploy) 了解更多细节
+
+## 下一步
+
+成功了!现在即可开始开发!
+
+我们建议花点时间用于熟悉 Astro 的运作方式。只要在文档中进一步探索,建议看看这些:
+
+📚 深入了解 Astro 的项目结构:[项目结构](/core-concepts/project-structure)
+
+📚 深入了解 Astro 的组件语法:[Astro 组件指南](/core-concepts/astro-components)
+
+📚 深入了解 Astro 根据文件路径生成路由:[路由指南](core-concepts/astro-pages)
diff --git a/smoke/docs-main/src/pages/zh-TW/examples.md b/smoke/docs-main/src/pages/zh-TW/examples.md
new file mode 100644
index 000000000..c10c24c0c
--- /dev/null
+++ b/smoke/docs-main/src/pages/zh-TW/examples.md
@@ -0,0 +1,8 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: 範例
+---
+
+如果喜歡從做中學,可以看看放在 Github 的[範例資源庫](https://github.com/withastro/astro/tree/main/examples)。
+
+<!-- Once we merge astro-docs back into the main repo, we can actually fetch the list of examples at build-time by scanning the examples/ directory! -->
diff --git a/smoke/docs-main/src/pages/zh-TW/getting-started.md b/smoke/docs-main/src/pages/zh-TW/getting-started.md
new file mode 100644
index 000000000..0ace05a4a
--- /dev/null
+++ b/smoke/docs-main/src/pages/zh-TW/getting-started.md
@@ -0,0 +1,72 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: 新手上路
+---
+
+Astro 是利用現代技術的靜態網站生成工具。可以從[首頁](https://astro.build/)或[釋出版本貼文](https://astro.build/blog/introducing-astro)來了解 Astro 的用途。此頁面是 Astro 文件與所有相關資源的概要。
+
+## 試玩 Astro
+
+試用 Astro 最簡單的方法,就是在機器的新資料夾裡執行 `npm init astro`。我們製作的 CLI 精靈會協助開啟全新的 Astro 專案。
+
+簡易又迅速 5 步驟就開始使用 Astro 的方法,請看 [快速開始指南](quick-start)。
+
+或者,閱讀[安裝指南](/installation),有安裝 Astro 的完整流程。
+
+### 示範專案
+
+比較喜歡從範例來學 Astro 的話,請看放在 Github 的[範例資源庫](https://github.com/withastro/astro/tree/main/examples)。
+
+這裡的範例都可以在本地端機器執行 `npm init astro` 並加上 CLI Flag: `--template`。
+`--template` Flag 也支援第三方、社群的範本。
+
+```bash
+# 執行 init 精靈,並使用官方範本
+npm init astro -- --template [OFFICIAL_EXAMPLE_NAME]
+# 執行 init 精靈,並使用社群範本
+npm init astro -- --template [GITHUB_USER]/[REPO_NAME]
+npm init astro -- --template [GITHUB_USER]/[REPO_NAME]/path/to/example
+```
+
+### 線上玩玩看
+
+有興趣在瀏覽器試玩 Astro 的話,可以在 Stackblitz、CodeSandbox、Gitpod 或 GitHub Codespaces 使用線上程式碼編輯器。點選[範例資源庫](https://github.com/withastro/astro/tree/main/examples)裡任一個範例的 "Open in Stackblitz" 連結。或者,[點此](https://stackblitz.com/fork/astro)在 Stackblitz 開啟新專案。
+
+## 學習 Astro
+
+每個來到 Astro 的人來自不同背景,使得學習方式也不同。不管是喜歡更為理論,還是實際的方法,希望都可以覺得這部分很有用。
+
+- 如果喜歡**從做中學**,從[範例資源庫](https://github.com/withastro/astro/tree/main/examples)開始。
+- 如果喜歡**一步一步學習概念**,就從[基本概念與指南](/core-concepts/project-structure)開始。
+
+就像任何還不熟悉的技術,Astro 會有一些學習曲線。只不過,只要練習和一些耐心,我們確信很快就會熟悉。
+
+### 學習 `.astro` 語法
+
+開始學習 Astro 的時候,會看到很多檔案副檔名是 `.astro`。這是 **Astro 的元件語法**:近似於 HTML 的特殊檔案格式,Astro 用來當作範本。設計成有 HTML 或 JSX 經驗的人都覺得和藹可親。
+
+[Astro 元件](/core-concepts/astro-components)指南會很有幫助,介紹 Astro 的語法,也是最好的學習方式。
+
+### API 參考手冊
+
+如果想要深入探討某個 Astro API,這部分的文件會很有幫助。例如:[設定參考](/reference/configuration-reference)列出所有可以使用的設定選項。[內建元件參考](/reference/builtin-components)列出所有可以使用的核心元件,像是 `<Markdown />` 和 `<Code />`。
+
+### 先前版本的文件
+
+這份文件就肯定是根據 Astro 最新的穩定版本。一但達到 1.0 里程碑,會增加查閱過去文件版本的功能。
+
+## 獲得最新訊息
+
+推特帳號 [@astrodotbuild](https://twitter.com/astrodotbuild) 是 Astro 團隊撰寫的官方更新消息來源。
+
+我們也會把釋出版本公告貼在 [Discord 社群](https://astro.build/chat) 的 #announcements 頻道。
+
+不是每個 Astro 釋出版本都會有一篇專屬的部落格貼文。然而,還是可以在 [Astro 的 Repository 裡的 `CHANGELOG.md` 檔案](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md),找到每個釋出版本的詳細變動記錄。
+
+## 還漏了什麼嗎?
+
+如果文件裡有東西沒寫到,或是覺得有些地方很難理解,請[開文件的 Issue](https://github.com/withastro/astro/issues/new/choose),附上改進建議,或推文到推特帳號 [@astrodotbuild](https://twitter.com/astrodotbuild)。我們喜愛聽到回饋!
+
+## 參考
+
+這份新手上路指南一開始是根據 [React](https://reactjs.org/) 的新手上路指南。
diff --git a/smoke/docs-main/src/pages/zh-TW/installation.md b/smoke/docs-main/src/pages/zh-TW/installation.md
new file mode 100644
index 000000000..0348b878d
--- /dev/null
+++ b/smoke/docs-main/src/pages/zh-TW/installation.md
@@ -0,0 +1,162 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: 安裝
+---
+
+有幾種方式把 Astro 安裝在新專案。
+
+## 環境需求
+
+- **Node.js** - `v14.15.0` 和 `v16.0.0`,或更之後的版本。
+- **文字編輯器** - 我們推薦使用 [VS Code](https://code.visualstudio.com/) 和 [Astro 官方擴充套件](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode)。
+- **終端機** - Astro 主要透過終端機指令進行。
+
+下方範例使用的 [`npm`](https://www.npmjs.com/) 只是用來舉例。也可以使用 [`yarn`](https://yarnpkg.com/) 或 [`pnpm`](https://pnpm.io/) 等 npm 替代方案。
+
+## 建立 Astro
+
+`npm init astro` 是新專案裡,最容易安裝 Astro 的方式。在終端機裡執行這個指令,就可以啟動 `create-astro` 安裝精靈,協助設定新專案。
+
+```shell
+# 用 NPM
+npm init astro
+
+# Yarn
+yarn create astro
+```
+
+[`create-astro`](https://github.com/withastro/astro/tree/main/packages/create-astro) 精靈提供一些[上手範本](/examples)進行挑選。或者,也可以直接從 Github 匯入自己的 Astro 專案。
+
+```bash
+# 提醒:把「my-astro-project」改為專案的名稱。
+
+# npm 6.x
+npm init astro my-astro-project --template starter
+# npm 7+(一定要多加上一組雙橫槓)
+npm init astro my-astro-project -- --template starter
+# yarn
+yarn create astro my-astro-project --template starter
+# 使用第三方範本
+npm init astro my-astro-project -- --template [GITHUB_USER]/[REPO_NAME]
+# 在 Repo 裡,使用第三方範本
+npm init astro my-astro-project -- --template [GITHUB_USER]/[REPO_NAME]/path/to/template
+```
+
+`create-astro` 架設好專案的基礎外框之後,記得要用 npm 或偏好的套件管理工具,安裝專案的相依套件。範例裡使用 npm:
+
+```bash
+npm install
+```
+
+現在,可以[啟動](#start-astro) Astro 專案。把 Astro 專案組裝好之後,接著是 [Build](#build-astro) 專案。Astro 就會將應用程式打包起來,準備好靜態檔案,就可以[部署](/guides/deploy)至慣用的主機服務。
+
+## 手動安裝
+
+沒有 `create-astro` 精靈的協助,也可以設定 Astro。接下來就是要讓 Astro 動起來的一些額外步驟。
+
+### 設定專案
+
+```bash
+# 建立、進入新資料夾
+mkdir my-astro-project
+cd my-astro-project
+```
+
+建立以專案名稱為名的空資料夾,接著進入該處:
+
+### 建立 `package.json`
+
+```bash
+# 這個指令會建立基本的 package.json
+npm init --yes
+```
+
+Astro 設計成與 npm 套件整體生態一起運作,由專案根目錄  裡,稱為 `package.json` 的專案 Manifest 進行管理。如果不熟悉 `package.json` 檔案,強烈建議先將 [npm 文件](https://docs.npmjs.com/creating-a-package-json-file)快速讀過一遍。
+
+### 安裝 Astro
+
+按照上方的指示之後,應該有個資料夾,裡面只有 `package.json` 一個檔案。現在即可在專案裡設定 Astro。
+
+```bash
+npm install astro
+```
+
+取代 `package.json` 檔案裡,從 `npm init` 產生、一開始就有的 "script" 部分:
+
+```diff
+ "scripts": {
+- "test": "echo \"Error: no test specified\" && exit 1"
++ "dev": "astro dev",
++ "build": "astro build",
++ "preview": "astro preview"
+ },
+}
+```
+
+[`dev`](#start-astro) 指令在 `http://localhost:3000` 啟動 Astro 開發伺服器。一但專案已經準備好,[`build`](#build-astro) 指令將專案輸出至 `dist/` 資料夾。[在「部署指南」深入閱讀部署 Astro](/guides/deploy)。
+
+### 建立第一個頁面
+
+打開偏好的文字編輯器,接著在專案裡新增檔案:
+
+1. 在 `src/pages/index.astro` 新增檔案
+2. 在檔案裡複製貼上以下程式碼片段(包含橫槓 `---` ):
+
+```astro
+---
+// 在程式碼 fence 之間寫的 JS/TS 程式碼,
+// 只會在伺服器端執行!
+console.log('See me in the Terminal')
+---
+
+<html>
+ <body>
+ <h1>Hello, World!</h1>
+ </body>
+</html>
+
+<style lang='css||scss'>
+ body{
+ h1{
+ color:orange;
+ }
+ }
+</style>
+
+<script>
+ // 在這裡輸入的 JS 程式碼只會在瀏覽器執行
+ console.log('See me in the devTools')
+</script>
+```
+
+以上就是 Astro 的元件語法範例,同時包含 HTML 和 JSX。
+
+在 `src/pages` 資料夾裡還可以加入更多頁面,Astro 就會使用檔案名稱建立網站的新頁面。舉例來說,位在 `src/pages/about.astro` 的檔案(可以重複使用上面的程式碼片段),Astro 就會有網址是 `http://localhost/about` 的新頁面。
+
+## [啟動 Astro](#start-astro)
+
+```bash
+npm run dev
+```
+
+Astro 會為應用程式打開 `http://localhost:3000` 的伺服器。在瀏覽器開啟網址,就會看到 Astro 的「Hello World」。
+
+## [Build Astro](#build-astro)
+
+```bash
+npm run build
+```
+
+這樣就會指揮 Astro 開始 Build 網站,存在磁碟裡。現在,應用程式已經放在 `dist/` 資料夾裡準備好了。
+
+### 下一步
+
+成功了!現在即可開始開發!
+
+我們建議花點時間更熟悉 Astro 的運作方式。只要在文件裡進一步探索,建議看看這些:
+
+📚 深入了解 Astro 的專案架構:[專案架構指南。](/core-concepts/project-structure)
+
+📚 深入了解 Astro 的元件語法:[Astro 元件指南。](/core-concepts/astro-components)
+
+📚 深入了解 Astro 根據檔案產生的路徑:[路徑指南。](core-concepts/astro-pages)
diff --git a/smoke/docs-main/src/pages/zh-TW/quick-start.md b/smoke/docs-main/src/pages/zh-TW/quick-start.md
new file mode 100644
index 000000000..ce8c23750
--- /dev/null
+++ b/smoke/docs-main/src/pages/zh-TW/quick-start.md
@@ -0,0 +1,72 @@
+---
+layout: ~/layouts/MainLayout.astro
+title: 快速開始
+---
+
+```shell
+# 環境需求:檢查 Node.js 版本是 14.15.0+ 或 16+。
+node --version
+
+# 開新專案資料夾,並且直接移動到該處
+mkdir my-astro-project && cd $_
+
+# 準備發射...
+npm init astro
+
+# 安裝相依套件
+npm install
+
+# 開始開發!
+npm run dev
+```
+
+```shell
+# 做好之後:把靜態網站 build 進 `dist/`
+npm run build
+```
+
+若想要知道還有哪些方法能夠以 Astro 來做專案,請[閱讀安裝指南](installation)。
+
+## 開始專案
+
+專案目錄裡,在終端機輸入以下指令:
+
+```bash
+npm run dev
+```
+
+現在,Astro 就會開啟應用程式的伺服器,位置是 [http://localhost:3000](http://localhost:3000)。在瀏覽器打開這網址,就會看到 Astro 的 「Hello, World」。
+
+伺服器會即時監聽 `src/` 資料夾的檔案異動,所以在開發過程的更新毋需重新啟動應用程式。
+
+## Build 專案
+
+若要將專案 Build 起來,移至資料夾裡面,在終端機輸入指令:
+
+```bash
+npm run build
+```
+
+這樣就會指揮 Astro 開始 Build 網站,存在磁碟裡。現在,應用程式已經放在 `dist/` 資料夾裡準備好了。
+
+## 部署專案
+
+Astro 網站是靜態的,所以可以發布至慣用的主機:
+
+- [Vercel](https://vercel.com/)
+- [Netlify](https://www.netlify.com/)
+- [S3 bucket](https://aws.amazon.com/s3/)
+- [Google Firebase](https://firebase.google.com/)
+- [「部署指南」有更多部署 Astro 的細節。](/guides/deploy)
+
+## 下一步
+
+成功了!現在即可開始開發!
+
+我們建議花點時間更熟悉 Astro 的運作方式。只要在文件裡進一步探索,建議看看這些:
+
+📚 深入了解 Astro 的專案架構:[專案架構指南。](/core-concepts/project-structure)
+
+📚 深入了解 Astro 的元件語法:[Astro 元件指南。](/core-concepts/astro-components)
+
+📚 深入了解 Astro 根據檔案產生的路徑:[路徑指南。](core-concepts/astro-pages)
diff --git a/smoke/docs-main/src/pages/zh-TW/themes.astro b/smoke/docs-main/src/pages/zh-TW/themes.astro
new file mode 100644
index 000000000..c1908fbc8
--- /dev/null
+++ b/smoke/docs-main/src/pages/zh-TW/themes.astro
@@ -0,0 +1,53 @@
+---
+import Layout from '../../layouts/MainLayout.astro';
+import Card from '../../components/Card.astro';
+import { Markdown } from 'astro/components';
+import themes from '../../data/themes.json';
+import components from '../../data/components.json';
+---
+
+<Layout content={{ title: '佈景主題' }} hideRightSidebar>
+ <style>
+ .card-grid {
+ display: grid;
+ grid-column-gap: 15px;
+ grid-row-gap: 15px;
+ grid-auto-flow: dense;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ }
+ </style>
+ <Markdown>
+ ## 精選佈景主題
+ </Markdown>
+ <div class="card-grid">
+ {themes.featured.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ ## 官方佈景主題
+
+ Astro 維護的文件網站、作品集 ⋯ 等官方佈景主題。
+ </Markdown>
+ <div class="card-grid">
+ {themes.official.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ ## 社群佈景主題
+
+ 趕緊來看看社群開發的佈景主題!
+ </Markdown>
+ <div class="card-grid">
+ {themes.community.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ ## 精選套件
+
+ 我們的套件生態持續成長!所有精選社群套件都可以在 [npm](https://www.npmjs.com/search?q=keywords%3Aastro-component) 發掘。
+ </Markdown>
+ <div class="card-grid">
+ {components.community.map((item) => <Card data={item} />)}
+ </div>
+ <Markdown>
+ > 想要讓自己的作品成為精選嗎?[在 Discord 分享!](https://astro.build/chat)
+ > 我們常在 `#showcase` 頻道取材,把深受喜愛的在這裡發布。
+ </Markdown>
+</Layout>
diff --git a/smoke/docs-main/src/util.ts b/smoke/docs-main/src/util.ts
new file mode 100644
index 000000000..c20b0713e
--- /dev/null
+++ b/smoke/docs-main/src/util.ts
@@ -0,0 +1,14 @@
+export function getLanguageFromURL(pathname: string) {
+ const langCodeMatch = pathname.match(/\/([a-z]{2}-?[A-Z]{0,2})\//);
+ return langCodeMatch ? langCodeMatch[1] : 'en';
+}
+
+/** Remove \ and / from beginning of string */
+export function removeLeadingSlash(path: string) {
+ return path.replace(/^[/\\]+/, '');
+}
+
+/** Remove \ and / from end of string */
+export function removeTrailingSlash(path: string) {
+ return path.replace(/[/\\]+$/, '');
+}
diff --git a/smoke/docs-main/yarn.lock b/smoke/docs-main/yarn.lock
new file mode 100644
index 000000000..22f9085c1
--- /dev/null
+++ b/smoke/docs-main/yarn.lock
@@ -0,0 +1,5608 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@algolia/autocomplete-core@1.5.2":
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz#ec0178e07b44fd74a057728ac157291b26cecf37"
+ integrity sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A==
+ dependencies:
+ "@algolia/autocomplete-shared" "1.5.2"
+
+"@algolia/autocomplete-preset-algolia@1.5.2":
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz#36c5638cc6dba6ea46a86e5a0314637ca40a77ca"
+ integrity sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw==
+ dependencies:
+ "@algolia/autocomplete-shared" "1.5.2"
+
+"@algolia/autocomplete-shared@1.5.2":
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz#e157f9ad624ab8fd940ff28bd2094cdf199cdd79"
+ integrity sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug==
+
+"@algolia/cache-browser-local-storage@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.12.1.tgz#23f4f219963b96918d0524acd09d4d646541d888"
+ integrity sha512-ERFFOnC9740xAkuO0iZTQqm2AzU7Dpz/s+g7o48GlZgx5p9GgNcsuK5eS0GoW/tAK+fnKlizCtlFHNuIWuvfsg==
+ dependencies:
+ "@algolia/cache-common" "4.12.1"
+
+"@algolia/cache-common@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.12.1.tgz#d3f1676ca9c404adce0f78d68f6381bedb44cd9c"
+ integrity sha512-UugTER3V40jT+e19Dmph5PKMeliYKxycNPwrPNADin0RcWNfT2QksK9Ff2N2W7UKraqMOzoeDb4LAJtxcK1a8Q==
+
+"@algolia/cache-in-memory@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.12.1.tgz#0ef6aac2f8feab5b46fc130beb682bbd21b55244"
+ integrity sha512-U6iaunaxK1lHsAf02UWF58foKFEcrVLsHwN56UkCtwn32nlP9rz52WOcHsgk6TJrL8NDcO5swMjtOQ5XHESFLw==
+ dependencies:
+ "@algolia/cache-common" "4.12.1"
+
+"@algolia/client-account@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.12.1.tgz#e838c9283db2fab32a425dd13c77da321d48fd8b"
+ integrity sha512-jGo4ConJNoMdTCR2zouO0jO/JcJmzOK6crFxMMLvdnB1JhmMbuIKluOTJVlBWeivnmcsqb7r0v7qTCPW5PAyxQ==
+ dependencies:
+ "@algolia/client-common" "4.12.1"
+ "@algolia/client-search" "4.12.1"
+ "@algolia/transporter" "4.12.1"
+
+"@algolia/client-analytics@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.12.1.tgz#2976d658655a1590cf84cfb596aa75a204f6dec4"
+ integrity sha512-h1It7KXzIthlhuhfBk7LteYq72tym9maQDUsyRW0Gft8b6ZQahnRak9gcCvKwhcJ1vJoP7T7JrNYGiYSicTD9g==
+ dependencies:
+ "@algolia/client-common" "4.12.1"
+ "@algolia/client-search" "4.12.1"
+ "@algolia/requester-common" "4.12.1"
+ "@algolia/transporter" "4.12.1"
+
+"@algolia/client-common@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.12.1.tgz#104ccefe96bda3ff926bc70c31ff6d17c41b6107"
+ integrity sha512-obnJ8eSbv+h94Grk83DTGQ3bqhViSWureV6oK1s21/KMGWbb3DkduHm+lcwFrMFkjSUSzosLBHV9EQUIBvueTw==
+ dependencies:
+ "@algolia/requester-common" "4.12.1"
+ "@algolia/transporter" "4.12.1"
+
+"@algolia/client-personalization@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.12.1.tgz#f63d1890f95de850e1c8e41c1d57adda521d9e7f"
+ integrity sha512-sMSnjjPjRgByGHYygV+5L/E8a6RgU7l2GbpJukSzJ9GRY37tHmBHuvahv8JjdCGJ2p7QDYLnQy5bN5Z02qjc7Q==
+ dependencies:
+ "@algolia/client-common" "4.12.1"
+ "@algolia/requester-common" "4.12.1"
+ "@algolia/transporter" "4.12.1"
+
+"@algolia/client-search@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.12.1.tgz#fcd7a974be5d39d5c336d7f2e89577ffa66aefdd"
+ integrity sha512-MwwKKprfY6X2nJ5Ki/ccXM2GDEePvVjZnnoOB2io3dLKW4fTqeSRlC5DRXeFD7UM0vOPPHr4ItV2aj19APKNVQ==
+ dependencies:
+ "@algolia/client-common" "4.12.1"
+ "@algolia/requester-common" "4.12.1"
+ "@algolia/transporter" "4.12.1"
+
+"@algolia/logger-common@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.12.1.tgz#d6501b4d9d242956257ba8e10f6b4bbf6863baa4"
+ integrity sha512-fCgrzlXGATNqdFTxwx0GsyPXK+Uqrx1SZ3iuY2VGPPqdt1a20clAG2n2OcLHJpvaa6vMFPlJyWvbqAgzxdxBlQ==
+
+"@algolia/logger-console@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.12.1.tgz#841edd39dd5c5530a69fc66084bfee3254dd0807"
+ integrity sha512-0owaEnq/davngQMYqxLA4KrhWHiXujQ1CU3FFnyUcMyBR7rGHI48zSOUpqnsAXrMBdSH6rH5BDkSUUFwsh8RkQ==
+ dependencies:
+ "@algolia/logger-common" "4.12.1"
+
+"@algolia/requester-browser-xhr@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.12.1.tgz#2d0c18ee188d7cae0e4a930e5e89989e3c4a816b"
+ integrity sha512-OaMxDyG0TZG0oqz1lQh9e3woantAG1bLnuwq3fmypsrQxra4IQZiyn1x+kEb69D2TcXApI5gOgrD4oWhtEVMtw==
+ dependencies:
+ "@algolia/requester-common" "4.12.1"
+
+"@algolia/requester-common@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.12.1.tgz#95bb6539da7199da3e205341cea8f27267f7af29"
+ integrity sha512-XWIrWQNJ1vIrSuL/bUk3ZwNMNxl+aWz6dNboRW6+lGTcMIwc3NBFE90ogbZKhNrFRff8zI4qCF15tjW+Fyhpow==
+
+"@algolia/requester-node-http@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.12.1.tgz#c9df97ff1daa7e58c5c2b1f28cf7163005edccb0"
+ integrity sha512-awBtwaD+s0hxkA1aehYn8F0t9wqGoBVWgY4JPHBmp1ChO3pK7RKnnvnv7QQa9vTlllX29oPt/BBVgMo1Z3n1Qg==
+ dependencies:
+ "@algolia/requester-common" "4.12.1"
+
+"@algolia/transporter@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.12.1.tgz#61b9829916c474f42e2d4a6eada0d6c138379945"
+ integrity sha512-BGeNgdEHc6dXIk2g8kdlOoQ6fQ6OIaKQcplEj7HPoi+XZUeAvRi3Pff3QWd7YmybWkjzd9AnTzieTASDWhL+sQ==
+ dependencies:
+ "@algolia/cache-common" "4.12.1"
+ "@algolia/logger-common" "4.12.1"
+ "@algolia/requester-common" "4.12.1"
+
+"@ampproject/remapping@^2.0.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.0.tgz#72becdf17ee44b2d1ac5651fb12f1952c336fe23"
+ integrity sha512-d5RysTlJ7hmw5Tw4UxgxcY3lkMe92n8sXCcuLPAyIAHK6j8DefDwtGnVVDgOnv+RnEosulDJ9NPKQL27bDId0g==
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.0"
+
+"@astrojs/compiler@^0.9.2":
+ version "0.9.2"
+ resolved "https://registry.yarnpkg.com/@astrojs/compiler/-/compiler-0.9.2.tgz#aea226472046cb88c0ff20661be34af84d983feb"
+ integrity sha512-8yxdyokSNmTbcDfW75k5NcPKMBnPTfzLHVxhdiUrII7Zqh/OG9SaOZWFCnvFhU8dkQBUU6B1eh/ABAHwnxZWGw==
+ dependencies:
+ typescript "^4.3.5"
+
+"@astrojs/language-server@^0.8.6":
+ version "0.8.8"
+ resolved "https://registry.yarnpkg.com/@astrojs/language-server/-/language-server-0.8.8.tgz#feabb30b080733350e08020e18fa602d76e9066d"
+ integrity sha512-XgBSVpqXEqGTdst+CnM03/nXYw9PYNAfTl27BaJuUhEtqA/iDlyM7wLnQMsJzwWVmoLqp0bCumHkb62NtfeDNA==
+ dependencies:
+ lodash "^4.17.21"
+ source-map "^0.7.3"
+ ts-morph "^12.0.0"
+ typescript "^4.5.4"
+ vscode-css-languageservice "^5.1.1"
+ vscode-emmet-helper "2.1.2"
+ vscode-html-languageservice "^3.0.3"
+ vscode-languageserver "6.1.1"
+ vscode-languageserver-protocol "^3.16.0"
+ vscode-languageserver-textdocument "^1.0.1"
+ vscode-languageserver-types "^3.16.0"
+ vscode-uri "^3.0.2"
+
+"@astrojs/markdown-remark@^0.6.0":
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/markdown-remark/-/markdown-remark-0.6.0.tgz#9d8cf36645fed2de56e52e04eed6123cee9c70fe"
+ integrity sha512-zW1w/8OrWzEgkE3AXKB2vgu6o4BLVTeC1Ykq0u4AiLhkdu1MZcCAC3AJLXzXN3D/s7qiDZxOouF+PKYxGwx3xg==
+ dependencies:
+ "@astrojs/prism" "^0.4.0"
+ assert "^2.0.0"
+ github-slugger "^1.4.0"
+ gray-matter "^4.0.3"
+ mdast-util-mdx-expression "^1.1.1"
+ mdast-util-mdx-jsx "^1.1.3"
+ micromark-extension-mdx-expression "^1.0.3"
+ micromark-extension-mdx-jsx "^1.0.2"
+ prismjs "^1.25.0"
+ rehype-raw "^6.1.0"
+ rehype-slug "^5.0.0"
+ rehype-stringify "^9.0.2"
+ remark-gfm "^3.0.1"
+ remark-parse "^10.0.1"
+ remark-rehype "^10.0.1"
+ remark-smartypants "^2.0.0"
+ unified "^10.1.1"
+ unist-util-map "^3.0.0"
+ unist-util-visit "^4.1.0"
+
+"@astrojs/parser@^0.22.0":
+ version "0.22.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/parser/-/parser-0.22.0.tgz#a717d4c2d7bb5080ae4c67077aec432cb8bce835"
+ integrity sha512-H3YpRaVuW5mNPrcEEMzfNQla10TX6c/gQ73RrGK089C6yie3jSjIz0pw292E26larYC0zAlNLGH+IwhlYFPklA==
+ dependencies:
+ acorn "^8.6.0"
+ locate-character "^2.0.5"
+ magic-string "^0.25.3"
+
+"@astrojs/prism@0.4.0", "@astrojs/prism@^0.4.0":
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/prism/-/prism-0.4.0.tgz#615c8d9d9ca0c2b4984870b973a935d28b693ac5"
+ integrity sha512-dbB9Acm9Z/GDqhxwPv7W/DlZAScWNZGzFz8klTqDo9kaWD6O3qsZpXn641GuGeXdNWkqTmkinu37ZJHSxaDB7A==
+
+"@astrojs/renderer-preact@^0.4.0":
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/renderer-preact/-/renderer-preact-0.4.0.tgz#c57fef65561996f29f9b5033f59221c8ccf56cd0"
+ integrity sha512-pid/tz6c0V07TZNstZILBSXBF/HPCyfnWLfwtw2F66rE+TI1EpZmlZPNz9X0r28n0pBzTfNzu2ZwIvWs+CuTcQ==
+ dependencies:
+ "@babel/plugin-transform-react-jsx" "^7.16.0"
+ preact "~10.5.15"
+ preact-render-to-string "^5.1.19"
+
+"@astrojs/renderer-react@0.4.1":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@astrojs/renderer-react/-/renderer-react-0.4.1.tgz#e72913182bb6a47ad765d6ea0f9e5417c9e45fb6"
+ integrity sha512-GrDw3zTUjjRBzWYFEPecHg9KBuFnWdLXnz+uAsEfCqeOIt6IPyzmN5lIVfx9Ta5+lYsIt3NlBKu5X7vwfCSoNQ==
+ dependencies:
+ "@babel/plugin-transform-react-jsx" "^7.16.0"
+ react "^17.0.2"
+ react-dom "^17.0.2"
+
+"@astrojs/renderer-svelte@0.3.1":
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/@astrojs/renderer-svelte/-/renderer-svelte-0.3.1.tgz#f146c3401e6a483d71b018bbf510e7bcbc430442"
+ integrity sha512-upK/Mm00wI8xWqxiSjBV4SuDCSh3hsafLzORvy5vjpd2Czw8LM4c2SdlegBD1vtzbFUc1CnwZqNGdhCSbSHJYA==
+ dependencies:
+ "@sveltejs/vite-plugin-svelte" "1.0.0-next.30"
+ svelte "^3.44.3"
+ svelte-preprocess "^4.9.8"
+
+"@astrojs/renderer-vue@0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/renderer-vue/-/renderer-vue-0.3.0.tgz#f3994dc9c175c39e82b0e07391034082b30c0d82"
+ integrity sha512-XV/WLhG76ORXFcYnjbYS8Xa7TJpOzK/eOe55XsbVPlONmg0Cyx/a20Es9KBAolelgmBlIOAJAtDBZ1Dn5rQOjA==
+ dependencies:
+ "@vitejs/plugin-vue" "^1.9.4"
+ vue "^3.2.22"
+
+"@astropub/webapi@^0.10.1":
+ version "0.10.13"
+ resolved "https://registry.yarnpkg.com/@astropub/webapi/-/webapi-0.10.13.tgz#28f95706d1e9041495347465fb347eb78035cdd7"
+ integrity sha512-efUVnq9IWPHYl5nxSLkDZzp1RvNmKpYApcHhgQnN2A+4D8z6dnTYlXo5Ogl0aAJWMMBKN89Q2GJwDF0zy8Lonw==
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
+ integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
+ dependencies:
+ "@babel/highlight" "^7.16.7"
+
+"@babel/compat-data@^7.16.4":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34"
+ integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==
+
+"@babel/core@^7.15.8":
+ version "7.17.2"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.2.tgz#2c77fc430e95139d816d39b113b31bf40fb22337"
+ integrity sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw==
+ dependencies:
+ "@ampproject/remapping" "^2.0.0"
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.17.0"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helpers" "^7.17.2"
+ "@babel/parser" "^7.17.0"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.17.0"
+ "@babel/types" "^7.17.0"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.1.2"
+ semver "^6.3.0"
+
+"@babel/generator@^7.17.0":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e"
+ integrity sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==
+ dependencies:
+ "@babel/types" "^7.17.0"
+ jsesc "^2.5.1"
+ source-map "^0.5.0"
+
+"@babel/helper-annotate-as-pure@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862"
+ integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-compilation-targets@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b"
+ integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==
+ dependencies:
+ "@babel/compat-data" "^7.16.4"
+ "@babel/helper-validator-option" "^7.16.7"
+ browserslist "^4.17.5"
+ semver "^6.3.0"
+
+"@babel/helper-environment-visitor@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7"
+ integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-function-name@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f"
+ integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-get-function-arity@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419"
+ integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-hoist-variables@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246"
+ integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-module-imports@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437"
+ integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-module-transforms@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41"
+ integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-simple-access" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-plugin-utils@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5"
+ integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==
+
+"@babel/helper-simple-access@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7"
+ integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-split-export-declaration@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b"
+ integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-validator-identifier@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
+ integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
+
+"@babel/helper-validator-option@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23"
+ integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==
+
+"@babel/helpers@^7.17.2":
+ version "7.17.2"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417"
+ integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==
+ dependencies:
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.17.0"
+ "@babel/types" "^7.17.0"
+
+"@babel/highlight@^7.16.7":
+ version "7.16.10"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88"
+ integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.1.0", "@babel/parser@^7.16.4", "@babel/parser@^7.16.7", "@babel/parser@^7.17.0":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c"
+ integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==
+
+"@babel/plugin-syntax-jsx@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665"
+ integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-react-jsx@^7.16.0":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4"
+ integrity sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-jsx" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/template@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
+ integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/parser" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/traverse@^7.15.4", "@babel/traverse@^7.16.7", "@babel/traverse@^7.17.0":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.0.tgz#3143e5066796408ccc880a33ecd3184f3e75cd30"
+ integrity sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.17.0"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/parser" "^7.17.0"
+ "@babel/types" "^7.17.0"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.3.0":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b"
+ integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ to-fast-properties "^2.0.0"
+
+"@docsearch/css@3.0.0-alpha.50":
+ version "3.0.0-alpha.50"
+ resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0-alpha.50.tgz#794c6a8d301840a49b55f5b331c7be84b9723643"
+ integrity sha512-QeWFCQOtS9D+Fi20liKsPXF2j/xWKh52e+P2Z1UATIdPMqmH6zoB2lcUz+cgv6PPVgWUtECeR6VSSUm71LT94w==
+
+"@docsearch/react@^3.0.0-alpha.50":
+ version "3.0.0-alpha.50"
+ resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0-alpha.50.tgz#a7dc547836c2b221fd3aa8eb87bfb47a579ef141"
+ integrity sha512-oDGV1zZCRYv7MWsh6CyQVthYTRc3b4q+6kKwNYb1/g/Wf/4nJHutpxolFLHdEUDhrJ4Xi8wxwQG+lEwAVBTHPg==
+ dependencies:
+ "@algolia/autocomplete-core" "1.5.2"
+ "@algolia/autocomplete-preset-algolia" "1.5.2"
+ "@docsearch/css" "3.0.0-alpha.50"
+ algoliasearch "^4.0.0"
+
+"@emmetio/abbreviation@^2.2.2":
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/@emmetio/abbreviation/-/abbreviation-2.2.2.tgz#746762fd9e7a8c2ea604f580c62e3cfe250e6989"
+ integrity sha512-TtE/dBnkTCct8+LntkqVrwqQao6EnPAs1YN3cUgxOxTaBlesBCY37ROUAVZrRlG64GNnVShdl/b70RfAI3w5lw==
+ dependencies:
+ "@emmetio/scanner" "^1.0.0"
+
+"@emmetio/css-abbreviation@^2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@emmetio/css-abbreviation/-/css-abbreviation-2.1.4.tgz#90362e8a1122ce3b76f6c3157907d30182f53f54"
+ integrity sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==
+ dependencies:
+ "@emmetio/scanner" "^1.0.0"
+
+"@emmetio/scanner@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@emmetio/scanner/-/scanner-1.0.0.tgz#065b2af6233fe7474d44823e3deb89724af42b5f"
+ integrity sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==
+
+"@jridgewell/resolve-uri@^3.0.3":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz#b876e3feefb9c8d3aa84014da28b5e52a0640d72"
+ integrity sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==
+
+"@jridgewell/sourcemap-codec@^1.4.10":
+ version "1.4.10"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.10.tgz#baf57b4e2a690d4f38560171f91783656b7f8186"
+ integrity sha512-Ht8wIW5v165atIX1p+JvKR5ONzUyF4Ac8DZIQ5kZs9zrb6M8SJNXpx1zn04rn65VjBMygRoMXcyYwNK0fT7bEg==
+
+"@jridgewell/trace-mapping@^0.3.0":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3"
+ integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@ljharb/has-package-exports-patterns@0.0.1":
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/@ljharb/has-package-exports-patterns/-/has-package-exports-patterns-0.0.1.tgz#70f07047b058e0909488a0ab1928afb95a9326d0"
+ integrity sha512-J4HxcjHI8EzVwXj2HKfZrwnWv4wmOhGxSHyxDQLhiL4ibwRoIkYBqsacZUXFUWQzJtW6QC+FKSNy8HqKjkEqaQ==
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@proload/core@^0.2.1":
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/@proload/core/-/core-0.2.2.tgz#d6de30e06a8864bdd0fbe568f87d0582cf988c1d"
+ integrity sha512-HYQEblYXIpW77kvGyW4penEl9D9e9MouPhTqVaDz9+QVFliYjsq18inTfnfTa81s3oraPVtTk60tqCWOf2fKGQ==
+ dependencies:
+ deepmerge "^4.2.2"
+ escalade "^3.1.1"
+
+"@proload/plugin-tsm@^0.1.0":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@proload/plugin-tsm/-/plugin-tsm-0.1.1.tgz#096cefbf9a4fab42d129db36b194c64ac0ad20ec"
+ integrity sha512-qfGegg6I3YBCZDjYR9xb41MTc2EfL0sQQmw49Z/yi9OstIpUa/67MBy4AuNhoyG9FuOXia9gPoeBk5pGnBOGtA==
+ dependencies:
+ tsm "^2.1.4"
+
+"@rollup/pluginutils@^4.1.1":
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.2.tgz#ed5821c15e5e05e32816f5fb9ec607cdf5a75751"
+ integrity sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==
+ dependencies:
+ estree-walker "^2.0.1"
+ picomatch "^2.2.2"
+
+"@sveltejs/vite-plugin-svelte@1.0.0-next.30":
+ version "1.0.0-next.30"
+ resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.30.tgz#a6cd181bb406d590c1fa8d480c55950d567689f9"
+ integrity sha512-YQqdMxjL1VgSFk4/+IY3yLwuRRapPafPiZTiaGEq1psbJYSNYUWx9F1zMm32GMsnogg3zn99mGJOqe3ld3HZSg==
+ dependencies:
+ "@rollup/pluginutils" "^4.1.1"
+ debug "^4.3.2"
+ kleur "^4.1.4"
+ magic-string "^0.25.7"
+ require-relative "^0.8.7"
+ svelte-hmr "^0.14.7"
+
+"@ts-morph/common@~0.11.1":
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.11.1.tgz#281af2a0642b19354d8aa07a0d50dfdb4aa8164e"
+ integrity sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==
+ dependencies:
+ fast-glob "^3.2.7"
+ minimatch "^3.0.4"
+ mkdirp "^1.0.4"
+ path-browserify "^1.0.1"
+
+"@types/acorn@^4.0.0":
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.6.tgz#d61ca5480300ac41a7d973dd5b84d0a591154a22"
+ integrity sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==
+ dependencies:
+ "@types/estree" "*"
+
+"@types/babel__core@^7.1.15":
+ version "7.1.18"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8"
+ integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+ "@types/babel__generator" "*"
+ "@types/babel__template" "*"
+ "@types/babel__traverse" "*"
+
+"@types/babel__generator@*":
+ version "7.6.4"
+ resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7"
+ integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@types/babel__template@*":
+ version "7.4.1"
+ resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969"
+ integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@types/babel__traverse@*":
+ version "7.14.2"
+ resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43"
+ integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==
+ dependencies:
+ "@babel/types" "^7.3.0"
+
+"@types/debug@^4.0.0":
+ version "4.1.7"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82"
+ integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==
+ dependencies:
+ "@types/ms" "*"
+
+"@types/estree-jsx@^0.0.1":
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-0.0.1.tgz#c36d7a1afeb47a95a8ee0b7bc8bc705db38f919d"
+ integrity sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==
+ dependencies:
+ "@types/estree" "*"
+
+"@types/estree@*":
+ version "0.0.51"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
+ integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
+
+"@types/estree@^0.0.50":
+ version "0.0.50"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
+ integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==
+
+"@types/glob@^7.1.1":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
+ integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
+ dependencies:
+ "@types/minimatch" "*"
+ "@types/node" "*"
+
+"@types/hast@^2.0.0":
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc"
+ integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/json5@^0.0.30":
+ version "0.0.30"
+ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.30.tgz#44cb52f32a809734ca562e685c6473b5754a7818"
+ integrity sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==
+
+"@types/mdast@^3.0.0":
+ version "3.0.10"
+ resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af"
+ integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/mdurl@^1.0.0":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9"
+ integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==
+
+"@types/minimatch@*":
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
+ integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
+
+"@types/minimist@^1.2.0":
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c"
+ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
+
+"@types/ms@*":
+ version "0.7.31"
+ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
+ integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
+
+"@types/nlcst@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/nlcst/-/nlcst-1.0.0.tgz#9dacd7e9a32bcf0451873be62bdc373aed735b46"
+ integrity sha512-3TGCfOcy8R8mMQ4CNSNOe3PG66HttvjcLzCoOpvXvDtfWOTi+uT/rxeOKm/qEwbM4SNe1O/PjdiBK2YcTjU4OQ==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/node@*":
+ version "17.0.17"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.17.tgz#a8ddf6e0c2341718d74ee3dc413a13a042c45a0c"
+ integrity sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw==
+
+"@types/normalize-package-data@^2.4.0":
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
+ integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
+
+"@types/parse5@^6.0.0", "@types/parse5@^6.0.1":
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb"
+ integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==
+
+"@types/pug@^2.0.4":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.6.tgz#f830323c88172e66826d0bde413498b61054b5a6"
+ integrity sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==
+
+"@types/resolve@^1.17.0":
+ version "1.20.1"
+ resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.1.tgz#3727e48042fda81e374f5d5cf2fa92288bf698f8"
+ integrity sha512-Ku5+GPFa12S3W26Uwtw+xyrtIpaZsGYHH6zxNbZlstmlvMYSZRzOwzwsXbxlVUbHyUucctSyuFtu6bNxwYomIw==
+
+"@types/sass@^1.16.0":
+ version "1.43.1"
+ resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.43.1.tgz#86bb0168e9e881d7dade6eba16c9ed6d25dc2f68"
+ integrity sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==
+ dependencies:
+ "@types/node" "*"
+
+"@types/unist@*", "@types/unist@^2.0.0":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d"
+ integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==
+
+"@types/yauzl@^2.9.1":
+ version "2.9.2"
+ resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a"
+ integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==
+ dependencies:
+ "@types/node" "*"
+
+"@vitejs/plugin-vue@^1.9.4":
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.10.2.tgz#d718479e2789d8a94b63e00f23f1898ba239253a"
+ integrity sha512-/QJ0Z9qfhAFtKRY+r57ziY4BSbGUTGsPRMpB/Ron3QPwBZM4OZAZHdTa4a8PafCwU5DTatXG8TMDoP8z+oDqJw==
+
+"@vue/compiler-core@3.2.30":
+ version "3.2.30"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.30.tgz#6c5b362490930e72de8d033270a145e3830ae5c4"
+ integrity sha512-64fq1KfcR+k3Vlw+IsBM2VhV5B+2IP3YxvKU8LWCDLrkmlXtbf2eMK6+0IwX5KP41D0f1gzryIiXR7P8cB9O5Q==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/shared" "3.2.30"
+ estree-walker "^2.0.2"
+ source-map "^0.6.1"
+
+"@vue/compiler-dom@3.2.30":
+ version "3.2.30"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.30.tgz#ed15e6243227baeaa445d04df804aee6e4926eab"
+ integrity sha512-t7arHz2SXLCXlF2fdGDFVbhENbGMez254Z5edUqb//6WXJU1lC7GvSkUE7i5x8WSjgfqt60i0V8zdmk16rvLdw==
+ dependencies:
+ "@vue/compiler-core" "3.2.30"
+ "@vue/shared" "3.2.30"
+
+"@vue/compiler-sfc@3.2.30":
+ version "3.2.30"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.30.tgz#9d2e56adb859059551fc1204bc37503f168c4d0c"
+ integrity sha512-P/5YpILtcQY92z72gxhkyOUPHVskEzhSrvYi91Xcr+csOxaDaYU5OqOxCzZKcf3Og70Tat404vO1OHrwprN90A==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.30"
+ "@vue/compiler-dom" "3.2.30"
+ "@vue/compiler-ssr" "3.2.30"
+ "@vue/reactivity-transform" "3.2.30"
+ "@vue/shared" "3.2.30"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+ postcss "^8.1.10"
+ source-map "^0.6.1"
+
+"@vue/compiler-ssr@3.2.30":
+ version "3.2.30"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.30.tgz#fc2bc13a9cdfd70fcffab3f0bc7de141cd9c3411"
+ integrity sha512-OUh3MwAu/PsD7VN3UOdBbTkltkrUCNouSht47+CMRzpUR5+ta7+xyMAVHeq8wg4YZenWaJimbR5TL35Ka4Vk6g==
+ dependencies:
+ "@vue/compiler-dom" "3.2.30"
+ "@vue/shared" "3.2.30"
+
+"@vue/reactivity-transform@3.2.30":
+ version "3.2.30"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.30.tgz#2006e9f4645777a481b78ae77fc486159afa8480"
+ integrity sha512-Le5XzCJyK3qTjoTnvQG/Ehu8fYjayauMNFyMaEnwFlm/avDofpuibpS9u+/6AgzsGnVWN+i0Jgf25bJd9DIwMw==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.30"
+ "@vue/shared" "3.2.30"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+
+"@vue/reactivity@3.2.30":
+ version "3.2.30"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.30.tgz#fdae2bb66d075c34593ea7e15c6831300a1ad39e"
+ integrity sha512-qlNKbkRn2JiGxVUEdoXbLAy+vcuHUCcq+YH2uXWz0BNMvXY2plmz+oqsw+694llwmYLkke5lbdYF4DIupisIkg==
+ dependencies:
+ "@vue/shared" "3.2.30"
+
+"@vue/runtime-core@3.2.30":
+ version "3.2.30"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.30.tgz#1acc119ff8a49c06af6b03611bc4e03f464ca8a2"
+ integrity sha512-RTi7xH0Ht/6wfbo2WFBMJTEiyWFTqGhrksJm8lz6E+auO6lXZ6Eq3gPNfLt47GDWCm4xyrv+rs5R4UbarPEQ1Q==
+ dependencies:
+ "@vue/reactivity" "3.2.30"
+ "@vue/shared" "3.2.30"
+
+"@vue/runtime-dom@3.2.30":
+ version "3.2.30"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.30.tgz#16a85b359ea1fff9b1dd61e9d00e93f4652aba5e"
+ integrity sha512-a3+jrncDvEFQmB+v9k0VyT4/Y3XO6OAueCroXXY4yLyr6PJeyxljweV5TzvW0rvVzH9sZO0QAvG76Lo+6C92Qw==
+ dependencies:
+ "@vue/runtime-core" "3.2.30"
+ "@vue/shared" "3.2.30"
+ csstype "^2.6.8"
+
+"@vue/server-renderer@3.2.30":
+ version "3.2.30"
+ resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.30.tgz#4acccad3933475d07b94560c6cb205363975b969"
+ integrity sha512-pzb8J/w+JdZVOtuKFlirGqrs4GP60FXGDJySw3WV2pCetuFstaacDrnymEeSo3ohAD+Qjv7zAG+Y7OvkdxQxmQ==
+ dependencies:
+ "@vue/compiler-ssr" "3.2.30"
+ "@vue/shared" "3.2.30"
+
+"@vue/shared@3.2.30":
+ version "3.2.30"
+ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.30.tgz#e2ba8f6692399c27c81c668ecd3f1a4e13ee2f5e"
+ integrity sha512-B3HouBtUxcfu2w2d+VhdLcVBXKYYhXiFMAfQ+hoe8NUhKkPRkWDIqhpuehCZxVQ3S2dN1P1WfKGlxGC+pfmxGg==
+
+"@web/parse5-utils@^1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@web/parse5-utils/-/parse5-utils-1.3.0.tgz#e2e9e98b31a4ca948309f74891bda8d77399f6bd"
+ integrity sha512-Pgkx3ECc8EgXSlS5EyrgzSOoUbM6P8OKS471HLAyvOBcP1NCBn0to4RN/OaKASGq8qa3j+lPX9H14uA5AHEnQg==
+ dependencies:
+ "@types/parse5" "^6.0.1"
+ parse5 "^6.0.1"
+
+abbrev@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+
+acorn@^8.6.0:
+ version "8.7.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
+ integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
+
+agent-base@6:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
+ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+ dependencies:
+ debug "4"
+
+aggregate-error@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
+ dependencies:
+ clean-stack "^2.0.0"
+ indent-string "^4.0.0"
+
+algoliasearch@^4.0.0:
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.12.1.tgz#574a2c5424c4b6681c026928fb810be2d2ec3924"
+ integrity sha512-c0dM1g3zZBJrkzE5GA/Nu1y3fFxx3LCzxKzcmp2dgGS8P4CjszB/l3lsSh2MSrrK1Hn/KV4BlbBMXtYgG1Bfrw==
+ dependencies:
+ "@algolia/cache-browser-local-storage" "4.12.1"
+ "@algolia/cache-common" "4.12.1"
+ "@algolia/cache-in-memory" "4.12.1"
+ "@algolia/client-account" "4.12.1"
+ "@algolia/client-analytics" "4.12.1"
+ "@algolia/client-common" "4.12.1"
+ "@algolia/client-personalization" "4.12.1"
+ "@algolia/client-search" "4.12.1"
+ "@algolia/logger-common" "4.12.1"
+ "@algolia/logger-console" "4.12.1"
+ "@algolia/requester-browser-xhr" "4.12.1"
+ "@algolia/requester-common" "4.12.1"
+ "@algolia/requester-node-http" "4.12.1"
+ "@algolia/transporter" "4.12.1"
+
+ansi-regex@^0.2.0, ansi-regex@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9"
+ integrity sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+ansi-regex@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
+ integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
+
+ansi-styles@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de"
+ integrity sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+anymatch@~3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
+ integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+array-iterate@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.4.tgz#add1522e9dd9749bb41152d08b845bd08d6af8b7"
+ integrity sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==
+
+array-union@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+ integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
+
+arrify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+assert@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32"
+ integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==
+ dependencies:
+ es6-object-assign "^1.1.0"
+ is-nan "^1.2.1"
+ object-is "^1.0.1"
+ util "^0.12.0"
+
+astring@^1.7.5:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.1.tgz#a91c4afd4af3523e11f31242a3d5d9af62bb6cc6"
+ integrity sha512-Aj3mbwVzj7Vve4I/v2JYOPFkCGM2YS7OqQTNSxmUR+LECRpokuPgAYghePgr6SALDo5bD5DlfbSaYjOzGJZOLQ==
+
+astro@^0.22.20:
+ version "0.22.20"
+ resolved "https://registry.yarnpkg.com/astro/-/astro-0.22.20.tgz#d7ebe747255e5861a8de408ac544786a90226485"
+ integrity sha512-2WaISKXWi8wGzHMM20YSyMLDNI+zKvOO4y/Z8BI7HMSomtGSXkBWdryWjkvHlH9VjW3VGYjpa5pqZ2k72o+aAw==
+ dependencies:
+ "@astrojs/compiler" "^0.9.2"
+ "@astrojs/language-server" "^0.8.6"
+ "@astrojs/markdown-remark" "^0.6.0"
+ "@astrojs/prism" "0.4.0"
+ "@astrojs/renderer-preact" "^0.4.0"
+ "@astrojs/renderer-react" "0.4.1"
+ "@astrojs/renderer-svelte" "0.3.1"
+ "@astrojs/renderer-vue" "0.3.0"
+ "@astropub/webapi" "^0.10.1"
+ "@babel/core" "^7.15.8"
+ "@babel/traverse" "^7.15.4"
+ "@proload/core" "^0.2.1"
+ "@proload/plugin-tsm" "^0.1.0"
+ "@types/babel__core" "^7.1.15"
+ "@web/parse5-utils" "^1.3.0"
+ astring "^1.7.5"
+ ci-info "^3.2.0"
+ common-ancestor-path "^1.0.1"
+ connect "^3.7.0"
+ eol "^0.9.1"
+ es-module-lexer "^0.9.3"
+ esbuild "0.13.7"
+ estree-util-value-to-estree "^1.2.0"
+ estree-walker "^3.0.0"
+ fast-glob "^3.2.7"
+ fast-xml-parser "^4.0.0-beta.3"
+ html-entities "^2.3.2"
+ htmlparser2 "^7.1.2"
+ kleur "^4.1.4"
+ magic-string "^0.25.7"
+ mime "^3.0.0"
+ morphdom "^2.6.1"
+ parse5 "^6.0.1"
+ path-to-regexp "^6.2.0"
+ postcss "^8.3.8"
+ prismjs "^1.25.0"
+ rehype-slug "^5.0.0"
+ resolve "^1.20.0"
+ rollup "^2.57.0"
+ sass "^1.43.4"
+ semver "^7.3.5"
+ send "^0.17.1"
+ shiki "^0.9.10"
+ shorthash "^0.0.2"
+ slash "^4.0.0"
+ sourcemap-codec "^1.4.8"
+ srcset-parse "^1.1.0"
+ string-width "^5.0.0"
+ strip-ansi "^7.0.1"
+ supports-esm "^1.0.0"
+ tsconfig-resolver "^3.0.1"
+ vite "~2.6.10"
+ yargs-parser "^21.0.0"
+ zod "^3.8.1"
+
+async@~2.6.3:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
+ integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
+ dependencies:
+ lodash "^4.17.14"
+
+available-typed-arrays@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
+ integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
+
+axe-core@^4.0.2:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413"
+ integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==
+
+bail@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d"
+ integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+base64-js@^1.3.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+bfj@~7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2"
+ integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==
+ dependencies:
+ bluebird "^3.5.5"
+ check-types "^11.1.1"
+ hoopy "^0.1.4"
+ tryer "^1.0.1"
+
+bhttp@^1.2.1:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/bhttp/-/bhttp-1.2.8.tgz#8172ef69f16239bd77c30fa67f72c89737af24b2"
+ integrity sha512-ZwEA5FKEUhc98EHRX+BkNmUOs48RTnglvfze2+p0HrMPwhQBtVw1aAYyylnCtRl6x6vltCkzGo2+twQ6LVfm6Q==
+ dependencies:
+ bluebird "^2.8.2"
+ concat-stream "^1.4.7"
+ debug "^2.1.1"
+ dev-null "^0.1.1"
+ errors "^0.2.0"
+ extend "^2.0.0"
+ form-data2 "^1.0.0"
+ form-fix-array "^1.0.0"
+ lodash.clonedeep "^4.5.0"
+ lodash.merge "^4.6.2"
+ stream-length "^1.0.2"
+ through2-sink "^1.0.0"
+ through2-spy "^1.2.0"
+ tough-cookie "^2.3.1"
+
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+bl@^4.0.3:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
+ integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
+ dependencies:
+ buffer "^5.5.0"
+ inherits "^2.0.4"
+ readable-stream "^3.4.0"
+
+bluebird@^2.3.5, bluebird@^2.6.2, bluebird@^2.8.1, bluebird@^2.8.2:
+ version "2.11.0"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1"
+ integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=
+
+bluebird@^3.5.5:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+boolbase@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^3.0.1, braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+broken-link-checker@^0.7.8:
+ version "0.7.8"
+ resolved "https://registry.yarnpkg.com/broken-link-checker/-/broken-link-checker-0.7.8.tgz#47ea837e1b43ec2feac220207dc3f44c03b49ec0"
+ integrity sha512-/zH4/nLMNKDeDH5nVuf/R6WYd0Yjnar1NpcdAO2+VlwjGKzJa6y42C03UO+imBSHwe6BefSkVi82fImE2Rb7yg==
+ dependencies:
+ bhttp "^1.2.1"
+ calmcard "~0.1.1"
+ chalk "^1.1.3"
+ char-spinner "^1.0.1"
+ condense-whitespace "^1.0.0"
+ default-user-agent "^1.0.0"
+ errno "~0.1.4"
+ extend "^3.0.0"
+ http-equiv-refresh "^1.0.0"
+ humanize-duration "^3.9.1"
+ is-stream "^1.0.1"
+ is-string "^1.0.4"
+ limited-request-queue "^2.0.0"
+ link-types "^1.1.0"
+ maybe-callback "^2.1.0"
+ nopter "~0.3.0"
+ parse5 "^3.0.2"
+ robot-directives "~0.3.0"
+ robots-txt-guard "~0.1.0"
+ robots-txt-parse "~0.0.4"
+ urlcache "~0.7.0"
+ urlobj "0.0.11"
+
+browserslist@^4.17.5:
+ version "4.19.1"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3"
+ integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==
+ dependencies:
+ caniuse-lite "^1.0.30001286"
+ electron-to-chromium "^1.4.17"
+ escalade "^3.1.1"
+ node-releases "^2.0.1"
+ picocolors "^1.0.0"
+
+buffer-crc32@^0.2.5, buffer-crc32@~0.2.3:
+ version "0.2.13"
+ resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
+ integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
+
+buffer-from@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+
+buffer@^5.2.1, buffer@^5.5.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.1.13"
+
+call-bind@^1.0.0, call-bind@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+ dependencies:
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+
+caller-path@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
+ integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=
+ dependencies:
+ callsites "^0.2.0"
+
+callsites@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
+ integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=
+
+calmcard@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/calmcard/-/calmcard-0.1.1.tgz#35ac2b66492b0ed39ad06a893a0ff6e61124e449"
+ integrity sha1-NawrZkkrDtOa0GqJOg/25hEk5Ek=
+
+camelcase-keys@^6.2.2:
+ version "6.2.2"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0"
+ integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==
+ dependencies:
+ camelcase "^5.3.1"
+ map-obj "^4.0.0"
+ quick-lru "^4.0.1"
+
+camelcase@^1.0.2:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+ integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=
+
+camelcase@^5.0.0, camelcase@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+caniuse-lite@^1.0.30001286:
+ version "1.0.30001310"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001310.tgz#da02cd07432c9eece6992689d1b84ca18139eea8"
+ integrity sha512-cb9xTV8k9HTIUA3GnPUJCk0meUnrHL5gy5QePfDjxHyNBcnzPzrHFv5GqfP7ue5b1ZyzZL0RJboD6hQlPXjhjg==
+
+ccount@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5"
+ integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==
+
+chalk@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ 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"
+
+chalk@^2.0.0, chalk@^2.4.1:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174"
+ integrity sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=
+ dependencies:
+ ansi-styles "^1.1.0"
+ escape-string-regexp "^1.0.0"
+ has-ansi "^0.1.0"
+ strip-ansi "^0.3.0"
+ supports-color "^0.2.0"
+
+char-spinner@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/char-spinner/-/char-spinner-1.0.1.tgz#e6ea67bd247e107112983b7ab0479ed362800081"
+ integrity sha1-5upnvSR+EHESmDt6sEee02KAAIE=
+
+character-entities-html4@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b"
+ integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==
+
+character-entities-legacy@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b"
+ integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==
+
+character-entities@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.1.tgz#98724833e1e27990dee0bd0f2b8a859c3476aac7"
+ integrity sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==
+
+character-reference-invalid@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9"
+ integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==
+
+check-types@^11.1.1:
+ version "11.1.2"
+ resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f"
+ integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==
+
+cheerio-select@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823"
+ integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==
+ dependencies:
+ css-select "^4.1.3"
+ css-what "^5.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+ domutils "^2.7.0"
+
+cheerio@~1.0.0-rc.10:
+ version "1.0.0-rc.10"
+ resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e"
+ integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==
+ dependencies:
+ cheerio-select "^1.5.0"
+ dom-serializer "^1.3.2"
+ domhandler "^4.2.0"
+ htmlparser2 "^6.1.0"
+ parse5 "^6.0.1"
+ parse5-htmlparser2-tree-adapter "^6.0.1"
+ tslib "^2.2.0"
+
+"chokidar@>=3.0.0 <4.0.0":
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ 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"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+chownr@^1.1.1:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
+ integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+
+ci-info@^3.2.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2"
+ integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==
+
+clean-stack@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
+cli-table@~0.3.1:
+ version "0.3.11"
+ resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee"
+ integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==
+ dependencies:
+ colors "1.0.3"
+
+code-block-writer@^10.1.1:
+ version "10.1.1"
+ resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-10.1.1.tgz#ad5684ed4bfb2b0783c8b131281ae84ee640a42f"
+ integrity sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+colors@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
+ integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=
+
+combined-stream2@^1.0.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/combined-stream2/-/combined-stream2-1.1.2.tgz#f6e14b7a015666f8c7b0a1fac506240164ac3570"
+ integrity sha1-9uFLegFWZvjHsKH6xQYkAWSsNXA=
+ dependencies:
+ bluebird "^2.8.1"
+ debug "^2.1.1"
+ stream-length "^1.0.1"
+
+comma-separated-tokens@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz#d4c25abb679b7751c880be623c1179780fe1dd98"
+ integrity sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==
+
+commander@~6.2.1:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
+ integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
+
+commander@~8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-8.0.0.tgz#1da2139548caef59bd23e66d18908dfb54b02258"
+ integrity sha512-Xvf85aAtu6v22+E5hfVoLHqyul/jyxh91zvqk/ioJTQuJR7Z78n7H558vMPKanPSRgIEeZemT92I2g9Y8LPbSQ==
+
+common-ancestor-path@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7"
+ integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@^1.4.7:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+condense-whitespace@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/condense-whitespace/-/condense-whitespace-1.0.0.tgz#8376d98ef028e6cb2cd2468e28ce42c5c65ab1a9"
+ integrity sha1-g3bZjvAo5sss0kaOKM5CxcZasak=
+
+connect@^3.7.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8"
+ integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==
+ dependencies:
+ debug "2.6.9"
+ finalhandler "1.1.2"
+ parseurl "~1.3.3"
+ utils-merge "1.0.1"
+
+convert-source-map@^1.7.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
+ integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+core-util-is@~1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
+ integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
+
+cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+css-select@^4.1.3:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd"
+ integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^5.1.0"
+ domhandler "^4.3.0"
+ domutils "^2.8.0"
+ nth-check "^2.0.1"
+
+css-what@^5.0.1, css-what@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe"
+ integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==
+
+csstype@^2.6.8:
+ version "2.6.19"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.19.tgz#feeb5aae89020bb389e1f63669a5ed490e391caa"
+ integrity sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==
+
+debug@2.6.9, debug@^2.1.1:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2:
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
+ integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
+ dependencies:
+ ms "2.1.2"
+
+decamelize-keys@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
+ integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=
+ dependencies:
+ decamelize "^1.1.0"
+ map-obj "^1.0.0"
+
+decamelize@^1.1.0, decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+decode-named-character-reference@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz#57b2bd9112659cacbc449d3577d7dadb8e1f3d1b"
+ integrity sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==
+ dependencies:
+ character-entities "^2.0.0"
+
+deepmerge@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
+ integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
+
+default-user-agent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/default-user-agent/-/default-user-agent-1.0.0.tgz#16c46efdcaba3edc45f24f2bd4868b01b7c2adc6"
+ integrity sha1-FsRu/cq6PtxF8k8r1IaLAbfCrcY=
+ dependencies:
+ os-name "~1.0.3"
+
+define-properties@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+del-cli@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/del-cli/-/del-cli-3.0.1.tgz#2d27ff260204b5104cadeda86f78f180a4ebe89a"
+ integrity sha512-BLHItGr82rUbHhjMu41d+vw9Md49i81jmZSV00HdTq4t+RTHywmEht/23mNFpUl2YeLYJZJyGz4rdlMAyOxNeg==
+ dependencies:
+ del "^5.1.0"
+ meow "^6.1.1"
+
+del@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7"
+ integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==
+ dependencies:
+ globby "^10.0.1"
+ graceful-fs "^4.2.2"
+ is-glob "^4.0.1"
+ is-path-cwd "^2.2.0"
+ is-path-inside "^3.0.1"
+ p-map "^3.0.0"
+ rimraf "^3.0.0"
+ slash "^3.0.0"
+
+depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+ integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+
+dequal@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d"
+ integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==
+
+destroy@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+ integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+
+detect-indent@^6.0.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6"
+ integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==
+
+dev-null@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/dev-null/-/dev-null-0.1.1.tgz#5a205ce3c2b2ef77b6238d6ba179eb74c6a0e818"
+ integrity sha1-WiBc48Ky73e2I41roXnrdMag6Bg=
+
+devtools-protocol@0.0.869402:
+ version "0.0.869402"
+ resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.869402.tgz#03ade701761742e43ae4de5dc188bcd80f156d8d"
+ integrity sha512-VvlVYY+VDJe639yHs5PHISzdWTLL3Aw8rO4cvUtwvoxFd6FHbE4OpHHcde52M6096uYYazAmd4l0o5VuFRO2WA==
+
+diff@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
+ integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+dom-serializer@^1.0.1, dom-serializer@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"
+ integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.2.0"
+ entities "^2.0.0"
+
+domelementtype@^2.0.1, domelementtype@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
+ integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
+
+domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626"
+ integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==
+ dependencies:
+ domelementtype "^2.2.0"
+
+domutils@^2.5.2, domutils@^2.7.0, domutils@^2.8.0:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+ dependencies:
+ dom-serializer "^1.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+
+duplexer@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
+eastasianwidth@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
+ integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+
+electron-to-chromium@^1.4.17:
+ version "1.4.68"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.68.tgz#d79447b6bd1bec9183f166bb33d4bef0d5e4e568"
+ integrity sha512-cId+QwWrV8R1UawO6b9BR1hnkJ4EJPCPAr4h315vliHUtVUJDk39Sg1PMNnaWKfj5x+93ssjeJ9LKL6r8LaMiA==
+
+emmet@^2.1.5:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/emmet/-/emmet-2.3.5.tgz#7f80f9c3db6831d1ee2b458717b9c36a074b1a47"
+ integrity sha512-LcWfTamJnXIdMfLvJEC5Ld3hY5/KHXgv1L1bp6I7eEvB0ZhacHZ1kX0BYovJ8FroEsreLcq7n7kZhRMsf6jkXQ==
+ dependencies:
+ "@emmetio/abbreviation" "^2.2.2"
+ "@emmetio/css-abbreviation" "^2.1.4"
+
+emoji-regex@^9.2.2:
+ version "9.2.2"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+
+end-of-stream@^1.1.0, end-of-stream@^1.4.1:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+entities@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
+ integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+
+entities@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
+ integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
+
+envinfo@~7.8.1:
+ version "7.8.1"
+ resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
+ integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==
+
+eol@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd"
+ integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==
+
+eol@~0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/eol/-/eol-0.2.0.tgz#2f6db086a243a46e3e5dbd0e13435c7ebebf09dd"
+ integrity sha1-L22whqJDpG4+Xb0OE0Ncfr6/Cd0=
+
+errno@~0.1.4:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
+ integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
+ dependencies:
+ prr "~1.0.1"
+
+error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+errors@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/errors/-/errors-0.2.0.tgz#0f51e889daa3e11b19e7186d11f104aa66eb2403"
+ integrity sha1-D1Hoidqj4RsZ5xhtEfEEqmbrJAM=
+
+es-abstract@^1.18.5, es-abstract@^1.19.1:
+ version "1.19.1"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3"
+ integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==
+ dependencies:
+ call-bind "^1.0.2"
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ get-intrinsic "^1.1.1"
+ get-symbol-description "^1.0.0"
+ has "^1.0.3"
+ has-symbols "^1.0.2"
+ internal-slot "^1.0.3"
+ is-callable "^1.2.4"
+ is-negative-zero "^2.0.1"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.1"
+ is-string "^1.0.7"
+ is-weakref "^1.0.1"
+ object-inspect "^1.11.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.2"
+ string.prototype.trimend "^1.0.4"
+ string.prototype.trimstart "^1.0.4"
+ unbox-primitive "^1.0.1"
+
+es-module-lexer@^0.9.3:
+ version "0.9.3"
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19"
+ integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+es6-object-assign@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
+ integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=
+
+es6-promise@^3.1.2:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
+ integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=
+
+esbuild-android-arm64@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44"
+ integrity sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==
+
+esbuild-android-arm64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.7.tgz#528886c36968aa6ab6496392d419654dda88f092"
+ integrity sha512-yqCTKzmm3jiUXgi0yeKhvwZCZTqClUXwwMRAntcM9u/xvXhmpw0V0Z4qDEpnkmF2NCMzmJRH+DAAQ5whuf3CYA==
+
+esbuild-android-arm64@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.21.tgz#8842d0c3b7c81fbe2dc46ddb416ffd6eb822184b"
+ integrity sha512-Bqgld1TY0wZv8TqiQmVxQFgYzz8ZmyzT7clXBDZFkOOdRybzsnj8AZuK1pwcLVA7Ya6XncHgJqIao7NFd3s0RQ==
+
+esbuild-darwin-64@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz#8e9169c16baf444eacec60d09b24d11b255a8e72"
+ integrity sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==
+
+esbuild-darwin-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.7.tgz#32cf420d43ca448e7741a90d0d4c6dc5385969da"
+ integrity sha512-MvsgMUWzq5FxoeJLSavw3rgQbaC55A8QTI1U2/8MWamtAeDKyzWQnglcsF0/TkjGLaKEqS0ZLo8akJ8q34BCtw==
+
+esbuild-darwin-64@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.21.tgz#ec7df02ad88ecf7f8fc23a3ed7917e07dea0c9c9"
+ integrity sha512-j+Eg+e13djzyYINVvAbOo2/zvZ2DivuJJTaBrJnJHSD7kUNuGHRkHoSfFjbI80KHkn091w350wdmXDNSgRjfYQ==
+
+esbuild-darwin-arm64@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz#1b07f893b632114f805e188ddfca41b2b778229a"
+ integrity sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==
+
+esbuild-darwin-arm64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.7.tgz#c80f0b62c8ae4710b17090f507037aeae73e9016"
+ integrity sha512-tuP+dpIzXj17UC17VkHFDAH5nB7MajJK7sF8Fz4iVo8cml8YXj3MeNtjjLmx9YFvPs4XW3hFw1eqZJ06h2ssIA==
+
+esbuild-darwin-arm64@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.21.tgz#0c2a977edec1ef54097ee56a911518c820d4e5e4"
+ integrity sha512-nDNTKWDPI0RuoPj5BhcSB2z5EmZJJAyRtZLIjyXSqSpAyoB8eyAKXl4lB8U2P78Fnh4Lh1le/fmpewXE04JhBQ==
+
+esbuild-freebsd-64@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85"
+ integrity sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==
+
+esbuild-freebsd-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.7.tgz#0b826a9655446c0d0a01a4a996d450e5cb0e033a"
+ integrity sha512-p07TrpkCJJyAXXCXFm2IpAvyASUTcuT0OF43riEsgjuRJmtaNBOUENecr2B2k/zd9wkGz6UyxxtnFntaBttkDg==
+
+esbuild-freebsd-64@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.21.tgz#f5b5fc1d031286c3a0949d1bda7db774b7d0404e"
+ integrity sha512-zIurkCHXhxELiDZtLGiexi8t8onQc2LtuE+S7457H/pP0g0MLRKMrsn/IN4LDkNe6lvBjuoZZi2OfelOHn831g==
+
+esbuild-freebsd-arm64@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52"
+ integrity sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==
+
+esbuild-freebsd-arm64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.7.tgz#f9c980ce7e71e6702f82706a6244959eba2b80dc"
+ integrity sha512-MCtfBRkE1GwAnjVoWPYoZ+S/+zanzWxAJVER1/8jmWobCXJG0w+YM2IXQ2fN4T9U96RusFWQDMJVoACnqhIAzg==
+
+esbuild-freebsd-arm64@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.21.tgz#a05cab908013e4992b31a675850b8c44eb468c0c"
+ integrity sha512-wdxMmkJfbwcN+q85MpeUEamVZ40FNsBa9mPq8tAszDn8TRT2HoJvVRADPIIBa9SWWwlDChIMjkDKAnS3KS/sPA==
+
+esbuild-linux-32@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69"
+ integrity sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==
+
+esbuild-linux-32@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.7.tgz#3d9d704452ed13da20771537bf30f695b9f80327"
+ integrity sha512-HM4d16XbqToo93LPrgzkiLgX3Xgr9Mw67tEM8vjhHDx18JnaZqPdIsl5ZfCqRGHlLUq+GdFKl6+dH7WlsiWMCA==
+
+esbuild-linux-32@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.21.tgz#638d244cc58b951f447addb4bade628d126ef84b"
+ integrity sha512-fmxvyzOPPh2xiEHojpCeIQP6pXcoKsWbz3ryDDIKLOsk4xp3GbpHIEAWP0xTeuhEbendmvBDVKbAVv3PnODXLg==
+
+esbuild-linux-64@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3"
+ integrity sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==
+
+esbuild-linux-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.7.tgz#ce5c7b964990fdb2713ce816f0a24ffffd96942c"
+ integrity sha512-krgiIEyqcS0kfTjptGEQzdYwiEmmqpmiZHlKqZILVuU5BaIVWCBMmVx20HH9waJw1yT0Ao4fZTZ9kg8s/pKAYA==
+
+esbuild-linux-64@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.21.tgz#8eb634abee928be7e35b985fafbfef2f2e31397f"
+ integrity sha512-edZyNOv1ql+kpmlzdqzzDjRQYls+tSyi4QFi+PdBhATJFUqHsnNELWA9vMSzAaInPOEaVUTA5Ml28XFChcy4DA==
+
+esbuild-linux-arm64@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1"
+ integrity sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==
+
+esbuild-linux-arm64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.7.tgz#53a53f43669ef705c925bf275491d507cb77b06b"
+ integrity sha512-aM2BUTdbtzEUOuLqDusGCuWQRqc0JazgbA/6+Q9xhUgNLHGUMAsu4C5G0qPnJCTlWGZX+bcQYma6wFVEp9ibBg==
+
+esbuild-linux-arm64@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.21.tgz#e05599ea6253b58394157da162d856f3ead62f9e"
+ integrity sha512-t5qxRkq4zdQC0zXpzSB2bTtfLgOvR0C6BXYaRE/6/k8/4SrkZcTZBeNu+xGvwCU4b5dU9ST9pwIWkK6T1grS8g==
+
+esbuild-linux-arm@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe"
+ integrity sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==
+
+esbuild-linux-arm@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.7.tgz#3372ea117517aa3194ed1622305ab76bf2550b1d"
+ integrity sha512-GOAt1brGG14mmQx2sRD3wHi3rih94OzhmDRVyo7JvlSmWOfEczPf7zL7YfmgjuktvvuLTERtTJzaih7nyCwPOg==
+
+esbuild-linux-arm@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.21.tgz#1ae1078231cf689d3ba894a32d3723c0be9b91fd"
+ integrity sha512-aSU5pUueK6afqmLQsbU+QcFBT62L+4G9hHMJDHWfxgid6hzhSmfRH9U/f+ymvxsSTr/HFRU4y7ox8ZyhlVl98w==
+
+esbuild-linux-mips64le@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7"
+ integrity sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==
+
+esbuild-linux-mips64le@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.7.tgz#c431291deecb949a4cdbbab0bc01b6b4a962104a"
+ integrity sha512-+UJq6cxpc2ldaQFdpEDrBhqhluXsqCNlWiHccIjq25r+3YbFg0c/RJEypoVU7tjhGXUGWyWWQ7SLkzHYpf+Nsg==
+
+esbuild-linux-mips64le@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.21.tgz#f05be62d126764e99b37edcac5bb49b78c7a8890"
+ integrity sha512-jLZLQGCNlUsmIHtGqNvBs3zN+7a4D9ckf0JZ+jQTwHdZJ1SgV9mAjbB980OFo66LoY+WeM7t3WEnq3FjI1zw4A==
+
+esbuild-linux-ppc64le@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2"
+ integrity sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==
+
+esbuild-linux-ppc64le@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.7.tgz#d47b2322ac1ad61669045d5f95181d4f0d9744d2"
+ integrity sha512-6zwpliO4ZZtodDYM1JJEmSMpkd07I8bnNOKoHe7TOs9VhylXJooHh5ObSbSvk3FxCBs+jL5bxb24p10/Cg4RGw==
+
+esbuild-linux-ppc64le@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.21.tgz#592c98d82dad7982268ef8deed858c4566f07ab1"
+ integrity sha512-4TWxpK391en2UBUw6GSrukToTDu6lL9vkm3Ll40HrI08WG3qcnJu7bl8e1+GzelDsiw1QmfAY/nNvJ6iaHRpCQ==
+
+esbuild-linux-riscv64@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.21.tgz#0db7bd6f10d8f9afea973a7d6bf87b449b864b7b"
+ integrity sha512-fElngqOaOfTsF+u+oetDLHsPG74vB2ZaGZUqmGefAJn3a5z9Z2pNa4WpVbbKgHpaAAy5tWM1m1sbGohj6Ki6+Q==
+
+esbuild-linux-s390x@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.21.tgz#254a9354d34c9d1b41a3e21d2ec9269cbbb2c5df"
+ integrity sha512-brleZ6R5fYv0qQ7ZBwenQmP6i9TdvJCB092c/3D3pTLQHBGHJb5zWgKxOeS7bdHzmLy6a6W7GbFk6QKpjyD6QA==
+
+esbuild-netbsd-64@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038"
+ integrity sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==
+
+esbuild-netbsd-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.7.tgz#9c9fed5dfc2f3656de024496f10928368a29ea10"
+ integrity sha512-CfTHeTfJWlwjgfpApXYvECytLD6BzTWovLE0+28KT7bjU5fM4ieDYzRvjWjFAOB2X6DWpaoQnJAlhJirQBW0EQ==
+
+esbuild-netbsd-64@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.21.tgz#4cb783d060b02bf3b897a9a12cce2b3b547726f8"
+ integrity sha512-nCEgsLCQ8RoFWVV8pVI+kX66ICwbPP/M9vEa0NJGIEB/Vs5sVGMqkf67oln90XNSkbc0bPBDuo4G6FxlF7PN8g==
+
+esbuild-openbsd-64@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7"
+ integrity sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==
+
+esbuild-openbsd-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.7.tgz#fc039ce363b0ad5617a82dc9d312fccebd950070"
+ integrity sha512-qfW+f0MQfl72zVwgbV00I1kAP2zty+N031cNnQINcBmzHOSbEbaBQbUM0kawq+wdfgS/Xmppgf7nD1H8GWAvow==
+
+esbuild-openbsd-64@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.21.tgz#f886b93feefddbe573528fa4b421c9c6e2bc969b"
+ integrity sha512-h9zLMyVD0T73MDTVYIb/qUTokwI6EJH9O6wESuTNq6+XpMSr6C5aYZ4fvFKdNELW+Xsod+yDS2hV2JTUAbFrLA==
+
+esbuild-sunos-64@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4"
+ integrity sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==
+
+esbuild-sunos-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.7.tgz#ad85a2f2cd38b6e920f2ad07ebc134cdba92e26d"
+ integrity sha512-fVRM9mV0wAYLt92IqzudxACMLJZRQFx1oJsNeU4fPFmUxIkYE4C7G7z9vqI2eu9bpDo1fA+3+5djo/T/28Mckg==
+
+esbuild-sunos-64@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.21.tgz#3829e4d57d4cb6950837fe90b0b67cdfb37cf13a"
+ integrity sha512-Kl+7Cot32qd9oqpLdB1tEGXEkjBlijrIxMJ0+vlDFaqsODutif25on0IZlFxEBtL2Gosd4p5WCV1U7UskNQfXA==
+
+esbuild-windows-32@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7"
+ integrity sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==
+
+esbuild-windows-32@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.7.tgz#146b416c5172a2c252ce29f899c0c8f1a20eac50"
+ integrity sha512-v3csjeQtlHHWS1q/tE9rTRCSSU/fGvJVh1l7gkS93ysAaIMeC0j9Q0h2PxFpQ6yxuwftuDYfQdnkVGcqjkKM8A==
+
+esbuild-windows-32@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.21.tgz#b858a22d1a82e53cdc59310cd56294133f7a95e7"
+ integrity sha512-V7vnTq67xPBUCk/9UtlolmQ798Ecjdr1ZoI1vcSgw7M82aSSt0eZdP6bh5KAFZU8pxDcx3qoHyWQfHYr11f22A==
+
+esbuild-windows-64@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294"
+ integrity sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==
+
+esbuild-windows-64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.7.tgz#9eaffae2204263a7b35313ea51a6a6e5a5e0bb48"
+ integrity sha512-vk+yv/vYpHZP0vxSaxaA4EMaicuxy4E435EXkbsgk5UgpcQgSP0CVlIeaqtgfSM3IwGnpbagOirRVqqZqxyMDQ==
+
+esbuild-windows-64@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.21.tgz#7bb5a027d5720cf9caf18a4bedd11327208f1f12"
+ integrity sha512-kDgHjKOHwjfJDCyRGELzVxiP/RBJBTA+wyspf78MTTJQkyPuxH2vChReNdWc+dU2S4gIZFHMdP1Qrl/k22ZmaA==
+
+esbuild-windows-arm64@0.13.15:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3"
+ integrity sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==
+
+esbuild-windows-arm64@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.7.tgz#6937647f05528248b1634027d839ae81ffdde8c2"
+ integrity sha512-0Fp+IeG5qWLCK+U6d8L9/SnXkI6f3JMtauSQ8HHzw3Fl0pZ+VImUAUWZ3g2fhthNqp+t8dB3n238CJD6XBn15w==
+
+esbuild-windows-arm64@0.14.21:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.21.tgz#25df54521ad602c826b262ea2e7cc1fe80f5c2f5"
+ integrity sha512-8Sbo0zpzgwWrwjQYLmHF78f7E2xg5Ve63bjB2ng3V2aManilnnTGaliq2snYg+NOX60+hEvJHRdVnuIAHW0lVw==
+
+esbuild@0.13.7:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.7.tgz#ee6e04da3c0ca34f35a05dea649caa48686c92fb"
+ integrity sha512-Ok3w+Pc9SNdNVEEJUUx9OvNZHwFyoKS0N+ceytfUB3wh/HxhRkOEc9dO8KR9AjfpFI82/Wg258GRDs1/8SFgKQ==
+ optionalDependencies:
+ esbuild-android-arm64 "0.13.7"
+ esbuild-darwin-64 "0.13.7"
+ esbuild-darwin-arm64 "0.13.7"
+ esbuild-freebsd-64 "0.13.7"
+ esbuild-freebsd-arm64 "0.13.7"
+ esbuild-linux-32 "0.13.7"
+ esbuild-linux-64 "0.13.7"
+ esbuild-linux-arm "0.13.7"
+ esbuild-linux-arm64 "0.13.7"
+ esbuild-linux-mips64le "0.13.7"
+ esbuild-linux-ppc64le "0.13.7"
+ esbuild-netbsd-64 "0.13.7"
+ esbuild-openbsd-64 "0.13.7"
+ esbuild-sunos-64 "0.13.7"
+ esbuild-windows-32 "0.13.7"
+ esbuild-windows-64 "0.13.7"
+ esbuild-windows-arm64 "0.13.7"
+
+esbuild@^0.13.2:
+ version "0.13.15"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.15.tgz#db56a88166ee373f87dbb2d8798ff449e0450cdf"
+ integrity sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==
+ optionalDependencies:
+ esbuild-android-arm64 "0.13.15"
+ esbuild-darwin-64 "0.13.15"
+ esbuild-darwin-arm64 "0.13.15"
+ esbuild-freebsd-64 "0.13.15"
+ esbuild-freebsd-arm64 "0.13.15"
+ esbuild-linux-32 "0.13.15"
+ esbuild-linux-64 "0.13.15"
+ esbuild-linux-arm "0.13.15"
+ esbuild-linux-arm64 "0.13.15"
+ esbuild-linux-mips64le "0.13.15"
+ esbuild-linux-ppc64le "0.13.15"
+ esbuild-netbsd-64 "0.13.15"
+ esbuild-openbsd-64 "0.13.15"
+ esbuild-sunos-64 "0.13.15"
+ esbuild-windows-32 "0.13.15"
+ esbuild-windows-64 "0.13.15"
+ esbuild-windows-arm64 "0.13.15"
+
+esbuild@^0.14.0:
+ version "0.14.21"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.21.tgz#b3e05f900f1c4394f596d60d63d9816468f0f671"
+ integrity sha512-7WEoNMBJdLN993dr9h0CpFHPRc3yFZD+EAVY9lg6syJJ12gc5fHq8d75QRExuhnMkT2DaRiIKFThRvDWP+fO+A==
+ optionalDependencies:
+ esbuild-android-arm64 "0.14.21"
+ esbuild-darwin-64 "0.14.21"
+ esbuild-darwin-arm64 "0.14.21"
+ esbuild-freebsd-64 "0.14.21"
+ esbuild-freebsd-arm64 "0.14.21"
+ esbuild-linux-32 "0.14.21"
+ esbuild-linux-64 "0.14.21"
+ esbuild-linux-arm "0.14.21"
+ esbuild-linux-arm64 "0.14.21"
+ esbuild-linux-mips64le "0.14.21"
+ esbuild-linux-ppc64le "0.14.21"
+ esbuild-linux-riscv64 "0.14.21"
+ esbuild-linux-s390x "0.14.21"
+ esbuild-netbsd-64 "0.14.21"
+ esbuild-openbsd-64 "0.14.21"
+ esbuild-sunos-64 "0.14.21"
+ esbuild-windows-32 "0.14.21"
+ esbuild-windows-64 "0.14.21"
+ esbuild-windows-arm64 "0.14.21"
+
+escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+
+escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+escape-string-regexp@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
+ integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
+
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+estree-util-is-identifier-name@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.0.tgz#e2d3d2ae3032c017b2112832bfc5d8ba938c8010"
+ integrity sha512-aXXZFVMnBBDRP81vS4YtAYJ0hUkgEsXea7lNKWCOeaAquGb1Jm2rcONPB5fpzwgbNxulTvrWuKnp9UElUGAKeQ==
+
+estree-util-value-to-estree@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz#1d3125594b4d6680f666644491e7ac1745a3df49"
+ integrity sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==
+ dependencies:
+ is-plain-obj "^3.0.0"
+
+estree-util-visit@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-1.1.0.tgz#c0ea7942c40ac7889a77b57a11e92f987744bc6f"
+ integrity sha512-3lXJ4Us9j8TUif9cWcQy81t9p5OLasnDuuhrFiqb+XstmKC1d1LmrQWYsY49/9URcfHE64mPypDBaNK9NwWDPQ==
+ dependencies:
+ "@types/estree-jsx" "^0.0.1"
+ "@types/unist" "^2.0.0"
+
+estree-walker@^2.0.1, estree-walker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+estree-walker@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.1.tgz#c2a9fb4a30232f5039b7c030b37ead691932debd"
+ integrity sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-2.0.2.tgz#1b74985400171b85554894459c978de6ef453ab7"
+ integrity sha512-AgFD4VU+lVLP6vjnlNfF7OeInLTyeyckCNPEsuxz1vi786UuK/nk6ynPuhn/h+Ju9++TQyr5EpLRI14fc1QtTQ==
+
+extend@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+extract-zip@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
+ integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
+ dependencies:
+ debug "^4.1.1"
+ get-stream "^5.1.0"
+ yauzl "^2.10.0"
+ optionalDependencies:
+ "@types/yauzl" "^2.9.1"
+
+fast-glob@^3.0.3, fast-glob@^3.2.7:
+ version "3.2.11"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
+ integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
+ 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"
+
+fast-xml-parser@^4.0.0-beta.3:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.0.2.tgz#23f5da4393d9f4142e26792c1e675ddbafe7029a"
+ integrity sha512-3GOSbMTZxxrPPQ+aURM7Wia10bi71HBbiG/3mOEEkRSAkRtg4m7UhMSnB2rzOhBeRHyJUWsllOfyNnjTT1b85w==
+ dependencies:
+ strnum "^1.0.5"
+
+fastq@^1.6.0:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
+ integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
+ dependencies:
+ reusify "^1.0.4"
+
+fd-slicer@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
+ integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
+ dependencies:
+ pend "~1.2.0"
+
+file-url@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/file-url/-/file-url-3.0.0.tgz#247a586a746ce9f7a8ed05560290968afc262a77"
+ integrity sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+finalhandler@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+ integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "~2.3.0"
+ parseurl "~1.3.3"
+ statuses "~1.5.0"
+ unpipe "~1.0.0"
+
+find-up@^4.0.0, find-up@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+foreach@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
+ integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
+
+form-data2@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/form-data2/-/form-data2-1.0.4.tgz#9f91ebd83003f9e117f94f1ebd72665ae0b49a40"
+ integrity sha512-buz4C3F6/7Vpdxt7dNU/tSfjQO/5z9Pyjfb43VhlVvSos5zVhCcMuW9sF1yJ2FdxZRCD2sWQ9WhqUiYLt+AUVQ==
+ dependencies:
+ bluebird "^2.8.2"
+ combined-stream2 "^1.0.2"
+ debug "^2.1.1"
+ mime "^1.3.4"
+ uuid "^2.0.1"
+
+form-fix-array@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/form-fix-array/-/form-fix-array-1.0.0.tgz#a1347a47e53117ab7bcdbf3e2f3ec91c66769bc8"
+ integrity sha1-oTR6R+UxF6t7zb8+Lz7JHGZ2m8g=
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+
+fs-constants@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
+ integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@~2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
+ integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+
+get-stream@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
+get-symbol-description@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
+ integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.1.1"
+
+github-slugger@^1.1.1, github-slugger@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e"
+ integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==
+
+glob-parent@^5.1.2, glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob@^7.0.3, glob@^7.1.3:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
+ integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globby@^10.0.1:
+ version "10.0.2"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543"
+ integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.0.3"
+ glob "^7.1.3"
+ ignore "^5.1.1"
+ merge2 "^1.2.3"
+ slash "^3.0.0"
+
+globby@~6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
+ integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
+ dependencies:
+ array-union "^1.0.1"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.2.2:
+ version "4.2.9"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
+ integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
+
+gray-matter@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798"
+ integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==
+ dependencies:
+ js-yaml "^3.13.1"
+ kind-of "^6.0.2"
+ section-matter "^1.0.0"
+ strip-bom-string "^1.0.0"
+
+hard-rejection@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883"
+ integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==
+
+has-ansi@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e"
+ integrity sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=
+ dependencies:
+ ansi-regex "^0.2.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-bigints@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
+ integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-package-exports@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/has-package-exports/-/has-package-exports-1.2.3.tgz#4cd984c761140156e27aea7cae9473a3dd0cc4d9"
+ integrity sha512-lkLLwrNNaRsmwj+TylZJh1o3YlzLfgrl9fZKOAMj4MHjbvt7wy1J0icE6jD36dzkA0aQGoNuqY0hVN2uuPfPBA==
+ dependencies:
+ "@ljharb/has-package-exports-patterns" "0.0.1"
+
+has-symbols@^1.0.1, has-symbols@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
+ integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
+
+has-tostringtag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
+ integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
+ dependencies:
+ has-symbols "^1.0.2"
+
+has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hast-to-hyperscript@^10.0.0:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-10.0.1.tgz#3decd7cb4654bca8883f6fcbd4fb3695628c4296"
+ integrity sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+ style-to-object "^0.3.0"
+ unist-util-is "^5.0.0"
+ web-namespaces "^2.0.0"
+
+hast-util-from-parse5@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz#c129dd3a24dd8a867ab8a029ca47e27aa54864b7"
+ integrity sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/parse5" "^6.0.0"
+ "@types/unist" "^2.0.0"
+ hastscript "^7.0.0"
+ property-information "^6.0.0"
+ vfile "^5.0.0"
+ vfile-location "^4.0.0"
+ web-namespaces "^2.0.0"
+
+hast-util-has-property@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/hast-util-has-property/-/hast-util-has-property-2.0.0.tgz#c15cd6180f3e535540739fcc9787bcffb5708cae"
+ integrity sha512-4Qf++8o5v14us4Muv3HRj+Er6wTNGA/N9uCaZMty4JWvyFKLdhULrv4KE1b65AthsSO9TXSZnjuxS8ecIyhb0w==
+
+hast-util-heading-rank@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/hast-util-heading-rank/-/hast-util-heading-rank-2.1.0.tgz#c39f34fa8330ebfec03a08b5d5019ed56122029c"
+ integrity sha512-w+Rw20Q/iWp2Bcnr6uTrYU6/ftZLbHKhvc8nM26VIWpDqDMlku2iXUVTeOlsdoih/UKQhY7PHQ+vZ0Aqq8bxtQ==
+ dependencies:
+ "@types/hast" "^2.0.0"
+
+hast-util-is-element@^2.0.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz#fc0b0dc7cef3895e839b8d66979d57b0338c68f3"
+ integrity sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/unist" "^2.0.0"
+
+hast-util-parse-selector@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz#a519e27e8b61bd5a98fad494ed06131ce68d9c3f"
+ integrity sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==
+ dependencies:
+ "@types/hast" "^2.0.0"
+
+hast-util-raw@^7.2.0:
+ version "7.2.1"
+ resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-7.2.1.tgz#6e964cee098dbdd93d1b77cf180b5827d48048ab"
+ integrity sha512-wgtppqXVdXzkDXDFclLLdAyVUJSKMYYi6LWIAbA8oFqEdwksYIcPGM3RkKV1Dfn5GElvxhaOCs0jmCOMayxd3A==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/parse5" "^6.0.0"
+ hast-util-from-parse5 "^7.0.0"
+ hast-util-to-parse5 "^7.0.0"
+ html-void-elements "^2.0.0"
+ parse5 "^6.0.0"
+ unist-util-position "^4.0.0"
+ unist-util-visit "^4.0.0"
+ vfile "^5.0.0"
+ web-namespaces "^2.0.0"
+ zwitch "^2.0.0"
+
+hast-util-to-html@^8.0.0:
+ version "8.0.3"
+ resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz#4e37580872e143ea9ce0dba87918b19e4ea997e3"
+ integrity sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ ccount "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ hast-util-is-element "^2.0.0"
+ hast-util-whitespace "^2.0.0"
+ html-void-elements "^2.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+ stringify-entities "^4.0.2"
+ unist-util-is "^5.0.0"
+
+hast-util-to-parse5@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-7.0.0.tgz#a39808e69005d10afeed1866029a1fb137df3f7c"
+ integrity sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/parse5" "^6.0.0"
+ hast-to-hyperscript "^10.0.0"
+ property-information "^6.0.0"
+ web-namespaces "^2.0.0"
+ zwitch "^2.0.0"
+
+hast-util-to-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-2.0.0.tgz#b008b0a4ea472bf34dd390b7eea1018726ae152a"
+ integrity sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==
+ dependencies:
+ "@types/hast" "^2.0.0"
+
+hast-util-whitespace@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c"
+ integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==
+
+hastscript@^7.0.0:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-7.0.2.tgz#d811fc040817d91923448a28156463b2e40d590a"
+ integrity sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ hast-util-parse-selector "^3.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+
+hogan.js@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/hogan.js/-/hogan.js-3.0.2.tgz#4cd9e1abd4294146e7679e41d7898732b02c7bfd"
+ integrity sha1-TNnhq9QpQUbnZ55B14mHMrAse/0=
+ dependencies:
+ mkdirp "0.3.0"
+ nopt "1.0.10"
+
+hoopy@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
+ integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==
+
+hosted-git-info@^2.1.4:
+ version "2.8.9"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
+ integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
+
+html-entities@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488"
+ integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==
+
+html-void-elements@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f"
+ integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==
+
+html_codesniffer@^2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/html_codesniffer/-/html_codesniffer-2.5.1.tgz#d76d124b8f5cd0e58b3c1b142fd095a40573ea28"
+ integrity sha512-vcz0yAaX/OaV6sdNHuT9alBOKkSxYb8h5Yq26dUqgi7XmCgGUSa7U9PiY1PBXQFMjKv1wVPs5/QzHlGuxPDUGg==
+
+htmlparser2@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
+ integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.0.0"
+ domutils "^2.5.2"
+ entities "^2.0.0"
+
+htmlparser2@^7.1.2:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5"
+ integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.2.2"
+ domutils "^2.8.0"
+ entities "^3.0.1"
+
+http-equiv-refresh@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/http-equiv-refresh/-/http-equiv-refresh-1.0.0.tgz#8ec538866042be5f3f7afa737d198d94beb1b07b"
+ integrity sha1-jsU4hmBCvl8/evpzfRmNlL6xsHs=
+
+http-errors@1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c"
+ integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.1"
+
+https-proxy-agent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
+ integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
+ dependencies:
+ agent-base "6"
+ debug "4"
+
+humanize-duration@^3.9.1:
+ version "3.27.1"
+ resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.27.1.tgz#2cd4ea4b03bd92184aee6d90d77a8f3d7628df69"
+ integrity sha512-jCVkMl+EaM80rrMrAPl96SGG4NRac53UyI1o/yAzebDntEY6K6/Fj2HOjdPg8omTqIe5Y0wPBai2q5xXrIbarA==
+
+ieee754@^1.1.13:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
+ignore@^5.1.1:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
+ integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
+
+immutable@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23"
+ integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==
+
+indent-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inline-style-parser@0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
+ integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
+
+internal-slot@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
+ integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
+ dependencies:
+ get-intrinsic "^1.1.0"
+ has "^1.0.3"
+ side-channel "^1.0.4"
+
+is-alphabetical@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b"
+ integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==
+
+is-alphanumerical@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875"
+ integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==
+ dependencies:
+ is-alphabetical "^2.0.0"
+ is-decimal "^2.0.0"
+
+is-arguments@^1.0.4:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-bigint@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
+ integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
+ dependencies:
+ has-bigints "^1.0.1"
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-boolean-object@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
+ integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-browser@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-browser/-/is-browser-2.1.0.tgz#fc084d59a5fced307d6708c59356bad7007371a9"
+ integrity sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ==
+
+is-buffer@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
+ integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
+
+is-callable@^1.1.4, is-callable@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
+ integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
+
+is-core-module@^2.8.1:
+ version "2.8.1"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
+ integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
+ dependencies:
+ has "^1.0.3"
+
+is-date-object@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
+ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-decimal@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7"
+ integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==
+
+is-extendable@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-generator-function@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
+ integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-hexadecimal@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027"
+ integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==
+
+is-nan@^1.2.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d"
+ integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+
+is-negative-zero@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
+ integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
+
+is-number-object@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0"
+ integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-object@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf"
+ integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==
+
+is-path-cwd@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
+ integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
+
+is-path-inside@^3.0.1:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
+is-plain-obj@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+ integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
+
+is-plain-obj@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7"
+ integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==
+
+is-plain-obj@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.0.0.tgz#06c0999fd7574edf5a906ba5644ad0feb3a84d22"
+ integrity sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==
+
+is-regex@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
+ integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-shared-array-buffer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6"
+ integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==
+
+is-stream@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-string@^1.0.4, is-string@^1.0.5, is-string@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
+ integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-symbol@^1.0.2, is-symbol@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
+ integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
+ dependencies:
+ has-symbols "^1.0.2"
+
+is-typed-array@^1.1.3, is-typed-array@^1.1.7:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79"
+ integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==
+ dependencies:
+ available-typed-arrays "^1.0.5"
+ call-bind "^1.0.2"
+ es-abstract "^1.18.5"
+ foreach "^2.0.5"
+ has-tostringtag "^1.0.0"
+
+is-weakref@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
+ integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
+ dependencies:
+ call-bind "^1.0.2"
+
+is@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/is/-/is-3.3.0.tgz#61cff6dd3c4193db94a3d62582072b44e5645d79"
+ integrity sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==
+
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+
+isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isbot@^2.0.0:
+ version "2.5.7"
+ resolved "https://registry.yarnpkg.com/isbot/-/isbot-2.5.7.tgz#bc98f22200d1a925bc933c7e4fb6eca8dde70f7b"
+ integrity sha512-8P+oGrRDvuCpDdovK9oD4skHmSXu56bsK17K2ovXrkW7Ic4H9Y4AqnUUqlXqZxcqQ2358kid9Rb+fbLH5yeeUw==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.13.1:
+ version "3.14.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+json-parse-better-errors@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json5@^2.1.2, json5@^2.1.3:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
+ dependencies:
+ minimist "^1.2.5"
+
+jsonc-parser@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.1.tgz#59549150b133f2efacca48fe9ce1ec0659af2342"
+ integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==
+
+jsonc-parser@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22"
+ integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==
+
+kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+kleur@^4.0.3, kleur@^4.1.4, kleur@~4.1.4:
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d"
+ integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==
+
+limited-request-queue@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/limited-request-queue/-/limited-request-queue-2.0.0.tgz#14c7c120b138060b19a2a1030abaf6693572650d"
+ integrity sha1-FMfBILE4BgsZoqEDCrr2aTVyZQ0=
+ dependencies:
+ is-browser "^2.0.1"
+ parse-domain "~0.2.0"
+
+lines-and-columns@^1.1.6:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
+link-types@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/link-types/-/link-types-1.1.0.tgz#af65e59db52e70c1ffb18ac4c3cb056bfe796830"
+ integrity sha1-r2XlnbUucMH/sYrEw8sFa/55aDA=
+
+load-json-file@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
+ integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^4.0.0"
+ pify "^3.0.0"
+ strip-bom "^3.0.0"
+
+locate-character@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/locate-character/-/locate-character-2.0.5.tgz#f2d2614d49820ecb3c92d80d193b8db755f74c0f"
+ integrity sha512-n2GmejDXtOPBAZdIiEFy5dJ5N38xBCXLNOtw2WpB9kGh6pnrEuKlwYI+Tkpofc4wDtVXHtoAOJaMRlYG/oYaxg==
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
+lodash.clonedeep@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
+
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+lodash@^4.17.14, lodash@^4.17.21, lodash@~4.17.21:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+longest-streak@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d"
+ integrity sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==
+
+loose-envify@^1.1.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+lru-cache@4.1.x:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+magic-string@^0.25.3, magic-string@^0.25.7:
+ version "0.25.7"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
+ integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
+ dependencies:
+ sourcemap-codec "^1.4.4"
+
+map-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+map-obj@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a"
+ integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==
+
+markdown-table@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.2.tgz#9b59eb2c1b22fe71954a65ff512887065a7bb57c"
+ integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==
+
+maybe-callback@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/maybe-callback/-/maybe-callback-2.1.0.tgz#8afa0ba7b691a7ab123e7f12f65e32bb5d1f8243"
+ integrity sha1-ivoLp7aRp6sSPn8S9l4yu10fgkM=
+
+mdast-util-definitions@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz#b6d10ef00a3c4cf191e8d9a5fa58d7f4a366f817"
+ integrity sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ unist-util-visit "^3.0.0"
+
+mdast-util-find-and-replace@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.1.0.tgz#69728acd250749f8aac6e150e07d1fd15619e829"
+ integrity sha512-1w1jbqAd13oU78QPBf5223+xB+37ecNtQ1JElq2feWols5oEYAl+SgNDnOZipe7NfLemoEt362yUS15/wip4mw==
+ dependencies:
+ escape-string-regexp "^5.0.0"
+ unist-util-is "^5.0.0"
+ unist-util-visit-parents "^4.0.0"
+
+mdast-util-from-markdown@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268"
+ integrity sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ decode-named-character-reference "^1.0.0"
+ mdast-util-to-string "^3.1.0"
+ micromark "^3.0.0"
+ micromark-util-decode-numeric-character-reference "^1.0.0"
+ micromark-util-decode-string "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ unist-util-stringify-position "^3.0.0"
+ uvu "^0.5.0"
+
+mdast-util-gfm-autolink-literal@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz#4032dcbaddaef7d4f2f3768ed830475bb22d3970"
+ integrity sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ ccount "^2.0.0"
+ mdast-util-find-and-replace "^2.0.0"
+ micromark-util-character "^1.0.0"
+
+mdast-util-gfm-footnote@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz#11d2d40a1a673a399c459e467fa85e00223191fe"
+ integrity sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.3.0"
+ micromark-util-normalize-identifier "^1.0.0"
+
+mdast-util-gfm-strikethrough@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz#a4a74c36864ec6a6e3bbd31e1977f29beb475789"
+ integrity sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.3.0"
+
+mdast-util-gfm-table@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.3.tgz#5f880aa6ecd1a9307cd7127f3d94c631ea88da07"
+ integrity sha512-B/tgpJjND1qIZM2WZst+NYnb0notPE6m0J+YOe3NOHXyEmvK38ytxaOsgz4BvrRPQQcNbRrTzSHMPnBkj1fCjg==
+ dependencies:
+ markdown-table "^3.0.0"
+ mdast-util-to-markdown "^1.3.0"
+
+mdast-util-gfm-task-list-item@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz#6f35f09c6e2bcbe88af62fdea02ac199cc802c5c"
+ integrity sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.3.0"
+
+mdast-util-gfm@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-2.0.0.tgz#2545856bc18a66d5cc63fbef0b097a020a8e9e3d"
+ integrity sha512-wMwejlTN3EQADPFuvxe8lmGsay3+f6gSJKdAHR6KBJzpcxvsjJSILB9K6u6G7eQLC7iOTyVIHYGui9uBc9r1Tg==
+ dependencies:
+ mdast-util-gfm-autolink-literal "^1.0.0"
+ mdast-util-gfm-footnote "^1.0.0"
+ mdast-util-gfm-strikethrough "^1.0.0"
+ mdast-util-gfm-table "^1.0.0"
+ mdast-util-gfm-task-list-item "^1.0.0"
+
+mdast-util-mdx-expression@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.2.0.tgz#3e927afe27943956dc5d1c64cb949652062f71ff"
+ integrity sha512-wb36oi09XxqO9RVqgfD+xo8a7xaNgS+01+k3v0GKW0X0bYbeBmUZz22Z/IJ8SuphVlG+DNgNo9VoEaUJ3PKfJQ==
+ dependencies:
+ "@types/estree-jsx" "^0.0.1"
+ "@types/hast" "^2.0.0"
+ "@types/mdast" "^3.0.0"
+ mdast-util-from-markdown "^1.0.0"
+ mdast-util-to-markdown "^1.0.0"
+
+mdast-util-mdx-jsx@^1.1.3:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-1.2.0.tgz#c0f5140e021fd134fa90272eb8bbddb39f8db399"
+ integrity sha512-5+ot/kfxYd3ChgEMwsMUO71oAfYjyRI3pADEK4I7xTmWLGQ8Y7ghm1CG36zUoUvDPxMlIYwQV/9DYHAUWdG4dA==
+ dependencies:
+ "@types/estree-jsx" "^0.0.1"
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.0.0"
+ parse-entities "^4.0.0"
+ stringify-entities "^4.0.0"
+ unist-util-remove-position "^4.0.0"
+ unist-util-stringify-position "^3.0.0"
+ vfile-message "^3.0.0"
+
+mdast-util-to-hast@^12.1.0:
+ version "12.1.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.1.1.tgz#89a2bb405eaf3b05eb8bf45157678f35eef5dbca"
+ integrity sha512-qE09zD6ylVP14jV4mjLIhDBOrpFdShHZcEsYvvKGABlr9mGbV7mTlRWdoFxL/EYSTNDiC9GZXy7y8Shgb9Dtzw==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/mdast" "^3.0.0"
+ "@types/mdurl" "^1.0.0"
+ mdast-util-definitions "^5.0.0"
+ mdurl "^1.0.0"
+ micromark-util-sanitize-uri "^1.0.0"
+ unist-builder "^3.0.0"
+ unist-util-generated "^2.0.0"
+ unist-util-position "^4.0.0"
+ unist-util-visit "^4.0.0"
+
+mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz#38b6cdc8dc417de642a469c4fc2abdf8c931bd1e"
+ integrity sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ longest-streak "^3.0.0"
+ mdast-util-to-string "^3.0.0"
+ micromark-util-decode-string "^1.0.0"
+ unist-util-visit "^4.0.0"
+ zwitch "^2.0.0"
+
+mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9"
+ integrity sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==
+
+mdurl@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
+ integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
+
+memorystream@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
+ integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
+
+meow@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467"
+ integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==
+ dependencies:
+ "@types/minimist" "^1.2.0"
+ camelcase-keys "^6.2.2"
+ decamelize-keys "^1.1.0"
+ hard-rejection "^2.1.0"
+ minimist-options "^4.0.2"
+ normalize-package-data "^2.5.0"
+ read-pkg-up "^7.0.1"
+ redent "^3.0.0"
+ trim-newlines "^3.0.0"
+ type-fest "^0.13.1"
+ yargs-parser "^18.1.3"
+
+merge2@^1.2.3, merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad"
+ integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==
+ dependencies:
+ decode-named-character-reference "^1.0.0"
+ micromark-factory-destination "^1.0.0"
+ micromark-factory-label "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-factory-title "^1.0.0"
+ micromark-factory-whitespace "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-chunked "^1.0.0"
+ micromark-util-classify-character "^1.0.0"
+ micromark-util-html-tag-name "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-resolve-all "^1.0.0"
+ micromark-util-subtokenize "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.1"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-autolink-literal@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz#dc589f9c37eaff31a175bab49f12290edcf96058"
+ integrity sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-sanitize-uri "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-footnote@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.3.tgz#5280b29667e4ecb8687f369829aa3322caca7d11"
+ integrity sha512-bn62pC5y39rIo2g1RqZk1NhF7T7cJLuJlbevunQz41U0iPVCdVOFASe5/L1kke+DFKSgfCRhv24+o42cZ1+ADw==
+ dependencies:
+ micromark-core-commonmark "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-sanitize-uri "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-strikethrough@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz#162232c284ffbedd8c74e59c1525bda217295e18"
+ integrity sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==
+ dependencies:
+ micromark-util-chunked "^1.0.0"
+ micromark-util-classify-character "^1.0.0"
+ micromark-util-resolve-all "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-table@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4"
+ integrity sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-tagfilter@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz#fb2e303f7daf616db428bb6a26e18fda14a90a4d"
+ integrity sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==
+ dependencies:
+ micromark-util-types "^1.0.0"
+
+micromark-extension-gfm-task-list-item@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz#7683641df5d4a09795f353574d7f7f66e47b7fc4"
+ integrity sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz#40f3209216127a96297c54c67f5edc7ef2d1a2a2"
+ integrity sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==
+ dependencies:
+ micromark-extension-gfm-autolink-literal "^1.0.0"
+ micromark-extension-gfm-footnote "^1.0.0"
+ micromark-extension-gfm-strikethrough "^1.0.0"
+ micromark-extension-gfm-table "^1.0.0"
+ micromark-extension-gfm-tagfilter "^1.0.0"
+ micromark-extension-gfm-task-list-item "^1.0.0"
+ micromark-util-combine-extensions "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-extension-mdx-expression@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.3.tgz#cd3843573921bf55afcfff4ae0cd2e857a16dcfa"
+ integrity sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==
+ dependencies:
+ micromark-factory-mdx-expression "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-events-to-acorn "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-mdx-jsx@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz#9f196be5f65eb09d2a49b237a7b3398bba2999be"
+ integrity sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==
+ dependencies:
+ "@types/acorn" "^4.0.0"
+ estree-util-is-identifier-name "^2.0.0"
+ micromark-factory-mdx-expression "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+ vfile-message "^3.0.0"
+
+micromark-factory-destination@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e"
+ integrity sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-factory-label@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137"
+ integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-factory-mdx-expression@^1.0.0:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.6.tgz#917e17d16e6e9c2551f3a862e6a9ebdd22056476"
+ integrity sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-events-to-acorn "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ unist-util-position-from-estree "^1.0.0"
+ uvu "^0.5.0"
+ vfile-message "^3.0.0"
+
+micromark-factory-space@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633"
+ integrity sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-factory-title@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f"
+ integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-factory-whitespace@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c"
+ integrity sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-character@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86"
+ integrity sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-chunked@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06"
+ integrity sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-classify-character@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20"
+ integrity sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-combine-extensions@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5"
+ integrity sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==
+ dependencies:
+ micromark-util-chunked "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-decode-numeric-character-reference@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946"
+ integrity sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-decode-string@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02"
+ integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==
+ dependencies:
+ decode-named-character-reference "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-decode-numeric-character-reference "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-encode@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383"
+ integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==
+
+micromark-util-events-to-acorn@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.0.4.tgz#07d26cd675dbca8c38b8d9aff2d4cdc91c9997aa"
+ integrity sha512-dpo8ecREK5s/KMph7jJ46RLM6g7N21CMc9LAJQbDLdbQnTpijigkSJPTIfLXZ+h5wdXlcsQ+b6ufAE9v76AdgA==
+ dependencies:
+ "@types/acorn" "^4.0.0"
+ "@types/estree" "^0.0.50"
+ estree-util-visit "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+ vfile-message "^3.0.0"
+
+micromark-util-html-tag-name@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz#75737e92fef50af0c6212bd309bc5cb8dbd489ed"
+ integrity sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==
+
+micromark-util-normalize-identifier@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828"
+ integrity sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-resolve-all@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88"
+ integrity sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==
+ dependencies:
+ micromark-util-types "^1.0.0"
+
+micromark-util-sanitize-uri@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz#27dc875397cd15102274c6c6da5585d34d4f12b2"
+ integrity sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-encode "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-subtokenize@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105"
+ integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==
+ dependencies:
+ micromark-util-chunked "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-util-symbol@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e"
+ integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==
+
+micromark-util-types@^1.0.0, micromark-util-types@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20"
+ integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==
+
+micromark@^3.0.0:
+ version "3.0.10"
+ resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.0.10.tgz#1eac156f0399d42736458a14b0ca2d86190b457c"
+ integrity sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==
+ dependencies:
+ "@types/debug" "^4.0.0"
+ debug "^4.0.0"
+ decode-named-character-reference "^1.0.0"
+ micromark-core-commonmark "^1.0.1"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-chunked "^1.0.0"
+ micromark-util-combine-extensions "^1.0.0"
+ micromark-util-decode-numeric-character-reference "^1.0.0"
+ micromark-util-encode "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-resolve-all "^1.0.0"
+ micromark-util-sanitize-uri "^1.0.0"
+ micromark-util-subtokenize "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.1"
+ uvu "^0.5.0"
+
+micromatch@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
+ integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.2.3"
+
+mime@1.6.0, mime@^1.3.4:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mime@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7"
+ integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==
+
+min-indent@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
+ integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
+
+minimatch@^3.0.4:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3"
+ integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist-options@^4.0.2:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
+ integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
+ dependencies:
+ arrify "^1.0.1"
+ is-plain-obj "^1.1.0"
+ kind-of "^6.0.3"
+
+minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+mkdirp-classic@^0.5.2:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
+ integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
+
+mkdirp@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
+ integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=
+
+mkdirp@^0.5.1:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+ dependencies:
+ minimist "^1.2.5"
+
+mkdirp@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
+morphdom@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/morphdom/-/morphdom-2.6.1.tgz#e868e24f989fa3183004b159aed643e628b4306e"
+ integrity sha512-Y8YRbAEP3eKykroIBWrjcfMw7mmwJfjhqdpSvoqinu8Y702nAwikpXcNFDiIkyvfCLxLM9Wu95RZqo4a9jFBaA==
+
+mri@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b"
+ integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+ms@2.1.3:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+nanoid@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c"
+ integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+nlcst-to-string@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz#9315dfab80882bbfd86ddf1b706f53622dc400cc"
+ integrity sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==
+
+nlcst-to-string@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-3.1.0.tgz#359519a16f086114538fcbb454e86967c471f823"
+ integrity sha512-Y8HQWKw/zrHTCnu2zcFBN1dV6vN0NUG7s5fkEj380G8tF3R+vA2KG+tDl2QoHVQCTHGHVXwoni2RQkDSFQb1PA==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+
+node-fetch@^2.6.1, node-fetch@~2.6.1:
+ version "2.6.7"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
+ integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
+ dependencies:
+ whatwg-url "^5.0.0"
+
+node-releases@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01"
+ integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==
+
+node.extend@~2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/node.extend/-/node.extend-2.0.2.tgz#b4404525494acc99740f3703c496b7d5182cc6cc"
+ integrity sha512-pDT4Dchl94/+kkgdwyS2PauDFjZG0Hk0IcHIB+LkW27HLDtdoeMxHTxZh39DYbPP8UflWXWj9JcdDozF+YDOpQ==
+ dependencies:
+ has "^1.0.3"
+ is "^3.2.1"
+
+nopt@1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
+ integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=
+ dependencies:
+ abbrev "1"
+
+nopt@^3.0.1:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+ integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
+ dependencies:
+ abbrev "1"
+
+nopter@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/nopter/-/nopter-0.3.0.tgz#b9690e6fab8f256b37e4e7ccd23e2b38450cc71f"
+ integrity sha1-uWkOb6uPJWs35OfM0j4rOEUMxx8=
+ dependencies:
+ caller-path "~0.1.0"
+ camelcase "^1.0.2"
+ chalk "~0.5.1"
+ cli-table "~0.3.1"
+ eol "~0.2.0"
+ nopt "^3.0.1"
+ object-assign "^2.0.0"
+ splitargs "~0.0.3"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+npm-run-all@^4.1.5:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
+ integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ chalk "^2.4.1"
+ cross-spawn "^6.0.5"
+ memorystream "^0.3.1"
+ minimatch "^3.0.4"
+ pidtree "^0.3.0"
+ read-pkg "^3.0.0"
+ shell-quote "^1.6.1"
+ string.prototype.padend "^3.0.0"
+
+nth-check@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2"
+ integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==
+ dependencies:
+ boolbase "^1.0.0"
+
+object-assign@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa"
+ integrity sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=
+
+object-assign@^4.0.1, object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-inspect@^1.11.0, object-inspect@^1.9.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0"
+ integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==
+
+object-is@^1.0.1:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
+ integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+object-keys@^1.0.12, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object.assign@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
+ integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ has-symbols "^1.0.1"
+ object-keys "^1.1.1"
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+ dependencies:
+ ee-first "1.1.1"
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+os-name@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/os-name/-/os-name-1.0.3.tgz#1b379f64835af7c5a7f498b357cb95215c159edf"
+ integrity sha1-GzefZINa98Wn9JizV8uVIVwVnt8=
+ dependencies:
+ osx-release "^1.0.0"
+ win-release "^1.0.0"
+
+os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+osx-release@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/osx-release/-/osx-release-1.1.0.tgz#f217911a28136949af1bf9308b241e2737d3cd6c"
+ integrity sha1-8heRGigTaUmvG/kwiyQeJzfTzWw=
+ dependencies:
+ minimist "^1.1.0"
+
+p-limit@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
+p-map@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d"
+ integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==
+ dependencies:
+ aggregate-error "^3.0.0"
+
+p-timeout@~4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-4.1.0.tgz#788253c0452ab0ffecf18a62dff94ff1bd09ca0a"
+ integrity sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+pa11y-ci@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/pa11y-ci/-/pa11y-ci-3.0.1.tgz#8de1fbf96544d5af66c53a832349b3a9e51b9f7a"
+ integrity sha512-DUtEIhEG3Ofds7qRuplq0DdCb9doILRlzcRctFNzo4QUNmVy4iZfM3u51A9cqoPo2irCJZoo5BzfiFrcriY2IQ==
+ dependencies:
+ async "~2.6.3"
+ cheerio "~1.0.0-rc.10"
+ commander "~6.2.1"
+ globby "~6.1.0"
+ kleur "~4.1.4"
+ lodash "~4.17.21"
+ node-fetch "~2.6.1"
+ pa11y "~6.1.0"
+ protocolify "~3.0.0"
+ puppeteer "~9.1.1"
+ wordwrap "~1.0.0"
+
+pa11y@~6.1.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/pa11y/-/pa11y-6.1.1.tgz#b204ecd172a664de4ade56f31a58fe5b3342800e"
+ integrity sha512-2NzqA3D9CUlDWj8WuOI4fM2P0qM1d/IUxsRRpzCOfDT5eMR1oEgmUwW2TAk+f90ff/GVck0BewdYT4et4BANew==
+ dependencies:
+ axe-core "^4.0.2"
+ bfj "~7.0.2"
+ commander "~8.0.0"
+ envinfo "~7.8.1"
+ hogan.js "^3.0.2"
+ html_codesniffer "^2.5.1"
+ kleur "~4.1.4"
+ node.extend "~2.0.2"
+ p-timeout "~4.1.0"
+ puppeteer "~9.1.1"
+ semver "~7.3.5"
+
+parse-domain@~0.2.0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/parse-domain/-/parse-domain-0.2.2.tgz#188989b1e2e7398bff3c4f4fd7dca157eb51fac1"
+ integrity sha1-GImJseLnOYv/PE9P19yhV+tR+sE=
+
+parse-entities@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.0.tgz#f67c856d4e3fe19b1a445c3fabe78dcdc1053eeb"
+ integrity sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ character-entities "^2.0.0"
+ character-entities-legacy "^3.0.0"
+ character-reference-invalid "^2.0.0"
+ decode-named-character-reference "^1.0.0"
+ is-alphanumerical "^2.0.0"
+ is-decimal "^2.0.0"
+ is-hexadecimal "^2.0.0"
+
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ 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"
+
+parse-latin@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/parse-latin/-/parse-latin-5.0.0.tgz#a1963445f59fb9cfa3cb1ddf5f839bfeb0ee4b42"
+ integrity sha512-Ht+4/+AUySMS5HKGAiQpBmkFsHSoGrj6Y83flLCa5OIBdtsVkO3UD4OtboJ0O0vZiOznH02x8qlwg9KLUVXuNg==
+ dependencies:
+ nlcst-to-string "^2.0.0"
+ unist-util-modify-children "^2.0.0"
+ unist-util-visit-children "^1.0.0"
+
+parse5-htmlparser2-tree-adapter@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6"
+ integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==
+ dependencies:
+ parse5 "^6.0.1"
+
+parse5@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
+ integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==
+ dependencies:
+ "@types/node" "*"
+
+parse5@^6.0.0, parse5@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
+ integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+
+parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+path-browserify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
+ integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-to-regexp@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.0.tgz#f7b3803336104c346889adece614669230645f38"
+ integrity sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==
+
+path-type@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
+ integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+ dependencies:
+ pify "^3.0.0"
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+pend@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+ integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pidtree@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
+ integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+pkg-dir@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
+postcss@^8.1.10, postcss@^8.3.8:
+ version "8.4.6"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1"
+ integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==
+ dependencies:
+ nanoid "^3.2.0"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+preact-render-to-string@^5.1.19:
+ version "5.1.19"
+ resolved "https://registry.yarnpkg.com/preact-render-to-string/-/preact-render-to-string-5.1.19.tgz#ffae7c3bd1680be5ecf5991d41fe3023b3051e0e"
+ integrity sha512-bj8sn/oytIKO6RtOGSS/1+5CrQyRSC99eLUnEVbqUa6MzJX5dYh7wu9bmT0d6lm/Vea21k9KhCQwvr2sYN3rrQ==
+ dependencies:
+ pretty-format "^3.8.0"
+
+preact@~10.5.15:
+ version "10.5.15"
+ resolved "https://registry.yarnpkg.com/preact/-/preact-10.5.15.tgz#6df94d8afecf3f9e10a742fd8c362ddab464225f"
+ integrity sha512-5chK29n6QcJc3m1lVrKQSQ+V7K1Gb8HeQY6FViQ5AxCAEGu3DaHffWNDkC9+miZgsLvbvU9rxbV1qinGHMHzqA==
+
+prepend-http@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-3.0.1.tgz#3e724d58fd5867465b300bb9615009fa2f8ee3b6"
+ integrity sha512-BLxfZh+m6UiAiCPZFJ4+vYoL7NrRs5XgCTRrjseATAggXhdZKKxn+JUNmuVYWY23bDHgaEHodxw8mnmtVEDtHw==
+
+prettier-plugin-astro@^0.0.12:
+ version "0.0.12"
+ resolved "https://registry.yarnpkg.com/prettier-plugin-astro/-/prettier-plugin-astro-0.0.12.tgz#5f2ece3e3d18c4cd8660b19ebf39888e159d8eae"
+ integrity sha512-ZSNvHuyQ+fxgqA4qoiOf2FvN8FdWcBrAmnik3gPL466TFtMcOV2hVNVVErBcnG/qMyPf7WLwPvBLtTyWpDEUHg==
+ dependencies:
+ "@astrojs/parser" "^0.22.0"
+ prettier "^2.4.1"
+ sass-formatter "^0.7.2"
+
+prettier@^2.4.1, prettier@^2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a"
+ integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==
+
+pretty-format@^3.8.0:
+ version "3.8.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385"
+ integrity sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=
+
+prismjs@^1.25.0:
+ version "1.26.0"
+ resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.26.0.tgz#16881b594828bb6b45296083a8cbab46b0accd47"
+ integrity sha512-HUoH9C5Z3jKkl3UunCyiD5jwk0+Hz0fIgQ2nbwU2Oo/ceuTAQAg+pPVnfdt2TJWRVLcxKh9iuoYDUSc8clb5UQ==
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+progress@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+property-information@^6.0.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22"
+ integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==
+
+protocolify@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/protocolify/-/protocolify-3.0.0.tgz#addf3f90b4f2b86b65cdaf260a761e2bf556854e"
+ integrity sha512-PuvDJOkKJMVQx8jSNf8E5g0bJw/UTKm30mTjFHg4N30c8sefgA5Qr/f8INKqYBKfvP/MUSJrj+z1Smjbq4/3rQ==
+ dependencies:
+ file-url "^3.0.0"
+ prepend-http "^3.0.0"
+
+proxy-from-env@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
+
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
+
+psl@^1.1.28:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
+ integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+punycode@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+puppeteer@~9.1.1:
+ version "9.1.1"
+ resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-9.1.1.tgz#f74b7facf86887efd6c6b9fabb7baae6fdce012c"
+ integrity sha512-W+nOulP2tYd/ZG99WuZC/I5ljjQQ7EUw/jQGcIb9eu8mDlZxNY2SgcJXTLG9h5gRvqA3uJOe4hZXYsd3EqioMw==
+ dependencies:
+ debug "^4.1.0"
+ devtools-protocol "0.0.869402"
+ extract-zip "^2.0.0"
+ https-proxy-agent "^5.0.0"
+ node-fetch "^2.6.1"
+ pkg-dir "^4.2.0"
+ progress "^2.0.1"
+ proxy-from-env "^1.1.0"
+ rimraf "^3.0.2"
+ tar-fs "^2.0.0"
+ unbzip2-stream "^1.3.3"
+ ws "^7.2.3"
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+quick-lru@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
+ integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
+
+range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+react-dom@^17.0.2:
+ version "17.0.2"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
+ integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+ scheduler "^0.20.2"
+
+react@^17.0.2:
+ version "17.0.2"
+ resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
+ integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+
+read-pkg-up@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
+ integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==
+ dependencies:
+ find-up "^4.1.0"
+ read-pkg "^5.2.0"
+ type-fest "^0.8.1"
+
+read-pkg@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
+ integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
+ dependencies:
+ load-json-file "^4.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^3.0.0"
+
+read-pkg@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
+ integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
+ dependencies:
+ "@types/normalize-package-data" "^2.4.0"
+ normalize-package-data "^2.5.0"
+ parse-json "^5.0.0"
+ type-fest "^0.6.0"
+
+readable-stream@^2.2.2:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@^3.1.1, readable-stream@^3.4.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readable-stream@~1.0.17:
+ version "1.0.34"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
+ integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+redent@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
+ integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==
+ dependencies:
+ indent-string "^4.0.0"
+ strip-indent "^3.0.0"
+
+rehype-raw@^6.1.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-6.1.1.tgz#81bbef3793bd7abacc6bf8335879d1b6c868c9d4"
+ integrity sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ hast-util-raw "^7.2.0"
+ unified "^10.0.0"
+
+rehype-slug@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/rehype-slug/-/rehype-slug-5.0.1.tgz#6e732d0c55b3b1e34187e74b7363fb53229e5f52"
+ integrity sha512-X5v3wV/meuOX9NFcGhJvUpEjIvQl2gDvjg3z40RVprYFt7q3th4qMmYLULiu3gXvbNX1ppx+oaa6JyY1W67pTA==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ github-slugger "^1.1.1"
+ hast-util-has-property "^2.0.0"
+ hast-util-heading-rank "^2.0.0"
+ hast-util-to-string "^2.0.0"
+ unified "^10.0.0"
+ unist-util-visit "^4.0.0"
+
+rehype-stringify@^9.0.2:
+ version "9.0.3"
+ resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-9.0.3.tgz#70e3bd6d4d29e7acf36b802deed350305d2c3c17"
+ integrity sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ hast-util-to-html "^8.0.0"
+ unified "^10.0.0"
+
+remark-gfm@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-3.0.1.tgz#0b180f095e3036545e9dddac0e8df3fa5cfee54f"
+ integrity sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-gfm "^2.0.0"
+ micromark-extension-gfm "^2.0.0"
+ unified "^10.0.0"
+
+remark-parse@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775"
+ integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-from-markdown "^1.0.0"
+ unified "^10.0.0"
+
+remark-rehype@^10.0.1:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279"
+ integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-hast "^12.1.0"
+ unified "^10.0.0"
+
+remark-smartypants@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/remark-smartypants/-/remark-smartypants-2.0.0.tgz#836cff43ec139b2e5ec9e488d80596ed677d1cb2"
+ integrity sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA==
+ dependencies:
+ retext "^8.1.0"
+ retext-smartypants "^5.1.0"
+ unist-util-visit "^4.1.0"
+
+require-relative@^0.8.7:
+ version "0.8.7"
+ resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de"
+ integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=
+
+resolve@^1.10.0, resolve@^1.17.0, resolve@^1.20.0:
+ version "1.22.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
+ integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
+ dependencies:
+ is-core-module "^2.8.1"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+retext-latin@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/retext-latin/-/retext-latin-3.1.0.tgz#72b0176af2c69a373fd0d37eadd3924418bb3a89"
+ integrity sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+ parse-latin "^5.0.0"
+ unherit "^3.0.0"
+ unified "^10.0.0"
+
+retext-smartypants@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/retext-smartypants/-/retext-smartypants-5.1.0.tgz#cd5c308710ade5161e642ee1f60bf6df1603d9dc"
+ integrity sha512-P+VS0YlE96T2MRAlFHaTUhPrq1Rls+1GCvIytBvbo7wcgmRxC9xHle0/whTYpRqWirV9WaUm5mXmh1dKnskGWQ==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+ nlcst-to-string "^3.0.0"
+ unified "^10.0.0"
+ unist-util-visit "^4.0.0"
+
+retext-stringify@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/retext-stringify/-/retext-stringify-3.1.0.tgz#46ed45e077bfc4a8334977f6c2d6611e1d36263a"
+ integrity sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+ nlcst-to-string "^3.0.0"
+ unified "^10.0.0"
+
+retext@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/retext/-/retext-8.1.0.tgz#c43437fb84cd46285ad240a9279142e239bada8d"
+ integrity sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+ retext-latin "^3.0.0"
+ retext-stringify "^3.0.0"
+ unified "^10.0.0"
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@^2.5.2:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@^3.0.0, rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
+robot-directives@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/robot-directives/-/robot-directives-0.3.0.tgz#174fb1ffc2a9b97877301e87c89b395f429d1f65"
+ integrity sha1-F0+x/8KpuXh3MB6HyJs5X0KdH2U=
+ dependencies:
+ isbot "^2.0.0"
+ useragent "^2.1.8"
+
+robots-txt-guard@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/robots-txt-guard/-/robots-txt-guard-0.1.1.tgz#0dedec2dc325338989bb14158bef1f8539b705d4"
+ integrity sha512-6+nGkE6c2dI9/dmhmNcoMKVwJxlA6sgN/XNo0rm6LLdA0hnj4YkpgrZdhMPl58gJkAqeiHlf4+8tJcLM1tv1Ew==
+
+robots-txt-parse@~0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/robots-txt-parse/-/robots-txt-parse-0.0.4.tgz#f7d1f323f79921d7e9c6c4bbd25048f6e9810d71"
+ integrity sha1-99HzI/eZIdfpxsS70lBI9umBDXE=
+ dependencies:
+ bluebird "^2.3.5"
+ split "^0.3.0"
+ stream-combiner "^0.2.1"
+ through "^2.3.4"
+
+rollup@^2.57.0:
+ version "2.67.1"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.67.1.tgz#4402665706fa00f321d446ce45f880e02cf54f01"
+ integrity sha512-1Sbcs4OuW+aD+hhqpIRl+RqooIpF6uQcfzU/QSI7vGkwADY6cM4iLsBGRM2CGLXDTDN5y/yShohFmnKegSPWzg==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+s.color@0.0.15:
+ version "0.0.15"
+ resolved "https://registry.yarnpkg.com/s.color/-/s.color-0.0.15.tgz#6b32cd22d8dba95703a5122ddede2020a1560186"
+ integrity sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==
+
+sade@^1.7.3:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701"
+ integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==
+ dependencies:
+ mri "^1.1.0"
+
+safe-buffer@^5.1.2, safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+sander@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad"
+ integrity sha1-dB4kXiMfB8r7b98PEzrfohalAq0=
+ dependencies:
+ es6-promise "^3.1.2"
+ graceful-fs "^4.1.3"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.2"
+
+sass-formatter@^0.7.2:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/sass-formatter/-/sass-formatter-0.7.2.tgz#bfac14c17dd7d3fb3967a5a80f5c34d27ed60daa"
+ integrity sha512-ZGpZC5bWJbv0tiu2glZeLhN85sg3wSySyHxhqov/HZX1/2coczLkY0HXIshrmRC7+G8qiFkeW8Ipl5mS54nl0w==
+ dependencies:
+ suf-log "^2.5.3"
+ suf-regex "^0.3.4"
+
+sass@^1.43.4:
+ version "1.49.7"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.7.tgz#22a86a50552b9b11f71404dfad1b9ff44c6b0c49"
+ integrity sha512-13dml55EMIR2rS4d/RDHHP0sXMY3+30e1TKsyXaSz3iLWVoDWEoboY8WzJd5JMnxrRHffKO3wq2mpJ0jxRJiEQ==
+ dependencies:
+ chokidar ">=3.0.0 <4.0.0"
+ immutable "^4.0.0"
+ source-map-js ">=0.6.2 <2.0.0"
+
+scheduler@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
+ integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+
+section-matter@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167"
+ integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==
+ dependencies:
+ extend-shallow "^2.0.1"
+ kind-of "^6.0.0"
+
+"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.5.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+semver@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+semver@^7.3.5, semver@~7.3.5:
+ version "7.3.5"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
+ integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
+ dependencies:
+ lru-cache "^6.0.0"
+
+send@^0.17.1:
+ version "0.17.2"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820"
+ integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==
+ dependencies:
+ debug "2.6.9"
+ depd "~1.1.2"
+ destroy "~1.0.4"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "1.8.1"
+ mime "1.6.0"
+ ms "2.1.3"
+ on-finished "~2.3.0"
+ range-parser "~1.2.1"
+ statuses "~1.5.0"
+
+setprototypeof@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+shell-quote@^1.6.1:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123"
+ integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==
+
+shiki@^0.9.10:
+ version "0.9.15"
+ resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.9.15.tgz#2481b46155364f236651319d2c18e329ead6fa44"
+ integrity sha512-/Y0z9IzhJ8nD9nbceORCqu6NgT9X6I8Fk8c3SICHI5NbZRLdZYFaB233gwct9sU0vvSypyaL/qaKvzyQGJBZSw==
+ dependencies:
+ jsonc-parser "^3.0.0"
+ vscode-oniguruma "^1.6.1"
+ vscode-textmate "5.2.0"
+
+shorthash@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/shorthash/-/shorthash-0.0.2.tgz#59b268eecbde59038b30da202bcfbddeb2c4a4eb"
+ integrity sha1-WbJo7sveWQOLMNogK8+93rLEpOs=
+
+side-channel@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+ dependencies:
+ call-bind "^1.0.0"
+ get-intrinsic "^1.0.2"
+ object-inspect "^1.9.0"
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slash@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
+ integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
+
+sorcery@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7"
+ integrity sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=
+ dependencies:
+ buffer-crc32 "^0.2.5"
+ minimist "^1.2.0"
+ sander "^0.5.0"
+ sourcemap-codec "^1.3.0"
+
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+source-map@^0.5.0:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+source-map@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.7.3:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
+ integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
+
+sourcemap-codec@^1.3.0, sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
+space-separated-tokens@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz#43193cec4fb858a2ce934b7f98b7f2c18107098b"
+ integrity sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==
+
+spdx-correct@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
+ integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
+ integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
+ integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95"
+ integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==
+
+split@^0.3.0:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
+ integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=
+ dependencies:
+ through "2"
+
+splitargs@~0.0.3:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/splitargs/-/splitargs-0.0.7.tgz#fe9f7ae657371b33b10cb80da143cf8249cf6b3b"
+ integrity sha1-/p965lc3GzOxDLgNoUPPgknPazs=
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+srcset-parse@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/srcset-parse/-/srcset-parse-1.1.0.tgz#73f787f38b73ede2c5af775e0a3465579488122b"
+ integrity sha512-JWp4cG2eybkvKA1QUHGoNK6JDEYcOnSuhzNGjZuYUPqXreDl/VkkvP2sZW7Rmh+icuCttrR9ccb2WPIazyM/Cw==
+
+"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+
+stream-combiner@^0.2.1:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858"
+ integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=
+ dependencies:
+ duplexer "~0.1.1"
+ through "~2.3.4"
+
+stream-length@^1.0.1, stream-length@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/stream-length/-/stream-length-1.0.2.tgz#8277f3cbee49a4daabcfdb4e2f4a9b5e9f2c9f00"
+ integrity sha1-gnfzy+5JpNqrz9tOL0qbXp8snwA=
+ dependencies:
+ bluebird "^2.6.2"
+
+string-width@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.0.tgz#5ab00980cfb29f43e736b113a120a73a0fb569d3"
+ integrity sha512-7x54QnN21P+XL/v8SuNKvfgsUre6PXpN7mc77N3HlZv+f1SBRGmjxtOud2Z6FZ8DmdkD/IdjCaf9XXbnqmTZGQ==
+ dependencies:
+ eastasianwidth "^0.2.0"
+ emoji-regex "^9.2.2"
+ strip-ansi "^7.0.1"
+
+string.prototype.padend@^3.0.0:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1"
+ integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.1"
+
+string.prototype.trimend@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80"
+ integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+string.prototype.trimstart@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed"
+ integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+stringify-entities@^4.0.0, stringify-entities@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.2.tgz#13d113dc7449dc8ae4cb22c28883ee3fff8753e3"
+ integrity sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ==
+ dependencies:
+ character-entities-html4 "^2.0.0"
+ character-entities-legacy "^3.0.0"
+
+strip-ansi@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220"
+ integrity sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=
+ dependencies:
+ ansi-regex "^0.2.1"
+
+strip-ansi@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2"
+ integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==
+ dependencies:
+ ansi-regex "^6.0.1"
+
+strip-bom-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92"
+ integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+strip-bom@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
+ integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
+
+strip-indent@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
+ integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==
+ dependencies:
+ min-indent "^1.0.0"
+
+strnum@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db"
+ integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==
+
+style-to-object@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46"
+ integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==
+ dependencies:
+ inline-style-parser "0.1.1"
+
+suf-log@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/suf-log/-/suf-log-2.5.3.tgz#0919a7fceea532a99b578c97814c4e335b2d64d1"
+ integrity sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==
+ dependencies:
+ s.color "0.0.15"
+
+suf-regex@^0.3.4:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/suf-regex/-/suf-regex-0.3.4.tgz#8d1e0cafe1646755264895914cf44442a1202132"
+ integrity sha512-2Txjq2T4BrNKM53ACN8ZXzMulrL2ILDpTwWBy/bXX+gYALWB7pGkCVmCrj/TZrFgGWgmujdXoWmYfeyY2Ky4/g==
+ dependencies:
+ del-cli "^3.0.0"
+
+supports-color@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
+ integrity sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-esm@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-esm/-/supports-esm-1.0.0.tgz#7cc567747d0745e2b77b331c9b9cae13cf4dc60e"
+ integrity sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==
+ dependencies:
+ has-package-exports "^1.1.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+svelte-hmr@^0.14.7:
+ version "0.14.9"
+ resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.14.9.tgz#35f277efc789e1a6230185717347cddb2f8e9833"
+ integrity sha512-bKE9+4qb4sAnA+TKHiYurUl970rjA0XmlP9TEP7K/ncyWz3m81kA4HOgmlZK/7irGK7gzZlaPDI3cmf8fp/+tg==
+
+svelte-preprocess@^4.9.8:
+ version "4.10.3"
+ resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-4.10.3.tgz#9aac89a8abc3889fa5740fb34f7dd74f3c578e13"
+ integrity sha512-ttw17lJfb/dx2ZJT9sesaXT5l7mPQ9Apx1H496Kli3Hkk7orIRGpOw6rCPkRNzr6ueVPqb4vzodS5x7sBFhKHw==
+ dependencies:
+ "@types/pug" "^2.0.4"
+ "@types/sass" "^1.16.0"
+ detect-indent "^6.0.0"
+ magic-string "^0.25.7"
+ sorcery "^0.10.0"
+ strip-indent "^3.0.0"
+
+svelte@^3.44.3:
+ version "3.46.4"
+ resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.46.4.tgz#0c46bc4a3e20a2617a1b7dc43a722f9d6c084a38"
+ integrity sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg==
+
+tar-fs@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
+ integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
+ dependencies:
+ chownr "^1.1.1"
+ mkdirp-classic "^0.5.2"
+ pump "^3.0.0"
+ tar-stream "^2.1.4"
+
+tar-stream@^2.1.4:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
+ integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
+ dependencies:
+ bl "^4.0.3"
+ end-of-stream "^1.4.1"
+ fs-constants "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^3.1.1"
+
+through2-sink@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/through2-sink/-/through2-sink-1.0.0.tgz#5f106bba1d7330dad3cba5c0ab1863923256c399"
+ integrity sha1-XxBruh1zMNrTy6XAqxhjkjJWw5k=
+ dependencies:
+ through2 "~0.5.1"
+ xtend "~3.0.0"
+
+through2-spy@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/through2-spy/-/through2-spy-1.2.0.tgz#9c891ca9ca40e1e1e4cf31e1ac57f94cc9d248cb"
+ integrity sha1-nIkcqcpA4eHkzzHhrFf5TMnSSMs=
+ dependencies:
+ through2 "~0.5.1"
+ xtend "~3.0.0"
+
+through2@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz#dfdd012eb9c700e2323fd334f38ac622ab372da7"
+ integrity sha1-390BLrnHAOIyP9M084rGIqs3Lac=
+ dependencies:
+ readable-stream "~1.0.17"
+ xtend "~3.0.0"
+
+through@2, through@^2.3.4, through@^2.3.8, through@~2.3.4:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+tmp@0.0.x:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+toidentifier@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+
+tough-cookie@^2.3.1:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+ integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
+
+trim-newlines@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
+ integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
+
+trough@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/trough/-/trough-2.0.2.tgz#94a3aa9d5ce379fc561f6244905b3f36b7458d96"
+ integrity sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==
+
+tryer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
+ integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
+
+ts-morph@^12.0.0:
+ version "12.2.0"
+ resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-12.2.0.tgz#3332319cecd44aff0b7b410f1fe39637499b1a1b"
+ integrity sha512-WHXLtFDcIRwoqaiu0elAoZ/AmI+SwwDafnPKjgJmdwJ2gRVO0jMKBt88rV2liT/c6MTsXyuWbGFiHe9MRddWJw==
+ dependencies:
+ "@ts-morph/common" "~0.11.1"
+ code-block-writer "^10.1.1"
+
+tsconfig-resolver@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/tsconfig-resolver/-/tsconfig-resolver-3.0.1.tgz#c9e62e328ecfbeaae4a4f1131a92cdbed12350c4"
+ integrity sha512-ZHqlstlQF449v8glscGRXzL6l2dZvASPCdXJRWG4gHEZlUVx2Jtmr+a2zeVG4LCsKhDXKRj5R3h0C/98UcVAQg==
+ dependencies:
+ "@types/json5" "^0.0.30"
+ "@types/resolve" "^1.17.0"
+ json5 "^2.1.3"
+ resolve "^1.17.0"
+ strip-bom "^4.0.0"
+ type-fest "^0.13.1"
+
+tslib@^2.2.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
+ integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
+
+tsm@^2.1.4:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tsm/-/tsm-2.2.1.tgz#3e78e86a03b2f569c20cff4a9f66c4ec8fce65fc"
+ integrity sha512-qvJB0baPnxQJolZru11mRgGTdNlx17WqgJnle7eht3Vhb+VUR4/zFA5hFl6NqRe7m8BD9w/6yu0B2XciRrdoJA==
+ dependencies:
+ esbuild "^0.14.0"
+
+type-fest@^0.13.1:
+ version "0.13.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
+ integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
+
+type-fest@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
+ integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
+
+type-fest@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
+ integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+typescript@^4.3.5, typescript@^4.5.4:
+ version "4.5.5"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3"
+ integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
+
+unbox-primitive@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"
+ integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==
+ dependencies:
+ function-bind "^1.1.1"
+ has-bigints "^1.0.1"
+ has-symbols "^1.0.2"
+ which-boxed-primitive "^1.0.2"
+
+unbzip2-stream@^1.3.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7"
+ integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==
+ dependencies:
+ buffer "^5.2.1"
+ through "^2.3.8"
+
+unherit@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unherit/-/unherit-3.0.0.tgz#83d69af9d8e3afd28fa51cff9ee84de7a1d82a6b"
+ integrity sha512-UmvIQZGEc9qdLIQ8mv8/61n6PiMgfbOoASPKHpCvII5srShCQSa6jSjBjlZOR4bxt2XnT6uo6csmPKRi+zQ0Jg==
+
+unified@^10.0.0, unified@^10.1.1:
+ version "10.1.1"
+ resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.1.tgz#345e349e3ab353ab612878338eb9d57b4dea1d46"
+ integrity sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ bail "^2.0.0"
+ extend "^3.0.0"
+ is-buffer "^2.0.0"
+ is-plain-obj "^4.0.0"
+ trough "^2.0.0"
+ vfile "^5.0.0"
+
+unist-builder@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-3.0.0.tgz#728baca4767c0e784e1e64bb44b5a5a753021a04"
+ integrity sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-generated@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz#86fafb77eb6ce9bfa6b663c3f5ad4f8e56a60113"
+ integrity sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==
+
+unist-util-is@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.1.1.tgz#e8aece0b102fa9bc097b0fef8f870c496d4a6236"
+ integrity sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==
+
+unist-util-map@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-map/-/unist-util-map-3.0.0.tgz#ec4c3e4f3f65f559b6c232087af2a470f3e5db89"
+ integrity sha512-kyPbOAlOPZpytdyquF1g6qYpAjkpMpSPtR7TAj4SOQWSJfQ/LN+IFI2oWBvkxzhsPKxiMKZcgpp5ihZLLvNl6g==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-modify-children@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz#9c9c30d4e32502aabb3fde10d7872a17c86801e2"
+ integrity sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==
+ dependencies:
+ array-iterate "^1.0.0"
+
+unist-util-position-from-estree@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.1.tgz#96f4d543dfb0428edc01ebb928570b602d280c4c"
+ integrity sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-position@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.1.tgz#f8484b2da19a897a0180556d160c28633070dbb9"
+ integrity sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==
+
+unist-util-remove-position@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-4.0.1.tgz#d5b46a7304ac114c8d91990ece085ca7c2c135c8"
+ integrity sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-visit "^4.0.0"
+
+unist-util-stringify-position@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz#d517d2883d74d0daa0b565adc3d10a02b4a8cde9"
+ integrity sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-visit-children@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz#e8a087e58a33a2815f76ea1901c15dec2cb4b432"
+ integrity sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ==
+
+unist-util-visit-parents@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz#e83559a4ad7e6048a46b1bdb22614f2f3f4724f2"
+ integrity sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^5.0.0"
+
+unist-util-visit-parents@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz#44bbc5d25f2411e7dfc5cecff12de43296aa8521"
+ integrity sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^5.0.0"
+
+unist-util-visit@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-3.1.0.tgz#9420d285e1aee938c7d9acbafc8e160186dbaf7b"
+ integrity sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^5.0.0"
+ unist-util-visit-parents "^4.0.0"
+
+unist-util-visit@^4.0.0, unist-util-visit@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.0.tgz#f41e407a9e94da31594e6b1c9811c51ab0b3d8f5"
+ integrity sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^5.0.0"
+ unist-util-visit-parents "^5.0.0"
+
+unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+
+urlcache@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/urlcache/-/urlcache-0.7.0.tgz#3ff6a1e10b3d200aba132efc9f41dc1ad6d91b80"
+ integrity sha512-xOW4t6wJDT07+VunsHwePemyXXRidCSOZ/1RIILJi2XnB+81FA5H0MRvS63/7joTWjGLajcJJGvR5odpbkV6hw==
+ dependencies:
+ urlobj "0.0.11"
+
+urlobj@0.0.11:
+ version "0.0.11"
+ resolved "https://registry.yarnpkg.com/urlobj/-/urlobj-0.0.11.tgz#ddd3060876ae1cf0ff9e38a91d0574332b73794c"
+ integrity sha512-Ncck0WWtuFBbZhSYwKjK1AU2V51V98P/KHUPkaEc+mFy4xkpAHFNyVQT+S5SgtsJAr94e4wiKUucJSfasV2kBw==
+ dependencies:
+ is-object "^1.0.1"
+ is-string "^1.0.4"
+ object-assign "^4.1.1"
+
+useragent@^2.1.8:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972"
+ integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==
+ dependencies:
+ lru-cache "4.1.x"
+ tmp "0.0.x"
+
+util-deprecate@^1.0.1, util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util@^0.12.0:
+ version "0.12.4"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253"
+ integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==
+ dependencies:
+ inherits "^2.0.3"
+ is-arguments "^1.0.4"
+ is-generator-function "^1.0.7"
+ is-typed-array "^1.1.3"
+ safe-buffer "^5.1.2"
+ which-typed-array "^1.1.2"
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
+
+uuid@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
+ integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=
+
+uvu@^0.5.0:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.3.tgz#3d83c5bc1230f153451877bfc7f4aea2392219ae"
+ integrity sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==
+ dependencies:
+ dequal "^2.0.0"
+ diff "^5.0.0"
+ kleur "^4.0.3"
+ sade "^1.7.3"
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+vfile-location@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-4.0.1.tgz#06f2b9244a3565bef91f099359486a08b10d3a95"
+ integrity sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ vfile "^5.0.0"
+
+vfile-message@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.0.tgz#5437035aa43185ff4b9210d32fada6c640e59143"
+ integrity sha512-4QJbBk+DkPEhBXq3f260xSaWtjE4gPKOfulzfMFF8ZNwaPZieWsg3iVlcmF04+eebzpcpeXOOFMfrYzJHVYg+g==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-stringify-position "^3.0.0"
+
+vfile@^5.0.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.0.tgz#4990c78cb3157005590ee8c930b71cd7fa6a006e"
+ integrity sha512-Tj44nY/48OQvarrE4FAjUfrv7GZOYzPbl5OD65HxVKwLJKMPU7zmfV8cCgCnzKWnSfYG2f3pxu+ALqs7j22xQQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ is-buffer "^2.0.0"
+ unist-util-stringify-position "^3.0.0"
+ vfile-message "^3.0.0"
+
+vite@~2.6.10:
+ version "2.6.14"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-2.6.14.tgz#35c09a15e4df823410819a2a239ab11efb186271"
+ integrity sha512-2HA9xGyi+EhY2MXo0+A2dRsqsAG3eFNEVIo12olkWhOmc8LfiM+eMdrXf+Ruje9gdXgvSqjLI9freec1RUM5EA==
+ dependencies:
+ esbuild "^0.13.2"
+ postcss "^8.3.8"
+ resolve "^1.20.0"
+ rollup "^2.57.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+vscode-css-languageservice@^5.1.1:
+ version "5.1.12"
+ resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-5.1.12.tgz#eed3a6a1bb8a7a70636ef07cd742a034c71635a1"
+ integrity sha512-293C5C2732Rbhh3opTs+nQBpC5Dd+oYrEA8lc0OWdyt40oYmJ331FV7NMF1SLFSIcOFB5XveLiWUZak2oyc49Q==
+ dependencies:
+ vscode-languageserver-textdocument "^1.0.1"
+ vscode-languageserver-types "^3.16.0"
+ vscode-nls "^5.0.0"
+ vscode-uri "^3.0.2"
+
+vscode-emmet-helper@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-2.1.2.tgz#2978060ebb736a7e0f6e6f1d649bd026880528c3"
+ integrity sha512-Fy6UNawSgxE3Kuqi54vSXohf03iOIrp1A74ReAgzvGP9Yt7fUAvkqF6No2WAc34/w0oWAHAeqoBNqmKKWh6U5w==
+ dependencies:
+ emmet "^2.1.5"
+ jsonc-parser "^2.3.0"
+ vscode-languageserver-textdocument "^1.0.1"
+ vscode-languageserver-types "^3.15.1"
+ vscode-nls "^5.0.0"
+ vscode-uri "^2.1.2"
+
+vscode-html-languageservice@^3.0.3:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-3.2.0.tgz#e92269a04097d87bd23431e3a4e491a27b5447b9"
+ integrity sha512-aLWIoWkvb5HYTVE0kI9/u3P0ZAJGrYOSAAE6L0wqB9radKRtbJNrF9+BjSUFyCgBdNBE/GFExo35LoknQDJrfw==
+ dependencies:
+ vscode-languageserver-textdocument "^1.0.1"
+ vscode-languageserver-types "3.16.0-next.2"
+ vscode-nls "^5.0.0"
+ vscode-uri "^2.1.2"
+
+vscode-jsonrpc@6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz#108bdb09b4400705176b957ceca9e0880e9b6d4e"
+ integrity sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==
+
+vscode-languageserver-protocol@^3.15.3, vscode-languageserver-protocol@^3.16.0:
+ version "3.16.0"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz#34135b61a9091db972188a07d337406a3cdbe821"
+ integrity sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==
+ dependencies:
+ vscode-jsonrpc "6.0.0"
+ vscode-languageserver-types "3.16.0"
+
+vscode-languageserver-textdocument@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz#3cd56dd14cec1d09e86c4bb04b09a246cb3df157"
+ integrity sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==
+
+vscode-languageserver-types@3.16.0, vscode-languageserver-types@^3.15.1, vscode-languageserver-types@^3.16.0:
+ version "3.16.0"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247"
+ integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==
+
+vscode-languageserver-types@3.16.0-next.2:
+ version "3.16.0-next.2"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz#940bd15c992295a65eae8ab6b8568a1e8daa3083"
+ integrity sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==
+
+vscode-languageserver@6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-6.1.1.tgz#d76afc68172c27d4327ee74332b468fbc740d762"
+ integrity sha512-DueEpkUAkD5XTR4MLYNr6bQIp/UFR0/IPApgXU3YfCBCB08u2sm9hRCs6DxYZELkk++STPjpcjksR2H8qI3cDQ==
+ dependencies:
+ vscode-languageserver-protocol "^3.15.3"
+
+vscode-nls@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840"
+ integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==
+
+vscode-oniguruma@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz#2bf4dfcfe3dd2e56eb549a3068c8ee39e6c30ce5"
+ integrity sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ==
+
+vscode-textmate@5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e"
+ integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==
+
+vscode-uri@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c"
+ integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==
+
+vscode-uri@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.3.tgz#a95c1ce2e6f41b7549f86279d19f47951e4f4d84"
+ integrity sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA==
+
+vue@^3.2.22:
+ version "3.2.30"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.30.tgz#47de3039631ac22cab2fd26b427575260199b8bb"
+ integrity sha512-ZmTFWVJUX2XADkuOB8GcLTuxnBLogjJBTNVrM7WsTnjqRQ+VR8bLNrvNsbn8vj/LaP5+0WFAPrpngOYE2x+e+Q==
+ dependencies:
+ "@vue/compiler-dom" "3.2.30"
+ "@vue/compiler-sfc" "3.2.30"
+ "@vue/runtime-dom" "3.2.30"
+ "@vue/server-renderer" "3.2.30"
+ "@vue/shared" "3.2.30"
+
+web-namespaces@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692"
+ integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==
+
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
+ integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
+
+whatwg-url@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
+ integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
+which-boxed-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
+ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
+ 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"
+
+which-typed-array@^1.1.2:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793"
+ integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==
+ dependencies:
+ available-typed-arrays "^1.0.5"
+ call-bind "^1.0.2"
+ es-abstract "^1.18.5"
+ foreach "^2.0.5"
+ has-tostringtag "^1.0.0"
+ is-typed-array "^1.1.7"
+
+which@^1.2.9:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+win-release@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209"
+ integrity sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=
+ dependencies:
+ semver "^5.0.1"
+
+wordwrap@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+ integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+ws@^7.2.3:
+ version "7.5.7"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
+ integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
+
+xtend@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a"
+ integrity sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=
+
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yargs-parser@^18.1.3:
+ version "18.1.3"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
+ integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^21.0.0:
+ version "21.0.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55"
+ integrity sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==
+
+yauzl@^2.10.0:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
+ integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
+ dependencies:
+ buffer-crc32 "~0.2.3"
+ fd-slicer "~1.1.0"
+
+zod@^3.8.1:
+ version "3.11.6"
+ resolved "https://registry.yarnpkg.com/zod/-/zod-3.11.6.tgz#e43a5e0c213ae2e02aefe7cb2b1a6fa3d7f1f483"
+ integrity sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg==
+
+zwitch@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.2.tgz#91f8d0e901ffa3d66599756dde7f57b17c95dce1"
+ integrity sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==
diff --git a/yarn.lock b/yarn.lock
index 8278d1e34..4f1562103 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,25 @@
# yarn lockfile v1
+"@algolia/autocomplete-core@1.5.2":
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz#ec0178e07b44fd74a057728ac157291b26cecf37"
+ integrity sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A==
+ dependencies:
+ "@algolia/autocomplete-shared" "1.5.2"
+
+"@algolia/autocomplete-preset-algolia@1.5.2":
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz#36c5638cc6dba6ea46a86e5a0314637ca40a77ca"
+ integrity sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw==
+ dependencies:
+ "@algolia/autocomplete-shared" "1.5.2"
+
+"@algolia/autocomplete-shared@1.5.2":
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz#e157f9ad624ab8fd940ff28bd2094cdf199cdd79"
+ integrity sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug==
+
"@algolia/cache-browser-local-storage@4.12.1":
version "4.12.1"
resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.12.1.tgz#23f4f219963b96918d0524acd09d4d646541d888"
@@ -137,7 +156,7 @@
jsonpointer "^5.0.0"
leven "^3.1.0"
-"@astrojs/compiler@^0.11.4":
+"@astrojs/compiler@^0.11.0", "@astrojs/compiler@^0.11.4":
version "0.11.4"
resolved "https://registry.yarnpkg.com/@astrojs/compiler/-/compiler-0.11.4.tgz#933853cf37ba2cbf0213a88463fd48c3a4329a07"
integrity sha512-T598FTCgBFjjPLPClvn+lc2SFGAJkjaF+lbxvHNjzmUpOYdz7YyH1apd3XAZvDp5r5WBBhicB6693GhQRpf3oQ==
@@ -162,6 +181,33 @@
vscode-languageserver-types "^3.16.0"
vscode-uri "^3.0.2"
+"@astrojs/renderer-react@0.5.0-next.0":
+ version "0.5.0-next.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/renderer-react/-/renderer-react-0.5.0-next.0.tgz#452990c3298f540c5e5650ef5745ec96433bc016"
+ integrity sha512-1DuaWllhddOvTmLS9ZOcMchQ/6HBhMlngiN4mXlkRH8y0RixBeg6aLWPEj3N46ZI4Zh73JOPUSWeGuVrDKVmHg==
+ dependencies:
+ "@babel/plugin-transform-react-jsx" "^7.16.7"
+ react "^17.0.2"
+ react-dom "^17.0.2"
+
+"@astrojs/renderer-svelte@0.4.0-next.0":
+ version "0.4.0-next.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/renderer-svelte/-/renderer-svelte-0.4.0-next.0.tgz#2de092b6d7d9125a62da82ad63fba16413b24994"
+ integrity sha512-5DwL3Tt+vSKdLzUe6A7rbqG6KvrRIGzF8YU2k5F/rYPI6XOAZ1vlCD3SPY5sZwu0/qjH12BG+AwG82wlNJIenA==
+ dependencies:
+ "@sveltejs/vite-plugin-svelte" "^1.0.0-next.37"
+ postcss-load-config "^3.1.1"
+ svelte "^3.46.4"
+ svelte-preprocess "^4.10.2"
+
+"@astrojs/renderer-vue@0.4.0-next.0":
+ version "0.4.0-next.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/renderer-vue/-/renderer-vue-0.4.0-next.0.tgz#5adc55870c84fceea90cb1b16ebacadc8968e60a"
+ integrity sha512-GJOH84SStDBNST1jwt1TT7aQ8z5aZ3K6w5tci0XFPq16BnT+KyHNbZITFTkY0nszF3evswV/Z0c0FJxlHeUeXQ==
+ dependencies:
+ "@vitejs/plugin-vue" "^2.2.0"
+ vue "^3.2.30"
+
"@astropub/webapi@^0.10.1", "@astropub/webapi@^0.10.13":
version "0.10.14"
resolved "https://registry.yarnpkg.com/@astropub/webapi/-/webapi-0.10.14.tgz#f3e118718d1353170ec9ea0adc4a725796717a77"
@@ -1287,6 +1333,11 @@
human-id "^1.0.2"
prettier "^1.19.1"
+"@docsearch/css@3.0.0-alpha.50":
+ version "3.0.0-alpha.50"
+ resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0-alpha.50.tgz#794c6a8d301840a49b55f5b331c7be84b9723643"
+ integrity sha512-QeWFCQOtS9D+Fi20liKsPXF2j/xWKh52e+P2Z1UATIdPMqmH6zoB2lcUz+cgv6PPVgWUtECeR6VSSUm71LT94w==
+
"@docsearch/css@^1.0.0-alpha.28":
version "1.0.0-alpha.28"
resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-1.0.0-alpha.28.tgz#c8a2cd8c1bb3a6855c51892e9dbdab5d42fe6e23"
@@ -1302,6 +1353,16 @@
"@francoischalifour/autocomplete-preset-algolia" "^1.0.0-alpha.28"
algoliasearch "^4.0.0"
+"@docsearch/react@^3.0.0-alpha.50":
+ version "3.0.0-alpha.50"
+ resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0-alpha.50.tgz#a7dc547836c2b221fd3aa8eb87bfb47a579ef141"
+ integrity sha512-oDGV1zZCRYv7MWsh6CyQVthYTRc3b4q+6kKwNYb1/g/Wf/4nJHutpxolFLHdEUDhrJ4Xi8wxwQG+lEwAVBTHPg==
+ dependencies:
+ "@algolia/autocomplete-core" "1.5.2"
+ "@algolia/autocomplete-preset-algolia" "1.5.2"
+ "@docsearch/css" "3.0.0-alpha.50"
+ algoliasearch "^4.0.0"
+
"@emmetio/abbreviation@^2.2.3":
version "2.2.3"
resolved "https://registry.yarnpkg.com/@emmetio/abbreviation/-/abbreviation-2.2.3.tgz#2b3c0383c1a4652f677d5b56fb3f1616fe16ef10"
@@ -1689,6 +1750,11 @@
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
+"@trysound/sax@0.2.0":
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
+ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
+
"@ts-morph/common@~0.11.1":
version "0.11.1"
resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.11.1.tgz#281af2a0642b19354d8aa07a0d50dfdb4aa8164e"
@@ -1795,7 +1861,7 @@
resolved "https://registry.yarnpkg.com/@types/github-slugger/-/github-slugger-1.3.0.tgz#16ab393b30d8ae2a111ac748a015ac05a1fc5524"
integrity sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g==
-"@types/glob@*":
+"@types/glob@*", "@types/glob@^7.1.1":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
@@ -1990,6 +2056,13 @@
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129"
integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==
+"@types/yauzl@^2.9.1":
+ version "2.9.2"
+ resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a"
+ integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==
+ dependencies:
+ "@types/node" "*"
+
"@typescript-eslint/eslint-plugin@^5.0.0":
version "5.12.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.1.tgz#b2cd3e288f250ce8332d5035a2ff65aba3374ac4"
@@ -2280,6 +2353,11 @@
resolved "https://registry.yarnpkg.com/@webcomponents/template-shadowroot/-/template-shadowroot-0.1.0.tgz#adb3438d0d9a18e8fced08abc253f56b7eadab00"
integrity sha512-ry84Vft6xtRBbd4M/ptRodbOLodV5AD15TYhyRghCRgIcJJKmYmJ2v2BaaWxygENwh6Uq3zTfGPmlckKT/GXsQ==
+abbrev@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+
acorn-jsx@^5.3.1:
version "5.3.2"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
@@ -2379,6 +2457,11 @@ ansi-colors@4.1.1, ansi-colors@^4.1.1:
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+ansi-regex@^0.2.0, ansi-regex@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9"
+ integrity sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=
+
ansi-regex@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
@@ -2394,6 +2477,16 @@ ansi-regex@^6.0.1:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
+ansi-styles@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de"
+ integrity sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -2451,6 +2544,13 @@ array-iterate@^1.0.0:
resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.4.tgz#add1522e9dd9749bb41152d08b845bd08d6af8b7"
integrity sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==
+array-union@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
+ dependencies:
+ array-uniq "^1.0.1"
+
array-union@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
@@ -2461,6 +2561,11 @@ array-union@^3.0.1:
resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975"
integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+ integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
+
arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@@ -2488,11 +2593,85 @@ ast-types@^0.13.2:
dependencies:
tslib "^2.0.1"
+astro-icon@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/astro-icon/-/astro-icon-0.6.0.tgz#86ffca9838226ae3d2c903ab5e2ce474eccb7171"
+ integrity sha512-1Ch1S+9d73DVl2erbyGRAXa8KYqXIRzJ681/nLgkSrdrBBkb9RgUV1Wrj0Tese2ukyfxFHFAYo/GdQHrWdcsDg==
+ dependencies:
+ node-fetch "^3.1.0"
+ resolve-pkg "^2.0.0"
+ svgo "^2.8.0"
+
+astro@0.23.0-next.10:
+ version "0.23.0-next.10"
+ resolved "https://registry.yarnpkg.com/astro/-/astro-0.23.0-next.10.tgz#fbacb8d9fb18399caa44726a4cb64761835d448e"
+ integrity sha512-WKALrpi92aEdc48zi2cfgc2T24l7maVurfZ75Ugl2C805Y6MXwnKfe50Wk1s50u5gEoz9LLqFqCqU6EESW2x2g==
+ dependencies:
+ "@astrojs/compiler" "^0.11.0"
+ "@astrojs/language-server" "^0.8.6"
+ "@astrojs/markdown-remark" "^0.6.1-next.2"
+ "@astrojs/prism" "0.4.0"
+ "@astrojs/renderer-preact" "^0.5.0-next.0"
+ "@astrojs/renderer-react" "0.5.0-next.0"
+ "@astrojs/renderer-svelte" "0.4.0-next.0"
+ "@astrojs/renderer-vue" "0.4.0-next.0"
+ "@astropub/webapi" "^0.10.1"
+ "@babel/core" "^7.15.8"
+ "@babel/traverse" "^7.15.4"
+ "@proload/core" "^0.2.2"
+ "@proload/plugin-tsm" "^0.1.0"
+ "@types/babel__core" "^7.1.15"
+ "@types/debug" "^4.1.7"
+ "@web/parse5-utils" "^1.3.0"
+ ci-info "^3.2.0"
+ common-ancestor-path "^1.0.1"
+ eol "^0.9.1"
+ es-module-lexer "^0.9.3"
+ esbuild "0.13.7"
+ estree-walker "^3.0.0"
+ fast-glob "^3.2.7"
+ fast-xml-parser "^4.0.0-beta.3"
+ html-entities "^2.3.2"
+ htmlparser2 "^7.1.2"
+ kleur "^4.1.4"
+ magic-string "^0.25.7"
+ mime "^3.0.0"
+ morphdom "^2.6.1"
+ parse5 "^6.0.1"
+ path-to-regexp "^6.2.0"
+ postcss "^8.3.8"
+ prismjs "^1.25.0"
+ rehype-slug "^5.0.0"
+ resolve "^1.20.0"
+ rollup "^2.64.0"
+ semver "^7.3.5"
+ send "^0.17.1"
+ serialize-javascript "^6.0.0"
+ shiki "^0.10.0"
+ shorthash "^0.0.2"
+ slash "^4.0.0"
+ sourcemap-codec "^1.4.8"
+ srcset-parse "^1.1.0"
+ string-width "^5.0.0"
+ strip-ansi "^7.0.1"
+ supports-esm "^1.0.0"
+ tsconfig-resolver "^3.0.1"
+ vite "^2.8.0"
+ yargs-parser "^21.0.0"
+ zod "^3.8.1"
+
async@0.9.x:
version "0.9.2"
resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
+async@~2.6.3:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
+ integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
+ dependencies:
+ lodash "^4.17.14"
+
at-least-node@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
@@ -2515,6 +2694,11 @@ available-typed-arrays@^1.0.5:
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
+axe-core@^4.0.2:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413"
+ integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==
+
babel-plugin-dynamic-import-node@^2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
@@ -2595,6 +2779,36 @@ better-path-resolve@1.0.0:
dependencies:
is-windows "^1.0.0"
+bfj@~7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2"
+ integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==
+ dependencies:
+ bluebird "^3.5.5"
+ check-types "^11.1.1"
+ hoopy "^0.1.4"
+ tryer "^1.0.1"
+
+bhttp@^1.2.1:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/bhttp/-/bhttp-1.2.8.tgz#8172ef69f16239bd77c30fa67f72c89737af24b2"
+ integrity sha512-ZwEA5FKEUhc98EHRX+BkNmUOs48RTnglvfze2+p0HrMPwhQBtVw1aAYyylnCtRl6x6vltCkzGo2+twQ6LVfm6Q==
+ dependencies:
+ bluebird "^2.8.2"
+ concat-stream "^1.4.7"
+ debug "^2.1.1"
+ dev-null "^0.1.1"
+ errors "^0.2.0"
+ extend "^2.0.0"
+ form-data2 "^1.0.0"
+ form-fix-array "^1.0.0"
+ lodash.clonedeep "^4.5.0"
+ lodash.merge "^4.6.2"
+ stream-length "^1.0.2"
+ through2-sink "^1.0.0"
+ through2-spy "^1.2.0"
+ tough-cookie "^2.3.1"
+
binary-extensions@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
@@ -2609,6 +2823,16 @@ bl@^4.0.3:
inherits "^2.0.4"
readable-stream "^3.4.0"
+bluebird@^2.3.5, bluebird@^2.6.2, bluebird@^2.8.1, bluebird@^2.8.2:
+ version "2.11.0"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1"
+ integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=
+
+bluebird@^3.5.5:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
boolbase@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
@@ -2636,6 +2860,34 @@ breakword@^1.0.5:
dependencies:
wcwidth "^1.0.1"
+broken-link-checker@^0.7.8:
+ version "0.7.8"
+ resolved "https://registry.yarnpkg.com/broken-link-checker/-/broken-link-checker-0.7.8.tgz#47ea837e1b43ec2feac220207dc3f44c03b49ec0"
+ integrity sha512-/zH4/nLMNKDeDH5nVuf/R6WYd0Yjnar1NpcdAO2+VlwjGKzJa6y42C03UO+imBSHwe6BefSkVi82fImE2Rb7yg==
+ dependencies:
+ bhttp "^1.2.1"
+ calmcard "~0.1.1"
+ chalk "^1.1.3"
+ char-spinner "^1.0.1"
+ condense-whitespace "^1.0.0"
+ default-user-agent "^1.0.0"
+ errno "~0.1.4"
+ extend "^3.0.0"
+ http-equiv-refresh "^1.0.0"
+ humanize-duration "^3.9.1"
+ is-stream "^1.0.1"
+ is-string "^1.0.4"
+ limited-request-queue "^2.0.0"
+ link-types "^1.1.0"
+ maybe-callback "^2.1.0"
+ nopter "~0.3.0"
+ parse5 "^3.0.2"
+ robot-directives "~0.3.0"
+ robots-txt-guard "~0.1.0"
+ robots-txt-parse "~0.0.4"
+ urlcache "~0.7.0"
+ urlobj "0.0.11"
+
browser-stdout@1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
@@ -2652,7 +2904,7 @@ browserslist@^4.17.5, browserslist@^4.19.1:
node-releases "^2.0.2"
picocolors "^1.0.0"
-buffer-crc32@^0.2.5:
+buffer-crc32@^0.2.5, buffer-crc32@~0.2.3:
version "0.2.13"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
@@ -2662,7 +2914,7 @@ buffer-from@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
-buffer@^5.5.0:
+buffer@^5.2.1, buffer@^5.5.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
@@ -2693,11 +2945,28 @@ call-bind@^1.0.0, call-bind@^1.0.2:
function-bind "^1.1.1"
get-intrinsic "^1.0.2"
+caller-path@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
+ integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=
+ dependencies:
+ callsites "^0.2.0"
+
+callsites@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
+ integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=
+
callsites@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+calmcard@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/calmcard/-/calmcard-0.1.1.tgz#35ac2b66492b0ed39ad06a893a0ff6e61124e449"
+ integrity sha1-NawrZkkrDtOa0GqJOg/25hEk5Ek=
+
camelcase-css@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
@@ -2712,6 +2981,11 @@ camelcase-keys@^6.2.2:
map-obj "^4.0.0"
quick-lru "^4.0.1"
+camelcase@^1.0.2:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+ integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=
+
camelcase@^5.0.0, camelcase@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
@@ -2745,7 +3019,18 @@ chai@^4.3.4:
pathval "^1.1.1"
type-detect "^4.0.5"
-chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2:
+chalk@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ 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"
+
+chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -2770,6 +3055,22 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
+chalk@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174"
+ integrity sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=
+ dependencies:
+ ansi-styles "^1.1.0"
+ escape-string-regexp "^1.0.0"
+ has-ansi "^0.1.0"
+ strip-ansi "^0.3.0"
+ supports-color "^0.2.0"
+
+char-spinner@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/char-spinner/-/char-spinner-1.0.1.tgz#e6ea67bd247e107112983b7ab0479ed362800081"
+ integrity sha1-5upnvSR+EHESmDt6sEee02KAAIE=
+
character-entities-html4@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b"
@@ -2800,6 +3101,11 @@ check-error@^1.0.2:
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=
+check-types@^11.1.1:
+ version "11.1.2"
+ resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f"
+ integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==
+
cheerio-select@^1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823"
@@ -2811,7 +3117,7 @@ cheerio-select@^1.5.0:
domhandler "^4.2.0"
domutils "^2.7.0"
-cheerio@^1.0.0-rc.10:
+cheerio@^1.0.0-rc.10, cheerio@~1.0.0-rc.10:
version "1.0.0-rc.10"
resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e"
integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==
@@ -2859,6 +3165,13 @@ clean-stack@^2.0.0:
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+cli-table@~0.3.1:
+ version "0.3.11"
+ resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee"
+ integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==
+ dependencies:
+ colors "1.0.3"
+
cliui@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
@@ -2937,6 +3250,20 @@ colorette@^2.0.16:
resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da"
integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==
+colors@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
+ integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=
+
+combined-stream2@^1.0.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/combined-stream2/-/combined-stream2-1.1.2.tgz#f6e14b7a015666f8c7b0a1fac506240164ac3570"
+ integrity sha1-9uFLegFWZvjHsKH6xQYkAWSsNXA=
+ dependencies:
+ bluebird "^2.8.1"
+ debug "^2.1.1"
+ stream-length "^1.0.1"
+
comma-separated-tokens@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz#d4c25abb679b7751c880be623c1179780fe1dd98"
@@ -2947,6 +3274,21 @@ commander@^2.20.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+commander@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
+ integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+
+commander@~6.2.1:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
+ integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
+
+commander@~8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-8.0.0.tgz#1da2139548caef59bd23e66d18908dfb54b02258"
+ integrity sha512-Xvf85aAtu6v22+E5hfVoLHqyul/jyxh91zvqk/ioJTQuJR7Z78n7H558vMPKanPSRgIEeZemT92I2g9Y8LPbSQ==
+
common-ancestor-path@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7"
@@ -2962,6 +3304,21 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+concat-stream@^1.4.7:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+condense-whitespace@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/condense-whitespace/-/condense-whitespace-1.0.0.tgz#8376d98ef028e6cb2cd2468e28ce42c5c65ab1a9"
+ integrity sha1-g3bZjvAo5sss0kaOKM5CxcZasak=
+
consola@^2.15.3:
version "2.15.3"
resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550"
@@ -3012,6 +3369,17 @@ cross-spawn@^5.1.0:
shebang-command "^1.2.0"
which "^1.2.9"
+cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
@@ -3042,6 +3410,14 @@ css-selector-parser@^1.0.0:
resolved "https://registry.yarnpkg.com/css-selector-parser/-/css-selector-parser-1.4.1.tgz#03f9cb8a81c3e5ab2c51684557d5aaf6d2569759"
integrity sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==
+css-tree@^1.1.2, css-tree@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+ dependencies:
+ mdn-data "2.0.14"
+ source-map "^0.6.1"
+
css-what@^5.0.1, css-what@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe"
@@ -3052,6 +3428,13 @@ cssesc@^3.0.0:
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+csso@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
+ integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
+ dependencies:
+ css-tree "^1.1.2"
+
csstype@^2.6.8:
version "2.6.19"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.19.tgz#feeb5aae89020bb389e1f63669a5ed490e391caa"
@@ -3097,7 +3480,12 @@ dataloader@^1.4.0:
resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8"
integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==
-debug@2.6.9:
+date-fns@^2.28.0:
+ version "2.28.0"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2"
+ integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==
+
+debug@2.6.9, debug@^2.1.1:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
@@ -3165,6 +3553,13 @@ deepmerge@^4.2.2:
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
+default-user-agent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/default-user-agent/-/default-user-agent-1.0.0.tgz#16c46efdcaba3edc45f24f2bd4868b01b7c2adc6"
+ integrity sha1-FsRu/cq6PtxF8k8r1IaLAbfCrcY=
+ dependencies:
+ os-name "~1.0.3"
+
defaults@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
@@ -3204,6 +3599,28 @@ degit@^2.8.4:
resolved "https://registry.yarnpkg.com/degit/-/degit-2.8.4.tgz#3bb9c5c00f157c44724dd4a50724e4aa75a54d38"
integrity sha512-vqYuzmSA5I50J882jd+AbAhQtgK6bdKUJIex1JNfEUPENCgYsxugzKVZlFyMwV4i06MmnV47/Iqi5Io86zf3Ng==
+del-cli@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/del-cli/-/del-cli-3.0.1.tgz#2d27ff260204b5104cadeda86f78f180a4ebe89a"
+ integrity sha512-BLHItGr82rUbHhjMu41d+vw9Md49i81jmZSV00HdTq4t+RTHywmEht/23mNFpUl2YeLYJZJyGz4rdlMAyOxNeg==
+ dependencies:
+ del "^5.1.0"
+ meow "^6.1.1"
+
+del@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7"
+ integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==
+ dependencies:
+ globby "^10.0.1"
+ graceful-fs "^4.2.2"
+ is-glob "^4.0.1"
+ is-path-cwd "^2.2.0"
+ is-path-inside "^3.0.1"
+ p-map "^3.0.0"
+ rimraf "^3.0.0"
+ slash "^3.0.0"
+
del@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952"
@@ -3272,6 +3689,16 @@ detective@^5.2.0:
defined "^1.0.0"
minimist "^1.1.1"
+dev-null@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/dev-null/-/dev-null-0.1.1.tgz#5a205ce3c2b2ef77b6238d6ba179eb74c6a0e818"
+ integrity sha1-WiBc48Ky73e2I41roXnrdMag6Bg=
+
+devtools-protocol@0.0.869402:
+ version "0.0.869402"
+ resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.869402.tgz#03ade701761742e43ae4de5dc188bcd80f156d8d"
+ integrity sha512-VvlVYY+VDJe639yHs5PHISzdWTLL3Aw8rO4cvUtwvoxFd6FHbE4OpHHcde52M6096uYYazAmd4l0o5VuFRO2WA==
+
didyoumean@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
@@ -3341,7 +3768,7 @@ dotenv@^8.1.0:
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==
-duplexer@^0.1.2:
+duplexer@^0.1.2, duplexer@~0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
@@ -3415,11 +3842,28 @@ entities@^3.0.1:
resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
+envinfo@~7.8.1:
+ version "7.8.1"
+ resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
+ integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==
+
eol@^0.9.1:
version "0.9.1"
resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd"
integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==
+eol@~0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/eol/-/eol-0.2.0.tgz#2f6db086a243a46e3e5dbd0e13435c7ebebf09dd"
+ integrity sha1-L22whqJDpG4+Xb0OE0Ncfr6/Cd0=
+
+errno@~0.1.4:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
+ integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
+ dependencies:
+ prr "~1.0.1"
+
error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
@@ -3427,6 +3871,11 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
+errors@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/errors/-/errors-0.2.0.tgz#0f51e889daa3e11b19e7186d11f104aa66eb2403"
+ integrity sha1-D1Hoidqj4RsZ5xhtEfEEqmbrJAM=
+
es-abstract@^1.18.5, es-abstract@^1.19.1:
version "1.19.1"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3"
@@ -3720,7 +4169,7 @@ escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-escape-string-regexp@^1.0.5:
+escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
@@ -3946,6 +4395,11 @@ extend-shallow@^2.0.1:
dependencies:
is-extendable "^0.1.0"
+extend@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-2.0.2.tgz#1b74985400171b85554894459c978de6ef453ab7"
+ integrity sha512-AgFD4VU+lVLP6vjnlNfF7OeInLTyeyckCNPEsuxz1vi786UuK/nk6ynPuhn/h+Ju9++TQyr5EpLRI14fc1QtTQ==
+
extend@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
@@ -3965,6 +4419,17 @@ external-editor@^3.1.0:
iconv-lite "^0.4.24"
tmp "^0.0.33"
+extract-zip@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
+ integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
+ dependencies:
+ debug "^4.1.1"
+ get-stream "^5.1.0"
+ yauzl "^2.10.0"
+ optionalDependencies:
+ "@types/yauzl" "^2.9.1"
+
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
@@ -3975,7 +4440,7 @@ fast-diff@^1.1.2:
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
-fast-glob@^3.2.11, fast-glob@^3.2.7, fast-glob@^3.2.9:
+fast-glob@^3.0.3, fast-glob@^3.2.11, fast-glob@^3.2.7, fast-glob@^3.2.9:
version "3.2.11"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
@@ -4010,6 +4475,13 @@ fastq@^1.6.0:
dependencies:
reusify "^1.0.4"
+fd-slicer@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
+ integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
+ dependencies:
+ pend "~1.2.0"
+
fetch-blob@^3.1.2, fetch-blob@^3.1.4:
version "3.1.4"
resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.4.tgz#e8c6567f80ad7fc22fd302e7dcb72bafde9c1717"
@@ -4030,6 +4502,11 @@ file-uri-to-path@2:
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba"
integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==
+file-url@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/file-url/-/file-url-3.0.0.tgz#247a586a746ce9f7a8ed05560290968afc262a77"
+ integrity sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==
+
filelist@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b"
@@ -4091,6 +4568,22 @@ foreach@^2.0.5:
resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
+form-data2@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/form-data2/-/form-data2-1.0.4.tgz#9f91ebd83003f9e117f94f1ebd72665ae0b49a40"
+ integrity sha512-buz4C3F6/7Vpdxt7dNU/tSfjQO/5z9Pyjfb43VhlVvSos5zVhCcMuW9sF1yJ2FdxZRCD2sWQ9WhqUiYLt+AUVQ==
+ dependencies:
+ bluebird "^2.8.2"
+ combined-stream2 "^1.0.2"
+ debug "^2.1.1"
+ mime "^1.3.4"
+ uuid "^2.0.1"
+
+form-fix-array@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/form-fix-array/-/form-fix-array-1.0.0.tgz#a1347a47e53117ab7bcdbf3e2f3ec91c66769bc8"
+ integrity sha1-oTR6R+UxF6t7zb8+Lz7JHGZ2m8g=
+
formdata-polyfill@^4.0.10:
version "4.0.10"
resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423"
@@ -4219,6 +4712,13 @@ get-own-enumerable-property-symbols@^3.0.0:
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
+get-stream@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
get-stream@^6.0.0, get-stream@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
@@ -4268,7 +4768,7 @@ glob-parent@^6.0.1, glob-parent@^6.0.2:
dependencies:
is-glob "^4.0.3"
-glob@7.2.0, glob@^7.1.3, glob@^7.1.6:
+glob@7.2.0, glob@^7.0.3, glob@^7.1.3, glob@^7.1.6:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
@@ -4297,6 +4797,20 @@ globalyzer@0.1.0:
resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465"
integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==
+globby@^10.0.1:
+ version "10.0.2"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543"
+ integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.0.3"
+ glob "^7.1.3"
+ ignore "^5.1.1"
+ merge2 "^1.2.3"
+ slash "^3.0.0"
+
globby@^11.0.0, globby@^11.0.1, globby@^11.0.4:
version "11.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
@@ -4321,12 +4835,23 @@ globby@^12.0.2:
merge2 "^1.4.1"
slash "^4.0.0"
+globby@~6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
+ integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
+ dependencies:
+ array-union "^1.0.1"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
globrex@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098"
integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==
-graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
+graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4:
version "4.2.9"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
@@ -4363,6 +4888,20 @@ hard-rejection@^2.1.0:
resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883"
integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==
+has-ansi@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e"
+ integrity sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=
+ dependencies:
+ ansi-regex "^0.2.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
has-bigints@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
@@ -4558,6 +5097,19 @@ he@1.2.0:
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+hogan.js@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/hogan.js/-/hogan.js-3.0.2.tgz#4cd9e1abd4294146e7679e41d7898732b02c7bfd"
+ integrity sha1-TNnhq9QpQUbnZ55B14mHMrAse/0=
+ dependencies:
+ mkdirp "0.3.0"
+ nopt "1.0.10"
+
+hoopy@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
+ integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==
+
hosted-git-info@^2.1.4:
version "2.8.9"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
@@ -4573,6 +5125,11 @@ html-void-elements@^2.0.0:
resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f"
integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==
+html_codesniffer@^2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/html_codesniffer/-/html_codesniffer-2.5.1.tgz#d76d124b8f5cd0e58b3c1b142fd095a40573ea28"
+ integrity sha512-vcz0yAaX/OaV6sdNHuT9alBOKkSxYb8h5Yq26dUqgi7XmCgGUSa7U9PiY1PBXQFMjKv1wVPs5/QzHlGuxPDUGg==
+
htmlparser2@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
@@ -4593,6 +5150,11 @@ htmlparser2@^7.1.2:
domutils "^2.8.0"
entities "^3.0.1"
+http-equiv-refresh@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/http-equiv-refresh/-/http-equiv-refresh-1.0.0.tgz#8ec538866042be5f3f7afa737d198d94beb1b07b"
+ integrity sha1-jsU4hmBCvl8/evpzfRmNlL6xsHs=
+
http-errors@1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c"
@@ -4647,6 +5209,11 @@ human-signals@^3.0.1:
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5"
integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==
+humanize-duration@^3.9.1:
+ version "3.27.1"
+ resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.27.1.tgz#2cd4ea4b03bd92184aee6d90d77a8f3d7628df69"
+ integrity sha512-jCVkMl+EaM80rrMrAPl96SGG4NRac53UyI1o/yAzebDntEY6K6/Fj2HOjdPg8omTqIe5Y0wPBai2q5xXrIbarA==
+
iconv-lite@0.4.24, iconv-lite@^0.4.24:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
@@ -4669,7 +5236,7 @@ ignore@^4.0.6:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
-ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0:
+ignore@^5.1.1, ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
@@ -4794,6 +5361,11 @@ is-boolean-object@^1.1.0:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
+is-browser@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-browser/-/is-browser-2.1.0.tgz#fc084d59a5fced307d6708c59356bad7007371a9"
+ integrity sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ==
+
is-buffer@^2.0.0:
version "2.0.5"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
@@ -4811,7 +5383,7 @@ is-ci@^3.0.1:
dependencies:
ci-info "^3.2.0"
-is-core-module@^2.8.1:
+is-core-module@^2.8.0, is-core-module@^2.8.1:
version "2.8.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
@@ -4906,12 +5478,17 @@ is-obj@^1.0.1:
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+is-object@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf"
+ integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==
+
is-path-cwd@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
-is-path-inside@^3.0.2:
+is-path-inside@^3.0.1, is-path-inside@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
@@ -4954,6 +5531,11 @@ is-shared-array-buffer@^1.0.1:
resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6"
integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==
+is-stream@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
is-stream@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
@@ -4964,7 +5546,7 @@ is-stream@^3.0.0:
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
-is-string@^1.0.5, is-string@^1.0.7:
+is-string@^1.0.4, is-string@^1.0.5, is-string@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
@@ -5013,6 +5595,11 @@ is-windows@^1.0.0:
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+is@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/is/-/is-3.3.0.tgz#61cff6dd3c4193db94a3d62582072b44e5645d79"
+ integrity sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==
+
isarray@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
@@ -5023,6 +5610,11 @@ isarray@~1.0.0:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+isbot@^2.0.0:
+ version "2.5.7"
+ resolved "https://registry.yarnpkg.com/isbot/-/isbot-2.5.7.tgz#bc98f22200d1a925bc933c7e4fb6eca8dde70f7b"
+ integrity sha512-8P+oGrRDvuCpDdovK9oD4skHmSXu56bsK17K2ovXrkW7Ic4H9Y4AqnUUqlXqZxcqQ2358kid9Rb+fbLH5yeeUw==
+
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -5082,6 +5674,11 @@ jsesc@~0.5.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+json-parse-better-errors@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
json-parse-even-better-errors@^2.3.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
@@ -5155,7 +5752,7 @@ kleur@^3.0.3:
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
-kleur@^4.0.3, kleur@^4.1.1, kleur@^4.1.4:
+kleur@^4.0.3, kleur@^4.1.1, kleur@^4.1.4, kleur@~4.1.4:
version "4.1.4"
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d"
integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==
@@ -5191,12 +5788,33 @@ lilconfig@^2.0.4:
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082"
integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==
+limited-request-queue@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/limited-request-queue/-/limited-request-queue-2.0.0.tgz#14c7c120b138060b19a2a1030abaf6693572650d"
+ integrity sha1-FMfBILE4BgsZoqEDCrr2aTVyZQ0=
+ dependencies:
+ is-browser "^2.0.1"
+ parse-domain "~0.2.0"
+
lines-and-columns@^1.1.6:
version "1.2.4"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
-lit-element@^3.1.0, lit-element@^3.2.0:
+link-types@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/link-types/-/link-types-1.1.0.tgz#af65e59db52e70c1ffb18ac4c3cb056bfe796830"
+ integrity sha1-r2XlnbUucMH/sYrEw8sFa/55aDA=
+
+lit-element@^3.1.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.1.2.tgz#fe29b9a362cf6c0de93c7769f29f1b6c37c79e15"
+ integrity sha512-5VLn5a7anAFH7oz6d7TRG3KiTZQ5GEFsAgOKB8Yc+HDyuDUGOT2cL1CYTz/U4b/xlJxO+euP14pyji+z3Z3kOg==
+ dependencies:
+ "@lit/reactive-element" "^1.1.0"
+ lit-html "^2.1.0"
+
+lit-element@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.2.0.tgz#9c981c55dfd9a8f124dc863edb62cc529d434db7"
integrity sha512-HbE7yt2SnUtg5DCrWt028oaU4D5F4k/1cntAFHTkzY8ZIa8N0Wmu92PxSxucsQSOXlODFrICkQ5x/tEshKi13g==
@@ -5220,6 +5838,16 @@ lit@^2.0.0, lit@^2.1.0, lit@^2.1.3:
lit-element "^3.2.0"
lit-html "^2.2.0"
+load-json-file@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
+ integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^4.0.0"
+ pify "^3.0.0"
+ strip-bom "^3.0.0"
+
load-yaml-file@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/load-yaml-file/-/load-yaml-file-0.2.0.tgz#af854edaf2bea89346c07549122753c07372f64d"
@@ -5254,6 +5882,11 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
+lodash.clonedeep@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
+
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
@@ -5274,7 +5907,7 @@ lodash.startcase@^4.4.0:
resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8"
integrity sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg=
-lodash@^4.17.20, lodash@^4.17.21:
+lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -5306,7 +5939,7 @@ loupe@^2.3.1:
dependencies:
get-func-name "^2.0.0"
-lru-cache@^4.0.1:
+lru-cache@4.1.x, lru-cache@^4.0.1:
version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
@@ -5350,6 +5983,11 @@ markdown-table@^3.0.0:
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.2.tgz#9b59eb2c1b22fe71954a65ff512887065a7bb57c"
integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==
+maybe-callback@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/maybe-callback/-/maybe-callback-2.1.0.tgz#8afa0ba7b691a7ab123e7f12f65e32bb5d1f8243"
+ integrity sha1-ivoLp7aRp6sSPn8S9l4yu10fgkM=
+
mdast-util-definitions@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz#b6d10ef00a3c4cf191e8d9a5fa58d7f4a366f817"
@@ -5499,12 +6137,22 @@ mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0:
resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9"
integrity sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==
+mdn-data@2.0.14:
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
+ integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+
mdurl@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
-meow@^6.0.0:
+memorystream@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
+ integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
+
+meow@^6.0.0, meow@^6.1.1:
version "6.1.1"
resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467"
integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==
@@ -5526,7 +6174,7 @@ merge-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-merge2@^1.3.0, merge2@^1.4.1:
+merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
@@ -5872,7 +6520,7 @@ micromorph@^0.1.1:
resolved "https://registry.yarnpkg.com/micromorph/-/micromorph-0.1.1.tgz#1772b07f1be6cae10b3210a0f84fe5364987f029"
integrity sha512-VIAYxW6D9yOkcMJK/G6xS1fh8r1gD+mmD4VLPKki7Xqzfrq1qlCfQAA6ITIbUnLDAHv8UpPPhCWzFJ29fiUjZQ==
-mime@1.6.0:
+mime@1.6.0, mime@^1.3.4:
version "1.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
@@ -5925,7 +6573,7 @@ minimist-options@^4.0.2:
is-plain-obj "^1.1.0"
kind-of "^6.0.3"
-minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5:
+minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
@@ -5955,6 +6603,11 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
+mkdirp@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
+ integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=
+
mkdirp@^0.5.1:
version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
@@ -5997,6 +6650,11 @@ mocha@^9.1.3:
yargs-parser "20.2.4"
yargs-unparser "2.0.0"
+morphdom@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/morphdom/-/morphdom-2.6.1.tgz#e868e24f989fa3183004b159aed643e628b4306e"
+ integrity sha512-Y8YRbAEP3eKykroIBWrjcfMw7mmwJfjhqdpSvoqinu8Y702nAwikpXcNFDiIkyvfCLxLM9Wu95RZqo4a9jFBaA==
+
mri@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b"
@@ -6052,6 +6710,11 @@ netmask@^2.0.1:
resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7"
integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
nlcst-to-string@^2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz#9315dfab80882bbfd86ddf1b706f53622dc400cc"
@@ -6081,7 +6744,7 @@ node-domexception@^1.0.0:
resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
-node-fetch@*, node-fetch@^3.0.0:
+node-fetch@*, node-fetch@^3.0.0, node-fetch@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.0.tgz#59390db4e489184fa35d4b74caf5510e8dfbaf3b"
integrity sha512-8xeimMwMItMw8hRrOl3C9/xzU49HV/yE6ORew/l+dxWimO5A4Ra8ld2rerlJvc/O7et5Z1zrWsPX43v1QBjCxw==
@@ -6090,7 +6753,7 @@ node-fetch@*, node-fetch@^3.0.0:
fetch-blob "^3.1.4"
formdata-polyfill "^4.0.10"
-node-fetch@^2.5.0, node-fetch@^2.6.0, node-fetch@^2.6.7:
+node-fetch@^2.5.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7, node-fetch@~2.6.1:
version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
@@ -6102,7 +6765,43 @@ node-releases@^2.0.2:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01"
integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==
-normalize-package-data@^2.5.0:
+node.extend@~2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/node.extend/-/node.extend-2.0.2.tgz#b4404525494acc99740f3703c496b7d5182cc6cc"
+ integrity sha512-pDT4Dchl94/+kkgdwyS2PauDFjZG0Hk0IcHIB+LkW27HLDtdoeMxHTxZh39DYbPP8UflWXWj9JcdDozF+YDOpQ==
+ dependencies:
+ has "^1.0.3"
+ is "^3.2.1"
+
+nopt@1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
+ integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=
+ dependencies:
+ abbrev "1"
+
+nopt@^3.0.1:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+ integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
+ dependencies:
+ abbrev "1"
+
+nopter@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/nopter/-/nopter-0.3.0.tgz#b9690e6fab8f256b37e4e7ccd23e2b38450cc71f"
+ integrity sha1-uWkOb6uPJWs35OfM0j4rOEUMxx8=
+ dependencies:
+ caller-path "~0.1.0"
+ camelcase "^1.0.2"
+ chalk "~0.5.1"
+ cli-table "~0.3.1"
+ eol "~0.2.0"
+ nopt "^3.0.1"
+ object-assign "^2.0.0"
+ splitargs "~0.0.3"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
@@ -6127,6 +6826,21 @@ not@^0.1.0:
resolved "https://registry.yarnpkg.com/not/-/not-0.1.0.tgz#c9691c1746c55dcfbe54cbd8bd4ff041bc2b519d"
integrity sha1-yWkcF0bFXc++VMvYvU/wQbwrUZ0=
+npm-run-all@^4.1.5:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
+ integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ chalk "^2.4.1"
+ cross-spawn "^6.0.5"
+ memorystream "^0.3.1"
+ minimatch "^3.0.4"
+ pidtree "^0.3.0"
+ read-pkg "^3.0.0"
+ shell-quote "^1.6.1"
+ string.prototype.padend "^3.0.0"
+
npm-run-path@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
@@ -6163,7 +6877,12 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-object-assign@^4.1.0, object-assign@^4.1.1:
+object-assign@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa"
+ integrity sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=
+
+object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@@ -6253,11 +6972,26 @@ optionator@^0.9.1:
type-check "^0.4.0"
word-wrap "^1.2.3"
+os-name@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/os-name/-/os-name-1.0.3.tgz#1b379f64835af7c5a7f498b357cb95215c159edf"
+ integrity sha1-GzefZINa98Wn9JizV8uVIVwVnt8=
+ dependencies:
+ osx-release "^1.0.0"
+ win-release "^1.0.0"
+
os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+osx-release@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/osx-release/-/osx-release-1.1.0.tgz#f217911a28136949af1bf9308b241e2737d3cd6c"
+ integrity sha1-8heRGigTaUmvG/kwiyQeJzfTzWw=
+ dependencies:
+ minimist "^1.1.0"
+
outdent@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff"
@@ -6303,6 +7037,13 @@ p-map@^2.0.0:
resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
+p-map@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d"
+ integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==
+ dependencies:
+ aggregate-error "^3.0.0"
+
p-map@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
@@ -6310,11 +7051,50 @@ p-map@^4.0.0:
dependencies:
aggregate-error "^3.0.0"
+p-timeout@~4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-4.1.0.tgz#788253c0452ab0ffecf18a62dff94ff1bd09ca0a"
+ integrity sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==
+
p-try@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+pa11y-ci@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/pa11y-ci/-/pa11y-ci-3.0.1.tgz#8de1fbf96544d5af66c53a832349b3a9e51b9f7a"
+ integrity sha512-DUtEIhEG3Ofds7qRuplq0DdCb9doILRlzcRctFNzo4QUNmVy4iZfM3u51A9cqoPo2irCJZoo5BzfiFrcriY2IQ==
+ dependencies:
+ async "~2.6.3"
+ cheerio "~1.0.0-rc.10"
+ commander "~6.2.1"
+ globby "~6.1.0"
+ kleur "~4.1.4"
+ lodash "~4.17.21"
+ node-fetch "~2.6.1"
+ pa11y "~6.1.0"
+ protocolify "~3.0.0"
+ puppeteer "~9.1.1"
+ wordwrap "~1.0.0"
+
+pa11y@~6.1.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/pa11y/-/pa11y-6.1.1.tgz#b204ecd172a664de4ade56f31a58fe5b3342800e"
+ integrity sha512-2NzqA3D9CUlDWj8WuOI4fM2P0qM1d/IUxsRRpzCOfDT5eMR1oEgmUwW2TAk+f90ff/GVck0BewdYT4et4BANew==
+ dependencies:
+ axe-core "^4.0.2"
+ bfj "~7.0.2"
+ commander "~8.0.0"
+ envinfo "~7.8.1"
+ hogan.js "^3.0.2"
+ html_codesniffer "^2.5.1"
+ kleur "~4.1.4"
+ node.extend "~2.0.2"
+ p-timeout "~4.1.0"
+ puppeteer "~9.1.1"
+ semver "~7.3.5"
+
pac-proxy-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz#b718f76475a6a5415c2efbe256c1c971c84f635e"
@@ -6346,6 +7126,11 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
+parse-domain@~0.2.0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/parse-domain/-/parse-domain-0.2.2.tgz#188989b1e2e7398bff3c4f4fd7dca157eb51fac1"
+ integrity sha1-GImJseLnOYv/PE9P19yhV+tR+sE=
+
parse-entities@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.0.tgz#f67c856d4e3fe19b1a445c3fabe78dcdc1053eeb"
@@ -6360,6 +7145,14 @@ parse-entities@^4.0.0:
is-decimal "^2.0.0"
is-hexadecimal "^2.0.0"
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
parse-json@^5.0.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
@@ -6386,6 +7179,13 @@ parse5-htmlparser2-tree-adapter@^6.0.1:
dependencies:
parse5 "^6.0.1"
+parse5@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
+ integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==
+ dependencies:
+ "@types/node" "*"
+
parse5@^6.0.0, parse5@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
@@ -6406,6 +7206,11 @@ path-is-absolute@^1.0.0:
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
path-key@^3.0.0, path-key@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
@@ -6426,6 +7231,13 @@ path-to-regexp@^6.2.0:
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.0.tgz#f7b3803336104c346889adece614669230645f38"
integrity sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==
+path-type@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
+ integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+ dependencies:
+ pify "^3.0.0"
+
path-type@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
@@ -6441,6 +7253,11 @@ pathval@^1.1.1:
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==
+pend@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+ integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
+
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
@@ -6451,11 +7268,38 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+pidtree@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
+ integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
pify@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
pkg-dir@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
@@ -6558,6 +7402,11 @@ prelude-ls@~1.1.2:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+prepend-http@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-3.0.1.tgz#3e724d58fd5867465b300bb9615009fa2f8ee3b6"
+ integrity sha512-BLxfZh+m6UiAiCPZFJ4+vYoL7NrRs5XgCTRrjseATAggXhdZKKxn+JUNmuVYWY23bDHgaEHodxw8mnmtVEDtHw==
+
prettier-linter-helpers@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
@@ -6565,12 +7414,21 @@ prettier-linter-helpers@^1.0.0:
dependencies:
fast-diff "^1.1.2"
+prettier-plugin-astro@^0.0.12:
+ version "0.0.12"
+ resolved "https://registry.yarnpkg.com/prettier-plugin-astro/-/prettier-plugin-astro-0.0.12.tgz#5f2ece3e3d18c4cd8660b19ebf39888e159d8eae"
+ integrity sha512-ZSNvHuyQ+fxgqA4qoiOf2FvN8FdWcBrAmnik3gPL466TFtMcOV2hVNVVErBcnG/qMyPf7WLwPvBLtTyWpDEUHg==
+ dependencies:
+ "@astrojs/parser" "^0.22.0"
+ prettier "^2.4.1"
+ sass-formatter "^0.7.2"
+
prettier@^1.19.1:
version "1.19.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
-prettier@^2.4.1:
+prettier@^2.4.1, prettier@^2.5.1:
version "2.5.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a"
integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==
@@ -6600,6 +7458,11 @@ process-nextick-args@~2.0.0:
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+progress@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
prompts@^2.4.1:
version "2.4.2"
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
@@ -6613,6 +7476,14 @@ property-information@^6.0.0:
resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22"
integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==
+protocolify@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/protocolify/-/protocolify-3.0.0.tgz#addf3f90b4f2b86b65cdaf260a761e2bf556854e"
+ integrity sha512-PuvDJOkKJMVQx8jSNf8E5g0bJw/UTKm30mTjFHg4N30c8sefgA5Qr/f8INKqYBKfvP/MUSJrj+z1Smjbq4/3rQ==
+ dependencies:
+ file-url "^3.0.0"
+ prepend-http "^3.0.0"
+
proxy-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b"
@@ -6627,16 +7498,26 @@ proxy-agent@^5.0.0:
proxy-from-env "^1.0.0"
socks-proxy-agent "^5.0.0"
-proxy-from-env@^1.0.0:
+proxy-from-env@^1.0.0, proxy-from-env@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
+
pseudomap@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
+psl@^1.1.28:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
+ integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
+
pump@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
@@ -6645,11 +7526,29 @@ pump@^3.0.0:
end-of-stream "^1.1.0"
once "^1.3.1"
-punycode@^2.1.0:
+punycode@^2.1.0, punycode@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+puppeteer@~9.1.1:
+ version "9.1.1"
+ resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-9.1.1.tgz#f74b7facf86887efd6c6b9fabb7baae6fdce012c"
+ integrity sha512-W+nOulP2tYd/ZG99WuZC/I5ljjQQ7EUw/jQGcIb9eu8mDlZxNY2SgcJXTLG9h5gRvqA3uJOe4hZXYsd3EqioMw==
+ dependencies:
+ debug "^4.1.0"
+ devtools-protocol "0.0.869402"
+ extract-zip "^2.0.0"
+ https-proxy-agent "^5.0.0"
+ node-fetch "^2.6.1"
+ pkg-dir "^4.2.0"
+ progress "^2.0.1"
+ proxy-from-env "^1.1.0"
+ rimraf "^3.0.2"
+ tar-fs "^2.0.0"
+ unbzip2-stream "^1.3.3"
+ ws "^7.2.3"
+
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@@ -6665,6 +7564,14 @@ quick-lru@^5.1.1:
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
+quicklink@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/quicklink/-/quicklink-2.2.0.tgz#011f47d4e5f67622d9d49f02c74c913852b01f8b"
+ integrity sha512-tfleXCZvxDppyZFqSDsbkS5aKemtA0ealvguxjp3tzXHMo+pzxrWtOh+6dnYK/mXzEYM1QiNhGttcS/W/T3JXA==
+ dependencies:
+ route-manifest "^1.0.0"
+ throttles "^1.0.0"
+
randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@@ -6723,6 +7630,15 @@ read-pkg-up@^7.0.1:
read-pkg "^5.2.0"
type-fest "^0.8.1"
+read-pkg@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
+ integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
+ dependencies:
+ load-json-file "^4.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^3.0.0"
+
read-pkg@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
@@ -6753,7 +7669,7 @@ readable-stream@1.1.x:
isarray "0.0.1"
string_decoder "~0.10.x"
-readable-stream@^2.0.6:
+readable-stream@^2.0.6, readable-stream@^2.2.2:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
@@ -6775,6 +7691,16 @@ readable-stream@^3.1.1, readable-stream@^3.4.0:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
+readable-stream@~1.0.17:
+ version "1.0.34"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
+ integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@@ -6822,6 +7748,11 @@ regexp.prototype.flags@^1.3.1:
call-bind "^1.0.2"
define-properties "^1.1.3"
+regexparam@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f"
+ integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==
+
regexpp@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
@@ -6902,6 +7833,17 @@ rehype-toc@^3.0.2:
dependencies:
"@jsdevtools/rehype-toc" "3.0.2"
+remark-autolink-headings@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/remark-autolink-headings/-/remark-autolink-headings-7.0.1.tgz#1d8528ea8783b828200d13c055ec2d5f2cae5060"
+ integrity sha512-a1BIwoJ0cSnX+sPp5u3AFULBFWHGYBt57Fo4a+7IlGiJOQxs8b7uYAE5Iu26Ocl7Y5cvinZy3FaGVruLCKg6vA==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/mdast" "^3.0.0"
+ extend "^3.0.0"
+ unified "^10.0.0"
+ unist-util-visit "^4.0.0"
+
remark-code-titles@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/remark-code-titles/-/remark-code-titles-0.1.2.tgz#ae41b47c517eae4084c761a59a60df5f0bd54aa8"
@@ -6972,7 +7914,23 @@ resolve-from@^5.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
-resolve@^1.10.0, resolve@^1.10.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0:
+resolve-pkg@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-2.0.0.tgz#ac06991418a7623edc119084edc98b0e6bf05a41"
+ integrity sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==
+ dependencies:
+ resolve-from "^5.0.0"
+
+resolve@^1.10.0, resolve@^1.10.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0:
+ version "1.21.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f"
+ integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==
+ dependencies:
+ is-core-module "^2.8.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+resolve@^1.22.0:
version "1.22.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
@@ -7032,13 +7990,36 @@ rimraf@^2.5.2:
dependencies:
glob "^7.1.3"
-rimraf@^3.0.2:
+rimraf@^3.0.0, rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
glob "^7.1.3"
+robot-directives@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/robot-directives/-/robot-directives-0.3.0.tgz#174fb1ffc2a9b97877301e87c89b395f429d1f65"
+ integrity sha1-F0+x/8KpuXh3MB6HyJs5X0KdH2U=
+ dependencies:
+ isbot "^2.0.0"
+ useragent "^2.1.8"
+
+robots-txt-guard@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/robots-txt-guard/-/robots-txt-guard-0.1.1.tgz#0dedec2dc325338989bb14158bef1f8539b705d4"
+ integrity sha512-6+nGkE6c2dI9/dmhmNcoMKVwJxlA6sgN/XNo0rm6LLdA0hnj4YkpgrZdhMPl58gJkAqeiHlf4+8tJcLM1tv1Ew==
+
+robots-txt-parse@~0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/robots-txt-parse/-/robots-txt-parse-0.0.4.tgz#f7d1f323f79921d7e9c6c4bbd25048f6e9810d71"
+ integrity sha1-99HzI/eZIdfpxsS70lBI9umBDXE=
+ dependencies:
+ bluebird "^2.3.5"
+ split "^0.3.0"
+ stream-combiner "^0.2.1"
+ through "^2.3.4"
+
rollup-plugin-terser@^7.0.0:
version "7.0.2"
resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d"
@@ -7056,6 +8037,13 @@ rollup@^2.43.1, rollup@^2.59.0, rollup@^2.60.0, rollup@^2.64.0:
optionalDependencies:
fsevents "~2.3.2"
+route-manifest@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/route-manifest/-/route-manifest-1.0.0.tgz#0155513f3cd158c18827413845ab1a8ec2ad15e1"
+ integrity sha512-qn0xJr4nnF4caj0erOLLAHYiNyzqhzpUbgDQcEHrmBoG4sWCDLnIXLH7VccNSxe9cWgbP2Kw/OjME+eH3CeRSA==
+ dependencies:
+ regexparam "^1.3.0"
+
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
@@ -7063,6 +8051,11 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
+s.color@0.0.15:
+ version "0.0.15"
+ resolved "https://registry.yarnpkg.com/s.color/-/s.color-0.0.15.tgz#6b32cd22d8dba95703a5122ddede2020a1560186"
+ integrity sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==
+
sade@^1.7.3:
version "1.8.1"
resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701"
@@ -7095,7 +8088,24 @@ sander@^0.5.0:
mkdirp "^0.5.1"
rimraf "^2.5.2"
-sass@^1.49.0, sass@^1.49.8:
+sass-formatter@^0.7.2:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/sass-formatter/-/sass-formatter-0.7.3.tgz#713a91d3a29d6ae0bed425b997ed8ccd6d6b0231"
+ integrity sha512-juMI+CLPFGDcxF6Cd2wCL4tyiQDp5Jvqrlwpzrydvf3NiJeX5ja8zJufCt/EGxxGUJEbzd18S/Ie1P26QINAWg==
+ dependencies:
+ suf-log "^2.5.3"
+ suf-regex "^0.3.4"
+
+sass@^1.49.0:
+ version "1.49.0"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.0.tgz#65ec1b1d9a6bc1bae8d2c9d4b392c13f5d32c078"
+ integrity sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==
+ dependencies:
+ chokidar ">=3.0.0 <4.0.0"
+ immutable "^4.0.0"
+ source-map-js ">=0.6.2 <2.0.0"
+
+sass@^1.49.8:
version "1.49.9"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.9.tgz#b15a189ecb0ca9e24634bae5d1ebc191809712f9"
integrity sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==
@@ -7120,7 +8130,7 @@ section-matter@^1.0.0:
extend-shallow "^2.0.1"
kind-of "^6.0.0"
-"semver@2 || 3 || 4 || 5", semver@^5.4.1:
+"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.4.1, semver@^5.5.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -7135,7 +8145,7 @@ semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-semver@^7.3.5:
+semver@^7.3.5, semver@~7.3.5:
version "7.3.5"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
@@ -7223,6 +8233,11 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+shell-quote@^1.6.1:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123"
+ integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==
+
shiki@^0.10.0:
version "0.10.1"
resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.10.1.tgz#6f9a16205a823b56c072d0f1a0bcd0f2646bef14"
@@ -7312,6 +8327,11 @@ smartwrap@^1.2.3:
wcwidth "^1.0.1"
yargs "^15.1.0"
+smartypants@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/smartypants/-/smartypants-0.1.6.tgz#976d23dcccae83d56da93d59db1ba76838c976f7"
+ integrity sha512-zGXh+Q6Y3OPTLM5x2HxAIkEAj4ZcePftmIOdIYozv2T+m03Sp5R4YppczKuo6IdnSMc99U+Wgvy8Mil0eeep7g==
+
socks-proxy-agent@5, socks-proxy-agent@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e"
@@ -7431,6 +8451,18 @@ spdx-license-ids@^3.0.0:
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95"
integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==
+split@^0.3.0:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
+ integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=
+ dependencies:
+ through "2"
+
+splitargs@~0.0.3:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/splitargs/-/splitargs-0.0.7.tgz#fe9f7ae657371b33b10cb80da143cf8249cf6b3b"
+ integrity sha1-/p965lc3GzOxDLgNoUPPgknPazs=
+
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
@@ -7441,6 +8473,11 @@ srcset-parse@^1.1.0:
resolved "https://registry.yarnpkg.com/srcset-parse/-/srcset-parse-1.1.0.tgz#73f787f38b73ede2c5af775e0a3465579488122b"
integrity sha512-JWp4cG2eybkvKA1QUHGoNK6JDEYcOnSuhzNGjZuYUPqXreDl/VkkvP2sZW7Rmh+icuCttrR9ccb2WPIazyM/Cw==
+stable@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
statuses@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
@@ -7451,6 +8488,21 @@ statuses@2.0.1:
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+stream-combiner@^0.2.1:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858"
+ integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=
+ dependencies:
+ duplexer "~0.1.1"
+ through "~2.3.4"
+
+stream-length@^1.0.1, stream-length@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/stream-length/-/stream-length-1.0.2.tgz#8277f3cbee49a4daabcfdb4e2f4a9b5e9f2c9f00"
+ integrity sha1-gnfzy+5JpNqrz9tOL0qbXp8snwA=
+ dependencies:
+ bluebird "^2.6.2"
+
stream-transform@^2.1.3:
version "2.1.3"
resolved "https://registry.yarnpkg.com/stream-transform/-/stream-transform-2.1.3.tgz#a1c3ecd72ddbf500aa8d342b0b9df38f5aa598e3"
@@ -7499,6 +8551,15 @@ string.prototype.matchall@^4.0.6:
regexp.prototype.flags "^1.3.1"
side-channel "^1.0.4"
+string.prototype.padend@^3.0.0:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1"
+ integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.1"
+
string.prototype.trimend@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80"
@@ -7551,6 +8612,13 @@ stringify-object@^3.3.0:
is-obj "^1.0.1"
is-regexp "^1.0.0"
+strip-ansi@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220"
+ integrity sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=
+ dependencies:
+ ansi-regex "^0.2.1"
+
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
@@ -7631,6 +8699,20 @@ style-to-object@^0.3.0:
dependencies:
inline-style-parser "0.1.1"
+suf-log@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/suf-log/-/suf-log-2.5.3.tgz#0919a7fceea532a99b578c97814c4e335b2d64d1"
+ integrity sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==
+ dependencies:
+ s.color "0.0.15"
+
+suf-regex@^0.3.4:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/suf-regex/-/suf-regex-0.3.4.tgz#8d1e0cafe1646755264895914cf44442a1202132"
+ integrity sha512-2Txjq2T4BrNKM53ACN8ZXzMulrL2ILDpTwWBy/bXX+gYALWB7pGkCVmCrj/TZrFgGWgmujdXoWmYfeyY2Ky4/g==
+ dependencies:
+ del-cli "^3.0.0"
+
supports-color@8.1.1:
version "8.1.1"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
@@ -7638,6 +8720,16 @@ supports-color@8.1.1:
dependencies:
has-flag "^4.0.0"
+supports-color@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
+ integrity sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@@ -7686,6 +8778,19 @@ svelte@^3.46.4:
resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.46.4.tgz#0c46bc4a3e20a2617a1b7dc43a722f9d6c084a38"
integrity sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg==
+svgo@^2.8.0:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
+ integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
+ dependencies:
+ "@trysound/sax" "0.2.0"
+ commander "^7.2.0"
+ css-select "^4.1.3"
+ css-tree "^1.1.3"
+ csso "^4.2.0"
+ picocolors "^1.0.0"
+ stable "^0.1.8"
+
tailwindcss@^3.0.5:
version "3.0.23"
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.0.23.tgz#c620521d53a289650872a66adfcb4129d2200d10"
@@ -7781,6 +8886,40 @@ text-table@^0.2.0:
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+throttles@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/throttles/-/throttles-1.0.1.tgz#3abdcde28df88d5eddf7e57cad8da35bd403ddd0"
+ integrity sha512-fab7Xg+zELr9KOv4fkaBoe/b3L0GMGLd0IBSCn16GoE/Qx6/OfCr1eGNyEcDU2pUA79qQfZ8kPQWlRuok4YwTw==
+
+through2-sink@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/through2-sink/-/through2-sink-1.0.0.tgz#5f106bba1d7330dad3cba5c0ab1863923256c399"
+ integrity sha1-XxBruh1zMNrTy6XAqxhjkjJWw5k=
+ dependencies:
+ through2 "~0.5.1"
+ xtend "~3.0.0"
+
+through2-spy@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/through2-spy/-/through2-spy-1.2.0.tgz#9c891ca9ca40e1e1e4cf31e1ac57f94cc9d248cb"
+ integrity sha1-nIkcqcpA4eHkzzHhrFf5TMnSSMs=
+ dependencies:
+ through2 "~0.5.1"
+ xtend "~3.0.0"
+
+through2@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz#dfdd012eb9c700e2323fd334f38ac622ab372da7"
+ integrity sha1-390BLrnHAOIyP9M084rGIqs3Lac=
+ dependencies:
+ readable-stream "~1.0.17"
+ xtend "~3.0.0"
+
+through@2, through@^2.3.4, through@^2.3.8, through@~2.3.4:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
tiny-glob@^0.2.8:
version "0.2.9"
resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2"
@@ -7789,7 +8928,7 @@ tiny-glob@^0.2.8:
globalyzer "0.1.0"
globrex "^0.1.2"
-tmp@^0.0.33:
+tmp@0.0.x, tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
@@ -7818,6 +8957,14 @@ totalist@^1.0.0:
resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df"
integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==
+tough-cookie@^2.3.1:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
tr46@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
@@ -7840,6 +8987,11 @@ trough@^2.0.0:
resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876"
integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==
+tryer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
+ integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
+
ts-morph@^12.0.0:
version "12.2.0"
resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-12.2.0.tgz#3332319cecd44aff0b7b410f1fe39637499b1a1b"
@@ -8025,6 +9177,11 @@ type-fest@^0.8.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
typescript@4.5.2:
version "4.5.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998"
@@ -8045,6 +9202,14 @@ unbox-primitive@^1.0.1:
has-symbols "^1.0.2"
which-boxed-primitive "^1.0.2"
+unbzip2-stream@^1.3.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7"
+ integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==
+ dependencies:
+ buffer "^5.2.1"
+ through "^2.3.8"
+
unconfig@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/unconfig/-/unconfig-0.2.2.tgz#08742355bdadb8cf9d1f1870a971fec87f38726e"
@@ -8263,6 +9428,30 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
+urlcache@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/urlcache/-/urlcache-0.7.0.tgz#3ff6a1e10b3d200aba132efc9f41dc1ad6d91b80"
+ integrity sha512-xOW4t6wJDT07+VunsHwePemyXXRidCSOZ/1RIILJi2XnB+81FA5H0MRvS63/7joTWjGLajcJJGvR5odpbkV6hw==
+ dependencies:
+ urlobj "0.0.11"
+
+urlobj@0.0.11:
+ version "0.0.11"
+ resolved "https://registry.yarnpkg.com/urlobj/-/urlobj-0.0.11.tgz#ddd3060876ae1cf0ff9e38a91d0574332b73794c"
+ integrity sha512-Ncck0WWtuFBbZhSYwKjK1AU2V51V98P/KHUPkaEc+mFy4xkpAHFNyVQT+S5SgtsJAr94e4wiKUucJSfasV2kBw==
+ dependencies:
+ is-object "^1.0.1"
+ is-string "^1.0.4"
+ object-assign "^4.1.1"
+
+useragent@^2.1.8:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972"
+ integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==
+ dependencies:
+ lru-cache "4.1.x"
+ tmp "0.0.x"
+
util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
@@ -8280,6 +9469,11 @@ util@^0.12.0:
safe-buffer "^5.1.2"
which-typed-array "^1.1.2"
+uuid@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
+ integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=
+
uvu@^0.5.0, uvu@^0.5.1:
version "0.5.3"
resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.3.tgz#3d83c5bc1230f153451877bfc7f4aea2392219ae"
@@ -8575,11 +9769,23 @@ wide-align@^1.1.0:
dependencies:
string-width "^1.0.2 || 2 || 3 || 4"
+win-release@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209"
+ integrity sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=
+ dependencies:
+ semver "^5.0.1"
+
word-wrap@^1.2.3, word-wrap@~1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+wordwrap@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+ integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
+
workbox-background-sync@6.5.0:
version "6.5.0"
resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.0.tgz#50ba6bf19c71d21be29bb15ba0f317df7cfa8f44"
@@ -8766,6 +9972,11 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+ws@^7.2.3:
+ version "7.5.7"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
+ integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
+
xregexp@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943"
@@ -8776,6 +9987,11 @@ xtend@^4.0.2:
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+xtend@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a"
+ integrity sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=
+
y18n@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
@@ -8869,6 +10085,14 @@ yargs@^15.1.0:
y18n "^4.0.0"
yargs-parser "^18.1.2"
+yauzl@^2.10.0:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
+ integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
+ dependencies:
+ buffer-crc32 "~0.2.3"
+ fd-slicer "~1.1.0"
+
yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"