Browse Source

Big refresh, clean(er) setup, decent readme

volt 3 tháng trước cách đây
commit
a39847cef2

+ 0 - 0
.eleventyignore


+ 2 - 0
.gitignore

@@ -0,0 +1,2 @@
+/node_modules/
+.DS_Store

+ 30 - 0
README.md

@@ -0,0 +1,30 @@
+# unakt.cc
+Mon blog tout à fait minimaliste pas encore tout à fait fonctionnel mais c'est pas grave comme y'a rien dessus... ou presque...
+
+## How-To
+1. Follow setup on Eleventy website then
+
+2. See scripts in the "package.json" file like :
+
+> npm run build
+> npm run deploy
+
+"build" does build the whole blog in html inside _site
+"deploy" should copy it in my internet served folder
+
+⚠️ Don't use deploy !! Used only in my own scenario
+
+> npm run start
+This is for local testing
+(Don't forget to restart this when modifying the eleventy.config.js file)
+
+## File Structure
+- _drafts - ignored md files from the builder
+- _site - whole blog rendered in html
+- includes - binaries & structure
+- layout - layouts
+- node_modules - lot of crap
+- posts - blog posts in markdown
+- templates - wut is this ? /shrug
+
+I think that's it

+ 29 - 0
_drafts/Lonely.md

@@ -0,0 +1,29 @@
+---
+tags:
+  - draft
+title: Lonely and Emo? (beyond thirties)
+date: 2025-04-21
+---
+I'm under the impression, that - maybe - some skin needs to be shed...
+Or that maybe I missed the opportunity and I'm back to endless distractions... Who knows...
+
+Loneliness have been killing me lately, also maybe I've run out of things to share with my current closest friends, we can't be more apart than we are right now. I've been hurting, and trying to find answers with ChatGPT that were helpful at first, it led me back to one of my earliest wish since I was a kid with access to internet and dreaming about videogames on different websites, I wanted to have my own share of the web too. So from the top of my 14 (?) years old I built my website with a hacked version of MS Frontpage that talked about mods for GTA3 among other things...
+So ChatGPT suggested me to make yet another place like this one *right here*, without really knowing that much about me, but it resonated with me for this reason.
+I don't know what's the point of this place. There won't be currency to get in form of likes to have, neither re-links?
+But it think this make more sense to me, this is my home, and likely no one will see it that didn't actually look for it. And if you already read that far... you're invited i guess.
+Actually, there may not be likes, but maybe there's connections? At least this is what I hope for.
+Maybe there are mind alike out there, and this is my bottle in the sea... I'm not going to hide the fact that I'm a mess of a human being, nervousness often make me react a little too strongly, I've indulged in a massive collection of diverse medium of distractions to ignore the fact that loneliness have been painful for way too long... Kind of buying my way out of it in the process, and let's just say, it doesn't work. I also certainly did some things that I'm not proud of to feel smart at others detriments... I'm a wreck... But that's the last thing that's left to me...
+...
+...
+I'm not sure I'm even honest to myself there...
+...
+What should I tell? **I don't know**, I feel like I'm both talking to myself, as I've done for the past 6 years on my journal without it leading to anywhere, and trying to invoke something out of me that I can't see at the same time.
+
+At least there will be some sort of content, or means to connect, here? eh
+
+This may be my ~~:.|:;~~ offense, hopefully it'll be uphill from here.
+And it made me think... this could also be one of more to come of me trying to reconnect with my emo past, this movement that seems to have disappeared from most of the web... Pretty immature for me probably but can't someone be somewhat old-ish and emo? Let's pretend it's part of my continued deathmental (pun intended) period.
+
+Now, as weird as it may sound, I'm probably going back to do a few more races in New Star GP and all it's extremely polygonal and colorful retro '90 glory... That's one thing left that bring as much joy as it bring nervousness currently, and I won't be much more picky about these feelings, 
+it is these both or none.
+

+ 63 - 0
_site/1/index.html

@@ -0,0 +1,63 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>unakt - hi</title>
+    <link rel="stylesheet" href="/bundle.css">
+</head>
+<body>
+    <header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>
+    <div id="tag">
+        <p>Hi, I'm unakt - a living mess from France doing his best to sort things up.</p>
+
+    </div>
+    <main>
+        <ul class="postlist">
+            
+                <li><h3><a href="/posts/001Hello/">001 hello ;)</a></h3></li>
+            
+        </ul>
+        <p class="pagination">
+             -
+            
+            <a href="/">Next Page</a>
+        </p>
+        <hr>
+<p>Debug Info:</p>
+<ul>
+  <li>Current Page: 1</li>
+  <li>Next Link: </li>
+  <li>Previous Link: /</li>
+  <li>Total Pages: 2</li>
+</ul>
+<h3>Total posts found in collection: 4</h3>
+<ul>
+
+  <li>./posts/001Hello.md</li>
+
+  <li>./posts/001Hello copy.md</li>
+
+  <li>./posts/004Creation log.md</li>
+
+  <li>./posts/005wargames.md</li>
+
+</ul>
+    </main>
+    
+    <footer class="page-footer">
+        <small>- unakt</small>
+    </footer>
+</body>
+</html>

+ 42 - 0
_site/2/index.html

@@ -0,0 +1,42 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>unakt - hi</title>
+    <link rel="stylesheet" href="/bundle.css">
+</head>
+<body>
+    <header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>
+    <div id="tag">
+        <p>Hi, I'm unakt - a living mess from France doing his best to sort things up.</p>
+
+    </div>
+    <main>
+        <ul class="postlist">
+            
+                <li><h3>4th - I don't know why it doesn't list all poasts</h3></li>
+                <p>Yeah, why the first post is ignored?</p>
+
+            
+        </ul>
+        <p> ---
+        <a href="/1/">Next Page</a></p>
+    </main>
+    
+    <footer class="page-footer">
+        <small>- unakt</small>
+    </footer>
+</body>
+</html>

+ 23 - 0
_site/README/index.html

@@ -0,0 +1,23 @@
+<h1>unakt.cc</h1>
+<p>Mon blog tout à fait minimaliste pas encore tout à fait fonctionnel mais c'est pas grave comme y'a rien dessus... ou presque...</p>
+<h2>How-To</h2>
+<p>Follow setup on Eleventy website then
+See scripts in the &quot;package.json&quot; file</p>
+<blockquote>
+<p>npm run build
+npm run deploy</p>
+</blockquote>
+<p>&quot;build&quot; does build the whole blog in html inside _site
+&quot;deploy&quot; should copy it in my internet served folder</p>
+<p>⚠️ Don't use deploy !! Used only in my own scenario</p>
+<h2>File Structure</h2>
+<ul>
+<li>_drafts - ignored md files from the builder</li>
+<li>_site - whole blog rendered in html</li>
+<li>includes - binaries &amp; structure</li>
+<li>layout - layouts</li>
+<li>node_modules - lot of crap</li>
+<li>posts - blog posts in markdown</li>
+<li>templates - pages templates</li>
+</ul>
+<p>I think that's it</p>

+ 18 - 0
_site/_drafts/Lonely/index.html

@@ -0,0 +1,18 @@
+<p>I'm under the impression, that - maybe - some skin needs to be shed...
+Or that maybe I missed the opportunity and I'm back to endless distractions... Who knows...</p>
+<p>Loneliness have been killing me lately, also maybe I've run out of things to share with my current closest friends, we can't be more apart than we are right now. I've been hurting, and trying to find answers with ChatGPT that were helpful at first, it led me back to one of my earliest wish since I was a kid with access to internet and dreaming about videogames on different websites, I wanted to have my own share of the web too. So from the top of my 14 (?) years old I built my website with a hacked version of MS Frontpage that talked about mods for GTA3 among other things...
+So ChatGPT suggested me to make yet another place like this one <em>right here</em>, without really knowing that much about me, but it resonated with me for this reason.
+I don't know what's the point of this place. There won't be currency to get in form of likes to have, neither re-links?
+But it think this make more sense to me, this is my home, and likely no one will see it that didn't actually look for it. And if you already read that far... you're invited i guess.
+Actually, there may not be likes, but maybe there's connections? At least this is what I hope for.
+Maybe there are mind alike out there, and this is my bottle in the sea... I'm not going to hide the fact that I'm a mess of a human being, nervousness often make me react a little too strongly, I've indulged in a massive collection of diverse medium of distractions to ignore the fact that loneliness have been painful for way too long... Kind of buying my way out of it in the process, and let's just say, it doesn't work. I also certainly did some things that I'm not proud of to feel smart at others detriments... I'm a wreck... But that's the last thing that's left to me...
+...
+...
+I'm not sure I'm even honest to myself there...
+...
+What should I tell? <strong>I don't know</strong>, I feel like I'm both talking to myself, as I've done for the past 6 years on my journal without it leading to anywhere, and trying to invoke something out of me that I can't see at the same time.</p>
+<p>At least there will be some sort of content, or means to connect, here? eh</p>
+<p>This may be my <s>:.|:;</s> offense, hopefully it'll be uphill from here.
+And it made me think... this could also be one of more to come of me trying to reconnect with my emo past, this movement that seems to have disappeared from most of the web... Pretty immature for me probably but can't someone be somewhat old-ish and emo? Let's pretend it's part of my continued deathmental (pun intended) period.</p>
+<p>Now, as weird as it may sound, I'm probably going back to do a few more races in New Star GP and all it's extremely polygonal and colorful retro '90 glory... That's one thing left that bring as much joy as it bring nervousness currently, and I won't be much more picky about these feelings,
+it is these both or none.</p>

+ 41 - 0
_site/about/index.html

@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Hi you</title>
+    <link rel="stylesheet" href="/bundle.css">
+</head>
+<body>
+    <header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>
+
+    <article>
+    <h1>Why is there even a website here?</h1>
+<p>I don't know, i felt like it.</p>
+<p>Loneliness will make you do weird things...</p>
+<p>Now if you ever wonder who am i, i'm volt/unakt,
+a french guy reaching his forties while still on disability
+and exploring the little spaces he can venture to.</p>
+<p>I'm usually watching Twitch on the side
+while either videogaming, boardgaming, reading or writing...
+Also a lover of music, all of it.</p>
+<p>Now i'm trying to reach whoever who will end here 💡</p>
+<p>My Bluesky is here : <a href="https://bsky.app/profile/unakt.cc">unakt.cc</a></p>
+
+    </article>
+
+<footer class="page-footer">
+        <small>- unakt</small>
+    </footer>
+</body>
+</html>

+ 119 - 0
_site/bundle.css

@@ -0,0 +1,119 @@
+/* Doing CSS like the early 2000 */
+
+body {
+    font-family: Verdana, Tahoma, sans-serif;
+    background-color: #F6F6F6;
+    max-width: 800px;
+    margin: auto;
+}
+
+main {
+    border : 5px solid black;
+    border-radius: 10px;
+}
+
+main p.pagination {
+    text-align: center;
+}
+
+main p.pagination a {
+    text-transform: uppercase;
+    color: #111122;
+    text-decoration: none;
+}
+
+.page-header {
+    border: 5px solid black;
+    border-radius: 10px;
+
+}
+
+.headerlogo {
+    float: left;
+}
+
+nav {
+    padding: 5px 50px;
+    background-color: #0C5678;
+}
+
+nav a {
+    color: aliceblue;
+    background-color: #0C5678;
+    padding: 5px 10px;
+    border-width: 5px;
+    border-color: black;
+}
+
+nav a:hover {
+    background-color: #2f647c;
+}
+
+ul.postlist {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+    text-align: center;
+}
+
+.postlist a {
+    color: #111122;
+}
+
+.postlist a:hover {
+    text-decoration: underline;
+    color: #5A5A5A;
+}
+
+.postlist a:visited {
+    color: #635A5A;
+}
+
+.postlist a:visited:hover {
+    color: #857c7c;
+}
+
+blockquote {
+    font-size: 0.8em;
+    background-color: rgb(224, 224, 224);
+    padding: 1px 10px;
+    border-left: 4px solid black;
+}
+
+#tag {
+    background-color: rgb(224, 224, 224);
+    margin: 10px 0px;
+    padding: 2px 10px;
+    border-left: 4px solid black;
+}
+
+#tag p {
+    margin: 5px;
+    font-style: italic;
+}
+
+@keyframes hacking {
+    0%  {visibility: visible;}
+    50%  {visibility: hidden;}
+    100%  {visibility: hidden;}
+}
+
+h1::after {
+    content: " _";
+    animation-name: hacking;
+    animation-duration: 1s;
+    animation-delay: 2s;
+    animation-iteration-count: infinite;
+}
+
+pre {
+    background-color: gainsboro;
+}
+
+code {
+    background-color: gainsboro;
+}
+
+.page-footer {
+    float: right;
+}

BIN
_site/img/astounddS.png


+ 65 - 0
_site/index.html

@@ -0,0 +1,65 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>unakt - hi</title>
+    <link rel="stylesheet" href="/bundle.css">
+</head>
+<body>
+    <header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>
+    <div id="tag">
+        <p>Hi, I'm unakt - a living mess from France doing his best to sort things up.</p>
+
+    </div>
+    <main>
+        <ul class="postlist">
+            
+                <li><h3><a href="/posts/005wargames/">005 Retour sur les wargame (fr)</a></h3></li>
+            
+                <li><h3><a href="/posts/004Creation log/">004 Creation log of this place (eng)</a></h3></li>
+            
+                <li><h3><a href="/posts/001Hello/">001 hello ;)</a></h3></li>
+            
+        </ul>
+        <p class="pagination">
+             -
+            
+        </p>
+<!--
+<p>Debug Info:</p>
+<ul>
+  <li>Current Page: 0</li>
+  <li>Next Link: </li>
+  <li>Previous Link: </li>
+  <li>Total Pages: 1</li>
+</ul>
+<h3>Total posts found in collection: 3</h3>
+<ul>
+
+  <li>./posts/001Hello.md</li>
+
+  <li>./posts/004Creation log.md</li>
+
+  <li>./posts/005wargames.md</li>
+
+</ul>
+-->
+    </main>
+    
+    <footer class="page-footer">
+        <small>- unakt</small>
+    </footer>
+</body>
+</html>

+ 32 - 0
_site/notes/index.html

@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>unakt - notes</title>
+    <link rel="stylesheet" href="/bundle.css">
+</head>
+<body>
+    <header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>
+
+    <article>
+    <h1>WIP</h1>
+<p>This place is still very much WIP, i expect to put some infos that i find worth keeping here</p>
+
+    </article>
+
+<footer class="page-footer">
+        <small>- unakt</small>
+    </footer>
+</body>
+</html>

+ 32 - 0
_site/posts/001Hello copy/index.html

@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>002 hello ;)</title>
+    <link rel="stylesheet" href="/bundle.css">
+</head>
+<body>
+    <header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>
+
+    <article>
+    <h1>002 hello ;)</h1>
+    <p>Just a Hello World :P</p>
+
+    </article>
+
+<footer class="page-footer">
+        <small>- unakt</small>
+    </footer>
+</body>
+</html>

+ 32 - 0
_site/posts/001Hello/index.html

@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>001 hello ;)</title>
+    <link rel="stylesheet" href="/bundle.css">
+</head>
+<body>
+    <header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>
+
+    <article>
+    <h1>001 hello ;)</h1>
+    <p>Just a Hello World :P</p>
+
+    </article>
+
+<footer class="page-footer">
+        <small>- unakt</small>
+    </footer>
+</body>
+</html>

+ 32 - 0
_site/posts/004Creation log copy/index.html

@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>001 hello ;)</title>
+    <link rel="stylesheet" href="/bundle.css">
+</head>
+<body>
+    <header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>
+
+    <article>
+    <h1>001 hello ;)</h1>
+    <p>Just a Hello World :P</p>
+
+    </article>
+
+<footer class="page-footer">
+        <small>- unakt</small>
+    </footer>
+</body>
+</html>

+ 107 - 0
_site/posts/004Creation log/index.html

@@ -0,0 +1,107 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>004 Creation log of this place (eng)</title>
+    <link rel="stylesheet" href="/bundle.css">
+</head>
+<body>
+    <header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>
+
+    <article>
+    <h1>004 Creation log of this place (eng)</h1>
+    <p>I'm neither extra proficient in English nor in coding and worst of all i have no knowledge of Javascript but this is a memo of things that didn't seems obvious to me to get this Eleventy.js blog place working at the ultimate barebone form.</p>
+<p>In the <strong>.eleventy.js</strong> file :</p>
+<pre><code class="language-js">module.exports = function(eleventyConfig) {
+
+// add my css file from the root folder 
+eleventyConfig.addPassthroughCopy(&quot;bundle.css&quot;);
+// This line was to make sure my post.md weren't processed as Liquid, permitting this post here
+eleventyConfig.setTemplateFormats([&quot;md&quot;, &quot;njk&quot;, &quot;html&quot;]);
+
+return {
+	// Ok idk this prevent markdown from being processed?
+	markdownTemplateEngine: false,
+	dir: {
+		input: &quot;./&quot;,
+		output: &quot;_site&quot;,
+		layouts: &quot;layouts&quot;,
+		includes: &quot;includes&quot;
+		}
+	};
+};
+</code></pre>
+<p>The <code>async</code> showed in the doc is unnecessary (is it?), and the return part should be at the end of the function.</p>
+<p>For the layout of a blog list in Nunjucks (file named &quot;home.njk&quot;):</p>
+<pre><code class="language-js">---
+    pagination:
+        data: collections.post
+        size: 3
+        reverse: true
+---
+// [[PUT YOUR HTML HEADER HERE]]
+// A Navbar from my includes folder providing links to single pages
+{% include 'topbar.html' %}
+// I put a welcome message in this index
+{{ content | safe }}
+&lt;main&gt;
+&lt;ul&gt;
+	// listing 3 blog posts, both title and whole content
+	{% for post in pagination.items %}
+		&lt;li&gt;&lt;h3&gt;{{ post.data.title | safe }}&lt;/h3&gt;&lt;/li&gt;
+		{{ post.content | safe }}
+	{% endfor %}
+&lt;/ul&gt;
+
+// Links to show back 3 older posts or 3 more recent
+&lt;p&gt;{% if page.url != pagination.href.last %}&lt;a href=&quot;{{ pagination.href.next }}&quot;&gt;Prev Page&lt;/a&gt;{% endif %} ---
+
+{% if page.url != pagination.href.first %}&lt;a href=&quot;{{ pagination.href.previous }}&quot;&gt;Next Page&lt;/a&gt;{% endif %}&lt;/p&gt;
+&lt;/main&gt;
+</code></pre>
+<p>The <code>data: collections.post</code> will take all files tagged with &quot;post&quot;. And then they will be listed 3 by 3 in reverse order on the blog part (the for loop).</p>
+<p>Be aware that if you plan on switching from Liquid to Nunjucks by renaming your file because they seems identical, there actually are minor differences :
+<code>{% for post in pagination.items reversed %}</code>
+Should become :
+<code>{% for post in pagination.items | reverse %}</code>
+And if your ever simply rename like me, be aware that Eleventy will tell you an incorrect error line number, missing as many lines as you have metadata lines on top on your file.</p>
+<blockquote>
+<p>Little anecdote: This was especially aggravating when i renamed since it told my <strong>for loop</strong> wasn't closed exactly where i had <strong>another for loop</strong> that was perfectly correct...</p>
+</blockquote>
+<p>The said index page that use home.njk to show the post list, along with the &quot; content&quot; part with the welcome message :</p>
+<pre><code class="language-md">---
+layout: home.njk
+title: unakt - hi
+---
+&gt; Hi, I'm unakt - a living mess from France doing his best to sort things up.
+</code></pre>
+<p>And here is how the most basic post1.md should look like:</p>
+<pre><code class="language-md">---
+tags: post
+title: The title of the post
+---
+Lorem Ipsum
+sit dolor amen
+</code></pre>
+<p>And this is the most basic barebone elements needed for a blog...
+Now there's more things to look at, like the reverse order thing being a little janky at times, but in the grand scheme of things, this let me make some text based post,</p>
+<p>as this one ;)</p>
+
+    </article>
+
+<footer class="page-footer">
+        <small>- unakt</small>
+    </footer>
+</body>
+</html>

+ 73 - 0
_site/posts/005wargames/index.html

@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>005 Retour sur les wargame (fr)</title>
+    <link rel="stylesheet" href="/bundle.css">
+</head>
+<body>
+    <header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>
+
+    <article>
+    <h1>005 Retour sur les wargame (fr)</h1>
+    <blockquote>
+<p>Retour de l'immersion wargame du 14.09.24 qui n'a pratiquement aboutie à rien, hormis quelques 3d print, quelques peintures pas toutes finies et une seule game avec des standees avorté à mi-chemin, j'ai une grande envie de m'y remettre (j'ai beaucoup de temps libre cette fin décembre) mais sans me perdre dans l'infinité de possibilités offertes</p>
+<ul>
+<li>18.12.25</li>
+</ul>
+</blockquote>
+<h2>Pour game rapidement</h2>
+<h4>Mon manifeste pour démarrer le wargame</h4>
+<ol>
+<li>Je choisi les <strong>univers sci-fi</strong> comme point central de mes minis et rulesets</li>
+<li>Pour découvrir plus facilement sans avoir à se soucier des aspects compétitifs entre joueurs il faut que le ruleset soit jouable en <strong>solo et coop</strong></li>
+<li>Seul les joueurs auront des minis en plastique, les <strong>antagonistes seront des standees papier</strong> imprimé (voir feutré...)</li>
+<li>Les <strong>décors seront des objets du quotidien</strong> et quelques découpage papier collés</li>
+<li>Je choisi et compte rester sur des <strong>ruleset &quot;miniature agnostic&quot;</strong> pour pouvoir garder et utiliser mes minis même dans 5+ ans sur différents jeux avec le meilleur effet</li>
+</ol>
+<blockquote>
+<p>La selection de minis et leurs peinture m'intéresse et pourra combler les moments &quot;attente d'une game&quot;. Mais pour accélérer je choisi un jeu nécessitant ≤10 minis par joueur - j'ai donc ~10 minis à peindre pour ma première partie solo.</p>
+</blockquote>
+<h2>Le choix du ruleset et du matos</h2>
+<h3>Le ruleset</h3>
+<h4>Stargrave PDF</h4>
+<p>Avec l'extension <strong>Dead or Alive</strong> pour découvrir le solo puis ensuite <strong>Hope Eternal</strong> pour une campagne plus élaborée en solo/duo</p>
+<ul>
+<li><strong>Specs</strong> : Surface de 3'x3' (91x91cm) - 10 minis par joueur - 1d20 par joueur</li>
+</ul>
+<p>Je n'ai pas pu trouver de système plus minimaliste qui garde un vrai gameplay solo/coop contre IA, la plupart des autres demandent de jouer les adversaires en choisissant le &quot;worst case scenario&quot; pour nous
+De plus Stargrave est un système qui à fait ses preuves au vu des dires et la lecture du ruleset en amont en vaux bien la chandelle, j'aurais tout le temps de le lire et relire entre deux sessions peinture</p>
+<h3>Les minis</h3>
+<p>Je pars sur un pack à prix intéressant pour 30 minis qui ont une bonne gueule et assez passe-partout pour les univers sci-fi ou même contemporain</p>
+<ul>
+<li><strong>Rampart : City Defenders Miniature Pack</strong> - 56€ (socles inclus)
+Avec un pack de 11 flacons de peintures <strong>Army Painter - Warpaints Fanatic Starter Set</strong> et le pinceau fourni, une <strong>palette à peinture</strong>, de la <strong>colle plastique</strong> (marque citadel)</li>
+</ul>
+<h3>Les standees</h3>
+<ul>
+<li>? J'éditerais quand j'aurais trouvé ?</li>
+</ul>
+<h2>Final Words</h2>
+<p>Si faire de la peinture vous hérisse le poil, il est toujours possible d'utiliser des standees papier pour les joueurs aussi. J'éviterais d'aller jusqu'à des jetons plats illustrés en guise de minis à cause des règles de couverture.</p>
+<blockquote>
+<p>Et si jamais vous avez une âme créatrice et anglophone, je vous recommande de voir <a href="https://onepagefan.wiki/index.php/Archived_Games#WarStuff">WarStuff</a>, qui est un wargame en une page pour du 1v1 où je pense qu'il est possible de transférer les règles solo de Stargrave Dead or Alive... (Pensez à aller voir la version 1.7 aussi avec ses unités préconstruite), je considère faire cette adaptation si j'ai vraiment trop de temps mais rien n'est moins sûr...</p>
+</blockquote>
+
+    </article>
+
+<footer class="page-footer">
+        <small>- unakt</small>
+    </footer>
+</body>
+</html>

+ 107 - 0
_site/posts/Creation log/index.html

@@ -0,0 +1,107 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Creation log of this place (eng)</title>
+    <link rel="stylesheet" href="/bundle.css">
+</head>
+<body>
+    <header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>
+
+    <article>
+    <h1>Creation log of this place (eng)</h1>
+    <p>I'm neither extra proficient in English nor in coding and worst of all i have no knowledge of Javascript but this is a memo of things that didn't seems obvious to me to get this Eleventy.js blog place working at the ultimate barebone form.</p>
+<p>In the <strong>.eleventy.js</strong> file :</p>
+<pre><code class="language-js">module.exports = function(eleventyConfig) {
+
+// add my css file from the root folder 
+eleventyConfig.addPassthroughCopy(&quot;bundle.css&quot;);
+// This line was to make sure my post.md weren't processed as Liquid, permitting this post here
+eleventyConfig.setTemplateFormats([&quot;md&quot;, &quot;njk&quot;, &quot;html&quot;]);
+
+return {
+	// Ok idk this prevent markdown from being processed?
+	markdownTemplateEngine: false,
+	dir: {
+		input: &quot;./&quot;,
+		output: &quot;_site&quot;,
+		layouts: &quot;layouts&quot;,
+		includes: &quot;includes&quot;
+		}
+	};
+};
+</code></pre>
+<p>The <code>async</code> showed in the doc is unnecessary (is it?), and the return part should be at the end of the function.</p>
+<p>For the layout of a blog list in Nunjucks (file named &quot;home.njk&quot;):</p>
+<pre><code class="language-js">---
+    pagination:
+        data: collections.post
+        size: 3
+        reverse: true
+---
+// [[PUT YOUR HTML HEADER HERE]]
+// A Navbar from my includes folder providing links to single pages
+{% include 'topbar.html' %}
+// I put a welcome message in this index
+{{ content | safe }}
+&lt;main&gt;
+&lt;ul&gt;
+	// listing 3 blog posts, both title and whole content
+	{% for post in pagination.items %}
+		&lt;li&gt;&lt;h3&gt;{{ post.data.title | safe }}&lt;/h3&gt;&lt;/li&gt;
+		{{ post.content | safe }}
+	{% endfor %}
+&lt;/ul&gt;
+
+// Links to show back 3 older posts or 3 more recent
+&lt;p&gt;{% if page.url != pagination.href.last %}&lt;a href=&quot;{{ pagination.href.next }}&quot;&gt;Prev Page&lt;/a&gt;{% endif %} ---
+
+{% if page.url != pagination.href.first %}&lt;a href=&quot;{{ pagination.href.previous }}&quot;&gt;Next Page&lt;/a&gt;{% endif %}&lt;/p&gt;
+&lt;/main&gt;
+</code></pre>
+<p>The <code>data: collections.post</code> will take all files tagged with &quot;post&quot;. And then they will be listed 3 by 3 in reverse order on the blog part (the for loop).</p>
+<p>Be aware that if you plan on switching from Liquid to Nunjucks by renaming your file because they seems identical, there actually are minor differences :
+<code>{% for post in pagination.items reversed %}</code>
+Should become :
+<code>{% for post in pagination.items | reverse %}</code>
+And if your ever simply rename like me, be aware that Eleventy will tell you an incorrect error line number, missing as many lines as you have metadata lines on top on your file.</p>
+<blockquote>
+<p>Little anecdote: This was especially aggravating when i renamed since it told my <strong>for loop</strong> wasn't closed exactly where i had <strong>another for loop</strong> that was perfectly correct...</p>
+</blockquote>
+<p>The said index page that use home.njk to show the post list, along with the &quot; content&quot; part with the welcome message :</p>
+<pre><code class="language-md">---
+layout: home.njk
+title: unakt - hi
+---
+&gt; Hi, I'm unakt - a living mess from France doing his best to sort things up.
+</code></pre>
+<p>And here is how the most basic post1.md should look like:</p>
+<pre><code class="language-md">---
+tags: post
+title: The title of the post
+---
+Lorem Ipsum
+sit dolor amen
+</code></pre>
+<p>And this is the most basic barebone elements needed for a blog...
+Now there's more things to look at, like the reverse order thing being a little janky at times, but in the grand scheme of things, this let me make some text based post,</p>
+<p>as this one ;)</p>
+
+    </article>
+
+<footer class="page-footer">
+        <small>- unakt</small>
+    </footer>
+</body>
+</html>

+ 1 - 0
_site/posts/post1/index.html

@@ -0,0 +1 @@
+<p>This is where the hot takes happen</p>

+ 1 - 0
_site/posts/post2 copy/index.html

@@ -0,0 +1 @@
+<p>And again</p>

+ 1 - 0
_site/posts/post2/index.html

@@ -0,0 +1 @@
+<p>Yeah maybe i'd be able to be considerate from time to time</p>

+ 32 - 0
_site/posts/post4s/index.html

@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>4th - I don&#39;t know why it doesn&#39;t list all poasts</title>
+    <link rel="stylesheet" href="/bundle.css">
+</head>
+<body>
+    <header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>
+
+    <article>
+    <h1>4th - I don't know why it doesn't list all poasts</h1>
+    <p>Yeah, why the first post is ignored?</p>
+
+    </article>
+
+<footer class="page-footer">
+        <small>- unakt</small>
+    </footer>
+</body>
+</html>

+ 31 - 0
_site/templates/post/index.html

@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title></title>
+    <link rel="stylesheet" href="/bundle.css">
+</head>
+<body>
+    <header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>
+
+    <article>
+    <h1></h1>
+    
+    </article>
+
+<footer class="page-footer">
+        <small>- unakt</small>
+    </footer>
+</body>
+</html>

+ 20 - 0
about.md

@@ -0,0 +1,20 @@
+---
+layout: page.njk
+title: Hi you
+---
+# Why is there even a website here?
+I don't know, i felt like it.
+
+Loneliness will make you do weird things...
+
+Now if you ever wonder who am i, i'm volt/unakt,
+a french guy reaching his forties while still on disability 
+and exploring the little spaces he can venture to.
+
+I'm usually watching Twitch on the side
+while either videogaming, boardgaming, reading or writing...
+Also a lover of music, all of it.
+
+Now i'm trying to reach whoever who will end here 💡
+
+My Bluesky is here : [unakt.cc](https://bsky.app/profile/unakt.cc)

+ 119 - 0
bundle.css

@@ -0,0 +1,119 @@
+/* Doing CSS like the early 2000 */
+
+body {
+    font-family: Verdana, Tahoma, sans-serif;
+    background-color: #F6F6F6;
+    max-width: 800px;
+    margin: auto;
+}
+
+main {
+    border : 5px solid black;
+    border-radius: 10px;
+}
+
+main p.pagination {
+    text-align: center;
+}
+
+main p.pagination a {
+    text-transform: uppercase;
+    color: #111122;
+    text-decoration: none;
+}
+
+.page-header {
+    border: 5px solid black;
+    border-radius: 10px;
+
+}
+
+.headerlogo {
+    float: left;
+}
+
+nav {
+    padding: 5px 50px;
+    background-color: #0C5678;
+}
+
+nav a {
+    color: aliceblue;
+    background-color: #0C5678;
+    padding: 5px 10px;
+    border-width: 5px;
+    border-color: black;
+}
+
+nav a:hover {
+    background-color: #2f647c;
+}
+
+ul.postlist {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+    text-align: center;
+}
+
+.postlist a {
+    color: #111122;
+}
+
+.postlist a:hover {
+    text-decoration: underline;
+    color: #5A5A5A;
+}
+
+.postlist a:visited {
+    color: #635A5A;
+}
+
+.postlist a:visited:hover {
+    color: #857c7c;
+}
+
+blockquote {
+    font-size: 0.8em;
+    background-color: rgb(224, 224, 224);
+    padding: 1px 10px;
+    border-left: 4px solid black;
+}
+
+#tag {
+    background-color: rgb(224, 224, 224);
+    margin: 10px 0px;
+    padding: 2px 10px;
+    border-left: 4px solid black;
+}
+
+#tag p {
+    margin: 5px;
+    font-style: italic;
+}
+
+@keyframes hacking {
+    0%  {visibility: visible;}
+    50%  {visibility: hidden;}
+    100%  {visibility: hidden;}
+}
+
+h1::after {
+    content: " _";
+    animation-name: hacking;
+    animation-duration: 1s;
+    animation-delay: 2s;
+    animation-iteration-count: infinite;
+}
+
+pre {
+    background-color: gainsboro;
+}
+
+code {
+    background-color: gainsboro;
+}
+
+.page-footer {
+    float: right;
+}

+ 29 - 0
eleventy.config.js

@@ -0,0 +1,29 @@
+module.exports = function(eleventyConfig) {
+
+// add my css file from the root folder 
+eleventyConfig.addPassthroughCopy("bundle.css");
+eleventyConfig.addPassthroughCopy("img");
+// This line was to make sure my post.md weren't processed as Liquid, permitting this post here
+eleventyConfig.setTemplateFormats(["md", "njk", "html"]);
+eleventyConfig.addGlobalData("site.author", "unakt");
+// Double with the .eleventyignore file, but just in case
+eleventyConfig.ignores.add("/_drafts/**");
+eleventyConfig.ignores.add("/README.md");
+
+eleventyConfig.addLayoutAlias("post", "post.njk");
+
+eleventyConfig.addCollection("postlist", function(collectionApi) {
+    return collectionApi.getFilteredByGlob("./posts/*.md");
+  });
+
+return {
+	// Ok idk this prevent markdown from being processed?
+	markdownTemplateEngine: false,
+	dir: {
+		input: "./",
+		output: "_site",
+		layouts: "layouts",
+		includes: "includes"
+		}
+	};
+};

BIN
img/astounddS.png


+ 0 - 0
includes/backlinks.html


+ 4 - 0
includes/head.html

@@ -0,0 +1,4 @@
+<meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>{{ title }}</title>
+    <link rel="stylesheet" href="/bundle.css">

+ 11 - 0
includes/topbar.html

@@ -0,0 +1,11 @@
+<header class="page-header">
+    <a href="/" class="headerlogo" title="Go home">
+        <img src="/img/astounddS.png" alt="huh" width="28">
+    </a>
+
+    <nav>
+        <a href="/">Home</a>
+        <a href="/about">About Me</a>
+        <a href="/notes">Notes</a>
+    </nav>
+</header>

+ 5 - 0
index.md

@@ -0,0 +1,5 @@
+---
+layout: default.njk
+title: unakt - hi
+---
+Hi, I'm unakt - a living mess from France doing his best to sort things up.

+ 52 - 0
layouts/default.njk

@@ -0,0 +1,52 @@
+---
+    pagination:
+        data: collections.postlist
+        size: 12
+        alias: postsHome
+        reverse: true
+---
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    {% include 'head.html' %}
+</head>
+<body>
+    {% include 'topbar.html' %}
+    <div id="tag">
+        {{ content | safe }}
+    </div>
+    <main>
+        <ul class="postlist">
+            {% for post in postsHome %}
+                <li><h3><a href="{{ post.url }}">{{ post.data.title | safe }}</a></h3></li>
+            {% endfor %}
+        </ul>
+        <p class="pagination">
+            {% if page.url != pagination.href.last %}
+            <a href="{{ pagination.href.next }}">Prev Page</a>{% endif %} -
+            {% if page.url != pagination.href.first %}
+            <a href="{{ pagination.href.previous }}">Next Page</a>{% endif %}
+        </p>
+<!--
+<p>Debug Info:</p>
+<ul>
+  <li>Current Page: {{ pagination.pageNumber }}</li>
+  <li>Next Link: {{ pagination.href.next }}</li>
+  <li>Previous Link: {{ pagination.href.previous }}</li>
+  <li>Total Pages: {{ pagination.pages.length }}</li>
+</ul>
+<h3>Total posts found in collection: {{ collections.postlist.length }}</h3>
+<ul>
+{% for p in collections.postlist %}
+  <li>{{ p.inputPath }}</li>
+{% endfor %}
+</ul>
+-->
+    </main>
+    
+    <footer class="page-footer">
+        <small>- {{ site.author }}</small>
+    </footer>
+</body>
+</html>

+ 7 - 0
layouts/note.njk

@@ -0,0 +1,7 @@
+---
+layout: default.njk
+---
+<article>
+    {{ content | safe }}
+</article>
+{% include 'backlinks.html' %}

+ 17 - 0
layouts/page.njk

@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    {% include 'head.html' %}
+</head>
+<body>
+    {% include 'topbar.html' %}
+
+    <article>
+    {{ content | safe }}
+    </article>
+
+<footer class="page-footer">
+        <small>- {{ site.author }}</small>
+    </footer>
+</body>
+</html>

+ 18 - 0
layouts/post.njk

@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    {% include 'head.html' %}
+</head>
+<body>
+    {% include 'topbar.html' %}
+
+    <article>
+    <h1>{{ title | safe }}</h1>
+    {{ content | safe }}
+    </article>
+
+<footer class="page-footer">
+        <small>- {{ site.author }}</small>
+    </footer>
+</body>
+</html>

+ 7 - 0
notes.md

@@ -0,0 +1,7 @@
+---
+layout: page.njk
+title: unakt - notes
+---
+
+# WIP
+This place is still very much WIP, i expect to put some infos that i find worth keeping here

+ 1580 - 0
package-lock.json

@@ -0,0 +1,1580 @@
+{
+  "name": "e11y",
+  "version": "1.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "e11y",
+      "version": "1.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "@11ty/eleventy": "^3.1.2"
+      }
+    },
+    "node_modules/@11ty/dependency-tree": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-4.0.1.tgz",
+      "integrity": "sha512-6EPI9ZkGU4BX2KNZpWlf4WdV3vrmIWQpn//nAXicTzdPubI3jZlmFdqEv0Yj5M7oavRUGNzw9GbV9cBxhulZWw==",
+      "license": "MIT",
+      "dependencies": {
+        "@11ty/eleventy-utils": "^2.0.1"
+      }
+    },
+    "node_modules/@11ty/dependency-tree-esm": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@11ty/dependency-tree-esm/-/dependency-tree-esm-2.0.3.tgz",
+      "integrity": "sha512-zlcfZq5WC9ksnLeLBROshNeE9P1jvOAPvUY9787cND/7SKf+QM7RGjNyF5taoCQww12B6Dx0Y9cwXsNbRipzlA==",
+      "license": "MIT",
+      "dependencies": {
+        "@11ty/eleventy-utils": "^2.0.7",
+        "acorn": "^8.15.0",
+        "dependency-graph": "^1.0.0",
+        "normalize-path": "^3.0.0"
+      }
+    },
+    "node_modules/@11ty/eleventy": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-3.1.2.tgz",
+      "integrity": "sha512-IcsDlbXnBf8cHzbM1YBv3JcTyLB35EK88QexmVyFdVJVgUU6bh9g687rpxryJirHzo06PuwnYaEEdVZQfIgRGg==",
+      "license": "MIT",
+      "dependencies": {
+        "@11ty/dependency-tree": "^4.0.0",
+        "@11ty/dependency-tree-esm": "^2.0.0",
+        "@11ty/eleventy-dev-server": "^2.0.8",
+        "@11ty/eleventy-plugin-bundle": "^3.0.6",
+        "@11ty/eleventy-utils": "^2.0.7",
+        "@11ty/lodash-custom": "^4.17.21",
+        "@11ty/posthtml-urls": "^1.0.1",
+        "@11ty/recursive-copy": "^4.0.2",
+        "@sindresorhus/slugify": "^2.2.1",
+        "bcp-47-normalize": "^2.3.0",
+        "chokidar": "^3.6.0",
+        "debug": "^4.4.1",
+        "dependency-graph": "^1.0.0",
+        "entities": "^6.0.1",
+        "filesize": "^10.1.6",
+        "gray-matter": "^4.0.3",
+        "iso-639-1": "^3.1.5",
+        "js-yaml": "^4.1.0",
+        "kleur": "^4.1.5",
+        "liquidjs": "^10.21.1",
+        "luxon": "^3.6.1",
+        "markdown-it": "^14.1.0",
+        "minimist": "^1.2.8",
+        "moo": "^0.5.2",
+        "node-retrieve-globals": "^6.0.1",
+        "nunjucks": "^3.2.4",
+        "picomatch": "^4.0.2",
+        "please-upgrade-node": "^3.2.0",
+        "posthtml": "^0.16.6",
+        "posthtml-match-helper": "^2.0.3",
+        "semver": "^7.7.2",
+        "slugify": "^1.6.6",
+        "tinyglobby": "^0.2.14"
+      },
+      "bin": {
+        "eleventy": "cmd.cjs"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/11ty"
+      }
+    },
+    "node_modules/@11ty/eleventy-dev-server": {
+      "version": "2.0.8",
+      "resolved": "https://registry.npmjs.org/@11ty/eleventy-dev-server/-/eleventy-dev-server-2.0.8.tgz",
+      "integrity": "sha512-15oC5M1DQlCaOMUq4limKRYmWiGecDaGwryr7fTE/oM9Ix8siqMvWi+I8VjsfrGr+iViDvWcH/TVI6D12d93mA==",
+      "license": "MIT",
+      "dependencies": {
+        "@11ty/eleventy-utils": "^2.0.1",
+        "chokidar": "^3.6.0",
+        "debug": "^4.4.0",
+        "finalhandler": "^1.3.1",
+        "mime": "^3.0.0",
+        "minimist": "^1.2.8",
+        "morphdom": "^2.7.4",
+        "please-upgrade-node": "^3.2.0",
+        "send": "^1.1.0",
+        "ssri": "^11.0.0",
+        "urlpattern-polyfill": "^10.0.0",
+        "ws": "^8.18.1"
+      },
+      "bin": {
+        "eleventy-dev-server": "cmd.js"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/11ty"
+      }
+    },
+    "node_modules/@11ty/eleventy-plugin-bundle": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-bundle/-/eleventy-plugin-bundle-3.0.7.tgz",
+      "integrity": "sha512-QK1tRFBhQdZASnYU8GMzpTdsMMFLVAkuU0gVVILqNyp09xJJZb81kAS3AFrNrwBCsgLxTdWHJ8N64+OTTsoKkA==",
+      "license": "MIT",
+      "dependencies": {
+        "@11ty/eleventy-utils": "^2.0.2",
+        "debug": "^4.4.0",
+        "posthtml-match-helper": "^2.0.3"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/11ty"
+      }
+    },
+    "node_modules/@11ty/eleventy-utils": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-2.0.7.tgz",
+      "integrity": "sha512-6QE+duqSQ0GY9rENXYb4iPR4AYGdrFpqnmi59tFp9VrleOl0QSh8VlBr2yd6dlhkdtj7904poZW5PvGr9cMiJQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/11ty"
+      }
+    },
+    "node_modules/@11ty/lodash-custom": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/@11ty/lodash-custom/-/lodash-custom-4.17.21.tgz",
+      "integrity": "sha512-Mqt6im1xpb1Ykn3nbcCovWXK3ggywRJa+IXIdoz4wIIK+cvozADH63lexcuPpGS/gJ6/m2JxyyXDyupkMr5DHw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/11ty"
+      }
+    },
+    "node_modules/@11ty/posthtml-urls": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@11ty/posthtml-urls/-/posthtml-urls-1.0.2.tgz",
+      "integrity": "sha512-0vaV3Wt0surZ+oS1VdKKe0axeeupuM+l7W/Z866WFQwF+dGg2Tc/nmhk/5l74/Y55P8KyImnLN9CdygNw2huHg==",
+      "license": "MIT",
+      "dependencies": {
+        "evaluate-value": "^2.0.0",
+        "http-equiv-refresh": "^2.0.1",
+        "list-to-array": "^1.1.0",
+        "parse-srcset": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/@11ty/recursive-copy": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/@11ty/recursive-copy/-/recursive-copy-4.0.3.tgz",
+      "integrity": "sha512-SX48BTLEGX8T/OsKWORsHAAeiDsbFl79Oa/0Wg/mv/d27b7trCVZs7fMHvpSgDvZz/fZqx5rDk8+nx5oyT7xBw==",
+      "license": "ISC",
+      "dependencies": {
+        "errno": "^1.0.0",
+        "junk": "^3.1.0",
+        "maximatch": "^0.1.0",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@sindresorhus/slugify": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz",
+      "integrity": "sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==",
+      "license": "MIT",
+      "dependencies": {
+        "@sindresorhus/transliterate": "^1.0.0",
+        "escape-string-regexp": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@sindresorhus/transliterate": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.6.0.tgz",
+      "integrity": "sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==",
+      "license": "MIT",
+      "dependencies": {
+        "escape-string-regexp": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/a-sync-waterfall": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz",
+      "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==",
+      "license": "MIT"
+    },
+    "node_modules/acorn": {
+      "version": "8.15.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+      "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-walk": {
+      "version": "8.3.4",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
+      "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
+      "license": "MIT",
+      "dependencies": {
+        "acorn": "^8.11.0"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "license": "ISC",
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/anymatch/node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "license": "Python-2.0"
+    },
+    "node_modules/array-differ": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
+      "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-union": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+      "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
+      "license": "MIT",
+      "dependencies": {
+        "array-uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-uniq": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+      "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/arrify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+      "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/asap": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+      "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
+      "license": "MIT"
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "license": "MIT"
+    },
+    "node_modules/bcp-47": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.0.tgz",
+      "integrity": "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==",
+      "license": "MIT",
+      "dependencies": {
+        "is-alphabetical": "^2.0.0",
+        "is-alphanumerical": "^2.0.0",
+        "is-decimal": "^2.0.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/bcp-47-match": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz",
+      "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==",
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/bcp-47-normalize": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/bcp-47-normalize/-/bcp-47-normalize-2.3.0.tgz",
+      "integrity": "sha512-8I/wfzqQvttUFz7HVJgIZ7+dj3vUaIyIxYXaTRP1YWoSDfzt6TUmxaKZeuXR62qBmYr+nvuWINFRl6pZ5DlN4Q==",
+      "license": "MIT",
+      "dependencies": {
+        "bcp-47": "^2.0.0",
+        "bcp-47-match": "^2.0.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/binary-extensions": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+      "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.12",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+      "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+      "license": "MIT",
+      "dependencies": {
+        "fill-range": "^7.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/chokidar": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+      "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/commander": {
+      "version": "10.0.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
+      "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "license": "MIT"
+    },
+    "node_modules/debug": {
+      "version": "4.4.3",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+      "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "^2.1.3"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/depd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/dependency-graph": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz",
+      "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/dom-serializer": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+      "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+      "license": "MIT",
+      "dependencies": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.2.0",
+        "entities": "^2.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+      }
+    },
+    "node_modules/dom-serializer/node_modules/entities": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+      "license": "BSD-2-Clause",
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/domelementtype": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/domhandler": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+      "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "domelementtype": "^2.2.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domhandler?sponsor=1"
+      }
+    },
+    "node_modules/domutils": {
+      "version": "2.8.0",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "dom-serializer": "^1.0.1",
+        "domelementtype": "^2.2.0",
+        "domhandler": "^4.2.0"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domutils?sponsor=1"
+      }
+    },
+    "node_modules/ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+      "license": "MIT"
+    },
+    "node_modules/encodeurl": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+      "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/entities": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+      "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=0.12"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/errno": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/errno/-/errno-1.0.0.tgz",
+      "integrity": "sha512-3zV5mFS1E8/1bPxt/B0xxzI1snsg3uSCIh6Zo1qKg6iMw93hzPANk9oBFzSFBFrwuVoQuE3rLoouAUfwOAj1wQ==",
+      "license": "MIT",
+      "dependencies": {
+        "prr": "~1.0.1"
+      },
+      "bin": {
+        "errno": "cli.js"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+      "license": "MIT"
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+      "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/esm-import-transformer": {
+      "version": "3.0.5",
+      "resolved": "https://registry.npmjs.org/esm-import-transformer/-/esm-import-transformer-3.0.5.tgz",
+      "integrity": "sha512-1GKLvfuMnnpI75l8c6sHoz0L3Z872xL5akGuBudgqTDPv4Vy6f2Ec7jEMKTxlqWl/3kSvNbHELeimJtnqgYniw==",
+      "license": "MIT",
+      "dependencies": {
+        "acorn": "^8.15.0"
+      }
+    },
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "license": "BSD-2-Clause",
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/evaluate-value": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/evaluate-value/-/evaluate-value-2.0.0.tgz",
+      "integrity": "sha512-VonfiuDJc0z4sOO7W0Pd130VLsXN6vmBWZlrog1mCb/o7o/Nl5Lr25+Kj/nkCCAhG+zqeeGjxhkK9oHpkgTHhQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+      "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fdir": {
+      "version": "6.5.0",
+      "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+      "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "peerDependencies": {
+        "picomatch": "^3 || ^4"
+      },
+      "peerDependenciesMeta": {
+        "picomatch": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/filesize": {
+      "version": "10.1.6",
+      "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz",
+      "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">= 10.4.0"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+      "license": "MIT",
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/finalhandler": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz",
+      "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~2.0.0",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.4.1",
+        "parseurl": "~1.3.3",
+        "statuses": "~2.0.2",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/finalhandler/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/finalhandler/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+      "license": "MIT"
+    },
+    "node_modules/fresh": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
+      "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "hasInstallScript": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/gray-matter": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
+      "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
+      "license": "MIT",
+      "dependencies": {
+        "js-yaml": "^3.13.1",
+        "kind-of": "^6.0.2",
+        "section-matter": "^1.0.0",
+        "strip-bom-string": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/gray-matter/node_modules/argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "license": "MIT",
+      "dependencies": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "node_modules/gray-matter/node_modules/js-yaml": {
+      "version": "3.14.2",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+      "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
+      "license": "MIT",
+      "dependencies": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/htmlparser2": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
+      "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
+      "funding": [
+        "https://github.com/fb55/htmlparser2?sponsor=1",
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.2.2",
+        "domutils": "^2.8.0",
+        "entities": "^3.0.1"
+      }
+    },
+    "node_modules/htmlparser2/node_modules/entities": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
+      "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=0.12"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/http-equiv-refresh": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/http-equiv-refresh/-/http-equiv-refresh-2.0.1.tgz",
+      "integrity": "sha512-XJpDL/MLkV3dKwLzHwr2dY05dYNfBNlyPu4STQ8WvKCFdc6vC5tPXuq28of663+gHVg03C+16pHHs/+FmmDjcw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/http-errors": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+      "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
+      "license": "MIT",
+      "dependencies": {
+        "depd": "~2.0.0",
+        "inherits": "~2.0.4",
+        "setprototypeof": "~1.2.0",
+        "statuses": "~2.0.2",
+        "toidentifier": "~1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/express"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "license": "ISC"
+    },
+    "node_modules/is-alphabetical": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
+      "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/is-alphanumerical": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
+      "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
+      "license": "MIT",
+      "dependencies": {
+        "is-alphabetical": "^2.0.0",
+        "is-decimal": "^2.0.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "license": "MIT",
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-decimal": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
+      "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/is-extendable": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+      "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "license": "MIT",
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-json": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz",
+      "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==",
+      "license": "ISC"
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/iso-639-1": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/iso-639-1/-/iso-639-1-3.1.5.tgz",
+      "integrity": "sha512-gXkz5+KN7HrG0Q5UGqSMO2qB9AsbEeyLP54kF1YrMsIxmu+g4BdB7rflReZTSTZGpfj8wywu6pfPBCylPIzGQA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/js-yaml": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+      "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+      "license": "MIT",
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/junk": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz",
+      "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/kleur": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+      "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/linkify-it": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
+      "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
+      "license": "MIT",
+      "dependencies": {
+        "uc.micro": "^2.0.0"
+      }
+    },
+    "node_modules/liquidjs": {
+      "version": "10.24.0",
+      "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.24.0.tgz",
+      "integrity": "sha512-TAUNAdgwaAXjjcUFuYVJm9kOVH7zc0mTKxsG9t9Lu4qdWjB2BEblyVIYpjWcmJLMGgiYqnGNJjpNMHx0gp/46A==",
+      "license": "MIT",
+      "dependencies": {
+        "commander": "^10.0.0"
+      },
+      "bin": {
+        "liquid": "bin/liquid.js",
+        "liquidjs": "bin/liquid.js"
+      },
+      "engines": {
+        "node": ">=16"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/liquidjs"
+      }
+    },
+    "node_modules/list-to-array": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/list-to-array/-/list-to-array-1.1.0.tgz",
+      "integrity": "sha512-+dAZZ2mM+/m+vY9ezfoueVvrgnHIGi5FvgSymbIgJOFwiznWyA59mav95L+Mc6xPtL3s9gm5eNTlNtxJLbNM1g==",
+      "license": "MIT"
+    },
+    "node_modules/luxon": {
+      "version": "3.7.2",
+      "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz",
+      "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/markdown-it": {
+      "version": "14.1.0",
+      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
+      "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
+      "license": "MIT",
+      "dependencies": {
+        "argparse": "^2.0.1",
+        "entities": "^4.4.0",
+        "linkify-it": "^5.0.0",
+        "mdurl": "^2.0.0",
+        "punycode.js": "^2.3.1",
+        "uc.micro": "^2.1.0"
+      },
+      "bin": {
+        "markdown-it": "bin/markdown-it.mjs"
+      }
+    },
+    "node_modules/markdown-it/node_modules/entities": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+      "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=0.12"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/maximatch": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz",
+      "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==",
+      "license": "MIT",
+      "dependencies": {
+        "array-differ": "^1.0.0",
+        "array-union": "^1.0.1",
+        "arrify": "^1.0.0",
+        "minimatch": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/mdurl": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
+      "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
+      "license": "MIT"
+    },
+    "node_modules/mime": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+      "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+      "license": "MIT",
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.54.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+      "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
+      "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
+      "license": "MIT",
+      "dependencies": {
+        "mime-db": "^1.54.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/express"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/minipass": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      }
+    },
+    "node_modules/moo": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz",
+      "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/morphdom": {
+      "version": "2.7.7",
+      "resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.7.7.tgz",
+      "integrity": "sha512-04GmsiBcalrSCNmzfo+UjU8tt3PhZJKzcOy+r1FlGA7/zri8wre3I1WkYN9PT3sIeIKfW9bpyElA+VzOg2E24g==",
+      "license": "MIT"
+    },
+    "node_modules/ms": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+      "license": "MIT"
+    },
+    "node_modules/node-retrieve-globals": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/node-retrieve-globals/-/node-retrieve-globals-6.0.1.tgz",
+      "integrity": "sha512-j0DeFuZ/Wg3VlklfbxUgZF/mdHMTEiEipBb3q0SpMMbHaV3AVfoUQF8UGxh1s/yjqO0TgRZd4Pi/x2yRqoQ4Eg==",
+      "license": "MIT",
+      "dependencies": {
+        "acorn": "^8.14.1",
+        "acorn-walk": "^8.3.4",
+        "esm-import-transformer": "^3.0.3"
+      }
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/nunjucks": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz",
+      "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "a-sync-waterfall": "^1.0.0",
+        "asap": "^2.0.3",
+        "commander": "^5.1.0"
+      },
+      "bin": {
+        "nunjucks-precompile": "bin/precompile"
+      },
+      "engines": {
+        "node": ">= 6.9.0"
+      },
+      "peerDependencies": {
+        "chokidar": "^3.3.0"
+      },
+      "peerDependenciesMeta": {
+        "chokidar": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/nunjucks/node_modules/commander": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
+      "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/on-finished": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+      "license": "MIT",
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/parse-srcset": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
+      "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==",
+      "license": "MIT"
+    },
+    "node_modules/parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/picomatch": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+      "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+      "license": "MIT",
+      "peer": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/please-upgrade-node": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
+      "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
+      "license": "MIT",
+      "dependencies": {
+        "semver-compare": "^1.0.0"
+      }
+    },
+    "node_modules/posthtml": {
+      "version": "0.16.7",
+      "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.7.tgz",
+      "integrity": "sha512-7Hc+IvlQ7hlaIfQFZnxlRl0jnpWq2qwibORBhQYIb0QbNtuicc5ZxvKkVT71HJ4Py1wSZ/3VR1r8LfkCtoCzhw==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "posthtml-parser": "^0.11.0",
+        "posthtml-render": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/posthtml-match-helper": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/posthtml-match-helper/-/posthtml-match-helper-2.0.3.tgz",
+      "integrity": "sha512-p9oJgTdMF2dyd7WE54QI1LvpBIkNkbSiiECKezNnDVYhGhD1AaOnAkw0Uh0y5TW+OHO8iBdSqnd8Wkpb6iUqmw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "posthtml": "^0.16.6"
+      }
+    },
+    "node_modules/posthtml-parser": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz",
+      "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==",
+      "license": "MIT",
+      "dependencies": {
+        "htmlparser2": "^7.1.1"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/posthtml-render": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz",
+      "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==",
+      "license": "MIT",
+      "dependencies": {
+        "is-json": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+      "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+      "license": "MIT"
+    },
+    "node_modules/punycode.js": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
+      "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "license": "MIT",
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/readdirp/node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/section-matter": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
+      "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
+      "license": "MIT",
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/semver": {
+      "version": "7.7.3",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+      "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/semver-compare": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+      "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
+      "license": "MIT"
+    },
+    "node_modules/send": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
+      "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^4.4.3",
+        "encodeurl": "^2.0.0",
+        "escape-html": "^1.0.3",
+        "etag": "^1.8.1",
+        "fresh": "^2.0.0",
+        "http-errors": "^2.0.1",
+        "mime-types": "^3.0.2",
+        "ms": "^2.1.3",
+        "on-finished": "^2.4.1",
+        "range-parser": "^1.2.1",
+        "statuses": "^2.0.2"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/express"
+      }
+    },
+    "node_modules/setprototypeof": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+      "license": "ISC"
+    },
+    "node_modules/slash": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/slugify": {
+      "version": "1.6.6",
+      "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz",
+      "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/ssri": {
+      "version": "11.0.0",
+      "resolved": "https://registry.npmjs.org/ssri/-/ssri-11.0.0.tgz",
+      "integrity": "sha512-aZpUoMN/Jj2MqA4vMCeiKGnc/8SuSyHbGSBdgFbZxP8OJGF/lFkIuElzPxsN0q8TQQ+prw3P4EDfB3TBHHgfXw==",
+      "license": "ISC",
+      "dependencies": {
+        "minipass": "^7.0.3"
+      },
+      "engines": {
+        "node": "^16.14.0 || >=18.0.0"
+      }
+    },
+    "node_modules/statuses": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+      "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/strip-bom-string": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+      "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/tinyglobby": {
+      "version": "0.2.15",
+      "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+      "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+      "license": "MIT",
+      "dependencies": {
+        "fdir": "^6.5.0",
+        "picomatch": "^4.0.3"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/SuperchupuDev"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/toidentifier": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/uc.micro": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
+      "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
+      "license": "MIT"
+    },
+    "node_modules/unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/urlpattern-polyfill": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz",
+      "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==",
+      "license": "MIT"
+    },
+    "node_modules/ws": {
+      "version": "8.18.3",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+      "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    }
+  }
+}

+ 19 - 0
package.json

@@ -0,0 +1,19 @@
+{
+  "name": "e11y",
+  "version": "1.0.0",
+  "description": "unakt blog",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1",
+    "build": "npx @11ty/eleventy",
+    "start": "npx @11ty/eleventy --serve",
+    "deploy": "robocopy _site \\Geofront\\web /MIR /R:3 /W:5"
+  },
+  "keywords": [],
+  "author": "volt",
+  "license": "ISC",
+  "type": "commonjs",
+  "dependencies": {
+    "@11ty/eleventy": "^3.1.2"
+  }
+}

+ 6 - 0
posts/001Hello.md

@@ -0,0 +1,6 @@
+---
+title: 001 hello ;)
+date: 2024-01-01
+layout: post
+---
+Just a Hello World :P

+ 92 - 0
posts/004Creation log.md

@@ -0,0 +1,92 @@
+---
+tags: post
+title: 004 Creation log of this place (eng)
+date: 2024-12-04
+layout: post
+---
+I'm neither extra proficient in English nor in coding and worst of all i have no knowledge of Javascript but this is a memo of things that didn't seems obvious to me to get this Eleventy.js blog place working at the ultimate barebone form.
+
+In the **.eleventy.js** file :
+``` js
+module.exports = function(eleventyConfig) {
+
+// add my css file from the root folder 
+eleventyConfig.addPassthroughCopy("bundle.css");
+// This line was to make sure my post.md weren't processed as Liquid, permitting this post here
+eleventyConfig.setTemplateFormats(["md", "njk", "html"]);
+
+return {
+	// Ok idk this prevent markdown from being processed?
+	markdownTemplateEngine: false,
+	dir: {
+		input: "./",
+		output: "_site",
+		layouts: "layouts",
+		includes: "includes"
+		}
+	};
+};
+```
+The ``async`` showed in the doc is unnecessary (is it?), and the return part should be at the end of the function.
+
+For the layout of a blog list in Nunjucks (file named "home.njk"):
+``` js
+---
+    pagination:
+        data: collections.post
+        size: 3
+        reverse: true
+---
+// [[PUT YOUR HTML HEADER HERE]]
+// A Navbar from my includes folder providing links to single pages
+{% include 'topbar.html' %}
+// I put a welcome message in this index
+{{ content | safe }}
+<main>
+<ul>
+	// listing 3 blog posts, both title and whole content
+	{% for post in pagination.items %}
+		<li><h3>{{ post.data.title | safe }}</h3></li>
+		{{ post.content | safe }}
+	{% endfor %}
+</ul>
+
+// Links to show back 3 older posts or 3 more recent
+<p>{% if page.url != pagination.href.last %}<a href="{{ pagination.href.next }}">Prev Page</a>{% endif %} ---
+
+{% if page.url != pagination.href.first %}<a href="{{ pagination.href.previous }}">Next Page</a>{% endif %}</p>
+</main>
+```
+The ``data: collections.post`` will take all files tagged with "post". And then they will be listed 3 by 3 in reverse order on the blog part (the for loop).
+
+Be aware that if you plan on switching from Liquid to Nunjucks by renaming your file because they seems identical, there actually are minor differences :
+``{% for post in pagination.items reversed %}``
+Should become :
+``{% for post in pagination.items | reverse %}``
+And if your ever simply rename like me, be aware that Eleventy will tell you an incorrect error line number, missing as many lines as you have metadata lines on top on your file.
+
+> Little anecdote: This was especially aggravating when i renamed since it told my **for loop** wasn't closed exactly where i had **another for loop** that was perfectly correct...
+
+The said index page that use home.njk to show the post list, along with the " content" part with the welcome message :
+``` md
+---
+layout: home.njk
+title: unakt - hi
+---
+> Hi, I'm unakt - a living mess from France doing his best to sort things up.
+```
+
+And here is how the most basic post1.md should look like:
+``` md
+---
+tags: post
+title: The title of the post
+---
+Lorem Ipsum
+sit dolor amen
+```
+
+And this is the most basic barebone elements needed for a blog...
+Now there's more things to look at, like the reverse order thing being a little janky at times, but in the grand scheme of things, this let me make some text based post,
+
+as this one ;)

+ 37 - 0
posts/005wargames.md

@@ -0,0 +1,37 @@
+---
+title: 005 Retour sur les wargame (fr)
+date: 2025-12-18
+layout: post
+---
+> Retour de l'immersion wargame du 14.09.24 qui n'a pratiquement aboutie à rien, hormis quelques 3d print, quelques peintures pas toutes finies et une seule game avec des standees avorté à mi-chemin, j'ai une grande envie de m'y remettre (j'ai beaucoup de temps libre cette fin décembre) mais sans me perdre dans l'infinité de possibilités offertes
+> - 18.12.25
+
+## Pour game rapidement
+#### Mon manifeste pour démarrer le wargame
+1. Je choisi les **univers sci-fi** comme point central de mes minis et rulesets
+2. Pour découvrir plus facilement sans avoir à se soucier des aspects compétitifs entre joueurs il faut que le ruleset soit jouable en **solo et coop**
+3. Seul les joueurs auront des minis en plastique, les **antagonistes seront des standees papier** imprimé (voir feutré...)
+4. Les **décors seront des objets du quotidien** et quelques découpage papier collés
+5. Je choisi et compte rester sur des **ruleset "miniature agnostic"** pour pouvoir garder et utiliser mes minis même dans 5+ ans sur différents jeux avec le meilleur effet
+
+> La selection de minis et leurs peinture m'intéresse et pourra combler les moments "attente d'une game". Mais pour accélérer je choisi un jeu nécessitant ≤10 minis par joueur - j'ai donc ~10 minis à peindre pour ma première partie solo.
+
+## Le choix du ruleset et du matos
+### Le ruleset
+#### Stargrave PDF 
+Avec l'extension **Dead or Alive** pour découvrir le solo puis ensuite **Hope Eternal** pour une campagne plus élaborée en solo/duo
+- **Specs** : Surface de 3'x3' (91x91cm) - 10 minis par joueur - 1d20 par joueur
+
+Je n'ai pas pu trouver de système plus minimaliste qui garde un vrai gameplay solo/coop contre IA, la plupart des autres demandent de jouer les adversaires en choisissant le "worst case scenario" pour nous
+De plus Stargrave est un système qui à fait ses preuves au vu des dires et la lecture du ruleset en amont en vaux bien la chandelle, j'aurais tout le temps de le lire et relire entre deux sessions peinture
+### Les minis
+Je pars sur un pack à prix intéressant pour 30 minis qui ont une bonne gueule et assez passe-partout pour les univers sci-fi ou même contemporain
+- **Rampart : City Defenders Miniature Pack** - 56€ (socles inclus)
+Avec un pack de 11 flacons de peintures **Army Painter - Warpaints Fanatic Starter Set** et le pinceau fourni, une **palette à peinture**, de la **colle plastique** (marque citadel)
+### Les standees
+- ? J'éditerais quand j'aurais trouvé ?
+
+## Final Words
+Si faire de la peinture vous hérisse le poil, il est toujours possible d'utiliser des standees papier pour les joueurs aussi. J'éviterais d'aller jusqu'à des jetons plats illustrés en guise de minis à cause des règles de couverture.
+
+> Et si jamais vous avez une âme créatrice et anglophone, je vous recommande de voir [WarStuff](https://onepagefan.wiki/index.php/Archived_Games#WarStuff), qui est un wargame en une page pour du 1v1 où je pense qu'il est possible de transférer les règles solo de Stargrave Dead or Alive... (Pensez à aller voir la version 1.7 aussi avec ses unités préconstruite), je considère faire cette adaptation si j'ai vraiment trop de temps mais rien n'est moins sûr...

+ 6 - 0
templates/posts.md.bak

@@ -0,0 +1,6 @@
+---
+tags: post
+title:
+date:
+layout: post.njk
+---