aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatarLarge Libravatar memdmp <memdmpmemewarenet>2025-01-11 20:20:16 +0100
committerLibravatarLarge Libravatar memdmp <memdmpmemewarenet>2025-01-11 20:20:16 +0100
commitd57a5985982ed2ba386eb4c0b4ca05ab3498238a (patch)
treeca3a20c0fa14646d0f87902541a32df9060df3c7 /src
downloadmem-estrogen-zone-d57a5985982ed2ba386eb4c0b4ca05ab3498238a.tar.gz
mem-estrogen-zone-d57a5985982ed2ba386eb4c0b4ca05ab3498238a.tar.bz2
mem-estrogen-zone-d57a5985982ed2ba386eb4c0b4ca05ab3498238a.tar.lz
mem-estrogen-zone-d57a5985982ed2ba386eb4c0b4ca05ab3498238a.zip

feat: initial commit

Diffstat (limited to 'src')
-rw-r--r--src/app.css12
-rw-r--r--src/app.d.ts13
-rw-r--r--src/app.html31
-rw-r--r--src/lib/fonts/Ac437_IBM_EGA_8x14.css18
-rw-r--r--src/lib/fonts/Ac437_IBM_EGA_8x14.ttfbin0 -> 25540 bytes
-rw-r--r--src/lib/fonts/Ac437_IBM_EGA_8x14.woffbin0 -> 9784 bytes
-rw-r--r--src/lib/fonts/Ac437_IBM_EGA_8x14.woff2bin0 -> 6608 bytes
-rw-r--r--src/lib/fonts/Px437_DOS-V_re_JPN12.css18
-rw-r--r--src/lib/fonts/Px437_DOS-V_re_JPN12.ttfbin0 -> 25960 bytes
-rw-r--r--src/lib/fonts/Px437_DOS-V_re_JPN12.woffbin0 -> 9520 bytes
-rw-r--r--src/lib/fonts/Px437_DOS-V_re_JPN12.woff2bin0 -> 6628 bytes
-rw-r--r--src/lib/fonts/PxPlus_IBM_EGA_8x14.css18
-rw-r--r--src/lib/fonts/PxPlus_IBM_EGA_8x14.ttfbin0 -> 70172 bytes
-rw-r--r--src/lib/fonts/PxPlus_IBM_EGA_8x14.woffbin0 -> 22356 bytes
-rw-r--r--src/lib/fonts/PxPlus_IBM_EGA_8x14.woff2bin0 -> 14712 bytes
-rw-r--r--src/lib/fonts/all-local-after-woff2.css36
-rw-r--r--src/lib/fonts/all.css36
-rw-r--r--src/lib/index.ts10
-rw-r--r--src/lib/license.ts7
-rw-r--r--src/lib/styles.ts10
-rw-r--r--src/routes/+layout.svelte11
-rw-r--r--src/routes/+layout.ts11
-rw-r--r--src/routes/+page.svelte414
-rw-r--r--src/routes/anim-gen.ts504
-rw-r--r--src/routes/boot-logo.pngbin0 -> 212582 bytes
-rw-r--r--src/routes/canaries/+page.svelte5
-rw-r--r--src/routes/canaries/canaries.ts25
-rw-r--r--src/routes/canaries/keystore.ts120
-rw-r--r--src/routes/canaries/napatha:kyun.host/+server.ts5
-rw-r--r--src/routes/distro-info.ts38
-rw-r--r--src/routes/license/+server.ts5
-rw-r--r--src/routes/shared.ts485
-rw-r--r--src/routes/upstream/+server.ts6
33 files changed, 1838 insertions, 0 deletions
diff --git a/src/app.css b/src/app.css
new file mode 100644
index 0000000..e920bfb
--- /dev/null
+++ b/src/app.css
@@ -0,0 +1,12 @@
+/*
+ Copyright (C) 2024 memdmp
+
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
diff --git a/src/app.d.ts b/src/app.d.ts
new file mode 100644
index 0000000..743f07b
--- /dev/null
+++ b/src/app.d.ts
@@ -0,0 +1,13 @@
+// See https://kit.svelte.dev/docs/types#app
+// for information about these interfaces
+declare global {
+ namespace App {
+ // interface Error {}
+ // interface Locals {}
+ // interface PageData {}
+ // interface PageState {}
+ // interface Platform {}
+ }
+}
+
+export {};
diff --git a/src/app.html b/src/app.html
new file mode 100644
index 0000000..f2d20ed
--- /dev/null
+++ b/src/app.html
@@ -0,0 +1,31 @@
+<!--
+/**
+ * @generated
+ * @license AGPL-3.0-OR-LATER
+ * @copyright 2024 memdmp
+ * @upstream see https://[currentdomain]/upstream
+ *
+ * Copyright (C) 2024 memdmp
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+ -->
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link rel="icon" href="%sveltekit.assets%/favicon.png" />
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+ %sveltekit.head%
+</head>
+
+<body data-sveltekit-preload-data="hover">
+ <div style="display: contents">%sveltekit.body%</div>
+</body>
+
+</html> \ No newline at end of file
diff --git a/src/lib/fonts/Ac437_IBM_EGA_8x14.css b/src/lib/fonts/Ac437_IBM_EGA_8x14.css
new file mode 100644
index 0000000..01a053b
--- /dev/null
+++ b/src/lib/fonts/Ac437_IBM_EGA_8x14.css
@@ -0,0 +1,18 @@
+/*
+ Copyright (C) 2024 memdmp
+
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+@font-face {
+ font-family: "Ac437 IBM EGA 8x14";
+ src:
+ local("Ac437 IBM EGA 8x14"),
+ url("./Ac437_IBM_EGA_8x14.woff2") format("woff2"),
+ url("./Ac437_IBM_EGA_8x14.woff") format("woff"),
+ url("./Ac437_IBM_EGA_8x14.ttf") format("opentype");
+ font-display: swap;
+}
diff --git a/src/lib/fonts/Ac437_IBM_EGA_8x14.ttf b/src/lib/fonts/Ac437_IBM_EGA_8x14.ttf
new file mode 100644
index 0000000..d5b008b
--- /dev/null
+++ b/src/lib/fonts/Ac437_IBM_EGA_8x14.ttf
Binary files differ
diff --git a/src/lib/fonts/Ac437_IBM_EGA_8x14.woff b/src/lib/fonts/Ac437_IBM_EGA_8x14.woff
new file mode 100644
index 0000000..2a9d6dc
--- /dev/null
+++ b/src/lib/fonts/Ac437_IBM_EGA_8x14.woff
Binary files differ
diff --git a/src/lib/fonts/Ac437_IBM_EGA_8x14.woff2 b/src/lib/fonts/Ac437_IBM_EGA_8x14.woff2
new file mode 100644
index 0000000..fa786e2
--- /dev/null
+++ b/src/lib/fonts/Ac437_IBM_EGA_8x14.woff2
Binary files differ
diff --git a/src/lib/fonts/Px437_DOS-V_re_JPN12.css b/src/lib/fonts/Px437_DOS-V_re_JPN12.css
new file mode 100644
index 0000000..410e9de
--- /dev/null
+++ b/src/lib/fonts/Px437_DOS-V_re_JPN12.css
@@ -0,0 +1,18 @@
+/*
+ Copyright (C) 2024 memdmp
+
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+@font-face {
+ font-family: "Px437 DOS/V re. JPN12";
+ src:
+ local("Px437 DOS/V re. JPN12"),
+ url("./Px437_DOS-V_re_JPN12.woff2") format("woff2"),
+ url("./Px437_DOS-V_re_JPN12.woff") format("woff"),
+ url("./Px437_DOS-V_re_JPN12.ttf") format("opentype");
+ font-display: swap;
+}
diff --git a/src/lib/fonts/Px437_DOS-V_re_JPN12.ttf b/src/lib/fonts/Px437_DOS-V_re_JPN12.ttf
new file mode 100644
index 0000000..6f4d616
--- /dev/null
+++ b/src/lib/fonts/Px437_DOS-V_re_JPN12.ttf
Binary files differ
diff --git a/src/lib/fonts/Px437_DOS-V_re_JPN12.woff b/src/lib/fonts/Px437_DOS-V_re_JPN12.woff
new file mode 100644
index 0000000..311517f
--- /dev/null
+++ b/src/lib/fonts/Px437_DOS-V_re_JPN12.woff
Binary files differ
diff --git a/src/lib/fonts/Px437_DOS-V_re_JPN12.woff2 b/src/lib/fonts/Px437_DOS-V_re_JPN12.woff2
new file mode 100644
index 0000000..12926c4
--- /dev/null
+++ b/src/lib/fonts/Px437_DOS-V_re_JPN12.woff2
Binary files differ
diff --git a/src/lib/fonts/PxPlus_IBM_EGA_8x14.css b/src/lib/fonts/PxPlus_IBM_EGA_8x14.css
new file mode 100644
index 0000000..d1a3a97
--- /dev/null
+++ b/src/lib/fonts/PxPlus_IBM_EGA_8x14.css
@@ -0,0 +1,18 @@
+/*
+ Copyright (C) 2024 memdmp
+
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+@font-face {
+ font-family: "PxPlus IBM EGA 8x14";
+ src:
+ local("PxPlus IBM EGA 8x14"),
+ url("./PxPlus_IBM_EGA_8x14.woff2") format("woff2"),
+ url("./PxPlus_IBM_EGA_8x14.woff") format("woff"),
+ url("./PxPlus_IBM_EGA_8x14.ttf") format("opentype");
+ font-display: swap;
+}
diff --git a/src/lib/fonts/PxPlus_IBM_EGA_8x14.ttf b/src/lib/fonts/PxPlus_IBM_EGA_8x14.ttf
new file mode 100644
index 0000000..6dc1007
--- /dev/null
+++ b/src/lib/fonts/PxPlus_IBM_EGA_8x14.ttf
Binary files differ
diff --git a/src/lib/fonts/PxPlus_IBM_EGA_8x14.woff b/src/lib/fonts/PxPlus_IBM_EGA_8x14.woff
new file mode 100644
index 0000000..0763445
--- /dev/null
+++ b/src/lib/fonts/PxPlus_IBM_EGA_8x14.woff
Binary files differ
diff --git a/src/lib/fonts/PxPlus_IBM_EGA_8x14.woff2 b/src/lib/fonts/PxPlus_IBM_EGA_8x14.woff2
new file mode 100644
index 0000000..c29e71a
--- /dev/null
+++ b/src/lib/fonts/PxPlus_IBM_EGA_8x14.woff2
Binary files differ
diff --git a/src/lib/fonts/all-local-after-woff2.css b/src/lib/fonts/all-local-after-woff2.css
new file mode 100644
index 0000000..9bc8d65
--- /dev/null
+++ b/src/lib/fonts/all-local-after-woff2.css
@@ -0,0 +1,36 @@
+/*
+ Copyright (C) 2024 memdmp
+
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+@font-face {
+ font-family: "Ac437 IBM EGA 8x14";
+ src:
+ url("./Ac437_IBM_EGA_8x14.woff2") format("woff2"),
+ local("Ac437 IBM EGA 8x14"),
+ url("./Ac437_IBM_EGA_8x14.woff") format("woff"),
+ url("./Ac437_IBM_EGA_8x14.ttf") format("opentype");
+ font-display: swap;
+}
+@font-face {
+ font-family: "PxPlus IBM EGA 8x14";
+ src:
+ url("./PxPlus_IBM_EGA_8x14.woff2") format("woff2"),
+ local("PxPlus IBM EGA 8x14"),
+ url("./PxPlus_IBM_EGA_8x14.woff") format("woff"),
+ url("./PxPlus_IBM_EGA_8x14.ttf") format("opentype");
+ font-display: swap;
+}
+@font-face {
+ font-family: "Px437 DOS/V re. JPN12";
+ src:
+ url("./Px437_DOS-V_re_JPN12.woff2") format("woff2"),
+ local("Px437 DOS/V re. JPN12"),
+ url("./Px437_DOS-V_re_JPN12.woff") format("woff"),
+ url("./Px437_DOS-V_re_JPN12.ttf") format("opentype");
+ font-display: swap;
+}
diff --git a/src/lib/fonts/all.css b/src/lib/fonts/all.css
new file mode 100644
index 0000000..7b30c9a
--- /dev/null
+++ b/src/lib/fonts/all.css
@@ -0,0 +1,36 @@
+/*
+ Copyright (C) 2024 memdmp
+
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+@font-face {
+ font-family: "Ac437 IBM EGA 8x14";
+ src:
+ local("Ac437 IBM EGA 8x14"),
+ url("./Ac437_IBM_EGA_8x14.woff2") format("woff2"),
+ url("./Ac437_IBM_EGA_8x14.woff") format("woff"),
+ url("./Ac437_IBM_EGA_8x14.ttf") format("opentype");
+ font-display: swap;
+}
+@font-face {
+ font-family: "PxPlus IBM EGA 8x14";
+ src:
+ local("PxPlus IBM EGA 8x14"),
+ url("./PxPlus_IBM_EGA_8x14.woff2") format("woff2"),
+ url("./PxPlus_IBM_EGA_8x14.woff") format("woff"),
+ url("./PxPlus_IBM_EGA_8x14.ttf") format("opentype");
+ font-display: swap;
+}
+@font-face {
+ font-family: "Px437 DOS/V re. JPN12";
+ src:
+ local("Px437 DOS/V re. JPN12"),
+ url("./Px437_DOS-V_re_JPN12.woff2") format("woff2"),
+ url("./Px437_DOS-V_re_JPN12.woff") format("woff"),
+ url("./Px437_DOS-V_re_JPN12.ttf") format("opentype");
+ font-display: swap;
+}
diff --git a/src/lib/index.ts b/src/lib/index.ts
new file mode 100644
index 0000000..13c5889
--- /dev/null
+++ b/src/lib/index.ts
@@ -0,0 +1,10 @@
+/*
+ Copyright (C) 2024 memdmp
+
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+export * as styles from "./styles.ts";
diff --git a/src/lib/license.ts b/src/lib/license.ts
new file mode 100644
index 0000000..d9c8ffe
--- /dev/null
+++ b/src/lib/license.ts
@@ -0,0 +1,7 @@
+import * as license from "$/../LICENSE?raw";
+
+export default (typeof license === "string"
+ ? license
+ : "default" in license
+ ? license.default
+ : JSON.stringify(license, null, 2)) as string;
diff --git a/src/lib/styles.ts b/src/lib/styles.ts
new file mode 100644
index 0000000..fd361b4
--- /dev/null
+++ b/src/lib/styles.ts
@@ -0,0 +1,10 @@
+/*
+ Copyright (C) 2024 memdmp
+
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+export const button = "bg-white bg-opacity-10 text-white p-4 rounded-xl";
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
new file mode 100644
index 0000000..53bd941
--- /dev/null
+++ b/src/routes/+layout.svelte
@@ -0,0 +1,11 @@
+<script lang="ts">
+ import "../app.css";
+ import "$lib/fonts/all-local-after-woff2.css";
+ const { children } = $props();
+</script>
+
+<div
+ class="w-screen h-screen fixed top-0 left-0 bg-black text-white p-4 overflow-y-auto"
+>
+ {@render children()}
+</div>
diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts
new file mode 100644
index 0000000..2c01569
--- /dev/null
+++ b/src/routes/+layout.ts
@@ -0,0 +1,11 @@
+/*
+ Copyright (C) 2024 memdmp
+
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+export const prerender = true;
+export const trailingSlash = 'always';
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
new file mode 100644
index 0000000..701132b
--- /dev/null
+++ b/src/routes/+page.svelte
@@ -0,0 +1,414 @@
+<!--
+/**
+ * @license AGPL-3.0-OR-LATER
+ * @copyright 2024 memdmp
+ *
+ * Copyright (C) 2024 memdmp
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+ -->
+<script lang="ts">
+ import logo from "./boot-logo.png";
+ import "./anim.css";
+ import { architecture, hostname, tty, versions } from "./distro-info";
+ import { login, ttyLines, type RenderBlock, type TTYText } from "./shared";
+ import { onDestroy, onMount } from "svelte";
+
+ const initTagLine = `line flex flex-row flex-wrap gap-3 justify-between`;
+
+ const fsckFileCount = Math.floor(Math.random() * 32768 + 6732);
+ const fsckTotalCount = Math.round(
+ (fsckFileCount / 6732) * 753664 + Math.random() * 10000,
+ );
+ const blocksTotal = Math.floor(Math.random() * 8000000 + 4000000);
+ const blocksCount = Math.floor(Math.random() * 600000 + 200000);
+
+ const lanLeastSignificantIPPart = Math.floor(Math.random() * 253 + 2);
+
+ let isScripted = false;
+ onMount(() => (isScripted = true));
+ onDestroy(() => (isScripted = false));
+</script>
+
+<svelte:head>
+ <title>mem.estrogen.zone</title>
+</svelte:head>
+
+{#snippet tagLeft(colour: string)}
+ <span class="text-[{colour}]">*</span>
+{/snippet}
+{#snippet okTagLeft()}
+ {@render tagLeft("#51f051")}
+{/snippet}
+{#snippet tagRight(innerText: string, innerColour: string)}
+ <span class="text-[#5f5fff]">[</span>
+ <span class="text-[{innerColour}]">{innerText}</span>
+ <span class="text-[#5f5fff]">]</span>
+{/snippet}
+{#snippet okTagRight()}
+ {@render tagRight("ok", "#51f051")}
+{/snippet}
+{#snippet okLine(text: string, classes?: string, rightClass?: string)}
+ <div class="{initTagLine}{classes ? ' ' + classes : ''}">
+ <div class="left">
+ {@render okTagLeft()}
+ {text}
+ </div>
+ <div class="right{rightClass ? ' ' + rightClass : ''}">
+ {@render okTagRight()}
+ </div>
+ </div>
+{/snippet}
+{#snippet ttyTextInnerRenderer(section: RenderBlock)}
+ <span
+ class="ttytext-block {section.colour
+ ? ` text-[${section.colour}]`
+ : ''}{section.bg ? ` bg-[${section.bg}]` : ''} {section.weight
+ ? ` ${['', 'font-thin', 'font-extralight', 'font-light', 'font-normal', 'font-medium', 'font-semibold', 'font-bold', 'font-extrabold', 'font-black'][section.weight / 100]}`
+ : ''}{typeof section.italic === 'undefined'
+ ? ''
+ : section.italic
+ ? ' italic'
+ : ' not-italic'}{typeof section.underlined === 'undefined'
+ ? ''
+ : section.underlined
+ ? ` underline`
+ : ' no-underline'} inline"
+ >{#if section.raw}{@html section.value}{:else}{#each section.value
+ .split("\n")
+ .map( (l, i, a) => (i === a.length - 1 ? [0, l] : [1, l]), ) as [nl, l]}{l}{#if nl}<br
+ />{/if}{/each}{/if}</span
+ >
+{/snippet}
+{#snippet ttyTextMiddleRenderer(
+ section: RenderBlock,
+ line: TTYText & { kind: "text" },
+)}
+ {#if section.url}
+ {#if typeof section.url === "string"}
+ {#if section.url.startsWith("newtab:")}
+ <a
+ href={section.url.substring(7)}
+ target="_blank"
+ rel="noopener noreferrer"
+ class="no-underline text-inherit"
+ download={section.dl}>{@render ttyTextInnerRenderer(section)}</a
+ >
+ {:else if section.url.startsWith("currenttab:")}
+ <a
+ href={section.url.substring(11)}
+ class="no-underline text-inherit"
+ download={section.dl}>{@render ttyTextInnerRenderer(section)}</a
+ >
+ {:else}
+ ERR: Unknown Link Format
+ {/if}
+ {:else}
+ <span
+ on:click={() =>
+ typeof section.url !== "function" ? void 0 : section.url(line)}
+ on:keypress={() =>
+ typeof section.url !== "function" ? void 0 : section.url(line)}
+ role="link"
+ tabindex="0">{@render ttyTextInnerRenderer(section)}</span
+ >
+ {/if}
+ {:else}
+ {@render ttyTextInnerRenderer(section)}
+ {/if}
+{/snippet}
+{#snippet ttyText(line: TTYText)}
+ {#if line.kind === "text"}
+ {#if (line.renderrestriction ?? "everywhere") === "everywhere" || line.renderrestriction === "noscript" || (line.renderrestriction === "js-only" && isScripted)}
+ {#if line.renderrestriction === "noscript"}
+ <noscript class="inline-block max-w-[100%] {line.classes.join(' ')}"
+ >{#each line.value as v}{@render ttyTextMiddleRenderer(
+ v,
+ line,
+ )}{/each}</noscript
+ >
+ {:else}
+ <span class="inline-block max-w-[100%] {line.classes.join(' ')}"
+ >{#each line.value as v}{@render ttyTextMiddleRenderer(
+ v,
+ line,
+ )}{/each}</span
+ >
+ {/if}
+ {/if}
+ {/if}
+{/snippet}
+
+<div class="hidden">
+ {#each ["inline-block", "block", "flex", "inline-flex", "max-w-full", "font-thin", "font-extralight", "font-light", "font-normal", "font-medium", "font-semibold", "font-bold", "font-extrabold", "font-black"] as c}
+ <span class={c}></span>
+ {/each}
+</div>
+
+<div class="fixed top-0 left-0 w-screen h-screen font-mono" id="app">
+ <div
+ id="bios"
+ class="flex flex-col items-center justify-between relative font-bios text-lg"
+ >
+ <div class="top flex items-center justify-center flex-col">
+ <div class="inner text-[#999999]">
+ <p class="leading-4 mt-8 -mb-8 max-w-[36rem]">
+ <span class="bdsdxe-load"
+ >BdsDxe: loading Boot0002 "UEFI Misc Device" from PciRoot
+ (0x0)/Pci(0x2,0x4)/Pci(0x0,0x0)</span
+ ><br />
+ <span class="bdsdxe-start"
+ >BdsDxe: starting Boot0002 "UEFI Misc Device" from PciRoot
+ (0x0)/Pci(0x2,0x4)/Pci(0x0,0x0)</span
+ >
+ </p>
+ </div>
+ </div>
+ <div class="middle">
+ <img
+ src={logo}
+ alt="Bootloader Logo"
+ class="w-32 h-32 flex items-center justify-center"
+ />
+ </div>
+ <div
+ class="bottom flex flex-col items-stretch justify-center text-center gap-0.5 w-full pb-4"
+ >
+ <div class="start-text">Start boot option</div>
+ <div
+ class="bar h-4"
+ style={`background-image: url("data:image/svg+xml,${encodeURIComponent(`<svg width="32" height="32" viewbox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
+ <rect x="1" y="1" width="30" height="30" fill="white" stroke="black" stroke-width="2"/>
+</svg>
+`)}");background-size:contain;`}
+ ></div>
+ </div>
+ </div>
+ <div id="grub" class="font-grub text-sm">
+ <div
+ class="relative p-4 flex items-stretch justify-stretch flex-col w-screen h-screen"
+ >
+ <p class="title text-[#a2a2a2] mb-4 h-4 text-center">
+ GNU GRUB &nbsp;version 2.12
+ </p>
+ <div
+ class="outer-border border-2 border-[#a8a8a8] border-solid h-full px-1 py-2 flex flex-col items-stretch"
+ >
+ <div class="entry bg-[#a8a8a8] text-[#000] text-left">
+ *Alpine Linux {versions.alpine.number}, with {versions.kernel
+ .humanReadable}
+ </div>
+ <div class="entry text-[#a8a8a8] text-left">
+ &nbsp;UEFI Firmware Setup
+ </div>
+ </div>
+ <p class="footer text-[#a2a2a2] my-4 text-left pl-2">
+ <span class="block pl-6">
+ Use the ↑ and ↓ keys to select which entry is highlighted.<br />
+ Press enter to boot the selected OS, `e' to edit the commands before booting
+ or `c' for a command-line.<br />
+ </span>
+ The highlighted entry will be executed automatically in
+ <span class="grub-2s inline-block">2</span><span
+ class="grub-1s inline-block">1</span
+ >s.
+ </p>
+ </div>
+ </div>
+ <div id="grub-term" class="font-grub text-sm text-left text-[#a2a2a2]">
+ <p class="p-8">
+ &nbsp;&nbsp;Booting `Alpine Linux {versions.alpine.number}, with {versions
+ .kernel.humanReadable}'<br /><br /><span class="load-kernel"
+ >Loading {versions.kernel.humanReadable} ...</span
+ ><br /><span class="load-ramdisk">Loading initial ramdisk ...</span>
+ </p>
+ </div>
+ <!--
+ flex col reverse and mb auto are hacks for it to auto scroll to bottom(!)
+ flex col reverse only works due to nested inner (which would be at bottom of screen, if it wasnt for mb-auto div above it)
+ -->
+ <div id="openrc" class="overflow-y-auto flex flex-col-reverse">
+ <div class="mb-auto"></div>
+ <div class="font-mono leading-4 text-[#b9b9b9] flex flex-col p-4">
+ <div class="line">
+ &nbsp;&nbsp;<span class="text-[#51f051]">OpenRC</span>
+ <span class="text-[#4bdfdf]">{versions.openrc}</span>
+ is starting up Linux
+ <span class="text-[#5f5fff]">{versions.kernel.id} ({architecture})</span
+ >
+ </div>
+ <div class="line">&ZeroWidthSpace;</div>
+ {@render okLine("/proc/ is already mounted")}
+ {@render okLine("Mounting /run ...")}
+ {@render okLine("/run/openrc: creating directory")}
+ {@render okLine("/run/lock: creating directory", "openrc-boot-step-1")}
+ {@render okLine("/run/lock: correcting owner", "openrc-boot-step-1")}
+ {@render okLine("Caching service dependencies ...", "openrc-boot-step-1")}
+ {@render okLine("Remounting devtmpfs on /dev ...", "openrc-boot-step-2")}
+ {@render okLine("Mounting /dev/mqueue ...", "openrc-boot-step-3")}
+ {@render okLine("Mounting security filesystem ...", "openrc-boot-step-4")}
+ {@render okLine("Mounting debug filesystem ...", "openrc-boot-step-5")}
+ {@render okLine(
+ "Mounting persistent storage (pstore) filesystem ...",
+ "openrc-boot-step-5",
+ )}
+ {@render okLine("Mounting efivarfs filesystem ...", "openrc-boot-step-5")}
+ {@render okLine("Starting busybox mdev ...", "openrc-boot-step-6")}
+ {@render okLine("Scanning hardware for mdev ...", "openrc-boot-step-6")}
+ {@render okLine("Loading hardware drivers ...", "openrc-boot-step-7")}
+ {@render okLine("Loading modules ...", "openrc-boot-step-8")}
+ {@render okLine(
+ "Setting system clock using the hardware clock [UTC] ...",
+ "openrc-boot-step-9",
+ )}
+ {@render okLine("Checking local filesystems ...", "openrc-boot-step-10")}
+ <div class="line openrc-boot-step-11">
+ /dev/mapper/bepis: clean, {fsckFileCount}/{fsckTotalCount} files, {blocksCount}/{blocksTotal}
+ blocks
+ </div>
+ {@render okLine(
+ "Remounting root filesystem read/write ...",
+ "openrc-boot-step-12",
+ )}
+ {@render okLine("Remounting filesystems ...", "openrc-boot-step-13")}
+ {@render okLine("Activating swap devices ...", "openrc-boot-step-14")}
+ {@render okLine("Mounting local filesystems ...", "openrc-boot-step-15")}
+ {@render okLine(
+ "Configuring kernel parameters ...",
+ "openrc-boot-step-16",
+ )}
+ {@render okLine("Creating user login records ...", "openrc-boot-step-17")}
+ {@render okLine("Setting hostname ...", "openrc-boot-step-18")}
+ {@render okLine("Setting keymap ...", "openrc-boot-step-19")}
+ {@render okLine("Starting networking ...", "openrc-boot-step-20")}
+ {@render okLine("\xa0\xa0lo ...", "openrc-boot-step-21")}
+ {@render okLine("\xa0\xa0eth0 ...", "openrc-boot-step-22")}
+ <div class="line openrc-boot-step-22">udhcpd: started</div>
+ <div class="line openrc-boot-step-23">udhcpd: broadcasting discover</div>
+ <!-- TODO: configurable subnet uwu -->
+ <div class="line openrc-boot-step-24">
+ udhcpd: broadcasting select for 192.168.1.{lanLeastSignificantIPPart},
+ server 192.168.1.1
+ </div>
+ <div class="line openrc-boot-step-25">
+ udhcpd: lease of 192.168.1.{lanLeastSignificantIPPart} obtained from 192.168.1.1,
+ lease time 3600
+ </div>
+ {@render okLine(
+ "Seeding random number generator ...",
+ "openrc-boot-step-26",
<