From 7a9061f29d60025202dfbeb8274e811eca9f2e8d Mon Sep 17 00:00:00 2001 From: Eamon Burns Date: Fri, 14 Aug 2026 12:59:46 -0700 Subject: [PATCH 01/11] feat: initial basic site --- .gitignore | 1 + .zine.ziggy-schema | 166 ++++++++++++ 0.5.0/docs/index.md | 53 ---- assets/Temml-Local.css | 249 ++++++++++++++++++ assets/Temml.woff2 | Bin 0 -> 9404 bytes assets/highlight.css | 37 +++ assets/render-mathtex.js | 8 + assets/style.css | 94 +++++++ assets/temml.min.js | 1 + assets/under-construction.gif | Bin 0 -> 2583 bytes content/.smd.ziggy-schema | 83 ++++++ .../0.5.0}/docs/.vuepress/config.ts | 0 .../0.5.0}/docs/.vuepress/dist/.DS_Store | Bin .../0.5.0}/docs/.vuepress/dist/404.html | 0 .../dist/assets/404.html-60b35caa.js | 0 .../dist/assets/404.html-81dcbf04.js | 0 .../dist/assets/api.html-664752d9.js | 0 .../dist/assets/api.html-782c08dd.js | 0 .../.vuepress/dist/assets/app-fdd7d3c1.js | 0 .../dist/assets/back-to-top-8efcbe56.svg | 0 .../dist/assets/buffer.html-b9ff57c6.js | 0 .../dist/assets/buffer.html-f0bbadca.js | 0 .../building-installing.html-b942c545.js | 0 .../building-installing.html-f67292e3.js | 0 .../calling-native-code.html-caf3c7fd.js | 0 .../calling-native-code.html-d15d2b69.js | 0 .../dist/assets/control-flow.html-369e24d4.js | 0 .../dist/assets/control-flow.html-b4dad974.js | 0 .../dist/assets/crypto.html-03686c71.js | 0 .../dist/assets/crypto.html-3dc6139a.js | 0 .../dist/assets/debug.html-1a8ed36d.js | 0 .../dist/assets/debug.html-7d9c655f.js | 0 .../dist/assets/enums.html-88a6d059.js | 0 .../dist/assets/enums.html-fac67bba.js | 0 .../dist/assets/errors.html-223a5da6.js | 0 .../dist/assets/errors.html-cac16163.js | 0 .../dist/assets/ffi.html-1270c42a.js | 0 .../dist/assets/ffi.html-4b7e094a.js | 0 .../dist/assets/ffi.html-8f169169.js | 0 .../dist/assets/ffi.html-a3573afd.js | 0 .../dist/assets/fibers.html-128da3b2.js | 0 .../dist/assets/fibers.html-26ad6db0.js | 0 .../dist/assets/fibers.html-4212fab3.js | 0 .../dist/assets/fibers.html-cb2e6732.js | 0 .../.vuepress/dist/assets/fs.html-88f986ed.js | 0 .../.vuepress/dist/assets/fs.html-e51b11ec.js | 0 .../dist/assets/functions.html-950ab70b.js | 0 .../dist/assets/functions.html-c473e66c.js | 0 .../.vuepress/dist/assets/gc.html-586473d4.js | 0 .../.vuepress/dist/assets/gc.html-c870a1dc.js | 0 .../assets/import-export.html-43f7b872.js | 0 .../assets/import-export.html-eb59ce91.js | 0 .../dist/assets/index.html-2ec4ef30.js | 0 .../dist/assets/index.html-7de7ebeb.js | 0 .../dist/assets/index.html-9d14688f.js | 0 .../dist/assets/index.html-c96e7c71.js | 0 .../dist/assets/index.html-cfa1c43b.js | 0 .../dist/assets/index.html-ee39a618.js | 0 .../.vuepress/dist/assets/io.html-5afd2865.js | 0 .../.vuepress/dist/assets/io.html-66f837f2.js | 0 .../dist/assets/lists.html-0dfb9f88.js | 0 .../dist/assets/lists.html-f2cb681c.js | 0 .../dist/assets/maps.html-5baae6ee.js | 0 .../dist/assets/maps.html-e954b557.js | 0 .../dist/assets/math.html-724dee99.js | 0 .../dist/assets/math.html-e1a94a97.js | 0 .../dist/assets/null-safety.html-225d7a97.js | 0 .../dist/assets/null-safety.html-78eef157.js | 0 .../dist/assets/objects.html-d3ba5e5e.js | 0 .../dist/assets/objects.html-fbce603d.js | 0 .../.vuepress/dist/assets/os.html-401e6994.js | 0 .../.vuepress/dist/assets/os.html-c27c3a80.js | 0 .../dist/assets/patterns.html-13199373.js | 0 .../dist/assets/patterns.html-25e56ec1.js | 0 .../dist/assets/protocols.html-add388e7.js | 0 .../dist/assets/protocols.html-cf22dabc.js | 0 .../dist/assets/ranges.html-1ec45949.js | 0 .../dist/assets/ranges.html-63af24a7.js | 0 .../dist/assets/repl.html-3a352999.js | 0 .../dist/assets/repl.html-e56c24b3.js | 0 .../dist/assets/scope.html-788dec71.js | 0 .../dist/assets/scope.html-e02d0c59.js | 0 .../dist/assets/serialize.html-a2b2f5c7.js | 0 .../dist/assets/serialize.html-b6cab62f.js | 0 .../dist/assets/std.html-1f14ef55.js | 0 .../dist/assets/std.html-28946dd8.js | 0 .../dist/assets/strings.html-19211e8e.js | 0 .../dist/assets/strings.html-3eee8ada.js | 0 .../.vuepress/dist/assets/style-a4c8bf56.css | 0 .../dist/assets/syntax.html-1d9e70a0.js | 0 .../dist/assets/syntax.html-97d67af0.js | 0 .../dist/assets/types.html-7d2c7042.js | 0 .../dist/assets/types.html-f2d7ed88.js | 0 .../0.5.0}/docs/.vuepress/dist/buzz.wasm | Bin .../0.5.0}/docs/.vuepress/dist/favicon.ico | Bin .../dist/guide/building-installing.html | 0 .../dist/guide/calling-native-code.html | 0 .../.vuepress/dist/guide/control-flow.html | 0 .../docs/.vuepress/dist/guide/enums.html | 0 .../docs/.vuepress/dist/guide/errors.html | 0 .../0.5.0}/docs/.vuepress/dist/guide/ffi.html | 0 .../docs/.vuepress/dist/guide/fibers.html | 0 .../docs/.vuepress/dist/guide/functions.html | 0 .../.vuepress/dist/guide/import-export.html | 0 .../docs/.vuepress/dist/guide/index.html | 0 .../.vuepress/dist/guide/null-safety.html | 0 .../docs/.vuepress/dist/guide/objects.html | 0 .../docs/.vuepress/dist/guide/protocols.html | 0 .../docs/.vuepress/dist/guide/scope.html | 0 .../docs/.vuepress/dist/guide/syntax.html | 0 .../docs/.vuepress/dist/guide/types.html | 0 .../0.5.0}/docs/.vuepress/dist/index.html | 48 +++- .../0.5.0}/docs/.vuepress/dist/logo.png | Bin .../docs/.vuepress/dist/reference/api.html | 0 .../dist/reference/builtins/fibers.html | 0 .../dist/reference/builtins/lists.html | 0 .../dist/reference/builtins/maps.html | 0 .../dist/reference/builtins/patterns.html | 0 .../dist/reference/builtins/ranges.html | 0 .../dist/reference/builtins/strings.html | 0 .../docs/.vuepress/dist/reference/index.html | 0 .../.vuepress/dist/reference/std/buffer.html | 0 .../.vuepress/dist/reference/std/crypto.html | 0 .../.vuepress/dist/reference/std/debug.html | 0 .../.vuepress/dist/reference/std/ffi.html | 0 .../docs/.vuepress/dist/reference/std/fs.html | 0 .../docs/.vuepress/dist/reference/std/gc.html | 0 .../docs/.vuepress/dist/reference/std/io.html | 0 .../.vuepress/dist/reference/std/math.html | 0 .../docs/.vuepress/dist/reference/std/os.html | 0 .../dist/reference/std/serialize.html | 0 .../.vuepress/dist/reference/std/std.html | 0 .../0.5.0}/docs/.vuepress/dist/repl.html | 0 .../0.5.0}/docs/.vuepress/public/.DS_Store | Bin .../0.5.0}/docs/.vuepress/public/buzz.wasm | Bin .../0.5.0}/docs/.vuepress/public/favicon.ico | Bin .../0.5.0}/docs/.vuepress/public/logo.png | Bin .../0.5.0}/docs/.vuepress/styles/index.scss | 0 {0.5.0 => content/0.5.0}/docs/guide/README.md | 0 .../0.5.0}/docs/guide/building-installing.md | 0 .../0.5.0}/docs/guide/calling-native-code.md | 0 .../0.5.0}/docs/guide/control-flow.md | 0 {0.5.0 => content/0.5.0}/docs/guide/enums.md | 0 {0.5.0 => content/0.5.0}/docs/guide/errors.md | 0 {0.5.0 => content/0.5.0}/docs/guide/ffi.md | 0 {0.5.0 => content/0.5.0}/docs/guide/fibers.md | 0 .../0.5.0}/docs/guide/functions.md | 0 .../0.5.0}/docs/guide/import-export.md | 0 .../0.5.0}/docs/guide/null-safety.md | 0 .../0.5.0}/docs/guide/objects.md | 0 .../0.5.0}/docs/guide/protocols.md | 0 {0.5.0 => content/0.5.0}/docs/guide/scope.md | 0 {0.5.0 => content/0.5.0}/docs/guide/syntax.md | 0 {0.5.0 => content/0.5.0}/docs/guide/types.md | 0 .../0.5.0}/docs/reference/README.md | 0 .../0.5.0}/docs/reference/api.md | 0 .../0.5.0}/docs/reference/builtins/fibers.md | 0 .../0.5.0}/docs/reference/builtins/lists.md | 0 .../0.5.0}/docs/reference/builtins/maps.md | 0 .../docs/reference/builtins/patterns.md | 0 .../0.5.0}/docs/reference/builtins/ranges.md | 0 .../0.5.0}/docs/reference/builtins/strings.md | 0 .../0.5.0}/docs/reference/std/buffer.md | 0 .../0.5.0}/docs/reference/std/crypto.md | 0 .../0.5.0}/docs/reference/std/debug.md | 0 .../0.5.0}/docs/reference/std/ffi.md | 0 .../0.5.0}/docs/reference/std/fs.md | 0 .../0.5.0}/docs/reference/std/gc.md | 0 .../0.5.0}/docs/reference/std/io.md | 0 .../0.5.0}/docs/reference/std/math.md | 0 .../0.5.0}/docs/reference/std/os.md | 0 .../0.5.0}/docs/reference/std/serialize.md | 0 .../0.5.0}/docs/reference/std/std.md | 0 {0.5.0 => content/0.5.0}/docs/repl.md | 0 content/0.5.0/index.smd | 62 +++++ {0.5.0 => content/0.5.0}/nginx.conf | 0 {0.5.0 => content/0.5.0}/package.json | 0 {0.5.0 => content/0.5.0}/pnpm-lock.yaml | 0 content/about.smd | 54 ++++ content/blog/first-post/fanzine.jpg | Bin 0 -> 124852 bytes content/blog/first-post/index.smd | 108 ++++++++ content/blog/index.smd | 38 +++ content/blog/second-post.smd | 59 +++++ content/devlog/1989.smd | 16 ++ content/devlog/1990.smd | 36 +++ content/devlog/index.smd | 30 +++ content/index.smd | 7 + {main => content/main}/AGENTS.md | 0 .../main}/docs/.vuepress/config.ts | 0 .../main}/docs/.vuepress/dist/.DS_Store | Bin .../main}/docs/.vuepress/dist/404.html | 0 .../dist/assets/404.html-60b35caa.js | 0 .../dist/assets/404.html-d948ce64.js | 0 .../dist/assets/api.html-664752d9.js | 0 .../dist/assets/api.html-7b1ffba8.js | 0 .../.vuepress/dist/assets/app-631b6948.js | 0 .../dist/assets/back-to-top-8efcbe56.svg | 0 .../dist/assets/buffer.html-4cb461be.js | 0 .../dist/assets/buffer.html-bc4f6a2b.js | 0 .../building-installing.html-3e68969f.js | 0 .../building-installing.html-5062e075.js | 0 .../calling-native-code.html-7a10d775.js | 0 .../calling-native-code.html-f0064cbc.js | 0 .../dist/assets/control-flow.html-54925a68.js | 0 .../dist/assets/control-flow.html-c4284ae0.js | 0 .../dist/assets/crypto.html-4423d2c8.js | 0 .../dist/assets/crypto.html-4f1b84d7.js | 0 .../dist/assets/debug.html-553b1ba0.js | 0 .../dist/assets/debug.html-e233508d.js | 0 .../dist/assets/enums.html-bad178cc.js | 0 .../dist/assets/enums.html-fac67bba.js | 0 .../dist/assets/errors.html-0d72a89c.js | 0 .../dist/assets/errors.html-1c454e81.js | 0 .../dist/assets/errors.html-223a5da6.js | 0 .../dist/assets/errors.html-ecd1636f.js | 0 .../dist/assets/ffi.html-130a5838.js | 0 .../dist/assets/ffi.html-b12e681a.js | 0 .../dist/assets/ffi.html-c5d36b59.js | 0 .../dist/assets/ffi.html-eea11461.js | 0 .../dist/assets/fibers.html-16508b49.js | 0 .../dist/assets/fibers.html-71ea4736.js | 0 .../dist/assets/fibers.html-8e285f23.js | 0 .../dist/assets/fibers.html-f5030769.js | 0 .../.vuepress/dist/assets/fs.html-122542d3.js | 0 .../.vuepress/dist/assets/fs.html-a69c80bd.js | 0 .../dist/assets/functions.html-6d499fbe.js | 0 .../dist/assets/functions.html-71d6b513.js | 0 .../.vuepress/dist/assets/gc.html-068f31c7.js | 0 .../.vuepress/dist/assets/gc.html-3d7a02c4.js | 0 .../dist/assets/get-started.html-52577ec7.js | 0 .../dist/assets/get-started.html-8c2eb3a6.js | 0 .../dist/assets/http.html-4a451b45.js | 0 .../dist/assets/http.html-e1f7da91.js | 0 .../assets/import-export.html-253553e6.js | 0 .../assets/import-export.html-c7a1cb0f.js | 0 .../dist/assets/index.html-2ec4ef30.js | 0 .../dist/assets/index.html-7de7ebeb.js | 0 .../dist/assets/index.html-9bac4119.js | 0 .../dist/assets/index.html-9ce5cec2.js | 0 .../dist/assets/index.html-b1241025.js | 0 .../dist/assets/index.html-ee2aed99.js | 0 .../.vuepress/dist/assets/io.html-28d6763c.js | 0 .../.vuepress/dist/assets/io.html-c1a15cd0.js | 0 .../dist/assets/lists.html-6196a427.js | 0 .../dist/assets/lists.html-eaf29a24.js | 0 .../dist/assets/manifest.html-b658225f.js | 0 .../dist/assets/manifest.html-c41026e8.js | 0 .../dist/assets/maps.html-7ad1e8ad.js | 0 .../dist/assets/maps.html-8551948f.js | 0 .../dist/assets/math.html-93f55f15.js | 0 .../dist/assets/math.html-eb02d6d2.js | 0 .../dist/assets/null-safety.html-27a10c06.js | 0 .../dist/assets/null-safety.html-a8154d47.js | 0 .../dist/assets/objects.html-030ef37c.js | 0 .../dist/assets/objects.html-785a4b41.js | 0 .../.vuepress/dist/assets/os.html-ac29c9d4.js | 0 .../.vuepress/dist/assets/os.html-c27c3a80.js | 0 .../dist/assets/package.html-edeb64c9.js | 0 .../dist/assets/package.html-f02962f6.js | 0 .../dist/assets/patterns.html-59e24f57.js | 0 .../dist/assets/patterns.html-f2b4d5aa.js | 0 .../dist/assets/protocols.html-6e7ed9b1.js | 0 .../dist/assets/protocols.html-f1222f71.js | 0 .../dist/assets/ranges.html-3ca80bd5.js | 0 .../dist/assets/ranges.html-3f025e6a.js | 0 .../dist/assets/repl.html-e0ab52fe.js | 0 .../dist/assets/repl.html-e56c24b3.js | 0 .../dist/assets/scope.html-8abe8ae3.js | 0 .../dist/assets/scope.html-e02d0c59.js | 0 .../dist/assets/serialize.html-f25dd295.js | 0 .../dist/assets/serialize.html-faa98dc9.js | 0 .../dist/assets/std.html-014dd46a.js | 0 .../dist/assets/std.html-d8724455.js | 0 .../dist/assets/strings.html-19211e8e.js | 0 .../dist/assets/strings.html-9536272f.js | 0 .../.vuepress/dist/assets/style-5aa52750.css | 0 .../dist/assets/syntax.html-979ec2fd.js | 0 .../dist/assets/syntax.html-c5ec77a6.js | 0 .../dist/assets/testing.html-23e53806.js | 0 .../dist/assets/testing.html-ee7981d7.js | 0 .../dist/assets/toml.html-69771c57.js | 0 .../dist/assets/toml.html-f24fd17d.js | 0 .../dist/assets/types.html-2dc8ea4a.js | 0 .../dist/assets/types.html-f2d7ed88.js | 0 .../main}/docs/.vuepress/dist/buzz.wasm | Bin .../main}/docs/.vuepress/dist/favicon.ico | Bin .../dist/guide/building-installing.html | 0 .../dist/guide/calling-native-code.html | 0 .../.vuepress/dist/guide/control-flow.html | 0 .../docs/.vuepress/dist/guide/enums.html | 0 .../docs/.vuepress/dist/guide/errors.html | 0 .../main}/docs/.vuepress/dist/guide/ffi.html | 0 .../docs/.vuepress/dist/guide/fibers.html | 0 .../docs/.vuepress/dist/guide/functions.html | 0 .../.vuepress/dist/guide/get-started.html | 0 .../.vuepress/dist/guide/import-export.html | 0 .../docs/.vuepress/dist/guide/index.html | 0 .../.vuepress/dist/guide/null-safety.html | 0 .../docs/.vuepress/dist/guide/objects.html | 0 .../docs/.vuepress/dist/guide/package.html | 0 .../docs/.vuepress/dist/guide/protocols.html | 0 .../docs/.vuepress/dist/guide/scope.html | 0 .../docs/.vuepress/dist/guide/syntax.html | 0 .../docs/.vuepress/dist/guide/types.html | 0 .../main}/docs/.vuepress/dist/index.html | 0 .../main}/docs/.vuepress/dist/logo.png | Bin .../docs/.vuepress/dist/reference/api.html | 0 .../dist/reference/builtins/fibers.html | 0 .../dist/reference/builtins/lists.html | 0 .../dist/reference/builtins/maps.html | 0 .../dist/reference/builtins/patterns.html | 0 .../dist/reference/builtins/ranges.html | 0 .../dist/reference/builtins/strings.html | 0 .../docs/.vuepress/dist/reference/index.html | 0 .../.vuepress/dist/reference/std/buffer.html | 0 .../.vuepress/dist/reference/std/crypto.html | 0 .../.vuepress/dist/reference/std/debug.html | 0 .../.vuepress/dist/reference/std/errors.html | 0 .../.vuepress/dist/reference/std/ffi.html | 0 .../docs/.vuepress/dist/reference/std/fs.html | 0 .../docs/.vuepress/dist/reference/std/gc.html | 0 .../.vuepress/dist/reference/std/http.html | 0 .../docs/.vuepress/dist/reference/std/io.html | 0 .../dist/reference/std/manifest.html | 0 .../.vuepress/dist/reference/std/math.html | 0 .../docs/.vuepress/dist/reference/std/os.html | 0 .../dist/reference/std/serialize.html | 0 .../.vuepress/dist/reference/std/std.html | 0 .../.vuepress/dist/reference/std/testing.html | 0 .../.vuepress/dist/reference/std/toml.html | 0 .../main}/docs/.vuepress/dist/repl.html | 0 .../main}/docs/.vuepress/public/.DS_Store | Bin .../main}/docs/.vuepress/public/buzz.wasm | Bin .../main}/docs/.vuepress/public/favicon.ico | Bin .../main}/docs/.vuepress/public/logo.png | Bin .../main}/docs/.vuepress/styles/index.scss | 0 {main => content/main}/docs/guide/README.md | 0 .../main}/docs/guide/building-installing.md | 0 .../main}/docs/guide/calling-native-code.md | 0 .../main}/docs/guide/control-flow.md | 0 {main => content/main}/docs/guide/enums.md | 0 {main => content/main}/docs/guide/errors.md | 0 {main => content/main}/docs/guide/ffi.md | 0 {main => content/main}/docs/guide/fibers.md | 0 .../main}/docs/guide/functions.md | 0 .../main}/docs/guide/get-started.md | 0 .../main}/docs/guide/import-export.md | 0 .../main}/docs/guide/null-safety.md | 0 {main => content/main}/docs/guide/objects.md | 0 {main => content/main}/docs/guide/package.md | 0 .../main}/docs/guide/protocols.md | 0 {main => content/main}/docs/guide/scope.md | 0 {main => content/main}/docs/guide/syntax.md | 0 {main => content/main}/docs/guide/types.md | 0 {main => content/main}/docs/index.md | 0 .../main}/docs/reference/README.md | 0 {main => content/main}/docs/reference/api.md | 0 .../main}/docs/reference/builtins/fibers.md | 0 .../main}/docs/reference/builtins/lists.md | 0 .../main}/docs/reference/builtins/maps.md | 0 .../main}/docs/reference/builtins/patterns.md | 0 .../main}/docs/reference/builtins/ranges.md | 0 .../main}/docs/reference/builtins/strings.md | 0 .../main}/docs/reference/std/buffer.md | 0 .../main}/docs/reference/std/crypto.md | 0 .../main}/docs/reference/std/debug.md | 0 .../main}/docs/reference/std/errors.md | 0 .../main}/docs/reference/std/ffi.md | 0 .../main}/docs/reference/std/fs.md | 0 .../main}/docs/reference/std/gc.md | 0 .../main}/docs/reference/std/http.md | 0 .../main}/docs/reference/std/io.md | 0 .../main}/docs/reference/std/manifest.md | 0 .../main}/docs/reference/std/math.md | 0 .../main}/docs/reference/std/os.md | 0 .../main}/docs/reference/std/serialize.md | 0 .../main}/docs/reference/std/std.md | 0 .../main}/docs/reference/std/testing.md | 0 .../main}/docs/reference/std/toml.md | 0 {main => content/main}/docs/repl.md | 0 {main => content/main}/nginx.conf | 0 {main => content/main}/package.json | 0 {main => content/main}/pnpm-lock.yaml | 0 layouts/blog.shtml | 25 ++ layouts/blog.xml | 19 ++ layouts/devlog-archive.shtml | 25 ++ layouts/devlog.shtml | 45 ++++ layouts/devlog.xml | 21 ++ layouts/home.shtml | 22 ++ layouts/index.shtml | 7 + layouts/page.shtml | 7 + layouts/post.shtml | 40 +++ layouts/redirect.shtml | 15 ++ layouts/templates/base.shtml | 36 +++ zine.ziggy | 12 + 395 files changed, 1370 insertions(+), 54 deletions(-) create mode 100644 .zine.ziggy-schema delete mode 100755 0.5.0/docs/index.md create mode 100644 assets/Temml-Local.css create mode 100644 assets/Temml.woff2 create mode 100644 assets/highlight.css create mode 100644 assets/render-mathtex.js create mode 100644 assets/style.css create mode 100644 assets/temml.min.js create mode 100644 assets/under-construction.gif create mode 100644 content/.smd.ziggy-schema rename {0.5.0 => content/0.5.0}/docs/.vuepress/config.ts (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/.DS_Store (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/404.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/404.html-60b35caa.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/404.html-81dcbf04.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/api.html-664752d9.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/api.html-782c08dd.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/app-fdd7d3c1.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/buffer.html-b9ff57c6.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/buffer.html-f0bbadca.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/building-installing.html-b942c545.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/building-installing.html-f67292e3.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/calling-native-code.html-caf3c7fd.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/calling-native-code.html-d15d2b69.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/control-flow.html-369e24d4.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/control-flow.html-b4dad974.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/crypto.html-03686c71.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/crypto.html-3dc6139a.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/debug.html-1a8ed36d.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/debug.html-7d9c655f.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/enums.html-88a6d059.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/enums.html-fac67bba.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/errors.html-223a5da6.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/errors.html-cac16163.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/ffi.html-1270c42a.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/ffi.html-4b7e094a.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/ffi.html-8f169169.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/ffi.html-a3573afd.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/fibers.html-128da3b2.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/fibers.html-26ad6db0.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/fibers.html-4212fab3.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/fibers.html-cb2e6732.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/fs.html-88f986ed.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/fs.html-e51b11ec.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/functions.html-950ab70b.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/functions.html-c473e66c.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/gc.html-586473d4.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/gc.html-c870a1dc.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/import-export.html-43f7b872.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/import-export.html-eb59ce91.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/index.html-2ec4ef30.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/index.html-7de7ebeb.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/index.html-9d14688f.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/index.html-c96e7c71.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/index.html-cfa1c43b.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/index.html-ee39a618.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/io.html-5afd2865.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/io.html-66f837f2.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/lists.html-0dfb9f88.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/lists.html-f2cb681c.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/maps.html-5baae6ee.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/maps.html-e954b557.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/math.html-724dee99.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/math.html-e1a94a97.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/null-safety.html-225d7a97.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/null-safety.html-78eef157.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/objects.html-d3ba5e5e.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/objects.html-fbce603d.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/os.html-401e6994.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/os.html-c27c3a80.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/patterns.html-13199373.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/patterns.html-25e56ec1.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/protocols.html-add388e7.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/protocols.html-cf22dabc.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/ranges.html-1ec45949.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/ranges.html-63af24a7.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/repl.html-3a352999.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/repl.html-e56c24b3.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/scope.html-788dec71.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/scope.html-e02d0c59.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/serialize.html-a2b2f5c7.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/serialize.html-b6cab62f.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/std.html-1f14ef55.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/std.html-28946dd8.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/strings.html-19211e8e.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/strings.html-3eee8ada.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/style-a4c8bf56.css (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/syntax.html-1d9e70a0.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/syntax.html-97d67af0.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/types.html-7d2c7042.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/assets/types.html-f2d7ed88.js (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/buzz.wasm (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/favicon.ico (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/building-installing.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/calling-native-code.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/control-flow.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/enums.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/errors.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/ffi.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/fibers.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/functions.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/import-export.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/index.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/null-safety.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/objects.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/protocols.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/scope.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/syntax.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/guide/types.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/index.html (85%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/logo.png (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/api.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/builtins/fibers.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/builtins/lists.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/builtins/maps.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/builtins/patterns.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/builtins/ranges.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/builtins/strings.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/index.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/std/buffer.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/std/crypto.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/std/debug.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/std/ffi.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/std/fs.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/std/gc.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/std/io.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/std/math.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/std/os.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/std/serialize.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/reference/std/std.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/dist/repl.html (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/public/.DS_Store (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/public/buzz.wasm (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/public/favicon.ico (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/public/logo.png (100%) rename {0.5.0 => content/0.5.0}/docs/.vuepress/styles/index.scss (100%) rename {0.5.0 => content/0.5.0}/docs/guide/README.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/building-installing.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/calling-native-code.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/control-flow.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/enums.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/errors.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/ffi.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/fibers.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/functions.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/import-export.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/null-safety.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/objects.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/protocols.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/scope.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/syntax.md (100%) rename {0.5.0 => content/0.5.0}/docs/guide/types.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/README.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/api.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/builtins/fibers.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/builtins/lists.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/builtins/maps.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/builtins/patterns.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/builtins/ranges.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/builtins/strings.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/std/buffer.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/std/crypto.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/std/debug.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/std/ffi.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/std/fs.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/std/gc.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/std/io.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/std/math.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/std/os.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/std/serialize.md (100%) rename {0.5.0 => content/0.5.0}/docs/reference/std/std.md (100%) rename {0.5.0 => content/0.5.0}/docs/repl.md (100%) create mode 100755 content/0.5.0/index.smd rename {0.5.0 => content/0.5.0}/nginx.conf (100%) rename {0.5.0 => content/0.5.0}/package.json (100%) rename {0.5.0 => content/0.5.0}/pnpm-lock.yaml (100%) create mode 100644 content/about.smd create mode 100644 content/blog/first-post/fanzine.jpg create mode 100644 content/blog/first-post/index.smd create mode 100644 content/blog/index.smd create mode 100644 content/blog/second-post.smd create mode 100644 content/devlog/1989.smd create mode 100644 content/devlog/1990.smd create mode 100644 content/devlog/index.smd create mode 100644 content/index.smd rename {main => content/main}/AGENTS.md (100%) rename {main => content/main}/docs/.vuepress/config.ts (100%) rename {main => content/main}/docs/.vuepress/dist/.DS_Store (100%) rename {main => content/main}/docs/.vuepress/dist/404.html (100%) rename {main => content/main}/docs/.vuepress/dist/assets/404.html-60b35caa.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/404.html-d948ce64.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/api.html-664752d9.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/api.html-7b1ffba8.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/app-631b6948.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg (100%) rename {main => content/main}/docs/.vuepress/dist/assets/buffer.html-4cb461be.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/buffer.html-bc4f6a2b.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/building-installing.html-3e68969f.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/building-installing.html-5062e075.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/calling-native-code.html-7a10d775.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/calling-native-code.html-f0064cbc.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/control-flow.html-54925a68.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/control-flow.html-c4284ae0.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/crypto.html-4423d2c8.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/crypto.html-4f1b84d7.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/debug.html-553b1ba0.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/debug.html-e233508d.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/enums.html-bad178cc.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/enums.html-fac67bba.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/errors.html-0d72a89c.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/errors.html-1c454e81.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/errors.html-223a5da6.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/errors.html-ecd1636f.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/ffi.html-130a5838.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/ffi.html-b12e681a.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/ffi.html-c5d36b59.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/ffi.html-eea11461.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/fibers.html-16508b49.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/fibers.html-71ea4736.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/fibers.html-8e285f23.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/fibers.html-f5030769.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/fs.html-122542d3.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/fs.html-a69c80bd.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/functions.html-6d499fbe.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/functions.html-71d6b513.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/gc.html-068f31c7.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/gc.html-3d7a02c4.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/get-started.html-52577ec7.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/get-started.html-8c2eb3a6.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/http.html-4a451b45.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/http.html-e1f7da91.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/import-export.html-253553e6.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/import-export.html-c7a1cb0f.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/index.html-2ec4ef30.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/index.html-7de7ebeb.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/index.html-9bac4119.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/index.html-9ce5cec2.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/index.html-b1241025.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/index.html-ee2aed99.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/io.html-28d6763c.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/io.html-c1a15cd0.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/lists.html-6196a427.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/lists.html-eaf29a24.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/manifest.html-b658225f.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/manifest.html-c41026e8.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/maps.html-7ad1e8ad.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/maps.html-8551948f.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/math.html-93f55f15.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/math.html-eb02d6d2.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/null-safety.html-27a10c06.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/null-safety.html-a8154d47.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/objects.html-030ef37c.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/objects.html-785a4b41.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/os.html-ac29c9d4.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/os.html-c27c3a80.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/package.html-edeb64c9.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/package.html-f02962f6.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/patterns.html-59e24f57.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/patterns.html-f2b4d5aa.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/protocols.html-6e7ed9b1.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/protocols.html-f1222f71.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/ranges.html-3ca80bd5.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/ranges.html-3f025e6a.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/repl.html-e0ab52fe.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/repl.html-e56c24b3.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/scope.html-8abe8ae3.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/scope.html-e02d0c59.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/serialize.html-f25dd295.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/serialize.html-faa98dc9.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/std.html-014dd46a.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/std.html-d8724455.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/strings.html-19211e8e.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/strings.html-9536272f.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/style-5aa52750.css (100%) rename {main => content/main}/docs/.vuepress/dist/assets/syntax.html-979ec2fd.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/syntax.html-c5ec77a6.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/testing.html-23e53806.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/testing.html-ee7981d7.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/toml.html-69771c57.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/toml.html-f24fd17d.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/types.html-2dc8ea4a.js (100%) rename {main => content/main}/docs/.vuepress/dist/assets/types.html-f2d7ed88.js (100%) rename {main => content/main}/docs/.vuepress/dist/buzz.wasm (100%) rename {main => content/main}/docs/.vuepress/dist/favicon.ico (100%) rename {main => content/main}/docs/.vuepress/dist/guide/building-installing.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/calling-native-code.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/control-flow.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/enums.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/errors.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/ffi.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/fibers.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/functions.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/get-started.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/import-export.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/index.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/null-safety.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/objects.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/package.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/protocols.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/scope.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/syntax.html (100%) rename {main => content/main}/docs/.vuepress/dist/guide/types.html (100%) rename {main => content/main}/docs/.vuepress/dist/index.html (100%) rename {main => content/main}/docs/.vuepress/dist/logo.png (100%) rename {main => content/main}/docs/.vuepress/dist/reference/api.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/builtins/fibers.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/builtins/lists.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/builtins/maps.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/builtins/patterns.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/builtins/ranges.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/builtins/strings.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/index.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/buffer.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/crypto.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/debug.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/errors.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/ffi.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/fs.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/gc.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/http.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/io.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/manifest.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/math.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/os.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/serialize.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/std.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/testing.html (100%) rename {main => content/main}/docs/.vuepress/dist/reference/std/toml.html (100%) rename {main => content/main}/docs/.vuepress/dist/repl.html (100%) rename {main => content/main}/docs/.vuepress/public/.DS_Store (100%) rename {main => content/main}/docs/.vuepress/public/buzz.wasm (100%) rename {main => content/main}/docs/.vuepress/public/favicon.ico (100%) rename {main => content/main}/docs/.vuepress/public/logo.png (100%) rename {main => content/main}/docs/.vuepress/styles/index.scss (100%) rename {main => content/main}/docs/guide/README.md (100%) rename {main => content/main}/docs/guide/building-installing.md (100%) rename {main => content/main}/docs/guide/calling-native-code.md (100%) rename {main => content/main}/docs/guide/control-flow.md (100%) rename {main => content/main}/docs/guide/enums.md (100%) rename {main => content/main}/docs/guide/errors.md (100%) rename {main => content/main}/docs/guide/ffi.md (100%) rename {main => content/main}/docs/guide/fibers.md (100%) rename {main => content/main}/docs/guide/functions.md (100%) rename {main => content/main}/docs/guide/get-started.md (100%) rename {main => content/main}/docs/guide/import-export.md (100%) rename {main => content/main}/docs/guide/null-safety.md (100%) rename {main => content/main}/docs/guide/objects.md (100%) rename {main => content/main}/docs/guide/package.md (100%) rename {main => content/main}/docs/guide/protocols.md (100%) rename {main => content/main}/docs/guide/scope.md (100%) rename {main => content/main}/docs/guide/syntax.md (100%) rename {main => content/main}/docs/guide/types.md (100%) rename {main => content/main}/docs/index.md (100%) rename {main => content/main}/docs/reference/README.md (100%) rename {main => content/main}/docs/reference/api.md (100%) rename {main => content/main}/docs/reference/builtins/fibers.md (100%) rename {main => content/main}/docs/reference/builtins/lists.md (100%) rename {main => content/main}/docs/reference/builtins/maps.md (100%) rename {main => content/main}/docs/reference/builtins/patterns.md (100%) rename {main => content/main}/docs/reference/builtins/ranges.md (100%) rename {main => content/main}/docs/reference/builtins/strings.md (100%) rename {main => content/main}/docs/reference/std/buffer.md (100%) rename {main => content/main}/docs/reference/std/crypto.md (100%) rename {main => content/main}/docs/reference/std/debug.md (100%) rename {main => content/main}/docs/reference/std/errors.md (100%) rename {main => content/main}/docs/reference/std/ffi.md (100%) rename {main => content/main}/docs/reference/std/fs.md (100%) rename {main => content/main}/docs/reference/std/gc.md (100%) rename {main => content/main}/docs/reference/std/http.md (100%) rename {main => content/main}/docs/reference/std/io.md (100%) rename {main => content/main}/docs/reference/std/manifest.md (100%) rename {main => content/main}/docs/reference/std/math.md (100%) rename {main => content/main}/docs/reference/std/os.md (100%) rename {main => content/main}/docs/reference/std/serialize.md (100%) rename {main => content/main}/docs/reference/std/std.md (100%) rename {main => content/main}/docs/reference/std/testing.md (100%) rename {main => content/main}/docs/reference/std/toml.md (100%) rename {main => content/main}/docs/repl.md (100%) rename {main => content/main}/nginx.conf (100%) rename {main => content/main}/package.json (100%) rename {main => content/main}/pnpm-lock.yaml (100%) create mode 100644 layouts/blog.shtml create mode 100644 layouts/blog.xml create mode 100644 layouts/devlog-archive.shtml create mode 100644 layouts/devlog.shtml create mode 100644 layouts/devlog.xml create mode 100644 layouts/home.shtml create mode 100644 layouts/index.shtml create mode 100644 layouts/page.shtml create mode 100644 layouts/post.shtml create mode 100644 layouts/redirect.shtml create mode 100644 layouts/templates/base.shtml create mode 100644 zine.ziggy diff --git a/.gitignore b/.gitignore index d46af724..4742fc4b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +public/ node_modules .temp .cache diff --git a/.zine.ziggy-schema b/.zine.ziggy-schema new file mode 100644 index 00000000..85cff02a --- /dev/null +++ b/.zine.ziggy-schema @@ -0,0 +1,166 @@ +$ = Config + +/// This is the schema of a Zine website config file, usually named 'zine.ziggy'. +struct Config { + /// A semver string representing the version of Zine that your website + /// requires. Used by GitHub / Forgejo actions to select automatically + /// the right version of Zine to fetch, see the 'Deploying' section of + /// https://zine-ssg.io/docs/. + zine_version: bytes, + /// SuperMD content rendering settings + supermd: ?SuperMd, + /// Your website definition + site: Site, + /// User-defined properties that you can reference from SuperHTML via + /// '$site.custom'. + custom: {:}any, +} + +struct SuperMd { + /// SuperMD documents start at heading level 1 ('#') which by default + /// renders as `

`. Should SuperMD headings start at `

` instead? + headings_h2: ?bool, + /// Should external links generated by SuperMD automatically add + /// `target="_blank"`? Defaults to `false`. + /// + /// Note: you can override this setting on each link by using explicit + /// syntax (e.g. `[my link]($link.url(https://example.com).new(true))`) + auto_target_blank: ?bool, +} + +union Site { + simple: Simple, + multilingual: Multilingual, + + struct Simple { + title: bytes, + /// URL where the website will be hosted. + /// It must not contain a subpath, see `url_path_prefix`. + host_url: bytes, + /// Set this value if your website is hosted under a subpath of `host_url`. + /// + /// `host_url` and `url_prefix_path` are split to allow the development + /// server to generate correct relative paths when serving the website + /// locally. + url_path_prefix: ?bytes, + + /// Directory containing your SuperHTML layouts. + layouts_dir_path: bytes, + /// Directory containing your SuperMD content. + content_dir_path: bytes, + /// Directory containing your site-wide assets. + assets_dir_path: bytes, + + /// Subpaths in `assets_dir_path` that will be installed unconditionally. + /// All other assets will be installed only if referenced by a content file + /// or a layout by calling `$site.asset('foo').link()`. + /// + /// Examples of incorrect usage of this field: + /// - site-wide CSS files (should be `link`ed by templates) + /// - RSS feeds (should be generated by defining `alternative` pages) + /// + /// Examples of correct usage of this field: + /// - `favicon.ico` and other similar assets auto-discovered by browsers + /// - Font files only referenced inside of CSS files. + static_assets: []bytes, + /// When enabled, Zine will automatically add 'width' and 'height' + /// attributes to elements for local assets. + /// Be aware that setting 'width' and 'heigth' of an image will in some + /// circumstances cause browsers to distort images. + /// + /// This problem can be solved by adding the following CSS code to your + /// site: + /// + /// img { height: auto; } + /// + image_size_attributes: ?bool, + } + + struct Multilingual { + /// URL where the website will be hosted. + /// It must not contain a subpath, see `Locale.output_prefix_override`. + host_url: bytes, + /// Directory that contains mappings from placeholders to translations, + /// expressed as Ziggy files. + /// + /// Each Ziggy file must be named after the locale it's meant to offer + /// translations for. + i18n_dir_path: bytes, + /// Directory containing your SuperHTML layouts. + layouts_dir_path: bytes, + /// Directory containing your site-wide assets. + assets_dir_path: bytes, + /// Location where site- and build- assets will be installed. By default + /// assets will be installed directly in the output location. + /// + /// In mulitilingual websites Zine will create a single copy of + /// site assets which will then be installed at this location. It + /// will be your duty to then copy this directory elsewhere if + /// needed in your deployment setup (e.g. when deploying different + /// localized variants to different hosts). + /// + /// NOTE: *page* assets will still be installed next to their + /// relative page. + assets_prefix_path: ?bytes, + /// Subpaths in `assets_dir_path` that will be installed unconditionally. + /// All other assets will be installed only if referenced by a content file + /// or a layout by using `$site.asset('foo').link()`. + /// + /// Examples of incorrect usage of this field: + /// - site-wide CSS files (should be `link`ed by templates) + /// - RSS feeds (should be generated by defining `alternative` pages) + /// + /// Examples of correct usage of this field: + /// - `favicon.ico` and other similar assets auto-discovered by browsers + /// - Font files only referenced inside of CSS files. + static_assets: []bytes, + /// A list of locales of this website. + /// + /// For each entry the following values must be unique: + /// - `code` + /// - `output_prefix_override` (if not null) + `host_url_override` + locales: []Locale, + /// When enabled, Zine will automatically add 'width' and 'height' + /// attributes to elements for local assets. + /// Be aware that setting 'width' and 'heigth' of an image will in some + /// circumstances cause browsers to distort images. + /// + /// This problem can be solved by adding the following CSS code to your + /// site: + /// + /// img { height: auto; } + /// + image_size_attributes: ?bool, + + struct Locale { + /// A language-NATION code, e.g. 'en-US', used to identify each + /// individual localized variant of the website. + /// + /// Must be unique. + code: bytes, + /// A name that identifies this locale, e.g. 'English' + name: bytes, + /// Content dir for this locale, + content_dir_path: bytes, + /// Site title for this locale. + site_title: bytes, + /// Set to a non-null value when deploying this locale from a dedicated + /// host (e.g. 'https://us.site.com', 'http://de.site.com'). + /// + /// It must not contain a path other than '/'. + host_url_override: ?bytes, + /// | output_ | host_ | resulting | resulting | + /// | prefix_ | url_ | url | path | + /// | override | override | prefix | prefix | + /// | -------- | ------------- | ---------------- | --------------- | + /// | null | null | site.com/en-US/ | zig-out/en-US/ | + /// | null | "us.site.com" | us.site.com/ | zig-out/en-US/ | + /// | "foo" | null | site.com/foo/ | zig-out/foo/ | + /// | "foo" | "us.site.com" | us.site.com/foo/ | zig-out/foo/ | + /// | "" | null | site.com/ | zig-out/ | + /// + /// The last case is how you create a default locale. + output_prefix_override: ?bytes, + } + } +} diff --git a/0.5.0/docs/index.md b/0.5.0/docs/index.md deleted file mode 100755 index 3c94f284..00000000 --- a/0.5.0/docs/index.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -home: true -heroImage: logo.png -tagline: A small/lightweight statically typed scripting language -actions: - - text: Guide - link: /guide/ - - text: Reference - link: /reference/ - - text: Try it - link: /repl - - text: Latest release - link: https://github.com/buzz-language/buzz/releases/tag/0.5.0 - type: secondary -features: - - title: Statically typed - details: Find out bugs in your IDE rather than production - - title: JIT compiled - details: Uses MIR, a fast and lightweight JIT compiler - - title: Unambiguous - details: No implicit behavior or unexpected type coercion - - title: Small in size and complexity - details: Does not take much space on your drive or in your mind - - title: Interoperability with C - details: Call C functions easily with FFIs and embed buzz with its C API - - title: Fibers - details: Single threaded cooperative multitasking -footer: MIT licensed | Copyright © 2021-present Benoit Giannangeli ---- -```buzz -import "std"; - -fun fibonacci(n: int) > void *> int? { - var n1 = 0; - var n2 = 1; - var next: int? = null; - - foreach (_ in 0..n) { - _ = yield n1; - next = n1 + n2; - n1 = n2; - n2 = next!; - } -} - -fun main(args: [str]) > void { - final N = std\parseInt(args[?0] ?? "10")!; - - foreach (n in &fibonacci(N)) { - std\print("{n}"); - } -} -``` diff --git a/assets/Temml-Local.css b/assets/Temml-Local.css new file mode 100644 index 00000000..8c61ca4c --- /dev/null +++ b/assets/Temml-Local.css @@ -0,0 +1,249 @@ +/* +Temml.woff2 is a clone of KaTeX_Script-Regular, except that the code points +have been changed from ASCII to Unicode Mathematical Alphanumeric Symbols Script capitals, +Unicode range 1D49C to 1D4B5. +*/ + +@font-face { + font-family: 'Temml'; + src: url('Temml.woff2') format('woff2'); + font-weight: normal; + font-style: normal; +} + +math { + font-family: "Cambria Math", 'STIXTwoMath-Regular', 'NotoSansMath-Regular', math; + font-style: normal; + font-weight: normal; + line-height: normal; + font-size-adjust: none; + text-indent: 0; + text-transform: none; + letter-spacing: normal; + word-wrap: normal; + direction: ltr; + /* Prevent Firefox from omitting the dot on i or j. */ + font-feature-settings: "dtls" off; +} + +math * { + border-color: currentColor; +} + +/* Next line is active in Firefox and Safari. + * Not in Chromium, which recognizes display: "block math" written inline. */ +math.tml-display { display: block; } + +*.mathcal { + /* NotoSans */ + font-feature-settings: 'ss01'; +} + +math .mathscr { + font-family: "Temml"; +} + +mo.tml-prime { + font-family: Temml; +} + +/* Prevent f' from overlapping in Chromium */ +mo.prime-pad { + padding-left: 0.08em; +} + +/* \cancel & \phase use background images. Get them to print. */ +menclose { + -webkit-print-color-adjust: exact; /* Chrome & Edge */ + print-color-adjust: exact; +} + +/* Array cell justification in Firefox & WebKit */ +.tml-right { + text-align: right; +} +.tml-left { + text-align: left; +} + +/* Styles for Chromium only */ +@supports (not (-webkit-backdrop-filter: blur(1px))) and (not (-moz-appearance: none)) { + /* MathML Core & Chromium do not support the MathML 3.0 element attributes. */ + /* So use styles. */ + menclose { + position: relative; + padding: 0.5ex 0ex; + } + + .tml-overline { + padding: 0.1em 0 0 0; + border-top: 0.065em solid; + } + + .tml-underline { + padding: 0 0 0.1em 0; + border-bottom: 0.065em solid; + } + + .tml-cancel { + display: inline-block; + position: absolute; + left: 0.5px; + bottom: 0; + width: 100%; + height: 100%; + background-color: currentColor; + } + .upstrike { + clip-path: polygon(0.05em 100%, 0em calc(100% - 0.05em), calc(100% - 0.05em) 0em, 100% 0.05em); + } + .downstrike { + clip-path: polygon(0em 0.05em, 0.05em 0em, 100% calc(100% - 0.05em), calc(100% - 0.05em) 100%); + } + .sout { + clip-path: polygon(0em calc(55% + 0.0333em), 0em calc(55% - 0.0333em), 100% calc(55% - 0.0333em), 100% calc(55% + 0.0333em)); + } + .tml-xcancel { + background: linear-gradient(to top left, + rgba(0,0,0,0) 0%, + rgba(0,0,0,0) calc(50% - 0.06em), + rgba(0,0,0,1) 50%, + rgba(0,0,0,0) calc(50% + 0.06em), + rgba(0,0,0,0) 100%), + linear-gradient(to top right, + rgba(0,0,0,0) 0%, + rgba(0,0,0,0) calc(50% - 0.06em), + rgba(0,0,0,1) 50%, + rgba(0,0,0,0) calc(50% + 0.06em), + rgba(0,0,0,0) 100%) + } + + .longdiv-top { + border-top: 0.067em solid; + padding: 0.1em 0.2em 0.2em 0.433em; + } + .longdiv-arc { + position: absolute; + top: 0; + bottom: 0.1em; + left: -0.4em; + width: 0.7em; + border: 0.067em solid; + transform: translateY(-0.067em); + border-radius: 70%; + clip-path: inset(0 0 0 0.4em); + box-sizing: border-box;} + .menclose {display: inline-block; + text-align: left; + position: relative; + } + + .phasor-bottom { + border-bottom: 0.067em solid; + padding: 0.2em 0.2em 0.1em 0.6em; + } + .phasor-angle { + display: inline-block; + position: absolute; + left: 0.5px; + bottom: -0.04em; + height: 100%; + aspect-ratio: 0.5; + background-color: currentColor; + clip-path: polygon(0.05em 100%, 0em calc(100% - 0.05em), calc(100% - 0.05em) 0em, 100% 0.05em); + } + + .tml-box { + padding: 3pt 0 3pt 0; + border: 1px solid; + } + .tml-fbox { + padding: 3pt; + border: 1px solid; + } + + .circle-pad { + padding: 0.267em; + } + .textcircle { + position: absolute; + top: 0; + bottom: 0; + right: 0; + left: 0; + border: 0.067em solid; + border-radius: 50%; + } + + .actuarial { + padding: 0.03889em 0.03889em 0 0.03889em; + border-width: 0.08em 0.08em 0em 0em; + border-style: solid; + margin-right: 0.03889em; + } + + /* Stretch \widetilde */ + .tml-crooked-2 { + transform: scale(2.0, 1.1) + } + .tml-crooked-3 { + transform: scale(3.0, 1.3) + } + .tml-crooked-4 { + transform: scale(4.0, 1.4) + } + /* set array cell justification */ + .tml-right { + text-align: -webkit-right; + } + .tml-left { + text-align: -webkit-left; + } +} + +/* Adjust WebKit accents */ +@supports (-webkit-backdrop-filter: blur(1px)) { + .tml-xshift { transform: translate(0px, 0.45em) } + .tml-capshift { transform: translate(0px, 0.35em) } +} + +/* flex-wrap for line-breaking in Chromium */ +math { + display: inline-flex; + flex-wrap: wrap; + align-items: baseline; +} +math > mrow { + padding: 0.5ex 0ex; +} + +/* Default mtd top padding is 0.5ex per MathML-Core and user-agent CSS */ +/* We adjust for jot and small */ +mtable.tml-jot mtd { + padding-top: 0.7ex; + padding-bottom: 0.7ex; +} +mtable.tml-small mtd { + padding-top: 0.35ex; + padding-bottom: 0.35ex; +} + +/* Firefox */ +@-moz-document url-prefix() { + /* Avoid flex-wrap */ + math { display: inline; } + math > mrow { padding: 0 } + /* Adjust Firefox spacing between array rows */ + mtd, mtable.tml-small mtd { padding-top: 0; padding-bottom: 0; } + mtable.tml-jot mtd { padding-top: 0.2ex; padding-bottom: 0.ex; } +} + +/* AMS environment auto-numbering via CSS counter. */ +.tml-eqn::before { + counter-increment: tmlEqnNo; + content: "(" counter(tmlEqnNo) ")"; +} + +body { + counter-reset: tmlEqnNo; +} diff --git a/assets/Temml.woff2 b/assets/Temml.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fccefda4b3a0d812687d62efff0d6a554347ddc8 GIT binary patch literal 9404 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 Cd@~6E literal 0 HcmV?d00001 diff --git a/assets/highlight.css b/assets/highlight.css new file mode 100644 index 00000000..f2c4c4a7 --- /dev/null +++ b/assets/highlight.css @@ -0,0 +1,37 @@ +:root { + --light-yellow: #e5c07b; + --dark-yellow: #d19a66; + --blue: #61afef; + --cyan: #56b6c2; + --light-red: #e06c75; + --dark-red: #be5046; + --comment-gray: #5c6370; + --magenta: #c678dd; +} + +pre { + border-top: 1px solid white; + border-bottom: 1px solid white; + padding: 10px 5px; +} + +code.ziggy { + color: var(--cyan); +} + +code.ziggy .keyword, +code.ziggy .type { + color: var(--light-yellow); +} + +code.ziggy .string { + color: var(--dark-yellow); +} + +code.ziggy .numeric.constant { + color: var(--magenta); +} + +code.ziggy .function { + color: var(--blue); +} \ No newline at end of file diff --git a/assets/render-mathtex.js b/assets/render-mathtex.js new file mode 100644 index 00000000..b7a68a4d --- /dev/null +++ b/assets/render-mathtex.js @@ -0,0 +1,8 @@ +let eqns = document.querySelectorAll("script[type='math/tex']"); +for (let i=eqns.length-1; i>=0; i--) { + let eqn = eqns[i]; + let src = eqn.text; + let d = eqn.closest('p') == null; + eqn.outerHTML = temml.renderToString(src, { displayMode: d }); +} + diff --git a/assets/style.css b/assets/style.css new file mode 100644 index 00000000..5869753f --- /dev/null +++ b/assets/style.css @@ -0,0 +1,94 @@ +h1, +h2, +h3, +h4, +h5 { + color: #ddd; + font-family: "Verdana", sans-serif; +} + +b, +strong { + color: #fff; +} + +a { + color: #eee; +} + +html { + color: #ccc; + font-family: "Georgia", serif; + font-size: 1.2em; + display: flex; + flex-direction: row; + justify-content: center; + background-color: #111; +} + +body { + max-width: 800px; + overflow-x: scroll; + padding: 15px; + display: flex; + flex-direction: column; +} + +.site-title { + font-size: 2.5em; + margin-bottom: 10px; + /* text-align: center; */ +} + +nav { + display: flex; + flex-direction: row; + justify-content: left; + font-size: 1.2em; + margin-bottom: 20px; +} + +pre { + overflow-x: scroll; +} + +img { + max-width: 100vw; +} + +.block { + border: 1px dotted white; + padding: 5px 15px; + margin: 0 10px; + text-align: center; + display: flex; + flex-direction: column; + justify-content: center; +} + +.block h1 { + font-size: 1em; + text-align: center; + margin-bottom: 0; +} + +.small { + font-size: 0.8em; +} + +.wave { + background: #111; + color: #fff; + text-shadow: 1px 1px 10px #fff, 1px 1px 10px #ccc; +} + +footer { + margin-top: 30px; + display: flex; + flex-direction: column; + align-items: center; +} + +footer hr { + width: 100%; +} \ No newline at end of file diff --git a/assets/temml.min.js b/assets/temml.min.js new file mode 100644 index 00000000..68a0e9f8 --- /dev/null +++ b/assets/temml.min.js @@ -0,0 +1 @@ +var temml=function(){"use strict";class e{constructor(t,r){let n,s=" "+t;const o=r&&r.loc;if(o&&o.start<=o.end){const e=o.lexer.input;n=o.start;const t=o.end;n===e.length?s+=" at end of input: ":s+=" at position "+(n+1)+": \n";const r=e.slice(n,t).replace(/[^]/g,"$&̲");let a,l;a=n>15?"…"+e.slice(n-15,n):e.slice(0,n),l=t+15":">","<":"<",'"':""","'":"'"},n=/[&><"']/g;const s=function(e){return"ordgroup"===e.type||"color"===e.type?1===e.body.length?s(e.body[0]):e:"font"===e.type?s(e.body):e};var o={deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(n,(e=>r[e]))},hyphenate:function(e){return e.replace(t,"-$1").toLowerCase()},getBaseElem:s,isCharacterBox:function(e){const t=s(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){const t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"},round:function(e){return+e.toFixed(4)}};class a{constructor(e){e=e||{},this.displayMode=o.deflt(e.displayMode,!1),this.annotate=o.deflt(e.annotate,!1),this.leqno=o.deflt(e.leqno,!1),this.throwOnError=o.deflt(e.throwOnError,!1),this.errorColor=o.deflt(e.errorColor,"#b22222"),this.macros=e.macros||{},this.wrap=o.deflt(e.wrap,"tex"),this.xml=o.deflt(e.xml,!1),this.colorIsTextColor=o.deflt(e.colorIsTextColor,!1),this.strict=o.deflt(e.strict,!1),this.trust=o.deflt(e.trust,!1),this.maxSize=void 0===e.maxSize?[1/0,1/0]:Array.isArray(e.maxSize)?e.maxSize:[1/0,1/0],this.maxExpand=Math.max(0,o.deflt(e.maxExpand,1e3))}isTrusted(e){if(e.url&&!e.protocol){const t=o.protocolFromUrl(e.url);if(null==t)return!1;e.protocol=t}const t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)}}const l={},i={};function c({type:e,names:t,props:r,handler:n,mathmlBuilder:s}){const o={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:void 0===r.allowedInMath||r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:n};for(let e=0;ee.toText())).join("")}}const h=function(e){return e.filter((e=>e)).join(" ")},g=function(e,t){this.classes=e||[],this.attributes={},this.style=t||{}},f=function(e){const t=document.createElement(e);t.className=h(this.classes);for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t.style[e]=this.style[e]);for(const e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(let e=0;e`,t};class y{constructor(e,t,r){g.call(this,e,r),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}toNode(){return f.call(this,"span")}toMarkup(){return b.call(this,"span")}}let w=class{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return o.escape(this.text)}};class x{constructor(e,t,r){this.href=e,this.classes=t,this.children=r||[]}toNode(){const e=document.createElement("a");e.setAttribute("href",this.href),this.classes.length>0&&(e.className=h(this.classes));for(let t=0;t0&&(e+=` class="${o.escape(h(this.classes))}"`),e+=">";for(let t=0;t0&&(e.className=h(this.classes));for(const t in this.style)Object.prototype.hasOwnProperty.call(this.style,t)&&(e.style[t]=this.style[t]);for(let t=0;t0&&(e+=` class="${o.escape(h(this.classes))}"`);let t="";for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t+=`${o.hyphenate(e)}:${this.style[e]};`);t&&(e+=` style="${t}"`),e+=">";for(let t=0;t",e}toText(){return this.children.map((e=>e.toText())).join("")}}class A{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return o.escape(this.toText())}toText(){return this.text}}const N=e=>{let t;return 1===e.length&&"mrow"===e[0].type?(t=e.pop(),t.type="mstyle"):t=new v("mstyle",e),t};var T={MathNode:v,TextNode:A,newDocumentFragment:function(e){return new u(e)}};const S=e=>{let t=0;if(e.body)for(const r of e.body)t+=S(r);else if("supsub"===e.type)t+=S(e.base),e.sub&&(t+=.7*S(e.sub)),e.sup&&(t+=.7*S(e.sup));else if("mathord"===e.type||"textord"===e.type)for(const r of e.text.split("")){const e=r.codePointAt(0);t+=96{const t=O(e.label);if(M.includes(e.label)){const r=S(e.base);1","\\gt",!0),I(L,_,"∈","\\in",!0),I(L,_,"∉","\\notin",!0),I(L,_,"","\\@not"),I(L,_,"⊂","\\subset",!0),I(L,_,"⊃","\\supset",!0),I(L,_,"⊆","\\subseteq",!0),I(L,_,"⊇","\\supseteq",!0),I(L,_,"⊈","\\nsubseteq",!0),I(L,_,"⊈","\\nsubseteqq"),I(L,_,"⊉","\\nsupseteq",!0),I(L,_,"⊉","\\nsupseteqq"),I(L,_,"⊨","\\models"),I(L,_,"←","\\leftarrow",!0),I(L,_,"≤","\\le"),I(L,_,"≤","\\leq",!0),I(L,_,"<","\\lt",!0),I(L,_,"→","\\rightarrow",!0),I(L,_,"→","\\to"),I(L,_,"≱","\\ngeq",!0),I(L,_,"≱","\\ngeqq"),I(L,_,"≱","\\ngeqslant"),I(L,_,"≰","\\nleq",!0),I(L,_,"≰","\\nleqq"),I(L,_,"≰","\\nleqslant"),I(L,_,"⫫","\\Perp",!0),I(L,W," ","\\ "),I(L,W," ","\\space"),I(L,W," ","\\nobreakspace"),I(F,W," ","\\ "),I(F,W," "," "),I(F,W," ","\\space"),I(F,W," ","\\nobreakspace"),I(L,W,null,"\\nobreak"),I(L,W,null,"\\allowbreak"),I(L,V,",",","),I(F,V,":",":"),I(L,V,";",";"),I(L,G,"⊼","\\barwedge"),I(L,G,"⊻","\\veebar"),I(L,G,"⊙","\\odot",!0),I(L,G,"⊕︎","\\oplus"),I(L,G,"⊗","\\otimes",!0),I(L,X,"∂","\\partial",!0),I(L,G,"⊘","\\oslash",!0),I(L,G,"⊚","\\circledcirc",!0),I(L,G,"⊡","\\boxdot",!0),I(L,G,"△","\\bigtriangleup"),I(L,G,"▽","\\bigtriangledown"),I(L,G,"†","\\dagger"),I(L,G,"⋄","\\diamond"),I(L,G,"◃","\\triangleleft"),I(L,G,"▹","\\triangleright"),I(L,H,"{","\\{"),I(F,X,"{","\\{"),I(F,X,"{","\\textbraceleft"),I(L,j,"}","\\}"),I(F,X,"}","\\}"),I(F,X,"}","\\textbraceright"),I(L,H,"{","\\lbrace"),I(L,j,"}","\\rbrace"),I(L,H,"[","\\lbrack",!0),I(F,X,"[","\\lbrack",!0),I(L,j,"]","\\rbrack",!0),I(F,X,"]","\\rbrack",!0),I(L,H,"(","\\lparen",!0),I(L,j,")","\\rparen",!0),I(L,H,"⦇","\\llparenthesis",!0),I(L,j,"⦈","\\rrparenthesis",!0),I(F,X,"<","\\textless",!0),I(F,X,">","\\textgreater",!0),I(L,H,"⌊","\\lfloor",!0),I(L,j,"⌋","\\rfloor",!0),I(L,H,"⌈","\\lceil",!0),I(L,j,"⌉","\\rceil",!0),I(L,X,"\\","\\backslash"),I(L,X,"|","|"),I(L,X,"|","\\vert"),I(F,X,"|","\\textbar",!0),I(L,X,"‖","\\|"),I(L,X,"‖","\\Vert"),I(F,X,"‖","\\textbardbl"),I(F,X,"~","\\textasciitilde"),I(F,X,"\\","\\textbackslash"),I(F,X,"^","\\textasciicircum"),I(L,_,"↑","\\uparrow",!0),I(L,_,"⇑","\\Uparrow",!0),I(L,_,"↓","\\downarrow",!0),I(L,_,"⇓","\\Downarrow",!0),I(L,_,"↕","\\updownarrow",!0),I(L,_,"⇕","\\Updownarrow",!0),I(L,U,"∐","\\coprod"),I(L,U,"⋁","\\bigvee"),I(L,U,"⋀","\\bigwedge"),I(L,U,"⨄","\\biguplus"),I(L,U,"⨄","\\bigcupplus"),I(L,U,"⨃","\\bigcupdot"),I(L,U,"⨇","\\bigdoublevee"),I(L,U,"⨈","\\bigdoublewedge"),I(L,U,"⋂","\\bigcap"),I(L,U,"⋃","\\bigcup"),I(L,U,"∫","\\int"),I(L,U,"∫","\\intop"),I(L,U,"∬","\\iint"),I(L,U,"∭","\\iiint"),I(L,U,"∏","\\prod"),I(L,U,"∑","\\sum"),I(L,U,"⨂","\\bigotimes"),I(L,U,"⨁","\\bigoplus"),I(L,U,"⨀","\\bigodot"),I(L,U,"⨉","\\bigtimes"),I(L,U,"∮","\\oint"),I(L,U,"∯","\\oiint"),I(L,U,"∰","\\oiiint"),I(L,U,"∱","\\intclockwise"),I(L,U,"∲","\\varointclockwise"),I(L,U,"⨌","\\iiiint"),I(L,U,"⨍","\\intbar"),I(L,U,"⨎","\\intBar"),I(L,U,"⨏","\\fint"),I(L,U,"⨒","\\rppolint"),I(L,U,"⨓","\\scpolint"),I(L,U,"⨕","\\pointint"),I(L,U,"⨖","\\sqint"),I(L,U,"⨗","\\intlarhk"),I(L,U,"⨘","\\intx"),I(L,U,"⨙","\\intcap"),I(L,U,"⨚","\\intcup"),I(L,U,"⨅","\\bigsqcap"),I(L,U,"⨆","\\bigsqcup"),I(L,U,"∫","\\smallint"),I(F,P,"…","\\textellipsis"),I(L,P,"…","\\mathellipsis"),I(F,P,"…","\\ldots",!0),I(L,P,"…","\\ldots",!0),I(L,P,"⋰","\\iddots",!0),I(L,P,"⋯","\\@cdots",!0),I(L,P,"⋱","\\ddots",!0),I(L,X,"⋮","\\varvdots"),I(F,X,"⋮","\\varvdots"),I(L,D,"ˊ","\\acute"),I(L,D,"`","\\grave"),I(L,D,"¨","\\ddot"),I(L,D,"…","\\dddot"),I(L,D,"….","\\ddddot"),I(L,D,"~","\\tilde"),I(L,D,"‾","\\bar"),I(L,D,"˘","\\breve"),I(L,D,"ˇ","\\check"),I(L,D,"^","\\hat"),I(L,D,"→","\\vec"),I(L,D,"˙","\\dot"),I(L,D,"˚","\\mathring"),I(L,R,"ı","\\imath",!0),I(L,R,"ȷ","\\jmath",!0),I(L,X,"ı","ı"),I(L,X,"ȷ","ȷ"),I(F,X,"ı","\\i",!0),I(F,X,"ȷ","\\j",!0),I(F,X,"ø","\\o",!0),I(L,R,"ø","\\o",!0),I(F,X,"Ø","\\O",!0),I(L,R,"Ø","\\O",!0),I(F,D,"ˊ","\\'"),I(F,D,"ˋ","\\`"),I(F,D,"ˆ","\\^"),I(F,D,"˜","\\~"),I(F,D,"ˉ","\\="),I(F,D,"˘","\\u"),I(F,D,"˙","\\."),I(F,D,"¸","\\c"),I(F,D,"˚","\\r"),I(F,D,"ˇ","\\v");I(F,D,"¨",'\\"'),I(F,D,"˝","\\H"),I(L,D,"ˊ","\\'"),I(L,D,"ˋ","\\`"),I(L,D,"ˆ","\\^"),I(L,D,"˜","\\~"),I(L,D,"ˉ","\\="),I(L,D,"˘","\\u"),I(L,D,"˙","\\."),I(L,D,"¸","\\c"),I(L,D,"˚","\\r"),I(L,D,"ˇ","\\v"),I(L,D,"¨",'\\"'),I(L,D,"˝","\\H");const Z={"--":!0,"---":!0,"``":!0,"''":!0};I(F,X,"–","--",!0),I(F,X,"–","\\textendash"),I(F,X,"—","---",!0),I(F,X,"—","\\textemdash"),I(F,X,"‘","`",!0),I(F,X,"‘","\\textquoteleft"),I(F,X,"’","'",!0),I(F,X,"’","\\textquoteright"),I(F,X,"“","``",!0),I(F,X,"“","\\textquotedblleft"),I(F,X,"”","''",!0),I(F,X,"”","\\textquotedblright"),I(L,X,"°","\\degree",!0),I(F,X,"°","\\degree"),I(F,X,"°","\\textdegree",!0),I(L,X,"£","\\pounds"),I(L,X,"£","\\mathsterling",!0),I(F,X,"£","\\pounds"),I(F,X,"£","\\textsterling",!0),I(L,X,"✠","\\maltese"),I(F,X,"✠","\\maltese"),I(L,X,"€","\\euro",!0),I(F,X,"€","\\euro",!0),I(F,X,"€","\\texteuro"),I(L,X,"©","\\copyright",!0),I(F,X,"©","\\textcopyright"),I(L,X,"⌀","\\diameter",!0),I(F,X,"⌀","\\diameter"),I(L,X,"𝛤","\\varGamma"),I(L,X,"𝛥","\\varDelta"),I(L,X,"𝛩","\\varTheta"),I(L,X,"𝛬","\\varLambda"),I(L,X,"𝛯","\\varXi"),I(L,X,"𝛱","\\varPi"),I(L,X,"𝛴","\\varSigma"),I(L,X,"𝛶","\\varUpsilon"),I(L,X,"𝛷","\\varPhi"),I(L,X,"𝛹","\\varPsi"),I(L,X,"𝛺","\\varOmega"),I(F,X,"𝛤","\\varGamma"),I(F,X,"𝛥","\\varDelta"),I(F,X,"𝛩","\\varTheta"),I(F,X,"𝛬","\\varLambda"),I(F,X,"𝛯","\\varXi"),I(F,X,"𝛱","\\varPi"),I(F,X,"𝛴","\\varSigma"),I(F,X,"𝛶","\\varUpsilon"),I(F,X,"𝛷","\\varPhi"),I(F,X,"𝛹","\\varPsi"),I(F,X,"𝛺","\\varOmega");const Y='0123456789/@."';for(let e=0;e<14;e++){const t=Y.charAt(e);I(L,X,t,t)}const J='0123456789!@*()-=+";:?/.,';for(let e=0;e<25;e++){const t=J.charAt(e);I(F,X,t,t)}const K="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";for(let e=0;e<52;e++){const t=K.charAt(e);I(L,R,t,t),I(F,X,t,t)}const Q="ÇÐÞçþℂℍℕℙℚℝℤℎℏℊℋℌℐℑℒℓ℘ℛℜℬℰℱℳℭℨ";for(let e=0;e<30;e++){const t=Q.charAt(e);I(L,R,t,t),I(F,X,t,t)}let ee="";for(let e=0;e<52;e++){ee=String.fromCharCode(55349,56320+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56372+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56424+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56580+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56736+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56788+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56840+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56944+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56632+e),I(L,R,ee,ee),I(F,X,ee,ee);const t=K.charAt(e);ee=String.fromCharCode(55349,56476+e),I(L,R,t,ee),I(F,X,t,ee)}for(let e=0;e<10;e++)ee=String.fromCharCode(55349,57294+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,57314+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,57324+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,57334+e),I(L,R,ee,ee),I(F,X,ee,ee);const te=function(e,t,r){return!$[t][e]||!$[t][e].replace||55349===e.charCodeAt(0)||Object.prototype.hasOwnProperty.call(Z,e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.slice(4,6)||r.font&&"tt"===r.font.slice(4,6))||(e=$[t][e].replace),new T.TextNode(e)},re=(e,t)=>{if(0===e.children.length||"mtext"!==e.children[e.children.length-1].type){const r=new T.MathNode("mtext",[new T.TextNode(t.children[0].text)]);e.children.push(r)}else e.children[e.children.length-1].children[0].text+=t.children[0].text},ne=e=>{if("mrow"!==e.type&&"mstyle"!==e.type)return e;if(0===e.children.length)return e;const t=new T.MathNode("mrow");for(let r=0;r0&&" "===n.children[0].text.charAt(s-1)&&(n.children[0].text=n.children[0].text.slice(0,-1)+" ");for(const[t,r]of Object.entries(e.attributes))n.attributes[t]=r}return 1===t.children.length&&"mtext"===t.children[0].type?t.children[0]:t},se=function(e,t=!1){if(!(1!==e.length||e[0]instanceof u))return e[0];if(!t){e[0]instanceof v&&"mo"===e[0].type&&!e[0].attributes.fence&&(e[0].attributes.lspace="0em",e[0].attributes.rspace="0em");const t=e.length-1;e[t]instanceof v&&"mo"===e[t].type&&!e[t].attributes.fence&&(e[t].attributes.lspace="0em",e[t].attributes.rspace="0em")}return new T.MathNode("mrow",e)};function oe(e){if(!e)return!1;if("mi"===e.type&&1===e.children.length){const t=e.children[0];return t instanceof A&&"."===t.text}if("mtext"===e.type&&1===e.children.length){const t=e.children[0];return t instanceof A&&" "===t.text}if("mo"===e.type&&1===e.children.length&&"true"===e.getAttribute("separator")&&"0em"===e.getAttribute("lspace")&&"0em"===e.getAttribute("rspace")){const t=e.children[0];return t instanceof A&&","===t.text}return!1}const ae=(e,t)=>{const r=e[t],n=e[t+1];return"atom"===r.type&&","===r.text&&r.loc&&n.loc&&r.loc.end===n.loc.start},le=e=>"atom"===e.type&&"rel"===e.family||"mclass"===e.type&&"mrel"===e.mclass,ie=function(e,t,r=!1){if(!r&&1===e.length){const r=de(e[0],t);return r instanceof v&&"mo"===r.type&&(r.setAttribute("lspace","0em"),r.setAttribute("rspace","0em")),[r]}const n=[],s=[];let o;for(let r=0;r0&&le(e[t])&&le(e[t-1])&&r.setAttribute("lspace","0em"),"mn"===r.type&&o&&"mn"===o.type)o.children.push(...r.children);else if(oe(r)&&o&&"mn"===o.type)o.children.push(...r.children);else if(o&&"mn"===o.type&&t=1&&o&&("mn"===o.type||oe(o))){const e=r.children[0];e instanceof v&&"mn"===e.type&&o&&(e.children=[...o.children,...e.children],n.pop())}n.push(r),o=r}}return n},ce=function(e,t,r=!1){return se(ie(e,t,r),r)},de=function(t,r){if(!t)return new T.MathNode("mrow");if(i[t.type]){return i[t.type](t,r)}throw new e("Got group of unknown type: '"+t.type+"'")},me=e=>new T.MathNode("mtd",[],[],{padding:"0",width:"50%"}),pe=["mrow","mtd","mtable","mtr"],ue=e=>{for(const t of e.children)if(t.type&&pe.includes(t.type)){if(t.classes&&"tml-label"===t.classes[0]){return t.label}{const e=ue(t);if(e)return e}}else if(!t.type){const e=ue(t);if(e)return e}};function he(e,t,r,n){let s=null;1===e.length&&"tag"===e[0].type&&(s=e[0].tag,e=e[0].body);const o=ie(e,r);if(1===o.length&&o[0]instanceof x)return o[0];const a=n.displayMode||n.annotate?"none":n.wrap,l=0===o.length?null:o[0];let i=1===o.length&&null===s&&l instanceof v?o[0]:function(e,t,r){const n=[];let s=[],o=[],a=0,l=0,i=0;for(;l0&&s.push(new T.MathNode("mrow",o)),s.push(r),o=[];const e=new T.MathNode("mtd",s);e.style.textAlign="left",n.push(new T.MathNode("mtr",[e])),s=[],l+=1}else{if(o.push(r),r.type&&"mo"===r.type&&1===r.children.length&&!Object.prototype.hasOwnProperty.call(r.attributes,"movablelimits")){const n=r.children[0].text;if("([{⌊⌈⟨⟮⎰⟦⦃".indexOf(n)>-1)i+=1;else if(")]}⌋⌉⟩⟯⎱⟦⦄".indexOf(n)>-1)i-=1;else if(0===i&&"="===t&&"="===n){if(a+=1,a>1){o.pop();const e=new T.MathNode("mrow",o);s.push(e),o=[r]}}else if(0===i&&"tex"===t&&"∇"!==n){const t=l0){const e=new T.MathNode("mrow",o);s.push(e)}if(n.length>0){const e=new T.MathNode("mtd",s);e.style.textAlign="left";const t=new T.MathNode("mtr",[e]);n.push(t);const o=new T.MathNode("mtable",n);return r||(o.setAttribute("columnalign","left"),o.setAttribute("rowspacing","0em")),o}return T.newDocumentFragment(s)}(o,a,n.displayMode);if(s&&(i=((e,t,r,n)=>{t=ce(t[0].body,r),(t=ne(t)).classes.push("tml-tag");const s=ue(e);e=new T.MathNode("mtd",[e]);const o=[me(),e,me()];o[n?0:2].classes.push(n?"tml-left":"tml-right"),o[n?0:2].children.push(t);const a=new T.MathNode("mtr",o,["tml-tageqn"]);s&&a.setAttribute("id",s);const l=new T.MathNode("mtable",[a]);return l.style.width="100%",l.setAttribute("displaystyle","true"),l})(i,s,r,n.leqno)),n.annotate){const e=new T.MathNode("annotation",[new T.TextNode(t)]);e.setAttribute("encoding","application/x-tex"),i=new T.MathNode("semantics",[i,e])}const c=new T.MathNode("math",[i]);return n.xml&&c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),i.style.width&&(c.style.width="100%"),n.displayMode&&(c.setAttribute("display","block"),c.style.display="block math",c.classes=["tml-display"]),c}const ge="acegıȷmnopqrsuvwxyzαγεηικμνοπρςστυχωϕ𝐚𝐜𝐞𝐠𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐮𝐯𝐰𝐱𝐲𝐳",fe="ABCDEFGHIJKLMNOPQRSTUVWXYZbdfhkltΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩβδλζφθψ𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙𝐛𝐝𝐟𝐡𝐤𝐥𝐭",be=new Set(["\\alpha","\\gamma","\\delta","\\epsilon","\\eta","\\iota","\\kappa","\\mu","\\nu","\\pi","\\rho","\\sigma","\\tau","\\upsilon","\\chi","\\psi","\\omega","\\imath","\\jmath"]),ye=new Set(["\\Gamma","\\Delta","\\Sigma","\\Omega","\\beta","\\delta","\\lambda","\\theta","\\psi"]),we=(e,t)=>{const r=e.isStretchy?C(e):new T.MathNode("mo",[te(e.label,e.mode)]);if("\\vec"===e.label)r.style.transform="scale(0.75) translate(10%, 30%)";else if(r.style.mathStyle="normal",r.style.mathDepth="0",ke.has(e.label)&&o.isCharacterBox(e.base)){let t="";const n=e.base.text;(ge.indexOf(n)>-1||be.has(n))&&(t="tml-xshift"),(fe.indexOf(n)>-1||ye.has(n))&&(t="tml-capshift"),t&&r.classes.push(t)}e.isStretchy||r.setAttribute("stretchy","false");return new T.MathNode("\\c"===e.label?"munder":"mover",[de(e.base,t),r])},xe=new Set(["\\acute","\\grave","\\ddot","\\dddot","\\ddddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"]),ke=new Set(["\\acute","\\bar","\\breve","\\check","\\dot","\\ddot","\\grave","\\hat","\\mathring","\\'","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v"]),ve={"\\`":"̀","\\'":"́","\\^":"̂","\\~":"̃","\\=":"̄","\\u":"̆","\\.":"̇",'\\"':"̈","\\r":"̊","\\H":"̋","\\v":"̌"};c({type:"accent",names:["\\acute","\\grave","\\ddot","\\dddot","\\ddddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\overparen","\\widecheck","\\widehat","\\wideparen","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{const r=m(t[0]),n=!xe.has(e.funcName);return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,base:r}},mathmlBuilder:we}),c({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\c","\\u","\\.",'\\"',"\\r","\\H","\\v"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{const r=m(t[0]),n=e.parser.mode;return"math"===n&&e.parser.settings.strict&&console.log(`Temml parse error: Command ${e.funcName} is invalid in math mode.`),"text"===n&&r.text&&1===r.text.length&&e.funcName in ve&&ge.indexOf(r.text)>-1?{type:"textord",mode:"text",text:r.text+ve[e.funcName]}:{type:"accent",mode:n,label:e.funcName,isStretchy:!1,base:r}},mathmlBuilder:we}),c({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underparen","\\utilde"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>{const n=r[0];return{type:"accentUnder",mode:e.mode,label:t,base:n}},mathmlBuilder:(e,t)=>{const r=C(e);r.style["math-depth"]=0;return new T.MathNode("munder",[de(e.base,t),r])}});const Ae={pt:800/803,pc:9600/803,dd:1238/1157*800/803,cc:12.792133216944668,nd:685/642*800/803,nc:1370/107*800/803,sp:1/65536*800/803,mm:25.4/72,cm:2.54/72,in:1/72,px:96/72},Ne=["em","ex","mu","pt","mm","cm","in","px","bp","pc","dd","cc","nd","nc","sp"],Te=function(e){return"string"!=typeof e&&(e=e.unit),Ne.indexOf(e)>-1},Se=e=>[1,.7,.5][Math.max(e-1,0)],qe=function(t,r){let n=t.number;if(r.maxSize[0]<0&&n>0)return{number:0,unit:"em"};const s=t.unit;switch(s){case"mm":case"cm":case"in":case"px":return n*Ae[s]>r.maxSize[1]?{number:r.maxSize[1],unit:"pt"}:{number:n,unit:s};case"em":case"ex":return"ex"===s&&(n*=.431),n=Math.min(n/Se(r.level),r.maxSize[0]),{number:o.round(n),unit:"em"};case"bp":return n>r.maxSize[1]&&(n=r.maxSize[1]),{number:n,unit:"pt"};case"pt":case"pc":case"dd":case"cc":case"nd":case"nc":case"sp":return n=Math.min(n*Ae[s],r.maxSize[1]),{number:o.round(n),unit:"pt"};case"mu":return n=Math.min(n/18,r.maxSize[0]),{number:o.round(n),unit:"em"};default:throw new e("Invalid unit: '"+s+"'")}},Oe=e=>{const t=new T.MathNode("mspace");return t.setAttribute("width",e+"em"),t},Me=(e,t=.3,r=0,n=!1)=>{if(null==e&&0===r)return Oe(t);const s=e?[e]:[];if(0!==t&&s.unshift(Oe(t)),r>0&&s.push(Oe(r)),n){const e=new T.MathNode("mpadded",s);return e.setAttribute("height","0"),e}return new T.MathNode("mrow",s)},Be=(e,t)=>Number(e)/Se(t),Ce=(e,t,r,n)=>{const s=B(e),o="eq"===e.slice(1,3),a="x"===e.charAt(1)?"1.75":"cd"===e.slice(2,4)?"3.0":o?"1.0":"2.0";s.setAttribute("lspace","0"),s.setAttribute("rspace",o?"0.5em":"0");const l=n.withLevel(n.level<2?2:3),i=Be(a,l.level),c=Be(a,3),d=Me(null,i.toFixed(4),0),m=Me(null,c.toFixed(4),0),p=Be(o?0:.3,l.level).toFixed(4);let u,h;const g=t&&t.body&&(t.body.body||t.body.length>0);if(g){let r=de(t,l);r=Me(r,p,p,"\\\\cdrightarrow"===e||"\\\\cdleftarrow"===e),u=new T.MathNode("mover",[r,m])}const f=r&&r.body&&(r.body.body||r.body.length>0);if(f){let e=de(r,l);e=Me(e,p,p),h=new T.MathNode("munder",[e,m])}let b;return b=g||f?g&&f?new T.MathNode("munderover",[s,h,u]):g?new T.MathNode("mover",[s,u]):new T.MathNode("munder",[s,h]):new T.MathNode("mover",[s,d]),"3.0"===a&&(b.style.height="1em"),b.setAttribute("accent","false"),b};c({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\yields","\\yieldsLeft","\\mesomerism","\\longrightharpoonup","\\longleftharpoondown","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler:({parser:e,funcName:t},r,n)=>({type:"xArrow",mode:e.mode,name:t,body:r[0],below:n[0]}),mathmlBuilder(e,t){const r=[Ce(e.name,e.body,e.below,t)];return r.unshift(Oe(.2778)),r.push(Oe(.2778)),new T.MathNode("mrow",r)}});const ze={"\\xtofrom":["\\xrightarrow","\\xleftarrow"],"\\xleftrightharpoons":["\\xleftharpoonup","\\xrightharpoondown"],"\\xrightleftharpoons":["\\xrightharpoonup","\\xleftharpoondown"],"\\yieldsLeftRight":["\\yields","\\yieldsLeft"],"\\equilibrium":["\\longrightharpoonup","\\longleftharpoondown"],"\\equilibriumRight":["\\longrightharpoonup","\\eqleftharpoondown"],"\\equilibriumLeft":["\\eqrightharpoonup","\\longleftharpoondown"]};c({type:"stackedArrow",names:["\\xtofrom","\\xleftrightharpoons","\\xrightleftharpoons","\\yieldsLeftRight","\\equilibrium","\\equilibriumRight","\\equilibriumLeft"],props:{numArgs:1,numOptionalArgs:1},handler({parser:e,funcName:t},r,n){const s=r[0]?{type:"hphantom",mode:e.mode,body:r[0]}:null,o=n[0]?{type:"hphantom",mode:e.mode,body:n[0]}:null;return{type:"stackedArrow",mode:e.mode,name:t,body:r[0],upperArrowBelow:o,lowerArrowBody:s,below:n[0]}},mathmlBuilder(e,t){const r=ze[e.name][0],n=ze[e.name][1],s=Ce(r,e.body,e.upperArrowBelow,t),o=Ce(n,e.lowerArrowBody,e.below,t);let a;const l=new T.MathNode("mpadded",[s]);if(l.setAttribute("voffset","0.3em"),l.setAttribute("height","+0.3em"),l.setAttribute("depth","-0.3em"),"\\equilibriumLeft"===e.name){const e=new T.MathNode("mpadded",[o]);e.setAttribute("width","0.5em"),a=new T.MathNode("mpadded",[Oe(.2778),e,l,Oe(.2778)])}else l.setAttribute("width","\\equilibriumRight"===e.name?"0.5em":"0"),a=new T.MathNode("mpadded",[Oe(.2778),l,o,Oe(.2778)]);return a.setAttribute("voffset","-0.18em"),a.setAttribute("height","-0.18em"),a.setAttribute("depth","+0.18em"),a}});const Ee={};function $e({type:e,names:t,props:r,handler:n,mathmlBuilder:s}){const o={type:e,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n};for(let e=0;e":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},Ge=e=>"textord"===e.type&&"@"===e.text;function je(e,t,r){const n=De[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{const e={type:"atom",text:n,mode:"math",family:"rel"},s={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[e],[]),r.callFunction("\\\\cdright",[t[1]],[])],semisimple:!0};return r.callFunction("\\\\cdparent",[s],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{const e={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[e],[])}default:return{type:"textord",text:" ",mode:"math"}}}c({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>({type:"cdlabel",mode:e.mode,side:t.slice(4),label:r[0]}),mathmlBuilder(e,t){if(0===e.label.body.length)return new T.MathNode("mrow",t);const r=new T.MathNode("mtd",[de(e.label,t)]);r.style.padding="0";const n=new T.MathNode("mtr",[r]),s=new T.MathNode("mtable",[n]),o=new T.MathNode("mpadded",[s]);return o.setAttribute("width","0"),o.setAttribute("displaystyle","false"),o.setAttribute("scriptlevel","1"),"left"===e.side&&(o.style.display="flex",o.style.justifyContent="flex-end"),o}}),c({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler:({parser:e},t)=>({type:"cdlabelparent",mode:e.mode,fragment:t[0]}),mathmlBuilder:(e,t)=>new T.MathNode("mrow",[de(e.fragment,t)])});const Pe=e=>({type:"ordgroup",mode:"math",body:e,semisimple:!0}),Re=(e,t)=>({type:t,mode:"math",body:Pe(e)});class Ue{constructor(e,t,r){this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new Ue(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class He{constructor(e,t){this.text=e,this.loc=t}range(e,t){return new He(t,Ue.range(this,e))}}const Ve=0,_e=1,We=2,Xe=3,Ze={};function Ye(e,t){Ze[e]=t}const Je=Ze;Ye("\\noexpand",(function(e){const t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),Ye("\\expandafter",(function(e){const t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),Ye("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),Ye("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),Ye("\\@ifnextchar",(function(e){const t=e.consumeArgs(3);e.consumeSpaces();const r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),Ye("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Ye("\\TextOrMath",(function(e){const t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));const Ke=e=>{let t="";for(let r=e.length-1;r>-1;r--)t+=e[r].text;return t},Qe={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15},et=e=>{const t=e.future().text;return"EOF"===t?[null,""]:[Qe[t.charAt(0)],t]},tt=(e,t,r)=>{for(let n=1;n=0;e--){const s=t[e].loc.start;s>n&&(r+=" ",n=s),r+=t[e].text,n+=t[e].text.length}return r}Ye("\\char",(function(t){let r,n=t.popToken(),s="";if("'"===n.text)r=8,n=t.popToken();else if('"'===n.text)r=16,n=t.popToken();else if("`"===n.text)if(n=t.popToken(),"\\"===n.text[0])s=n.text.charCodeAt(1);else{if("EOF"===n.text)throw new e("\\char` missing argument");s=n.text.charCodeAt(0)}else r=10;if(r){let o,a=n.text;if(s=Qe[a.charAt(0)],null==s||s>=r)throw new e(`Invalid base-${r} digit ${n.text}`);for(s=tt(s,a,r),[o,a]=et(t);null!=o&&o":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcap":"\\dotsb","\\bigsqcup":"\\dotsb","\\bigtimes":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Ye("\\dots",(function(e){let t="\\dotso";const r=e.expandAfterFuture().text;return r in nt?t=nt[r]:("\\not"===r.slice(0,4)||r in $.math&&["bin","rel"].includes($.math[r].group))&&(t="\\dotsb"),t}));const st={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Ye("\\dotso",(function(e){return e.future().text in st?"\\ldots\\,":"\\ldots"})),Ye("\\dotsc",(function(e){const t=e.future().text;return t in st&&","!==t?"\\ldots\\,":"\\ldots"})),Ye("\\cdots",(function(e){return e.future().text in st?"\\@cdots\\,":"\\@cdots"})),Ye("\\dotsb","\\cdots"),Ye("\\dotsm","\\cdots"),Ye("\\dotsi","\\!\\cdots"),Ye("\\idotsint","\\dotsi"),Ye("\\dotsx","\\ldots\\,"),Ye("\\DOTSI","\\relax"),Ye("\\DOTSB","\\relax"),Ye("\\DOTSX","\\relax"),Ye("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Ye("\\,","{\\tmspace+{3mu}{.1667em}}"),Ye("\\thinspace","\\,"),Ye("\\>","\\mskip{4mu}"),Ye("\\:","{\\tmspace+{4mu}{.2222em}}"),Ye("\\medspace","\\:"),Ye("\\;","{\\tmspace+{5mu}{.2777em}}"),Ye("\\thickspace","\\;"),Ye("\\!","{\\tmspace-{3mu}{.1667em}}"),Ye("\\negthinspace","\\!"),Ye("\\negmedspace","{\\tmspace-{4mu}{.2222em}}"),Ye("\\negthickspace","{\\tmspace-{5mu}{.277em}}"),Ye("\\enspace","\\kern.5em "),Ye("\\enskip","\\hskip.5em\\relax"),Ye("\\quad","\\hskip1em\\relax"),Ye("\\qquad","\\hskip2em\\relax"),Ye("\\AA","\\TextOrMath{\\Angstrom}{\\mathring{A}}\\relax"),Ye("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Ye("\\tag@paren","\\tag@literal{({#1})}"),Ye("\\tag@literal",(t=>{if(t.macros.get("\\df@tag"))throw new e("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"})),Ye("\\notag","\\nonumber"),Ye("\\nonumber","\\gdef\\@eqnsw{0}"),Ye("\\bmod","\\mathbin{\\text{mod}}"),Ye("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Ye("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Ye("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Ye("\\newline","\\\\\\relax"),Ye("\\TeX","\\textrm{T}\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125em\\textrm{X}"),Ye("\\LaTeX","\\textrm{L}\\kern-.35em\\raisebox{0.2em}{\\scriptstyle A}\\kern-.15em\\TeX"),Ye("\\Temml","\\textrm{T}\\kern-0.2em\\lower{0.2em}{\\textrm{E}}\\kern-0.08em{\\textrm{M}\\kern-0.08em\\raise{0.2em}\\textrm{M}\\kern-0.08em\\textrm{L}}"),Ye("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Ye("\\@hspace","\\hskip #1\\relax"),Ye("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Ye("\\colon",'\\mathpunct{\\char"3a}'),Ye("\\prescript","\\pres@cript{_{#1}^{#2}}{}{#3}"),Ye("\\ordinarycolon",'\\char"3a'),Ye("\\vcentcolon","\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}}"),Ye("\\coloneq",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"2212}'),Ye("\\Coloneq",'\\mathrel{\\char"2237\\char"2212}'),Ye("\\Eqqcolon",'\\mathrel{\\char"3d\\char"2237}'),Ye("\\Eqcolon",'\\mathrel{\\char"2212\\char"2237}'),Ye("\\colonapprox",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"2248}'),Ye("\\Colonapprox",'\\mathrel{\\char"2237\\char"2248}'),Ye("\\colonsim",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"223c}'),Ye("\\Colonsim",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"223c}'),Ye("\\ratio","\\vcentcolon"),Ye("\\coloncolon","\\dblcolon"),Ye("\\colonequals","\\coloneqq"),Ye("\\coloncolonequals","\\Coloneqq"),Ye("\\equalscolon","\\eqqcolon"),Ye("\\equalscoloncolon","\\Eqqcolon"),Ye("\\colonminus","\\coloneq"),Ye("\\coloncolonminus","\\Coloneq"),Ye("\\minuscolon","\\eqcolon"),Ye("\\minuscoloncolon","\\Eqcolon"),Ye("\\coloncolonapprox","\\Colonapprox"),Ye("\\coloncolonsim","\\Colonsim"),Ye("\\notni","\\mathrel{\\char`∌}"),Ye("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Ye("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Ye("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Ye("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Ye("\\varlimsup","\\DOTSB\\operatorname*{\\overline{\\text{lim}}}"),Ye("\\varliminf","\\DOTSB\\operatorname*{\\underline{\\text{lim}}}"),Ye("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{\\text{lim}}}"),Ye("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{\\text{lim}}}"),Ye("\\centerdot","{\\medspace\\rule{0.167em}{0.189em}\\medspace}"),Ye("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Ye("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Ye("\\plim","\\DOTSB\\operatorname*{plim}"),Ye("\\leftmodels","\\mathop{\\reflectbox{$\\models$}}"),Ye("\\bra","\\mathinner{\\langle{#1}|}"),Ye("\\ket","\\mathinner{|{#1}\\rangle}"),Ye("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Ye("\\Bra","\\left\\langle#1\\right|"),Ye("\\Ket","\\left|#1\\right\\rangle");const ot=(e,t)=>{const r=`}\\,\\middle${"|"===t[0]?"\\vert":"\\Vert"}\\,{`;return e.slice(0,t.index)+r+e.slice(t.index+t[0].length)};Ye("\\Braket",(function(e){let t=rt(e);const r=/\|\||\||\\\|/g;let n;for(;null!==(n=r.exec(t));)t=ot(t,n);return"\\left\\langle{"+t+"}\\right\\rangle"})),Ye("\\Set",(function(e){let t=rt(e);const r=/\|\||\||\\\|/.exec(t);return r&&(t=ot(t,r)),"\\left\\{\\:{"+t+"}\\:\\right\\}"})),Ye("\\set",(function(e){return"\\{{"+rt(e).replace(/\|/,"}\\mid{")+"}\\}"})),Ye("\\angln","{\\angl n}"),Ye("\\odv","\\@ifstar\\odv@next\\odv@numerator"),Ye("\\odv@numerator","\\frac{\\mathrm{d}#1}{\\mathrm{d}#2}"),Ye("\\odv@next","\\frac{\\mathrm{d}}{\\mathrm{d}#2}#1"),Ye("\\pdv","\\@ifstar\\pdv@next\\pdv@numerator");const at=e=>{const t=e[0][0].text,r=Ke(e[1]).split(","),n=String(r.length),s="1"===n?"\\partial":`\\partial^${n}`;let o="";return r.map((e=>{o+="\\partial "+e.trim()+"\\,"})),[t,s,o.replace(/\\,$/,"")]};function lt(e){const t=[];e.consumeSpaces();let r=e.fetch().text;for("\\relax"===r&&(e.consume(),e.consumeSpaces(),r=e.fetch().text);"\\hline"===r||"\\hdashline"===r;)e.consume(),t.push("\\hdashline"===r),e.consumeSpaces(),r=e.fetch().text;return t}Ye("\\pdv@numerator",(function(e){const[t,r,n]=at(e.consumeArgs(2));return`\\frac{${r} ${t}}{${n}}`})),Ye("\\pdv@next",(function(e){const[t,r,n]=at(e.consumeArgs(2));return`\\frac{${r}}{${n}} ${t}`})),Ye("\\upalpha","\\up@greek{\\alpha}"),Ye("\\upbeta","\\up@greek{\\beta}"),Ye("\\upgamma","\\up@greek{\\gamma}"),Ye("\\updelta","\\up@greek{\\delta}"),Ye("\\upepsilon","\\up@greek{\\epsilon}"),Ye("\\upzeta","\\up@greek{\\zeta}"),Ye("\\upeta","\\up@greek{\\eta}"),Ye("\\uptheta","\\up@greek{\\theta}"),Ye("\\upiota","\\up@greek{\\iota}"),Ye("\\upkappa","\\up@greek{\\kappa}"),Ye("\\uplambda","\\up@greek{\\lambda}"),Ye("\\upmu","\\up@greek{\\mu}"),Ye("\\upnu","\\up@greek{\\nu}"),Ye("\\upxi","\\up@greek{\\xi}"),Ye("\\upomicron","\\up@greek{\\omicron}"),Ye("\\uppi","\\up@greek{\\pi}"),Ye("\\upalpha","\\up@greek{\\alpha}"),Ye("\\uprho","\\up@greek{\\rho}"),Ye("\\upsigma","\\up@greek{\\sigma}"),Ye("\\uptau","\\up@greek{\\tau}"),Ye("\\upupsilon","\\up@greek{\\upsilon}"),Ye("\\upphi","\\up@greek{\\phi}"),Ye("\\upchi","\\up@greek{\\chi}"),Ye("\\uppsi","\\up@greek{\\psi}"),Ye("\\upomega","\\up@greek{\\omega}"),Ye("\\invamp",'\\mathbin{\\char"214b}'),Ye("\\parr",'\\mathbin{\\char"214b}'),Ye("\\with",'\\mathbin{\\char"26}'),Ye("\\multimapinv",'\\mathrel{\\char"27dc}'),Ye("\\multimapboth",'\\mathrel{\\char"29df}'),Ye("\\scoh",'{\\mkern5mu\\char"2322\\mkern5mu}'),Ye("\\sincoh",'{\\mkern5mu\\char"2323\\mkern5mu}'),Ye("\\coh",'{\\mkern5mu\\rule{}{0.7em}\\mathrlap{\\smash{\\raise2mu{\\char"2322}}}\n{\\smash{\\lower4mu{\\char"2323}}}\\mkern5mu}'),Ye("\\incoh",'{\\mkern5mu\\rule{}{0.7em}\\mathrlap{\\smash{\\raise2mu{\\char"2323}}}\n{\\smash{\\lower4mu{\\char"2322}}}\\mkern5mu}'),Ye("\\standardstate","\\text{\\tiny\\char`⦵}");const it=t=>{if(!t.parser.settings.displayMode)throw new e(`{${t.envName}} can be used only in display mode.`)},ct=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/,dt=e=>{let t=e.get("\\arraystretch");"string"!=typeof t&&(t=Ke(t.tokens)),t=isNaN(t)?null:Number(t);let r=e.get("\\arraycolsep");"string"!=typeof r&&(r=Ke(r.tokens));const n=ct.exec(r);return[t,n?{number:+(n[1]+n[2]),unit:n[3]}:null]},mt=t=>{let r="";for(let n=0;n1||!a)&&h.pop(),f.push(mt(r.body)),b.length{const t=new T.MathNode("mtd",[]);return t.style={padding:"0",width:"50%"},e.envClasses.includes("multline")&&(t.style.width="7.5%"),t},bt=function(e,t){const r=[],n=e.body.length,s=e.hLinesBeforeRow;for(let o=0;o0&&(2===s[0].length?d.children.forEach((e=>{e.style.borderTop="0.15em double"})):d.children.forEach((e=>{e.style.borderTop=s[0][0]?"0.06em dashed":"0.06em solid"}))),s[o+1].length>0&&(2===s[o+1].length?d.children.forEach((e=>{e.style.borderBottom="0.15em double"})):d.children.forEach((e=>{e.style.borderBottom=s[o+1][0]?"0.06em dashed":"0.06em solid"})));let p=!0;for(let e=0;e0&&(o=e.envClasses.includes("abut")||e.envClasses.includes("cases")?"0":e.envClasses.includes("small")?"0.1389":e.envClasses.includes("cd")?"0.25":"0.4",a="em"),e.arraycolsep){const r=qe(e.arraycolsep,t);o=r.number.toFixed(4),a=r.unit}if(o){const t=0===r.length?0:r[0].children.length,n=(r,n)=>0===r&&0===n||r===t-1&&1===n?"0":"align"!==e.envClasses[0]?o:1===n?"0":e.autoTag?r%2?"1":"0":r%2?"0":"1";for(let e=0;e0){const t=e.envClasses.includes("align")||e.envClasses.includes("alignat");for(let n=0;n1&&e.envClasses.includes("cases")&&(s.children[1].style.paddingLeft="1em"),e.envClasses.includes("cases")||e.envClasses.includes("subarray"))for(const e of s.children)e.classes.push("tml-left")}}let l=new T.MathNode("mtable",r);e.envClasses.length>0&&(e.envClasses.includes("jot")?l.classes.push("tml-jot"):e.envClasses.includes("small")&&l.classes.push("tml-small")),"display"===e.scriptLevel&&l.setAttribute("displaystyle","true"),(e.autoTag||e.envClasses.includes("multline"))&&(l.style.width="100%");let i="";if(e.cols&&e.cols.length>0){const t=e.cols;let r=!1,n=0,s=t.length;for(;"separator"===t[n].type;)n+=1;for(;"separator"===t[s-1].type;)s-=1;if("separator"===t[0].type){const e="separator"===t[1].type?"0.15em double":"|"===t[0].separator?"0.06em solid ":"0.06em dashed ";for(const t of l.children)t.children[0].style.borderLeft=e}let o=e.autoTag?0:-1;for(let e=n;e0?i:"center ")+"right "),i&&l.setAttribute("columnalign",i.trim()),e.envClasses.includes("small")&&(l=new T.MathNode("mstyle",[l]),l.setAttribute("scriptlevel","1")),l},yt=function(t,r){-1===t.envName.indexOf("ed")&&it(t);const n="split"===t.envName,s=[],o=ut(t.parser,{cols:s,emptySingleRow:!0,autoTag:n?void 0:pt(t.envName),envClasses:["abut","jot"],maxNumCols:"split"===t.envName?2:void 0,leqno:t.parser.settings.leqno},"display");let a,l=0;const i=t.envName.indexOf("at")>-1;if(r[0]&&i){let t="";for(let e=0;e0?new Array(o.body[0].length).fill({type:"align",align:n}):[];const[a,l]=dt(t.parser.gullet.macros);return o.arraystretch=a,!l||6===l&&"pt"===l||(o.arraycolsep=l),r?{type:"leftright",mode:t.mode,body:[o],left:r[0],right:r[1],rightColor:void 0}:o},mathmlBuilder:bt}),$e({type:"array",names:["bordermatrix"],props:{numArgs:0},handler(e){const t=ut(e.parser,{cols:[],envClasses:["bordermatrix"]},"text");return t.cols=t.body.length>0?new Array(t.body[0].length).fill({type:"align",align:"c"}):[],t.envClasses=[],t.arraystretch=1,"matrix"===e.envName?t:((e,t)=>{const r=e.body;r[0].shift();const n=new Array(r.length-1).fill().map((()=>[]));for(let e=1;e[]));for(let e=0;e[])),envClasses:[],scriptLevel:"text",arraystretch:1,labels:new Array(n.length).fill(""),arraycolsep:{number:.04,unit:"em"}},a={type:"styling",mode:"math",scriptLevel:"text",body:[{type:"array",mode:"math",body:s,cols:new Array(s.length).fill({type:"align",align:"c"}),rowGaps:new Array(s.length-1).fill(null),hLinesBeforeRow:new Array(s.length+1).fill().map((()=>[])),envClasses:[],scriptLevel:"text",arraystretch:1,labels:new Array(s.length).fill(""),arraycolsep:null}]},l={type:"leftright",mode:"math",body:[e],left:t?t[0]:"(",right:t?t[1]:")",rightColor:void 0};return Pe([o,{type:"supsub",mode:"math",base:{type:"op",mode:"math",limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!0,symbol:!1,stack:!0,suppressBaseShift:!0,body:[l]},sup:a,sub:null}])})(t,e.delimiters)},mathmlBuilder:bt}),$e({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){const t=ut(e.parser,{type:"small"},"script");return t.envClasses=["small"],t},mathmlBuilder:bt}),$e({type:"array",names:["subarray"],props:{numArgs:1},handler(t,r){const n=(Fe(r[0])?[r[0]]:Ie(r[0],"ordgroup").body).map((function(t){const r=Le(t).text;if(-1!=="lc".indexOf(r))return{type:"align",align:r};throw new e("Unknown column alignment: "+r,t)}));if(n.length>1)throw new e("{subarray} can contain only one column");let s={cols:n,envClasses:["small"]};if(s=ut(t.parser,s,"script"),s.body.length>0&&s.body[0].length>1)throw new e("{subarray} can contain only one column");return s},mathmlBuilder:bt}),$e({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){const t=ut(e.parser,{cols:[],envClasses:["cases"]},ht(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},mathmlBuilder:bt}),$e({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:yt,mathmlBuilder:bt}),$e({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:yt,mathmlBuilder:bt}),$e({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){"gathered"!==e.envName&&it(e);const t={cols:[],envClasses:["abut","jot"],autoTag:pt(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return ut(e.parser,t,"display")},mathmlBuilder:bt}),$e({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){it(e);const t={autoTag:pt(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,envClasses:["align"],leqno:e.parser.settings.leqno};return ut(e.parser,t,"display")},mathmlBuilder:bt}),$e({type:"array",names:["multline","multline*"],props:{numArgs:0},handler(e){it(e);const t={autoTag:"multline"===e.envName,maxNumCols:1,envClasses:["jot","multline"],leqno:e.parser.settings.leqno};return ut(e.parser,t,"display")},mathmlBuilder:bt}),$e({type:"array",names:["CD"],props:{numArgs:0},handler:t=>(it(t),function(t){const r=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){r.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();const n=t.fetch().text;if("&"!==n&&"\\\\"!==n){if("\\end"===n){0===r[r.length-1].length&&r.pop();break}throw new e("Expected \\\\ or \\cr or \\end",t.nextToken)}t.consume()}let n=[];const s=[n];for(let l=0;l-1);else{if(!("<>AV".indexOf(s)>-1))throw new e('Expected one of "<>AV=|." after @.');for(let t=0;t<2;t++){let n=!0;for(let c=r+1;c{let s=["(",")"];if("\\bordermatrix"===t&&n[0]&&n[0].body){const e=n[0].body;2===e.length&&"atom"===e[0].type&&"atom"===e[1].type&&"open"===e[0].family&&"close"===e[1].family&&(s=[e[0].text,e[1].text])}e.consumeSpaces(),e.consume();const o=wt.bordermatrix,a={mode:e.mode,envName:t.slice(1),delimiters:s,parser:e},l=o.handler(a);return e.expect("}",!0),l}}),c({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler({parser:t,token:r},n){const s=Ie(n[0],"ordgroup").body;let o="";for(let e=0;e{let t=e.toString(16);return 1===t.length&&(t="0"+t),t},St=JSON.parse('{\n "Apricot": "#ffb484",\n "Aquamarine": "#08b4bc",\n "Bittersweet": "#c84c14",\n "blue": "#0000FF",\n "Blue": "#303494",\n "BlueGreen": "#08b4bc",\n "BlueViolet": "#503c94",\n "BrickRed": "#b8341c",\n "brown": "#BF8040",\n "Brown": "#802404",\n "BurntOrange": "#f8941c",\n "CadetBlue": "#78749c",\n "CarnationPink": "#f884b4",\n "Cerulean": "#08a4e4",\n "CornflowerBlue": "#40ace4",\n "cyan": "#00FFFF",\n "Cyan": "#08acec",\n "Dandelion": "#ffbc44",\n "darkgray": "#404040",\n "DarkOrchid": "#a8548c",\n "Emerald": "#08ac9c",\n "ForestGreen": "#089c54",\n "Fuchsia": "#90348c",\n "Goldenrod": "#ffdc44",\n "gray": "#808080",\n "Gray": "#98949c",\n "green": "#00FF00",\n "Green": "#08a44c",\n "GreenYellow": "#e0e474",\n "JungleGreen": "#08ac9c",\n "Lavender": "#f89cc4",\n "lightgray": "#c0c0c0",\n "lime": "#BFFF00",\n "LimeGreen": "#90c43c",\n "magenta": "#FF00FF",\n "Magenta": "#f0048c",\n "Mahogany": "#b0341c",\n "Maroon": "#b03434",\n "Melon": "#f89c7c",\n "MidnightBlue": "#086494",\n "Mulberry": "#b03c94",\n "NavyBlue": "#086cbc",\n "olive": "#7F7F00",\n "OliveGreen": "#407c34",\n "orange": "#FF8000",\n "Orange": "#f8843c",\n "OrangeRed": "#f0145c",\n "Orchid": "#b074ac",\n "Peach": "#f8945c",\n "Periwinkle": "#8074bc",\n "PineGreen": "#088c74",\n "pink": "#ff7f7f",\n "Plum": "#98248c",\n "ProcessBlue": "#08b4ec",\n "purple": "#BF0040",\n "Purple": "#a0449c",\n "RawSienna": "#983c04",\n "red": "#ff0000",\n "Red": "#f01c24",\n "RedOrange": "#f86434",\n "RedViolet": "#a0246c",\n "Rhodamine": "#f0549c",\n "Royallue": "#0874bc",\n "RoyalPurple": "#683c9c",\n "RubineRed": "#f0047c",\n "Salmon": "#f8948c",\n "SeaGreen": "#30bc9c",\n "Sepia": "#701404",\n "SkyBlue": "#48c4dc",\n "SpringGreen": "#c8dc64",\n "Tan": "#e09c74",\n "teal": "#007F7F",\n "TealBlue": "#08acb4",\n "Thistle": "#d884b4",\n "Turquoise": "#08b4cc",\n "violet": "#800080",\n "Violet": "#60449c",\n "VioletRed": "#f054a4",\n "WildStrawberry": "#f0246c",\n "yellow": "#FFFF00",\n "Yellow": "#fff404",\n "YellowGreen": "#98cc6c",\n "YellowOrange": "#ffa41c"\n}'),qt=(t,r)=>{let n="";if("HTML"===t){if(!xt.test(r))throw new e("Invalid HTML input.");n=r}else if("RGB"===t){if(!vt.test(r))throw new e("Invalid RGB input.");r.split(",").map((e=>{n+=Tt(Number(e.trim()))}))}else{if(!At.test(r))throw new e("Invalid rbg input.");r.split(",").map((t=>{const r=Number(t.trim());if(r>1)throw new e("Color rgb input must be < 1.");n+=Tt(Number((255*r).toFixed(0)))}))}return"#"!==n.charAt(0)&&(n="#"+n),n},Ot=(t,r,n)=>{const s=`\\\\color@${t}`;if(!kt.exec(t))throw new e("Invalid color: '"+t+"'",n);return Nt.test(t)?"#"+t:("#"===t.charAt(0)||(r.has(s)?t=r.get(s).tokens[0].text:St[t]&&(t=St[t])),t)},Mt=(e,t)=>{let r=ie(e.body,t.withColor(e.color));return 0===r.length&&r.push(new T.MathNode("mrow")),r=r.map((t=>(t.style.color=e.color,t))),T.newDocumentFragment(r)};c({type:"color",names:["\\textcolor"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","original"]},handler({parser:e,token:t},r,n){const s=n[0]&&Ie(n[0],"raw").string;let o="";if(s){const e=Ie(r[0],"raw").string;o=qt(s,e)}else o=Ot(Ie(r[0],"raw").string,e.gullet.macros,t);const a=r[1];return{type:"color",mode:e.mode,color:o,isTextColor:!0,body:p(a)}},mathmlBuilder:Mt}),c({type:"color",names:["\\color"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw"]},handler({parser:e,breakOnTokenText:t,token:r},n,s){const o=s[0]&&Ie(s[0],"raw").string;let a="";if(o){const e=Ie(n[0],"raw").string;a=qt(o,e)}else a=Ot(Ie(n[0],"raw").string,e.gullet.macros,r);const l=e.parseExpression(!0,t,!0);return{type:"color",mode:e.mode,color:a,isTextColor:!1,body:l}},mathmlBuilder:Mt}),c({type:"color",names:["\\definecolor"],props:{numArgs:3,allowedInText:!0,argTypes:["raw","raw","raw"]},handler({parser:t,funcName:r,token:n},s){const o=Ie(s[0],"raw").string;if(!/^[A-Za-z]+$/.test(o))throw new e("Color name must be latin letters.",n);const a=Ie(s[1],"raw").string;if(!["HTML","RGB","rgb"].includes(a))throw new e("Color model must be HTML, RGB, or rgb.",n);const l=Ie(s[2],"raw").string,i=qt(a,l);return t.gullet.macros.set(`\\\\color@${o}`,{tokens:[{text:i}],numArgs:0}),{type:"internal",mode:t.mode}}}),c({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler({parser:e},t,r){const n="["===e.gullet.future().text?e.parseSizeGroup(!0):null,s=!e.settings.displayMode;return{type:"cr",mode:e.mode,newLine:s,size:n&&Ie(n,"size").value}},mathmlBuilder(e,t){const r=new T.MathNode("mo");if(e.newLine&&(r.setAttribute("linebreak","newline"),e.size)){const n=qe(e.size,t);r.setAttribute("height",n.number+n.unit)}return r}});const Bt={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Ct=t=>{const r=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(r))throw new e("Expected a control sequence",t);return r},zt=(e,t,r,n)=>{let s=e.gullet.macros.get(r.text);null==s&&(r.noexpand=!0,s={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,s,n)};c({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler({parser:t,funcName:r}){t.consumeSpaces();const n=t.fetch();if(Bt[n.text])return"\\global"!==r&&"\\\\globallong"!==r||(n.text=Bt[n.text]),Ie(t.parseFunction(),"internal");throw new e("Invalid token after macro prefix",n)}}),c({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:t,funcName:r}){let n=t.gullet.popToken();const s=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(s))throw new e("Expected a control sequence",n);let o,a=0;const l=[[]];for(;"{"!==t.gullet.future().text;)if(n=t.gullet.popToken(),"#"===n.text){if("{"===t.gullet.future().text){o=t.gullet.future(),l[a].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new e(`Invalid argument number "${n.text}"`);if(parseInt(n.text)!==a+1)throw new e(`Argument number "${n.text}" out of order`);a++,l.push([])}else{if("EOF"===n.text)throw new e("Expected a macro definition");l[a].push(n.text)}let{tokens:i}=t.gullet.consumeArg();if(o&&i.unshift(o),"\\edef"===r||"\\xdef"===r){if(i=t.gullet.expandTokens(i),i.length>t.gullet.settings.maxExpand)throw new e("Too many expansions in an "+r);i.reverse()}return t.gullet.macros.set(s,{tokens:i,numArgs:a,delimiters:l},r===Bt[r]),{type:"internal",mode:t.mode}}}),c({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:e,funcName:t}){const r=Ct(e.gullet.popToken());e.gullet.consumeSpaces();const n=(e=>{let t=e.gullet.popToken();return"="===t.text&&(t=e.gullet.popToken()," "===t.text&&(t=e.gullet.popToken())),t})(e);return zt(e,r,n,"\\\\globallet"===t),{type:"internal",mode:e.mode}}}),c({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:e,funcName:t}){const r=Ct(e.gullet.popToken()),n=e.gullet.popToken(),s=e.gullet.popToken();return zt(e,r,s,"\\\\globalfuture"===t),e.gullet.pushToken(s),e.gullet.pushToken(n),{type:"internal",mode:e.mode}}}),c({type:"internal",names:["\\newcommand","\\renewcommand","\\providecommand"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:t,funcName:r}){let n="";const s=t.gullet.popToken();"{"===s.text?(n=Ct(t.gullet.popToken()),t.gullet.popToken()):n=Ct(s);const o=t.gullet.isDefined(n);if(o&&"\\newcommand"===r)throw new e(`\\newcommand{${n}} attempting to redefine ${n}; use \\renewcommand`);if(!o&&"\\renewcommand"===r)throw new e(`\\renewcommand{${n}} when command ${n} does not yet exist; use \\newcommand`);let a=0;if("["===t.gullet.future().text){let r=t.gullet.popToken();if(r=t.gullet.popToken(),!/^[0-9]$/.test(r.text))throw new e(`Invalid number of arguments: "${r.text}"`);if(a=parseInt(r.text),r=t.gullet.popToken(),"]"!==r.text)throw new e(`Invalid argument "${r.text}"`)}const{tokens:l}=t.gullet.consumeArg();return"\\providecommand"===r&&t.gullet.macros.has(n)||t.gullet.macros.set(n,{tokens:l,numArgs:a}),{type:"internal",mode:t.mode}}});const Et={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},$t=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","⦇","\\llparenthesis","⦈","\\rrparenthesis","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lAngle","⟪","\\rAngle","⟫","\\llangle","⦉","\\rrangle","⦊","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","\\llbracket","\\rrbracket","⟦","⟦","\\lBrace","\\rBrace","⦃","⦄","/","\\backslash","|","\\vert","\\|","\\Vert","‖","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."],It=["}","\\left","\\middle","\\right"],Lt=e=>e.length>0&&($t.includes(e)||Et[e]||It.includes(e)),Ft=[0,1.2,1.8,2.4,3];function Dt(t,r){const n=Fe(t);if(n&&$t.includes(n.text))return["<","\\lt"].includes(n.text)&&(n.text="⟨"),[">","\\gt"].includes(n.text)&&(n.text="⟩"),n;throw new e(n?`Invalid delimiter '${n.text}' after '${r.funcName}'`:`Invalid delimiter type '${t.type}'`,t)}const Gt=["/","\\","\\backslash","\\vert","|"];c({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{const r=Dt(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Et[e.funcName].size,mclass:Et[e.funcName].mclass,delim:r.text}},mathmlBuilder:e=>{const t=[];"."===e.delim&&(e.delim=""),t.push(te(e.delim,e.mode));const r=new T.MathNode("mo",t);return"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),(Gt.includes(e.delim)||e.delim.indexOf("arrow")>-1)&&r.setAttribute("stretchy","true"),r.setAttribute("symmetric","true"),r.setAttribute("minsize",Ft[e.size]+"em"),r.setAttribute("maxsize",Ft[e.size]+"em"),r}}),c({type:"leftright-right",names:["\\right"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>({type:"leftright-right",mode:e.parser.mode,delim:Dt(t[0],e).text})}),c({type:"leftright",names:["\\left"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,r)=>{const n=Dt(r[0],t),s=t.parser;++s.leftrightDepth;let o=s.parseExpression(!1,null,!0),a=s.fetch();for(;"\\middle"===a.text;){s.consume();const t=s.fetch().text;if(!$.math[t])throw new e(`Invalid delimiter '${t}' after '\\middle'`);Dt({type:"atom",mode:"math",text:t},{funcName:"\\middle"}),o.push({type:"middle",mode:"math",delim:t}),s.consume(),o=o.concat(s.parseExpression(!1,null,!0)),a=s.fetch()}--s.leftrightDepth,s.expect("\\right",!1);const l=Ie(s.parseFunction(),"leftright-right");return{type:"leftright",mode:s.mode,body:o,left:n.text,right:l.delim}},mathmlBuilder:(e,t)=>{!function(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}(e);const r=ie(e.body,t);"."===e.left&&(e.left="");const n=new T.MathNode("mo",[te(e.left,e.mode)]);n.setAttribute("fence","true"),n.setAttribute("form","prefix"),("/"===e.left||"\\"===e.left||e.left.indexOf("arrow")>-1)&&n.setAttribute("stretchy","true"),r.unshift(n),"."===e.right&&(e.right="");const s=new T.MathNode("mo",[te(e.right,e.mode)]);if(s.setAttribute("fence","true"),s.setAttribute("form","postfix"),("∖"===e.right||e.right.indexOf("arrow")>-1)&&s.setAttribute("stretchy","true"),e.body.length>0){const t=e.body[e.body.length-1];"color"!==t.type||t.isTextColor||s.setAttribute("mathcolor",t.color)}return r.push(s),se(r)}}),c({type:"middle",names:["\\middle"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,r)=>{const n=Dt(r[0],t);if(!t.parser.leftrightDepth)throw new e("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},mathmlBuilder:(e,t)=>{const r=te(e.delim,e.mode),n=new T.MathNode("mo",[r]);return n.setAttribute("fence","true"),e.delim.indexOf("arrow")>-1&&n.setAttribute("stretchy","true"),n.setAttribute("form","prefix"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});const jt=e=>{const t=new T.MathNode("mspace");return t.setAttribute("width","3pt"),t},Pt=(e,t)=>{let r;switch(r=e.label.indexOf("colorbox")>-1||"\\boxed"===e.label?new T.MathNode("mrow",[jt(),de(e.body,t),jt()]):new T.MathNode("menclose",[de(e.body,t)]),e.label){case"\\overline":r.setAttribute("notation","top"),r.classes.push("tml-overline");break;case"\\underline":r.setAttribute("notation","bottom"),r.classes.push("tml-underline");break;case"\\cancel":r.setAttribute("notation","updiagonalstrike"),r.children.push(new T.MathNode("mrow",[],["tml-cancel","upstrike"]));break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike"),r.children.push(new T.MathNode("mrow",[],["tml-cancel","downstrike"]));break;case"\\sout":r.setAttribute("notation","horizontalstrike"),r.children.push(new T.MathNode("mrow",[],["tml-cancel","sout"]));break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike"),r.classes.push("tml-xcancel");break;case"\\longdiv":r.setAttribute("notation","longdiv"),r.classes.push("longdiv-top"),r.children.push(new T.MathNode("mrow",[],["longdiv-arc"]));break;case"\\phase":r.setAttribute("notation","phasorangle"),r.classes.push("phasor-bottom"),r.children.push(new T.MathNode("mrow",[],["phasor-angle"]));break;case"\\textcircled":r.setAttribute("notation","circle"),r.classes.push("circle-pad"),r.children.push(new T.MathNode("mrow",[],["textcircle"]));break;case"\\angl":r.setAttribute("notation","actuarial"),r.classes.push("actuarial");break;case"\\boxed":r.setAttribute("notation","box"),r.classes.push("tml-box"),r.setAttribute("scriptlevel","0"),r.setAttribute("displaystyle","true");break;case"\\fbox":r.setAttribute("notation","box"),r.classes.push("tml-fbox");break;case"\\fcolorbox":case"\\colorbox":{const t={padding:"3pt 0 3pt 0"};"\\fcolorbox"===e.label&&(t.border="0.0667em solid "+String(e.borderColor)),r.style=t;break}}return e.backgroundColor&&r.setAttribute("mathbackground",e.backgroundColor),r};c({type:"enclose",names:["\\colorbox"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","text"]},handler({parser:e,funcName:t},r,n){const s=n[0]&&Ie(n[0],"raw").string;let o="";if(s){const e=Ie(r[0],"raw").string;o=qt(s,e)}else o=Ot(Ie(r[0],"raw").string,e.gullet.macros);const a=r[1];return{type:"enclose",mode:e.mode,label:t,backgroundColor:o,body:a}},mathmlBuilder:Pt}),c({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","raw","text"]},handler({parser:e,funcName:t},r,n){const s=n[0]&&Ie(n[0],"raw").string;let o,a="";if(s){const e=Ie(r[0],"raw").string,t=Ie(r[0],"raw").string;a=qt(s,e),o=qt(s,t)}else a=Ot(Ie(r[0],"raw").string,e.gullet.macros),o=Ot(Ie(r[1],"raw").string,e.gullet.macros);const l=r[2];return{type:"enclose",mode:e.mode,label:t,backgroundColor:o,borderColor:a,body:l}},mathmlBuilder:Pt}),c({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:({parser:e},t)=>({type:"enclose",mode:e.mode,label:"\\fbox",body:t[0]})}),c({type:"enclose",names:["\\angl","\\cancel","\\bcancel","\\xcancel","\\sout","\\overline","\\boxed","\\longdiv","\\phase"],props:{numArgs:1},handler({parser:e,funcName:t},r){const n=r[0];return{type:"enclose",mode:e.mode,label:t,body:n}},mathmlBuilder:Pt}),c({type:"enclose",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"enclose",mode:e.mode,label:t,body:n}},mathmlBuilder:Pt}),c({type:"enclose",names:["\\textcircled"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"enclose",mode:e.mode,label:t,body:n}},mathmlBuilder:Pt}),c({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler({parser:t,funcName:r},n){const s=n[0];if("ordgroup"!==s.type)throw new e("Invalid environment name",s);let o="";for(let e=0;e({type:"envTag",mode:e.mode,body:t[0]}),mathmlBuilder:(e,t)=>new T.MathNode("mrow")}),c({type:"noTag",names:["\\env@notag"],props:{numArgs:0},handler:({parser:e})=>({type:"noTag",mode:e.mode}),mathmlBuilder:(e,t)=>new T.MathNode("mrow")});const Rt=(e,t)=>{const r=e.font,n=t.withFont(r),s=de(e.body,n);if(0===s.children.length)return s;if("boldsymbol"===r&&["mo","mpadded","mrow"].includes(s.type))return s.style.fontWeight="bold",s;if(((e,t)=>{if("mathrm"!==t||"ordgroup"!==e.body.type||1===e.body.body.length)return!1;if("mathord"!==e.body.body[0].type)return!1;for(let t=1;t{const n=m(r[0]);let s=t;return s in Ut&&(s=Ut[s]),{type:"font",mode:e.mode,font:s.slice(1),body:n}},mathmlBuilder:Rt}),c({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:({parser:e,funcName:t,breakOnTokenText:r},n)=>{const{mode:s}=e,o=e.parseExpression(!0,r,!0);return{type:"font",mode:s,font:`math${t.slice(1)}`,body:{type:"ordgroup",mode:e.mode,body:o}}},mathmlBuilder:Rt});const Ht=["display","text","script","scriptscript"],Vt={auto:-1,display:0,text:0,script:1,scriptscript:2},_t=(e,t)=>{const r="auto"===e.scriptLevel?t.incrementLevel():"display"===e.scriptLevel?t.withLevel(_e):"text"===e.scriptLevel?t.withLevel(We):t.withLevel(Xe),n=de(e.numer,r),s=de(e.denom,r);3===t.level&&(n.style.mathDepth="2",n.setAttribute("scriptlevel","2"),s.style.mathDepth="2",s.setAttribute("scriptlevel","2"));let o=new T.MathNode("mfrac",[n,s]);if(e.hasBarLine){if(e.barSize){const r=qe(e.barSize,t);o.setAttribute("linethickness",r.number+r.unit)}}else o.setAttribute("linethickness","0px");if(null!=e.leftDelim||null!=e.rightDelim){const t=[];if(null!=e.leftDelim){const r=new T.MathNode("mo",[new T.TextNode(e.leftDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}if(t.push(o),null!=e.rightDelim){const r=new T.MathNode("mo",[new T.TextNode(e.rightDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}o=se(t)}return"auto"!==e.scriptLevel&&(o=new T.MathNode("mstyle",[o]),o.setAttribute("displaystyle",String("display"===e.scriptLevel)),o.setAttribute("scriptlevel",Vt[e.scriptLevel])),o};c({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=r[1];let o=!1,a=null,l=null,i="auto";switch(t){case"\\dfrac":case"\\frac":case"\\tfrac":o=!0;break;case"\\\\atopfrac":o=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a="(",l=")";break;case"\\\\bracefrac":a="\\{",l="\\}";break;case"\\\\brackfrac":a="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(t){case"\\dfrac":case"\\dbinom":i="display";break;case"\\tfrac":case"\\tbinom":i="text"}return{type:"genfrac",mode:e.mode,continued:!1,numer:n,denom:s,hasBarLine:o,leftDelim:a,rightDelim:l,scriptLevel:i,barSize:null}},mathmlBuilder:_t}),c({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=r[1];return{type:"genfrac",mode:e.mode,continued:!0,numer:n,denom:s,hasBarLine:!0,leftDelim:null,rightDelim:null,scriptLevel:"display",barSize:null}}}),c({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler({parser:e,funcName:t,token:r}){let n;switch(t){case"\\over":n="\\frac";break;case"\\choose":n="\\binom";break;case"\\atop":n="\\\\atopfrac";break;case"\\brace":n="\\\\bracefrac";break;case"\\brack":n="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:n,token:r}}});const Wt=function(e){let t=null;return e.length>0&&(t=e,t="."===t?null:t),t};c({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler({parser:e},t){const r=t[4],n=t[5],s=m(t[0]),o="atom"===s.type&&"open"===s.family?Wt(s.text):null,a=m(t[1]),l="atom"===a.type&&"close"===a.family?Wt(a.text):null,i=Ie(t[2],"size");let c,d=null;i.isBlank?c=!0:(d=i.value,c=d.number>0);let p="auto",u=t[3];if("ordgroup"===u.type){if(u.body.length>0){const e=Ie(u.body[0],"textord");p=Ht[Number(e.text)]}}else u=Ie(u,"textord"),p=Ht[Number(u.text)];return{type:"genfrac",mode:e.mode,numer:r,denom:n,continued:!1,hasBarLine:c,barSize:d,leftDelim:o,rightDelim:l,scriptLevel:p}},mathmlBuilder:_t}),c({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:({parser:e,funcName:t,token:r},n)=>({type:"infix",mode:e.mode,replaceWith:"\\\\abovefrac",barSize:Ie(n[0],"size").value,token:r})}),c({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Ie(r[1],"infix").barSize),o=r[2],a=s.number>0;return{type:"genfrac",mode:e.mode,numer:n,denom:o,continued:!1,hasBarLine:a,barSize:s,leftDelim:null,rightDelim:null,scriptLevel:"auto"}},mathmlBuilder:_t}),c({type:"hbox",names:["\\hbox"],props:{numArgs:1,argTypes:["hbox"],allowedInArgument:!0,allowedInText:!1},handler:({parser:e},t)=>({type:"hbox",mode:e.mode,body:p(t[0])}),mathmlBuilder(e,t){const r=t.withLevel(_e),n=ce(e.body,r);return ne(n)}});c({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>({type:"horizBrace",mode:e.mode,label:t,isOver:/^\\over/.test(t),base:r[0]}),mathmlBuilder:(e,t)=>{const r=B(e.label);return r.style["math-depth"]=0,new T.MathNode(e.isOver?"mover":"munder",[de(e.base,t),r])}}),c({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:({parser:t,token:r},n)=>{const s=n[1],o=Ie(n[0],"url").url;if(!t.settings.isTrusted({command:"\\href",url:o}))throw new e('Function "\\href" is not trusted',r);return{type:"href",mode:t.mode,href:o,body:p(s)}},mathmlBuilder:(e,t)=>{const r=new v("math",[ce(e.body,t)]);return new x(e.href,[],[r])}}),c({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:({parser:t,token:r},n)=>{const s=Ie(n[0],"url").url;if(!t.settings.isTrusted({command:"\\url",url:s}))throw new e('Function "\\url" is not trusted',r);const o=[];for(let e=0;e{const o=Ie(s[0],"raw").string,a=s[1];if(t.settings.strict)throw new e(`Function "${r}" is disabled in strict mode`,n);let l;const i={};switch(r){case"\\class":i.class=o,l={command:"\\class",class:o};break;case"\\id":i.id=o,l={command:"\\id",id:o};break;case"\\style":i.style=o,l={command:"\\style",style:o};break;case"\\data":{const t=o.split(",");for(let r=0;r{const r=ce(e.body,t),n=[];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/)),r.classes=n;for(const t in e.attributes)"class"!==t&&Object.prototype.hasOwnProperty.call(e.attributes,t)&&r.setAttribute(t,e.attributes[t]);return r}});const Xt=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};{const r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new e("Invalid size: '"+t+"' in \\includegraphics");const n={number:+(r[1]+r[2]),unit:r[3]};if(!Te(n))throw new e("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n}};c({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:({parser:t,token:r},n,s)=>{let o={number:0,unit:"em"},a={number:.9,unit:"em"},l={number:0,unit:"em"},i="";if(s[0]){const t=Ie(s[0],"raw").string.split(",");for(let r=0;r{const r=qe(e.height,t),n={number:0,unit:"em"};e.totalheight.number>0&&e.totalheight.unit===r.unit&&e.totalheight.number>r.number&&(n.number=e.totalheight.number-r.number,n.unit=r.unit);let s=0;e.width.number>0&&(s=qe(e.width,t));const o={height:r.number+n.number+"em"};s.number>0&&(o.width=s.number+s.unit),n.number>0&&(o.verticalAlign=-n.number+n.unit);const a=new k(e.src,e.alt,o);return a.height=r,a.depth=n,new T.MathNode("mtext",[a])}}),c({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler({parser:t,funcName:r,token:n},s){const o=Ie(s[0],"size");if(t.settings.strict){const s="m"===r[1],a="mu"===o.value.unit;if(s){if(!a)throw new e(`LaTeX's ${r} supports only mu units, not ${o.value.unit} units`,n);if("math"!==t.mode)throw new e(`LaTeX's ${r} works only in math mode`,n)}else if(a)throw new e(`LaTeX's ${r} doesn't support mu units`,n)}return{type:"kern",mode:t.mode,dimension:o.value}},mathmlBuilder(e,t){const r=qe(e.dimension,t),n="em"===r.unit?Zt(r.number):"";if("text"===e.mode&&n.length>0){const e=new T.TextNode(n);return new T.MathNode("mtext",[e])}{const e=new T.MathNode("mspace");return e.setAttribute("width",r.number+r.unit),r.number<0&&(e.style.marginLeft=r.number+r.unit),e}}});const Zt=function(e){return e>=.05555&&e<=.05556?" ":e>=.1666&&e<=.1667?" ":e>=.2222&&e<=.2223?" ":e>=.2777&&e<=.2778?"  ":""},Yt=/[^A-Za-z_0-9-]/g;c({type:"label",names:["\\label"],props:{numArgs:1,argTypes:["raw"]},handler:({parser:e},t)=>({type:"label",mode:e.mode,string:t[0].string.replace(Yt,"")}),mathmlBuilder(e,t){const r=new T.MathNode("mrow",[],["tml-label"]);return e.string.length>0&&r.setLabel(e.string),r}});const Jt=["\\clap","\\llap","\\rlap"];c({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap","\\clap","\\llap","\\rlap"],props:{numArgs:1,allowedInText:!0},handler:({parser:t,funcName:r,token:n},s)=>{if(Jt.includes(r)){if(t.settings.strict&&"text"!==t.mode)throw new e(`{${r}} can be used only in text mode.\n Try \\math${r.slice(1)}`,n);r=r.slice(1)}else r=r.slice(5);const o=s[0];return{type:"lap",mode:t.mode,alignment:r,body:o}},mathmlBuilder:(e,t)=>{let r;if("llap"===e.alignment){const n=ie(p(e.body),t),s=new T.MathNode("mphantom",n);r=new T.MathNode("mpadded",[s]),r.setAttribute("width","0px")}const n=de(e.body,t);let s;if("llap"===e.alignment?(n.style.position="absolute",n.style.right="0",n.style.bottom="0",s=new T.MathNode("mpadded",[r,n])):s=new T.MathNode("mpadded",[n]),"rlap"===e.alignment)e.body.body.length>0&&"genfrac"===e.body.body[0].type&&s.setAttribute("lspace","0.16667em");else{const t="llap"===e.alignment?"-1":"-0.5";s.setAttribute("lspace",t+"width"),"llap"===e.alignment?s.style.position="relative":(s.style.display="flex",s.style.justifyContent="center")}return s.setAttribute("width","0px"),s}}),c({type:"ordgroup",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler({funcName:e,parser:t},r){const n=t.mode;t.switchMode("math");const s="\\("===e?"\\)":"$",o=t.parseExpression(!1,s);return t.expect(s),t.switchMode(n),{type:"ordgroup",mode:t.mode,body:o}}}),c({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,r){throw new e(`Mismatched ${t.funcName}`,r)}});c({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:({parser:e},t)=>({type:"mathchoice",mode:e.mode,display:p(t[0]),text:p(t[1]),script:p(t[2]),scriptscript:p(t[3])}),mathmlBuilder:(e,t)=>{const r=((e,t)=>{switch(t.level){case Ve:return e.display;case _e:return e.text;case We:return e.script;case Xe:return e.scriptscript;default:return e.text}})(e,t);return ce(r,t)}});const Kt=["text","textord","mathord","atom"];function Qt(e,t){let r;const n=ie(e.body,t);if("minner"===e.mclass)r=new T.MathNode("mpadded",n);else if("mord"===e.mclass)e.isCharacterBox||"mathord"===n[0].type?(r=n[0],r.type="mi",1===r.children.length&&r.children[0].text&&"∇"===r.children[0].text&&r.setAttribute("mathvariant","normal")):r=new T.MathNode("mi",n);else{r=new T.MathNode("mrow",n),e.mustPromote?(r=n[0],r.type="mo",e.isCharacterBox&&e.body[0].text&&/[A-Za-z]/.test(e.body[0].text)&&r.setAttribute("mathvariant","italic")):r=new T.MathNode("mrow",n);const s=t.level<2;"mrow"===r.type?s&&("mbin"===e.mclass?(r.children.unshift(Oe(.2222)),r.children.push(Oe(.2222))):"mrel"===e.mclass?(r.children.unshift(Oe(.2778)),r.children.push(Oe(.2778))):"mpunct"===e.mclass?r.children.push(Oe(.1667)):"minner"===e.mclass&&(r.children.unshift(Oe(.0556)),r.children.push(Oe(.0556)))):"mbin"===e.mclass?(r.attributes.lspace=s?"0.2222em":"0",r.attributes.rspace=s?"0.2222em":"0"):"mrel"===e.mclass?(r.attributes.lspace=s?"0.2778em":"0",r.attributes.rspace=s?"0.2778em":"0"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace=s?"0.1667em":"0"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&s&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em"),"mopen"!==e.mclass&&"mclose"!==e.mclass&&(delete r.attributes.stretchy,delete r.attributes.form)}return r}c({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler({parser:e,funcName:t},r){const n=r[0],s=o.isCharacterBox(n);let a=!0;const l={type:"mathord",text:"",mode:e.mode},i=n.body?n.body:[n];for(const t of i){if(!Kt.includes(t.type)){a=!1;break}$[e.mode][t.text]?l.text+=$[e.mode][t.text].replace:t.text?l.text+=t.text:t.body&&t.body.map((e=>{l.text+=e.text}))}return a&&"\\mathord"===t&&"mathord"===l.type&&l.text.length>1?l:{type:"mclass",mode:e.mode,mclass:"m"+t.slice(5),body:p(a?l:n),isCharacterBox:s,mustPromote:a}},mathmlBuilder:Qt});const er=e=>{const t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};c({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:({parser:e},t)=>({type:"mclass",mode:e.mode,mclass:er(t[0]),body:p(t[1]),isCharacterBox:o.isCharacterBox(t[1])})}),c({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler({parser:e,funcName:t},r){const n=r[1],s=r[0],o={type:"op",mode:n.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,stack:!0,suppressBaseShift:"\\stackrel"!==t,body:p(n)};return{type:"supsub",mode:s.mode,base:o,sup:"\\underset"===t?null:s,sub:"\\underset"===t?s:null}},mathmlBuilder:Qt});const tr=(e,t,r)=>{if(!e)return r;const n=de(e,t);return"mrow"===n.type&&0===n.children.length?r:n};c({type:"multiscript",names:["\\sideset","\\pres@cript"],props:{numArgs:3},handler({parser:t,funcName:r,token:n},s){if(0===s[2].body.length)throw new e(r+"cannot parse an empty base.");const o=s[2].body[0];if(t.settings.strict&&"\\sideset"===r&&!o.symbol)throw new e("The base of \\sideset must be a big operator. Try \\prescript.");if(s[0].body.length>0&&"supsub"!==s[0].body[0].type||s[1].body.length>0&&"supsub"!==s[1].body[0].type)throw new e("\\sideset can parse only subscripts and superscripts in its first two arguments",n);const a=s[0].body.length>0?s[0].body[0]:null,l=s[1].body.length>0?s[1].body[0]:null;return a||l?a?{type:"multiscript",mode:t.mode,isSideset:"\\sideset"===r,prescripts:a,postscripts:l,base:o}:{type:"styling",mode:t.mode,scriptLevel:"text",body:[{type:"supsub",mode:t.mode,base:o,sup:l.sup,sub:l.sub}]}:o},mathmlBuilder(e,t){const r=de(e.base,t),n=new T.MathNode("mprescripts"),s=new T.MathNode("none");let o=[];const a=tr(e.prescripts.sub,t,s),l=tr(e.prescripts.sup,t,s);if(e.isSideset&&(a.setAttribute("style","text-align: left;"),l.setAttribute("style","text-align: left;")),e.postscripts){o=[r,tr(e.postscripts.sub,t,s),tr(e.postscripts.sup,t,s),n,a,l]}else o=[r,n,a,l];return new T.MathNode("mmultiscripts",o)}}),c({type:"not",names:["\\not"],props:{numArgs:1,primitive:!0,allowedInText:!1},handler({parser:e},t){const r=o.isCharacterBox(t[0]);let n;if(r)n=p(t[0]),"\\"===n[0].text.charAt(0)&&(n[0].text=$.math[n[0].text].replace),n[0].text=n[0].text.slice(0,1)+"̸"+n[0].text.slice(1);else{n=[{type:"textord",mode:"math",text:"̸"},{type:"kern",mode:"math",dimension:{number:-.6,unit:"em"}},t[0]]}return{type:"not",mode:e.mode,body:n,isCharacterBox:r}},mathmlBuilder(e,t){if(e.isCharacterBox){return ie(e.body,t,!0)[0]}return ce(e.body,t)}});const rr=["textord","mathord","atom"],nr=["\\smallint"],sr=["textord","mathord","ordgroup","close","leftright","font"],or=e=>{e.attributes.lspace="0.1667em",e.attributes.rspace="0.1667em"},ar=(e,t)=>{let r;if(e.symbol)r=new v("mo",[te(e.name,e.mode)]),nr.includes(e.name)?r.setAttribute("largeop","false"):r.setAttribute("movablelimits","false"),e.fromMathOp&&or(r);else if(e.body)r=new v("mo",ie(e.body,t)),e.fromMathOp&&or(r);else if(r=new v("mi",[new A(e.name.slice(1))]),!e.parentIsSupSub){const t=[r,new v("mo",[te("⁡","text")])];if(e.needsLeadingSpace){const e=new v("mspace");e.setAttribute("width","0.1667em"),t.unshift(e)}if(!e.isFollowedByDelimiter){const e=new v("mspace");e.setAttribute("width","0.1667em"),t.push(e)}r=new v("mrow",t)}return r},lr={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨅":"\\bigsqcap","⨆":"\\bigsqcup","⨃":"\\bigcupdot","⨇":"\\bigdoublevee","⨈":"\\bigdoublewedge","⨉":"\\bigtimes"};c({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcupplus","\\bigcupdot","\\bigcap","\\bigcup","\\bigdoublevee","\\bigdoublewedge","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcap","\\bigsqcup","\\bigtimes","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨃","⨄","⨅","⨆","⨇","⨈","⨉"],props:{numArgs:0},handler:({parser:e,funcName:t},r)=>{let n=t;return 1===n.length&&(n=lr[n]),{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!0,stack:!1,name:n}},mathmlBuilder:ar}),c({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:({parser:e},t)=>{const r=t[0],n=r.body?r.body:[r],s=1===n.length&&rr.includes(n[0].type);return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:s,fromMathOp:!0,stack:!1,name:s?n[0].text:null,body:s?null:p(r)}},mathmlBuilder:ar});const ir={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint","∱":"\\intclockwise","∲":"\\varointclockwise","⨌":"\\iiiint","⨍":"\\intbar","⨎":"\\intBar","⨏":"\\fint","⨒":"\\rppolint","⨓":"\\scpolint","⨕":"\\pointint","⨖":"\\sqint","⨗":"\\intlarhk","⨘":"\\intx","⨙":"\\intcap","⨚":"\\intcup"};c({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\sgn","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler({parser:e,funcName:t}){const r=e.prevAtomType,n=e.gullet.future().text;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,stack:!1,isFollowedByDelimiter:Lt(n),needsLeadingSpace:r.length>0&&sr.includes(r),name:t}},mathmlBuilder:ar}),c({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler({parser:e,funcName:t}){const r=e.prevAtomType,n=e.gullet.future().text;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,stack:!1,isFollowedByDelimiter:Lt(n),needsLeadingSpace:r.length>0&&sr.includes(r),name:t}},mathmlBuilder:ar}),c({type:"op",names:["\\int","\\iint","\\iiint","\\iiiint","\\oint","\\oiint","\\oiiint","\\intclockwise","\\varointclockwise","\\intbar","\\intBar","\\fint","\\rppolint","\\scpolint","\\pointint","\\sqint","\\intlarhk","\\intx","\\intcap","\\intcup","∫","∬","∭","∮","∯","∰","∱","∲","⨌","⨍","⨎","⨏","⨒","⨓","⨕","⨖","⨗","⨘","⨙","⨚"],props:{numArgs:0},handler({parser:e,funcName:t}){let r=t;return 1===r.length&&(r=ir[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,stack:!1,name:r}},mathmlBuilder:ar});c({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=e.prevAtomType,o=e.gullet.future().text;return{type:"operatorname",mode:e.mode,body:p(n),alwaysHandleSupSub:"\\operatornamewithlimits"===t,limits:!1,parentIsSupSub:!1,isFollowedByDelimiter:Lt(o),needsLeadingSpace:s.length>0&&sr.includes(s)}},mathmlBuilder:(e,t)=>{let r,n=ie(e.body,t.withFont("mathrm")),s=!0;for(let e=0;ee.toText())).join("");n=[new T.TextNode(e)]}else if(1===n.length&&["mover","munder"].includes(n[0].type)&&("mi"===n[0].children[0].type||"mtext"===n[0].children[0].type)){if(n[0].children[0].type="mi",e.parentIsSupSub)return new T.MathNode("mrow",n);{const e=new T.MathNode("mo",[te("⁡","text")]);return T.newDocumentFragment([n[0],e])}}if(s?(r=new T.MathNode("mi",n),1===n[0].text.length&&r.setAttribute("mathvariant","normal")):r=new T.MathNode("mrow",n),!e.parentIsSupSub){const t=[r,new T.MathNode("mo",[te("⁡","text")])];if(e.needsLeadingSpace){const e=new T.MathNode("mspace");e.setAttribute("width","0.1667em"),t.unshift(e)}if(!e.isFollowedByDelimiter){const e=new T.MathNode("mspace");e.setAttribute("width","0.1667em"),t.push(e)}return T.newDocumentFragment(t)}return r}}),Ye("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),d({type:"ordgroup",mathmlBuilder:(e,t)=>ce(e.body,t,e.semisimple)}),c({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"phantom",mode:e.mode,body:p(r)}},mathmlBuilder:(e,t)=>{const r=ie(e.body,t);return new T.MathNode("mphantom",r)}}),c({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"hphantom",mode:e.mode,body:r}},mathmlBuilder:(e,t)=>{const r=ie(p(e.body),t),n=new T.MathNode("mphantom",r),s=new T.MathNode("mpadded",[n]);return s.setAttribute("height","0px"),s.setAttribute("depth","0px"),s}}),c({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"vphantom",mode:e.mode,body:r}},mathmlBuilder:(e,t)=>{const r=ie(p(e.body),t),n=new T.MathNode("mphantom",r),s=new T.MathNode("mpadded",[n]);return s.setAttribute("width","0px"),s}}),c({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>({type:"pmb",mode:e.mode,body:p(t[0])}),mathmlBuilder(e,t){const r=ie(e.body,t),n=N(r);return n.setAttribute("style","font-weight:bold"),n}});const cr=(e,t)=>{const r=t.withLevel(_e),n=new T.MathNode("mpadded",[de(e.body,r)]),s=qe(e.dy,t);return n.setAttribute("voffset",s.number+s.unit),s.number>0?n.style.padding=s.number+s.unit+" 0 0 0":n.style.padding="0 0 "+Math.abs(s.number)+s.unit+" 0",n};c({type:"raise",names:["\\raise","\\lower"],props:{numArgs:2,argTypes:["size","primitive"],primitive:!0},handler({parser:e,funcName:t},r){const n=Ie(r[0],"size").value;"\\lower"===t&&(n.number*=-1);const s=r[1];return{type:"raise",mode:e.mode,dy:n,body:s}},mathmlBuilder:cr}),c({type:"raise",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler({parser:e,funcName:t},r){const n=Ie(r[0],"size").value,s=r[1];return{type:"raise",mode:e.mode,dy:n,body:s}},mathmlBuilder:cr}),c({type:"ref",names:["\\ref","\\eqref"],props:{numArgs:1,argTypes:["raw"]},handler:({parser:e,funcName:t},r)=>({type:"ref",mode:e.mode,funcName:t,string:r[0].string.replace(Yt,"")}),mathmlBuilder(e,t){const r="\\ref"===e.funcName?["tml-ref"]:["tml-ref","tml-eqref"];return new x("#"+e.string,r,null)}}),c({type:"reflect",names:["\\reflectbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:({parser:e},t)=>({type:"reflect",mode:e.mode,body:t[0]}),mathmlBuilder(e,t){const r=de(e.body,t);return r.style.transform="scaleX(-1)",r}}),c({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler:({parser:e})=>({type:"internal",mode:e.mode})}),c({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler({parser:e},t,r){const n=r[0],s=Ie(t[0],"size"),o=Ie(t[1],"size");return{type:"rule",mode:e.mode,shift:n&&Ie(n,"size").value,width:s.value,height:o.value}},mathmlBuilder(e,t){const r=qe(e.width,t),n=qe(e.height,t),s=e.shift?qe(e.shift,t):{number:0,unit:"em"},o=t.color&&t.getColor()||"black",a=new T.MathNode("mspace");if(r.number>0&&n.number>0&&a.setAttribute("mathbackground",o),a.setAttribute("width",r.number+r.unit),a.setAttribute("height",n.number+n.unit),0===s.number)return a;const l=new T.MathNode("mpadded",[a]);return s.number>=0?l.setAttribute("height","+"+s.number+s.unit):(l.setAttribute("height",s.number+s.unit),l.setAttribute("depth","+"+-s.number+s.unit)),l.setAttribute("voffset",s.number+s.unit),l}});const dr={"\\tiny":.5,"\\sixptsize":.6,"\\Tiny":.6,"\\scriptsize":.7,"\\footnotesize":.8,"\\small":.9,"\\normalsize":1,"\\large":1.2,"\\Large":1.44,"\\LARGE":1.728,"\\huge":2.074,"\\Huge":2.488};c({type:"sizing",names:["\\tiny","\\sixptsize","\\Tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],props:{numArgs:0,allowedInText:!0},handler:({breakOnTokenText:e,funcName:t,parser:r},n)=>{r.settings.strict&&"math"===r.mode&&console.log(`Temml strict-mode warning: Command ${t} is invalid in math mode.`);const s=r.parseExpression(!1,e,!0);return{type:"sizing",mode:r.mode,funcName:t,body:s}},mathmlBuilder:(e,t)=>{const r=t.withFontSize(dr[e.funcName]),n=ie(e.body,r),s=N(n),o=(dr[e.funcName]/t.fontSize).toFixed(4);return s.setAttribute("mathsize",o+"em"),s}}),c({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:({parser:e},t,r)=>{let n=!1,s=!1;const o=r[0]&&Ie(r[0],"ordgroup");if(o){let e="";for(let t=0;t{const r=new T.MathNode("mpadded",[de(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),c({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler({parser:e},t,r){const n=r[0],s=t[0];return{type:"sqrt",mode:e.mode,body:s,index:n}},mathmlBuilder(e,t){const{body:r,index:n}=e;return n?new T.MathNode("mroot",[de(r,t),de(n,t.incrementLevel())]):new T.MathNode("msqrt",[de(r,t)])}});const mr={display:0,text:1,script:2,scriptscript:3},pr={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};c({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({breakOnTokenText:e,funcName:t,parser:r},n){const s=r.parseExpression(!0,e,!0),o=t.slice(1,t.length-5);return{type:"styling",mode:r.mode,scriptLevel:o,body:s}},mathmlBuilder(e,t){const r=t.withLevel(mr[e.scriptLevel]),n=ie(e.body,r),s=N(n),o=pr[e.scriptLevel];return s.setAttribute("scriptlevel",o[0]),s.setAttribute("displaystyle",o[1]),s}});const ur=/^m(over|under|underover)$/;d({type:"supsub",mathmlBuilder(e,t){let r,n,s=!1,o=!1,a=!1,l=!1;e.base&&"horizBrace"===e.base.type&&(n=!!e.sup,n===e.base.isOver&&(s=!0,r=e.base.isOver)),!e.base||e.base.stack||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0,o=!e.base.symbol,a=o&&!e.isFollowedByDelimiter,l=e.base.needsLeadingSpace);const i=e.base&&e.base.stack?[de(e.base.body[0],t)]:[de(e.base,t)],c=t.inSubOrSup();if(e.sub){const r=de(e.sub,c);3===t.level&&r.setAttribute("scriptlevel","2"),i.push(r)}if(e.sup){const r=de(e.sup,c);3===t.level&&r.setAttribute("scriptlevel","2");const n="mrow"===r.type?r.children[0]:r;n&&"mo"===n.type&&n.classes.includes("tml-prime")&&e.base&&e.base.text&&"fF".indexOf(e.base.text)>-1&&n.classes.push("prime-pad"),i.push(r)}let d;if(s)d=r?"mover":"munder";else if(e.sub)if(e.sup){const r=e.base;d=r&&("op"===r.type&&r.limits||"multiscript"===r.type)&&(t.level===Ve||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(t.level===Ve||r.limits)?"munderover":"msubsup"}else{const r=e.base;d=r&&"op"===r.type&&r.limits&&(t.level===Ve||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.level===Ve)?"munder":"msub"}else{const r=e.base;d=r&&"op"===r.type&&r.limits&&(t.level===Ve||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.level===Ve)?"mover":"msup"}let m=new T.MathNode(d,i);if(o){const e=new T.MathNode("mo",[te("⁡","text")]);if(l){const t=new T.MathNode("mspace");t.setAttribute("width","0.1667em"),m=T.newDocumentFragment([t,m,e])}else m=T.newDocumentFragment([m,e]);if(a){const e=new T.MathNode("mspace");e.setAttribute("width","0.1667em"),m.children.push(e)}}else ur.test(d)&&(m=new T.MathNode("mrow",[m]));return m}});const hr=["\\shortmid","\\nshortmid","\\shortparallel","\\nshortparallel","\\smallsetminus"],gr=["\\Rsh","\\Lsh","\\restriction"];d({type:"atom",mathmlBuilder(e,t){const r=new T.MathNode("mo",[te(e.text,e.mode)]);if("punct"===e.family)r.setAttribute("separator","true");else if("open"===e.family||"close"===e.family)"open"===e.family?(r.setAttribute("form","prefix"),r.setAttribute("stretchy","false")):"close"===e.family&&(r.setAttribute("form","postfix"),r.setAttribute("stretchy","false"));else if("\\mid"===e.text)r.setAttribute("lspace","0.22em"),r.setAttribute("rspace","0.22em"),r.setAttribute("stretchy","false");else if("rel"===e.family&&(e=>{if(1===e.length){const t=e.codePointAt(0);return 8591-1||e.indexOf("harpoon")>-1||gr.includes(e)})(e.text))r.setAttribute("stretchy","false");else if(hr.includes(e.text))r.setAttribute("mathsize","70%");else if(":"===e.text)r.attributes.lspace="0.2222em",r.attributes.rspace="0.2222em";else if(e.needsSpacing)return"bin"===e.family?new T.MathNode("mrow",[Oe(.222),r,Oe(.222)]):new T.MathNode("mrow",[Oe(.2778),r,Oe(.2778)]);return r}});const fr={mathbf:"bold",mathrm:"normal",textit:"italic",mathit:"italic",mathnormal:"italic",mathbb:"double-struck",mathcal:"script",mathfrak:"fraktur",mathscr:"script",mathsf:"sans-serif",mathtt:"monospace"},br=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsc"===t.fontFamily)return"normal";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"sans-serif-bold":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";const r=t.font;if(!r||"mathnormal"===r)return null;const n=e.mode;switch(r){case"mathit":case"greekItalic":return"italic";case"mathrm":{const t=e.text.codePointAt(0);return 9390,bold:e=>119743,italic:e=>119795,"bold-italic":e=>119847,script:e=>yr[e]||119899,"script-bold":e=>119951,fraktur:e=>wr[e]||120003,"fraktur-bold":e=>120107,"double-struck":e=>xr[e]||120055,"sans-serif":e=>120159,"sans-serif-bold":e=>120211,"sans-serif-italic":e=>120263,"sans-serif-bold-italic":e=>120380,monospace:e=>120367},lowerCaseLatin:{normal:e=>0,bold:e=>119737,italic:e=>"h"===e?8358:119789,"bold-italic":e=>119841,script:e=>yr[e]||119893,"script-bold":e=>119945,fraktur:e=>119997,"fraktur-bold":e=>120101,"double-struck":e=>120049,"sans-serif":e=>120153,"sans-serif-bold":e=>120205,"sans-serif-italic":e=>120257,"sans-serif-bold-italic":e=>120309,monospace:e=>120361},upperCaseGreek:{normal:e=>0,bold:e=>119575,italic:e=>119633,"bold-italic":e=>119575,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>119749,"sans-serif-bold":e=>119749,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>119807,monospace:e=>0},lowerCaseGreek:{normal:e=>0,bold:e=>119569,italic:e=>119627,"bold-italic":e=>"ϕ"===e?119678:119685,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>119743,"sans-serif-bold":e=>119743,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>119801,monospace:e=>0},varGreek:{normal:e=>0,bold:e=>kr[e]||-51,italic:e=>0,"bold-italic":e=>vr[e]||58,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>Ar[e]||116,"sans-serif-bold":e=>Ar[e]||116,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>Nr[e]||174,monospace:e=>0},numeral:{normal:e=>0,bold:e=>120734,italic:e=>0,"bold-italic":e=>0,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>120744,"sans-serif":e=>120754,"sans-serif-bold":e=>120764,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>0,monospace:e=>120774}}),Sr=(e,t)=>{const r=e.codePointAt(0),n=64{const n=new T.MathNode(r,[e]),s=new T.MathNode("mstyle",[n]);return s.style["font-style"]="italic",s.style["font-family"]="Cambria, 'Times New Roman', serif","bold-italic"===t&&(s.style["font-weight"]="bold"),s})(s,o,t);"normal"!==o&&(s.text=s.text.split("").map((e=>Sr(e,o))).join("")),a=new T.MathNode(t,[s])}else if("text"===e.mode)"normal"!==o&&(s.text=Sr(s.text,o)),a=new T.MathNode("mtext",[s]);else if(Br.has(e.text))a=new T.MathNode("mo",[s]),a.classes.push("tml-prime");else{const e=s.text;"italic"!==o&&(s.text=Sr(s.text,o)),a=new T.MathNode("mi",[s]),s.text===e&&Mr.test(e)&&a.setAttribute("mathvariant","italic")}return a}});const Cr={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},zr={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};d({type:"spacing",mathmlBuilder(t,r){let n;if(Object.prototype.hasOwnProperty.call(zr,t.text))n=new T.MathNode("mtext",[new T.TextNode(" ")]);else{if(!Object.prototype.hasOwnProperty.call(Cr,t.text))throw new e(`Unknown type of space "${t.text}"`);n=new T.MathNode("mo"),"\\nobreak"===t.text&&n.setAttribute("linebreak","nobreak")}return n}}),d({type:"tag"});const Er={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm","\\textsc":"textsc"},$r={"\\textbf":"textbf","\\textmd":"textmd"},Ir={"\\textit":"textit","\\textup":"textup"};c({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textsc","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"text",mode:e.mode,body:p(n),font:t}},mathmlBuilder(e,t){const r=((e,t)=>{const r=e.font;return r?Er[r]?t.withTextFontFamily(Er[r]):$r[r]?t.withTextFontWeight($r[r]):"\\emph"===r?"textit"===t.fontShape?t.withTextFontShape("textup"):t.withTextFontShape("textit"):t.withTextFontShape(Ir[r]):t})(e,t),n=ce(e.body,r);return ne(n)}}),c({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler:({parser:e},t)=>({type:"vcenter",mode:e.mode,body:t[0]}),mathmlBuilder(e,t){const r=new T.MathNode("mtd",[de(e.body,t)]);r.style.padding="0";const n=new T.MathNode("mtr",[r]);return new T.MathNode("mtable",[n])}}),c({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,r,n){throw new e("\\verb ended by end of line instead of matching delimiter")},mathmlBuilder(e,t){const r=new T.TextNode(Lr(e)),n=new T.MathNode("mtext",[r]);return n.setAttribute("mathvariant","monospace"),n}});const Lr=e=>e.body.replace(/ /g,e.star?"␣":" "),Fr=l,Dr="[ \r\n\t]",Gr=`(\\\\[a-zA-Z@]+)${Dr}*`,jr="[̀-ͯ]",Pr=new RegExp(`${jr}+$`),Rr=`(${Dr}+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-‧‪-퟿豈-￿]${jr}*|[\ud800-\udbff][\udc00-\udfff]${jr}*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|${Gr}|\\\\[^\ud800-\udfff])`;class Ur{constructor(e,t){this.input=e,this.settings=t,this.tokenRegex=new RegExp(Rr,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){const t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new He("EOF",new Ue(this,r,r));const n=this.tokenRegex.exec(t);if(null===n||n.index!==r)throw new e(`Unexpected character: '${t[r]}'`,new He(t[r],new Ue(this,r,r+1)));const s=n[6]||n[3]||(n[2]?"\\ ":" ");if(14===this.catcodes[s]){const r=t.indexOf("\n",this.tokenRegex.lastIndex);if(-1===r){if(this.tokenRegex.lastIndex=t.length,this.settings.strict)throw new e("% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode")}else this.tokenRegex.lastIndex=r+1;return this.lex()}return new He(s,new Ue(this,r,this.tokenRegex.lastIndex))}}class Hr{constructor(e={},t={}){this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new e("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");const t=this.undefStack.pop();for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(void 0===t[e]?delete this.current[e]:this.current[e]=t[e])}has(e){return Object.prototype.hasOwnProperty.call(this.current,e)||Object.prototype.hasOwnProperty.call(this.builtins,e)}get(e){return Object.prototype.hasOwnProperty.call(this.current,e)?this.current[e]:this.builtins[e]}set(e,t,r=!1){if(r){for(let t=0;t0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{const t=this.undefStack[this.undefStack.length-1];t&&!Object.prototype.hasOwnProperty.call(t,e)&&(t[e]=this.current[e])}this.current[e]=t}}const Vr={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class _r{constructor(e,t,r){this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new Hr(Je,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new Ur(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){let t,r,n;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken(),({tokens:n,end:r}=this.consumeArg(["]"]))}else({tokens:n,start:t,end:r}=this.consumeArg());return this.pushToken(new He("EOF",r.loc)),this.pushTokens(n),t.range(r,"")}consumeSpaces(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}}consumeArg(t){const r=[],n=t&&t.length>0;n||this.consumeSpaces();const s=this.future();let o,a=0,l=0;do{if(o=this.popToken(),r.push(o),"{"===o.text)++a;else if("}"===o.text){if(--a,-1===a)throw new e("Extra }",o)}else if("EOF"===o.text)throw new e("Unexpected end of input in a macro argument, expected '"+(t&&n?t[l]:"}")+"'",o);if(t&&n)if((0===a||1===a&&"{"===t[l])&&o.text===t[l]){if(++l,l===t.length){r.splice(-l,l);break}}else l=0}while(0!==a||n);return"{"===s.text&&"}"===r[r.length-1].text&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:s,end:o}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new e("The length of delimiters doesn't match the number of args!");const n=r[0];for(let t=0;tthis.settings.maxExpand)throw new e("Too many expansions: infinite loop or need to increase maxExpand setting");let o=s.tokens;const a=this.consumeArgs(s.numArgs,s.delimiters);if(s.numArgs){o=o.slice();for(let t=o.length-1;t>=0;--t){let r=o[t];if("#"===r.text){if(0===t)throw new e("Incomplete placeholder at end of macro body",r);if(r=o[--t],"#"===r.text)o.splice(t+1,1);else{if(!/^[1-9]$/.test(r.text))throw new e("Not a valid argument number",r);o.splice(t,2,...a[+r.text-1])}}}}return this.pushTokens(o),o.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(!1===this.expandOnce()){const e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new He(e)]):void 0}expandTokens(e){const t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){const e=this.stack.pop();e.treatAsRelax&&(e.noexpand=!1,e.treatAsRelax=!1),t.push(e)}return t}expandMacroAsText(e){const t=this.expandMacro(e);return t?t.map((e=>e.text)).join(""):t}_getExpansion(e){const t=this.macros.get(e);if(null==t)return t;if(1===e.length){const t=this.lexer.catcodes[e];if(null!=t&&13!==t)return}const r="function"==typeof t?t(this):t;if("string"==typeof r){let e=0;if(-1!==r.indexOf("#")){const t=r.replace(/##/g,"");for(;-1!==t.indexOf("#"+(e+1));)++e}const t=new Ur(r,this.settings),n=[];let s=t.lex();for(;"EOF"!==s.text;)n.push(s),s=t.lex();n.reverse();return{tokens:n,numArgs:e}}return r}isDefined(e){return this.macros.has(e)||Object.prototype.hasOwnProperty.call(Fr,e)||Object.prototype.hasOwnProperty.call($.math,e)||Object.prototype.hasOwnProperty.call($.text,e)||Object.prototype.hasOwnProperty.call(Vr,e)}isExpandable(e){const t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Object.prototype.hasOwnProperty.call(Fr,e)&&!Fr[e].primitive}}const Wr=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Xr=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g","ʰ":"h","ⁱ":"i","ʲ":"j","ᵏ":"k","ˡ":"l","ᵐ":"m","ⁿ":"n","ᵒ":"o","ᵖ":"p","ʳ":"r","ˢ":"s","ᵗ":"t","ᵘ":"u","ᵛ":"v","ʷ":"w","ˣ":"x","ʸ":"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),Zr=Object.freeze({"𝒜":"A","ℬ":"B","𝒞":"C","𝒟":"D","ℰ":"E","ℱ":"F","𝒢":"G","ℋ":"H","ℐ":"I","𝒥":"J","𝒦":"K","ℒ":"L","ℳ":"M","𝒩":"N","𝒪":"O","𝒫":"P","𝒬":"Q","ℛ":"R","𝒮":"S","𝒯":"T","𝒰":"U","𝒱":"V","𝒲":"W","𝒳":"X","𝒴":"Y","𝒵":"Z"});var Yr={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},Jr={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","č":"č","ĉ":"ĉ","ċ":"ċ","ď":"ď","ḋ":"ḋ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ĺ":"ĺ","ľ":"ľ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ď":"Ď","Ḋ":"Ḋ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ĺ":"Ĺ","Ľ":"Ľ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ť":"Ť","Ṫ":"Ṫ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"};const Kr=["bin","op","open","punct","rel"],Qr=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/,en=/^ *\\text/;class tn{constructor(e,t,r=!1){this.mode="math",this.gullet=new _r(e,t,this.mode),this.settings=t,this.isPreamble=r,this.leftrightDepth=0,this.prevAtomType=""}expect(t,r=!0){if(this.fetch().text!==t)throw new e(`Expected '${t}', got '${this.fetch().text}'`,this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");const e=this.parseExpression(!1);if(this.expect("EOF"),this.isPreamble){const e=Object.create(null);return Object.entries(this.gullet.macros.current).forEach((([t,r])=>{e[t]=r})),this.gullet.endGroup(),e}const t=this.gullet.macros.get("\\df@tag");return this.gullet.endGroup(),t&&(this.gullet.macros.current["\\df@tag"]=t),e}static get endOfExpression(){return["}","\\endgroup","\\end","\\right","\\endtoggle","&"]}subparse(e){const t=this.nextToken;this.consume(),this.gullet.pushToken(new He("}")),this.gullet.pushTokens(e);const r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r}parseExpression(e,t,r){const n=[];for(this.prevAtomType="";;){"math"===this.mode&&this.consumeSpaces();const s=this.fetch();if(-1!==tn.endOfExpression.indexOf(s.text))break;if(t&&s.text===t)break;if(r&&"\\middle"===s.text)break;if(e&&Fr[s.text]&&Fr[s.text].infix)break;const o=this.parseAtom(t);if(!o)break;"internal"!==o.type&&(n.push(o),this.prevAtomType="atom"===o.type?o.family:o.type)}return"text"===this.mode&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){let r,n=-1;for(let s=0;s=128||Pr.exec(r)))return null;if(this.settings.strict&&"math"===this.mode)throw new e(`Unicode text character "${r[0]}" used in math mode`,t);s={type:"textord",mode:"text",loc:Ue.range(t),text:r}}if(this.consume(),n)for(let r=0;r0&&s[0].type&&"array"===s[0].type&&s[0].addEqnNum)&&n.gullet.macros.get("\\df@tag")){if(!r.displayMode)throw new e("\\tag works only in display mode");n.gullet.feed("\\df@tag"),s=[{type:"tag",mode:"text",body:s,tag:n.parse()}]}return s},nn=[2,2,3,3];class sn{constructor(e){this.level=e.level,this.color=e.color,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontSize=e.fontSize||1,this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.maxSize=e.maxSize}extend(e){const t={level:this.level,color:this.color,font:this.font,fontFamily:this.fontFamily,fontSize:this.fontSize,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return new sn(t)}withLevel(e){return this.extend({level:e})}incrementLevel(){return this.extend({level:Math.min(this.level+1,3)})}inSubOrSup(){return this.extend({level:nn[this.level]})}withColor(e){return this.extend({color:e})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withFontSize(e){return this.extend({fontSize:e})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}getColor(){return this.color}}function on(e){const t={};let r=0;const n=document.getElementsByClassName("tml-eqn");for(let e of n)for(r+=1,e.setAttribute("id","tml-eqn-"+String(r));"mtable"!==e.tagName;){if(e.getElementsByClassName("tml-label").length>0){const n=e.attributes.id.value;t[n]=String(r);break}e=e.parentElement}const s=document.getElementsByClassName("tml-tageqn");for(const e of s){if(e.getElementsByClassName("tml-label").length>0){const r=e.getElementsByClassName("tml-tag");if(r.length>0){const n=e.attributes.id.value;t[n]=r[0].textContent}}}[...e.getElementsByClassName("tml-ref")].forEach((e=>{const r=e.getAttribute("href");let n=t[r.slice(1)];-1===e.className.indexOf("tml-eqref")?(n=n.replace(/^\(/,""),n=n.replace(/\)$/,"")):("("!==n.charAt(0)&&(n="("+n),")"!==n.slice(-1)&&(n+=")"));const s=document.createElementNS("http://www.w3.org/1998/Math/MathML","mtext");s.appendChild(document.createTextNode(n));const o=document.createElementNS("http://www.w3.org/1998/Math/MathML","math");o.appendChild(s),e.textContent="",e.appendChild(o)}))}const an=function(e,t,r){let n=r,s=0;const o=e.length;for(;ne.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"))).join("|")+")");for(;r=e.search(s),-1!==r;){r>0&&(n.push({type:"text",data:e.slice(0,r)}),e=e.slice(r));const s=t.findIndex((t=>e.startsWith(t.left)));if(r=an(t[s].right,e,t[s].left.length),-1===r)break;const o=e.slice(0,r+t[s].right.length),a=ln.test(o)?o:e.slice(t[s].left.length,r);n.push({type:"math",data:a,rawData:o,display:t[s].display}),e=e.slice(r+t[s].right.length)}return""!==e&&n.push({type:"text",data:e}),n}(t,r.delimiters);if(1===n.length&&"text"===n[0].type)return null;const s=document.createDocumentFragment();for(let t=0;t-1===e.indexOf(" "+t+" ")))&&un(n,t)}}};let hn=function(e,t,r={}){t.textContent="";const n="math"===t.tagName.toLowerCase();n&&(r.wrap="none");const s=gn(e,r);n||s.children.length>1?(t.textContent="",s.children.forEach((e=>{t.appendChild(e.toNode())}))):t.appendChild(s.toNode())};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: Temml doesn't work in quirks mode. Make sure your website has a suitable doctype."),hn=function(){throw new e("Temml doesn't work in quirks mode.")});const gn=function(t,r){const n=new a(r);try{const e=rn(t,n);return he(e,t,new sn({level:n.displayMode?Ve:_e,maxSize:n.maxSize}),n)}catch(r){return function(t,r,n){if(n.throwOnError||!(t instanceof e))throw t;const s=new y(["temml-error"],[new w(r+"\n\n"+t.toString())]);return s.style.color=n.errorColor,s.style.whiteSpace="pre-line",s}(r,t,n)}};return{version:"0.11.04",render:hn,renderToString:function(e,t){return gn(e,t).toMarkup()},renderMathInElement:function(e,t){if(!e)throw new Error("No element provided to render");const r={};for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=t[e]);r.fences?r.delimiters=(e=>{if("$"===e||"("===e)return dn[e];if("$+"===e||"(+"===e)return dn[e.slice(0,1)].concat(mn);return"ams"===e?mn:"all"===e?dn["("].concat(dn.$).concat(mn):cn})(r.fences):r.delimiters=r.delimiters||cn,r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code","option"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},un(e,r),on(e)},postProcess:on,ParseError:e,definePreamble:function(e,t){const r=new a(t);if(r.macros={},!("string"==typeof e||e instanceof String))throw new TypeError("Temml can only parse string typed expression");const n=new tn(e,r,!0);delete n.gullet.macros.current["\\df@tag"];return n.parse()},__parse:function(e,t){const r=new a(t);return rn(e,r)},__renderToMathMLTree:gn,__defineSymbol:I,__defineMacro:Ye}}(); \ No newline at end of file diff --git a/assets/under-construction.gif b/assets/under-construction.gif new file mode 100644 index 0000000000000000000000000000000000000000..e85b756fb117db5c32aaf64793586aadfdff7136 GIT binary patch literal 2583 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 literal 0 HcmV?d00001 diff --git a/content/.smd.ziggy-schema b/content/.smd.ziggy-schema new file mode 100644 index 00000000..4f224178 --- /dev/null +++ b/content/.smd.ziggy-schema @@ -0,0 +1,83 @@ +$ = Page + +/// This is the schema of a SuperMD document frontmatter. +/// +/// As a reminder, optionals ('?'), slices ('[]'), and dictionaries ('{:}') +/// can all be omitted, see https://ziggy-lang.io for more info. +/// +/// Note that while some fields here are defined as optional, +/// in SuperHTML they will instead be non-optional with a default value. +/// For example '?bytes' fields will default to an empty string, while +/// slices and dictionaries will instead default to empty containers. +/// +/// Make sure to read the SuperHTML reference to know how to properly +/// access these fields (https://zine-ssg.io/docs/superhtml/scripty/). +struct Page { + /// The title of this page. + title: ?bytes, + /// A short description of the page. + description: ?bytes, + /// The publishing date of this page. + date: Date, + /// The author(s) of this page. + authors: []bytes, + /// A list of tags for this page. + tags: []bytes, + /// Path to a layout file inside of the configured layouts directory. + layout: bytes, + /// Alternative paths where this content will also be made available. + /// + /// Note that the copies will be 100% identical to the main version, + /// if you need minor (or major) changes to other variants of this page, + /// you will want to use `alternatives`. + aliases: []bytes, + /// Alternative versions of this page, created by rendering the content + /// using a different layout and placed at a different URL. + /// + /// Useful for creating RSS feeds, for example. + alternatives: []Alternative, + /// In multilingual sites can be set to match corresponding pages that + /// don't have identical URLs. See 'i18n' docs for more info. + translation_key: ?bytes, + /// When set to true this file will be ignored when bulding the website, + /// unless the '--drafts' option has been passed to Zine. + draft: ?bool, + /// This property can only be set in the frontmatter of a section page + /// (i.e. a page named 'index.smd') to ensure that it will not contain + /// subsections. + /// + /// When set to true, any 'index.smd' subpage will trigger a build + /// error, requiring the user to reame the subpage to something else. + /// + /// As a reminder, `foo/bar/index.smd` and `foo/bar.smd` are equivalent + /// definitions with the only difference that the latter will not + /// define a new section. + /// + /// This property is useful for guaranteeing correct behavior from + /// `$page.leaves()` and other sectioning-related builtin functions. + forbid_subsections: ?bool, + /// User-defined properties that you can reference from SuperHTML via + /// '$page.custom' + custom: {:}any, + + union Date { + /// A RFC3339 date string, e.g. "1990/01/01" or "1990/01/01T00:00:00". + date: bytes, + /// An epoch UNIX timestamp (seconds), e.g. 631148400. + unix: int, + } + + struct Alternative { + /// A name that can be used to refer to this alternative version + /// of the page from SuperHTML. + name: bytes, + /// Path to a layout file inside of the configured layouts + /// directory. + layout: bytes, + /// Output path, relative to the current directory. Use an absolute + /// path to refer to the website's root directory. + output: bytes, + /// Useful when generating `` elements. + type: ?bytes, + } +} diff --git a/0.5.0/docs/.vuepress/config.ts b/content/0.5.0/docs/.vuepress/config.ts similarity index 100% rename from 0.5.0/docs/.vuepress/config.ts rename to content/0.5.0/docs/.vuepress/config.ts diff --git a/0.5.0/docs/.vuepress/dist/.DS_Store b/content/0.5.0/docs/.vuepress/dist/.DS_Store similarity index 100% rename from 0.5.0/docs/.vuepress/dist/.DS_Store rename to content/0.5.0/docs/.vuepress/dist/.DS_Store diff --git a/0.5.0/docs/.vuepress/dist/404.html b/content/0.5.0/docs/.vuepress/dist/404.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/404.html rename to content/0.5.0/docs/.vuepress/dist/404.html diff --git a/0.5.0/docs/.vuepress/dist/assets/404.html-60b35caa.js b/content/0.5.0/docs/.vuepress/dist/assets/404.html-60b35caa.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/404.html-60b35caa.js rename to content/0.5.0/docs/.vuepress/dist/assets/404.html-60b35caa.js diff --git a/0.5.0/docs/.vuepress/dist/assets/404.html-81dcbf04.js b/content/0.5.0/docs/.vuepress/dist/assets/404.html-81dcbf04.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/404.html-81dcbf04.js rename to content/0.5.0/docs/.vuepress/dist/assets/404.html-81dcbf04.js diff --git a/0.5.0/docs/.vuepress/dist/assets/api.html-664752d9.js b/content/0.5.0/docs/.vuepress/dist/assets/api.html-664752d9.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/api.html-664752d9.js rename to content/0.5.0/docs/.vuepress/dist/assets/api.html-664752d9.js diff --git a/0.5.0/docs/.vuepress/dist/assets/api.html-782c08dd.js b/content/0.5.0/docs/.vuepress/dist/assets/api.html-782c08dd.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/api.html-782c08dd.js rename to content/0.5.0/docs/.vuepress/dist/assets/api.html-782c08dd.js diff --git a/0.5.0/docs/.vuepress/dist/assets/app-fdd7d3c1.js b/content/0.5.0/docs/.vuepress/dist/assets/app-fdd7d3c1.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/app-fdd7d3c1.js rename to content/0.5.0/docs/.vuepress/dist/assets/app-fdd7d3c1.js diff --git a/0.5.0/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg b/content/0.5.0/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg rename to content/0.5.0/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg diff --git a/0.5.0/docs/.vuepress/dist/assets/buffer.html-b9ff57c6.js b/content/0.5.0/docs/.vuepress/dist/assets/buffer.html-b9ff57c6.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/buffer.html-b9ff57c6.js rename to content/0.5.0/docs/.vuepress/dist/assets/buffer.html-b9ff57c6.js diff --git a/0.5.0/docs/.vuepress/dist/assets/buffer.html-f0bbadca.js b/content/0.5.0/docs/.vuepress/dist/assets/buffer.html-f0bbadca.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/buffer.html-f0bbadca.js rename to content/0.5.0/docs/.vuepress/dist/assets/buffer.html-f0bbadca.js diff --git a/0.5.0/docs/.vuepress/dist/assets/building-installing.html-b942c545.js b/content/0.5.0/docs/.vuepress/dist/assets/building-installing.html-b942c545.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/building-installing.html-b942c545.js rename to content/0.5.0/docs/.vuepress/dist/assets/building-installing.html-b942c545.js diff --git a/0.5.0/docs/.vuepress/dist/assets/building-installing.html-f67292e3.js b/content/0.5.0/docs/.vuepress/dist/assets/building-installing.html-f67292e3.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/building-installing.html-f67292e3.js rename to content/0.5.0/docs/.vuepress/dist/assets/building-installing.html-f67292e3.js diff --git a/0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-caf3c7fd.js b/content/0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-caf3c7fd.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-caf3c7fd.js rename to content/0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-caf3c7fd.js diff --git a/0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-d15d2b69.js b/content/0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-d15d2b69.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-d15d2b69.js rename to content/0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-d15d2b69.js diff --git a/0.5.0/docs/.vuepress/dist/assets/control-flow.html-369e24d4.js b/content/0.5.0/docs/.vuepress/dist/assets/control-flow.html-369e24d4.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/control-flow.html-369e24d4.js rename to content/0.5.0/docs/.vuepress/dist/assets/control-flow.html-369e24d4.js diff --git a/0.5.0/docs/.vuepress/dist/assets/control-flow.html-b4dad974.js b/content/0.5.0/docs/.vuepress/dist/assets/control-flow.html-b4dad974.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/control-flow.html-b4dad974.js rename to content/0.5.0/docs/.vuepress/dist/assets/control-flow.html-b4dad974.js diff --git a/0.5.0/docs/.vuepress/dist/assets/crypto.html-03686c71.js b/content/0.5.0/docs/.vuepress/dist/assets/crypto.html-03686c71.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/crypto.html-03686c71.js rename to content/0.5.0/docs/.vuepress/dist/assets/crypto.html-03686c71.js diff --git a/0.5.0/docs/.vuepress/dist/assets/crypto.html-3dc6139a.js b/content/0.5.0/docs/.vuepress/dist/assets/crypto.html-3dc6139a.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/crypto.html-3dc6139a.js rename to content/0.5.0/docs/.vuepress/dist/assets/crypto.html-3dc6139a.js diff --git a/0.5.0/docs/.vuepress/dist/assets/debug.html-1a8ed36d.js b/content/0.5.0/docs/.vuepress/dist/assets/debug.html-1a8ed36d.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/debug.html-1a8ed36d.js rename to content/0.5.0/docs/.vuepress/dist/assets/debug.html-1a8ed36d.js diff --git a/0.5.0/docs/.vuepress/dist/assets/debug.html-7d9c655f.js b/content/0.5.0/docs/.vuepress/dist/assets/debug.html-7d9c655f.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/debug.html-7d9c655f.js rename to content/0.5.0/docs/.vuepress/dist/assets/debug.html-7d9c655f.js diff --git a/0.5.0/docs/.vuepress/dist/assets/enums.html-88a6d059.js b/content/0.5.0/docs/.vuepress/dist/assets/enums.html-88a6d059.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/enums.html-88a6d059.js rename to content/0.5.0/docs/.vuepress/dist/assets/enums.html-88a6d059.js diff --git a/0.5.0/docs/.vuepress/dist/assets/enums.html-fac67bba.js b/content/0.5.0/docs/.vuepress/dist/assets/enums.html-fac67bba.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/enums.html-fac67bba.js rename to content/0.5.0/docs/.vuepress/dist/assets/enums.html-fac67bba.js diff --git a/0.5.0/docs/.vuepress/dist/assets/errors.html-223a5da6.js b/content/0.5.0/docs/.vuepress/dist/assets/errors.html-223a5da6.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/errors.html-223a5da6.js rename to content/0.5.0/docs/.vuepress/dist/assets/errors.html-223a5da6.js diff --git a/0.5.0/docs/.vuepress/dist/assets/errors.html-cac16163.js b/content/0.5.0/docs/.vuepress/dist/assets/errors.html-cac16163.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/errors.html-cac16163.js rename to content/0.5.0/docs/.vuepress/dist/assets/errors.html-cac16163.js diff --git a/0.5.0/docs/.vuepress/dist/assets/ffi.html-1270c42a.js b/content/0.5.0/docs/.vuepress/dist/assets/ffi.html-1270c42a.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/ffi.html-1270c42a.js rename to content/0.5.0/docs/.vuepress/dist/assets/ffi.html-1270c42a.js diff --git a/0.5.0/docs/.vuepress/dist/assets/ffi.html-4b7e094a.js b/content/0.5.0/docs/.vuepress/dist/assets/ffi.html-4b7e094a.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/ffi.html-4b7e094a.js rename to content/0.5.0/docs/.vuepress/dist/assets/ffi.html-4b7e094a.js diff --git a/0.5.0/docs/.vuepress/dist/assets/ffi.html-8f169169.js b/content/0.5.0/docs/.vuepress/dist/assets/ffi.html-8f169169.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/ffi.html-8f169169.js rename to content/0.5.0/docs/.vuepress/dist/assets/ffi.html-8f169169.js diff --git a/0.5.0/docs/.vuepress/dist/assets/ffi.html-a3573afd.js b/content/0.5.0/docs/.vuepress/dist/assets/ffi.html-a3573afd.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/ffi.html-a3573afd.js rename to content/0.5.0/docs/.vuepress/dist/assets/ffi.html-a3573afd.js diff --git a/0.5.0/docs/.vuepress/dist/assets/fibers.html-128da3b2.js b/content/0.5.0/docs/.vuepress/dist/assets/fibers.html-128da3b2.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/fibers.html-128da3b2.js rename to content/0.5.0/docs/.vuepress/dist/assets/fibers.html-128da3b2.js diff --git a/0.5.0/docs/.vuepress/dist/assets/fibers.html-26ad6db0.js b/content/0.5.0/docs/.vuepress/dist/assets/fibers.html-26ad6db0.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/fibers.html-26ad6db0.js rename to content/0.5.0/docs/.vuepress/dist/assets/fibers.html-26ad6db0.js diff --git a/0.5.0/docs/.vuepress/dist/assets/fibers.html-4212fab3.js b/content/0.5.0/docs/.vuepress/dist/assets/fibers.html-4212fab3.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/fibers.html-4212fab3.js rename to content/0.5.0/docs/.vuepress/dist/assets/fibers.html-4212fab3.js diff --git a/0.5.0/docs/.vuepress/dist/assets/fibers.html-cb2e6732.js b/content/0.5.0/docs/.vuepress/dist/assets/fibers.html-cb2e6732.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/fibers.html-cb2e6732.js rename to content/0.5.0/docs/.vuepress/dist/assets/fibers.html-cb2e6732.js diff --git a/0.5.0/docs/.vuepress/dist/assets/fs.html-88f986ed.js b/content/0.5.0/docs/.vuepress/dist/assets/fs.html-88f986ed.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/fs.html-88f986ed.js rename to content/0.5.0/docs/.vuepress/dist/assets/fs.html-88f986ed.js diff --git a/0.5.0/docs/.vuepress/dist/assets/fs.html-e51b11ec.js b/content/0.5.0/docs/.vuepress/dist/assets/fs.html-e51b11ec.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/fs.html-e51b11ec.js rename to content/0.5.0/docs/.vuepress/dist/assets/fs.html-e51b11ec.js diff --git a/0.5.0/docs/.vuepress/dist/assets/functions.html-950ab70b.js b/content/0.5.0/docs/.vuepress/dist/assets/functions.html-950ab70b.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/functions.html-950ab70b.js rename to content/0.5.0/docs/.vuepress/dist/assets/functions.html-950ab70b.js diff --git a/0.5.0/docs/.vuepress/dist/assets/functions.html-c473e66c.js b/content/0.5.0/docs/.vuepress/dist/assets/functions.html-c473e66c.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/functions.html-c473e66c.js rename to content/0.5.0/docs/.vuepress/dist/assets/functions.html-c473e66c.js diff --git a/0.5.0/docs/.vuepress/dist/assets/gc.html-586473d4.js b/content/0.5.0/docs/.vuepress/dist/assets/gc.html-586473d4.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/gc.html-586473d4.js rename to content/0.5.0/docs/.vuepress/dist/assets/gc.html-586473d4.js diff --git a/0.5.0/docs/.vuepress/dist/assets/gc.html-c870a1dc.js b/content/0.5.0/docs/.vuepress/dist/assets/gc.html-c870a1dc.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/gc.html-c870a1dc.js rename to content/0.5.0/docs/.vuepress/dist/assets/gc.html-c870a1dc.js diff --git a/0.5.0/docs/.vuepress/dist/assets/import-export.html-43f7b872.js b/content/0.5.0/docs/.vuepress/dist/assets/import-export.html-43f7b872.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/import-export.html-43f7b872.js rename to content/0.5.0/docs/.vuepress/dist/assets/import-export.html-43f7b872.js diff --git a/0.5.0/docs/.vuepress/dist/assets/import-export.html-eb59ce91.js b/content/0.5.0/docs/.vuepress/dist/assets/import-export.html-eb59ce91.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/import-export.html-eb59ce91.js rename to content/0.5.0/docs/.vuepress/dist/assets/import-export.html-eb59ce91.js diff --git a/0.5.0/docs/.vuepress/dist/assets/index.html-2ec4ef30.js b/content/0.5.0/docs/.vuepress/dist/assets/index.html-2ec4ef30.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/index.html-2ec4ef30.js rename to content/0.5.0/docs/.vuepress/dist/assets/index.html-2ec4ef30.js diff --git a/0.5.0/docs/.vuepress/dist/assets/index.html-7de7ebeb.js b/content/0.5.0/docs/.vuepress/dist/assets/index.html-7de7ebeb.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/index.html-7de7ebeb.js rename to content/0.5.0/docs/.vuepress/dist/assets/index.html-7de7ebeb.js diff --git a/0.5.0/docs/.vuepress/dist/assets/index.html-9d14688f.js b/content/0.5.0/docs/.vuepress/dist/assets/index.html-9d14688f.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/index.html-9d14688f.js rename to content/0.5.0/docs/.vuepress/dist/assets/index.html-9d14688f.js diff --git a/0.5.0/docs/.vuepress/dist/assets/index.html-c96e7c71.js b/content/0.5.0/docs/.vuepress/dist/assets/index.html-c96e7c71.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/index.html-c96e7c71.js rename to content/0.5.0/docs/.vuepress/dist/assets/index.html-c96e7c71.js diff --git a/0.5.0/docs/.vuepress/dist/assets/index.html-cfa1c43b.js b/content/0.5.0/docs/.vuepress/dist/assets/index.html-cfa1c43b.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/index.html-cfa1c43b.js rename to content/0.5.0/docs/.vuepress/dist/assets/index.html-cfa1c43b.js diff --git a/0.5.0/docs/.vuepress/dist/assets/index.html-ee39a618.js b/content/0.5.0/docs/.vuepress/dist/assets/index.html-ee39a618.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/index.html-ee39a618.js rename to content/0.5.0/docs/.vuepress/dist/assets/index.html-ee39a618.js diff --git a/0.5.0/docs/.vuepress/dist/assets/io.html-5afd2865.js b/content/0.5.0/docs/.vuepress/dist/assets/io.html-5afd2865.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/io.html-5afd2865.js rename to content/0.5.0/docs/.vuepress/dist/assets/io.html-5afd2865.js diff --git a/0.5.0/docs/.vuepress/dist/assets/io.html-66f837f2.js b/content/0.5.0/docs/.vuepress/dist/assets/io.html-66f837f2.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/io.html-66f837f2.js rename to content/0.5.0/docs/.vuepress/dist/assets/io.html-66f837f2.js diff --git a/0.5.0/docs/.vuepress/dist/assets/lists.html-0dfb9f88.js b/content/0.5.0/docs/.vuepress/dist/assets/lists.html-0dfb9f88.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/lists.html-0dfb9f88.js rename to content/0.5.0/docs/.vuepress/dist/assets/lists.html-0dfb9f88.js diff --git a/0.5.0/docs/.vuepress/dist/assets/lists.html-f2cb681c.js b/content/0.5.0/docs/.vuepress/dist/assets/lists.html-f2cb681c.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/lists.html-f2cb681c.js rename to content/0.5.0/docs/.vuepress/dist/assets/lists.html-f2cb681c.js diff --git a/0.5.0/docs/.vuepress/dist/assets/maps.html-5baae6ee.js b/content/0.5.0/docs/.vuepress/dist/assets/maps.html-5baae6ee.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/maps.html-5baae6ee.js rename to content/0.5.0/docs/.vuepress/dist/assets/maps.html-5baae6ee.js diff --git a/0.5.0/docs/.vuepress/dist/assets/maps.html-e954b557.js b/content/0.5.0/docs/.vuepress/dist/assets/maps.html-e954b557.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/maps.html-e954b557.js rename to content/0.5.0/docs/.vuepress/dist/assets/maps.html-e954b557.js diff --git a/0.5.0/docs/.vuepress/dist/assets/math.html-724dee99.js b/content/0.5.0/docs/.vuepress/dist/assets/math.html-724dee99.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/math.html-724dee99.js rename to content/0.5.0/docs/.vuepress/dist/assets/math.html-724dee99.js diff --git a/0.5.0/docs/.vuepress/dist/assets/math.html-e1a94a97.js b/content/0.5.0/docs/.vuepress/dist/assets/math.html-e1a94a97.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/math.html-e1a94a97.js rename to content/0.5.0/docs/.vuepress/dist/assets/math.html-e1a94a97.js diff --git a/0.5.0/docs/.vuepress/dist/assets/null-safety.html-225d7a97.js b/content/0.5.0/docs/.vuepress/dist/assets/null-safety.html-225d7a97.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/null-safety.html-225d7a97.js rename to content/0.5.0/docs/.vuepress/dist/assets/null-safety.html-225d7a97.js diff --git a/0.5.0/docs/.vuepress/dist/assets/null-safety.html-78eef157.js b/content/0.5.0/docs/.vuepress/dist/assets/null-safety.html-78eef157.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/null-safety.html-78eef157.js rename to content/0.5.0/docs/.vuepress/dist/assets/null-safety.html-78eef157.js diff --git a/0.5.0/docs/.vuepress/dist/assets/objects.html-d3ba5e5e.js b/content/0.5.0/docs/.vuepress/dist/assets/objects.html-d3ba5e5e.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/objects.html-d3ba5e5e.js rename to content/0.5.0/docs/.vuepress/dist/assets/objects.html-d3ba5e5e.js diff --git a/0.5.0/docs/.vuepress/dist/assets/objects.html-fbce603d.js b/content/0.5.0/docs/.vuepress/dist/assets/objects.html-fbce603d.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/objects.html-fbce603d.js rename to content/0.5.0/docs/.vuepress/dist/assets/objects.html-fbce603d.js diff --git a/0.5.0/docs/.vuepress/dist/assets/os.html-401e6994.js b/content/0.5.0/docs/.vuepress/dist/assets/os.html-401e6994.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/os.html-401e6994.js rename to content/0.5.0/docs/.vuepress/dist/assets/os.html-401e6994.js diff --git a/0.5.0/docs/.vuepress/dist/assets/os.html-c27c3a80.js b/content/0.5.0/docs/.vuepress/dist/assets/os.html-c27c3a80.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/os.html-c27c3a80.js rename to content/0.5.0/docs/.vuepress/dist/assets/os.html-c27c3a80.js diff --git a/0.5.0/docs/.vuepress/dist/assets/patterns.html-13199373.js b/content/0.5.0/docs/.vuepress/dist/assets/patterns.html-13199373.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/patterns.html-13199373.js rename to content/0.5.0/docs/.vuepress/dist/assets/patterns.html-13199373.js diff --git a/0.5.0/docs/.vuepress/dist/assets/patterns.html-25e56ec1.js b/content/0.5.0/docs/.vuepress/dist/assets/patterns.html-25e56ec1.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/patterns.html-25e56ec1.js rename to content/0.5.0/docs/.vuepress/dist/assets/patterns.html-25e56ec1.js diff --git a/0.5.0/docs/.vuepress/dist/assets/protocols.html-add388e7.js b/content/0.5.0/docs/.vuepress/dist/assets/protocols.html-add388e7.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/protocols.html-add388e7.js rename to content/0.5.0/docs/.vuepress/dist/assets/protocols.html-add388e7.js diff --git a/0.5.0/docs/.vuepress/dist/assets/protocols.html-cf22dabc.js b/content/0.5.0/docs/.vuepress/dist/assets/protocols.html-cf22dabc.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/protocols.html-cf22dabc.js rename to content/0.5.0/docs/.vuepress/dist/assets/protocols.html-cf22dabc.js diff --git a/0.5.0/docs/.vuepress/dist/assets/ranges.html-1ec45949.js b/content/0.5.0/docs/.vuepress/dist/assets/ranges.html-1ec45949.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/ranges.html-1ec45949.js rename to content/0.5.0/docs/.vuepress/dist/assets/ranges.html-1ec45949.js diff --git a/0.5.0/docs/.vuepress/dist/assets/ranges.html-63af24a7.js b/content/0.5.0/docs/.vuepress/dist/assets/ranges.html-63af24a7.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/ranges.html-63af24a7.js rename to content/0.5.0/docs/.vuepress/dist/assets/ranges.html-63af24a7.js diff --git a/0.5.0/docs/.vuepress/dist/assets/repl.html-3a352999.js b/content/0.5.0/docs/.vuepress/dist/assets/repl.html-3a352999.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/repl.html-3a352999.js rename to content/0.5.0/docs/.vuepress/dist/assets/repl.html-3a352999.js diff --git a/0.5.0/docs/.vuepress/dist/assets/repl.html-e56c24b3.js b/content/0.5.0/docs/.vuepress/dist/assets/repl.html-e56c24b3.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/repl.html-e56c24b3.js rename to content/0.5.0/docs/.vuepress/dist/assets/repl.html-e56c24b3.js diff --git a/0.5.0/docs/.vuepress/dist/assets/scope.html-788dec71.js b/content/0.5.0/docs/.vuepress/dist/assets/scope.html-788dec71.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/scope.html-788dec71.js rename to content/0.5.0/docs/.vuepress/dist/assets/scope.html-788dec71.js diff --git a/0.5.0/docs/.vuepress/dist/assets/scope.html-e02d0c59.js b/content/0.5.0/docs/.vuepress/dist/assets/scope.html-e02d0c59.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/scope.html-e02d0c59.js rename to content/0.5.0/docs/.vuepress/dist/assets/scope.html-e02d0c59.js diff --git a/0.5.0/docs/.vuepress/dist/assets/serialize.html-a2b2f5c7.js b/content/0.5.0/docs/.vuepress/dist/assets/serialize.html-a2b2f5c7.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/serialize.html-a2b2f5c7.js rename to content/0.5.0/docs/.vuepress/dist/assets/serialize.html-a2b2f5c7.js diff --git a/0.5.0/docs/.vuepress/dist/assets/serialize.html-b6cab62f.js b/content/0.5.0/docs/.vuepress/dist/assets/serialize.html-b6cab62f.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/serialize.html-b6cab62f.js rename to content/0.5.0/docs/.vuepress/dist/assets/serialize.html-b6cab62f.js diff --git a/0.5.0/docs/.vuepress/dist/assets/std.html-1f14ef55.js b/content/0.5.0/docs/.vuepress/dist/assets/std.html-1f14ef55.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/std.html-1f14ef55.js rename to content/0.5.0/docs/.vuepress/dist/assets/std.html-1f14ef55.js diff --git a/0.5.0/docs/.vuepress/dist/assets/std.html-28946dd8.js b/content/0.5.0/docs/.vuepress/dist/assets/std.html-28946dd8.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/std.html-28946dd8.js rename to content/0.5.0/docs/.vuepress/dist/assets/std.html-28946dd8.js diff --git a/0.5.0/docs/.vuepress/dist/assets/strings.html-19211e8e.js b/content/0.5.0/docs/.vuepress/dist/assets/strings.html-19211e8e.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/strings.html-19211e8e.js rename to content/0.5.0/docs/.vuepress/dist/assets/strings.html-19211e8e.js diff --git a/0.5.0/docs/.vuepress/dist/assets/strings.html-3eee8ada.js b/content/0.5.0/docs/.vuepress/dist/assets/strings.html-3eee8ada.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/strings.html-3eee8ada.js rename to content/0.5.0/docs/.vuepress/dist/assets/strings.html-3eee8ada.js diff --git a/0.5.0/docs/.vuepress/dist/assets/style-a4c8bf56.css b/content/0.5.0/docs/.vuepress/dist/assets/style-a4c8bf56.css similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/style-a4c8bf56.css rename to content/0.5.0/docs/.vuepress/dist/assets/style-a4c8bf56.css diff --git a/0.5.0/docs/.vuepress/dist/assets/syntax.html-1d9e70a0.js b/content/0.5.0/docs/.vuepress/dist/assets/syntax.html-1d9e70a0.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/syntax.html-1d9e70a0.js rename to content/0.5.0/docs/.vuepress/dist/assets/syntax.html-1d9e70a0.js diff --git a/0.5.0/docs/.vuepress/dist/assets/syntax.html-97d67af0.js b/content/0.5.0/docs/.vuepress/dist/assets/syntax.html-97d67af0.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/syntax.html-97d67af0.js rename to content/0.5.0/docs/.vuepress/dist/assets/syntax.html-97d67af0.js diff --git a/0.5.0/docs/.vuepress/dist/assets/types.html-7d2c7042.js b/content/0.5.0/docs/.vuepress/dist/assets/types.html-7d2c7042.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/types.html-7d2c7042.js rename to content/0.5.0/docs/.vuepress/dist/assets/types.html-7d2c7042.js diff --git a/0.5.0/docs/.vuepress/dist/assets/types.html-f2d7ed88.js b/content/0.5.0/docs/.vuepress/dist/assets/types.html-f2d7ed88.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/types.html-f2d7ed88.js rename to content/0.5.0/docs/.vuepress/dist/assets/types.html-f2d7ed88.js diff --git a/0.5.0/docs/.vuepress/dist/buzz.wasm b/content/0.5.0/docs/.vuepress/dist/buzz.wasm similarity index 100% rename from 0.5.0/docs/.vuepress/dist/buzz.wasm rename to content/0.5.0/docs/.vuepress/dist/buzz.wasm diff --git a/0.5.0/docs/.vuepress/dist/favicon.ico b/content/0.5.0/docs/.vuepress/dist/favicon.ico similarity index 100% rename from 0.5.0/docs/.vuepress/dist/favicon.ico rename to content/0.5.0/docs/.vuepress/dist/favicon.ico diff --git a/0.5.0/docs/.vuepress/dist/guide/building-installing.html b/content/0.5.0/docs/.vuepress/dist/guide/building-installing.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/building-installing.html rename to content/0.5.0/docs/.vuepress/dist/guide/building-installing.html diff --git a/0.5.0/docs/.vuepress/dist/guide/calling-native-code.html b/content/0.5.0/docs/.vuepress/dist/guide/calling-native-code.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/calling-native-code.html rename to content/0.5.0/docs/.vuepress/dist/guide/calling-native-code.html diff --git a/0.5.0/docs/.vuepress/dist/guide/control-flow.html b/content/0.5.0/docs/.vuepress/dist/guide/control-flow.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/control-flow.html rename to content/0.5.0/docs/.vuepress/dist/guide/control-flow.html diff --git a/0.5.0/docs/.vuepress/dist/guide/enums.html b/content/0.5.0/docs/.vuepress/dist/guide/enums.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/enums.html rename to content/0.5.0/docs/.vuepress/dist/guide/enums.html diff --git a/0.5.0/docs/.vuepress/dist/guide/errors.html b/content/0.5.0/docs/.vuepress/dist/guide/errors.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/errors.html rename to content/0.5.0/docs/.vuepress/dist/guide/errors.html diff --git a/0.5.0/docs/.vuepress/dist/guide/ffi.html b/content/0.5.0/docs/.vuepress/dist/guide/ffi.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/ffi.html rename to content/0.5.0/docs/.vuepress/dist/guide/ffi.html diff --git a/0.5.0/docs/.vuepress/dist/guide/fibers.html b/content/0.5.0/docs/.vuepress/dist/guide/fibers.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/fibers.html rename to content/0.5.0/docs/.vuepress/dist/guide/fibers.html diff --git a/0.5.0/docs/.vuepress/dist/guide/functions.html b/content/0.5.0/docs/.vuepress/dist/guide/functions.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/functions.html rename to content/0.5.0/docs/.vuepress/dist/guide/functions.html diff --git a/0.5.0/docs/.vuepress/dist/guide/import-export.html b/content/0.5.0/docs/.vuepress/dist/guide/import-export.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/import-export.html rename to content/0.5.0/docs/.vuepress/dist/guide/import-export.html diff --git a/0.5.0/docs/.vuepress/dist/guide/index.html b/content/0.5.0/docs/.vuepress/dist/guide/index.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/index.html rename to content/0.5.0/docs/.vuepress/dist/guide/index.html diff --git a/0.5.0/docs/.vuepress/dist/guide/null-safety.html b/content/0.5.0/docs/.vuepress/dist/guide/null-safety.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/null-safety.html rename to content/0.5.0/docs/.vuepress/dist/guide/null-safety.html diff --git a/0.5.0/docs/.vuepress/dist/guide/objects.html b/content/0.5.0/docs/.vuepress/dist/guide/objects.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/objects.html rename to content/0.5.0/docs/.vuepress/dist/guide/objects.html diff --git a/0.5.0/docs/.vuepress/dist/guide/protocols.html b/content/0.5.0/docs/.vuepress/dist/guide/protocols.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/protocols.html rename to content/0.5.0/docs/.vuepress/dist/guide/protocols.html diff --git a/0.5.0/docs/.vuepress/dist/guide/scope.html b/content/0.5.0/docs/.vuepress/dist/guide/scope.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/scope.html rename to content/0.5.0/docs/.vuepress/dist/guide/scope.html diff --git a/0.5.0/docs/.vuepress/dist/guide/syntax.html b/content/0.5.0/docs/.vuepress/dist/guide/syntax.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/syntax.html rename to content/0.5.0/docs/.vuepress/dist/guide/syntax.html diff --git a/0.5.0/docs/.vuepress/dist/guide/types.html b/content/0.5.0/docs/.vuepress/dist/guide/types.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/types.html rename to content/0.5.0/docs/.vuepress/dist/guide/types.html diff --git a/0.5.0/docs/.vuepress/dist/index.html b/content/0.5.0/docs/.vuepress/dist/index.html similarity index 85% rename from 0.5.0/docs/.vuepress/dist/index.html rename to content/0.5.0/docs/.vuepress/dist/index.html index beb7fd03..18b030d0 100644 --- a/0.5.0/docs/.vuepress/dist/index.html +++ b/content/0.5.0/docs/.vuepress/dist/index.html @@ -27,7 +27,53 @@ -
buzz

buzz

A small/lightweight statically typed scripting language

Guide Reference Try it Latest release open in new window

Statically typed

Find out bugs in your IDE rather than production

JIT compiled

Uses MIR, a fast and lightweight JIT compiler

Unambiguous

No implicit behavior or unexpected type coercion

Small in size and complexity

Does not take much space on your drive or in your mind

Interoperability with C

Call C functions easily with FFIs and embed buzz with its C API

Fibers

Single threaded cooperative multitasking

import "std";
+    
+
+
+ buzz +

buzz

+

A small/lightweight statically typed scripting language

+

+ Guide + Reference + Try it + Latest release open in new window +

+
+ +
+
+

Statically typed

+

Find out bugs in your IDE rather than production

+
+
+

JIT compiled

+

Uses MIR, a fast and lightweight JIT compiler

+
+
+

Unambiguous

+

No implicit behavior or unexpected type coercion

+
+
+

Small in size and complexity

+

Does not take much space on your drive or in your mind

+
+
+

Interoperability with C

+

Call C functions easily with FFIs and embed buzz with its C API

+
+
+

Fibers

+

Single threaded cooperative multitasking

+
+
+ +
+
+
+
+              
+                import "std";
 
 fun fibonacci(n: int) > void *> int? {
     var n1 = 0;
diff --git a/0.5.0/docs/.vuepress/dist/logo.png b/content/0.5.0/docs/.vuepress/dist/logo.png
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/logo.png
rename to content/0.5.0/docs/.vuepress/dist/logo.png
diff --git a/0.5.0/docs/.vuepress/dist/reference/api.html b/content/0.5.0/docs/.vuepress/dist/reference/api.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/api.html
rename to content/0.5.0/docs/.vuepress/dist/reference/api.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/builtins/fibers.html b/content/0.5.0/docs/.vuepress/dist/reference/builtins/fibers.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/builtins/fibers.html
rename to content/0.5.0/docs/.vuepress/dist/reference/builtins/fibers.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/builtins/lists.html b/content/0.5.0/docs/.vuepress/dist/reference/builtins/lists.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/builtins/lists.html
rename to content/0.5.0/docs/.vuepress/dist/reference/builtins/lists.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/builtins/maps.html b/content/0.5.0/docs/.vuepress/dist/reference/builtins/maps.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/builtins/maps.html
rename to content/0.5.0/docs/.vuepress/dist/reference/builtins/maps.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/builtins/patterns.html b/content/0.5.0/docs/.vuepress/dist/reference/builtins/patterns.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/builtins/patterns.html
rename to content/0.5.0/docs/.vuepress/dist/reference/builtins/patterns.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/builtins/ranges.html b/content/0.5.0/docs/.vuepress/dist/reference/builtins/ranges.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/builtins/ranges.html
rename to content/0.5.0/docs/.vuepress/dist/reference/builtins/ranges.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/builtins/strings.html b/content/0.5.0/docs/.vuepress/dist/reference/builtins/strings.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/builtins/strings.html
rename to content/0.5.0/docs/.vuepress/dist/reference/builtins/strings.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/index.html b/content/0.5.0/docs/.vuepress/dist/reference/index.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/index.html
rename to content/0.5.0/docs/.vuepress/dist/reference/index.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/std/buffer.html b/content/0.5.0/docs/.vuepress/dist/reference/std/buffer.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/std/buffer.html
rename to content/0.5.0/docs/.vuepress/dist/reference/std/buffer.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/std/crypto.html b/content/0.5.0/docs/.vuepress/dist/reference/std/crypto.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/std/crypto.html
rename to content/0.5.0/docs/.vuepress/dist/reference/std/crypto.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/std/debug.html b/content/0.5.0/docs/.vuepress/dist/reference/std/debug.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/std/debug.html
rename to content/0.5.0/docs/.vuepress/dist/reference/std/debug.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/std/ffi.html b/content/0.5.0/docs/.vuepress/dist/reference/std/ffi.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/std/ffi.html
rename to content/0.5.0/docs/.vuepress/dist/reference/std/ffi.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/std/fs.html b/content/0.5.0/docs/.vuepress/dist/reference/std/fs.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/std/fs.html
rename to content/0.5.0/docs/.vuepress/dist/reference/std/fs.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/std/gc.html b/content/0.5.0/docs/.vuepress/dist/reference/std/gc.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/std/gc.html
rename to content/0.5.0/docs/.vuepress/dist/reference/std/gc.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/std/io.html b/content/0.5.0/docs/.vuepress/dist/reference/std/io.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/std/io.html
rename to content/0.5.0/docs/.vuepress/dist/reference/std/io.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/std/math.html b/content/0.5.0/docs/.vuepress/dist/reference/std/math.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/std/math.html
rename to content/0.5.0/docs/.vuepress/dist/reference/std/math.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/std/os.html b/content/0.5.0/docs/.vuepress/dist/reference/std/os.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/std/os.html
rename to content/0.5.0/docs/.vuepress/dist/reference/std/os.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/std/serialize.html b/content/0.5.0/docs/.vuepress/dist/reference/std/serialize.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/std/serialize.html
rename to content/0.5.0/docs/.vuepress/dist/reference/std/serialize.html
diff --git a/0.5.0/docs/.vuepress/dist/reference/std/std.html b/content/0.5.0/docs/.vuepress/dist/reference/std/std.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/reference/std/std.html
rename to content/0.5.0/docs/.vuepress/dist/reference/std/std.html
diff --git a/0.5.0/docs/.vuepress/dist/repl.html b/content/0.5.0/docs/.vuepress/dist/repl.html
similarity index 100%
rename from 0.5.0/docs/.vuepress/dist/repl.html
rename to content/0.5.0/docs/.vuepress/dist/repl.html
diff --git a/0.5.0/docs/.vuepress/public/.DS_Store b/content/0.5.0/docs/.vuepress/public/.DS_Store
similarity index 100%
rename from 0.5.0/docs/.vuepress/public/.DS_Store
rename to content/0.5.0/docs/.vuepress/public/.DS_Store
diff --git a/0.5.0/docs/.vuepress/public/buzz.wasm b/content/0.5.0/docs/.vuepress/public/buzz.wasm
similarity index 100%
rename from 0.5.0/docs/.vuepress/public/buzz.wasm
rename to content/0.5.0/docs/.vuepress/public/buzz.wasm
diff --git a/0.5.0/docs/.vuepress/public/favicon.ico b/content/0.5.0/docs/.vuepress/public/favicon.ico
similarity index 100%
rename from 0.5.0/docs/.vuepress/public/favicon.ico
rename to content/0.5.0/docs/.vuepress/public/favicon.ico
diff --git a/0.5.0/docs/.vuepress/public/logo.png b/content/0.5.0/docs/.vuepress/public/logo.png
similarity index 100%
rename from 0.5.0/docs/.vuepress/public/logo.png
rename to content/0.5.0/docs/.vuepress/public/logo.png
diff --git a/0.5.0/docs/.vuepress/styles/index.scss b/content/0.5.0/docs/.vuepress/styles/index.scss
similarity index 100%
rename from 0.5.0/docs/.vuepress/styles/index.scss
rename to content/0.5.0/docs/.vuepress/styles/index.scss
diff --git a/0.5.0/docs/guide/README.md b/content/0.5.0/docs/guide/README.md
similarity index 100%
rename from 0.5.0/docs/guide/README.md
rename to content/0.5.0/docs/guide/README.md
diff --git a/0.5.0/docs/guide/building-installing.md b/content/0.5.0/docs/guide/building-installing.md
similarity index 100%
rename from 0.5.0/docs/guide/building-installing.md
rename to content/0.5.0/docs/guide/building-installing.md
diff --git a/0.5.0/docs/guide/calling-native-code.md b/content/0.5.0/docs/guide/calling-native-code.md
similarity index 100%
rename from 0.5.0/docs/guide/calling-native-code.md
rename to content/0.5.0/docs/guide/calling-native-code.md
diff --git a/0.5.0/docs/guide/control-flow.md b/content/0.5.0/docs/guide/control-flow.md
similarity index 100%
rename from 0.5.0/docs/guide/control-flow.md
rename to content/0.5.0/docs/guide/control-flow.md
diff --git a/0.5.0/docs/guide/enums.md b/content/0.5.0/docs/guide/enums.md
similarity index 100%
rename from 0.5.0/docs/guide/enums.md
rename to content/0.5.0/docs/guide/enums.md
diff --git a/0.5.0/docs/guide/errors.md b/content/0.5.0/docs/guide/errors.md
similarity index 100%
rename from 0.5.0/docs/guide/errors.md
rename to content/0.5.0/docs/guide/errors.md
diff --git a/0.5.0/docs/guide/ffi.md b/content/0.5.0/docs/guide/ffi.md
similarity index 100%
rename from 0.5.0/docs/guide/ffi.md
rename to content/0.5.0/docs/guide/ffi.md
diff --git a/0.5.0/docs/guide/fibers.md b/content/0.5.0/docs/guide/fibers.md
similarity index 100%
rename from 0.5.0/docs/guide/fibers.md
rename to content/0.5.0/docs/guide/fibers.md
diff --git a/0.5.0/docs/guide/functions.md b/content/0.5.0/docs/guide/functions.md
similarity index 100%
rename from 0.5.0/docs/guide/functions.md
rename to content/0.5.0/docs/guide/functions.md
diff --git a/0.5.0/docs/guide/import-export.md b/content/0.5.0/docs/guide/import-export.md
similarity index 100%
rename from 0.5.0/docs/guide/import-export.md
rename to content/0.5.0/docs/guide/import-export.md
diff --git a/0.5.0/docs/guide/null-safety.md b/content/0.5.0/docs/guide/null-safety.md
similarity index 100%
rename from 0.5.0/docs/guide/null-safety.md
rename to content/0.5.0/docs/guide/null-safety.md
diff --git a/0.5.0/docs/guide/objects.md b/content/0.5.0/docs/guide/objects.md
similarity index 100%
rename from 0.5.0/docs/guide/objects.md
rename to content/0.5.0/docs/guide/objects.md
diff --git a/0.5.0/docs/guide/protocols.md b/content/0.5.0/docs/guide/protocols.md
similarity index 100%
rename from 0.5.0/docs/guide/protocols.md
rename to content/0.5.0/docs/guide/protocols.md
diff --git a/0.5.0/docs/guide/scope.md b/content/0.5.0/docs/guide/scope.md
similarity index 100%
rename from 0.5.0/docs/guide/scope.md
rename to content/0.5.0/docs/guide/scope.md
diff --git a/0.5.0/docs/guide/syntax.md b/content/0.5.0/docs/guide/syntax.md
similarity index 100%
rename from 0.5.0/docs/guide/syntax.md
rename to content/0.5.0/docs/guide/syntax.md
diff --git a/0.5.0/docs/guide/types.md b/content/0.5.0/docs/guide/types.md
similarity index 100%
rename from 0.5.0/docs/guide/types.md
rename to content/0.5.0/docs/guide/types.md
diff --git a/0.5.0/docs/reference/README.md b/content/0.5.0/docs/reference/README.md
similarity index 100%
rename from 0.5.0/docs/reference/README.md
rename to content/0.5.0/docs/reference/README.md
diff --git a/0.5.0/docs/reference/api.md b/content/0.5.0/docs/reference/api.md
similarity index 100%
rename from 0.5.0/docs/reference/api.md
rename to content/0.5.0/docs/reference/api.md
diff --git a/0.5.0/docs/reference/builtins/fibers.md b/content/0.5.0/docs/reference/builtins/fibers.md
similarity index 100%
rename from 0.5.0/docs/reference/builtins/fibers.md
rename to content/0.5.0/docs/reference/builtins/fibers.md
diff --git a/0.5.0/docs/reference/builtins/lists.md b/content/0.5.0/docs/reference/builtins/lists.md
similarity index 100%
rename from 0.5.0/docs/reference/builtins/lists.md
rename to content/0.5.0/docs/reference/builtins/lists.md
diff --git a/0.5.0/docs/reference/builtins/maps.md b/content/0.5.0/docs/reference/builtins/maps.md
similarity index 100%
rename from 0.5.0/docs/reference/builtins/maps.md
rename to content/0.5.0/docs/reference/builtins/maps.md
diff --git a/0.5.0/docs/reference/builtins/patterns.md b/content/0.5.0/docs/reference/builtins/patterns.md
similarity index 100%
rename from 0.5.0/docs/reference/builtins/patterns.md
rename to content/0.5.0/docs/reference/builtins/patterns.md
diff --git a/0.5.0/docs/reference/builtins/ranges.md b/content/0.5.0/docs/reference/builtins/ranges.md
similarity index 100%
rename from 0.5.0/docs/reference/builtins/ranges.md
rename to content/0.5.0/docs/reference/builtins/ranges.md
diff --git a/0.5.0/docs/reference/builtins/strings.md b/content/0.5.0/docs/reference/builtins/strings.md
similarity index 100%
rename from 0.5.0/docs/reference/builtins/strings.md
rename to content/0.5.0/docs/reference/builtins/strings.md
diff --git a/0.5.0/docs/reference/std/buffer.md b/content/0.5.0/docs/reference/std/buffer.md
similarity index 100%
rename from 0.5.0/docs/reference/std/buffer.md
rename to content/0.5.0/docs/reference/std/buffer.md
diff --git a/0.5.0/docs/reference/std/crypto.md b/content/0.5.0/docs/reference/std/crypto.md
similarity index 100%
rename from 0.5.0/docs/reference/std/crypto.md
rename to content/0.5.0/docs/reference/std/crypto.md
diff --git a/0.5.0/docs/reference/std/debug.md b/content/0.5.0/docs/reference/std/debug.md
similarity index 100%
rename from 0.5.0/docs/reference/std/debug.md
rename to content/0.5.0/docs/reference/std/debug.md
diff --git a/0.5.0/docs/reference/std/ffi.md b/content/0.5.0/docs/reference/std/ffi.md
similarity index 100%
rename from 0.5.0/docs/reference/std/ffi.md
rename to content/0.5.0/docs/reference/std/ffi.md
diff --git a/0.5.0/docs/reference/std/fs.md b/content/0.5.0/docs/reference/std/fs.md
similarity index 100%
rename from 0.5.0/docs/reference/std/fs.md
rename to content/0.5.0/docs/reference/std/fs.md
diff --git a/0.5.0/docs/reference/std/gc.md b/content/0.5.0/docs/reference/std/gc.md
similarity index 100%
rename from 0.5.0/docs/reference/std/gc.md
rename to content/0.5.0/docs/reference/std/gc.md
diff --git a/0.5.0/docs/reference/std/io.md b/content/0.5.0/docs/reference/std/io.md
similarity index 100%
rename from 0.5.0/docs/reference/std/io.md
rename to content/0.5.0/docs/reference/std/io.md
diff --git a/0.5.0/docs/reference/std/math.md b/content/0.5.0/docs/reference/std/math.md
similarity index 100%
rename from 0.5.0/docs/reference/std/math.md
rename to content/0.5.0/docs/reference/std/math.md
diff --git a/0.5.0/docs/reference/std/os.md b/content/0.5.0/docs/reference/std/os.md
similarity index 100%
rename from 0.5.0/docs/reference/std/os.md
rename to content/0.5.0/docs/reference/std/os.md
diff --git a/0.5.0/docs/reference/std/serialize.md b/content/0.5.0/docs/reference/std/serialize.md
similarity index 100%
rename from 0.5.0/docs/reference/std/serialize.md
rename to content/0.5.0/docs/reference/std/serialize.md
diff --git a/0.5.0/docs/reference/std/std.md b/content/0.5.0/docs/reference/std/std.md
similarity index 100%
rename from 0.5.0/docs/reference/std/std.md
rename to content/0.5.0/docs/reference/std/std.md
diff --git a/0.5.0/docs/repl.md b/content/0.5.0/docs/repl.md
similarity index 100%
rename from 0.5.0/docs/repl.md
rename to content/0.5.0/docs/repl.md
diff --git a/content/0.5.0/index.smd b/content/0.5.0/index.smd
new file mode 100755
index 00000000..54a3ee8c
--- /dev/null
+++ b/content/0.5.0/index.smd
@@ -0,0 +1,62 @@
+---
+.title = "buzz",
+.description = "A small/lightweight statically typed scripting language",
+.date = .date("1990-01-01T00:00:00"),
+.custom = {
+  "actions": [
+    { "text": "Guide", "link": "/guide/" },
+    { "text": "Reference", "link": "/reference/" },
+    { "text": "Try it", "link": "/repl" },
+    { "text": "Latest release", "link": "https://github.com/buzz-language/buzz/releases/tag/0.5.0" },
+  ],
+  "features": [
+    {
+      "title": "Statically typed",
+      "details": "Find out bugs in your IDE rather than production",
+    },
+    {
+      "title": "JIT compiled",
+      "details": "Uses MIR, a fast and lightweight JIT compiler",
+    },
+    {
+      "title": "Small in size and complexity",
+      "details": "Does not take much space on your drive or in your mind",
+    },
+    {
+      "title": "Interoperability with C",
+      "details": "Call C functions easily with FFIs and embed buzz with its C API",
+    },
+    {
+      "title": "Fibers",
+      "details": "Single threaded cooperative multitasking",
+    },
+  ],
+},
+.layout = "home.shtml",
+//footer: MIT licensed | Copyright © 2021-present Benoit Giannangeli
+---
+
+```zig buzz
+import "std";
+
+fun fibonacci(n: int) > void *> int? {
+    var n1 = 0;
+    var n2 = 1;
+    var next: int? = null;
+
+    foreach (_ in 0..n) {
+        _ = yield n1;
+        next = n1 + n2;
+        n1 = n2;
+        n2 = next!;
+    }
+}
+
+fun main(args: [str]) > void {
+    final N = std\parseInt(args[?0] ?? "10")!;
+
+    foreach (n in &fibonacci(N)) {
+        std\print("{n}");
+    }
+}
+```
diff --git a/0.5.0/nginx.conf b/content/0.5.0/nginx.conf
similarity index 100%
rename from 0.5.0/nginx.conf
rename to content/0.5.0/nginx.conf
diff --git a/0.5.0/package.json b/content/0.5.0/package.json
similarity index 100%
rename from 0.5.0/package.json
rename to content/0.5.0/package.json
diff --git a/0.5.0/pnpm-lock.yaml b/content/0.5.0/pnpm-lock.yaml
similarity index 100%
rename from 0.5.0/pnpm-lock.yaml
rename to content/0.5.0/pnpm-lock.yaml
diff --git a/content/about.smd b/content/about.smd
new file mode 100644
index 00000000..d0f60eca
--- /dev/null
+++ b/content/about.smd
@@ -0,0 +1,54 @@
+---
+.title = "About",
+.date = .date("1990-01-01T00:00:00"),
+.layout = "index.shtml",
+---
+
+# About Zine
+Zine is an MIT-licensed project created by [Loris Cro](https://kristoff.it) and
+other contributors listed on the [official repository](https://github.com/kristoff-it/zine/contributors).
+
+Zine is inspired by [Hugo](https://gohugo.io) but features an entirely custom set
+of authoring languages:
+
+- [Scripty](https://zine-ssg.io/docs/scripty/) is the small expression
+  language that both SuperHTML and SuperMD share to express templating logic.
+
+- [SuperHTML](https://zine-ssg.io/docs/superhtml/) is the HTML templating
+   language used by Zine. Unlike most `{{curly braced}}` templating languages,
+   SuperHTML uses valid HTML syntax to express the templating logic, adding only
+   minor extensions to normal HTML.
+   Thanks to this approach, it offers instant
+   syntax checking and autoformatting via [a CLI tool](https://github.com/kristoff-it/superhtml) as well as Language Server support ([VScode Extension](https://marketplace.visualstudio.com/items?itemName=LorisCro.super)).
+
+  ># [NOTE]($block)
+  >The correct file extension for SuperHTML templates is `.shtml`.
+
+- [SuperMD](https://zine-ssg.io/docs/supermd/) is a superset of Markdown
+  that, instead of relying on inline HTML, offers new constructs for expressing
+  content embeds without pulling into your content needless layouting concerns.
+  A CLI tool and language server for SuperMD is in the works.
+
+  ># [NOTE]($block)
+  >The correct file extension for SuperMD pages is `.smd`.
+
+# Zine is alpha software
+
+Zine is not yet complete. The main functionality is present and you will be able
+to build even moderately complex static websites without issue.
+
+That said using Zine today does imply participating in the development process
+to some degree, which usually means inquiring about the development status of
+a feature you need, or reporting a bug.
+
+
+Here are some quicklinks related to Zine:
+
+- Official Website: https://zine-ssg.io/
+- Source Code: https://github.com/kristoff-it/zine/
+- Discord: https://discord.com/invite/B73sGxF
+
+
+
+
+
diff --git a/content/blog/first-post/fanzine.jpg b/content/blog/first-post/fanzine.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9d6e569f9c2dc06fa61d7b2ebb8e3c8fe4c871fe
GIT binary patch
literal 124852
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�D!G8oJ(CKWoIR
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%0DwhC-?>Fc_(wk|?kH8I^_L0u
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

literal 0
HcmV?d00001

diff --git a/content/blog/first-post/index.smd b/content/blog/first-post/index.smd
new file mode 100644
index 00000000..fd4d5f29
--- /dev/null
+++ b/content/blog/first-post/index.smd
@@ -0,0 +1,108 @@
+---
+.title = "First Post: What's A Zine?",
+.date = .date("1990-01-01T00:00:00"),
+.layout = "post.shtml",
+---
+
+This is a sample first post for your blog.
+
+This post is defined in `content/blog/first-post/` and contains the following
+files:
+
+- `index.smd`
+- `fanzine.jpg`
+
+Another interesting thing about this post is that it uses the `layouts/post.shtml`
+template which adds at the bottom page navigation within the blog section.
+
+Enough about Zine, let's talk about zines.
+
+# Fanzines
+
+A zine (short for *fanzine*, from "fan" + "magazine") is a non-professional
+publication created by people that want to express themselves in paper form,
+usually in relation to a cultural phenomenon of some kind.
+
+[An example of zine from 1976.](<$image.asset("fanzine.jpg").alt("A photo of a black and white flyer. The main title reads 'A night of pure energy' and the rest of the page contains a mix of pictures of guitarists interleaved with other text snippets, some seemingly taken from a professional publication of some kind, and some handwritten to announce concert night dates, presumably for the musicians in the picture.")>)
+
+# Zines in the digital era
+
+In the digital age, some of the cultural impetus behind zines got redirected to
+personal blogs and similar digital, non-professional publications. The 90's and
+early 00's are famous for their whacky websites full of clip art, wordart text
+and "under construction" animated gifs.
+
+This initial organic exploration didn't last for too long as the rise of social
+media diverted a lot of self-expression energy towards walled gardens, a change
+that was also fueled by the much tighter and intense feedback loop that those
+platform enable.
+
+In the 90's the stongest dopamine hit you could get was adding a visit counter
+to your altavista website and watch it go up, slowly, mostly because of your own
+accesses. In modern times views are almost meaningless and interactions such as
+*likes*, *retweets* and *comments* provide much stronger positive feedback.
+
+An unfortunate side effect of this new cultural wave centered around social media
+is that not only you end up gifting your content to platform owners, but you also
+participate in a system where the *language* of the social media site shapes your
+thoughts and experience in specific, and often user-hostile, ways.
+
+Art, just like liquids, takes the shape of the container you put it in. A mobile
+game that lives off of in app purchases will never be truly great because of the
+tension between making the game entertaining enough to keep players engaged, and
+the need to make it boring enough so that they will want to buy upgrades to make
+the game more fun.
+
+Similarly, self-expression on Twitter is encouraged to take the shape of short,
+hyperbolic hot takes that forgo nuance in order to create catchy quips that can
+be used for hasty decision making.
+
+Likewise, [corpowave]($text.attrs('wave')) never goes out of style on LinkedIn.
+Spend enough time in there and you will become a character from Severance.
+
+# We're not in 1990 anymore
+
+Despite all the issues with social media, there is no point in thinking of the
+90's as a better time. It was not. And despite the winks at the past, Zine is
+not a tool for indulging in nostalgia.
+
+**The goal is to make art**: the act of inducing a change in others through
+our self-expression.
+
+You could argue that the 90's excelled at self-expression, but in doing so you
+would also have to accept that social media is infinitely more effective at
+inducing change in others (albeit at the expense of freedom of expression).
+
+Once you realize that, the path forward is clear:
+
+1. Own your content.
+2. Create new social systems that optimize for creating art over engagement.
+
+Owning your content means that you will be unaffected by enshittification of
+platforms that would otherwise keep your data hostage. It also is the single
+most effective thing you can do as an individual to take power away from
+platforms, all while protecting your own immediate interests.
+
+Creation of new social systems is a *slightly more hairy* problem than self
+hosting a static website, but it's something that can be done. Over the years
+we've had plenty of social outlets that have allowed people to socialize through
+their homemade games, music, drawings, fanfics, etc; and chances are that we
+have yet many more of these outlets ahead of us to create.
+
+Zine gives you a small puzzle piece to help you inch closer toward a better
+future, partially by providing you with a new iteration over tried and true
+patterns (e.g. by facilitating content creation by separating content from
+layouting concerns as much as possible), and also by being a bit experimental
+with the concept of a devlog, something that you wouldn't normally expect to
+find on a static website.
+
+Lastly, Zine makes sure your content (both blog and devlog, but also any
+other content format you might come up with yourself) is available via RSS
+syndication. RSS feeds are far from a winning technology in the fight against
+the ebb and *enshitty*flow of social media, but they are another small puzzle
+piece that costs nothing to maintain and that might turn out to be critical once
+enough other preconditions are met.
+
+With that in mind, **go make art with your words**.
+
+-- Loris
diff --git a/content/blog/index.smd b/content/blog/index.smd
new file mode 100644
index 00000000..f681ee71
--- /dev/null
+++ b/content/blog/index.smd
@@ -0,0 +1,38 @@
+---
+.title = "Blog",
+.date = .date("1990-01-01T00:00:00"),
+.layout = "blog.shtml",
+.alternatives = [.{
+    .name = "rss",
+    .layout = "blog.xml",
+    .output = "index.xml",
+}],
+---
+
+This page defines the blog section and lists all posts in it.
+
+A "site section" in Zine is a group of pages that form a logical subtree of the
+website. It's related to directory structure, but it's not an entirely 1:1 mapping.
+
+What defines a site section in Zine is the presence of `index.smd` files. You
+can learn more [in the official Zine docs](https://zine-ssg.io/docs/).
+
+Take also a look at `layouts/blog.shtml` to get an idea of how to render a page
+list in a SuperHTML template.
+
+The blog section also has an [RSS feed]($link.alternative('rss')).
+
+In Zine, RSS feeds are considered "alternative" versions of an existing page. In
+concrete defines the blog section and that lists all pages in it, is rendered in
+two versions: HTML for human readers, and XML for RSS readers.
+
+This is the SuperMD frontmatter code that defines the RSS feed:
+
+```ziggy
+.alternatives = [{
+    .name = "rss",
+    .layout = "rss.xml",
+    .output = "index.xml",
+}],
+```
+[(btw syntax highlighting is done statically in Zine, no need for javascript libraries, unless you want to)]($text.attrs('small'))
diff --git a/content/blog/second-post.smd b/content/blog/second-post.smd
new file mode 100644
index 00000000..7d27d214
--- /dev/null
+++ b/content/blog/second-post.smd
@@ -0,0 +1,59 @@
+---
+.title = "Second Post",
+.date = .date("1990-01-02T00:00:00"),
+.layout = "post.shtml",
+---
+
+This second post is mainly here to show you that you can also create single file
+posts for convenience. The first post contains more interesting content.
+
+Don't forget to read [the official SuperMD
+docs](https://zine-ssg.io/docs/supermd/) to know how to *style* your content.
+
+# Math
+
+Btw this sample website also includes the JS/CSS dependencies required to render
+math:
+
+```=mathtex
+\begin{aligned}
+f(t) &= \int_{-\infty}^\infty F(\omega) \cdot (-1)^{2 \omega t} \mathrm{d}\omega \\
+F(\omega) &= \int_{-\infty}^\infty f(t) \div (-1)^{2 \omega t} \mathrm{d}t \\
+\end{aligned}
+```
+
+This: [`(-1)^x = \cos(\pi x) + i\sin(\pi x)`]($mathtex) is an inline equation
+instead!
+
+# Code blocks
+
+
+```zig
+/// Shaper that uses CoreText.
+///
+/// CoreText shaping differs in subtle ways from HarfBuzz so it may result
+/// in inconsistent rendering across platforms. But it also fixes many
+/// issues (some macOS specific):
+///
+///   - Theta hat offset is incorrect in HarfBuzz but correct by default
+///     on macOS applications using CoreText. (See:
+///     https://github.com/harfbuzz/harfbuzz/discussions/4525)
+///
+///   - Hyphens (U+2010) can be synthesized by CoreText but not by HarfBuzz.
+///     See: https://github.com/mitchellh/ghostty/issues/1643
+///
+pub const Shaper = struct {
+    /// The allocated used for the feature list, font cache, and cell buf.
+    alloc: Allocator,
+
+    /// The string used for shaping the current run.
+    run_state: RunState,
+
+    /// CoreFoundation Dictionary which represents our font feature settings.
+    features: *macos.foundation.Dictionary,
+// ...
+```
+
+If you open the web inspector on the code below, you will see
+that the code has been correctly tagged for syntax highlighting, but it's currently
+on you to come up with CSS definitions for styling each class.
diff --git a/content/devlog/1989.smd b/content/devlog/1989.smd
new file mode 100644
index 00000000..eb7b857e
--- /dev/null
+++ b/content/devlog/1989.smd
@@ -0,0 +1,16 @@
+---
+.title = "Devlog - 1989",
+.date = .date("1989-01-01T00:00:00"),
+.layout = "devlog.shtml",
+---
+[]($section.id('about'))
+# About this Devlog
+This is a non-exhaustive, curated list of changes meant to help users quickly see what has improved since they last checked.
+
+You can [subscribe the latest devlog via RSS]($link.page('devlog').alternative('rss')).
+
+This page lists entries for the year 1989, for past or future entries consult the
+[devlog archive](/devlog/).
+
+## [Hello 1989]($section.id("1989-01-01T00:00:00"))
+This is a sample entry.
diff --git a/content/devlog/1990.smd b/content/devlog/1990.smd
new file mode 100644
index 00000000..8e81872d
--- /dev/null
+++ b/content/devlog/1990.smd
@@ -0,0 +1,36 @@
+---
+.title = "Devlog - 1990",
+.date = .date("1990-01-01T00:00:00"),
+.layout = "devlog.shtml",
+---
+[]($section.id('about'))
+# About this Devlog
+
+This is where you should describe to your users what your devlog is about.
+Refer to the corresponding section in the home page to learn more about devlogs.
+
+For example this is how the Zine devlog describes itself:
+
+> This is a non-exhaustive, curated list of changes meant to help users quickly see what has improved since they last checked.
+>
+> You can [subscribe to this page via RSS]($link.page('devlog').alternative('rss')).
+>
+> This page lists entries for the current year, for past entries consult the
+[devlog archive](/devlog/).
+
+Feel free to tweak it to your specific use case or replace it entirely as you
+see fit.
+
+Regardless of what you decide, you might want to make sure you preserve the
+links to the RSS feed and to the devlog archive from the copy above.
+
+
+## [Third Entry]($section.id("1990-01-03T00:00:00"))
+This is the third entry.
+
+## [Second Entry]($section.id("1990-01-02T00:00:00"))
+This is the second entry.
+
+## [Hello Zine]($section.id("1990-01-01T00:00:00"))
+This is the first entry in this year's devlog created with
+[Zine](https://zine-ssg.io)!
diff --git a/content/devlog/index.smd b/content/devlog/index.smd
new file mode 100644
index 00000000..681ce79f
--- /dev/null
+++ b/content/devlog/index.smd
@@ -0,0 +1,30 @@
+---
+.title = "Devlog Archive",
+.date = .date("1990-01-01T00:00:00"),
+.layout = "devlog-archive.shtml",
+.alternatives = [.{
+    .name = "rss",
+    .layout = "devlog.xml",
+    .output = "index.xml",
+}],
+---
+
+This page lists all the devlog years that are present on this site.
+Note how the top navigation menu doesn't link to this page, but instead links
+to the latest devlog year directly.
+
+The reason for adopting this structure is to make sure that links that exist in
+the wild to entries to our devlog don't become invalidated when a new year comes
+around and we rotate the devlog feed.
+
+Devlog rotation ensures that you don't have a single page that grows
+indefinitely, eventually compromising your editing expreience and worsening your
+user's browsing experience. You can use any arbitrary policy (even deleting old
+entries if you are fine with having a more ephemeral devlog), but cutting them
+by year is a good default option.
+
+When rotating a devlog all you have to do is create a new page with a newer
+date set in the frontmatter `date` field, and update the page description to let
+people know that this page is not the current year's devlog anymore.
+
+The latest devlog year is also available [via RSS feed]($link.alternative('rss')).
diff --git a/content/index.smd b/content/index.smd
new file mode 100644
index 00000000..01681bf2
--- /dev/null
+++ b/content/index.smd
@@ -0,0 +1,7 @@
+---
+.title = "buzz",
+.date = .date("1990-01-01T00:00:00"),
+.layout = "redirect.shtml",
+// Redirect to latest stable release
+.custom = { "new-location": "/0.5.0" },
+---
diff --git a/main/AGENTS.md b/content/main/AGENTS.md
similarity index 100%
rename from main/AGENTS.md
rename to content/main/AGENTS.md
diff --git a/main/docs/.vuepress/config.ts b/content/main/docs/.vuepress/config.ts
similarity index 100%
rename from main/docs/.vuepress/config.ts
rename to content/main/docs/.vuepress/config.ts
diff --git a/main/docs/.vuepress/dist/.DS_Store b/content/main/docs/.vuepress/dist/.DS_Store
similarity index 100%
rename from main/docs/.vuepress/dist/.DS_Store
rename to content/main/docs/.vuepress/dist/.DS_Store
diff --git a/main/docs/.vuepress/dist/404.html b/content/main/docs/.vuepress/dist/404.html
similarity index 100%
rename from main/docs/.vuepress/dist/404.html
rename to content/main/docs/.vuepress/dist/404.html
diff --git a/main/docs/.vuepress/dist/assets/404.html-60b35caa.js b/content/main/docs/.vuepress/dist/assets/404.html-60b35caa.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/404.html-60b35caa.js
rename to content/main/docs/.vuepress/dist/assets/404.html-60b35caa.js
diff --git a/main/docs/.vuepress/dist/assets/404.html-d948ce64.js b/content/main/docs/.vuepress/dist/assets/404.html-d948ce64.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/404.html-d948ce64.js
rename to content/main/docs/.vuepress/dist/assets/404.html-d948ce64.js
diff --git a/main/docs/.vuepress/dist/assets/api.html-664752d9.js b/content/main/docs/.vuepress/dist/assets/api.html-664752d9.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/api.html-664752d9.js
rename to content/main/docs/.vuepress/dist/assets/api.html-664752d9.js
diff --git a/main/docs/.vuepress/dist/assets/api.html-7b1ffba8.js b/content/main/docs/.vuepress/dist/assets/api.html-7b1ffba8.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/api.html-7b1ffba8.js
rename to content/main/docs/.vuepress/dist/assets/api.html-7b1ffba8.js
diff --git a/main/docs/.vuepress/dist/assets/app-631b6948.js b/content/main/docs/.vuepress/dist/assets/app-631b6948.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/app-631b6948.js
rename to content/main/docs/.vuepress/dist/assets/app-631b6948.js
diff --git a/main/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg b/content/main/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg
similarity index 100%
rename from main/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg
rename to content/main/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg
diff --git a/main/docs/.vuepress/dist/assets/buffer.html-4cb461be.js b/content/main/docs/.vuepress/dist/assets/buffer.html-4cb461be.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/buffer.html-4cb461be.js
rename to content/main/docs/.vuepress/dist/assets/buffer.html-4cb461be.js
diff --git a/main/docs/.vuepress/dist/assets/buffer.html-bc4f6a2b.js b/content/main/docs/.vuepress/dist/assets/buffer.html-bc4f6a2b.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/buffer.html-bc4f6a2b.js
rename to content/main/docs/.vuepress/dist/assets/buffer.html-bc4f6a2b.js
diff --git a/main/docs/.vuepress/dist/assets/building-installing.html-3e68969f.js b/content/main/docs/.vuepress/dist/assets/building-installing.html-3e68969f.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/building-installing.html-3e68969f.js
rename to content/main/docs/.vuepress/dist/assets/building-installing.html-3e68969f.js
diff --git a/main/docs/.vuepress/dist/assets/building-installing.html-5062e075.js b/content/main/docs/.vuepress/dist/assets/building-installing.html-5062e075.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/building-installing.html-5062e075.js
rename to content/main/docs/.vuepress/dist/assets/building-installing.html-5062e075.js
diff --git a/main/docs/.vuepress/dist/assets/calling-native-code.html-7a10d775.js b/content/main/docs/.vuepress/dist/assets/calling-native-code.html-7a10d775.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/calling-native-code.html-7a10d775.js
rename to content/main/docs/.vuepress/dist/assets/calling-native-code.html-7a10d775.js
diff --git a/main/docs/.vuepress/dist/assets/calling-native-code.html-f0064cbc.js b/content/main/docs/.vuepress/dist/assets/calling-native-code.html-f0064cbc.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/calling-native-code.html-f0064cbc.js
rename to content/main/docs/.vuepress/dist/assets/calling-native-code.html-f0064cbc.js
diff --git a/main/docs/.vuepress/dist/assets/control-flow.html-54925a68.js b/content/main/docs/.vuepress/dist/assets/control-flow.html-54925a68.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/control-flow.html-54925a68.js
rename to content/main/docs/.vuepress/dist/assets/control-flow.html-54925a68.js
diff --git a/main/docs/.vuepress/dist/assets/control-flow.html-c4284ae0.js b/content/main/docs/.vuepress/dist/assets/control-flow.html-c4284ae0.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/control-flow.html-c4284ae0.js
rename to content/main/docs/.vuepress/dist/assets/control-flow.html-c4284ae0.js
diff --git a/main/docs/.vuepress/dist/assets/crypto.html-4423d2c8.js b/content/main/docs/.vuepress/dist/assets/crypto.html-4423d2c8.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/crypto.html-4423d2c8.js
rename to content/main/docs/.vuepress/dist/assets/crypto.html-4423d2c8.js
diff --git a/main/docs/.vuepress/dist/assets/crypto.html-4f1b84d7.js b/content/main/docs/.vuepress/dist/assets/crypto.html-4f1b84d7.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/crypto.html-4f1b84d7.js
rename to content/main/docs/.vuepress/dist/assets/crypto.html-4f1b84d7.js
diff --git a/main/docs/.vuepress/dist/assets/debug.html-553b1ba0.js b/content/main/docs/.vuepress/dist/assets/debug.html-553b1ba0.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/debug.html-553b1ba0.js
rename to content/main/docs/.vuepress/dist/assets/debug.html-553b1ba0.js
diff --git a/main/docs/.vuepress/dist/assets/debug.html-e233508d.js b/content/main/docs/.vuepress/dist/assets/debug.html-e233508d.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/debug.html-e233508d.js
rename to content/main/docs/.vuepress/dist/assets/debug.html-e233508d.js
diff --git a/main/docs/.vuepress/dist/assets/enums.html-bad178cc.js b/content/main/docs/.vuepress/dist/assets/enums.html-bad178cc.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/enums.html-bad178cc.js
rename to content/main/docs/.vuepress/dist/assets/enums.html-bad178cc.js
diff --git a/main/docs/.vuepress/dist/assets/enums.html-fac67bba.js b/content/main/docs/.vuepress/dist/assets/enums.html-fac67bba.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/enums.html-fac67bba.js
rename to content/main/docs/.vuepress/dist/assets/enums.html-fac67bba.js
diff --git a/main/docs/.vuepress/dist/assets/errors.html-0d72a89c.js b/content/main/docs/.vuepress/dist/assets/errors.html-0d72a89c.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/errors.html-0d72a89c.js
rename to content/main/docs/.vuepress/dist/assets/errors.html-0d72a89c.js
diff --git a/main/docs/.vuepress/dist/assets/errors.html-1c454e81.js b/content/main/docs/.vuepress/dist/assets/errors.html-1c454e81.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/errors.html-1c454e81.js
rename to content/main/docs/.vuepress/dist/assets/errors.html-1c454e81.js
diff --git a/main/docs/.vuepress/dist/assets/errors.html-223a5da6.js b/content/main/docs/.vuepress/dist/assets/errors.html-223a5da6.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/errors.html-223a5da6.js
rename to content/main/docs/.vuepress/dist/assets/errors.html-223a5da6.js
diff --git a/main/docs/.vuepress/dist/assets/errors.html-ecd1636f.js b/content/main/docs/.vuepress/dist/assets/errors.html-ecd1636f.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/errors.html-ecd1636f.js
rename to content/main/docs/.vuepress/dist/assets/errors.html-ecd1636f.js
diff --git a/main/docs/.vuepress/dist/assets/ffi.html-130a5838.js b/content/main/docs/.vuepress/dist/assets/ffi.html-130a5838.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/ffi.html-130a5838.js
rename to content/main/docs/.vuepress/dist/assets/ffi.html-130a5838.js
diff --git a/main/docs/.vuepress/dist/assets/ffi.html-b12e681a.js b/content/main/docs/.vuepress/dist/assets/ffi.html-b12e681a.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/ffi.html-b12e681a.js
rename to content/main/docs/.vuepress/dist/assets/ffi.html-b12e681a.js
diff --git a/main/docs/.vuepress/dist/assets/ffi.html-c5d36b59.js b/content/main/docs/.vuepress/dist/assets/ffi.html-c5d36b59.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/ffi.html-c5d36b59.js
rename to content/main/docs/.vuepress/dist/assets/ffi.html-c5d36b59.js
diff --git a/main/docs/.vuepress/dist/assets/ffi.html-eea11461.js b/content/main/docs/.vuepress/dist/assets/ffi.html-eea11461.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/ffi.html-eea11461.js
rename to content/main/docs/.vuepress/dist/assets/ffi.html-eea11461.js
diff --git a/main/docs/.vuepress/dist/assets/fibers.html-16508b49.js b/content/main/docs/.vuepress/dist/assets/fibers.html-16508b49.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/fibers.html-16508b49.js
rename to content/main/docs/.vuepress/dist/assets/fibers.html-16508b49.js
diff --git a/main/docs/.vuepress/dist/assets/fibers.html-71ea4736.js b/content/main/docs/.vuepress/dist/assets/fibers.html-71ea4736.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/fibers.html-71ea4736.js
rename to content/main/docs/.vuepress/dist/assets/fibers.html-71ea4736.js
diff --git a/main/docs/.vuepress/dist/assets/fibers.html-8e285f23.js b/content/main/docs/.vuepress/dist/assets/fibers.html-8e285f23.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/fibers.html-8e285f23.js
rename to content/main/docs/.vuepress/dist/assets/fibers.html-8e285f23.js
diff --git a/main/docs/.vuepress/dist/assets/fibers.html-f5030769.js b/content/main/docs/.vuepress/dist/assets/fibers.html-f5030769.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/fibers.html-f5030769.js
rename to content/main/docs/.vuepress/dist/assets/fibers.html-f5030769.js
diff --git a/main/docs/.vuepress/dist/assets/fs.html-122542d3.js b/content/main/docs/.vuepress/dist/assets/fs.html-122542d3.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/fs.html-122542d3.js
rename to content/main/docs/.vuepress/dist/assets/fs.html-122542d3.js
diff --git a/main/docs/.vuepress/dist/assets/fs.html-a69c80bd.js b/content/main/docs/.vuepress/dist/assets/fs.html-a69c80bd.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/fs.html-a69c80bd.js
rename to content/main/docs/.vuepress/dist/assets/fs.html-a69c80bd.js
diff --git a/main/docs/.vuepress/dist/assets/functions.html-6d499fbe.js b/content/main/docs/.vuepress/dist/assets/functions.html-6d499fbe.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/functions.html-6d499fbe.js
rename to content/main/docs/.vuepress/dist/assets/functions.html-6d499fbe.js
diff --git a/main/docs/.vuepress/dist/assets/functions.html-71d6b513.js b/content/main/docs/.vuepress/dist/assets/functions.html-71d6b513.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/functions.html-71d6b513.js
rename to content/main/docs/.vuepress/dist/assets/functions.html-71d6b513.js
diff --git a/main/docs/.vuepress/dist/assets/gc.html-068f31c7.js b/content/main/docs/.vuepress/dist/assets/gc.html-068f31c7.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/gc.html-068f31c7.js
rename to content/main/docs/.vuepress/dist/assets/gc.html-068f31c7.js
diff --git a/main/docs/.vuepress/dist/assets/gc.html-3d7a02c4.js b/content/main/docs/.vuepress/dist/assets/gc.html-3d7a02c4.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/gc.html-3d7a02c4.js
rename to content/main/docs/.vuepress/dist/assets/gc.html-3d7a02c4.js
diff --git a/main/docs/.vuepress/dist/assets/get-started.html-52577ec7.js b/content/main/docs/.vuepress/dist/assets/get-started.html-52577ec7.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/get-started.html-52577ec7.js
rename to content/main/docs/.vuepress/dist/assets/get-started.html-52577ec7.js
diff --git a/main/docs/.vuepress/dist/assets/get-started.html-8c2eb3a6.js b/content/main/docs/.vuepress/dist/assets/get-started.html-8c2eb3a6.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/get-started.html-8c2eb3a6.js
rename to content/main/docs/.vuepress/dist/assets/get-started.html-8c2eb3a6.js
diff --git a/main/docs/.vuepress/dist/assets/http.html-4a451b45.js b/content/main/docs/.vuepress/dist/assets/http.html-4a451b45.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/http.html-4a451b45.js
rename to content/main/docs/.vuepress/dist/assets/http.html-4a451b45.js
diff --git a/main/docs/.vuepress/dist/assets/http.html-e1f7da91.js b/content/main/docs/.vuepress/dist/assets/http.html-e1f7da91.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/http.html-e1f7da91.js
rename to content/main/docs/.vuepress/dist/assets/http.html-e1f7da91.js
diff --git a/main/docs/.vuepress/dist/assets/import-export.html-253553e6.js b/content/main/docs/.vuepress/dist/assets/import-export.html-253553e6.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/import-export.html-253553e6.js
rename to content/main/docs/.vuepress/dist/assets/import-export.html-253553e6.js
diff --git a/main/docs/.vuepress/dist/assets/import-export.html-c7a1cb0f.js b/content/main/docs/.vuepress/dist/assets/import-export.html-c7a1cb0f.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/import-export.html-c7a1cb0f.js
rename to content/main/docs/.vuepress/dist/assets/import-export.html-c7a1cb0f.js
diff --git a/main/docs/.vuepress/dist/assets/index.html-2ec4ef30.js b/content/main/docs/.vuepress/dist/assets/index.html-2ec4ef30.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/index.html-2ec4ef30.js
rename to content/main/docs/.vuepress/dist/assets/index.html-2ec4ef30.js
diff --git a/main/docs/.vuepress/dist/assets/index.html-7de7ebeb.js b/content/main/docs/.vuepress/dist/assets/index.html-7de7ebeb.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/index.html-7de7ebeb.js
rename to content/main/docs/.vuepress/dist/assets/index.html-7de7ebeb.js
diff --git a/main/docs/.vuepress/dist/assets/index.html-9bac4119.js b/content/main/docs/.vuepress/dist/assets/index.html-9bac4119.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/index.html-9bac4119.js
rename to content/main/docs/.vuepress/dist/assets/index.html-9bac4119.js
diff --git a/main/docs/.vuepress/dist/assets/index.html-9ce5cec2.js b/content/main/docs/.vuepress/dist/assets/index.html-9ce5cec2.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/index.html-9ce5cec2.js
rename to content/main/docs/.vuepress/dist/assets/index.html-9ce5cec2.js
diff --git a/main/docs/.vuepress/dist/assets/index.html-b1241025.js b/content/main/docs/.vuepress/dist/assets/index.html-b1241025.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/index.html-b1241025.js
rename to content/main/docs/.vuepress/dist/assets/index.html-b1241025.js
diff --git a/main/docs/.vuepress/dist/assets/index.html-ee2aed99.js b/content/main/docs/.vuepress/dist/assets/index.html-ee2aed99.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/index.html-ee2aed99.js
rename to content/main/docs/.vuepress/dist/assets/index.html-ee2aed99.js
diff --git a/main/docs/.vuepress/dist/assets/io.html-28d6763c.js b/content/main/docs/.vuepress/dist/assets/io.html-28d6763c.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/io.html-28d6763c.js
rename to content/main/docs/.vuepress/dist/assets/io.html-28d6763c.js
diff --git a/main/docs/.vuepress/dist/assets/io.html-c1a15cd0.js b/content/main/docs/.vuepress/dist/assets/io.html-c1a15cd0.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/io.html-c1a15cd0.js
rename to content/main/docs/.vuepress/dist/assets/io.html-c1a15cd0.js
diff --git a/main/docs/.vuepress/dist/assets/lists.html-6196a427.js b/content/main/docs/.vuepress/dist/assets/lists.html-6196a427.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/lists.html-6196a427.js
rename to content/main/docs/.vuepress/dist/assets/lists.html-6196a427.js
diff --git a/main/docs/.vuepress/dist/assets/lists.html-eaf29a24.js b/content/main/docs/.vuepress/dist/assets/lists.html-eaf29a24.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/lists.html-eaf29a24.js
rename to content/main/docs/.vuepress/dist/assets/lists.html-eaf29a24.js
diff --git a/main/docs/.vuepress/dist/assets/manifest.html-b658225f.js b/content/main/docs/.vuepress/dist/assets/manifest.html-b658225f.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/manifest.html-b658225f.js
rename to content/main/docs/.vuepress/dist/assets/manifest.html-b658225f.js
diff --git a/main/docs/.vuepress/dist/assets/manifest.html-c41026e8.js b/content/main/docs/.vuepress/dist/assets/manifest.html-c41026e8.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/manifest.html-c41026e8.js
rename to content/main/docs/.vuepress/dist/assets/manifest.html-c41026e8.js
diff --git a/main/docs/.vuepress/dist/assets/maps.html-7ad1e8ad.js b/content/main/docs/.vuepress/dist/assets/maps.html-7ad1e8ad.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/maps.html-7ad1e8ad.js
rename to content/main/docs/.vuepress/dist/assets/maps.html-7ad1e8ad.js
diff --git a/main/docs/.vuepress/dist/assets/maps.html-8551948f.js b/content/main/docs/.vuepress/dist/assets/maps.html-8551948f.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/maps.html-8551948f.js
rename to content/main/docs/.vuepress/dist/assets/maps.html-8551948f.js
diff --git a/main/docs/.vuepress/dist/assets/math.html-93f55f15.js b/content/main/docs/.vuepress/dist/assets/math.html-93f55f15.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/math.html-93f55f15.js
rename to content/main/docs/.vuepress/dist/assets/math.html-93f55f15.js
diff --git a/main/docs/.vuepress/dist/assets/math.html-eb02d6d2.js b/content/main/docs/.vuepress/dist/assets/math.html-eb02d6d2.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/math.html-eb02d6d2.js
rename to content/main/docs/.vuepress/dist/assets/math.html-eb02d6d2.js
diff --git a/main/docs/.vuepress/dist/assets/null-safety.html-27a10c06.js b/content/main/docs/.vuepress/dist/assets/null-safety.html-27a10c06.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/null-safety.html-27a10c06.js
rename to content/main/docs/.vuepress/dist/assets/null-safety.html-27a10c06.js
diff --git a/main/docs/.vuepress/dist/assets/null-safety.html-a8154d47.js b/content/main/docs/.vuepress/dist/assets/null-safety.html-a8154d47.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/null-safety.html-a8154d47.js
rename to content/main/docs/.vuepress/dist/assets/null-safety.html-a8154d47.js
diff --git a/main/docs/.vuepress/dist/assets/objects.html-030ef37c.js b/content/main/docs/.vuepress/dist/assets/objects.html-030ef37c.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/objects.html-030ef37c.js
rename to content/main/docs/.vuepress/dist/assets/objects.html-030ef37c.js
diff --git a/main/docs/.vuepress/dist/assets/objects.html-785a4b41.js b/content/main/docs/.vuepress/dist/assets/objects.html-785a4b41.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/objects.html-785a4b41.js
rename to content/main/docs/.vuepress/dist/assets/objects.html-785a4b41.js
diff --git a/main/docs/.vuepress/dist/assets/os.html-ac29c9d4.js b/content/main/docs/.vuepress/dist/assets/os.html-ac29c9d4.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/os.html-ac29c9d4.js
rename to content/main/docs/.vuepress/dist/assets/os.html-ac29c9d4.js
diff --git a/main/docs/.vuepress/dist/assets/os.html-c27c3a80.js b/content/main/docs/.vuepress/dist/assets/os.html-c27c3a80.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/os.html-c27c3a80.js
rename to content/main/docs/.vuepress/dist/assets/os.html-c27c3a80.js
diff --git a/main/docs/.vuepress/dist/assets/package.html-edeb64c9.js b/content/main/docs/.vuepress/dist/assets/package.html-edeb64c9.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/package.html-edeb64c9.js
rename to content/main/docs/.vuepress/dist/assets/package.html-edeb64c9.js
diff --git a/main/docs/.vuepress/dist/assets/package.html-f02962f6.js b/content/main/docs/.vuepress/dist/assets/package.html-f02962f6.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/package.html-f02962f6.js
rename to content/main/docs/.vuepress/dist/assets/package.html-f02962f6.js
diff --git a/main/docs/.vuepress/dist/assets/patterns.html-59e24f57.js b/content/main/docs/.vuepress/dist/assets/patterns.html-59e24f57.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/patterns.html-59e24f57.js
rename to content/main/docs/.vuepress/dist/assets/patterns.html-59e24f57.js
diff --git a/main/docs/.vuepress/dist/assets/patterns.html-f2b4d5aa.js b/content/main/docs/.vuepress/dist/assets/patterns.html-f2b4d5aa.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/patterns.html-f2b4d5aa.js
rename to content/main/docs/.vuepress/dist/assets/patterns.html-f2b4d5aa.js
diff --git a/main/docs/.vuepress/dist/assets/protocols.html-6e7ed9b1.js b/content/main/docs/.vuepress/dist/assets/protocols.html-6e7ed9b1.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/protocols.html-6e7ed9b1.js
rename to content/main/docs/.vuepress/dist/assets/protocols.html-6e7ed9b1.js
diff --git a/main/docs/.vuepress/dist/assets/protocols.html-f1222f71.js b/content/main/docs/.vuepress/dist/assets/protocols.html-f1222f71.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/protocols.html-f1222f71.js
rename to content/main/docs/.vuepress/dist/assets/protocols.html-f1222f71.js
diff --git a/main/docs/.vuepress/dist/assets/ranges.html-3ca80bd5.js b/content/main/docs/.vuepress/dist/assets/ranges.html-3ca80bd5.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/ranges.html-3ca80bd5.js
rename to content/main/docs/.vuepress/dist/assets/ranges.html-3ca80bd5.js
diff --git a/main/docs/.vuepress/dist/assets/ranges.html-3f025e6a.js b/content/main/docs/.vuepress/dist/assets/ranges.html-3f025e6a.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/ranges.html-3f025e6a.js
rename to content/main/docs/.vuepress/dist/assets/ranges.html-3f025e6a.js
diff --git a/main/docs/.vuepress/dist/assets/repl.html-e0ab52fe.js b/content/main/docs/.vuepress/dist/assets/repl.html-e0ab52fe.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/repl.html-e0ab52fe.js
rename to content/main/docs/.vuepress/dist/assets/repl.html-e0ab52fe.js
diff --git a/main/docs/.vuepress/dist/assets/repl.html-e56c24b3.js b/content/main/docs/.vuepress/dist/assets/repl.html-e56c24b3.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/repl.html-e56c24b3.js
rename to content/main/docs/.vuepress/dist/assets/repl.html-e56c24b3.js
diff --git a/main/docs/.vuepress/dist/assets/scope.html-8abe8ae3.js b/content/main/docs/.vuepress/dist/assets/scope.html-8abe8ae3.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/scope.html-8abe8ae3.js
rename to content/main/docs/.vuepress/dist/assets/scope.html-8abe8ae3.js
diff --git a/main/docs/.vuepress/dist/assets/scope.html-e02d0c59.js b/content/main/docs/.vuepress/dist/assets/scope.html-e02d0c59.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/scope.html-e02d0c59.js
rename to content/main/docs/.vuepress/dist/assets/scope.html-e02d0c59.js
diff --git a/main/docs/.vuepress/dist/assets/serialize.html-f25dd295.js b/content/main/docs/.vuepress/dist/assets/serialize.html-f25dd295.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/serialize.html-f25dd295.js
rename to content/main/docs/.vuepress/dist/assets/serialize.html-f25dd295.js
diff --git a/main/docs/.vuepress/dist/assets/serialize.html-faa98dc9.js b/content/main/docs/.vuepress/dist/assets/serialize.html-faa98dc9.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/serialize.html-faa98dc9.js
rename to content/main/docs/.vuepress/dist/assets/serialize.html-faa98dc9.js
diff --git a/main/docs/.vuepress/dist/assets/std.html-014dd46a.js b/content/main/docs/.vuepress/dist/assets/std.html-014dd46a.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/std.html-014dd46a.js
rename to content/main/docs/.vuepress/dist/assets/std.html-014dd46a.js
diff --git a/main/docs/.vuepress/dist/assets/std.html-d8724455.js b/content/main/docs/.vuepress/dist/assets/std.html-d8724455.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/std.html-d8724455.js
rename to content/main/docs/.vuepress/dist/assets/std.html-d8724455.js
diff --git a/main/docs/.vuepress/dist/assets/strings.html-19211e8e.js b/content/main/docs/.vuepress/dist/assets/strings.html-19211e8e.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/strings.html-19211e8e.js
rename to content/main/docs/.vuepress/dist/assets/strings.html-19211e8e.js
diff --git a/main/docs/.vuepress/dist/assets/strings.html-9536272f.js b/content/main/docs/.vuepress/dist/assets/strings.html-9536272f.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/strings.html-9536272f.js
rename to content/main/docs/.vuepress/dist/assets/strings.html-9536272f.js
diff --git a/main/docs/.vuepress/dist/assets/style-5aa52750.css b/content/main/docs/.vuepress/dist/assets/style-5aa52750.css
similarity index 100%
rename from main/docs/.vuepress/dist/assets/style-5aa52750.css
rename to content/main/docs/.vuepress/dist/assets/style-5aa52750.css
diff --git a/main/docs/.vuepress/dist/assets/syntax.html-979ec2fd.js b/content/main/docs/.vuepress/dist/assets/syntax.html-979ec2fd.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/syntax.html-979ec2fd.js
rename to content/main/docs/.vuepress/dist/assets/syntax.html-979ec2fd.js
diff --git a/main/docs/.vuepress/dist/assets/syntax.html-c5ec77a6.js b/content/main/docs/.vuepress/dist/assets/syntax.html-c5ec77a6.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/syntax.html-c5ec77a6.js
rename to content/main/docs/.vuepress/dist/assets/syntax.html-c5ec77a6.js
diff --git a/main/docs/.vuepress/dist/assets/testing.html-23e53806.js b/content/main/docs/.vuepress/dist/assets/testing.html-23e53806.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/testing.html-23e53806.js
rename to content/main/docs/.vuepress/dist/assets/testing.html-23e53806.js
diff --git a/main/docs/.vuepress/dist/assets/testing.html-ee7981d7.js b/content/main/docs/.vuepress/dist/assets/testing.html-ee7981d7.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/testing.html-ee7981d7.js
rename to content/main/docs/.vuepress/dist/assets/testing.html-ee7981d7.js
diff --git a/main/docs/.vuepress/dist/assets/toml.html-69771c57.js b/content/main/docs/.vuepress/dist/assets/toml.html-69771c57.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/toml.html-69771c57.js
rename to content/main/docs/.vuepress/dist/assets/toml.html-69771c57.js
diff --git a/main/docs/.vuepress/dist/assets/toml.html-f24fd17d.js b/content/main/docs/.vuepress/dist/assets/toml.html-f24fd17d.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/toml.html-f24fd17d.js
rename to content/main/docs/.vuepress/dist/assets/toml.html-f24fd17d.js
diff --git a/main/docs/.vuepress/dist/assets/types.html-2dc8ea4a.js b/content/main/docs/.vuepress/dist/assets/types.html-2dc8ea4a.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/types.html-2dc8ea4a.js
rename to content/main/docs/.vuepress/dist/assets/types.html-2dc8ea4a.js
diff --git a/main/docs/.vuepress/dist/assets/types.html-f2d7ed88.js b/content/main/docs/.vuepress/dist/assets/types.html-f2d7ed88.js
similarity index 100%
rename from main/docs/.vuepress/dist/assets/types.html-f2d7ed88.js
rename to content/main/docs/.vuepress/dist/assets/types.html-f2d7ed88.js
diff --git a/main/docs/.vuepress/dist/buzz.wasm b/content/main/docs/.vuepress/dist/buzz.wasm
similarity index 100%
rename from main/docs/.vuepress/dist/buzz.wasm
rename to content/main/docs/.vuepress/dist/buzz.wasm
diff --git a/main/docs/.vuepress/dist/favicon.ico b/content/main/docs/.vuepress/dist/favicon.ico
similarity index 100%
rename from main/docs/.vuepress/dist/favicon.ico
rename to content/main/docs/.vuepress/dist/favicon.ico
diff --git a/main/docs/.vuepress/dist/guide/building-installing.html b/content/main/docs/.vuepress/dist/guide/building-installing.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/building-installing.html
rename to content/main/docs/.vuepress/dist/guide/building-installing.html
diff --git a/main/docs/.vuepress/dist/guide/calling-native-code.html b/content/main/docs/.vuepress/dist/guide/calling-native-code.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/calling-native-code.html
rename to content/main/docs/.vuepress/dist/guide/calling-native-code.html
diff --git a/main/docs/.vuepress/dist/guide/control-flow.html b/content/main/docs/.vuepress/dist/guide/control-flow.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/control-flow.html
rename to content/main/docs/.vuepress/dist/guide/control-flow.html
diff --git a/main/docs/.vuepress/dist/guide/enums.html b/content/main/docs/.vuepress/dist/guide/enums.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/enums.html
rename to content/main/docs/.vuepress/dist/guide/enums.html
diff --git a/main/docs/.vuepress/dist/guide/errors.html b/content/main/docs/.vuepress/dist/guide/errors.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/errors.html
rename to content/main/docs/.vuepress/dist/guide/errors.html
diff --git a/main/docs/.vuepress/dist/guide/ffi.html b/content/main/docs/.vuepress/dist/guide/ffi.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/ffi.html
rename to content/main/docs/.vuepress/dist/guide/ffi.html
diff --git a/main/docs/.vuepress/dist/guide/fibers.html b/content/main/docs/.vuepress/dist/guide/fibers.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/fibers.html
rename to content/main/docs/.vuepress/dist/guide/fibers.html
diff --git a/main/docs/.vuepress/dist/guide/functions.html b/content/main/docs/.vuepress/dist/guide/functions.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/functions.html
rename to content/main/docs/.vuepress/dist/guide/functions.html
diff --git a/main/docs/.vuepress/dist/guide/get-started.html b/content/main/docs/.vuepress/dist/guide/get-started.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/get-started.html
rename to content/main/docs/.vuepress/dist/guide/get-started.html
diff --git a/main/docs/.vuepress/dist/guide/import-export.html b/content/main/docs/.vuepress/dist/guide/import-export.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/import-export.html
rename to content/main/docs/.vuepress/dist/guide/import-export.html
diff --git a/main/docs/.vuepress/dist/guide/index.html b/content/main/docs/.vuepress/dist/guide/index.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/index.html
rename to content/main/docs/.vuepress/dist/guide/index.html
diff --git a/main/docs/.vuepress/dist/guide/null-safety.html b/content/main/docs/.vuepress/dist/guide/null-safety.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/null-safety.html
rename to content/main/docs/.vuepress/dist/guide/null-safety.html
diff --git a/main/docs/.vuepress/dist/guide/objects.html b/content/main/docs/.vuepress/dist/guide/objects.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/objects.html
rename to content/main/docs/.vuepress/dist/guide/objects.html
diff --git a/main/docs/.vuepress/dist/guide/package.html b/content/main/docs/.vuepress/dist/guide/package.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/package.html
rename to content/main/docs/.vuepress/dist/guide/package.html
diff --git a/main/docs/.vuepress/dist/guide/protocols.html b/content/main/docs/.vuepress/dist/guide/protocols.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/protocols.html
rename to content/main/docs/.vuepress/dist/guide/protocols.html
diff --git a/main/docs/.vuepress/dist/guide/scope.html b/content/main/docs/.vuepress/dist/guide/scope.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/scope.html
rename to content/main/docs/.vuepress/dist/guide/scope.html
diff --git a/main/docs/.vuepress/dist/guide/syntax.html b/content/main/docs/.vuepress/dist/guide/syntax.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/syntax.html
rename to content/main/docs/.vuepress/dist/guide/syntax.html
diff --git a/main/docs/.vuepress/dist/guide/types.html b/content/main/docs/.vuepress/dist/guide/types.html
similarity index 100%
rename from main/docs/.vuepress/dist/guide/types.html
rename to content/main/docs/.vuepress/dist/guide/types.html
diff --git a/main/docs/.vuepress/dist/index.html b/content/main/docs/.vuepress/dist/index.html
similarity index 100%
rename from main/docs/.vuepress/dist/index.html
rename to content/main/docs/.vuepress/dist/index.html
diff --git a/main/docs/.vuepress/dist/logo.png b/content/main/docs/.vuepress/dist/logo.png
similarity index 100%
rename from main/docs/.vuepress/dist/logo.png
rename to content/main/docs/.vuepress/dist/logo.png
diff --git a/main/docs/.vuepress/dist/reference/api.html b/content/main/docs/.vuepress/dist/reference/api.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/api.html
rename to content/main/docs/.vuepress/dist/reference/api.html
diff --git a/main/docs/.vuepress/dist/reference/builtins/fibers.html b/content/main/docs/.vuepress/dist/reference/builtins/fibers.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/builtins/fibers.html
rename to content/main/docs/.vuepress/dist/reference/builtins/fibers.html
diff --git a/main/docs/.vuepress/dist/reference/builtins/lists.html b/content/main/docs/.vuepress/dist/reference/builtins/lists.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/builtins/lists.html
rename to content/main/docs/.vuepress/dist/reference/builtins/lists.html
diff --git a/main/docs/.vuepress/dist/reference/builtins/maps.html b/content/main/docs/.vuepress/dist/reference/builtins/maps.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/builtins/maps.html
rename to content/main/docs/.vuepress/dist/reference/builtins/maps.html
diff --git a/main/docs/.vuepress/dist/reference/builtins/patterns.html b/content/main/docs/.vuepress/dist/reference/builtins/patterns.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/builtins/patterns.html
rename to content/main/docs/.vuepress/dist/reference/builtins/patterns.html
diff --git a/main/docs/.vuepress/dist/reference/builtins/ranges.html b/content/main/docs/.vuepress/dist/reference/builtins/ranges.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/builtins/ranges.html
rename to content/main/docs/.vuepress/dist/reference/builtins/ranges.html
diff --git a/main/docs/.vuepress/dist/reference/builtins/strings.html b/content/main/docs/.vuepress/dist/reference/builtins/strings.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/builtins/strings.html
rename to content/main/docs/.vuepress/dist/reference/builtins/strings.html
diff --git a/main/docs/.vuepress/dist/reference/index.html b/content/main/docs/.vuepress/dist/reference/index.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/index.html
rename to content/main/docs/.vuepress/dist/reference/index.html
diff --git a/main/docs/.vuepress/dist/reference/std/buffer.html b/content/main/docs/.vuepress/dist/reference/std/buffer.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/buffer.html
rename to content/main/docs/.vuepress/dist/reference/std/buffer.html
diff --git a/main/docs/.vuepress/dist/reference/std/crypto.html b/content/main/docs/.vuepress/dist/reference/std/crypto.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/crypto.html
rename to content/main/docs/.vuepress/dist/reference/std/crypto.html
diff --git a/main/docs/.vuepress/dist/reference/std/debug.html b/content/main/docs/.vuepress/dist/reference/std/debug.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/debug.html
rename to content/main/docs/.vuepress/dist/reference/std/debug.html
diff --git a/main/docs/.vuepress/dist/reference/std/errors.html b/content/main/docs/.vuepress/dist/reference/std/errors.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/errors.html
rename to content/main/docs/.vuepress/dist/reference/std/errors.html
diff --git a/main/docs/.vuepress/dist/reference/std/ffi.html b/content/main/docs/.vuepress/dist/reference/std/ffi.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/ffi.html
rename to content/main/docs/.vuepress/dist/reference/std/ffi.html
diff --git a/main/docs/.vuepress/dist/reference/std/fs.html b/content/main/docs/.vuepress/dist/reference/std/fs.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/fs.html
rename to content/main/docs/.vuepress/dist/reference/std/fs.html
diff --git a/main/docs/.vuepress/dist/reference/std/gc.html b/content/main/docs/.vuepress/dist/reference/std/gc.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/gc.html
rename to content/main/docs/.vuepress/dist/reference/std/gc.html
diff --git a/main/docs/.vuepress/dist/reference/std/http.html b/content/main/docs/.vuepress/dist/reference/std/http.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/http.html
rename to content/main/docs/.vuepress/dist/reference/std/http.html
diff --git a/main/docs/.vuepress/dist/reference/std/io.html b/content/main/docs/.vuepress/dist/reference/std/io.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/io.html
rename to content/main/docs/.vuepress/dist/reference/std/io.html
diff --git a/main/docs/.vuepress/dist/reference/std/manifest.html b/content/main/docs/.vuepress/dist/reference/std/manifest.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/manifest.html
rename to content/main/docs/.vuepress/dist/reference/std/manifest.html
diff --git a/main/docs/.vuepress/dist/reference/std/math.html b/content/main/docs/.vuepress/dist/reference/std/math.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/math.html
rename to content/main/docs/.vuepress/dist/reference/std/math.html
diff --git a/main/docs/.vuepress/dist/reference/std/os.html b/content/main/docs/.vuepress/dist/reference/std/os.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/os.html
rename to content/main/docs/.vuepress/dist/reference/std/os.html
diff --git a/main/docs/.vuepress/dist/reference/std/serialize.html b/content/main/docs/.vuepress/dist/reference/std/serialize.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/serialize.html
rename to content/main/docs/.vuepress/dist/reference/std/serialize.html
diff --git a/main/docs/.vuepress/dist/reference/std/std.html b/content/main/docs/.vuepress/dist/reference/std/std.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/std.html
rename to content/main/docs/.vuepress/dist/reference/std/std.html
diff --git a/main/docs/.vuepress/dist/reference/std/testing.html b/content/main/docs/.vuepress/dist/reference/std/testing.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/testing.html
rename to content/main/docs/.vuepress/dist/reference/std/testing.html
diff --git a/main/docs/.vuepress/dist/reference/std/toml.html b/content/main/docs/.vuepress/dist/reference/std/toml.html
similarity index 100%
rename from main/docs/.vuepress/dist/reference/std/toml.html
rename to content/main/docs/.vuepress/dist/reference/std/toml.html
diff --git a/main/docs/.vuepress/dist/repl.html b/content/main/docs/.vuepress/dist/repl.html
similarity index 100%
rename from main/docs/.vuepress/dist/repl.html
rename to content/main/docs/.vuepress/dist/repl.html
diff --git a/main/docs/.vuepress/public/.DS_Store b/content/main/docs/.vuepress/public/.DS_Store
similarity index 100%
rename from main/docs/.vuepress/public/.DS_Store
rename to content/main/docs/.vuepress/public/.DS_Store
diff --git a/main/docs/.vuepress/public/buzz.wasm b/content/main/docs/.vuepress/public/buzz.wasm
similarity index 100%
rename from main/docs/.vuepress/public/buzz.wasm
rename to content/main/docs/.vuepress/public/buzz.wasm
diff --git a/main/docs/.vuepress/public/favicon.ico b/content/main/docs/.vuepress/public/favicon.ico
similarity index 100%
rename from main/docs/.vuepress/public/favicon.ico
rename to content/main/docs/.vuepress/public/favicon.ico
diff --git a/main/docs/.vuepress/public/logo.png b/content/main/docs/.vuepress/public/logo.png
similarity index 100%
rename from main/docs/.vuepress/public/logo.png
rename to content/main/docs/.vuepress/public/logo.png
diff --git a/main/docs/.vuepress/styles/index.scss b/content/main/docs/.vuepress/styles/index.scss
similarity index 100%
rename from main/docs/.vuepress/styles/index.scss
rename to content/main/docs/.vuepress/styles/index.scss
diff --git a/main/docs/guide/README.md b/content/main/docs/guide/README.md
similarity index 100%
rename from main/docs/guide/README.md
rename to content/main/docs/guide/README.md
diff --git a/main/docs/guide/building-installing.md b/content/main/docs/guide/building-installing.md
similarity index 100%
rename from main/docs/guide/building-installing.md
rename to content/main/docs/guide/building-installing.md
diff --git a/main/docs/guide/calling-native-code.md b/content/main/docs/guide/calling-native-code.md
similarity index 100%
rename from main/docs/guide/calling-native-code.md
rename to content/main/docs/guide/calling-native-code.md
diff --git a/main/docs/guide/control-flow.md b/content/main/docs/guide/control-flow.md
similarity index 100%
rename from main/docs/guide/control-flow.md
rename to content/main/docs/guide/control-flow.md
diff --git a/main/docs/guide/enums.md b/content/main/docs/guide/enums.md
similarity index 100%
rename from main/docs/guide/enums.md
rename to content/main/docs/guide/enums.md
diff --git a/main/docs/guide/errors.md b/content/main/docs/guide/errors.md
similarity index 100%
rename from main/docs/guide/errors.md
rename to content/main/docs/guide/errors.md
diff --git a/main/docs/guide/ffi.md b/content/main/docs/guide/ffi.md
similarity index 100%
rename from main/docs/guide/ffi.md
rename to content/main/docs/guide/ffi.md
diff --git a/main/docs/guide/fibers.md b/content/main/docs/guide/fibers.md
similarity index 100%
rename from main/docs/guide/fibers.md
rename to content/main/docs/guide/fibers.md
diff --git a/main/docs/guide/functions.md b/content/main/docs/guide/functions.md
similarity index 100%
rename from main/docs/guide/functions.md
rename to content/main/docs/guide/functions.md
diff --git a/main/docs/guide/get-started.md b/content/main/docs/guide/get-started.md
similarity index 100%
rename from main/docs/guide/get-started.md
rename to content/main/docs/guide/get-started.md
diff --git a/main/docs/guide/import-export.md b/content/main/docs/guide/import-export.md
similarity index 100%
rename from main/docs/guide/import-export.md
rename to content/main/docs/guide/import-export.md
diff --git a/main/docs/guide/null-safety.md b/content/main/docs/guide/null-safety.md
similarity index 100%
rename from main/docs/guide/null-safety.md
rename to content/main/docs/guide/null-safety.md
diff --git a/main/docs/guide/objects.md b/content/main/docs/guide/objects.md
similarity index 100%
rename from main/docs/guide/objects.md
rename to content/main/docs/guide/objects.md
diff --git a/main/docs/guide/package.md b/content/main/docs/guide/package.md
similarity index 100%
rename from main/docs/guide/package.md
rename to content/main/docs/guide/package.md
diff --git a/main/docs/guide/protocols.md b/content/main/docs/guide/protocols.md
similarity index 100%
rename from main/docs/guide/protocols.md
rename to content/main/docs/guide/protocols.md
diff --git a/main/docs/guide/scope.md b/content/main/docs/guide/scope.md
similarity index 100%
rename from main/docs/guide/scope.md
rename to content/main/docs/guide/scope.md
diff --git a/main/docs/guide/syntax.md b/content/main/docs/guide/syntax.md
similarity index 100%
rename from main/docs/guide/syntax.md
rename to content/main/docs/guide/syntax.md
diff --git a/main/docs/guide/types.md b/content/main/docs/guide/types.md
similarity index 100%
rename from main/docs/guide/types.md
rename to content/main/docs/guide/types.md
diff --git a/main/docs/index.md b/content/main/docs/index.md
similarity index 100%
rename from main/docs/index.md
rename to content/main/docs/index.md
diff --git a/main/docs/reference/README.md b/content/main/docs/reference/README.md
similarity index 100%
rename from main/docs/reference/README.md
rename to content/main/docs/reference/README.md
diff --git a/main/docs/reference/api.md b/content/main/docs/reference/api.md
similarity index 100%
rename from main/docs/reference/api.md
rename to content/main/docs/reference/api.md
diff --git a/main/docs/reference/builtins/fibers.md b/content/main/docs/reference/builtins/fibers.md
similarity index 100%
rename from main/docs/reference/builtins/fibers.md
rename to content/main/docs/reference/builtins/fibers.md
diff --git a/main/docs/reference/builtins/lists.md b/content/main/docs/reference/builtins/lists.md
similarity index 100%
rename from main/docs/reference/builtins/lists.md
rename to content/main/docs/reference/builtins/lists.md
diff --git a/main/docs/reference/builtins/maps.md b/content/main/docs/reference/builtins/maps.md
similarity index 100%
rename from main/docs/reference/builtins/maps.md
rename to content/main/docs/reference/builtins/maps.md
diff --git a/main/docs/reference/builtins/patterns.md b/content/main/docs/reference/builtins/patterns.md
similarity index 100%
rename from main/docs/reference/builtins/patterns.md
rename to content/main/docs/reference/builtins/patterns.md
diff --git a/main/docs/reference/builtins/ranges.md b/content/main/docs/reference/builtins/ranges.md
similarity index 100%
rename from main/docs/reference/builtins/ranges.md
rename to content/main/docs/reference/builtins/ranges.md
diff --git a/main/docs/reference/builtins/strings.md b/content/main/docs/reference/builtins/strings.md
similarity index 100%
rename from main/docs/reference/builtins/strings.md
rename to content/main/docs/reference/builtins/strings.md
diff --git a/main/docs/reference/std/buffer.md b/content/main/docs/reference/std/buffer.md
similarity index 100%
rename from main/docs/reference/std/buffer.md
rename to content/main/docs/reference/std/buffer.md
diff --git a/main/docs/reference/std/crypto.md b/content/main/docs/reference/std/crypto.md
similarity index 100%
rename from main/docs/reference/std/crypto.md
rename to content/main/docs/reference/std/crypto.md
diff --git a/main/docs/reference/std/debug.md b/content/main/docs/reference/std/debug.md
similarity index 100%
rename from main/docs/reference/std/debug.md
rename to content/main/docs/reference/std/debug.md
diff --git a/main/docs/reference/std/errors.md b/content/main/docs/reference/std/errors.md
similarity index 100%
rename from main/docs/reference/std/errors.md
rename to content/main/docs/reference/std/errors.md
diff --git a/main/docs/reference/std/ffi.md b/content/main/docs/reference/std/ffi.md
similarity index 100%
rename from main/docs/reference/std/ffi.md
rename to content/main/docs/reference/std/ffi.md
diff --git a/main/docs/reference/std/fs.md b/content/main/docs/reference/std/fs.md
similarity index 100%
rename from main/docs/reference/std/fs.md
rename to content/main/docs/reference/std/fs.md
diff --git a/main/docs/reference/std/gc.md b/content/main/docs/reference/std/gc.md
similarity index 100%
rename from main/docs/reference/std/gc.md
rename to content/main/docs/reference/std/gc.md
diff --git a/main/docs/reference/std/http.md b/content/main/docs/reference/std/http.md
similarity index 100%
rename from main/docs/reference/std/http.md
rename to content/main/docs/reference/std/http.md
diff --git a/main/docs/reference/std/io.md b/content/main/docs/reference/std/io.md
similarity index 100%
rename from main/docs/reference/std/io.md
rename to content/main/docs/reference/std/io.md
diff --git a/main/docs/reference/std/manifest.md b/content/main/docs/reference/std/manifest.md
similarity index 100%
rename from main/docs/reference/std/manifest.md
rename to content/main/docs/reference/std/manifest.md
diff --git a/main/docs/reference/std/math.md b/content/main/docs/reference/std/math.md
similarity index 100%
rename from main/docs/reference/std/math.md
rename to content/main/docs/reference/std/math.md
diff --git a/main/docs/reference/std/os.md b/content/main/docs/reference/std/os.md
similarity index 100%
rename from main/docs/reference/std/os.md
rename to content/main/docs/reference/std/os.md
diff --git a/main/docs/reference/std/serialize.md b/content/main/docs/reference/std/serialize.md
similarity index 100%
rename from main/docs/reference/std/serialize.md
rename to content/main/docs/reference/std/serialize.md
diff --git a/main/docs/reference/std/std.md b/content/main/docs/reference/std/std.md
similarity index 100%
rename from main/docs/reference/std/std.md
rename to content/main/docs/reference/std/std.md
diff --git a/main/docs/reference/std/testing.md b/content/main/docs/reference/std/testing.md
similarity index 100%
rename from main/docs/reference/std/testing.md
rename to content/main/docs/reference/std/testing.md
diff --git a/main/docs/reference/std/toml.md b/content/main/docs/reference/std/toml.md
similarity index 100%
rename from main/docs/reference/std/toml.md
rename to content/main/docs/reference/std/toml.md
diff --git a/main/docs/repl.md b/content/main/docs/repl.md
similarity index 100%
rename from main/docs/repl.md
rename to content/main/docs/repl.md
diff --git a/main/nginx.conf b/content/main/nginx.conf
similarity index 100%
rename from main/nginx.conf
rename to content/main/nginx.conf
diff --git a/main/package.json b/content/main/package.json
similarity index 100%
rename from main/package.json
rename to content/main/package.json
diff --git a/main/pnpm-lock.yaml b/content/main/pnpm-lock.yaml
similarity index 100%
rename from main/pnpm-lock.yaml
rename to content/main/pnpm-lock.yaml
diff --git a/layouts/blog.shtml b/layouts/blog.shtml
new file mode 100644
index 00000000..f39eb3ff
--- /dev/null
+++ b/layouts/blog.shtml
@@ -0,0 +1,25 @@
+
+
+	
+
+
+	

+
+
+ diff --git a/layouts/blog.xml b/layouts/blog.xml new file mode 100644 index 00000000..b9c2b25b --- /dev/null +++ b/layouts/blog.xml @@ -0,0 +1,19 @@ + + + + + + Zine -- https://zine-ssg.io + en-US + + + + + + + + + + + + diff --git a/layouts/devlog-archive.shtml b/layouts/devlog-archive.shtml new file mode 100644 index 00000000..d1ffdf7c --- /dev/null +++ b/layouts/devlog-archive.shtml @@ -0,0 +1,25 @@ + + + + + +

+
+
+

Past years

+
+ + +

+
+
+
+ diff --git a/layouts/devlog.shtml b/layouts/devlog.shtml new file mode 100644 index 00000000..6c29b7cc --- /dev/null +++ b/layouts/devlog.shtml @@ -0,0 +1,45 @@ + + + + + +

+
+
+
+ +

+ +
+
+ diff --git a/layouts/devlog.xml b/layouts/devlog.xml new file mode 100644 index 00000000..ebde99f0 --- /dev/null +++ b/layouts/devlog.xml @@ -0,0 +1,21 @@ + + + + + + Zine -- https://zine-ssg.io + en-US + + + + + + + + + + + + + + diff --git a/layouts/home.shtml b/layouts/home.shtml new file mode 100644 index 00000000..08d0afb1 --- /dev/null +++ b/layouts/home.shtml @@ -0,0 +1,22 @@ + + + + +
+
+

+

+

+ +

+
+ +
+
+

+

+
+
+
+
+ diff --git a/layouts/index.shtml b/layouts/index.shtml new file mode 100644 index 00000000..36efa7fb --- /dev/null +++ b/layouts/index.shtml @@ -0,0 +1,7 @@ + + + + +

+
+ diff --git a/layouts/page.shtml b/layouts/page.shtml new file mode 100644 index 00000000..36efa7fb --- /dev/null +++ b/layouts/page.shtml @@ -0,0 +1,7 @@ + + + + +

+
+ diff --git a/layouts/post.shtml b/layouts/post.shtml new file mode 100644 index 00000000..5545052b --- /dev/null +++ b/layouts/post.shtml @@ -0,0 +1,40 @@ + + + + + +

+
+ + diff --git a/layouts/redirect.shtml b/layouts/redirect.shtml new file mode 100644 index 00000000..2e8789cb --- /dev/null +++ b/layouts/redirect.shtml @@ -0,0 +1,15 @@ + + + + + + + +

+

This page has moved. If you are not redirected automatically, please click the link below:

+

Go to the new page

+ diff --git a/layouts/templates/base.shtml b/layouts/templates/base.shtml new file mode 100644 index 00000000..f8406a12 --- /dev/null +++ b/layouts/templates/base.shtml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + +

+ + +
+
+
SITE UNDER CONSTRUCTION
+ +
+ + diff --git a/zine.ziggy b/zine.ziggy new file mode 100644 index 00000000..20da0ef1 --- /dev/null +++ b/zine.ziggy @@ -0,0 +1,12 @@ +.zine_version = "0.13.0", +.site = .simple(.{ + .title = "Welcome to Zine!", + .host_url = "https://buzz-lang.dev", + .content_dir_path = "content", + .layouts_dir_path = "layouts", + .assets_dir_path = "assets", + .static_assets = [ + "Temml.woff2", + ], +}), + From 5b32f73d211b9b4a6f1d6375e0ab92ba46f43eb5 Mon Sep 17 00:00:00 2001 From: Eamon Burns Date: Mon, 17 Aug 2026 15:13:23 -0700 Subject: [PATCH 02/11] feat: update style.css and base.shtml --- assets/external-link-icon.svg | 4 + assets/logo.png | Bin 0 -> 36927 bytes assets/style.css | 216 +++++++++++- content/0.5.0/docs/.vuepress/dist/index.html | 334 +++++++++++++++---- layouts/templates/base.shtml | 58 +++- release | 1 - zine.ziggy | 15 +- 7 files changed, 542 insertions(+), 86 deletions(-) create mode 100644 assets/external-link-icon.svg create mode 100644 assets/logo.png delete mode 120000 release diff --git a/assets/external-link-icon.svg b/assets/external-link-icon.svg new file mode 100644 index 00000000..f5c8f9c1 --- /dev/null +++ b/assets/external-link-icon.svg @@ -0,0 +1,4 @@ + diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..12aec3e1b88623a6f3b223730b779d24d3fbe303 GIT binary patch literal 36927 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:hover, +.navbar-items .navbar-item>a.router-link-active { + margin-bottom: -2px; + border-bottom: 2px solid var(--c-text-accent); +} + +@media (max-width: 719px) { + /* TODO: */ +} + + + +/* h1, h2, h3, @@ -25,7 +228,9 @@ html { justify-content: center; background-color: #111; } +*/ +/* body { max-width: 800px; overflow-x: scroll; @@ -33,13 +238,17 @@ body { display: flex; flex-direction: column; } +*/ +/* .site-title { font-size: 2.5em; margin-bottom: 10px; - /* text-align: center; */ + text-align: center; } +*/ +/* nav { display: flex; flex-direction: row; @@ -47,7 +256,9 @@ nav { font-size: 1.2em; margin-bottom: 20px; } +*/ +/* pre { overflow-x: scroll; } @@ -91,4 +302,5 @@ footer { footer hr { width: 100%; -} \ No newline at end of file +} +*/ diff --git a/content/0.5.0/docs/.vuepress/dist/index.html b/content/0.5.0/docs/.vuepress/dist/index.html index 18b030d0..760abb61 100644 --- a/content/0.5.0/docs/.vuepress/dist/index.html +++ b/content/0.5.0/docs/.vuepress/dist/index.html @@ -1,77 +1,267 @@ - - - - - - - buzz - - - - -

-
-
- buzz -

buzz

-

A small/lightweight statically typed scripting language

-

- Guide - Reference - Try it - Latest release open in new window -

-
+ + + + + buzz + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ buzz +

buzz

+

A small/lightweight statically typed scripting language

+

+ + Guide + + Reference + + Try it + + Latest release open in new window

+
-
-
-

Statically typed

-

Find out bugs in your IDE rather than production

-
-
-

JIT compiled

-

Uses MIR, a fast and lightweight JIT compiler

-
-
-

Unambiguous

-

No implicit behavior or unexpected type coercion

-
-
-

Small in size and complexity

-

Does not take much space on your drive or in your mind

-
-
-

Interoperability with C

-

Call C functions easily with FFIs and embed buzz with its C API

-
-
-

Fibers

-

Single threaded cooperative multitasking

-
-
+
+
+

Statically typed

+

Find out bugs in your IDE rather than production

+
+
+

JIT compiled

+

Uses MIR, a fast and lightweight JIT compiler

+
+
+

Unambiguous

+

No implicit behavior or unexpected type coercion

+
+
+

Small in size and complexity

+

Does not take much space on your drive or in your mind

+
+
+

Interoperability with C

+

Call C functions easily with FFIs and embed buzz with its C API

+
+
+

Fibers

+

Single threaded cooperative multitasking

+
-
-
-
-
+					
+
+
+
               
                 import "std";
 
@@ -95,7 +285,13 @@ 

Fibers

std\print("{n}"); } } -
- - +
+
+
+
+
+
+
+ + diff --git a/layouts/templates/base.shtml b/layouts/templates/base.shtml index f8406a12..77070529 100644 --- a/layouts/templates/base.shtml +++ b/layouts/templates/base.shtml @@ -14,21 +14,55 @@ -

- +

+ MIT licensed | Copyright © 2021-present Benoit Giannangeli
SITE UNDER CONSTRUCTION
diff --git a/release b/release deleted file mode 120000 index 79a2734b..00000000 --- a/release +++ /dev/null @@ -1 +0,0 @@ -0.5.0 \ No newline at end of file diff --git a/zine.ziggy b/zine.ziggy index 20da0ef1..cd365b84 100644 --- a/zine.ziggy +++ b/zine.ziggy @@ -1,6 +1,6 @@ .zine_version = "0.13.0", .site = .simple(.{ - .title = "Welcome to Zine!", + .title = "buzz", .host_url = "https://buzz-lang.dev", .content_dir_path = "content", .layouts_dir_path = "layouts", @@ -9,4 +9,15 @@ "Temml.woff2", ], }), - +.custom = { + // TODO: Don't hardcode base /0.5.0/ + "nav-items": [ + { "text": "Guide", "link": "/0.5.0/guide/" }, + { "text": "Reference", "link": "/0.5.0/reference/" }, + { "text": "Github", "link": "https://github.com/buzz-language/buzz", "external": true }, + { "text": "Discord", "link": "https://discord.gg/VnMdNSdpNV", "external": true }, + // { "text": "Unreleased", "link": "https://buzz-lang.dev/main/", "external": true }, + // TODO: Real URL + { "text": "Unreleased", "link": "http://localhost/main/", "external": true }, + ], +}, From 63bf37e38257b213ba58dd477fb0ca992363be96 Mon Sep 17 00:00:00 2001 From: Eamon Burns Date: Mon, 17 Aug 2026 16:13:04 -0700 Subject: [PATCH 03/11] feat: template and style actions on home page --- assets/style.css | 63 +++++++++++++++++++- content/0.5.0/docs/.vuepress/dist/index.html | 31 ++++++---- content/0.5.0/index.smd | 2 +- layouts/home.shtml | 24 ++++++-- layouts/index.shtml | 3 +- 5 files changed, 102 insertions(+), 21 deletions(-) diff --git a/assets/style.css b/assets/style.css index 959abd60..21d74ae6 100644 --- a/assets/style.css +++ b/assets/style.css @@ -198,7 +198,68 @@ kbd { /* TODO: */ } - +.home { + padding: var(--navbar-height) 2rem 0; + max-width: var(--homepage-width); + margin: 0 auto; + display: block; +} +.home .hero { + text-align: center; +} +.home .hero img { + max-width: 100%; + max-height: 280px; + display: block; + margin: 3rem auto 1.5rem; +} +.home .hero h1 { + font-size: 3rem; +} +.home .hero h1, +.home .hero .description, +.home .hero .actions { + margin: 1.8rem auto; +} +.home .hero .actions { + display: flex; + flex-wrap: wrap; + gap: 1rem; + justify-content: center; +} +.home .hero .description { + max-width: 35rem; + font-size: 1.6rem; + line-height: 1.3; + color: var(--c-text-lightest); +} +.home .hero .action-button { + display: inline-block; + font-size: 1.2rem; + padding: 0.8rem 1.6rem; + border-width: 2px; + border-style: solid; + border-radius: 4px; + transition: background-color var(--t-color); + box-sizing: border-box; +} +.home .hero .action-button.primary { + color: var(--c-bg); + background-color: var(--c-brand); + border-color: var(--c-brand); +} +.home .hero .action-button.primary:hover { + background-color: var(--c-brand-light); +} +.home .hero .action-button.secondary { + color: var(--c-brand); + background-color: var(--c-bg); + border-color: var(--c-brand); +} +.home .hero .action-button.secondary:hover { + color: var(--c-bg); + background-color: var(--c-brand-light); +} /* h1, diff --git a/content/0.5.0/docs/.vuepress/dist/index.html b/content/0.5.0/docs/.vuepress/dist/index.html index 760abb61..13662295 100644 --- a/content/0.5.0/docs/.vuepress/dist/index.html +++ b/content/0.5.0/docs/.vuepress/dist/index.html @@ -23,10 +23,10 @@ } - - - buzz - + + + buzz + @@ -221,15 +221,20 @@ buzz

buzz

A small/lightweight statically typed scripting language

-

- - Guide - - Reference - - Try it - - Latest release open in new window

+

+ Guide + Reference + Try it + + Latest release + + + open in new window + + +

diff --git a/content/0.5.0/index.smd b/content/0.5.0/index.smd index 54a3ee8c..55d33be9 100755 --- a/content/0.5.0/index.smd +++ b/content/0.5.0/index.smd @@ -7,7 +7,7 @@ { "text": "Guide", "link": "/guide/" }, { "text": "Reference", "link": "/reference/" }, { "text": "Try it", "link": "/repl" }, - { "text": "Latest release", "link": "https://github.com/buzz-language/buzz/releases/tag/0.5.0" }, + { "text": "Latest release", "link": "https://github.com/buzz-language/buzz/releases/tag/0.5.0", "external": true }, ], "features": [ { diff --git a/layouts/home.shtml b/layouts/home.shtml index 08d0afb1..8fb1434c 100644 --- a/layouts/home.shtml +++ b/layouts/home.shtml @@ -2,12 +2,28 @@ -
-
-

+
+
+ buzz +

- + + + + + + + + + + +

diff --git a/layouts/index.shtml b/layouts/index.shtml index 36efa7fb..8a91c9c9 100644 --- a/layouts/index.shtml +++ b/layouts/index.shtml @@ -1,6 +1,5 @@ - - +

From 8396e3566a9a49d4eec09e62306d8c624b96572e Mon Sep 17 00:00:00 2001 From: Eamon Burns Date: Tue, 18 Aug 2026 10:16:49 -0700 Subject: [PATCH 04/11] feat: style features on home.shtml --- assets/style.css | 39 ++++++++++++++++ content/0.5.0/docs/.vuepress/dist/index.html | 49 ++++++++++---------- content/0.5.0/index.smd | 6 ++- layouts/templates/base.shtml | 3 -- 4 files changed, 69 insertions(+), 28 deletions(-) diff --git a/assets/style.css b/assets/style.css index 21d74ae6..f1691b6e 100644 --- a/assets/style.css +++ b/assets/style.css @@ -261,6 +261,45 @@ kbd { background-color: var(--c-brand-light); } +.home .features { + border-top: 1px solid var(--c-border); + transition: border-color var(--t-color); + padding: 1.2rem 0; + margin-top: 2.5rem; + display: flex; + flex-wrap: wrap; + align-items: flex-start; + align-content: stretch; + justify-content: space-between; +} +.home .feature { + flex-grow: 1; + flex-basis: 30%; + max-width: 30%; +} +.home .feature h2 { + font-size: 1.4rem; + font-weight: 500; + border-bottom: none; + padding-bottom: 0; + color: var(--c-text-light); +} +.home .feature p { + color: var(--c-text-lighter); +} + +.home .theme-default-content { + padding: 0; + margin: 0; +} + +footer { + padding: 2.5rem; + border-top: 1px solid var(--c-border); + text-align: center; + color: var(--c-text-lighter); + transition: border-color var(--t-color); +} /* h1, h2, diff --git a/content/0.5.0/docs/.vuepress/dist/index.html b/content/0.5.0/docs/.vuepress/dist/index.html index 13662295..e79984bb 100644 --- a/content/0.5.0/docs/.vuepress/dist/index.html +++ b/content/0.5.0/docs/.vuepress/dist/index.html @@ -237,31 +237,32 @@

buzz

-
-
-

Statically typed

-

Find out bugs in your IDE rather than production

-
-
-

JIT compiled

-

Uses MIR, a fast and lightweight JIT compiler

-
-
-

Unambiguous

-

No implicit behavior or unexpected type coercion

-
-
-

Small in size and complexity

-

Does not take much space on your drive or in your mind

-
-
-

Interoperability with C

-

Call C functions easily with FFIs and embed buzz with its C API

+
+
+

Statically typed

+

Find out bugs in your IDE rather than production

+
+
+

JIT compiled

+

Uses MIR, a fast and lightweight JIT compiler

+
+
+

Unambiguous

+

No implicit behavior or unexpected type coercion

+
+
+

Small in size and complexity

+

Does not take much space on your drive or in your mind

+
+
+

Interoperability with C

+

Call C functions easily with FFIs and embed buzz with its C API

+
+
+

Fibers

+

Single threaded cooperative multitasking

+
-
-

Fibers

-

Single threaded cooperative multitasking

-
diff --git a/content/0.5.0/index.smd b/content/0.5.0/index.smd index 55d33be9..f5e30eed 100755 --- a/content/0.5.0/index.smd +++ b/content/0.5.0/index.smd @@ -18,6 +18,10 @@ "title": "JIT compiled", "details": "Uses MIR, a fast and lightweight JIT compiler", }, + { + "title": "Unambiguous", + "details": "No implicit behavior or unexpected type coercion", + }, { "title": "Small in size and complexity", "details": "Does not take much space on your drive or in your mind", @@ -36,7 +40,7 @@ //footer: MIT licensed | Copyright © 2021-present Benoit Giannangeli --- -```zig buzz +```kotlin buzz import "std"; fun fibonacci(n: int) > void *> int? { diff --git a/layouts/templates/base.shtml b/layouts/templates/base.shtml index 77070529..4f1ae81f 100644 --- a/layouts/templates/base.shtml +++ b/layouts/templates/base.shtml @@ -61,10 +61,7 @@
-
MIT licensed | Copyright © 2021-present Benoit Giannangeli -
SITE UNDER CONSTRUCTION
-
From d2e6efd5baa16b269d2277e76688329c6f054642 Mon Sep 17 00:00:00 2001 From: Eamon Burns Date: Tue, 18 Aug 2026 10:50:46 -0700 Subject: [PATCH 05/11] fix: hacky fix to make footer look correct --- assets/style.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/assets/style.css b/assets/style.css index f1691b6e..95c601e9 100644 --- a/assets/style.css +++ b/assets/style.css @@ -299,6 +299,13 @@ footer { text-align: center; color: var(--c-text-lighter); transition: border-color var(--t-color); + + /* + * HACK: The following properties are not on the orignal, they are used + * because the footer is not nested within main.home + */ + max-width: var(--homepage-width); + margin: auto; } /* h1, From 29caa5be91c085334163c35186f7d1717ca15f30 Mon Sep 17 00:00:00 2001 From: Eamon Burns Date: Tue, 18 Aug 2026 20:15:38 -0700 Subject: [PATCH 06/11] feat: style code blocks --- assets/code-blocks.js | 8 ++ assets/highlight.css | 175 +++++++++++++++++++++++++++++++---- assets/style.css | 15 +++ content/0.5.0/index.smd | 1 + layouts/templates/base.shtml | 1 + 5 files changed, 180 insertions(+), 20 deletions(-) create mode 100644 assets/code-blocks.js diff --git a/assets/code-blocks.js b/assets/code-blocks.js new file mode 100644 index 00000000..133b35ed --- /dev/null +++ b/assets/code-blocks.js @@ -0,0 +1,8 @@ +console.log("lksjfdlskjfd"); +document.querySelectorAll('pre:has(> code)').forEach((element) => { + console.log("element:", element); + // HACK: Assumes the code element only has one class, which is the language extension + const ext = element.querySelector(':scope > code').className; + element.dataset.ext = ext; + element.classList.add(`language-${ext}`); +}); diff --git a/assets/highlight.css b/assets/highlight.css index f2c4c4a7..1a433517 100644 --- a/assets/highlight.css +++ b/assets/highlight.css @@ -7,31 +7,166 @@ --dark-red: #be5046; --comment-gray: #5c6370; --magenta: #c678dd; -} -pre { - border-top: 1px solid white; - border-bottom: 1px solid white; - padding: 10px 5px; -} + /* Colorscheme colors */ + --base1-color: light-dark(#4f565d, #c4c0b9); + --base2-color: light-dark(#636b73, #aaa8a1); + --base3-color: light-dark(#75808e, #7f8a96); + --base4-color: light-dark(#aab3bc, #5c6773); + --base5-color: light-dark(#d1d4d7, #2d3640); + --base6-color: light-dark(#e3e7eb, #1b222b); + --base7-color: light-dark(#fafafa, #0f1419); + --accent-color: light-dark(#946ec0, #d2a6ff); + --orange-text-color: light-dark(#e88437, #ffad66); + --orange-text-sec-color: light-dark(#f29a2a, #e6b450); + --orange-bg-color: light-dark(#f7e8d0, #302a20); + --green-text-color: light-dark(#739b00, #aad94c); + --green-text-sec-color: light-dark(#89b317, #c2e675); + --green-bg-color: light-dark(#e3f0cc, #23301f); + --teal-text-color: light-dark(#429fbe, #73b8ff); + --teal-text-sec-color: light-dark(#59afcc, #8ac7ff); + --teal-bg-color: light-dark(#d8ebf2, #1f2d3a); + --blue-text-color: light-dark(#2f8fd1, #59c2ff); + --blue-text-sec-color: light-dark(#4aa6c8, #86d2ff); + --blue-bg-color: light-dark(#d6e7f7, #1c2b38); + --purple-text-color: light-dark(#8e66b8, #d2a6ff); + --purple-text-sec-color: light-dark(#a080c8, #e1c4ff); + --purple-bg-color: light-dark(#e6dcf1, #2d2438); + --diff-add-color: light-dark(#739b00, #aad94c); + --diff-change-color: light-dark(#f29a2a, #e6b450); + --diff-change-dark-color: light-dark(#a86f18, #5a4728); + --diff-delete-color: light-dark(#e26363, #f07178); + --diff-renamed-color: light-dark(#2f8fd1, #59c2ff); + --white-color: light-dark(#ffffff, #ffffff); + --comment-bg-color: light-dark(#f1cdcd, #3a2228); + --comment-fg-color: light-dark(#e26363, #f07178); + --inlay-fg-color: light-dark(#df8e1e, #c9a15a); + --inlay-bg-color: light-dark(#f7e8d0, #2a241a); + --foreground-color: light-dark(#4f565d, #cdcac4); + --black-color: light-dark(#dde2e8, #131721); + --blue-color: light-dark(#2f8fd1, #59c2ff); + --orange-color: light-dark(#e88437, #ff8f40); + --magenta-color: light-dark(#8e66b8, #d2a6ff); + --gray-color: light-dark(#75808e, #5c6773); + --dark-gray-color: light-dark(#cdd1d5, #2d3640); + --background-color: light-dark(#fafafa, #0f1419); + --dark-background-color: light-dark(#edf0f3, #080a0d); + --cyan-color: light-dark(#3f7fbd, #73b8ff); + --green-color: light-dark(#739b00, #aad94c); + --red-color: light-dark(#e26363, #f07178); + --yellow-color: light-dark(#f29a2a, #e6b450); + --color: light-dark(#545a62, #bbb7b1); -code.ziggy { - color: var(--cyan); -} + /* Token colors */ + --code-comment-fg: var(--comment-fg-color); + --code-comment-bg: var(--comment-bg-color); + --code-punctuation: var(--base3-color); /* NOTE: Same background */ + --code-namespace-fg: var(--teal-text-color); + --code-namespace-bg: var(--teal-bg-color); + --code-constant-fg: var(--blue-text-color); + --code-constant-bg: var(--blue-bg-color); + --code-string-fg: var(--green-text-color); + --code-string-bg: var(--green-bg-color); + --code-operator: var(--base1-color); /* NOTE: Same background */ + --code-keyword-fg: var(--purple-text-color); + --code-keyword-bg: var(--purple-bg-color); + --code-function: var(--orange-text-color); + --code-variable: var(--color); -code.ziggy .keyword, -code.ziggy .type { - color: var(--light-yellow); + /* dark */ + /* + --base1-color: #c4c0b9; + --base2-color: #aaa8a1; + --base3-color: #7f8a96; + --base4-color: #5c6773; + --base5-color: #2d3640; + --base6-color: #1b222b; + --base7-color: #0f1419; + --accent-color: #d2a6ff; + --orange-text-color: #ffad66; + --orange-text-sec-color: #e6b450; + --orange-bg-color: #302a20; + --green-text-color: #aad94c; + --green-text-sec-color: #c2e675; + --green-bg-color: #23301f; + --teal-text-color: #73b8ff; + --teal-text-sec-color: #8ac7ff; + --teal-bg-color: #1f2d3a; + --blue-text-color: #59c2ff; + --blue-text-sec-color: #86d2ff; + --blue-bg-color: #1c2b38; + --purple-text-color: #d2a6ff; + --purple-text-sec-color: #e1c4ff; + --purple-bg-color: #2d2438; + --diff-add-color: #aad94c; + --diff-change-color: #e6b450; + --diff-change-dark-color: #5a4728; + --diff-delete-color: #f07178; + --diff-renamed-color: #59c2ff; + --white-color: #ffffff; + --comment-bg-color: #3a2228; + --comment-fg-color: #f07178; + --inlay-fg-color: #c9a15a; + --inlay-bg-color: #2a241a; + --foreground-color: #cdcac4; + --black-color: #131721; + --blue-color: #59c2ff; + --orange-color: #ff8f40; + --magenta-color: #d2a6ff; + --gray-color: #5c6773; + --dark-gray-color: #2d3640; + --background-color: #0f1419; + --dark-background-color: #080a0d; + --cyan-color: #73b8ff; + --green-color: #aad94c; + --red-color: #f07178; + --yellow-color: #e6b450; + --background-color: #0f1419; + --color: #bbb7b1; + */ } -code.ziggy .string { - color: var(--dark-yellow); +pre[class*="language-"] { + background-color: var(--background-color); + /* + border-top: 1px solid white; + border-bottom: 1px solid white; + */ + padding: 10px 5px; } -code.ziggy .numeric.constant { - color: var(--magenta); +code.kotlin { + .comment { + color: var(--comment-fg-color); + background-color: var(--comment-bg-color); + } + .punctuation_bracket, + .punctuation_delimiter { + color: var(--code-punctuation); + } + .boolean, + .number { + color: var(--code-constant-fg); + background-color: var(--code-constant-bg); + } + .string { + color: var(); + } + .operator { + color: var(--code-operator); + } + .keyword_function, + .include, + .keyword, + .type_builtin { + color: var(--code-keyword-fg); + background-color: var(--code-keyword-bg); + } + .variable { + color: var(--code-variable); + } + .function, + .class-name { + color: var(--code-function); + } } - -code.ziggy .function { - color: var(--blue); -} \ No newline at end of file diff --git a/assets/style.css b/assets/style.css index 95c601e9..5e677048 100644 --- a/assets/style.css +++ b/assets/style.css @@ -307,6 +307,21 @@ footer { max-width: var(--homepage-width); margin: auto; } + +pre[class*="language-"] { + position: relative; + background-color: var(--code-bg-color); + border-radius: 6px; +} +pre[class*="language-"]:before { + content: attr(data-ext); + position: absolute; + z-index: 3; + top: 0.8em; + right: 1em; + font-size: 0.75rem; + color: var(--code-ln-color); +} /* h1, h2, diff --git a/content/0.5.0/index.smd b/content/0.5.0/index.smd index f5e30eed..ac0206f5 100755 --- a/content/0.5.0/index.smd +++ b/content/0.5.0/index.smd @@ -41,6 +41,7 @@ --- ```kotlin buzz +// main.buzz import "std"; fun fibonacci(n: int) > void *> int? { diff --git a/layouts/templates/base.shtml b/layouts/templates/base.shtml index 4f1ae81f..816ab4df 100644 --- a/layouts/templates/base.shtml +++ b/layouts/templates/base.shtml @@ -6,6 +6,7 @@ + From 3539efbb5940b5cbe4702954656b74182f3a5082 Mon Sep 17 00:00:00 2001 From: Eamon Burns Date: Tue, 18 Aug 2026 20:40:48 -0700 Subject: [PATCH 07/11] fix: remove unnecessary comments --- assets/highlight.css | 56 ----------------------------------------- content/0.5.0/index.smd | 2 -- 2 files changed, 58 deletions(-) diff --git a/assets/highlight.css b/assets/highlight.css index 1a433517..62e2ffc5 100644 --- a/assets/highlight.css +++ b/assets/highlight.css @@ -72,66 +72,10 @@ --code-keyword-bg: var(--purple-bg-color); --code-function: var(--orange-text-color); --code-variable: var(--color); - - /* dark */ - /* - --base1-color: #c4c0b9; - --base2-color: #aaa8a1; - --base3-color: #7f8a96; - --base4-color: #5c6773; - --base5-color: #2d3640; - --base6-color: #1b222b; - --base7-color: #0f1419; - --accent-color: #d2a6ff; - --orange-text-color: #ffad66; - --orange-text-sec-color: #e6b450; - --orange-bg-color: #302a20; - --green-text-color: #aad94c; - --green-text-sec-color: #c2e675; - --green-bg-color: #23301f; - --teal-text-color: #73b8ff; - --teal-text-sec-color: #8ac7ff; - --teal-bg-color: #1f2d3a; - --blue-text-color: #59c2ff; - --blue-text-sec-color: #86d2ff; - --blue-bg-color: #1c2b38; - --purple-text-color: #d2a6ff; - --purple-text-sec-color: #e1c4ff; - --purple-bg-color: #2d2438; - --diff-add-color: #aad94c; - --diff-change-color: #e6b450; - --diff-change-dark-color: #5a4728; - --diff-delete-color: #f07178; - --diff-renamed-color: #59c2ff; - --white-color: #ffffff; - --comment-bg-color: #3a2228; - --comment-fg-color: #f07178; - --inlay-fg-color: #c9a15a; - --inlay-bg-color: #2a241a; - --foreground-color: #cdcac4; - --black-color: #131721; - --blue-color: #59c2ff; - --orange-color: #ff8f40; - --magenta-color: #d2a6ff; - --gray-color: #5c6773; - --dark-gray-color: #2d3640; - --background-color: #0f1419; - --dark-background-color: #080a0d; - --cyan-color: #73b8ff; - --green-color: #aad94c; - --red-color: #f07178; - --yellow-color: #e6b450; - --background-color: #0f1419; - --color: #bbb7b1; - */ } pre[class*="language-"] { background-color: var(--background-color); - /* - border-top: 1px solid white; - border-bottom: 1px solid white; - */ padding: 10px 5px; } diff --git a/content/0.5.0/index.smd b/content/0.5.0/index.smd index ac0206f5..92d7dabb 100755 --- a/content/0.5.0/index.smd +++ b/content/0.5.0/index.smd @@ -37,11 +37,9 @@ ], }, .layout = "home.shtml", -//footer: MIT licensed | Copyright © 2021-present Benoit Giannangeli --- ```kotlin buzz -// main.buzz import "std"; fun fibonacci(n: int) > void *> int? { From d410ddd604dd5734390e16481e39c3309ba763f9 Mon Sep 17 00:00:00 2001 From: Eamon Burns Date: Tue, 18 Aug 2026 20:45:04 -0700 Subject: [PATCH 08/11] fix: remove unused files All the files removed were generated by `zine init` --- assets/under-construction.gif | Bin 2583 -> 0 bytes content/about.smd | 54 -------------- content/blog/first-post/fanzine.jpg | Bin 124852 -> 0 bytes content/blog/first-post/index.smd | 108 ---------------------------- content/blog/index.smd | 38 ---------- content/blog/second-post.smd | 59 --------------- content/devlog/1989.smd | 16 ----- content/devlog/1990.smd | 36 ---------- content/devlog/index.smd | 30 -------- layouts/blog.shtml | 25 ------- layouts/blog.xml | 19 ----- layouts/devlog-archive.shtml | 25 ------- layouts/devlog.shtml | 45 ------------ layouts/devlog.xml | 21 ------ 14 files changed, 476 deletions(-) delete mode 100644 assets/under-construction.gif delete mode 100644 content/about.smd delete mode 100644 content/blog/first-post/fanzine.jpg delete mode 100644 content/blog/first-post/index.smd delete mode 100644 content/blog/index.smd delete mode 100644 content/blog/second-post.smd delete mode 100644 content/devlog/1989.smd delete mode 100644 content/devlog/1990.smd delete mode 100644 content/devlog/index.smd delete mode 100644 layouts/blog.shtml delete mode 100644 layouts/blog.xml delete mode 100644 layouts/devlog-archive.shtml delete mode 100644 layouts/devlog.shtml delete mode 100644 layouts/devlog.xml diff --git a/assets/under-construction.gif b/assets/under-construction.gif deleted file mode 100644 index e85b756fb117db5c32aaf64793586aadfdff7136..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2583 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 diff --git a/content/about.smd b/content/about.smd deleted file mode 100644 index d0f60eca..00000000 --- a/content/about.smd +++ /dev/null @@ -1,54 +0,0 @@ ---- -.title = "About", -.date = .date("1990-01-01T00:00:00"), -.layout = "index.shtml", ---- - -# About Zine -Zine is an MIT-licensed project created by [Loris Cro](https://kristoff.it) and -other contributors listed on the [official repository](https://github.com/kristoff-it/zine/contributors). - -Zine is inspired by [Hugo](https://gohugo.io) but features an entirely custom set -of authoring languages: - -- [Scripty](https://zine-ssg.io/docs/scripty/) is the small expression - language that both SuperHTML and SuperMD share to express templating logic. - -- [SuperHTML](https://zine-ssg.io/docs/superhtml/) is the HTML templating - language used by Zine. Unlike most `{{curly braced}}` templating languages, - SuperHTML uses valid HTML syntax to express the templating logic, adding only - minor extensions to normal HTML. - Thanks to this approach, it offers instant - syntax checking and autoformatting via [a CLI tool](https://github.com/kristoff-it/superhtml) as well as Language Server support ([VScode Extension](https://marketplace.visualstudio.com/items?itemName=LorisCro.super)). - - ># [NOTE]($block) - >The correct file extension for SuperHTML templates is `.shtml`. - -- [SuperMD](https://zine-ssg.io/docs/supermd/) is a superset of Markdown - that, instead of relying on inline HTML, offers new constructs for expressing - content embeds without pulling into your content needless layouting concerns. - A CLI tool and language server for SuperMD is in the works. - - ># [NOTE]($block) - >The correct file extension for SuperMD pages is `.smd`. - -# Zine is alpha software - -Zine is not yet complete. The main functionality is present and you will be able -to build even moderately complex static websites without issue. - -That said using Zine today does imply participating in the development process -to some degree, which usually means inquiring about the development status of -a feature you need, or reporting a bug. - - -Here are some quicklinks related to Zine: - -- Official Website: https://zine-ssg.io/ -- Source Code: https://github.com/kristoff-it/zine/ -- Discord: https://discord.com/invite/B73sGxF - - - - - diff --git a/content/blog/first-post/fanzine.jpg b/content/blog/first-post/fanzine.jpg deleted file mode 100644 index 9d6e569f9c2dc06fa61d7b2ebb8e3c8fe4c871fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124852 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�D!G8oJ(CKWoIR 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%0DwhC-?>Fc_(wk|?kH8I^_L0u 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 diff --git a/content/blog/first-post/index.smd b/content/blog/first-post/index.smd deleted file mode 100644 index fd4d5f29..00000000 --- a/content/blog/first-post/index.smd +++ /dev/null @@ -1,108 +0,0 @@ ---- -.title = "First Post: What's A Zine?", -.date = .date("1990-01-01T00:00:00"), -.layout = "post.shtml", ---- - -This is a sample first post for your blog. - -This post is defined in `content/blog/first-post/` and contains the following -files: - -- `index.smd` -- `fanzine.jpg` - -Another interesting thing about this post is that it uses the `layouts/post.shtml` -template which adds at the bottom page navigation within the blog section. - -Enough about Zine, let's talk about zines. - -# Fanzines - -A zine (short for *fanzine*, from "fan" + "magazine") is a non-professional -publication created by people that want to express themselves in paper form, -usually in relation to a cultural phenomenon of some kind. - -[An example of zine from 1976.](<$image.asset("fanzine.jpg").alt("A photo of a black and white flyer. The main title reads 'A night of pure energy' and the rest of the page contains a mix of pictures of guitarists interleaved with other text snippets, some seemingly taken from a professional publication of some kind, and some handwritten to announce concert night dates, presumably for the musicians in the picture.")>) - -# Zines in the digital era - -In the digital age, some of the cultural impetus behind zines got redirected to -personal blogs and similar digital, non-professional publications. The 90's and -early 00's are famous for their whacky websites full of clip art, wordart text -and "under construction" animated gifs. - -This initial organic exploration didn't last for too long as the rise of social -media diverted a lot of self-expression energy towards walled gardens, a change -that was also fueled by the much tighter and intense feedback loop that those -platform enable. - -In the 90's the stongest dopamine hit you could get was adding a visit counter -to your altavista website and watch it go up, slowly, mostly because of your own -accesses. In modern times views are almost meaningless and interactions such as -*likes*, *retweets* and *comments* provide much stronger positive feedback. - -An unfortunate side effect of this new cultural wave centered around social media -is that not only you end up gifting your content to platform owners, but you also -participate in a system where the *language* of the social media site shapes your -thoughts and experience in specific, and often user-hostile, ways. - -Art, just like liquids, takes the shape of the container you put it in. A mobile -game that lives off of in app purchases will never be truly great because of the -tension between making the game entertaining enough to keep players engaged, and -the need to make it boring enough so that they will want to buy upgrades to make -the game more fun. - -Similarly, self-expression on Twitter is encouraged to take the shape of short, -hyperbolic hot takes that forgo nuance in order to create catchy quips that can -be used for hasty decision making. - -Likewise, [corpowave]($text.attrs('wave')) never goes out of style on LinkedIn. -Spend enough time in there and you will become a character from Severance. - -# We're not in 1990 anymore - -Despite all the issues with social media, there is no point in thinking of the -90's as a better time. It was not. And despite the winks at the past, Zine is -not a tool for indulging in nostalgia. - -**The goal is to make art**: the act of inducing a change in others through -our self-expression. - -You could argue that the 90's excelled at self-expression, but in doing so you -would also have to accept that social media is infinitely more effective at -inducing change in others (albeit at the expense of freedom of expression). - -Once you realize that, the path forward is clear: - -1. Own your content. -2. Create new social systems that optimize for creating art over engagement. - -Owning your content means that you will be unaffected by enshittification of -platforms that would otherwise keep your data hostage. It also is the single -most effective thing you can do as an individual to take power away from -platforms, all while protecting your own immediate interests. - -Creation of new social systems is a *slightly more hairy* problem than self -hosting a static website, but it's something that can be done. Over the years -we've had plenty of social outlets that have allowed people to socialize through -their homemade games, music, drawings, fanfics, etc; and chances are that we -have yet many more of these outlets ahead of us to create. - -Zine gives you a small puzzle piece to help you inch closer toward a better -future, partially by providing you with a new iteration over tried and true -patterns (e.g. by facilitating content creation by separating content from -layouting concerns as much as possible), and also by being a bit experimental -with the concept of a devlog, something that you wouldn't normally expect to -find on a static website. - -Lastly, Zine makes sure your content (both blog and devlog, but also any -other content format you might come up with yourself) is available via RSS -syndication. RSS feeds are far from a winning technology in the fight against -the ebb and *enshitty*flow of social media, but they are another small puzzle -piece that costs nothing to maintain and that might turn out to be critical once -enough other preconditions are met. - -With that in mind, **go make art with your words**. - --- Loris diff --git a/content/blog/index.smd b/content/blog/index.smd deleted file mode 100644 index f681ee71..00000000 --- a/content/blog/index.smd +++ /dev/null @@ -1,38 +0,0 @@ ---- -.title = "Blog", -.date = .date("1990-01-01T00:00:00"), -.layout = "blog.shtml", -.alternatives = [.{ - .name = "rss", - .layout = "blog.xml", - .output = "index.xml", -}], ---- - -This page defines the blog section and lists all posts in it. - -A "site section" in Zine is a group of pages that form a logical subtree of the -website. It's related to directory structure, but it's not an entirely 1:1 mapping. - -What defines a site section in Zine is the presence of `index.smd` files. You -can learn more [in the official Zine docs](https://zine-ssg.io/docs/). - -Take also a look at `layouts/blog.shtml` to get an idea of how to render a page -list in a SuperHTML template. - -The blog section also has an [RSS feed]($link.alternative('rss')). - -In Zine, RSS feeds are considered "alternative" versions of an existing page. In -concrete defines the blog section and that lists all pages in it, is rendered in -two versions: HTML for human readers, and XML for RSS readers. - -This is the SuperMD frontmatter code that defines the RSS feed: - -```ziggy -.alternatives = [{ - .name = "rss", - .layout = "rss.xml", - .output = "index.xml", -}], -``` -[(btw syntax highlighting is done statically in Zine, no need for javascript libraries, unless you want to)]($text.attrs('small')) diff --git a/content/blog/second-post.smd b/content/blog/second-post.smd deleted file mode 100644 index 7d27d214..00000000 --- a/content/blog/second-post.smd +++ /dev/null @@ -1,59 +0,0 @@ ---- -.title = "Second Post", -.date = .date("1990-01-02T00:00:00"), -.layout = "post.shtml", ---- - -This second post is mainly here to show you that you can also create single file -posts for convenience. The first post contains more interesting content. - -Don't forget to read [the official SuperMD -docs](https://zine-ssg.io/docs/supermd/) to know how to *style* your content. - -# Math - -Btw this sample website also includes the JS/CSS dependencies required to render -math: - -```=mathtex -\begin{aligned} -f(t) &= \int_{-\infty}^\infty F(\omega) \cdot (-1)^{2 \omega t} \mathrm{d}\omega \\ -F(\omega) &= \int_{-\infty}^\infty f(t) \div (-1)^{2 \omega t} \mathrm{d}t \\ -\end{aligned} -``` - -This: [`(-1)^x = \cos(\pi x) + i\sin(\pi x)`]($mathtex) is an inline equation -instead! - -# Code blocks - - -```zig -/// Shaper that uses CoreText. -/// -/// CoreText shaping differs in subtle ways from HarfBuzz so it may result -/// in inconsistent rendering across platforms. But it also fixes many -/// issues (some macOS specific): -/// -/// - Theta hat offset is incorrect in HarfBuzz but correct by default -/// on macOS applications using CoreText. (See: -/// https://github.com/harfbuzz/harfbuzz/discussions/4525) -/// -/// - Hyphens (U+2010) can be synthesized by CoreText but not by HarfBuzz. -/// See: https://github.com/mitchellh/ghostty/issues/1643 -/// -pub const Shaper = struct { - /// The allocated used for the feature list, font cache, and cell buf. - alloc: Allocator, - - /// The string used for shaping the current run. - run_state: RunState, - - /// CoreFoundation Dictionary which represents our font feature settings. - features: *macos.foundation.Dictionary, -// ... -``` - -If you open the web inspector on the code below, you will see -that the code has been correctly tagged for syntax highlighting, but it's currently -on you to come up with CSS definitions for styling each class. diff --git a/content/devlog/1989.smd b/content/devlog/1989.smd deleted file mode 100644 index eb7b857e..00000000 --- a/content/devlog/1989.smd +++ /dev/null @@ -1,16 +0,0 @@ ---- -.title = "Devlog - 1989", -.date = .date("1989-01-01T00:00:00"), -.layout = "devlog.shtml", ---- -[]($section.id('about')) -# About this Devlog -This is a non-exhaustive, curated list of changes meant to help users quickly see what has improved since they last checked. - -You can [subscribe the latest devlog via RSS]($link.page('devlog').alternative('rss')). - -This page lists entries for the year 1989, for past or future entries consult the -[devlog archive](/devlog/). - -## [Hello 1989]($section.id("1989-01-01T00:00:00")) -This is a sample entry. diff --git a/content/devlog/1990.smd b/content/devlog/1990.smd deleted file mode 100644 index 8e81872d..00000000 --- a/content/devlog/1990.smd +++ /dev/null @@ -1,36 +0,0 @@ ---- -.title = "Devlog - 1990", -.date = .date("1990-01-01T00:00:00"), -.layout = "devlog.shtml", ---- -[]($section.id('about')) -# About this Devlog - -This is where you should describe to your users what your devlog is about. -Refer to the corresponding section in the home page to learn more about devlogs. - -For example this is how the Zine devlog describes itself: - -> This is a non-exhaustive, curated list of changes meant to help users quickly see what has improved since they last checked. -> -> You can [subscribe to this page via RSS]($link.page('devlog').alternative('rss')). -> -> This page lists entries for the current year, for past entries consult the -[devlog archive](/devlog/). - -Feel free to tweak it to your specific use case or replace it entirely as you -see fit. - -Regardless of what you decide, you might want to make sure you preserve the -links to the RSS feed and to the devlog archive from the copy above. - - -## [Third Entry]($section.id("1990-01-03T00:00:00")) -This is the third entry. - -## [Second Entry]($section.id("1990-01-02T00:00:00")) -This is the second entry. - -## [Hello Zine]($section.id("1990-01-01T00:00:00")) -This is the first entry in this year's devlog created with -[Zine](https://zine-ssg.io)! diff --git a/content/devlog/index.smd b/content/devlog/index.smd deleted file mode 100644 index 681ce79f..00000000 --- a/content/devlog/index.smd +++ /dev/null @@ -1,30 +0,0 @@ ---- -.title = "Devlog Archive", -.date = .date("1990-01-01T00:00:00"), -.layout = "devlog-archive.shtml", -.alternatives = [.{ - .name = "rss", - .layout = "devlog.xml", - .output = "index.xml", -}], ---- - -This page lists all the devlog years that are present on this site. -Note how the top navigation menu doesn't link to this page, but instead links -to the latest devlog year directly. - -The reason for adopting this structure is to make sure that links that exist in -the wild to entries to our devlog don't become invalidated when a new year comes -around and we rotate the devlog feed. - -Devlog rotation ensures that you don't have a single page that grows -indefinitely, eventually compromising your editing expreience and worsening your -user's browsing experience. You can use any arbitrary policy (even deleting old -entries if you are fine with having a more ephemeral devlog), but cutting them -by year is a good default option. - -When rotating a devlog all you have to do is create a new page with a newer -date set in the frontmatter `date` field, and update the page description to let -people know that this page is not the current year's devlog anymore. - -The latest devlog year is also available [via RSS feed]($link.alternative('rss')). diff --git a/layouts/blog.shtml b/layouts/blog.shtml deleted file mode 100644 index f39eb3ff..00000000 --- a/layouts/blog.shtml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -

-
-
- diff --git a/layouts/blog.xml b/layouts/blog.xml deleted file mode 100644 index b9c2b25b..00000000 --- a/layouts/blog.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - Zine -- https://zine-ssg.io - en-US - - - - - - - - - - - - diff --git a/layouts/devlog-archive.shtml b/layouts/devlog-archive.shtml deleted file mode 100644 index d1ffdf7c..00000000 --- a/layouts/devlog-archive.shtml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -

-
-
-

Past years

-
- - -

-
-
-
- diff --git a/layouts/devlog.shtml b/layouts/devlog.shtml deleted file mode 100644 index 6c29b7cc..00000000 --- a/layouts/devlog.shtml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - -

-
-
-
- -

- -
-
- diff --git a/layouts/devlog.xml b/layouts/devlog.xml deleted file mode 100644 index ebde99f0..00000000 --- a/layouts/devlog.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Zine -- https://zine-ssg.io - en-US - - - - - - - - - - - - - - From b7d0f9fe5c2b431d02065d263fe852d60b6ff3b6 Mon Sep 17 00:00:00 2001 From: Eamon Burns Date: Wed, 19 Aug 2026 10:06:41 -0700 Subject: [PATCH 09/11] feat: inline top-level nav links - Fixed hardcoded version number - Better rendering of alternate version page link (unreleased/released link) --- content/0.5.0/guide/index.smd | 11 +++++ content/0.5.0/index.smd | 1 + content/0.5.0/reference/index.smd | 11 +++++ content/index.smd | 2 +- content/main/guide/index.smd | 11 +++++ content/main/index.smd | 81 +++++++++++++++++++++++++++++++ content/main/reference/index.smd | 11 +++++ layouts/templates/base.shtml | 57 +++++++++++++++------- zine.ziggy | 11 +---- 9 files changed, 168 insertions(+), 28 deletions(-) create mode 100644 content/0.5.0/guide/index.smd create mode 100644 content/0.5.0/reference/index.smd create mode 100644 content/main/guide/index.smd create mode 100644 content/main/index.smd create mode 100644 content/main/reference/index.smd diff --git a/content/0.5.0/guide/index.smd b/content/0.5.0/guide/index.smd new file mode 100644 index 00000000..946703e4 --- /dev/null +++ b/content/0.5.0/guide/index.smd @@ -0,0 +1,11 @@ +--- +.title = "buzz", +.description = "A small/lightweight statically typed scripting language", +.date = .date("1990-01-01T00:00:00"), +.custom = { + "version": "0.5.0", +}, +.layout = "page.shtml", +--- + +TODO: Guide diff --git a/content/0.5.0/index.smd b/content/0.5.0/index.smd index 92d7dabb..b8cb0046 100755 --- a/content/0.5.0/index.smd +++ b/content/0.5.0/index.smd @@ -3,6 +3,7 @@ .description = "A small/lightweight statically typed scripting language", .date = .date("1990-01-01T00:00:00"), .custom = { + "version": "0.5.0", "actions": [ { "text": "Guide", "link": "/guide/" }, { "text": "Reference", "link": "/reference/" }, diff --git a/content/0.5.0/reference/index.smd b/content/0.5.0/reference/index.smd new file mode 100644 index 00000000..ccaba836 --- /dev/null +++ b/content/0.5.0/reference/index.smd @@ -0,0 +1,11 @@ +--- +.title = "buzz", +.description = "A small/lightweight statically typed scripting language", +.date = .date("1990-01-01T00:00:00"), +.custom = { + "version": "0.5.0", +}, +.layout = "page.shtml", +--- + +TODO: Reference diff --git a/content/index.smd b/content/index.smd index 01681bf2..e39dae93 100644 --- a/content/index.smd +++ b/content/index.smd @@ -3,5 +3,5 @@ .date = .date("1990-01-01T00:00:00"), .layout = "redirect.shtml", // Redirect to latest stable release -.custom = { "new-location": "/0.5.0" }, +.custom = { "new-location": "/0.5.0", "version": "0.5.0" }, --- diff --git a/content/main/guide/index.smd b/content/main/guide/index.smd new file mode 100644 index 00000000..38bc1b9c --- /dev/null +++ b/content/main/guide/index.smd @@ -0,0 +1,11 @@ +--- +.title = "buzz", +.description = "A small/lightweight statically typed scripting language", +.date = .date("1990-01-01T00:00:00"), +.custom = { + "version": "main", +}, +.layout = "page.shtml", +--- + +TODO: Guide diff --git a/content/main/index.smd b/content/main/index.smd new file mode 100644 index 00000000..9cf1b290 --- /dev/null +++ b/content/main/index.smd @@ -0,0 +1,81 @@ +--- +.title = "buzz", +.description = "A small/lightweight statically typed scripting language", +.date = .date("1990-01-01T00:00:00"), +.custom = { + "version": "main", + "actions": [ + { "text": "Guide", "link": "/guide/" }, + { "text": "Reference", "link": "/reference/" }, + { "text": "Try it", "link": "/repl" }, + { "text": "Latest release", "link": "https://github.com/buzz-language/buzz/releases/tag/0.5.0", "external": true }, + ], + "features": [ + { + "title": "Statically typed", + "details": "Find out bugs in your IDE rather than production", + }, + { + "title": "JIT compiled", + "details": "Uses MIR, a fast and lightweight JIT compiler", + }, + { + "title": "Unambiguous", + "details": "No implicit behavior or unexpected type coercion", + }, + { + "title": "Small in size and complexity", + "details": "Does not take much space on your drive or in your mind", + }, + { + "title": "Interoperability with C", + "details": "Call C functions easily with FFIs and embed buzz with its C API", + }, + { + "title": "Fibers", + "details": "Single threaded cooperative multitasking", + }, + ], +}, +.layout = "home.shtml", +--- + +```kotlin buzz +import "buzz:std"; + +enum State { todo, doing, done } + +object Task { + title: str, + points: int?, + state: State = .todo, + + fun score() => match (this.state) { + .done -> this.points ?? 0, + .doing, .todo -> 0 + }; +} + +fun scores(tasks: [Task]) > str *> int { + foreach (task in tasks) { + _ = yield task.score(); + } + return "scored {tasks.len()} tasks"; +} + +fun main() > void { + final tasks: [Task] = [ + .{ title = "parser", points = 8, state = .done }, + .{ title = "lsp", points = 5, state = .doing }, + .{ title = "docs", points = 3 }, + ]; + + var total = 0; + final fiber = &scores(tasks); + foreach (score in fiber) { + total += score; + } + + std\print("completed points: {total}, message is {resolve fiber}"); +} +``` diff --git a/content/main/reference/index.smd b/content/main/reference/index.smd new file mode 100644 index 00000000..5dc2376d --- /dev/null +++ b/content/main/reference/index.smd @@ -0,0 +1,11 @@ +--- +.title = "buzz", +.description = "A small/lightweight statically typed scripting language", +.date = .date("1990-01-01T00:00:00"), +.custom = { + "version": "main", +}, +.layout = "page.shtml", +--- + +TODO: Reference diff --git a/layouts/templates/base.shtml b/layouts/templates/base.shtml index 816ab4df..9d1700c8 100644 --- a/layouts/templates/base.shtml +++ b/layouts/templates/base.shtml @@ -21,24 +21,47 @@