diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..707f625f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,12 @@ +node_modules/ +.git/ +.github/ +.next/ +.env +.DS_Store +*.md +scripts/ +equalsicon.png +equalsicon.psd +banner.png +content/ diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml deleted file mode 100644 index 7fb14488..00000000 --- a/.github/workflows/gh-pages.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: github pages - -on: - push: - branches: - - main # Set a branch that will trigger a deployment - pull_request: - -jobs: - deploy: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v3 - with: - submodules: true # Fetch Hugo themes (true OR recursive) - fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod - - - name: Setup Hugo - uses: peaceiris/actions-hugo@v2 - with: - hugo-version: '0.119.0' # Switch to latest after https://github.com/jpanther/congo/issues/689 - # extended: true - - - name: Build - run: DISCORD_WEBHOOK_URL=$DISCORD_WEBHOOK_URL hugo --minify - env: - DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }} - - - name: Deploy - uses: peaceiris/actions-gh-pages@v3 - if: github.ref == 'refs/heads/main' - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_branch: gh-pages - publish_dir: ./public diff --git a/.gitignore b/.gitignore index 4d0de7e2..6c67a413 100644 --- a/.gitignore +++ b/.gitignore @@ -7,8 +7,41 @@ public/ **/__pycache__ **/.DS_Store -__pycache__/ -*.py[cod] -pynecone.db -.web -.env \ No newline at end of file +# dependencies +**node_modules** +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index abda3d08..00000000 --- a/.gitmodules +++ /dev/null @@ -1,4 +0,0 @@ -[submodule "themes/congo"] - path = themes/congo - url = https://github.com/jpanther/congo.git - branch = dev diff --git a/.hugo_build.lock b/.hugo_build.lock deleted file mode 100644 index e69de29b..00000000 diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..8bd0e390 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,5 @@ + +# This is NOT the Next.js you know + +This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices. + diff --git a/Dockerfile b/Dockerfile index 9eeece8f..936b9ec5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,14 @@ -FROM hugomods/hugo:reg-go-git-0.119.0 -# https://github.com/jpanther/congo/issues/689 +FROM node:26-alpine -COPY . /src/ +WORKDIR /app -EXPOSE 1313 +COPY package*.json ./ +RUN npm ci -ENTRYPOINT [ "hugo", "server", "--bind=0.0.0.0"] \ No newline at end of file +COPY . . + +RUN npm run build + +EXPOSE 8501 + +CMD ["npm", "start", "--", "-p", "8501"] diff --git a/Dockerfile-streamlit b/Dockerfile-streamlit deleted file mode 100644 index 2968bbee..00000000 --- a/Dockerfile-streamlit +++ /dev/null @@ -1,13 +0,0 @@ -FROM python:3.10-bullseye - -WORKDIR /app - - -RUN pip install uv -RUN uv pip install --system streamlit - -EXPOSE 8501 - -COPY streamlit-app.py streamlit-app.py - -ENTRYPOINT [ "streamlit", "run", "streamlit-app.py", "--server.runOnSave=true"] \ No newline at end of file diff --git a/README.md b/README.md index 0c0cb8c4..778db117 100644 --- a/README.md +++ b/README.md @@ -14,80 +14,51 @@ Welcome to [https://stemformulas.com/](https://stemformulas.com/), the site with ## How to contribute: -There are two ways contribute formulas: suggestions and direct contributions: +There are two ways to contribute formulas: -1. Suggestions: fill out this Google Form with a formula that you would like to see added to the site: -https://forms.gle/EWjwFmiEQrrjsZEF9 +1. **Suggest on the site**: visit the [submit page](https://stemformulas.com/submit) to suggest a formula. -2. Direct contributions: create a pull request following the detailed instructions below. +2. **Direct contributions**: create a pull request following the instructions below. ## Running the site locally: -Setting up this repository locally only requires Git and Docker, and it's honestly very neat. Here's how to do it: -1. Install Git and clone this repository on your command line with the submodules flag: -``` -git clone --recurse-submodules https://github.com/stemformulas/stemformulas.github.io.git -``` +1. Install Node.js (v18+) and clone this repository: -2. Install the latest version of [Docker Desktop](https://www.docker.com/products/docker-desktop/) and run it. `docker info` should work on your command line when Docker is properly set up and running. - -3. Run the site and helper site with Docker in a terminal (in the root directory of this repository): ``` -docker compose up -d --build && docker compose watch +git clone https://github.com/stemformulas/stemformulas.github.io.git ``` -The first command runs the site, and the second monitors for file changes to sync them to the Docker container. You should be able to visit the site at `localhost:1313` in your browser, and changes to files in the `content` folder should be reflected on the site (e.g. open the about page and then modify content/about/_index.md). - -4. If you ran the docker compose command you should also have a Python applet I wrote up at `localhost:8501` in your browser. This is a GUI that helps you write the tedious parts of a formula's page. You can read more about it in the ChatGPT workflow section at the bottom of this README. - -5. If you want to test the submitting to Discord feature, crete a `.env` file in the root directory of the repository with DISCORD_WEBHOOK_URL= - -## Adding a formula -With the site running locally, you can now add a formula page to the site and preview how it'll look on the actual site. -Here are the steps for adding a formula (mostly git instructions): - -1. In another terminal, create a new branch for your changes: +2. Install dependencies: ``` -git checkout -b new-formula-name +npm install ``` -where `new-formula-name` is descriptive of the formula you're adding. - -2. Create a folder in `content/formulas/` with the name of your formula. For example, if you're adding the formula for the area of a circle, you would create a folder called `area-of-a-circle`. Inside this folder, create a file called `index.md` and copy the contents of `content/formulas/pythagorean-theorem/index.md` into it (any other index.md would be fine too, but this one shows how to use pictures). This file will contain the information about your formula. Change all the information until it's correct for your formula. - -3. Visit your formula's page in your browser (still localhost:1313) and proofread it. - -4. (Optional) On the localhost:1313/formulas page, zoom in and take a screenshot of the formula (with reasonable white padding and no black lines) and save it as `preview.png` in your formula's folder. This will be the preview image when the formula is linked on social media. You can look at any existing formulas folder for an example. Optionally, if you have Python installed, run `pip install Pillow` and `python normalize_preview_imgs.py` to size the preview image properly so it never gets cut off in the social media preview image. - -5. Push your changes to GitHub (replace `new-formula-name` with your own branch's name from step 1): +3. Run the dev server: ``` -git status -git add . -git commit -m "write a short message explaining what you added" -git push origin -u new-formula-name +npm run dev ``` -6. Create a [pull request](https://github.com/stemformulas/stemformulas.github.io/compare) from your branch to the main branch. We'll review it, give you feedback, and then eventually merge it. +Visit `http://localhost:8501`. Changes to formula files in `src/content/formulas/` are reflected immediately. + +4. To test the submit feature, create a `.env` file with `DISCORD_WEBHOOK_URL=`. -7. In the future, if you want to contribute again, switch to main and pull in changes so that you're up to date: +## Adding a formula +1. Create a new branch: ``` -git checkout main -git pull git checkout -b new-formula-name ``` -Then, repeat from step 1. +2. Create a file in `src/content/formulas/` named after your formula, e.g. `area-of-a-circle.mdx`. Copy the contents of an existing `.mdx` file (like `pythagorean-theorem.mdx`) as a template and update the frontmatter and body. + +3. Visit the formula at `http://localhost:8501/formulas/` and proofread it. -## ChatGPT workflow -I use ChatGPT and a custom Python GUI to help me write formula pages. Here's how it works: +4. (Optional) Take a screenshot of the formula card on the listing page, save as `preview.png` in `content/formulas//`. Run `python normalize_preview_imgs.py` to size it properly. -1. With the Docker setup running, visit `localhost:8501` in your browser. -2. Fill in the formula name, LaTeX, and two sources and click submit. A preview of the LaTeX will be shown, and the app will then make a text dump for you to copy and paste into ChatGPT, basically saying "format this new formula information the same way as this blurb". -3. Copy the reply from ChatGPT and paste it into the second tab of the Python GUI, which will fix some of the LaTeX formatting. This can usually now be put into an index.md file, with all of the grunt work done. Make sure to fully proofread what ChatGPT gives you, as it is crucial that formulas put on the site are correct. +5. Push and create a pull request. ## Possible future work - More formulas diff --git a/archetypes/default.md b/archetypes/default.md deleted file mode 100644 index 00e77bd7..00000000 --- a/archetypes/default.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "{{ replace .Name "-" " " | title }}" -date: {{ .Date }} -draft: true ---- - diff --git a/assets/css/custom.css b/assets/css/custom.css deleted file mode 100644 index ecf8c151..00000000 --- a/assets/css/custom.css +++ /dev/null @@ -1,341 +0,0 @@ -.sm\:items-start { - align-items: start; -} - -.pt-5 { - padding-top: 1.25rem; -} - -.pt-6 { - padding-top: 1.5rem; -} - -.pt-7 { - padding-top: 1.75rem; -} - -.pt-8 { - padding-top: 2rem; -} - -.ml-4 { - margin-left: 1rem; -} - -.mr-4 { - margin-right: 1rem; -} - -/* tags */ -ul, ol { - margin: 0; - margin-bottom: 0px; - padding: 0; - list-style-type: none; -} - -ul.image-tags li { - display: inline-block; - padding: 0; - margin: 0; -} - -ul.image-tags li a:hover, ul.image-tags li a.filtered, ul.image-tags li form { - background: #f7421b; - opacity: 1; - text-decoration: none; - border: none; -} - -ul.image-tags li a:link, ul.image-tags li a:visited, ul.image-tags li form { - display: inline-block; - padding: 3px 10px 5px; - margin: 0 5px 10px 0; - background: #2b2b33; - color: #fff; - -webkit-transition: 0.3s; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; -} - -/* tag opacity 1- 20, starting form opacity 0.4 to 1 */ - -.tag-opacity-0 { - opacity: 0.60; -} - -.tag-opacity-1 { - opacity: 0.70; -} - -.tag-opacity-2 { - opacity: 0.75; -} - -.tag-opacity-3 { - opacity: 0.78; -} - -.tag-opacity-4 { - opacity: 0.84; -} - -.tag-opacity-5 { - opacity: 0.85; -} - -.tag-opacity-6 { - opacity: 0.86; -} - -.tag-opacity-7 { - opacity: 0.87; -} - -.tag-opacity-8 { - opacity: 0.88; -} - -.tag-opacity-9 { - opacity: 0.89; -} - -.tag-opacity-10 { - opacity: 0.90; -} - -.tag-opacity-11 { - opacity: 0.91; -} - -.tag-opacity-12 { - opacity: 0.92; -} - -.tag-opacity-13 { - opacity: 0.93; -} - -.tag-opacity-14 { - opacity: 0.94; -} - -.tag-opacity-15 { - opacity: 0.95; -} - -.tag-opacity-16 { - opacity: 0.96; -} - -.tag-opacity-17 { - opacity: 0.97; -} - -.tag-opacity-18 { - opacity: 0.98; -} - -.tag-opacity-19{ - opacity: 0.99; -} - -.tag-opacity-20{ - opacity: 1; -} - -.animated { - animation: rotating 0.7s ease 0s 1 normal forwards; -} - -@keyframes rotating { -0% { - transform: rotate(0); -} - -100% { - transform: rotate(360deg); -} -} - -.focus\:bg-primary-100:focus { - --tw-bg-opacity: 1; - background-color: rgba(180, 180, 180, var(--tw-bg-opacity)); -} - -.katex-html { - font-size: 1.2em; - color: black; - position: relative; /* Added to create a positioning context for the tooltip */ -} - -.katex-html:hover::before { - content: "(" attr(my-data-tooltip, "Click to copy") ")"; /* The text content of the tooltip */ - position: absolute; /* Position the tooltip absolutely relative to its parent */ - top: 100%; /* Adjust the vertical position of the tooltip */ - left: 45%; /* Adjust the horizontal position of the tooltip */ - background-color: rgb(239, 239, 239); /* Tooltip background color */ - color: rgb(0, 0, 0); /* Tooltip text color */ - padding: 3px; /* Adjust the padding of the tooltip */ - font-size: 0.6em; /* Adjust the font size of the tooltip */ - /* change font */ - font-family: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji; - white-space: nowrap; /* Prevent the tooltip from wrapping to a new line */ -} - - -.katex-tooltip { - position: absolute; - top: 0; - left: 0; - padding: 5px 10px; - background-color: rgba(0, 0, 0, 0.8); - color: #ffffff; - font-size: 12px; - border-radius: 4px; - pointer-events: none; - transition: opacity 0.5s ease-in-out; -} - -.katex-tooltip.hide { - opacity: 0; -} - - -.katex-display katex { - padding-left: 0.5em !important; - text-align: left; -} - -.katex { - padding-left: 0em !important; -} - -.mt-8 { - margin-top: 2rem; -} - -.mt-4 { - margin-top: 1rem; -} - -.mt-2 { - margin-top: 0.5rem; -} - -.mt-1 { - margin-top: 0.25rem; -} - -.mt-0 { - margin-top: 0; -} - -.mt-16 { - margin-top: 4rem; -} - -.mt-20 { - margin-top: 5rem; -} - -.border-neutral-200 { - border-width: 1px; - border-color: rgba(180, 180, 180, var(--tw-bg-opacity)) -} - -.mb-8 { - margin-bottom: 2rem; -} - -.mb-10 { - margin-bottom: 2.5rem; -} - -.my-2 { - margin-top: 0.5rem; - margin-bottom: 0.5rem; -} - -.ml-1 { - margin-left: 0.15rem; -} - -.hover\:border-black:hover{ - --tw-border-opacity: 1; - border-color: rgba(100, 100, 100, var(--tw-bg-opacity)); -} - -.lg\:p-\[2vh\] { - padding: 2vh; -} - -img[alt=diagram] { - width: 400px; -} - -/* formulas page */ -.grid-container a { - border-width: 1px; - border-radius: 20px; - border-color: darkgray; - overflow: hidden; - padding: 10px; -} - -.grid-container { - display: grid; - grid-template-columns: auto; - gap: 15px; -} - -@media (min-width: 640px) { - .grid-container { - grid-template-columns: auto auto; - } -} - -@media (min-width: 1024px) { - .grid-container { - grid-template-columns: auto auto auto; - } -} - -/* just for main page `suggest` link */ -.text-center > p:nth-child(2) > a { - color: var(--tw-prose-links); - text-decoration: underline; - font-weight: 500; - text-decoration-color: rgba(var(--color-primary-300), 1); -} -.text-center > p:nth-child(2) > a:hover { - color: rgba(var(--color-neutral), 1); - text-decoration: none; - background-color: rgba(var(--color-primary-600), 1); - border-radius: 0.09rem; -} - -.p-20 { - padding: 20px; -} - -.rounded-md { - border-radius: 0.375rem; -} - - -.prose :where(ul):not(:where([class~="not-prose"] *)) { - list-style-type: disc; -} - -.p-12 { - padding: 3rem; -} - -.pt-20 { - padding-top: 5rem; -} - -.pb-8 { - padding-bottom: 2rem; -} \ No newline at end of file diff --git a/assets/js/formula-suggest.js b/assets/js/formula-suggest.js deleted file mode 100644 index d33e4963..00000000 --- a/assets/js/formula-suggest.js +++ /dev/null @@ -1,160 +0,0 @@ -function sanitizeInput(input) { - return DOMPurify.sanitize(input); - } - // Function to render the preview - function renderPreview() { - const title = sanitizeInput(document.getElementById('title').value); - const body = sanitizeInput(document.getElementById('body').value); - const latex = sanitizeInput(document.getElementById('latex').value); - const tags = sanitizeInput(document.getElementById('tags').value).split(',').map(tag => tag.trim()); - const parsedBody = marked.parse(body); - - const tagsHTML = tags - .map((tag) => { - return ` - - ${tag} - - `; - }) - .join(' '); // Join the tags with a space - - const previewContent = ` -
-
-

- ${title} -

-
- ${tagsHTML} -
-
- ${parsedBody} -
-
-
- `; - - document.getElementById('preview-content').innerHTML = previewContent; - document.getElementById('preview').classList.remove('hidden'); - - // Render LaTeX - if (typeof renderMathInElement !== 'undefined') { - renderMathInElement(document.getElementById('preview-content'), { - delimiters: [ - { left: '$$', right: '$$', display: true }, - { left: '\\(', right: '\\)', display: false } - ] - }); - } - } - - // Function to send data to Discord webhook - function submitToDiscord() { - const title = sanitizeInput(document.getElementById('title').value); - const description = sanitizeInput(document.getElementById('description').value); - const tags = sanitizeInput(document.getElementById('tags').value); - const latex = sanitizeInput(document.getElementById('latex').value); - const body = sanitizeInput(document.getElementById('body').value); - - const data = { - embeds: [ - { - title: "New stemformulas.com formula suggestion", - fields: [ - { - name: "Title", - value: title, - inline: true, - }, - { - name: "Description", - value: description, - inline: true, - }, - { - name: "Tags", - value: tags, - inline: true, - }, - { - name: "LaTeX", - value: `\`\`\`latex\n${latex}\n\`\`\``, - inline: false, - }, - { - name: "Body", - value: `\`\`\`markdown\n${body}\n\`\`\``, - inline: false, - }, - ], - color: 0x00ff00, // Green color for the embed - }, - ], - }; - - fetch(webhook_url, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(data), - }) - .then((response) => { - if (response.ok) { - alert('Submission sent successfully. Thank you!'); - } else { - alert('Failed to send submission. Please try again.'); - } - }) - .catch((error) => { - console.error('Error:', error); - alert('An error occurred. Please try again.'); - }); - } - - // Attach the form submission handler - document.getElementById('formula-suggestion-form').addEventListener('submit', function(event) { - event.preventDefault(); - renderPreview(); - // Show the "Submit" button once the preview has been rendered once - document.getElementById('submit-button').classList.remove('hidden'); - }); - - function handleRateLimit() { - // limit submissions so we can't get spammed - const submitButton = document.getElementById('submit-button'); - const lastSubmissionTime = localStorage.getItem('lastSubmissionTime'); - const currentTime = new Date().getTime(); - - // Check if 5 minutes have passed since the last submission - const timeLeft = 120000 - (currentTime - lastSubmissionTime); - if (lastSubmissionTime && timeLeft > 0) { - alert(`Please wait ${Math.ceil(timeLeft / 1000)} seconds before submitting again.`); - return; - } - - // Disable the button and store the current time - submitButton.disabled = true; - localStorage.setItem('lastSubmissionTime', currentTime); - - // Submit the data to Discord - submitToDiscord(); - - // Re-enable the button after the correct time has elapsed - setTimeout(() => { - submitButton.disabled = false; - }, timeLeft); - } - - // Attach the "Submit" button click handler - document.getElementById('submit-button').addEventListener('click', function() { - handleRateLimit(); - }); - - // Render the preview when the page loads - document.addEventListener('DOMContentLoaded', function() { - renderPreview(); - }); \ No newline at end of file diff --git a/assets/js/search.js b/assets/js/search.js deleted file mode 100644 index 8da48413..00000000 --- a/assets/js/search.js +++ /dev/null @@ -1,203 +0,0 @@ -var fuse; -var onMainPage = document.getElementById("search-query-main"); -var onSubmitPage = document.getElementById("formula-suggestion-form") -var showButtons = document.querySelectorAll("[id^='search-button']"); -if(onMainPage){ - var input = document.getElementById("search-query-main"); - var output = document.getElementById("search-results-main"); - var modal = document.getElementById("search-modal-main"); - var wrapper = document.getElementById("search-wrapper-main"); -} else { - var input = document.getElementById("search-query"); - var output = document.getElementById("search-results"); - var modal = document.getElementById("search-modal"); - var wrapper = document.getElementById("search-wrapper"); - var hideButton = document.getElementById("close-search-button"); -} -var first = output.firstChild; -var last = output.lastChild; -var searchVisible = false; -var indexed = false; -var hasResults = false; - -if(onMainPage){ - // need to build index on main page because it's normally triggered by clicking search button - buildIndex(); - searchVisible = true; -} - -// Listen for events -showButtons.forEach((button) => { - button.addEventListener("click", displaySearch); -}); -if (!(onMainPage)){ - hideButton.addEventListener("click", hideSearch); - wrapper.addEventListener("click", hideSearch); - modal.addEventListener("click", function (event) { - event.stopPropagation(); - event.stopImmediatePropagation(); - return false; - }); -} -document.addEventListener("keydown", function (event) { - // Forward slash to open search wrapper - if (event.key == "/") { - // ignore if we're on the suggest page - if (onSubmitPage){ - event.preventDefault(); - return; - } - - if (!searchVisible) { - event.preventDefault(); - displaySearch(); - } - if (onMainPage){ - event.preventDefault(); - input.focus(); - } - } - - // Esc to close search wrapper - if (event.key == "Escape") { - hideSearch(); - } - - // Down arrow to move down results list - if (event.key == "ArrowDown") { - if (searchVisible && hasResults) { - event.preventDefault(); - if (document.activeElement == input) { - first.focus(); - } else if (document.activeElement == last) { - last.focus(); - } else { - document.activeElement.parentElement.nextSibling.firstElementChild.focus(); - } - } - } - - // Up arrow to move up results list - if (event.key == "ArrowUp") { - if (searchVisible && hasResults) { - event.preventDefault(); - if (document.activeElement == input) { - input.focus(); - } else if (document.activeElement == first) { - input.focus(); - } else { - document.activeElement.parentElement.previousSibling.firstElementChild.focus(); - } - } - } - - if (event.key == "Enter") { - if (searchVisible && hasResults) { - event.preventDefault(); - if (document.activeElement == input) { - window.location.href = first.href; - } - else { - window.location.href = document.activeElement.href; - } - } - } -}); - -// Update search on each keypress - input.onkeyup = function (event) { - executeQuery(this.value); - }; - -function displaySearch() { - if (!indexed) { - buildIndex(); - } - if (!searchVisible) { - document.body.style.overflow = "hidden"; - wrapper.style.visibility = "visible"; - input.focus(); - searchVisible = true; - } -} - -function hideSearch() { - if (searchVisible) { - document.body.style.overflow = "visible"; - wrapper.style.visibility = "hidden"; - input.value = ""; - output.innerHTML = ""; - document.activeElement.blur(); - searchVisible = false; - } -} - -function fetchJSON(path, callback) { - var httpRequest = new XMLHttpRequest(); - httpRequest.onreadystatechange = function () { - if (httpRequest.readyState === 4) { - if (httpRequest.status === 200) { - var data = JSON.parse(httpRequest.responseText); - if (callback) callback(data); - } - } - }; - httpRequest.open("GET", path); - httpRequest.send(); -} - -function buildIndex() { - var baseURL = wrapper.getAttribute("data-url"); - baseURL = baseURL.replace(/\/?$/, "/"); - fetchJSON(baseURL + "index.json", function (data) { - var options = { - shouldSort: true, - ignoreLocation: true, - threshold: 0.0, - includeMatches: true, - keys: [ - { name: "title", weight: 0.8 }, - { name: "section", weight: 0.2 }, - { name: "summary", weight: 0.6 }, - { name: "content", weight: 0.4 }, - ], - }; - fuse = new Fuse(data, options); - fuse.remove((doc) => { - return doc.title === 'formulas' || doc.title === 'Suggest' || doc.title === 'stemformulas' || - doc.title === 'about' || doc.title === 'Tags' || doc.title === 'Categories' - }) - indexed = true; - }); -} - -function executeQuery(term) { - let results = fuse.search(term); - let resultsHTML = ""; - - if (results.length > 0) { - results.forEach(function (value, key) { - resultsHTML = - resultsHTML + - `
  • - -
    -
    ${value.item.title}
    -
    ${value.item.summary}
    -
    -
    -
    -
    -
  • `; - }); - hasResults = true; - } else { - resultsHTML = ""; - hasResults = false; - } - output.innerHTML = resultsHTML; - if (results.length > 0) { - first = output.firstChild.firstElementChild; - last = output.lastChild.firstElementChild; - } -} diff --git a/config/_default/config.toml b/config/_default/config.toml deleted file mode 100644 index 09492a78..00000000 --- a/config/_default/config.toml +++ /dev/null @@ -1,24 +0,0 @@ -# -- Site Configuration -- -# Refer to the theme docs for more details about each of these parameters. -# https://jpanther.github.io/congo/docs/getting-started/ - -baseURL = "https://stemformulas.com" -defaultContentLanguage = "en" - -enableRobotsTXT = true -paginate = 30 -summaryLength = 0 -googleAnalytics= "G-055HWG7Q3V" - -[outputs] - home = ["HTML", "RSS", "JSON"] - -[imaging] - resampleFilter = "lanczos" - quality = 100 - -[security] - enableInlineShortcodes = false - [security.funcs] - getenv = ["DISCORD_WEBHOOK_URL"] - \ No newline at end of file diff --git a/config/_default/languages.en.toml b/config/_default/languages.en.toml deleted file mode 100644 index 9a27706c..00000000 --- a/config/_default/languages.en.toml +++ /dev/null @@ -1,68 +0,0 @@ -languageCode = "en" -languageName = "English" - -displayName = "EN" -isoCode = "en" -rtl = false -weight = 1 -title = "stemformulas" -description = "Stemformulas is the eventual home of every STEM formula in the world. Our mission is to make every STEM formula accessible within seconds." -dateFormat = "Jan 2 2006" - -[params] - displayName = "EN" - isoCode = "en" - rtl = false - weight = 1 - title = "stemformulas" - description = "Stemformulas is the eventual home of every STEM formula in the world. Our mission is to make every STEM formula accessible within seconds." - dateFormat = "Jan 2 2006" - -[author] - name = "stemformulas" - # image = "img/author.jpg" - # headline = "I'm only human" - # bio = "A little bit about you" - # links = [ - # { email = "mailto:hello@your_domain.com" }, - # { link = "https://link-to-some-website.com/" }, - # { amazon = "https://www.amazon.com/hz/wishlist/ls/wishlist-id" }, - # { apple = "https://www.apple.com" }, - # { blogger = "https://username.blogspot.com/" }, - # { codepen = "https://codepen.io/username" }, - # { dev = "https://dev.to/username" }, - # { discord = "https://discord.gg/invitecode" }, - # { dribbble = "https://dribbble.com/username" }, - # { facebook = "https://facebook.com/username" }, - # { flickr = "https://www.flickr.com/photos/username/" }, - # { foursquare = "https://foursquare.com/username" }, - # { github = "https://github.com/username" }, - # { gitlab = "https://gitlab.com/username" }, - # { google = "https://www.google.com/" }, - # { hashnode = "https://username.hashnode.dev" }, - # { instagram = "https://instagram.com/username" }, - # { keybase = "https://keybase.io/username" }, - # { kickstarter = "https://www.kickstarter.com/profile/username" }, - # { lastfm = "https://lastfm.com/user/username" }, - # { linkedin = "https://linkedin.com/in/username" }, - # { mastodon = "https://mastodon.instance/@username" }, - # { medium = "https://medium.com/username" }, - # { microsoft = "https://www.microsoft.com/" }, - # { orcid = "https://orcid.org/userid" }, - # { patreon = "https://www.patreon.com/username" }, - # { pinterest = "https://pinterest.com/username" }, - # { reddit = "https://reddit.com/user/username" }, - # { researchgate = "https://www.researchgate.net/profile/username" }, - # { slack = "https://workspace.url/team/userid" }, - # { snapchat = "https://snapchat.com/add/username" }, - # { soundcloud = "https://soundcloud.com/username" }, - # { stack-overflow = "https://stackoverflow.com/users/userid/username" }, - # { steam = "https://steamcommunity.com/profiles/userid" }, - # { telegram = "https://t.me/username" }, - # { tiktok = "https://tiktok.com/@username" }, - # { tumblr = "https://username.tumblr.com" }, - # { twitch = "https://twitch.tv/username" }, - # { twitter = "https://twitter.com/username" }, - # { whatsapp = "https://wa.me/phone-number" }, - # { youtube = "https://youtube.com/username" }, - # ] diff --git a/config/_default/markup.toml b/config/_default/markup.toml deleted file mode 100644 index c5449fc3..00000000 --- a/config/_default/markup.toml +++ /dev/null @@ -1,13 +0,0 @@ -# -- Markup -- -# These settings are required for the theme to function. - -[goldmark] -[goldmark.renderer] - unsafe = true - -[highlight] - noClasses = false - -[tableOfContents] - startLevel = 2 - endLevel = 4 diff --git a/config/_default/menus.en.toml b/config/_default/menus.en.toml deleted file mode 100644 index 1624d116..00000000 --- a/config/_default/menus.en.toml +++ /dev/null @@ -1,48 +0,0 @@ -# -- Main Menu -- -# The main menu is displayed in the header at the top of the page. -# Acceptable parameters are name, pageRef, page, url, title, weight. -# -# The simplest menu configuration is to provide: -# name = The name to be displayed for this menu link -# pageRef = The identifier of the page or section to link to -# -# By default the menu is ordered alphabetically. This can be -# overridden by providing a weight value. The menu will then be -# ordered by weight from lowest to highest. - -[[main]] - name = "formulas" - pageRef = "formulas" - weight = 10 - -[[main]] - name = "submit" - pageRef = "submit" - weight = 20 - -[[main]] - name = "tags" - pageRef = "tags" - weight = 30 - -[[main]] - name = "about" - pageRef = "about" - weight = 40 - - - -[[main]] - name = "github" - pageRef = "github" - url = "https://github.com/stemformulas/stemformulas.github.io/" - weight = 50 - -# -- Footer Menu -- -# The footer menu is displayed at the bottom of the page, just before -# the copyright notice. Configure as per the main menu above. - -# [[footer]] -# name = "Tags" -# pageRef = "tags" -# weight = 10 diff --git a/config/_default/module.toml b/config/_default/module.toml deleted file mode 100644 index 8fd8a441..00000000 --- a/config/_default/module.toml +++ /dev/null @@ -1,6 +0,0 @@ -[[imports]] -path = "github.com/jpanther/congo/v2" - -[hugoVersion] - extended = false - min = "0.87.0" diff --git a/config/_default/params.toml b/config/_default/params.toml deleted file mode 100644 index 54c89c08..00000000 --- a/config/_default/params.toml +++ /dev/null @@ -1,76 +0,0 @@ -# -- Theme Options -- -# These options control how the theme functions and allow you to -# customise the display of your website. -# -# Refer to the theme docs for more details about each of these parameters. -# https://jpanther.github.io/congo/docs/configuration/#theme-parameters - -colorScheme = "slate" -defaultAppearance = "light" # valid options: light or dark -autoSwitchAppearance = false - -enableSearch = true -enableCodeCopy = true - -# mainSections = ["section1", "section2"] -# robots = "" - -[header] - layout = "basic" # valid options: basic, hamburger, hybrid, custom - logo = "img/logo.png" - showTitle = true - -[footer] - showCopyright = false - showThemeAttribution = false - showAppearanceSwitcher = false - showScrollToTop = true - -[homepage] - layout = "custom" # valid options: page, profile, custom - showRecent = false - -[article] - showDate = false # set to true to add "added on" back - showDateUpdated = false - showAuthor = false - showBreadcrumbs = false - showDraftLabel = true - showEdit = false - # editURL = "https://github.com/username/repo/" - editAppendPath = true - showHeadingAnchors = true - showPagination = true - invertPagination = false - showReadingTime = false - showTableOfContents = true - showTaxonomies = true - showWordCount = false - showComments = false - # sharingLinks = ["facebook", "twitter", "pinterest", "reddit", "linkedin", "email"] - -[list] - showBreadcrumbs = false - showSummary = false - showTableOfContents = false - showTaxonomies = false - groupByYear = false - paginationWidth = 1 - showDateUpdated = false - showDate = false - -[sitemap] - excludedKinds = ["taxonomy", "term"] - -[taxonomy] - showTermCount = true - -[fathomAnalytics] - # site = "ABC12345" - # domain = "llama.yoursite.com" - -[verification] - # google = "" - # bing = "" - # pinterest = "" - # yandex = "" diff --git a/content/about/_index.md b/content/about/_index.md deleted file mode 100644 index 345757f9..00000000 --- a/content/about/_index.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "about" -description: "About page" -showTableOfContents: true ---- -Stemformulas is a website dedicated to providing a single place to look for STEM formulas. It has a long way to go to become that, but the foundation is laid out. - -It was made by a few engineering students (lead by [@linguinelabs](https://x.com/linguinelabs)) who were frustrated with the current state of formula searching online. This frustration lead to the focus of the features of the site, which include: - -- The search bar being in focus on site load, so you can search for a formula quickly -- LaTeX being copyable by just clicking on it on any formula's page -- The / key being used to open the search on any page -- Formula pages having nice preview images when shared on social media, so people don't even need to visit the site to see the formula -- The mobile-friendliness of the site - - -## Tech Stack -This site is open-source on [GitHub](https://github.com/stemformulas/stemformulas.github.io). - -It is made with the static website framework [Hugo](https://gohugo.io/) using the [Congo theme](https://github.com/jpanther/congo), with many custom HTML/CSS/JS additions from our team. - -It is hosted on [GitHub Pages](https://pages.github.com/), deployed conveniently with GitHub Actions. - -## Contributing -If you want to add a formula to this site, there are two ways you can do so. - -1. Submit a formula on our [suggest](/suggest) page). This has been revamped to have a preview for ease of use. - -2. Create a pull request directly on the -[GitHub repo](https://github.com/stemformulas/stemformulas.github.io). This is of course easier for us to merge, but requires more effort from you. -More detailed contribution instructions can be found in the [README](https://github.com/stemformulas/stemformulas.github.io?tab=readme-ov-file#adding-a-formula). diff --git a/content/submit/_index.md b/content/submit/_index.md deleted file mode 100644 index 665abad5..00000000 --- a/content/submit/_index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Submit" -description: "Submit a formula to stemformulas.com!" ---- -{{}} - - - - diff --git a/docker-compose.yml b/docker-compose.yml index 21e2afa8..ead223d7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,24 +1,16 @@ services: - hugo: + app: build: . ports: - - "1313:1313" + - "8501:8501" develop: watch: - action: sync - path: . - target: /src/ + path: ./src + target: /app/src + ignore: + - node_modules/ + - action: rebuild + path: package.json env_file: - .env - - streamlit: - build: - context: . - dockerfile: Dockerfile-streamlit - ports: - - "8501:8501" - develop: - watch: - - action: sync - path: ./streamlit-app.py - target: /app/streamlit-app.py \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..05e726d1 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + ]), +]); + +export default eslintConfig; diff --git a/go.mod b/go.mod deleted file mode 100644 index f12d678d..00000000 --- a/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/kevinlinxc/stemformulas.com - -go 1.20 - -require github.com/jpanther/congo/v2 v2.6.1 // indirect \ No newline at end of file diff --git a/go.sum b/go.sum deleted file mode 100644 index 332c5493..00000000 --- a/go.sum +++ /dev/null @@ -1,12 +0,0 @@ -github.com/jpanther/congo/v2 v2.4.2 h1:c+WSf/9Mr+a/bR4w3YteHwnsS5eTWgkU0QC2Mqx9pjc= -github.com/jpanther/congo/v2 v2.4.2/go.mod h1:1S7DRoO1ZYS4YUdFd1LjTkdyjQwsjFWd8TqSfz3Jd+M= -github.com/jpanther/congo/v2 v2.5.0 h1:eAnZFSsY9C0buQmyRVtIR7WAl2sHZEn5LXYvwS7BsxI= -github.com/jpanther/congo/v2 v2.5.0/go.mod h1:1S7DRoO1ZYS4YUdFd1LjTkdyjQwsjFWd8TqSfz3Jd+M= -github.com/jpanther/congo/v2 v2.5.3 h1:E2VEXI/stDiAJFI3XLOmw7ehKk5P8SGyZXw7QkUTY+U= -github.com/jpanther/congo/v2 v2.5.3/go.mod h1:1S7DRoO1ZYS4YUdFd1LjTkdyjQwsjFWd8TqSfz3Jd+M= -github.com/jpanther/congo/v2 v2.5.4 h1:6SLJ5y1hXs2eu4Ce8HBT5YLLbnu0GE+CZ686p/2jRFw= -github.com/jpanther/congo/v2 v2.5.4/go.mod h1:1S7DRoO1ZYS4YUdFd1LjTkdyjQwsjFWd8TqSfz3Jd+M= -github.com/jpanther/congo/v2 v2.6.0 h1:0AS0YKxEdqiAxzE4dUm9aSzVTOGIZW5GzD5syOWmsKw= -github.com/jpanther/congo/v2 v2.6.0/go.mod h1:1S7DRoO1ZYS4YUdFd1LjTkdyjQwsjFWd8TqSfz3Jd+M= -github.com/jpanther/congo/v2 v2.6.1 h1:iA8uosVsiMl3JbBSBwMvrxEibzBcDp+RIj18f/cmlDs= -github.com/jpanther/congo/v2 v2.6.1/go.mod h1:1S7DRoO1ZYS4YUdFd1LjTkdyjQwsjFWd8TqSfz3Jd+M= diff --git a/i18n/en.yaml b/i18n/en.yaml deleted file mode 100644 index 3d4e4457..00000000 --- a/i18n/en.yaml +++ /dev/null @@ -1,55 +0,0 @@ -article: - anchor_label: "Anchor" - date: "{{ .Date }}" - date_updated: "Updated: {{ .Date }}" - draft: "Draft" - edit_title: "Edit content" - reading_time: - one: "{{ .Count }} min" - other: "{{ .Count }} mins" - reading_time_title: "Reading time" - table_of_contents: "Table of Contents" - word_count: - one: "{{ .Count }} word" - other: "{{ .Count }} words" - -author: - byline_title: "Author" - -code: - copy: "Copy" - copied: "Copied" - -error: - 404_title: "Page Not Found :confused:" - 404_error: "Error 404" - 404_description: "It seems that the page you've requested does not exist." - -footer: - dark_appearance: "Switch to dark appearance" - light_appearance: "Switch to light appearance" - powered_by: "Powered by {{ .Hugo }} & {{ .Congo }}" - -list: - externalurl_title: "Link to external site" - no_articles: "There's no articles to list here yet." - -nav: - scroll_to_top_title: "Scroll to top" - skip_to_main: "Skip to main content" - -search: - open_button_title: "Search (/)" - close_button_title: "Close (Esc)" - input_placeholder: "Search for a formula..." - -sharing: - email: "Send via email" - facebook: "Share on Facebook" - linkedin: "Share on LinkedIn" - pinterest: "Pin on Pinterest" - reddit: "Submit to Reddit" - twitter: "Tweet on Twitter" - -shortcode: - recent_articles: "Recent" diff --git a/layouts/_default/list.html b/layouts/_default/list.html deleted file mode 100644 index 76064c52..00000000 --- a/layouts/_default/list.html +++ /dev/null @@ -1,59 +0,0 @@ -{{ define "main" }} - {{ $toc := and (.Params.showTableOfContents | default (.Site.Params.list.showTableOfContents | default false)) (in .TableOfContents " - {{ if .Params.showBreadcrumbs | default (.Site.Params.list.showBreadcrumbs | default false) }} - {{ partial "breadcrumbs.html" . }} - {{ end }} -

    {{ .Title }}

    - -
    - {{ if $toc }} -
    -
    - {{ partial "toc.html" . }} -
    -
    - {{ end }} -
    - {{ .Content | emojify }} -
    -
    - {{ if (and (not (in .RelPermalink "/about/")) (not (in .RelPermalink "/suggest/"))) }} -

    Click on any formula to visit its page for more details.

    - {{ end}} - {{ if .Data.Pages }} -
    - {{ if $.Params.groupByYear | default ($.Site.Params.list.groupByYear | default true) }} - {{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }} -

    - {{ .Key }} -

    -
    - {{ range .Pages }} - {{ partial "article-link.html" . }} - {{ end }} - {{ end }} - {{ else }} - {{ range (.Paginate .Pages).Pages }} - {{ partial "article-link.html" . }} - {{ end }} - {{ end }} -
    - {{ partial "pagination.html" . }} - {{ else }} - - {{ if (and (not (in .RelPermalink "/about/")) (not (in .RelPermalink "/suggest/"))) }} -
    -

    - {{ i18n "list.no_articles" | emojify }} -

    -
    - {{ end }} - {{end}} -{{ end }} diff --git a/layouts/_default/single.html b/layouts/_default/single.html deleted file mode 100644 index f178cad9..00000000 --- a/layouts/_default/single.html +++ /dev/null @@ -1,74 +0,0 @@ -{{ define "main" }} - {{- $images := .Resources.ByType "image" }} - {{- $cover := $images.GetMatch (.Params.cover | default "*cover*") }} - {{- $feature := $images.GetMatch (.Params.feature | default "*feature*") | default $cover }} -
    -
    - {{ if .Params.showBreadcrumbs | default (.Site.Params.article.showBreadcrumbs | default false) }} - {{ partial "breadcrumbs.html" . }} - {{ end }} -

    - {{ .Title | emojify }} -

    -
    - {{ partial "article-meta.html" (dict "context" . "scope" "single") }} -
    - {{ with $feature }} -
    - {{ $.Params.featureAlt | default $.Params.coverAlt | default - {{ with $.Params.coverCaption }} -
    {{ . | markdownify }}
    - {{ end }} -
    - {{ end }} -
    -
    - {{ if and (.Params.showTableOfContents | default (.Site.Params.article.showTableOfContents | default false)) (in .TableOfContents " -
    - {{ partial "toc.html" . }} -
    - - {{ end }} -
    - {{ .Content | emojify }} -
    -
    -
    - {{ partial "author.html" . }} - {{ partial "sharing-links.html" . }} - {{ partial "article-pagination.html" . }} - {{ if .Params.showComments | default (.Site.Params.article.showComments | default false) }} - {{ if templates.Exists "partials/comments.html" }} -
    -
    -
    - {{ partial "comments.html" . }} -
    -
    - {{ else }} - {{ warnf "[CONGO] Comments are enabled for %s but no comments partial exists." .File.Path }} - {{ end }} - {{ end }} -
    -
    -{{ end }} diff --git a/layouts/_default/submit.html b/layouts/_default/submit.html deleted file mode 100644 index 04e62f30..00000000 --- a/layouts/_default/submit.html +++ /dev/null @@ -1,138 +0,0 @@ -{{ define "main" }} - - -
    -
    -

    - submit a formula -

    -

    - Replace the example fields below, preview your submission, and then submit! -

    -
    - -
    -
    -
    -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - - -
    -
    -
    - - -
    - - - - - {{ $js := resources.Get "js/formula-suggest.js" | fingerprint }} - -{{ end }} \ No newline at end of file diff --git a/layouts/_default/taxonomy.html b/layouts/_default/taxonomy.html deleted file mode 100644 index 61307a4e..00000000 --- a/layouts/_default/taxonomy.html +++ /dev/null @@ -1,30 +0,0 @@ -{{ define "main" }} -
    - {{ if .Params.showBreadcrumbs | default (.Site.Params.list.showBreadcrumbs | default false) }} - {{ partial "breadcrumbs.html" . }} - {{ end }} -

    {{ lower .Title }}

    -
    - {{ if .Content }} -
    -
    - {{ .Content | emojify }} -
    -
    - {{ end }} - {{ $max := 0 }} - {{ range .Data.Terms }} - {{ if gt .Count $max }} - {{ $max = .Count }} - {{ end }} - {{ end }} -
    -
    - -
    -
    -{{ end }} diff --git a/layouts/_default/term.html b/layouts/_default/term.html deleted file mode 100644 index c61fdb1d..00000000 --- a/layouts/_default/term.html +++ /dev/null @@ -1,63 +0,0 @@ -{{ define "main" }} - - - - - - -
    - {{ if .Params.showBreadcrumbs | default (.Site.Params.list.showBreadcrumbs | default false) }} - {{ partial "breadcrumbs.html" . }} - {{ end }} -

    {{ .Title }}

    -
    - {{ if .Content }} -
    -
    - {{ .Content | emojify }} -
    -
    - {{ end }} -
    - {{ if .Data.Pages }} -
    - {{ if $.Params.groupByYear | default ($.Site.Params.list.groupByYear | default true) }} - {{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }} -

    - {{ .Key }} -

    -
    - {{ range .Pages }} - {{ partial "article-link.html" . }} - {{ end }} - {{ end }} - {{ else }} - {{ range (.Paginate .Pages).Pages }} - {{ partial "article-link.html" . }} - {{ end }} - {{ end }} -
    - {{ partial "pagination.html" . }} - {{ else }} -
    -

    - {{ i18n "list.no_articles" | emojify }} -

    -
    - {{ end }} -
    -{{ end }} diff --git a/layouts/partials/article-link.html b/layouts/partials/article-link.html deleted file mode 100644 index 79b6c640..00000000 --- a/layouts/partials/article-link.html +++ /dev/null @@ -1,74 +0,0 @@ -{{ with .Params.externalUrl }} - -{{ else }} - -{{ end}} - {{- $images := $.Resources.ByType "image" }} - {{- $thumbnail := $images.GetMatch "*thumb*" }} - {{- $feature := $images.GetMatch "*feature*" | default $thumbnail }} - {{- with $feature }} - - - - {{- end }} -

    - {{ with .Params.externalUrl }} -
    - {{ $.Title | emojify }} - - - - -
    - {{ else }} - {{ .Title | emojify }} - {{ end }} - {{ if and .Draft .Site.Params.article.showDraftLabel }} -
    - {{ partial "badge.html" (i18n "article.draft" | emojify) }} -
    - {{ end }} - {{ if templates.Exists "partials/extend-article-link.html" }} - {{ partial "extend-article-link.html" . }} - {{ end }} -

    - {{ partial "article-meta.html" . }} - {{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }} -
    - {{ .Summary | emojify }} -
    - {{ end }} - diff --git a/layouts/partials/article-meta.html b/layouts/partials/article-meta.html deleted file mode 100644 index 28c1cceb..00000000 --- a/layouts/partials/article-meta.html +++ /dev/null @@ -1,76 +0,0 @@ -{{/* Determine the correct context and scope */}} -{{/* This allows for different logic depending on where the partial is called */}} -{{ $context := . }} -{{ $scope := default nil }} - -{{ if (reflect.IsMap . ) }} - {{ $context = .context }} - {{ $scope = cond (not .scope) nil .scope }} -{{ end }} - -{{ with $context }} - {{ $meta := newScratch }} - - {{/* Gather partials for this context */}} - {{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }} - {{ if eq $scope "single"}} - {{ $meta.Add "partials" (slice (partial "meta/date.html" .Date)) }} - {{end}} - {{ end }} - - {{/* Output taxonomies */}} - {{ if or - (and (ne $scope "single") (.Params.showTaxonomies | default (.Site.Params.list.showTaxonomies | default (.Site.Params.article.showTaxonomies | default false)))) - (and (eq $scope "single") (.Params.showTaxonomies | default (.Site.Params.article.showTaxonomies | default false))) - }} -
    - {{ range $taxonomy, $terms := .Site.Taxonomies }} - {{ if (gt (len ($context.GetTerms $taxonomy)) 0) }} - {{ range $context.GetTerms $taxonomy }} - {{ .LinkTitle }} - {{ end }} - {{ end }} - {{ end }} -
    - {{ end }} - {{ if and (.Params.showDateUpdated | default (.Site.Params.list.showDateUpdated | default false)) (ne (partial "functions/date.html" .Date) (partial "functions/date.html" .Lastmod)) }} - {{ $meta.Add "partials" (slice (partial "meta/date-updated.html" .Lastmod)) }} - {{ end }} - - {{ if and (.Params.showWordCount | default (.Site.Params.article.showWordCount | default false)) (ne .WordCount 0) }} - {{ $meta.Add "partials" (slice (partial "meta/word-count.html" .)) }} - {{ end }} - - {{ if and (.Params.showReadingTime | default (.Site.Params.article.showReadingTime | default true)) (ne .ReadingTime 0) }} - {{ $meta.Add "partials" (slice (partial "meta/reading-time.html" .)) }} - {{ end }} - - {{ if and (eq $scope "single") (.Params.showEdit | default (.Site.Params.article.showEdit | default false)) }} - {{ $meta.Add "partials" (slice (partial "meta/edit.html" .)) }} - {{ end }} - - {{ if not (eq $scope "single")}} -
    - {{ printf "%s" "$$" | printf "%s%s" .Params.latex | printf "%s%s" "$$" | printf "%s" }} -
    -
    - {{ else}} -
    - {{ end }} - - {{/* Output partials */}} - {{ with ($meta.Get "partials") }} - {{ delimit . "·" }} - {{ end }} - - {{/* Output draft label */}} - {{ if and (eq $scope "single") (and .Draft .Site.Params.article.showDraftLabel) }} - {{ partial "badge.html" (i18n "article.draft" | emojify) }} - {{ end }} -
    - -{{ end }} diff --git a/layouts/partials/head.html b/layouts/partials/head.html deleted file mode 100644 index 50bdfbbc..00000000 --- a/layouts/partials/head.html +++ /dev/null @@ -1,145 +0,0 @@ - - - {{ with .Site.Language.Params.htmlCode | default .Site.LanguageCode }} - - {{ end }} - - - - {{/* Title */}} - {{ if .IsHome -}} - {{ .Site.Title | emojify }} - - - - - - - - - - - - - - - {{- else -}} - {{ .Title | emojify }} · {{ .Site.Title | emojify }} - - - - - - - - - - - - - {{- end }} - - - {{/* Metadata */}} - - {{ with .Site.Params.keywords -}} - - {{- end }} - - {{ with .Site.Params.robots }} - - {{ end }} - {{ with .Params.robots }} - - {{ end }} - - {{ range .AlternativeOutputFormats -}} - {{ printf `` .Rel .MediaType.Type .RelPermalink ($.Site.Title | emojify) | safeHTML }} - {{ end -}} - {{/* Asset bundles */}} - {{ $assets := newScratch }} - {{ $cssScheme := resources.Get (printf "css/schemes/%s.css" (lower .Site.Params.colorScheme | default "congo")) }} - {{ if not $cssScheme }} - {{ $cssScheme = resources.Get "css/schemes/congo.css" }} - {{ end }} - {{ $assets.Add "css" (slice $cssScheme) }} - {{ $cssMain := resources.Get "css/compiled/main.css" }} - {{ $assets.Add "css" (slice $cssMain) }} - {{ $cssCustom := resources.Get "css/custom.css" }} - {{ if $cssCustom }} - {{ $assets.Add "css" (slice $cssCustom) }} - {{ end }} - {{ $bundleCSS := $assets.Get "css" | resources.Concat "css/main.bundle.css" | resources.Minify | resources.Fingerprint "sha512" }} - - {{ $jsAppearance := resources.Get "js/appearance.js" }} - {{ $jsAppearance = $jsAppearance | resources.Minify | resources.Fingerprint "sha512" }} - - {{ if .Site.Params.enableSearch | default false }} - {{ $jsFuse := resources.Get "lib/fuse/fuse.min.js" }} - {{ $jsSearch := resources.Get "js/search.js" }} - {{ $assets.Add "js" (slice $jsFuse $jsSearch) }} - {{ end }} - {{ if .Site.Params.enableCodeCopy | default false }} - {{ $jsCode := resources.Get "js/code.js" }} - {{ $assets.Add "js" (slice $jsCode) }} - {{ end }} - {{ if .Site.Params.rtl | default false }} - {{ $jsRTL := resources.Get "js/rtl.js" }} - {{ $assets.Add "js" (slice $jsRTL) }} - {{ end }} - {{ if $assets.Get "js" }} - {{ $bundleJS := $assets.Get "js" | resources.Concat "js/main.bundle.js" | resources.Minify | resources.Fingerprint "sha512" }} - - {{ end }} - {{/* Icons */}} - {{ if templates.Exists "partials/favicons.html" }} - {{ partialCached "favicons.html" .Site }} - {{ else }} - - - - - {{ end }} - {{/* Site Verification */}} - {{ with .Site.Params.verification.google }} - - {{ end }} - {{ with .Site.Params.verification.bing }} - - {{ end }} - {{ with .Site.Params.verification.pinterest }} - - {{ end }} - {{ with .Site.Params.verification.yandex }} - - {{ end }} - {{/* Social */}} - {{ template "_internal/opengraph.html" . }} - {{ template "_internal/twitter_cards.html" . }} - {{/* Schema */}} - {{ partial "schema.html" . }} - {{/* Me */}} - {{ with .Site.Author.name }}{{ end }} - {{ with .Site.Author.links }} - {{ range $links := . }} - {{ range $name, $url := $links }}{{ end }} - {{ end }} - {{ end }} - {{/* Vendor */}} - {{ partial "vendor.html" . }} - {{/* Analytics */}} - {{ partialCached "analytics.html" . }} - {{/* Extend head - eg. for custom analytics scripts, etc. */}} - {{ if templates.Exists "partials/extend-head.html" }} - {{ partial "extend-head.html" .Site }} - {{ end }} - - - diff --git a/layouts/partials/header/basic.html b/layouts/partials/header/basic.html deleted file mode 100644 index 2f4b1dd8..00000000 --- a/layouts/partials/header/basic.html +++ /dev/null @@ -1,39 +0,0 @@ -
    - -
    diff --git a/layouts/partials/home/custom.html b/layouts/partials/home/custom.html deleted file mode 100644 index 9f1d9af0..00000000 --- a/layouts/partials/home/custom.html +++ /dev/null @@ -1,39 +0,0 @@ -
    - -stemformulas logo -
    -

    Welcome to stemformulas.com, a modern database for STEM formulas!

    -

    Search for a formula or submit a new one.

    - -
    -
    -
    -
    -
    - {{ partial "icon.html" "search" }} -
    - -
    -
    -
    -
      -
    -
    -
    diff --git a/layouts/partials/logo.html b/layouts/partials/logo.html deleted file mode 100644 index 41821205..00000000 --- a/layouts/partials/logo.html +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Site.Params.header.logo }} - {{- $logo := resources.Get .Site.Params.header.logo }} - {{- if $logo }} - - - - {{- end }} -{{- end }} -{{- if .Site.Params.header.showTitle | default true }} - {{ .Site.Title | markdownify | emojify }} -{{- end }} - diff --git a/layouts/partials/meta/date.html b/layouts/partials/meta/date.html deleted file mode 100644 index 0c043936..00000000 --- a/layouts/partials/meta/date.html +++ /dev/null @@ -1,4 +0,0 @@ - - {{- /* Trim EOF */ -}} diff --git a/layouts/partials/search.html b/layouts/partials/search.html deleted file mode 100644 index 50e58260..00000000 --- a/layouts/partials/search.html +++ /dev/null @@ -1,48 +0,0 @@ - diff --git a/layouts/partials/vendor.html b/layouts/partials/vendor.html deleted file mode 100644 index b75dc1c9..00000000 --- a/layouts/partials/vendor.html +++ /dev/null @@ -1,39 +0,0 @@ - -{{/* Mermaid */}} -{{ if .Page.HasShortcode "mermaid" }} - {{ $mermaidLib := resources.Get "lib/mermaid/mermaid.min.js" }} - {{ $mermaidConfig := resources.Get "js/mermaid.js" }} - {{ $mermaidConfig := $mermaidConfig | resources.Minify }} - {{ $mermaidJS := slice $mermaidLib $mermaidConfig | resources.Concat "js/mermaid.bundle.js" | resources.Fingerprint "sha512" }} - -{{ end }} -{{/* Chart */}} -{{ if .Page.HasShortcode "chart" }} - {{ $chartLib := resources.Get "lib/chart/chart.umd.js" }} - {{ $chartConfig := resources.Get "js/chart.js" }} - {{ $chartConfig := $chartConfig | resources.Minify }} - {{ $chartJS := slice $chartLib $chartConfig | resources.Concat "js/chart.bundle.js" | resources.Fingerprint "sha512" }} - -{{ end }} -{{/* Katex */}} -{{ if .Page.HasShortcode "katex" }} - {{ $katexCSS := resources.Get "lib/katex/katex.min.css" }} - {{ $katexCSS := $katexCSS | resources.Fingerprint "sha512" }} - - {{ $katexJS := resources.Get "lib/katex/katex.min.js" }} - {{ $katexJS := $katexJS | resources.Fingerprint "sha512" }} - - {{ $katexRenderJS := resources.Get "lib/katex/auto-render.min.js" }} - {{ $katexRenderJS := $katexRenderJS | resources.Fingerprint "sha512" }} - - - {{ $katexFonts := resources.Match "lib/katex/fonts/*" }} - - {{ range $katexFonts }} - {{ .Publish }} - {{ end }} -{{ end }} diff --git a/mdx-components.tsx b/mdx-components.tsx new file mode 100644 index 00000000..e7013b7d --- /dev/null +++ b/mdx-components.tsx @@ -0,0 +1,5 @@ +import type { MDXComponents } from "mdx/types"; + +export function useMDXComponents(components: MDXComponents): MDXComponents { + return components; +} \ No newline at end of file diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 00000000..c4b7818f --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,6 @@ +/// +/// +import "./.next/dev/types/routes.d.ts"; + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/next.config.ts b/next.config.ts new file mode 100644 index 00000000..72c92d04 --- /dev/null +++ b/next.config.ts @@ -0,0 +1,12 @@ +import type {NextConfig} from "next"; + +const nextConfig: NextConfig = { + turbopack: { + root: process.cwd(), + }, + experimental: { + useTypeScriptCli: true, + }, +}; + +export default nextConfig \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..ac92fcfa --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8761 @@ +{ + "name": "stemformulas-next", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "stemformulas-next", + "version": "0.1.0", + "dependencies": { + "@next/third-parties": "^16.2.12", + "dompurify": "^3.4.12", + "fuse.js": "^7.5.0", + "gray-matter": "^4.0.3", + "katex": "^0.18.1", + "marked": "^18.0.7", + "next": "16.2.12", + "next-mdx-remote": "^6.0.0", + "react": "19.2.4", + "react-dom": "19.2.4", + "rehype-katex": "^7.0.1", + "remark-math": "^6.0.0" + }, + "devDependencies": { + "@types/dompurify": "^3.0.5", + "@types/katex": "^0.16.8", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.2.12", + "typescript": "^7.0.2" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.6.tgz", + "integrity": "sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.3.0", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.5", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.5.tgz", + "integrity": "sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", + "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", + "license": "MIT", + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", + "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@next/env": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.12.tgz", + "integrity": "sha512-d0Z5Bc13Fa4nR8pFAKx2jay2yhJM16vlfHbTzYnUQAxlNb6B6lmn4hjt69lYNt4kRtyYP6gEM49lPRHNbIyneg==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.2.12.tgz", + "integrity": "sha512-uF2z/qAK2q7B5/6CpnFcBRX6jOq5iCO+Uqh1UkJhXljX1JwLarLYhhoJadO6dPb6moTprOKewMXheBcbIoSbug==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.12.tgz", + "integrity": "sha512-0W1R0teHWJrqKX0FH20IzzIWAOuGtBxPGuObrxy1lE8hQvCFj49KE8a3WUg0D7sq6rn6zkM4c7YGUnhudBS6oA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.12.tgz", + "integrity": "sha512-Hy5Ls099+aFUmOLmIgPfLqNi6iCwhL3uQCssz5rWk+5Nkc6TUKCE83DY5BbNylfm3+mfwcSFnLRfrZDJhVxdtw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.12.tgz", + "integrity": "sha512-+YqU2h1cQkHsGfvjAsrSmst8UIFBibBGm5x3Xgel8NLMiDQtNOM4sM2GOEMvG5YiOBNeN/Ykk8cQC2S0Xrqljg==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.12.tgz", + "integrity": "sha512-0qjhiYBaKAqF63LA1ZWAAnKTzFUguAaZiRa5etMLGGPj/B6uEVjtIZldIzFEp3wHlB0koK6aTzqPtSdplTCjoA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.12.tgz", + "integrity": "sha512-7A3q26W+h7gnA15uqBToNuDqBEFZZcqh0mW2mn4AJh/G5pdg2RVE3n4slzLEliASZFG3NmsbEzng/x2Sh09mBg==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.12.tgz", + "integrity": "sha512-qSjL/uppm+cbh21s72Ss8gkiOhQ4dExWHNGOWy6eZV7STj5WsKehgxT61beSsOj+YYQuTplL376lOCdMQU5T8w==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.12.tgz", + "integrity": "sha512-X6hzsOUJac/e7AWSbn9gQ9nzHld1xWP5iyjHpYWvud8pufB679O1xg4JDyKr8Xd69Jvd+kM2Der6uftiZCmjYA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.12.tgz", + "integrity": "sha512-F6fakeHuFTLOPt0bslQJdf+xtT+WIP9DVn/m4y1w1mRnVPyh3D/cNvzlRkxM444xfm+IvvYNSOrKiA2CDJ0Uxw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/third-parties": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-16.2.12.tgz", + "integrity": "sha512-1fHKgERSVcgC0QfPJq2v96l6pLUdbVdkT0bjJYK8MguKTVjPd734kWBxfd77nPUG4N5F9s+qVdVjpEBm1tlwNQ==", + "license": "MIT", + "dependencies": { + "third-party-capital": "1.0.20" + }, + "peerDependencies": { + "next": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0-beta.0", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", + "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/dompurify": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", + "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/trusted-types": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz", + "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/katex": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.8.tgz", + "integrity": "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==", + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.14.tgz", + "integrity": "sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.43.tgz", + "integrity": "sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", + "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.65.0.tgz", + "integrity": "sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/visitor-keys": "8.65.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.65.0.tgz", + "integrity": "sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.65.0.tgz", + "integrity": "sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.65.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript/typescript-aix-ppc64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz", + "integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-darwin-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-arm64/-/typescript-darwin-arm64-7.0.2.tgz", + "integrity": "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-darwin-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-x64/-/typescript-darwin-x64-7.0.2.tgz", + "integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-freebsd-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-arm64/-/typescript-freebsd-arm64-7.0.2.tgz", + "integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-freebsd-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-x64/-/typescript-freebsd-x64-7.0.2.tgz", + "integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-arm": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm/-/typescript-linux-arm-7.0.2.tgz", + "integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm64/-/typescript-linux-arm64-7.0.2.tgz", + "integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-loong64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-loong64/-/typescript-linux-loong64-7.0.2.tgz", + "integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-mips64el": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-mips64el/-/typescript-linux-mips64el-7.0.2.tgz", + "integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-ppc64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-ppc64/-/typescript-linux-ppc64-7.0.2.tgz", + "integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-riscv64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-riscv64/-/typescript-linux-riscv64-7.0.2.tgz", + "integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-s390x": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-s390x/-/typescript-linux-s390x-7.0.2.tgz", + "integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-x64/-/typescript-linux-x64-7.0.2.tgz", + "integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-netbsd-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-arm64/-/typescript-netbsd-arm64-7.0.2.tgz", + "integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-netbsd-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-x64/-/typescript-netbsd-x64-7.0.2.tgz", + "integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-openbsd-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-arm64/-/typescript-openbsd-arm64-7.0.2.tgz", + "integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-openbsd-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-x64/-/typescript-openbsd-x64-7.0.2.tgz", + "integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-sunos-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-sunos-x64/-/typescript-sunos-x64-7.0.2.tgz", + "integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-win32-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-arm64/-/typescript-win32-arm64-7.0.2.tgz", + "integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-win32-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz", + "integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.3.tgz", + "integrity": "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==", + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.12.2.tgz", + "integrity": "sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.12.2.tgz", + "integrity": "sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.12.2.tgz", + "integrity": "sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.12.2.tgz", + "integrity": "sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.12.2.tgz", + "integrity": "sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.12.2.tgz", + "integrity": "sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.12.2.tgz", + "integrity": "sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.12.2.tgz", + "integrity": "sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.12.2.tgz", + "integrity": "sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-loong64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-gnu/-/resolver-binding-linux-loong64-gnu-1.12.2.tgz", + "integrity": "sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-loong64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-musl/-/resolver-binding-linux-loong64-musl-1.12.2.tgz", + "integrity": "sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.12.2.tgz", + "integrity": "sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.12.2.tgz", + "integrity": "sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.12.2.tgz", + "integrity": "sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.12.2.tgz", + "integrity": "sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.12.2.tgz", + "integrity": "sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.12.2.tgz", + "integrity": "sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-openharmony-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-openharmony-arm64/-/resolver-binding-openharmony-arm64-1.12.2.tgz", + "integrity": "sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.12.2.tgz", + "integrity": "sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.12.2.tgz", + "integrity": "sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.12.2.tgz", + "integrity": "sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.12.2.tgz", + "integrity": "sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/acorn": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", + "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.12.1.tgz", + "integrity": "sha512-s7iGf5GaVMxEG0ENN9x+xTr7GFZCb1ZP/1uATUpCEK2X78nDB3RwbtFCo9pGAf9ru+VwoQ464DkaLEeRM08wJA==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.4.tgz", + "integrity": "sha512-s4+sLr9mZ/CyqeRritFeYV/Zx73OAtmaHn6kkBS1XRoJn1hrg3xIDUcpicAEX68tkcIN0iBCgti31C8zxtkhsQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz", + "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz", + "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.44", + "caniuse-lite": "^1.0.30001806", + "electron-to-chromium": "^1.5.393", + "node-releases": "^2.0.51", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001806", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", + "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dompurify": { + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.12.tgz", + "integrity": "sha512-zQvGet8Z2sWbQhCmfFz/T5QWH2oBmjnqK3qvOjaqaNLrLEF912WamU+ohnTp0TCep/MFVHpdJuCZEdFOdTnEFg==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.396", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.396.tgz", + "integrity": "sha512-yHiw2Y3C3H9U6TMbOfoWK/BPreiOPXRfTWPBwQBoZG6/8TB6eOPnsy5oaRYuatR7Fw2SJ4kKforgufeo7fq0EQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "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/es-abstract": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract-get": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-abstract-get/-/es-abstract-get-1.0.0.tgz", + "integrity": "sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.2", + "is-callable": "^1.2.7", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.4.0.tgz", + "integrity": "sha512-c/A0P0oxkACDc+cKWw8evLXK83oBKgn0qPOqCYT4x9uolpCIJAcYvJC9QYKNDRPsTeGyCrQ326jrvgZWdCdK5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.4.tgz", + "integrity": "sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-abstract-get": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "is-callable": "^1.2.7", + "is-date-object": "^1.1.0", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.5", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.5.tgz", + "integrity": "sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.6", + "@eslint/js": "9.39.5", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-next": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.2.12.tgz", + "integrity": "sha512-iaaf4vvKo5h2LBdGt0JuRv7t0Ysqr9FMCiFxbptDg8LqOE//mIKR80DdpOnSVM7qjLH3jT8P0aFiwXxBEGZRXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "16.2.12", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-react": "^7.37.0", + "eslint-plugin-react-hooks": "^7.0.0", + "globals": "16.4.0", + "typescript-eslint": "^8.46.0" + }, + "peerDependencies": { + "eslint": ">=9.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-next/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/eslint-config-next/node_modules/brace-expansion": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz", + "integrity": "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/eslint-config-next/node_modules/globals": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-config-next/node_modules/ignore": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz", + "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint-config-next/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-config-next/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-config-next/node_modules/typescript-eslint": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.65.0.tgz", + "integrity": "sha512-/ggrHAwyjENDusvyxbuqxAC2dTnZg/Z8F+fgQtYIz+L6n/9HfSlEZcFGV/NsMNa6CkGk0xUjUAFwC0vHOflvIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.65.0", + "@typescript-eslint/parser": "8.65.0", + "@typescript-eslint/typescript-estree": "8.65.0", + "@typescript-eslint/utils": "8.65.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/eslint-config-next/node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.65.0.tgz", + "integrity": "sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.65.0", + "@typescript-eslint/type-utils": "8.65.0", + "@typescript-eslint/utils": "8.65.0", + "@typescript-eslint/visitor-keys": "8.65.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.65.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/eslint-config-next/node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.65.0.tgz", + "integrity": "sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/typescript-estree": "8.65.0", + "@typescript-eslint/utils": "8.65.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/eslint-config-next/node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.65.0.tgz", + "integrity": "sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.65.0", + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/typescript-estree": "8.65.0", + "@typescript-eslint/visitor-keys": "8.65.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/eslint-config-next/node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.65.0.tgz", + "integrity": "sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.65.0", + "@typescript-eslint/tsconfig-utils": "8.65.0", + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/visitor-keys": "8.65.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/eslint-config-next/node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/project-service": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.65.0.tgz", + "integrity": "sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.65.0", + "@typescript-eslint/types": "^8.65.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/eslint-config-next/node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.65.0.tgz", + "integrity": "sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/eslint-config-next/node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.65.0.tgz", + "integrity": "sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.65.0", + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/typescript-estree": "8.65.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", + "integrity": "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.16.1", + "resolve": "^2.0.0-next.6" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.14.0.tgz", + "integrity": "sha512-W2WCRZ9Dqntd+2u8jJcVMV2PKulc6RdLgUUoh/yQr3uB6lo/ZOeGx11sv60/8S4QFFKNslAlWhr9u0Ef7ZW6Ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz", + "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "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/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/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==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.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==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.3.tgz", + "integrity": "sha512-/zipXxyO6rGvuNGDiULY9MvEGSkb2gaG4GGH4ygMi0ZZzyMHdUZBmntJmx5x1G2VuPytCwGN4xsJP6cw+sK+vQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.2.0.tgz", + "integrity": "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2", + "hasown": "^2.0.4", + "is-callable": "^1.2.7", + "is-document.all": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fuse.js": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.5.0.tgz", + "integrity": "sha512-sQtrEfA+ez/3G0cCZecF70oqpCRttCexYUG4mUrtWL49ULUzUyxokt5kyqwtKzj1270RaKih+hcP3qLcumccow==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/krisk" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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.15.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.0.tgz", + "integrity": "sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-from-dom": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz", + "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==", + "license": "ISC", + "dependencies": { + "@types/hast": "^3.0.0", + "hastscript": "^9.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-document.all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-document.all/-/is-document.all-1.0.0.tgz", + "integrity": "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", + "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/katex": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.18.1.tgz", + "integrity": "sha512-Td8GCYSxDAoMhHOlKmCFMJ/hz5qlAAb71n66Dryw9nfCVfumLo7nhuotbvKom/XPADmrYC3O5QR71EPq4DarJQ==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "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/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked": { + "version": "18.0.7", + "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.7.tgz", + "integrity": "sha512-iDVQ5ldaiKXn6b2JroX5kgRfmwgqolW7NpaEzTl1k/2Zh1njIEN9yniyLV/mOvWwtsE8OGgkjsCYvijuPk1dtA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-math": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", + "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "longest-streak": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.1.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", + "license": "MIT", + "dependencies": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-math/node_modules/katex": { + "version": "0.16.47", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz", + "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/nanoid": { + "version": "3.3.16", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz", + "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/next": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/next/-/next-16.2.12.tgz", + "integrity": "sha512-iD59eYQWmbFcEbX7v/acG5DRym9iw1DdaPoD0WTA920naWsE25wShzJW4+UvAs8MK9EC2kBfIH6vtto1H1PHGw==", + "license": "MIT", + "dependencies": { + "@next/env": "16.2.12", + "@swc/helpers": "0.5.15", + "baseline-browser-mapping": "^2.9.19", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=20.9.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "16.2.12", + "@next/swc-darwin-x64": "16.2.12", + "@next/swc-linux-arm64-gnu": "16.2.12", + "@next/swc-linux-arm64-musl": "16.2.12", + "@next/swc-linux-x64-gnu": "16.2.12", + "@next/swc-linux-x64-musl": "16.2.12", + "@next/swc-win32-arm64-msvc": "16.2.12", + "@next/swc-win32-x64-msvc": "16.2.12", + "sharp": "^0.34.5" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.51.1", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-mdx-remote": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-6.0.0.tgz", + "integrity": "sha512-cJEpEZlgD6xGjB4jL8BnI8FaYdN9BzZM4NwadPe1YQr7pqoWjg9EBCMv3nXBkuHqMRfv2y33SzUsuyNh9LFAQQ==", + "license": "MPL-2.0", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@mdx-js/mdx": "^3.0.1", + "@mdx-js/react": "^3.0.1", + "unist-util-remove": "^4.0.0", + "unist-util-visit": "^5.1.0", + "vfile": "^6.0.1", + "vfile-matter": "^5.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=7" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/node-exports-info": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.2.tgz", + "integrity": "sha512-kXs9Go0cah0qHVV2v389IXQLdLCeE1xfFtjOAF+iobu0OIoG1pje8At2vMHyaPMiPMnG/LWP50twML21eMcAag==", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/node-releases": { + "version": "2.0.51", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz", + "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.2.tgz", + "integrity": "sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz", + "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rehype-katex": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz", + "integrity": "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/katex": "^0.16.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "katex": "^0.16.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-katex/node_modules/katex": { + "version": "0.16.47", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz", + "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-math": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", + "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-math": "^3.0.0", + "micromark-extension-math": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.7.tgz", + "integrity": "sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.2", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", + "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "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": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz", + "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-object-atoms": "^1.1.2", + "has-property-descriptors": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz", + "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/third-party-capital": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/third-party-capital/-/third-party-capital-1.0.20.tgz", + "integrity": "sha512-oB7yIimd8SuGptespDAZnNkzIz+NWaJCu2RMsbs4Wmp9zSDUM8Nhi3s2OOcqYuv3mN4hitXc8DVx+LyUmbUDiA==", + "license": "ISC" + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.8.tgz", + "integrity": "sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "is-typed-array": "^1.1.15", + "possible-typed-array-names": "^1.1.0", + "reflect.getprototypeof": "^1.0.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz", + "integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc" + }, + "engines": { + "node": ">=16.20.0" + }, + "optionalDependencies": { + "@typescript/typescript-aix-ppc64": "7.0.2", + "@typescript/typescript-darwin-arm64": "7.0.2", + "@typescript/typescript-darwin-x64": "7.0.2", + "@typescript/typescript-freebsd-arm64": "7.0.2", + "@typescript/typescript-freebsd-x64": "7.0.2", + "@typescript/typescript-linux-arm": "7.0.2", + "@typescript/typescript-linux-arm64": "7.0.2", + "@typescript/typescript-linux-loong64": "7.0.2", + "@typescript/typescript-linux-mips64el": "7.0.2", + "@typescript/typescript-linux-ppc64": "7.0.2", + "@typescript/typescript-linux-riscv64": "7.0.2", + "@typescript/typescript-linux-s390x": "7.0.2", + "@typescript/typescript-linux-x64": "7.0.2", + "@typescript/typescript-netbsd-arm64": "7.0.2", + "@typescript/typescript-netbsd-x64": "7.0.2", + "@typescript/typescript-openbsd-arm64": "7.0.2", + "@typescript/typescript-openbsd-x64": "7.0.2", + "@typescript/typescript-sunos-x64": "7.0.2", + "@typescript/typescript-win32-arm64": "7.0.2", + "@typescript/typescript-win32-x64": "7.0.2" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-4.0.0.tgz", + "integrity": "sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unrs-resolver": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.12.2.tgz", + "integrity": "sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.4" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.12.2", + "@unrs/resolver-binding-android-arm64": "1.12.2", + "@unrs/resolver-binding-darwin-arm64": "1.12.2", + "@unrs/resolver-binding-darwin-x64": "1.12.2", + "@unrs/resolver-binding-freebsd-x64": "1.12.2", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.12.2", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.12.2", + "@unrs/resolver-binding-linux-arm64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-arm64-musl": "1.12.2", + "@unrs/resolver-binding-linux-loong64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-loong64-musl": "1.12.2", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-riscv64-musl": "1.12.2", + "@unrs/resolver-binding-linux-s390x-gnu": "1.12.2", + "@unrs/resolver-binding-linux-x64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-x64-musl": "1.12.2", + "@unrs/resolver-binding-openharmony-arm64": "1.12.2", + "@unrs/resolver-binding-wasm32-wasi": "1.12.2", + "@unrs/resolver-binding-win32-arm64-msvc": "1.12.2", + "@unrs/resolver-binding-win32-ia32-msvc": "1.12.2", + "@unrs/resolver-binding-win32-x64-msvc": "1.12.2" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-matter": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-5.0.1.tgz", + "integrity": "sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw==", + "license": "MIT", + "dependencies": { + "vfile": "^6.0.0", + "yaml": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.22", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.22.tgz", + "integrity": "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..cd099363 --- /dev/null +++ b/package.json @@ -0,0 +1,35 @@ +{ + "name": "stemformulas-next", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev -p 8501", + "build": "next build", + "start": "next start", + "lint": "eslint" + }, + "dependencies": { + "@next/third-parties": "^16.2.12", + "dompurify": "^3.4.12", + "fuse.js": "^7.5.0", + "gray-matter": "^4.0.3", + "katex": "^0.18.1", + "marked": "^18.0.7", + "next": "16.2.12", + "next-mdx-remote": "^6.0.0", + "react": "19.2.4", + "react-dom": "19.2.4", + "rehype-katex": "^7.0.1", + "remark-math": "^6.0.0" + }, + "devDependencies": { + "@types/dompurify": "^3.0.5", + "@types/katex": "^0.16.8", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.2.12", + "typescript": "^7.0.2" + } +} diff --git a/public/404.html b/public/404.html new file mode 100644 index 00000000..99631a0d --- /dev/null +++ b/public/404.html @@ -0,0 +1,7 @@ +404 Page not found · stemformulas + + +

    Page Not Found 😕

    Error 404

    It seems that the page you've requested does not exist.

    \ No newline at end of file diff --git a/static/CNAME b/public/CNAME similarity index 100% rename from static/CNAME rename to public/CNAME diff --git a/public/about/index.html b/public/about/index.html new file mode 100644 index 00000000..7db500cc --- /dev/null +++ b/public/about/index.html @@ -0,0 +1,9 @@ +about · stemformulas + + +

    about

    Stemformulas is a website dedicated to providing a single place to look for STEM formulas.

    It was made by a few engineering students who were frustrated with the current state of formula searching online: +Kevin Lin and Pranjal Biswas, both based in Vancouver, Canada.

    We hope you find this site useful!

    Tech Stack #

    This site is made with the static website framework Hugo using the Congo theme, with many HTML/CSS/JS additions from our team.

    It is hosted on GitHub Pages, deployed conveniently with GitHub Actions.

    Contributing #

    If you want to add a formula to this site, there are two ways you can do so. The first way is easier for you and more work for us, and the second way is the opposite:

    1. Submit all the relevant information about the formula to our Google Form (can also be filled out on our suggest page).

    2. Create a pull request on the +GitHub repo. More detailed instructions can be found in the README.

    Suggestions/corrections #

    If you think you’ve found a mistake in one of the formula pages or if you otherwise have some suggestions, please make a GitHub account and submit an issue here.

    \ No newline at end of file diff --git a/public/about/index.xml b/public/about/index.xml new file mode 100644 index 00000000..45b3bac5 --- /dev/null +++ b/public/about/index.xml @@ -0,0 +1 @@ +about on stemformulashttps://stemformulas.com/about/Recent content in about on stemformulasHugo -- gohugo.ioen \ No newline at end of file diff --git a/static/android-chrome-192x192.png b/public/android-chrome-192x192.png similarity index 100% rename from static/android-chrome-192x192.png rename to public/android-chrome-192x192.png diff --git a/static/android-chrome-512x512.png b/public/android-chrome-512x512.png similarity index 100% rename from static/android-chrome-512x512.png rename to public/android-chrome-512x512.png diff --git a/static/apple-touch-icon.png b/public/apple-touch-icon.png similarity index 100% rename from static/apple-touch-icon.png rename to public/apple-touch-icon.png diff --git a/public/categories/index.html b/public/categories/index.html new file mode 100644 index 00000000..6f884849 --- /dev/null +++ b/public/categories/index.html @@ -0,0 +1,7 @@ +Categories · stemformulas + + +

    categories

      \ No newline at end of file diff --git a/public/categories/index.xml b/public/categories/index.xml new file mode 100644 index 00000000..624752c3 --- /dev/null +++ b/public/categories/index.xml @@ -0,0 +1 @@ +Categories on stemformulashttps://stemformulas.com/categories/Recent content in Categories on stemformulasHugo -- gohugo.ioen \ No newline at end of file diff --git a/public/css/main.bundle.min.2f8a8574135e63138441ef1bc068220172267b347c0b9fe5c876ed00628ebbb27f0710b219e441730aa3ed103da9b6020243f47aa56dbe2e1f7bb39f4bb9b7a8.css b/public/css/main.bundle.min.2f8a8574135e63138441ef1bc068220172267b347c0b9fe5c876ed00628ebbb27f0710b219e441730aa3ed103da9b6020243f47aa56dbe2e1f7bb39f4bb9b7a8.css new file mode 100644 index 00000000..85ae9dd1 --- /dev/null +++ b/public/css/main.bundle.min.2f8a8574135e63138441ef1bc068220172267b347c0b9fe5c876ed00628ebbb27f0710b219e441730aa3ed103da9b6020243f47aa56dbe2e1f7bb39f4bb9b7a8.css @@ -0,0 +1 @@ +:root{--color-neutral:255, 255, 255;--color-neutral-50:249, 250, 251;--color-neutral-100:243, 244, 246;--color-neutral-200:229, 231, 235;--color-neutral-300:209, 213, 219;--color-neutral-400:156, 163, 175;--color-neutral-500:107, 114, 128;--color-neutral-600:75, 85, 99;--color-neutral-700:55, 65, 81;--color-neutral-800:31, 41, 55;--color-neutral-900:17, 24, 39;--color-primary-50:248, 250, 252;--color-primary-100:241, 245, 249;--color-primary-200:226, 232, 240;--color-primary-300:203, 213, 225;--color-primary-400:148, 163, 184;--color-primary-500:100, 116, 139;--color-primary-600:71, 85, 105;--color-primary-700:51, 65, 85;--color-primary-800:30, 41, 59;--color-primary-900:15, 23, 42;--color-secondary-50:249, 250, 251;--color-secondary-100:243, 244, 246;--color-secondary-200:229, 231, 235;--color-secondary-300:209, 213, 219;--color-secondary-400:156, 163, 175;--color-secondary-500:107, 114, 128;--color-secondary-600:75, 85, 99;--color-secondary-700:55, 65, 81;--color-secondary-800:31, 41, 55;--color-secondary-900:17, 24, 39}/*!Congo v2.6.1 | MIT License | https://github.com/jpanther/congo*//*!tailwindcss v3.3.2 | MIT License | https://tailwindcss.com*/*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:initial}::before,::after{--tw-content:''}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500;text-decoration-color:rgba(var(--color-primary-300),1)}.prose :where(a):not(:where([class~=not-prose] *)):hover{color:rgba(var(--color-neutral),1);text-decoration:none;background-color:rgba(var(--color-primary-600),1);border-radius:.09rem}.prose :where(strong):not(:where([class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=As]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=as]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=Is]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=is]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose] *))::before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose] *))::after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure>*):not(:where([class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose :where(code):not(:where([class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose] *))::before{content:"`"}.prose :where(code):not(:where([class~=not-prose] *))::after{content:"`"}.prose :where(a code):not(:where([class~=not-prose] *)){color:var(--tw-prose-code)}.prose :where(h1 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-right:1.1428571em;padding-bottom:.8571429em;padding-left:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose] *))::before{content:none}.prose :where(pre code):not(:where([class~=not-prose] *))::after{content:none}.prose :where(table):not(:where([class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose] *)){vertical-align:top}.prose{--tw-prose-body:rgba(var(--color-neutral-700), 1);--tw-prose-headings:rgba(var(--color-neutral-800), 1);--tw-prose-lead:rgba(var(--color-neutral-500), 1);--tw-prose-links:rgba(var(--color-primary-700), 1);--tw-prose-bold:rgba(var(--color-neutral-900), 1);--tw-prose-counters:rgba(var(--color-neutral-800), 1);--tw-prose-bullets:rgba(var(--color-neutral-500), 1);--tw-prose-hr:rgba(var(--color-neutral-200), 1);--tw-prose-quotes:rgba(var(--color-neutral-700), 1);--tw-prose-quote-borders:rgba(var(--color-primary-200), 1);--tw-prose-captions:rgba(var(--color-neutral-500), 1);--tw-prose-code:rgba(var(--color-secondary-700), 1);--tw-prose-pre-code:rgba(var(--color-neutral-700), 1);--tw-prose-pre-bg:rgba(var(--color-neutral-50), 1);--tw-prose-th-borders:rgba(var(--color-neutral-500), 1);--tw-prose-td-borders:rgba(var(--color-neutral-300), 1);--tw-prose-invert-body:rgba(var(--color-neutral-300), 1);--tw-prose-invert-headings:rgba(var(--color-neutral-50), 1);--tw-prose-invert-lead:rgba(var(--color-neutral-500), 1);--tw-prose-invert-links:rgba(var(--color-primary-400), 1);--tw-prose-invert-bold:rgba(var(--color-neutral), 1);--tw-prose-invert-counters:rgba(var(--color-neutral-400), 1);--tw-prose-invert-bullets:rgba(var(--color-neutral-600), 1);--tw-prose-invert-hr:rgba(var(--color-neutral-500), 1);--tw-prose-invert-quotes:rgba(var(--color-neutral-200), 1);--tw-prose-invert-quote-borders:rgba(var(--color-primary-900), 1);--tw-prose-invert-captions:rgba(var(--color-neutral-400), 1);--tw-prose-invert-code:rgba(var(--color-secondary-400), 1);--tw-prose-invert-pre-code:rgba(var(--color-neutral-200), 1);--tw-prose-invert-pre-bg:rgba(var(--color-neutral-700), 1);--tw-prose-invert-th-borders:rgba(var(--color-neutral-500), 1);--tw-prose-invert-td-borders:rgba(var(--color-neutral-700), 1);font-size:1rem;line-height:1.75}.prose :where(video):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(hr+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose] *)){padding-top:.5714286em;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose :where(kbd):not(:where([class~=not-prose] *)){background-color:rgba(var(--color-neutral-200),1);padding:.1rem .4rem;border-radius:.25rem;font-size:.9rem;font-weight:600}.prose :where(mark):not(:where([class~=not-prose] *)){color:rgba(var(--color-neutral-800),1);background-color:rgba(var(--color-secondary-200),1);padding:.1rem .2rem;border-radius:.12rem}body a,body button{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.icon svg{height:1em;width:1em}#search-query::-webkit-search-cancel-button,#search-query::-webkit-search-decoration,#search-query::-webkit-search-results-button,#search-query::-webkit-search-results-decoration{display:none}body:has(#menu-controller:checked){height:100vh;overflow:hidden}#menu-button:has(#menu-controller:checked){visibility:hidden}#menu-controller:checked~#menu-wrapper{visibility:visible;opacity:1}:is([dir=rtl] .prose blockquote){border-left-width:0;border-right-width:4px;padding-right:1rem}:is([dir=rtl] .prose ul>li),:is([dir=rtl] .prose ol>li){margin-right:1.75rem;padding-left:0;padding-right:.5rem}:is([dir=rtl] .prose ol>li):before,:is([dir=rtl] .prose ul>li):before{left:auto;right:.25rem}:is([dir=rtl] .prose thead td:first-child),:is([dir=rtl] .prose thead th:first-child){padding-right:0}:is([dir=rtl] .prose thead td:last-child),:is([dir=rtl] .prose thead th:last-child){padding-left:0}.prose div.min-w-0.max-w-prose>*:first-child{margin-top:.75rem}.toc ul,.toc li{list-style-type:none;padding-left:0;padding-right:0;line-height:1.375}.toc ul ul{-webkit-padding-start:1rem;padding-inline-start:1rem}.toc a{font-weight:400;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}:is(.dark .toc a){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}:is([dir=rtl] .toc ul>li){margin-right:0}.highlight-wrapper{display:block}.highlight{position:relative;z-index:0}.highlight:hover>.copy-button{visibility:visible}.copy-button{visibility:hidden;position:absolute;right:0;top:0;z-index:10;width:5rem;cursor:pointer;white-space:nowrap;border-bottom-left-radius:.375rem;border-top-right-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-200),var(--tw-bg-opacity));padding-top:.25rem;padding-bottom:.25rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity));opacity:.9}:is(.dark .copy-button){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-600),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.copy-button:hover,.copy-button:focus,.copy-button:active,.copy-button:active:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}:is(.dark .copy-button:hover),:is(.dark .copy-button:focus),:is(.dark .copy-button:active),:is(.dark .copy-button:active:hover){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.copy-textarea{position:absolute;z-index:-10;opacity:.05}.chroma{border-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-50),var(--tw-bg-opacity));padding-top:.75rem;padding-bottom:.75rem;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}:is(.dark .chroma){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-700),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.chroma pre{margin:0;padding:0}.chroma .lntable{margin:0;display:block;width:auto;overflow:auto;font-size:1rem;line-height:1.5rem}.chroma .lnt,.chroma .ln{margin-right:.5rem;padding-left:.5rem;padding-right:.5rem;--tw-text-opacity:1;color:rgba(var(--color-neutral-600),var(--tw-text-opacity))}:is(.dark .chroma .lnt),:is(.dark .chroma .ln){--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}.chroma .lntd{padding:0;vertical-align:top}.chroma .lntd:last-of-type{width:100%}.chroma .hl{display:block;width:100%;--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}:is(.dark .chroma .hl){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .nc,.chroma .fm,.chroma .nn,.chroma .vc,.chroma .o{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}:is(.dark .chroma .k),:is(.dark .chroma .kd),:is(.dark .chroma .kn),:is(.dark .chroma .kp),:is(.dark .chroma .kr),:is(.dark .chroma .nc),:is(.dark .chroma .fm),:is(.dark .chroma .nn),:is(.dark .chroma .vc),:is(.dark .chroma .o){--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.chroma .kc{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}:is(.dark .chroma .kc){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .kt,.chroma .nv,.chroma .vi,.chroma .vm,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}:is(.dark .chroma .kt),:is(.dark .chroma .nv),:is(.dark .chroma .vi),:is(.dark .chroma .vm),:is(.dark .chroma .m),:is(.dark .chroma .mb),:is(.dark .chroma .mf),:is(.dark .chroma .mh),:is(.dark .chroma .mi),:is(.dark .chroma .il),:is(.dark .chroma .mo){--tw-text-opacity:1;color:rgba(var(--color-secondary-600),var(--tw-text-opacity))}.chroma .n,.chroma .nd,.chroma .ni,.chroma .nl{--tw-text-opacity:1;color:rgba(var(--color-secondary-900),var(--tw-text-opacity))}:is(.dark .chroma .n),:is(.dark .chroma .nd),:is(.dark .chroma .ni),:is(.dark .chroma .nl){--tw-text-opacity:1;color:rgba(var(--color-secondary-200),var(--tw-text-opacity))}.chroma .na,.chroma .nb,.chroma .bp,.chroma .nx,.chroma .py,.chroma .nt{--tw-text-opacity:1;color:rgba(var(--color-secondary-800),var(--tw-text-opacity))}:is(.dark .chroma .na),:is(.dark .chroma .nb),:is(.dark .chroma .bp),:is(.dark .chroma .nx),:is(.dark .chroma .py),:is(.dark .chroma .nt){--tw-text-opacity:1;color:rgba(var(--color-secondary-300),var(--tw-text-opacity))}.chroma .no,.chroma .ne,.chroma .vg{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}:is(.dark .chroma .no),:is(.dark .chroma .ne),:is(.dark .chroma .vg){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .nf{--tw-text-opacity:1;color:rgba(var(--color-secondary-600),var(--tw-text-opacity))}:is(.dark .chroma .nf){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .l,.chroma .ld,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .si,.chroma .sx,.chroma .s1,.chroma .gi,.chroma .go,.chroma .gp{--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}:is(.dark .chroma .l),:is(.dark .chroma .ld),:is(.dark .chroma .s),:is(.dark .chroma .sa),:is(.dark .chroma .sb),:is(.dark .chroma .sc),:is(.dark .chroma .dl),:is(.dark .chroma .sd),:is(.dark .chroma .s2),:is(.dark .chroma .sh),:is(.dark .chroma .si),:is(.dark .chroma .sx),:is(.dark .chroma .s1),:is(.dark .chroma .gi),:is(.dark .chroma .go),:is(.dark .chroma .gp){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .se{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}:is(.dark .chroma .se){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .sr,.chroma .ss{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}:is(.dark .chroma .sr),:is(.dark .chroma .ss){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .ow{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}:is(.dark .chroma .ow){--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.chroma .c,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{font-style:italic;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}:is(.dark .chroma .c),:is(.dark .chroma .cm),:is(.dark .chroma .c1),:is(.dark .chroma .cs),:is(.dark .chroma .cp),:is(.dark .chroma .cpf){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.chroma .ch{font-weight:600;font-style:italic;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}:is(.dark .chroma .ch){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.chroma .ge{font-style:italic}.chroma .gh{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .gs{font-weight:600}.chroma .gu,.chroma .gt{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .gl{text-decoration-line:underline}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-start-6{inset-inline-start:-1.5rem}.bottom-0{bottom:0}.end-0{inset-inline-end:0}.top-0{top:0}.top-20{top:5rem}.top-\[100vh\]{top:100vh}.top-\[calc\(100vh-5\.5rem\)\]{top:calc(100vh - 5.5rem)}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.order-first{order:-9999}.m-1{margin:.25rem}.m-auto{margin:auto}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.\!mb-0{margin-bottom:0!important}.\!mb-9{margin-bottom:2.25rem!important}.\!mt-0{margin-top:0!important}.-mb-1{margin-bottom:-.25rem}.-ms-5{-webkit-margin-start:-1.25rem;margin-inline-start:-1.25rem}.-mt-3{margin-top:-.75rem}.-mt-4{margin-top:-1rem}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-6{margin-bottom:1.5rem}.mb-\[2px\]{margin-bottom:2px}.me-14{-webkit-margin-end:3.5rem;margin-inline-end:3.5rem}.me-2{-webkit-margin-end:.5rem;margin-inline-end:.5rem}.me-4{-webkit-margin-end:1rem;margin-inline-end:1rem}.ml-2{margin-left:.5rem}.mr-2{margin-right:.5rem}.ms-1{-webkit-margin-start:.25rem;margin-inline-start:.25rem}.ms-2{-webkit-margin-start:.5rem;margin-inline-start:.5rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[0\.1rem\]{margin-top:.1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.hidden{display:none}.h-12{height:3rem}.h-24{height:6rem}.h-36{height:9rem}.h-8{height:2rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[10rem\]{max-height:10rem}.max-h-\[4\.5rem\]{max-height:4.5rem}.min-h-0{min-height:0}.w-12{width:3rem}.w-24{width:6rem}.w-36{width:9rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-full{width:100%}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[1\.8rem\]{min-width:1.8rem}.min-w-\[2\.4rem\]{min-width:2.4rem}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-\[10rem\]{max-width:10rem}.max-w-\[6rem\]{max-width:6rem}.max-w-full{max-width:100%}.max-w-prose{max-width:65ch}.flex-auto{flex:auto}.flex-none{flex:none}.grow{flex-grow:1}.-translate-y-8{--tw-translate-y:-2rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.place-self-center{place-self:center}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.scroll-smooth{scroll-behavior:smooth}.\!rounded-md{border-radius:.375rem!important}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.border{border-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.border-dotted{border-style:dotted}.border-neutral-200{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-200),var(--tw-border-opacity))}.border-neutral-300{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-300),var(--tw-border-opacity))}.border-neutral-400{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-400),var(--tw-border-opacity))}.border-primary-400{--tw-border-opacity:1;border-color:rgba(var(--color-primary-400),var(--tw-border-opacity))}.bg-neutral{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral),var(--tw-bg-opacity))}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-100),var(--tw-bg-opacity))}.bg-neutral-100\/50{background-color:rgba(var(--color-neutral-100),.5)}.bg-neutral-300{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-300),var(--tw-bg-opacity))}.bg-neutral-500\/50{background-color:rgba(var(--color-neutral-500),.5)}.bg-neutral\/50{background-color:rgba(var(--color-neutral),.5)}.bg-primary-100{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.bg-primary-200{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-200),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-left{-o-object-position:left;object-position:left}.p-1{padding:.25rem}.p-4{padding:1rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[1px\]{padding-top:1px;padding-bottom:1px}.pb-4{padding-bottom:1rem}.pe-2{-webkit-padding-end:.5rem;padding-inline-end:.5rem}.pe-3{-webkit-padding-end:.75rem;padding-inline-end:.75rem}.pe-4{-webkit-padding-end:1rem;padding-inline-end:1rem}.pe-5{-webkit-padding-end:1.25rem;padding-inline-end:1.25rem}.ps-2{-webkit-padding-start:.5rem;padding-inline-start:.5rem}.ps-5{-webkit-padding-start:1.25rem;padding-inline-start:1.25rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-text-bottom{vertical-align:text-bottom}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.6rem\]{font-size:.6rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-3{line-height:.75rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-relaxed{line-height:1.625}.\!text-neutral{--tw-text-opacity:1 !important;color:rgba(var(--color-neutral),var(--tw-text-opacity))!important}.text-neutral-400{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.text-neutral-800{--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity:1;color:rgba(var(--color-neutral-900),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--color-primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.text-primary-700{--tw-text-opacity:1;color:rgba(var(--color-primary-700),var(--tw-text-opacity))}.\!no-underline{text-decoration-line:none!important}.decoration-neutral-300{text-decoration-color:rgba(var(--color-neutral-300),1)}.decoration-primary-500{text-decoration-color:rgba(var(--color-primary-500),1)}.opacity-0{opacity:0}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}:is(.dark .dark\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}:is(.dark .dark\:prose-invert) :where(a):not(:where([class~=not-prose] *)){text-decoration-color:rgba(var(--color-neutral-600),1)}:is(.dark .dark\:prose-invert) :where(kbd):not(:where([class~=not-prose] *)){color:rgba(var(--color-neutral-200),1);background-color:rgba(var(--color-neutral-700),1)}:is(.dark .dark\:prose-invert) :where(mark):not(:where([class~=not-prose] *)){background-color:rgba(var(--color-secondary-400),1)}.first\:mt-8:first-child{margin-top:2rem}.hover\:scale-125:hover{--tw-scale-x:1.25;--tw-scale-y:1.25;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.hover\:border-primary-300:hover{--tw-border-opacity:1;border-color:rgba(var(--color-primary-300),var(--tw-border-opacity))}.hover\:\!bg-primary-500:hover{--tw-bg-opacity:1 !important;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))!important}.hover\:bg-primary-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.hover\:bg-primary-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))}.hover\:bg-primary-600:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.hover\:text-neutral:hover{--tw-text-opacity:1;color:rgba(var(--color-neutral),var(--tw-text-opacity))}.hover\:text-primary-500:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-500),var(--tw-text-opacity))}.hover\:text-primary-600:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.hover\:text-primary-700:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-700),var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-primary-400:hover{text-decoration-color:rgba(var(--color-primary-400),1)}.hover\:decoration-2:hover{text-decoration-thickness:2px}.hover\:underline-offset-2:hover{text-underline-offset:2px}.focus\:translate-y-0:focus{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.focus\:bg-primary-100:focus{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.focus\:outline-dotted:focus{outline-style:dotted}.focus\:outline-2:focus{outline-width:2px}.focus\:outline-transparent:focus{outline-color:transparent}.group:hover .group-hover\:-translate-x-\[2px\]{--tw-translate-x:-2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-primary-300{--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.group:hover .group-hover\:text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.group:hover .group-hover\:underline{text-decoration-line:underline}.group:hover .group-hover\:decoration-primary-500{text-decoration-color:rgba(var(--color-primary-500),1)}.group:hover .group-hover\:decoration-2{text-decoration-thickness:2px}.group:hover .group-hover\:underline-offset-2{text-underline-offset:2px}.group:hover .group-hover\:opacity-100{opacity:1}:is([dir=ltr] .ltr\:block){display:block}:is([dir=ltr] .ltr\:inline){display:inline}:is([dir=ltr] .ltr\:hidden){display:none}:is([dir=ltr] .ltr\:text-right){text-align:right}:is([dir=rtl] .rtl\:block){display:block}:is([dir=rtl] .rtl\:inline){display:inline}:is([dir=rtl] .rtl\:hidden){display:none}:is([dir=rtl] .rtl\:text-left){text-align:left}:is(.dark .dark\:inline){display:inline}:is(.dark .dark\:flex){display:flex}:is(.dark .dark\:hidden){display:none}:is(.dark .dark\:border-neutral-600){--tw-border-opacity:1;border-color:rgba(var(--color-neutral-600),var(--tw-border-opacity))}:is(.dark .dark\:border-neutral-700){--tw-border-opacity:1;border-color:rgba(var(--color-neutral-700),var(--tw-border-opacity))}:is(.dark .dark\:border-primary-600){--tw-border-opacity:1;border-color:rgba(var(--color-primary-600),var(--tw-border-opacity))}:is(.dark .dark\:bg-neutral-600){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-600),var(--tw-bg-opacity))}:is(.dark .dark\:bg-neutral-700){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-700),var(--tw-bg-opacity))}:is(.dark .dark\:bg-neutral-800){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-800),var(--tw-bg-opacity))}:is(.dark .dark\:bg-neutral-800\/50){background-color:rgba(var(--color-neutral-800),.5)}:is(.dark .dark\:bg-neutral-900\/50){background-color:rgba(var(--color-neutral-900),.5)}:is(.dark .dark\:bg-primary-400){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400),var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary-800){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-800),var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary-900){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}:is(.dark .dark\:text-neutral){--tw-text-opacity:1;color:rgba(var(--color-neutral),var(--tw-text-opacity))}:is(.dark .dark\:text-neutral-100){--tw-text-opacity:1;color:rgba(var(--color-neutral-100),var(--tw-text-opacity))}:is(.dark .dark\:text-neutral-300){--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}:is(.dark .dark\:text-neutral-400){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}:is(.dark .dark\:text-neutral-500){--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}:is(.dark .dark\:text-neutral-800){--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-400){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}:is(.dark .dark\:hover\:border-primary-600:hover){--tw-border-opacity:1;border-color:rgba(var(--color-primary-600),var(--tw-border-opacity))}:is(.dark .dark\:hover\:\!bg-primary-700:hover){--tw-bg-opacity:1 !important;background-color:rgba(var(--color-primary-700),var(--tw-bg-opacity))!important}:is(.dark .dark\:hover\:bg-primary-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400),var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-primary-900:hover){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}:is(.dark .dark\:hover\:text-neutral-800:hover){--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-primary-400:hover){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}:is(.dark .dark\:focus\:bg-primary-900:focus){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-neutral-700){--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-primary-400){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}@media print{.print\:hidden{display:none}}@media(min-width:640px){.sm\:mb-0{margin-bottom:0}.sm\:me-7{-webkit-margin-end:1.75rem;margin-inline-end:1.75rem}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:max-h-\[7\.5rem\]{max-height:7.5rem}.sm\:w-1\/2{width:50%}.sm\:w-40{width:10rem}.sm\:max-w-\[10rem\]{max-width:10rem}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:p-6{padding:1.5rem}.sm\:px-14{padding-left:3.5rem;padding-right:3.5rem}.sm\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.sm\:pe-6{-webkit-padding-end:1.5rem;padding-inline-end:1.5rem}.sm\:pt-10{padding-top:2.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:last\:me-0:last-child{-webkit-margin-end:0;margin-inline-end:0}.sm\:last\:me-0\.5:last-child{-webkit-margin-end:.125rem;margin-inline-end:.125rem}}@media(min-width:768px){.md\:w-1\/3{width:33.333333%}.md\:p-\[10vh\]{padding:10vh}.md\:px-24{padding-left:6rem;padding-right:6rem}}@media(min-width:1024px){.lg\:sticky{position:sticky}.lg\:top-10{top:2.5rem}.lg\:order-last{order:9999}.lg\:hidden{display:none}.lg\:w-1\/4{width:25%}.lg\:max-w-xs{max-width:20rem}.lg\:flex-row{flex-direction:row}.lg\:p-\[12vh\]{padding:12vh}.lg\:px-32{padding-left:8rem;padding-right:8rem}.lg\:ps-8{-webkit-padding-start:2rem;padding-inline-start:2rem}}@media(min-width:1280px){.xl\:w-1\/5{width:20%}}.sm\:items-start{align-items:start}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.ml-4{margin-left:1rem}.mr-4{margin-right:1rem}ul,ol{margin:0;margin-bottom:0;padding:0;list-style-type:none}ul.image-tags li{display:inline-block;padding:0;margin:0}ul.image-tags li a:hover,ul.image-tags li a.filtered,ul.image-tags li form{background:#f7421b;opacity:1;text-decoration:none;border:none}ul.image-tags li a:link,ul.image-tags li a:visited,ul.image-tags li form{display:inline-block;padding:3px 10px 5px;margin:0 5px 10px 0;background:#2b2b33;color:#fff;-webkit-transition:.3s;-webkit-border-radius:8px;-moz-border-radius:8px}.tag-opacity-1{opacity:.43}.tag-opacity-2{opacity:.46}.tag-opacity-3{opacity:.49}.tag-opacity-4{opacity:.42}.tag-opacity-5{opacity:.55}.tag-opacity-6{opacity:.58}.tag-opacity-7{opacity:.61}.tag-opacity-8{opacity:.64}.tag-opacity-9{opacity:.67}.tag-opacity-10{opacity:.7}.tag-opacity-11{opacity:.73}.tag-opacity-12{opacity:.76}.tag-opacity-13{opacity:.79}.tag-opacity-14{opacity:.82}.tag-opacity-15{opacity:.85}.tag-opacity-16{opacity:.88}.tag-opacity-17{opacity:.91}.tag-opacity-18{opacity:.94}.tag-opacity-19{opacity:.97}.tag-opacity-20{opacity:1}.animated{animation:rotating .7s ease 0s 1 normal forwards}@keyframes rotating{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.focus\:bg-primary-100:focus{--tw-bg-opacity:1;background-color:rgba(180,180,180,var(--tw-bg-opacity))}.katex-html{font-size:1.2em;color:#000}.katex-display katex{padding-left:.5em!important;text-align:left}.katex{padding-left:0!important}.mt-8{margin-top:2rem}.mt-4{margin-top:1rem}.mt-2{margin-top:.5rem}.mt-1{margin-top:.25rem}.mt-0{margin-top:0}.mt-16{margin-top:4rem}.mt-20{margin-top:5rem}.border-neutral-200{border-width:1px;border-color:rgba(180,180,180,var(--tw-bg-opacity))}.mb-8{margin-bottom:2rem}.mb-10{margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.ml-1{margin-left:.15rem}.hover\:border-black:hover{--tw-border-opacity:1;border-color:rgba(100,100,100,var(--tw-bg-opacity))}.lg\:p-\[2vh\]{padding:2vh}img[alt=diagram]{width:400px}.grid-container a{border-width:1px;border-radius:20px;border-color:#a9a9a9;overflow:hidden;padding:10px}.grid-container{display:grid;grid-template-columns:auto;gap:15px}@media(min-width:640px){.grid-container{grid-template-columns:auto auto}}@media(min-width:1024px){.grid-container{grid-template-columns:auto auto auto}} \ No newline at end of file diff --git a/public/css/main.bundle.min.7948eb3e8ee27dc6582500b44889312a19ddd9ddd97ba539aaa88ffc96c9e880760fe941e3b7df443cbe49be2a16c6468147061c4b633586194c6625d722475a.css b/public/css/main.bundle.min.7948eb3e8ee27dc6582500b44889312a19ddd9ddd97ba539aaa88ffc96c9e880760fe941e3b7df443cbe49be2a16c6468147061c4b633586194c6625d722475a.css new file mode 100644 index 00000000..ef966566 --- /dev/null +++ b/public/css/main.bundle.min.7948eb3e8ee27dc6582500b44889312a19ddd9ddd97ba539aaa88ffc96c9e880760fe941e3b7df443cbe49be2a16c6468147061c4b633586194c6625d722475a.css @@ -0,0 +1 @@ +:root{--color-neutral:255, 255, 255;--color-neutral-50:249, 250, 251;--color-neutral-100:243, 244, 246;--color-neutral-200:229, 231, 235;--color-neutral-300:209, 213, 219;--color-neutral-400:156, 163, 175;--color-neutral-500:107, 114, 128;--color-neutral-600:75, 85, 99;--color-neutral-700:55, 65, 81;--color-neutral-800:31, 41, 55;--color-neutral-900:17, 24, 39;--color-primary-50:248, 250, 252;--color-primary-100:241, 245, 249;--color-primary-200:226, 232, 240;--color-primary-300:203, 213, 225;--color-primary-400:148, 163, 184;--color-primary-500:100, 116, 139;--color-primary-600:71, 85, 105;--color-primary-700:51, 65, 85;--color-primary-800:30, 41, 59;--color-primary-900:15, 23, 42;--color-secondary-50:249, 250, 251;--color-secondary-100:243, 244, 246;--color-secondary-200:229, 231, 235;--color-secondary-300:209, 213, 219;--color-secondary-400:156, 163, 175;--color-secondary-500:107, 114, 128;--color-secondary-600:75, 85, 99;--color-secondary-700:55, 65, 81;--color-secondary-800:31, 41, 55;--color-secondary-900:17, 24, 39}/*!Congo v2.5.4 | MIT License | https://github.com/jpanther/congo*//*!tailwindcss v3.2.7 | MIT License | https://tailwindcss.com*/*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:initial}::before,::after{--tw-content:''}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500;text-decoration-color:rgba(var(--color-primary-300),1)}.prose :where(a):not(:where([class~=not-prose] *)):hover{color:rgba(var(--color-neutral),1);text-decoration:none;background-color:rgba(var(--color-primary-600),1);border-radius:.09rem}.prose :where(strong):not(:where([class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=As]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=as]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=Is]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=is]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose] *))::before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose] *))::after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure>*):not(:where([class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose :where(code):not(:where([class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose] *))::before{content:"`"}.prose :where(code):not(:where([class~=not-prose] *))::after{content:"`"}.prose :where(a code):not(:where([class~=not-prose] *)){color:var(--tw-prose-code)}.prose :where(h1 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-right:1.1428571em;padding-bottom:.8571429em;padding-left:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose] *))::before{content:none}.prose :where(pre code):not(:where([class~=not-prose] *))::after{content:none}.prose :where(table):not(:where([class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose] *)){vertical-align:top}.prose{--tw-prose-body:rgba(var(--color-neutral-700), 1);--tw-prose-headings:rgba(var(--color-neutral-800), 1);--tw-prose-lead:rgba(var(--color-neutral-500), 1);--tw-prose-links:rgba(var(--color-primary-700), 1);--tw-prose-bold:rgba(var(--color-neutral-900), 1);--tw-prose-counters:rgba(var(--color-neutral-800), 1);--tw-prose-bullets:rgba(var(--color-neutral-500), 1);--tw-prose-hr:rgba(var(--color-neutral-200), 1);--tw-prose-quotes:rgba(var(--color-neutral-700), 1);--tw-prose-quote-borders:rgba(var(--color-primary-200), 1);--tw-prose-captions:rgba(var(--color-neutral-500), 1);--tw-prose-code:rgba(var(--color-secondary-700), 1);--tw-prose-pre-code:rgba(var(--color-neutral-700), 1);--tw-prose-pre-bg:rgba(var(--color-neutral-50), 1);--tw-prose-th-borders:rgba(var(--color-neutral-500), 1);--tw-prose-td-borders:rgba(var(--color-neutral-300), 1);--tw-prose-invert-body:rgba(var(--color-neutral-300), 1);--tw-prose-invert-headings:rgba(var(--color-neutral-50), 1);--tw-prose-invert-lead:rgba(var(--color-neutral-500), 1);--tw-prose-invert-links:rgba(var(--color-primary-400), 1);--tw-prose-invert-bold:rgba(var(--color-neutral), 1);--tw-prose-invert-counters:rgba(var(--color-neutral-400), 1);--tw-prose-invert-bullets:rgba(var(--color-neutral-600), 1);--tw-prose-invert-hr:rgba(var(--color-neutral-500), 1);--tw-prose-invert-quotes:rgba(var(--color-neutral-200), 1);--tw-prose-invert-quote-borders:rgba(var(--color-primary-900), 1);--tw-prose-invert-captions:rgba(var(--color-neutral-400), 1);--tw-prose-invert-code:rgba(var(--color-secondary-400), 1);--tw-prose-invert-pre-code:rgba(var(--color-neutral-200), 1);--tw-prose-invert-pre-bg:rgba(var(--color-neutral-700), 1);--tw-prose-invert-th-borders:rgba(var(--color-neutral-500), 1);--tw-prose-invert-td-borders:rgba(var(--color-neutral-700), 1);font-size:1rem;line-height:1.75}.prose :where(video):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(hr+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose] *)){padding-top:.5714286em;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose :where(kbd):not(:where([class~=not-prose] *)){background-color:rgba(var(--color-neutral-200),1);padding:.1rem .4rem;border-radius:.25rem;font-size:.9rem;font-weight:600}.prose :where(mark):not(:where([class~=not-prose] *)){color:rgba(var(--color-neutral-800),1);background-color:rgba(var(--color-secondary-200),1);padding:.1rem .2rem;border-radius:.12rem}body a,body button{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.icon svg{height:1em;width:1em}#search-query::-webkit-search-cancel-button,#search-query::-webkit-search-decoration,#search-query::-webkit-search-results-button,#search-query::-webkit-search-results-decoration{display:none}body:has(#menu-controller:checked){height:100vh;overflow:hidden}#menu-button:has(#menu-controller:checked){visibility:hidden}#menu-controller:checked~#menu-wrapper{visibility:visible;opacity:1}[dir=rtl] .prose blockquote{border-left-width:0;border-right-width:4px;padding-right:1rem}[dir=rtl] .prose ul>li,[dir=rtl] .prose ol>li{margin-right:1.75rem;padding-left:0;padding-right:.5rem}[dir=rtl] .prose ol>li:before,[dir=rtl] .prose ul>li:before{left:auto;right:.25rem}[dir=rtl] .prose thead td:first-child,[dir=rtl] .prose thead th:first-child{padding-right:0}[dir=rtl] .prose thead td:last-child,[dir=rtl] .prose thead th:last-child{padding-left:0}.prose div.min-w-0.max-w-prose>*:first-child{margin-top:.75rem}.toc ul,.toc li{list-style-type:none;padding-left:0;padding-right:0;line-height:1.375}[dir=ltr] .toc ul ul{padding-left:1rem}[dir=rtl] .toc ul ul{padding-right:1rem}.toc a{font-weight:400;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.dark .toc a{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}[dir=rtl] .toc ul>li{margin-right:0}.highlight-wrapper{display:block}.highlight{position:relative;z-index:0}.highlight:hover>.copy-button{visibility:visible}.copy-button{visibility:hidden;position:absolute;top:0;right:0;z-index:10;width:5rem;cursor:pointer;white-space:nowrap;border-bottom-left-radius:.375rem;border-top-right-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-200),var(--tw-bg-opacity));padding-top:.25rem;padding-bottom:.25rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity));opacity:.9}.dark .copy-button{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-600),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.copy-button:hover,.copy-button:focus,.copy-button:active,.copy-button:active:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.dark .copy-button:hover,.dark .copy-button:focus,.dark .copy-button:active,.dark .copy-button:active:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.copy-textarea{position:absolute;z-index:-10;opacity:.05}.chroma{border-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-50),var(--tw-bg-opacity));padding-top:.75rem;padding-bottom:.75rem;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.dark .chroma{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-700),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.chroma pre{margin:0;padding:0}.chroma .lntable{margin:0;display:block;width:auto;overflow:auto;font-size:1rem;line-height:1.5rem}.chroma .lnt,.chroma .ln{margin-right:.5rem;padding-left:.5rem;padding-right:.5rem;--tw-text-opacity:1;color:rgba(var(--color-neutral-600),var(--tw-text-opacity))}.dark .chroma .lnt,.dark .chroma .ln{--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}.chroma .lntd{padding:0;vertical-align:top}.chroma .lntd:last-of-type{width:100%}.chroma .hl{display:block;width:100%;--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.dark .chroma .hl{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .nc,.chroma .fm,.chroma .nn,.chroma .vc,.chroma .o{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.dark .chroma .k,.dark .chroma .kd,.dark .chroma .kn,.dark .chroma .kp,.dark .chroma .kr,.dark .chroma .nc,.dark .chroma .fm,.dark .chroma .nn,.dark .chroma .vc,.dark .chroma .o{--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.chroma .kc{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.dark .chroma .kc{--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .kt,.chroma .nv,.chroma .vi,.chroma .vm,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.dark .chroma .kt,.dark .chroma .nv,.dark .chroma .vi,.dark .chroma .vm,.dark .chroma .m,.dark .chroma .mb,.dark .chroma .mf,.dark .chroma .mh,.dark .chroma .mi,.dark .chroma .il,.dark .chroma .mo{--tw-text-opacity:1;color:rgba(var(--color-secondary-600),var(--tw-text-opacity))}.chroma .n,.chroma .nd,.chroma .ni,.chroma .nl{--tw-text-opacity:1;color:rgba(var(--color-secondary-900),var(--tw-text-opacity))}.dark .chroma .n,.dark .chroma .nd,.dark .chroma .ni,.dark .chroma .nl{--tw-text-opacity:1;color:rgba(var(--color-secondary-200),var(--tw-text-opacity))}.chroma .na,.chroma .nb,.chroma .bp,.chroma .nx,.chroma .py,.chroma .nt{--tw-text-opacity:1;color:rgba(var(--color-secondary-800),var(--tw-text-opacity))}.dark .chroma .na,.dark .chroma .nb,.dark .chroma .bp,.dark .chroma .nx,.dark .chroma .py,.dark .chroma .nt{--tw-text-opacity:1;color:rgba(var(--color-secondary-300),var(--tw-text-opacity))}.chroma .no,.chroma .ne,.chroma .vg{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.dark .chroma .no,.dark .chroma .ne,.dark .chroma .vg{--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .nf{--tw-text-opacity:1;color:rgba(var(--color-secondary-600),var(--tw-text-opacity))}.dark .chroma .nf{--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .l,.chroma .ld,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .si,.chroma .sx,.chroma .s1,.chroma .gi,.chroma .go,.chroma .gp{--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}.dark .chroma .l,.dark .chroma .ld,.dark .chroma .s,.dark .chroma .sa,.dark .chroma .sb,.dark .chroma .sc,.dark .chroma .dl,.dark .chroma .sd,.dark .chroma .s2,.dark .chroma .sh,.dark .chroma .si,.dark .chroma .sx,.dark .chroma .s1,.dark .chroma .gi,.dark .chroma .go,.dark .chroma .gp{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .se{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.dark .chroma .se{--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .sr,.chroma .ss{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}.dark .chroma .sr,.dark .chroma .ss{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .ow{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.dark .chroma .ow{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.chroma .c,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{font-style:italic;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.dark .chroma .c,.dark .chroma .cm,.dark .chroma .c1,.dark .chroma .cs,.dark .chroma .cp,.dark .chroma .cpf{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.chroma .ch{font-weight:600;font-style:italic;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.dark .chroma .ch{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.chroma .ge{font-style:italic}.chroma .gh{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .gs{font-weight:600}.chroma .gu,.chroma .gt{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .gl{text-decoration-line:underline}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.top-0{top:0}.top-20{top:5rem}.top-\[100vh\]{top:100vh}.top-\[calc\(100vh-5\.5rem\)\]{top:calc(100vh - 5.5rem)}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.order-first{order:-9999}.m-1{margin:.25rem}.m-auto{margin:auto}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.\!mb-0{margin-bottom:0!important}.\!mb-9{margin-bottom:2.25rem!important}.\!mt-0{margin-top:0!important}.-mb-1{margin-bottom:-.25rem}.-mt-3{margin-top:-.75rem}.-mt-4{margin-top:-1rem}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-6{margin-bottom:1.5rem}.mb-\[2px\]{margin-bottom:2px}.ml-2{margin-left:.5rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[0\.1rem\]{margin-top:.1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.hidden{display:none}.h-12{height:3rem}.h-24{height:6rem}.h-36{height:9rem}.h-8{height:2rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[10rem\]{max-height:10rem}.max-h-\[4\.5rem\]{max-height:4.5rem}.min-h-0{min-height:0}.w-12{width:3rem}.w-24{width:6rem}.w-36{width:9rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-full{width:100%}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[1\.8rem\]{min-width:1.8rem}.min-w-\[2\.4rem\]{min-width:2.4rem}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-\[10rem\]{max-width:10rem}.max-w-\[6rem\]{max-width:6rem}.max-w-full{max-width:100%}.max-w-prose{max-width:65ch}.flex-auto{flex:auto}.flex-none{flex:none}.grow{flex-grow:1}.-translate-y-8{--tw-translate-y:-2rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.place-self-center{place-self:center}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.scroll-smooth{scroll-behavior:smooth}.\!rounded-md{border-radius:.375rem!important}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.border{border-width:1px}.border-t{border-top-width:1px}.border-dotted{border-style:dotted}.border-neutral-200{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-200),var(--tw-border-opacity))}.border-neutral-300{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-300),var(--tw-border-opacity))}.border-neutral-400{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-400),var(--tw-border-opacity))}.border-primary-400{--tw-border-opacity:1;border-color:rgba(var(--color-primary-400),var(--tw-border-opacity))}.bg-neutral{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral),var(--tw-bg-opacity))}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-100),var(--tw-bg-opacity))}.bg-neutral-100\/50{background-color:rgba(var(--color-neutral-100),.5)}.bg-neutral-300{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-300),var(--tw-bg-opacity))}.bg-neutral-500\/50{background-color:rgba(var(--color-neutral-500),.5)}.bg-neutral\/50{background-color:rgba(var(--color-neutral),.5)}.bg-primary-100{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.bg-primary-200{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-200),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-left{-o-object-position:left;object-position:left}.p-1{padding:.25rem}.p-4{padding:1rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[1px\]{padding-top:1px;padding-bottom:1px}.pb-4{padding-bottom:1rem}.pl-2{padding-left:.5rem}.pr-4{padding-right:1rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-text-bottom{vertical-align:text-bottom}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.6rem\]{font-size:.6rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-3{line-height:.75rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-relaxed{line-height:1.625}.\!text-neutral{--tw-text-opacity:1 !important;color:rgba(var(--color-neutral),var(--tw-text-opacity))!important}.text-neutral-400{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.text-neutral-800{--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity:1;color:rgba(var(--color-neutral-900),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--color-primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.text-primary-700{--tw-text-opacity:1;color:rgba(var(--color-primary-700),var(--tw-text-opacity))}.\!no-underline{text-decoration-line:none!important}.decoration-neutral-300{text-decoration-color:rgba(var(--color-neutral-300),1)}.decoration-primary-500{text-decoration-color:rgba(var(--color-primary-500),1)}.opacity-0{opacity:0}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.dark .dark\:prose-invert{--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.dark .dark\:prose-invert :where(a):not(:where([class~=not-prose] *)){text-decoration-color:rgba(var(--color-neutral-600),1)}.dark .dark\:prose-invert :where(kbd):not(:where([class~=not-prose] *)){color:rgba(var(--color-neutral-200),1);background-color:rgba(var(--color-neutral-700),1)}.dark .dark\:prose-invert :where(mark):not(:where([class~=not-prose] *)){background-color:rgba(var(--color-secondary-400),1)}.first\:mt-8:first-child{margin-top:2rem}.hover\:scale-125:hover{--tw-scale-x:1.25;--tw-scale-y:1.25;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.hover\:border-primary-300:hover{--tw-border-opacity:1;border-color:rgba(var(--color-primary-300),var(--tw-border-opacity))}.hover\:\!bg-primary-500:hover{--tw-bg-opacity:1 !important;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))!important}.hover\:bg-primary-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.hover\:bg-primary-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))}.hover\:bg-primary-600:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.hover\:text-neutral:hover{--tw-text-opacity:1;color:rgba(var(--color-neutral),var(--tw-text-opacity))}.hover\:text-primary-500:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-500),var(--tw-text-opacity))}.hover\:text-primary-600:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.hover\:text-primary-700:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-700),var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-primary-400:hover{text-decoration-color:rgba(var(--color-primary-400),1)}.hover\:decoration-2:hover{text-decoration-thickness:2px}.hover\:underline-offset-2:hover{text-underline-offset:2px}.focus\:translate-y-0:focus{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.focus\:bg-primary-100:focus{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.focus\:outline-dotted:focus{outline-style:dotted}.focus\:outline-2:focus{outline-width:2px}.focus\:outline-transparent:focus{outline-color:transparent}.group:hover .group-hover\:-translate-x-\[2px\]{--tw-translate-x:-2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-\[2px\]{--tw-translate-x:2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-primary-300{--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.group:hover .group-hover\:text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.group:hover .group-hover\:underline{text-decoration-line:underline}.group:hover .group-hover\:decoration-primary-500{text-decoration-color:rgba(var(--color-primary-500),1)}.group:hover .group-hover\:decoration-2{text-decoration-thickness:2px}.group:hover .group-hover\:underline-offset-2{text-underline-offset:2px}.group:hover .group-hover\:opacity-100{opacity:1}[dir=ltr] .ltr\:-left-6{left:-1.5rem}[dir=ltr] .ltr\:right-0{right:0}[dir=ltr] .ltr\:-ml-5{margin-left:-1.25rem}[dir=ltr] .ltr\:ml-1{margin-left:.25rem}[dir=ltr] .ltr\:ml-2{margin-left:.5rem}[dir=ltr] .ltr\:mr-14{margin-right:3.5rem}[dir=ltr] .ltr\:mr-4{margin-right:1rem}[dir=ltr] .ltr\:block{display:block}[dir=ltr] .ltr\:inline{display:inline}[dir=ltr] .ltr\:hidden{display:none}[dir=ltr] .ltr\:border-l{border-left-width:1px}[dir=ltr] .ltr\:pl-5{padding-left:1.25rem}[dir=ltr] .ltr\:pr-2{padding-right:.5rem}[dir=ltr] .ltr\:pr-3{padding-right:.75rem}[dir=ltr] .ltr\:text-right{text-align:right}[dir=rtl] .rtl\:-right-6{right:-1.5rem}[dir=rtl] .rtl\:left-0{left:0}[dir=rtl] .rtl\:-mr-5{margin-right:-1.25rem}[dir=rtl] .rtl\:ml-14{margin-left:3.5rem}[dir=rtl] .rtl\:ml-4{margin-left:1rem}[dir=rtl] .rtl\:mr-1{margin-right:.25rem}[dir=rtl] .rtl\:mr-2{margin-right:.5rem}[dir=rtl] .rtl\:block{display:block}[dir=rtl] .rtl\:inline{display:inline}[dir=rtl] .rtl\:hidden{display:none}[dir=rtl] .rtl\:border-r{border-right-width:1px}[dir=rtl] .rtl\:pl-2{padding-left:.5rem}[dir=rtl] .rtl\:pl-3{padding-left:.75rem}[dir=rtl] .rtl\:pr-5{padding-right:1.25rem}[dir=rtl] .rtl\:text-left{text-align:left}.dark .dark\:inline{display:inline}.dark .dark\:flex{display:flex}.dark .dark\:hidden{display:none}.dark .dark\:border-neutral-600{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-600),var(--tw-border-opacity))}.dark .dark\:border-neutral-700{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-700),var(--tw-border-opacity))}.dark .dark\:border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--color-primary-600),var(--tw-border-opacity))}.dark .dark\:bg-neutral-600{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-600),var(--tw-bg-opacity))}.dark .dark\:bg-neutral-700{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-700),var(--tw-bg-opacity))}.dark .dark\:bg-neutral-800{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-800),var(--tw-bg-opacity))}.dark .dark\:bg-neutral-800\/50{background-color:rgba(var(--color-neutral-800),.5)}.dark .dark\:bg-neutral-900\/50{background-color:rgba(var(--color-neutral-900),.5)}.dark .dark\:bg-primary-400{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400),var(--tw-bg-opacity))}.dark .dark\:bg-primary-800{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-800),var(--tw-bg-opacity))}.dark .dark\:bg-primary-900{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.dark .dark\:text-neutral{--tw-text-opacity:1;color:rgba(var(--color-neutral),var(--tw-text-opacity))}.dark .dark\:text-neutral-100{--tw-text-opacity:1;color:rgba(var(--color-neutral-100),var(--tw-text-opacity))}.dark .dark\:text-neutral-300{--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}.dark .dark\:text-neutral-400{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.dark .dark\:text-neutral-500{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.dark .dark\:text-neutral-800{--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.dark .dark\:text-primary-400{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.dark .dark\:hover\:border-primary-600:hover{--tw-border-opacity:1;border-color:rgba(var(--color-primary-600),var(--tw-border-opacity))}.dark .dark\:hover\:\!bg-primary-700:hover{--tw-bg-opacity:1 !important;background-color:rgba(var(--color-primary-700),var(--tw-bg-opacity))!important}.dark .dark\:hover\:bg-primary-400:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400),var(--tw-bg-opacity))}.dark .dark\:hover\:bg-primary-900:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.dark .dark\:hover\:text-neutral-800:hover{--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.dark .dark\:hover\:text-primary-400:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.dark .dark\:focus\:bg-primary-900:focus{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.dark .group:hover .dark\:group-hover\:text-neutral-700{--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.dark .group:hover .dark\:group-hover\:text-primary-400{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}@media print{.print\:hidden{display:none}}@media(min-width:640px){.sm\:mb-0{margin-bottom:0}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:max-h-\[7\.5rem\]{max-height:7.5rem}.sm\:w-1\/2{width:50%}.sm\:w-40{width:10rem}.sm\:max-w-\[10rem\]{max-width:10rem}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:p-6{padding:1.5rem}.sm\:px-14{padding-left:3.5rem;padding-right:3.5rem}.sm\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.sm\:pr-6{padding-right:1.5rem}.sm\:pt-10{padding-top:2.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}[dir=ltr] .ltr\:sm\:mr-7{margin-right:1.75rem}[dir=ltr] .ltr\:sm\:last\:mr-0:last-child{margin-right:0}[dir=rtl] .rtl\:sm\:ml-7{margin-left:1.75rem}[dir=rtl] .rtl\:sm\:last\:ml-0:last-child{margin-left:0}}@media(min-width:768px){.md\:w-1\/3{width:33.333333%}.md\:p-\[10vh\]{padding:10vh}.md\:px-24{padding-left:6rem;padding-right:6rem}}@media(min-width:1024px){.lg\:sticky{position:sticky}.lg\:top-10{top:2.5rem}.lg\:order-last{order:9999}.lg\:hidden{display:none}.lg\:w-1\/4{width:25%}.lg\:max-w-xs{max-width:20rem}.lg\:flex-row{flex-direction:row}.lg\:p-\[12vh\]{padding:12vh}.lg\:px-32{padding-left:8rem;padding-right:8rem}[dir=ltr] .ltr\:lg\:pl-8{padding-left:2rem}[dir=rtl] .rtl\:lg\:pr-8{padding-right:2rem}}@media(min-width:1280px){.xl\:w-1\/5{width:20%}}.sm\:items-start{align-items:start}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.ml-4{margin-left:1rem}.mr-4{margin-right:1rem}ul,ol{margin:0;margin-bottom:0;padding:0;list-style-type:none}ul.image-tags li{display:inline-block;padding:0;margin:0}ul.image-tags li a:hover,ul.image-tags li a.filtered,ul.image-tags li form{background:#f7421b;opacity:1;text-decoration:none;border:none}ul.image-tags li a:link,ul.image-tags li a:visited,ul.image-tags li form{display:inline-block;padding:3px 10px 5px;margin:0 5px 10px 0;background:#2b2b33;color:#fff;-webkit-transition:.3s;-webkit-border-radius:8px;-moz-border-radius:8px}.tag-opacity-1{opacity:.43}.tag-opacity-2{opacity:.46}.tag-opacity-3{opacity:.49}.tag-opacity-4{opacity:.42}.tag-opacity-5{opacity:.55}.tag-opacity-6{opacity:.58}.tag-opacity-7{opacity:.61}.tag-opacity-8{opacity:.64}.tag-opacity-9{opacity:.67}.tag-opacity-10{opacity:.7}.tag-opacity-11{opacity:.73}.tag-opacity-12{opacity:.76}.tag-opacity-13{opacity:.79}.tag-opacity-14{opacity:.82}.tag-opacity-15{opacity:.85}.tag-opacity-16{opacity:.88}.tag-opacity-17{opacity:.91}.tag-opacity-18{opacity:.94}.tag-opacity-19{opacity:.97}.tag-opacity-20{opacity:1}.animated{animation:rotating .7s ease 0s 1 normal forwards}@keyframes rotating{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.focus\:bg-primary-100:focus{--tw-bg-opacity:1;background-color:rgba(180,180,180,var(--tw-bg-opacity))}.katex-html{font-size:1.2em;color:#000}.katex-display katex{padding-left:.5em!important;text-align:left}.katex{padding-left:0!important}.mt-8{margin-top:2rem}.mt-4{margin-top:1rem}.mt-2{margin-top:.5rem}.mt-1{margin-top:.25rem}.mt-0{margin-top:0}.mt-16{margin-top:4rem}.mt-20{margin-top:5rem}.border-neutral-200{border-width:1px;border-color:rgba(180,180,180,var(--tw-bg-opacity))}.mb-8{margin-bottom:2rem}.mb-10{margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.ml-1{margin-left:.15rem}.hover\:border-black:hover{--tw-border-opacity:1;border-color:rgba(100,100,100,var(--tw-bg-opacity))}.lg\:p-\[2vh\]{padding:2vh}img[alt=diagram]{width:400px}.grid-container a{border-width:1px;border-radius:20px;border-color:#a9a9a9;overflow:hidden;padding:10px}.grid-container{display:grid;grid-template-columns:auto;gap:15px}@media(min-width:640px){.grid-container{grid-template-columns:auto auto}}@media(min-width:1024px){.grid-container{grid-template-columns:auto auto auto}} \ No newline at end of file diff --git a/public/css/main.bundle.min.bca42b9fe86c5a1a3bcf1c36a59584f9039403a94aaf31ac83671f1371ba9a69687ce4bad9ea6600fd5795e95350b3f723aedf66e3601fe62171425351f23771.css b/public/css/main.bundle.min.bca42b9fe86c5a1a3bcf1c36a59584f9039403a94aaf31ac83671f1371ba9a69687ce4bad9ea6600fd5795e95350b3f723aedf66e3601fe62171425351f23771.css new file mode 100644 index 00000000..e6c8efb0 --- /dev/null +++ b/public/css/main.bundle.min.bca42b9fe86c5a1a3bcf1c36a59584f9039403a94aaf31ac83671f1371ba9a69687ce4bad9ea6600fd5795e95350b3f723aedf66e3601fe62171425351f23771.css @@ -0,0 +1 @@ +:root{--color-neutral:255, 255, 255;--color-neutral-50:249, 250, 251;--color-neutral-100:243, 244, 246;--color-neutral-200:229, 231, 235;--color-neutral-300:209, 213, 219;--color-neutral-400:156, 163, 175;--color-neutral-500:107, 114, 128;--color-neutral-600:75, 85, 99;--color-neutral-700:55, 65, 81;--color-neutral-800:31, 41, 55;--color-neutral-900:17, 24, 39;--color-primary-50:248, 250, 252;--color-primary-100:241, 245, 249;--color-primary-200:226, 232, 240;--color-primary-300:203, 213, 225;--color-primary-400:148, 163, 184;--color-primary-500:100, 116, 139;--color-primary-600:71, 85, 105;--color-primary-700:51, 65, 85;--color-primary-800:30, 41, 59;--color-primary-900:15, 23, 42;--color-secondary-50:249, 250, 251;--color-secondary-100:243, 244, 246;--color-secondary-200:229, 231, 235;--color-secondary-300:209, 213, 219;--color-secondary-400:156, 163, 175;--color-secondary-500:107, 114, 128;--color-secondary-600:75, 85, 99;--color-secondary-700:55, 65, 81;--color-secondary-800:31, 41, 55;--color-secondary-900:17, 24, 39}/*!Congo v2.6.0 | MIT License | https://github.com/jpanther/congo*//*!tailwindcss v3.3.2 | MIT License | https://tailwindcss.com*/*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:initial}::before,::after{--tw-content:''}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500;text-decoration-color:rgba(var(--color-primary-300),1)}.prose :where(a):not(:where([class~=not-prose] *)):hover{color:rgba(var(--color-neutral),1);text-decoration:none;background-color:rgba(var(--color-primary-600),1);border-radius:.09rem}.prose :where(strong):not(:where([class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=As]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=as]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=Is]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=is]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose] *))::before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose] *))::after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure>*):not(:where([class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose :where(code):not(:where([class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose] *))::before{content:"`"}.prose :where(code):not(:where([class~=not-prose] *))::after{content:"`"}.prose :where(a code):not(:where([class~=not-prose] *)){color:var(--tw-prose-code)}.prose :where(h1 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-right:1.1428571em;padding-bottom:.8571429em;padding-left:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose] *))::before{content:none}.prose :where(pre code):not(:where([class~=not-prose] *))::after{content:none}.prose :where(table):not(:where([class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose] *)){vertical-align:top}.prose{--tw-prose-body:rgba(var(--color-neutral-700), 1);--tw-prose-headings:rgba(var(--color-neutral-800), 1);--tw-prose-lead:rgba(var(--color-neutral-500), 1);--tw-prose-links:rgba(var(--color-primary-700), 1);--tw-prose-bold:rgba(var(--color-neutral-900), 1);--tw-prose-counters:rgba(var(--color-neutral-800), 1);--tw-prose-bullets:rgba(var(--color-neutral-500), 1);--tw-prose-hr:rgba(var(--color-neutral-200), 1);--tw-prose-quotes:rgba(var(--color-neutral-700), 1);--tw-prose-quote-borders:rgba(var(--color-primary-200), 1);--tw-prose-captions:rgba(var(--color-neutral-500), 1);--tw-prose-code:rgba(var(--color-secondary-700), 1);--tw-prose-pre-code:rgba(var(--color-neutral-700), 1);--tw-prose-pre-bg:rgba(var(--color-neutral-50), 1);--tw-prose-th-borders:rgba(var(--color-neutral-500), 1);--tw-prose-td-borders:rgba(var(--color-neutral-300), 1);--tw-prose-invert-body:rgba(var(--color-neutral-300), 1);--tw-prose-invert-headings:rgba(var(--color-neutral-50), 1);--tw-prose-invert-lead:rgba(var(--color-neutral-500), 1);--tw-prose-invert-links:rgba(var(--color-primary-400), 1);--tw-prose-invert-bold:rgba(var(--color-neutral), 1);--tw-prose-invert-counters:rgba(var(--color-neutral-400), 1);--tw-prose-invert-bullets:rgba(var(--color-neutral-600), 1);--tw-prose-invert-hr:rgba(var(--color-neutral-500), 1);--tw-prose-invert-quotes:rgba(var(--color-neutral-200), 1);--tw-prose-invert-quote-borders:rgba(var(--color-primary-900), 1);--tw-prose-invert-captions:rgba(var(--color-neutral-400), 1);--tw-prose-invert-code:rgba(var(--color-secondary-400), 1);--tw-prose-invert-pre-code:rgba(var(--color-neutral-200), 1);--tw-prose-invert-pre-bg:rgba(var(--color-neutral-700), 1);--tw-prose-invert-th-borders:rgba(var(--color-neutral-500), 1);--tw-prose-invert-td-borders:rgba(var(--color-neutral-700), 1);font-size:1rem;line-height:1.75}.prose :where(video):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(hr+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose] *)){padding-top:.5714286em;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose :where(kbd):not(:where([class~=not-prose] *)){background-color:rgba(var(--color-neutral-200),1);padding:.1rem .4rem;border-radius:.25rem;font-size:.9rem;font-weight:600}.prose :where(mark):not(:where([class~=not-prose] *)){color:rgba(var(--color-neutral-800),1);background-color:rgba(var(--color-secondary-200),1);padding:.1rem .2rem;border-radius:.12rem}body a,body button{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.icon svg{height:1em;width:1em}#search-query::-webkit-search-cancel-button,#search-query::-webkit-search-decoration,#search-query::-webkit-search-results-button,#search-query::-webkit-search-results-decoration{display:none}body:has(#menu-controller:checked){height:100vh;overflow:hidden}#menu-button:has(#menu-controller:checked){visibility:hidden}#menu-controller:checked~#menu-wrapper{visibility:visible;opacity:1}:is([dir=rtl] .prose blockquote){border-left-width:0;border-right-width:4px;padding-right:1rem}:is([dir=rtl] .prose ul>li),:is([dir=rtl] .prose ol>li){margin-right:1.75rem;padding-left:0;padding-right:.5rem}:is([dir=rtl] .prose ol>li):before,:is([dir=rtl] .prose ul>li):before{left:auto;right:.25rem}:is([dir=rtl] .prose thead td:first-child),:is([dir=rtl] .prose thead th:first-child){padding-right:0}:is([dir=rtl] .prose thead td:last-child),:is([dir=rtl] .prose thead th:last-child){padding-left:0}.prose div.min-w-0.max-w-prose>*:first-child{margin-top:.75rem}.toc ul,.toc li{list-style-type:none;padding-left:0;padding-right:0;line-height:1.375}.toc ul ul{-webkit-padding-start:1rem;padding-inline-start:1rem}.toc a{font-weight:400;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}:is(.dark .toc a){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}:is([dir=rtl] .toc ul>li){margin-right:0}.highlight-wrapper{display:block}.highlight{position:relative;z-index:0}.highlight:hover>.copy-button{visibility:visible}.copy-button{visibility:hidden;position:absolute;right:0;top:0;z-index:10;width:5rem;cursor:pointer;white-space:nowrap;border-bottom-left-radius:.375rem;border-top-right-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-200),var(--tw-bg-opacity));padding-top:.25rem;padding-bottom:.25rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity));opacity:.9}:is(.dark .copy-button){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-600),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.copy-button:hover,.copy-button:focus,.copy-button:active,.copy-button:active:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}:is(.dark .copy-button:hover),:is(.dark .copy-button:focus),:is(.dark .copy-button:active),:is(.dark .copy-button:active:hover){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.copy-textarea{position:absolute;z-index:-10;opacity:.05}.chroma{border-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-50),var(--tw-bg-opacity));padding-top:.75rem;padding-bottom:.75rem;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}:is(.dark .chroma){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-700),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.chroma pre{margin:0;padding:0}.chroma .lntable{margin:0;display:block;width:auto;overflow:auto;font-size:1rem;line-height:1.5rem}.chroma .lnt,.chroma .ln{margin-right:.5rem;padding-left:.5rem;padding-right:.5rem;--tw-text-opacity:1;color:rgba(var(--color-neutral-600),var(--tw-text-opacity))}:is(.dark .chroma .lnt),:is(.dark .chroma .ln){--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}.chroma .lntd{padding:0;vertical-align:top}.chroma .lntd:last-of-type{width:100%}.chroma .hl{display:block;width:100%;--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}:is(.dark .chroma .hl){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .nc,.chroma .fm,.chroma .nn,.chroma .vc,.chroma .o{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}:is(.dark .chroma .k),:is(.dark .chroma .kd),:is(.dark .chroma .kn),:is(.dark .chroma .kp),:is(.dark .chroma .kr),:is(.dark .chroma .nc),:is(.dark .chroma .fm),:is(.dark .chroma .nn),:is(.dark .chroma .vc),:is(.dark .chroma .o){--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.chroma .kc{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}:is(.dark .chroma .kc){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .kt,.chroma .nv,.chroma .vi,.chroma .vm,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}:is(.dark .chroma .kt),:is(.dark .chroma .nv),:is(.dark .chroma .vi),:is(.dark .chroma .vm),:is(.dark .chroma .m),:is(.dark .chroma .mb),:is(.dark .chroma .mf),:is(.dark .chroma .mh),:is(.dark .chroma .mi),:is(.dark .chroma .il),:is(.dark .chroma .mo){--tw-text-opacity:1;color:rgba(var(--color-secondary-600),var(--tw-text-opacity))}.chroma .n,.chroma .nd,.chroma .ni,.chroma .nl{--tw-text-opacity:1;color:rgba(var(--color-secondary-900),var(--tw-text-opacity))}:is(.dark .chroma .n),:is(.dark .chroma .nd),:is(.dark .chroma .ni),:is(.dark .chroma .nl){--tw-text-opacity:1;color:rgba(var(--color-secondary-200),var(--tw-text-opacity))}.chroma .na,.chroma .nb,.chroma .bp,.chroma .nx,.chroma .py,.chroma .nt{--tw-text-opacity:1;color:rgba(var(--color-secondary-800),var(--tw-text-opacity))}:is(.dark .chroma .na),:is(.dark .chroma .nb),:is(.dark .chroma .bp),:is(.dark .chroma .nx),:is(.dark .chroma .py),:is(.dark .chroma .nt){--tw-text-opacity:1;color:rgba(var(--color-secondary-300),var(--tw-text-opacity))}.chroma .no,.chroma .ne,.chroma .vg{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}:is(.dark .chroma .no),:is(.dark .chroma .ne),:is(.dark .chroma .vg){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .nf{--tw-text-opacity:1;color:rgba(var(--color-secondary-600),var(--tw-text-opacity))}:is(.dark .chroma .nf){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .l,.chroma .ld,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .si,.chroma .sx,.chroma .s1,.chroma .gi,.chroma .go,.chroma .gp{--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}:is(.dark .chroma .l),:is(.dark .chroma .ld),:is(.dark .chroma .s),:is(.dark .chroma .sa),:is(.dark .chroma .sb),:is(.dark .chroma .sc),:is(.dark .chroma .dl),:is(.dark .chroma .sd),:is(.dark .chroma .s2),:is(.dark .chroma .sh),:is(.dark .chroma .si),:is(.dark .chroma .sx),:is(.dark .chroma .s1),:is(.dark .chroma .gi),:is(.dark .chroma .go),:is(.dark .chroma .gp){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .se{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}:is(.dark .chroma .se){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .sr,.chroma .ss{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}:is(.dark .chroma .sr),:is(.dark .chroma .ss){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .ow{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}:is(.dark .chroma .ow){--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.chroma .c,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{font-style:italic;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}:is(.dark .chroma .c),:is(.dark .chroma .cm),:is(.dark .chroma .c1),:is(.dark .chroma .cs),:is(.dark .chroma .cp),:is(.dark .chroma .cpf){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.chroma .ch{font-weight:600;font-style:italic;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}:is(.dark .chroma .ch){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.chroma .ge{font-style:italic}.chroma .gh{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .gs{font-weight:600}.chroma .gu,.chroma .gt{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .gl{text-decoration-line:underline}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-start-6{inset-inline-start:-1.5rem}.bottom-0{bottom:0}.end-0{inset-inline-end:0}.top-0{top:0}.top-20{top:5rem}.top-\[100vh\]{top:100vh}.top-\[calc\(100vh-5\.5rem\)\]{top:calc(100vh - 5.5rem)}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.order-first{order:-9999}.m-1{margin:.25rem}.m-auto{margin:auto}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.\!mb-0{margin-bottom:0!important}.\!mb-9{margin-bottom:2.25rem!important}.\!mt-0{margin-top:0!important}.-mb-1{margin-bottom:-.25rem}.-ms-5{-webkit-margin-start:-1.25rem;margin-inline-start:-1.25rem}.-mt-3{margin-top:-.75rem}.-mt-4{margin-top:-1rem}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-6{margin-bottom:1.5rem}.mb-\[2px\]{margin-bottom:2px}.me-14{-webkit-margin-end:3.5rem;margin-inline-end:3.5rem}.me-2{-webkit-margin-end:.5rem;margin-inline-end:.5rem}.me-4{-webkit-margin-end:1rem;margin-inline-end:1rem}.ml-2{margin-left:.5rem}.mr-2{margin-right:.5rem}.ms-1{-webkit-margin-start:.25rem;margin-inline-start:.25rem}.ms-2{-webkit-margin-start:.5rem;margin-inline-start:.5rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[0\.1rem\]{margin-top:.1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.hidden{display:none}.h-12{height:3rem}.h-24{height:6rem}.h-36{height:9rem}.h-8{height:2rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[10rem\]{max-height:10rem}.max-h-\[4\.5rem\]{max-height:4.5rem}.min-h-0{min-height:0}.w-12{width:3rem}.w-24{width:6rem}.w-36{width:9rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-full{width:100%}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[1\.8rem\]{min-width:1.8rem}.min-w-\[2\.4rem\]{min-width:2.4rem}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-\[10rem\]{max-width:10rem}.max-w-\[6rem\]{max-width:6rem}.max-w-full{max-width:100%}.max-w-prose{max-width:65ch}.flex-auto{flex:auto}.flex-none{flex:none}.grow{flex-grow:1}.-translate-y-8{--tw-translate-y:-2rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.place-self-center{place-self:center}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.scroll-smooth{scroll-behavior:smooth}.\!rounded-md{border-radius:.375rem!important}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.border{border-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.border-dotted{border-style:dotted}.border-neutral-200{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-200),var(--tw-border-opacity))}.border-neutral-300{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-300),var(--tw-border-opacity))}.border-neutral-400{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-400),var(--tw-border-opacity))}.border-primary-400{--tw-border-opacity:1;border-color:rgba(var(--color-primary-400),var(--tw-border-opacity))}.bg-neutral{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral),var(--tw-bg-opacity))}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-100),var(--tw-bg-opacity))}.bg-neutral-100\/50{background-color:rgba(var(--color-neutral-100),.5)}.bg-neutral-300{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-300),var(--tw-bg-opacity))}.bg-neutral-500\/50{background-color:rgba(var(--color-neutral-500),.5)}.bg-neutral\/50{background-color:rgba(var(--color-neutral),.5)}.bg-primary-100{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.bg-primary-200{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-200),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-left{-o-object-position:left;object-position:left}.p-1{padding:.25rem}.p-4{padding:1rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[1px\]{padding-top:1px;padding-bottom:1px}.pb-4{padding-bottom:1rem}.pe-2{-webkit-padding-end:.5rem;padding-inline-end:.5rem}.pe-3{-webkit-padding-end:.75rem;padding-inline-end:.75rem}.pe-4{-webkit-padding-end:1rem;padding-inline-end:1rem}.pe-5{-webkit-padding-end:1.25rem;padding-inline-end:1.25rem}.ps-2{-webkit-padding-start:.5rem;padding-inline-start:.5rem}.ps-5{-webkit-padding-start:1.25rem;padding-inline-start:1.25rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-text-bottom{vertical-align:text-bottom}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.6rem\]{font-size:.6rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-3{line-height:.75rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-relaxed{line-height:1.625}.\!text-neutral{--tw-text-opacity:1 !important;color:rgba(var(--color-neutral),var(--tw-text-opacity))!important}.text-neutral-400{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.text-neutral-800{--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity:1;color:rgba(var(--color-neutral-900),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--color-primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.text-primary-700{--tw-text-opacity:1;color:rgba(var(--color-primary-700),var(--tw-text-opacity))}.\!no-underline{text-decoration-line:none!important}.decoration-neutral-300{text-decoration-color:rgba(var(--color-neutral-300),1)}.decoration-primary-500{text-decoration-color:rgba(var(--color-primary-500),1)}.opacity-0{opacity:0}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}:is(.dark .dark\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}:is(.dark .dark\:prose-invert) :where(a):not(:where([class~=not-prose] *)){text-decoration-color:rgba(var(--color-neutral-600),1)}:is(.dark .dark\:prose-invert) :where(kbd):not(:where([class~=not-prose] *)){color:rgba(var(--color-neutral-200),1);background-color:rgba(var(--color-neutral-700),1)}:is(.dark .dark\:prose-invert) :where(mark):not(:where([class~=not-prose] *)){background-color:rgba(var(--color-secondary-400),1)}.first\:mt-8:first-child{margin-top:2rem}.hover\:scale-125:hover{--tw-scale-x:1.25;--tw-scale-y:1.25;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.hover\:border-primary-300:hover{--tw-border-opacity:1;border-color:rgba(var(--color-primary-300),var(--tw-border-opacity))}.hover\:\!bg-primary-500:hover{--tw-bg-opacity:1 !important;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))!important}.hover\:bg-primary-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.hover\:bg-primary-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))}.hover\:bg-primary-600:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.hover\:text-neutral:hover{--tw-text-opacity:1;color:rgba(var(--color-neutral),var(--tw-text-opacity))}.hover\:text-primary-500:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-500),var(--tw-text-opacity))}.hover\:text-primary-600:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.hover\:text-primary-700:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-700),var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-primary-400:hover{text-decoration-color:rgba(var(--color-primary-400),1)}.hover\:decoration-2:hover{text-decoration-thickness:2px}.hover\:underline-offset-2:hover{text-underline-offset:2px}.focus\:translate-y-0:focus{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.focus\:bg-primary-100:focus{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.focus\:outline-dotted:focus{outline-style:dotted}.focus\:outline-2:focus{outline-width:2px}.focus\:outline-transparent:focus{outline-color:transparent}.group:hover .group-hover\:-translate-x-\[2px\]{--tw-translate-x:-2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-primary-300{--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.group:hover .group-hover\:text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.group:hover .group-hover\:underline{text-decoration-line:underline}.group:hover .group-hover\:decoration-primary-500{text-decoration-color:rgba(var(--color-primary-500),1)}.group:hover .group-hover\:decoration-2{text-decoration-thickness:2px}.group:hover .group-hover\:underline-offset-2{text-underline-offset:2px}.group:hover .group-hover\:opacity-100{opacity:1}:is([dir=ltr] .ltr\:block){display:block}:is([dir=ltr] .ltr\:inline){display:inline}:is([dir=ltr] .ltr\:hidden){display:none}:is([dir=ltr] .ltr\:text-right){text-align:right}:is([dir=rtl] .rtl\:block){display:block}:is([dir=rtl] .rtl\:inline){display:inline}:is([dir=rtl] .rtl\:hidden){display:none}:is([dir=rtl] .rtl\:text-left){text-align:left}:is(.dark .dark\:inline){display:inline}:is(.dark .dark\:flex){display:flex}:is(.dark .dark\:hidden){display:none}:is(.dark .dark\:border-neutral-600){--tw-border-opacity:1;border-color:rgba(var(--color-neutral-600),var(--tw-border-opacity))}:is(.dark .dark\:border-neutral-700){--tw-border-opacity:1;border-color:rgba(var(--color-neutral-700),var(--tw-border-opacity))}:is(.dark .dark\:border-primary-600){--tw-border-opacity:1;border-color:rgba(var(--color-primary-600),var(--tw-border-opacity))}:is(.dark .dark\:bg-neutral-600){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-600),var(--tw-bg-opacity))}:is(.dark .dark\:bg-neutral-700){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-700),var(--tw-bg-opacity))}:is(.dark .dark\:bg-neutral-800){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-800),var(--tw-bg-opacity))}:is(.dark .dark\:bg-neutral-800\/50){background-color:rgba(var(--color-neutral-800),.5)}:is(.dark .dark\:bg-neutral-900\/50){background-color:rgba(var(--color-neutral-900),.5)}:is(.dark .dark\:bg-primary-400){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400),var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary-800){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-800),var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary-900){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}:is(.dark .dark\:text-neutral){--tw-text-opacity:1;color:rgba(var(--color-neutral),var(--tw-text-opacity))}:is(.dark .dark\:text-neutral-100){--tw-text-opacity:1;color:rgba(var(--color-neutral-100),var(--tw-text-opacity))}:is(.dark .dark\:text-neutral-300){--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}:is(.dark .dark\:text-neutral-400){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}:is(.dark .dark\:text-neutral-500){--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}:is(.dark .dark\:text-neutral-800){--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-400){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}:is(.dark .dark\:hover\:border-primary-600:hover){--tw-border-opacity:1;border-color:rgba(var(--color-primary-600),var(--tw-border-opacity))}:is(.dark .dark\:hover\:\!bg-primary-700:hover){--tw-bg-opacity:1 !important;background-color:rgba(var(--color-primary-700),var(--tw-bg-opacity))!important}:is(.dark .dark\:hover\:bg-primary-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400),var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-primary-900:hover){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}:is(.dark .dark\:hover\:text-neutral-800:hover){--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-primary-400:hover){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}:is(.dark .dark\:focus\:bg-primary-900:focus){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-neutral-700){--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-primary-400){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}@media print{.print\:hidden{display:none}}@media(min-width:640px){.sm\:mb-0{margin-bottom:0}.sm\:me-7{-webkit-margin-end:1.75rem;margin-inline-end:1.75rem}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:max-h-\[7\.5rem\]{max-height:7.5rem}.sm\:w-1\/2{width:50%}.sm\:w-40{width:10rem}.sm\:max-w-\[10rem\]{max-width:10rem}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:p-6{padding:1.5rem}.sm\:px-14{padding-left:3.5rem;padding-right:3.5rem}.sm\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.sm\:pe-6{-webkit-padding-end:1.5rem;padding-inline-end:1.5rem}.sm\:pt-10{padding-top:2.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:last\:me-0:last-child{-webkit-margin-end:0;margin-inline-end:0}.sm\:last\:me-0\.5:last-child{-webkit-margin-end:.125rem;margin-inline-end:.125rem}}@media(min-width:768px){.md\:w-1\/3{width:33.333333%}.md\:p-\[10vh\]{padding:10vh}.md\:px-24{padding-left:6rem;padding-right:6rem}}@media(min-width:1024px){.lg\:sticky{position:sticky}.lg\:top-10{top:2.5rem}.lg\:order-last{order:9999}.lg\:hidden{display:none}.lg\:w-1\/4{width:25%}.lg\:max-w-xs{max-width:20rem}.lg\:flex-row{flex-direction:row}.lg\:p-\[12vh\]{padding:12vh}.lg\:px-32{padding-left:8rem;padding-right:8rem}.lg\:ps-8{-webkit-padding-start:2rem;padding-inline-start:2rem}}@media(min-width:1280px){.xl\:w-1\/5{width:20%}}.sm\:items-start{align-items:start}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.ml-4{margin-left:1rem}.mr-4{margin-right:1rem}ul,ol{margin:0;margin-bottom:0;padding:0;list-style-type:none}ul.image-tags li{display:inline-block;padding:0;margin:0}ul.image-tags li a:hover,ul.image-tags li a.filtered,ul.image-tags li form{background:#f7421b;opacity:1;text-decoration:none;border:none}ul.image-tags li a:link,ul.image-tags li a:visited,ul.image-tags li form{display:inline-block;padding:3px 10px 5px;margin:0 5px 10px 0;background:#2b2b33;color:#fff;-webkit-transition:.3s;-webkit-border-radius:8px;-moz-border-radius:8px}.tag-opacity-1{opacity:.43}.tag-opacity-2{opacity:.46}.tag-opacity-3{opacity:.49}.tag-opacity-4{opacity:.42}.tag-opacity-5{opacity:.55}.tag-opacity-6{opacity:.58}.tag-opacity-7{opacity:.61}.tag-opacity-8{opacity:.64}.tag-opacity-9{opacity:.67}.tag-opacity-10{opacity:.7}.tag-opacity-11{opacity:.73}.tag-opacity-12{opacity:.76}.tag-opacity-13{opacity:.79}.tag-opacity-14{opacity:.82}.tag-opacity-15{opacity:.85}.tag-opacity-16{opacity:.88}.tag-opacity-17{opacity:.91}.tag-opacity-18{opacity:.94}.tag-opacity-19{opacity:.97}.tag-opacity-20{opacity:1}.animated{animation:rotating .7s ease 0s 1 normal forwards}@keyframes rotating{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.focus\:bg-primary-100:focus{--tw-bg-opacity:1;background-color:rgba(180,180,180,var(--tw-bg-opacity))}.katex-html{font-size:1.2em;color:#000}.katex-display katex{padding-left:.5em!important;text-align:left}.katex{padding-left:0!important}.mt-8{margin-top:2rem}.mt-4{margin-top:1rem}.mt-2{margin-top:.5rem}.mt-1{margin-top:.25rem}.mt-0{margin-top:0}.mt-16{margin-top:4rem}.mt-20{margin-top:5rem}.border-neutral-200{border-width:1px;border-color:rgba(180,180,180,var(--tw-bg-opacity))}.mb-8{margin-bottom:2rem}.mb-10{margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.ml-1{margin-left:.15rem}.hover\:border-black:hover{--tw-border-opacity:1;border-color:rgba(100,100,100,var(--tw-bg-opacity))}.lg\:p-\[2vh\]{padding:2vh}img[alt=diagram]{width:400px}.grid-container a{border-width:1px;border-radius:20px;border-color:#a9a9a9;overflow:hidden;padding:10px}.grid-container{display:grid;grid-template-columns:auto;gap:15px}@media(min-width:640px){.grid-container{grid-template-columns:auto auto}}@media(min-width:1024px){.grid-container{grid-template-columns:auto auto auto}} \ No newline at end of file diff --git a/static/favicon-16x16.png b/public/favicon-16x16.png similarity index 100% rename from static/favicon-16x16.png rename to public/favicon-16x16.png diff --git a/static/favicon-32x32.png b/public/favicon-32x32.png similarity index 100% rename from static/favicon-32x32.png rename to public/favicon-32x32.png diff --git a/static/favicon.ico b/public/favicon.ico similarity index 100% rename from static/favicon.ico rename to public/favicon.ico diff --git a/public/file.svg b/public/file.svg new file mode 100644 index 00000000..004145cd --- /dev/null +++ b/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/formulas/amperes-law/index.html b/public/formulas/amperes-law/index.html new file mode 100644 index 00000000..cdf9d0eb --- /dev/null +++ b/public/formulas/amperes-law/index.html @@ -0,0 +1,16 @@ +Ampere's Law · stemformulas + + + + +

      Ampere's Law

      $$ \oint \vec{B} \cdot d\vec{l} = \mu_0 I $$

      Where

      • The left side is a line integral of the magnetic field \(\vec{B}\) over a closed loop \(\vec{l}\), and
      • \(\mu_0\) is the permeability of free space, and
      • \(I\) is the current enclosed by the loop.

      Ampere’s law is a formula that describes the magnetic field produced by a current-carrying wire. It says that the magneitc field created by an electric current is proportional to the magnitude of the current.

      With displacement current #

      Ampere’s law has a more general form that includes displacement current. The displacement current is proportional to the rate of change of the electric flux. This site has a good explanation of why this modification is needed. The modified form is:

      $$ \oint \vec{B} \cdot d\vec{l} = \mu_0 I + \mu_0 \epsilon_0 \frac{d\vec{\phi_E}}{dt} $$

      Where, in addition to the above definitions,

      • \(\epsilon_0\) is the permittivity of free space, and
      • \(\vec{\phi_E}\) is the electric flux intercepted by the surface spanned by the integration path of the magnetic field.

      Sources #

      \ No newline at end of file diff --git a/public/formulas/cauchys-integral-theorem/index.html b/public/formulas/cauchys-integral-theorem/index.html new file mode 100644 index 00000000..a8a2824d --- /dev/null +++ b/public/formulas/cauchys-integral-theorem/index.html @@ -0,0 +1,16 @@ +Cauchy's Integral Theorem · stemformulas + + + + +
      \ No newline at end of file diff --git a/public/formulas/convolution/index.html b/public/formulas/convolution/index.html new file mode 100644 index 00000000..1dc322e7 --- /dev/null +++ b/public/formulas/convolution/index.html @@ -0,0 +1,16 @@ +Convolution · stemformulas + + + + +
      \ No newline at end of file diff --git a/public/formulas/cosine-law/cosine-law.png b/public/formulas/cosine-law/cosine-law.png new file mode 100644 index 00000000..b15a1436 Binary files /dev/null and b/public/formulas/cosine-law/cosine-law.png differ diff --git a/public/formulas/cosine-law/cosine-law_hucf3598a6f6f0c8e38bf946ce57ed52d8_21282_1024x0_resize_lanczos_3.png b/public/formulas/cosine-law/cosine-law_hucf3598a6f6f0c8e38bf946ce57ed52d8_21282_1024x0_resize_lanczos_3.png new file mode 100644 index 00000000..757134bf Binary files /dev/null and b/public/formulas/cosine-law/cosine-law_hucf3598a6f6f0c8e38bf946ce57ed52d8_21282_1024x0_resize_lanczos_3.png differ diff --git a/public/formulas/cosine-law/cosine-law_hucf3598a6f6f0c8e38bf946ce57ed52d8_21282_1320x0_resize_lanczos_3.png b/public/formulas/cosine-law/cosine-law_hucf3598a6f6f0c8e38bf946ce57ed52d8_21282_1320x0_resize_lanczos_3.png new file mode 100644 index 00000000..c0b1ae1c Binary files /dev/null and b/public/formulas/cosine-law/cosine-law_hucf3598a6f6f0c8e38bf946ce57ed52d8_21282_1320x0_resize_lanczos_3.png differ diff --git a/public/formulas/cosine-law/cosine-law_hucf3598a6f6f0c8e38bf946ce57ed52d8_21282_330x0_resize_lanczos_3.png b/public/formulas/cosine-law/cosine-law_hucf3598a6f6f0c8e38bf946ce57ed52d8_21282_330x0_resize_lanczos_3.png new file mode 100644 index 00000000..2581a21b Binary files /dev/null and b/public/formulas/cosine-law/cosine-law_hucf3598a6f6f0c8e38bf946ce57ed52d8_21282_330x0_resize_lanczos_3.png differ diff --git a/public/formulas/cosine-law/cosine-law_hucf3598a6f6f0c8e38bf946ce57ed52d8_21282_660x0_resize_lanczos_3.png b/public/formulas/cosine-law/cosine-law_hucf3598a6f6f0c8e38bf946ce57ed52d8_21282_660x0_resize_lanczos_3.png new file mode 100644 index 00000000..b4ccccdc Binary files /dev/null and b/public/formulas/cosine-law/cosine-law_hucf3598a6f6f0c8e38bf946ce57ed52d8_21282_660x0_resize_lanczos_3.png differ diff --git a/public/formulas/cosine-law/index.html b/public/formulas/cosine-law/index.html new file mode 100644 index 00000000..7a8ec5c8 --- /dev/null +++ b/public/formulas/cosine-law/index.html @@ -0,0 +1,16 @@ +Cosine Law · stemformulas + + + + +
      \ No newline at end of file diff --git a/public/formulas/cross-product/index.html b/public/formulas/cross-product/index.html new file mode 100644 index 00000000..9fc31cb6 --- /dev/null +++ b/public/formulas/cross-product/index.html @@ -0,0 +1,18 @@ +Cross Product · stemformulas + + + + +

      Cross Product

      For two vectors \(\small \vec{a}\) and \(\small \vec{b}\) in \(\small \mathbb{R}^3\) (real coordinate spaces, the cross product is defined as

      $$ \vec{a} \times \vec{b} = \begin{vmatrix} \vec{i} & \vec{j} & \vec{k} \\ +a_1 & a_2 & a_3 \\ +b_1 & b_2 & b_3 \end{vmatrix}$$

      Where

      • The right hand side is a determinant of a 3x3 matrix,
      • \(\small a_i\) and \(\small b_i\) are the \(\small i\)-th components of \(\small \vec{a}\) and \(\small \vec{b}\), respectively, and
      • \(\small \vec{i}\), \(\small \vec{j}\), and \(\small \vec{k}\) are the standard basis vectors of \(\small \mathbb{R}^3\).

      Interpretation #

      The result of a cross product is a vector that is perpendicular to both \(\small \vec{a}\) and \(\small \vec{b}\).

      The magnitude of the cross product is equal to the area of the parallelogram formed by \(\small \vec{a}\) and \(\small \vec{b}\), and can be calculated:

      $$ |a \times b| = |a| |b| \sin \theta $$

      Where \(\small \theta\) is the angle between \(\small \vec{a}\) and \(\small \vec{b}\).

      The direction of the cross product can be determined by the right-hand rule. If you point your right hand in the direction of \(\small \vec{a}\) and curl your fingers in the direction of \(\small \vec{b}\), your thumb will point in the direction of \(\small \vec{a} \times \vec{b}\).

      Properties #

      • The cross product is anti-commutative: \(\small \vec{a} \times \vec{b} = - \vec{b} \times \vec{a}\)
      • The cross product is distributive: \(\small \vec{a} \times (\vec{b} + \vec{c}) = \vec{a} \times \vec{b} + \vec{a} \times \vec{c}\)

      Sources #

      \ No newline at end of file diff --git a/public/formulas/definition-of-the-derivative/index.html b/public/formulas/definition-of-the-derivative/index.html new file mode 100644 index 00000000..5007a33f --- /dev/null +++ b/public/formulas/definition-of-the-derivative/index.html @@ -0,0 +1,17 @@ +Definition of the Derivative · stemformulas + + + + +

      Definition of the Derivative

      Table of Contents

      $$ \frac{d}{dx}f(x) = \lim_{h\to 0}\frac{f(x+h)-f(x)}{h} $$

      Where

      • \(f(x)\) is a function,
      • \(x\) is the independent variable, and
      • \(h\) is an increment that we take to 0 in the limit.

      Sources #

      Example #

      Find the derivative of \(f(x) = x^2\) at \(x=2\) using the definition of the derivative.

      We can plug in everything into the definition to get the answer:

      $$ \scriptsize \frac{d}{dx}f(x) = \lim_{h\to 0}\frac{f(x+h)-f(x)}{h} = \lim_{h\to 0}\frac{(x+h)^2-x^2}{h} = \lim_{h\to 0}\frac{x^2+2xh+h^2-x^2}{h} $$

      $$ \scriptsize = \lim_{h\to 0}\frac{2xh+h^2}{h} = \lim_{h\to 0}2x+2h = 2x $$

      Evaluated at \(x=2\), we get \(4\).

      \ No newline at end of file diff --git a/public/formulas/determinant/index.html b/public/formulas/determinant/index.html new file mode 100644 index 00000000..fc47d0c3 --- /dev/null +++ b/public/formulas/determinant/index.html @@ -0,0 +1,31 @@ +Determinants of Matrices · stemformulas + + + + +

      Determinants of Matrices

      Table of Contents

      The determinant of a matrix is a scalar value that can be calculated from the elements of the matrix. It is denoted by \(\small \det(A)\) or \(\small |A|\).

      $$ \det\begin{bmatrix}\ +a & b\\ +c & d\\ +\end{bmatrix}=ad-cb $$

      $$\det\begin{bmatrix} +a & b & c\\ +d & e & f\\ +g & h & i +\end{bmatrix}=a\begin{vmatrix} +e & f\\ +h & i +\end{vmatrix}-b\begin{vmatrix} +d & f\\ +g & i +\end{vmatrix}+c\begin{vmatrix} +d & e\\ +g & h +\end{vmatrix}$$

      The pattern continues for larger matrices, here is an example of a 4x4 matrix determinant by Byju’s.

      Sources #

      \ No newline at end of file diff --git a/public/formulas/divergence-theorem/index.html b/public/formulas/divergence-theorem/index.html new file mode 100644 index 00000000..e29094d3 --- /dev/null +++ b/public/formulas/divergence-theorem/index.html @@ -0,0 +1,15 @@ +Divergence Theorem · stemformulas + + + + +

      Divergence Theorem

      Table of Contents

      If \(\small \vec{F}\) is a continuously diffrerentiable vector field in the volume \(\small V\) with closed surface \(\small S\), then the divergence theorem (also known as Gauss’s Theorem) states that

      $$ \iiint_V (\nabla \cdot \vec{F}) dV = \oiint_S (\vec{F} \cdot \hat{n}) dS $$

      Where

      • The left hand side is a volume integral of the divergence of \(\vec{F}\) over the volume \(V\), and
      • \(\hat{n}\) is the unit normal vector to the surface S, used in the surface integral on the right hand side.

      This can be interpreted intuitively. Since the divergence of a vector field can be thought of as the degree to which a field is acting as a source or sink, the divergence theorem can be thought of as saying that the total amount of a field that is acting as a source or sink in a volume is equal to the amount of the field leaving or entering the volume through the surface.

      Sources #

      See also #

      \ No newline at end of file diff --git a/public/formulas/dot-product/index.html b/public/formulas/dot-product/index.html new file mode 100644 index 00000000..f1e19cd2 --- /dev/null +++ b/public/formulas/dot-product/index.html @@ -0,0 +1,16 @@ +Dot Product · stemformulas + + + + +

      Dot Product

      For two vectors \(\small \vec{a}\) and \(\small \vec{b}\) in \(\small \mathbb{R}^n\) (real coordinate spaces, the dot product is defined as

      $$ \vec{a} \cdot \vec{b} = \sum_{i=1}^n a_i b_i $$

      Where

      • \(\small a_i\) and \(\small b_i\) are the \(\small i\)-th components of \(\small \vec{a}\) and \(\small \vec{b}\), respectively, and
      • \(\small n\) is the dimension of \(\small \vec{a}\) and \(\small \vec{b}\).

      Alternative definition #

      Given that \(\small \vec{a}\) and \(\small \vec{b}\) are vectors with lengths \(\small |a|\) and \(\small |b|\), respectively, the dot product is also equal to

      $$ \vec{a} \cdot \vec{b} = |a| |b| \cos \theta $$

      Where \(\small \theta\) is the angle between \(\small \vec{a}\) and \(\small \vec{b}\).

      Properties #

      • \(\small \vec{a} \cdot \vec{b} = \vec{b} \cdot \vec{a}\)
      • \(\small (\vec{a} + \vec{b}) \cdot \vec{c} = \vec{a} \cdot \vec{c} + \vec{b} \cdot \vec{c}\)
      • \(\small \vec{a} \cdot \vec{a} = |a|^2\)
      • \(\small \vec{a} \cdot \vec{b} = 0\) if and only if \(\small \vec{a}\) and \(\small \vec{b}\) are orthogonal
      • For a scalar s, \((\small s \vec{a}) \cdot \vec{b} = s \cdot (\vec{a} \cdot \vec{b})\)

      Sources #

      \ No newline at end of file diff --git a/public/formulas/double-angle-trig-identities/index.html b/public/formulas/double-angle-trig-identities/index.html new file mode 100644 index 00000000..f53f7cf6 --- /dev/null +++ b/public/formulas/double-angle-trig-identities/index.html @@ -0,0 +1,18 @@ +Double Angle Trig Identities · stemformulas + + + + +

      Double Angle Trig Identities

      Table of Contents

      For any angle \(\small \theta\), the following are true:

      $$ sin(2\theta) = 2 sin(\theta) cos(\theta) $$

      $$ \small cos(2\theta) = cos^2(\theta) - sin^2(\theta) = 2 cos^2(\theta) - 1 = 1 - 2 sin^2(\theta)$$

      $$ tan(2\theta) = \frac{2 tan(\theta)}{1 - tan^2(\theta)} $$

      Sources #

      \ No newline at end of file diff --git a/public/formulas/energy-of-light/index.html b/public/formulas/energy-of-light/index.html new file mode 100644 index 00000000..e3ba258c --- /dev/null +++ b/public/formulas/energy-of-light/index.html @@ -0,0 +1,15 @@ +Photon Energy · stemformulas + + + + +

      Photon Energy

      Table of Contents

      The energy of a photon is:

      $$ E = hf = \frac{hc}{\lambda}$$

      Where

      • \(h\) is the Planck constant,
      • \(f\) is the frequency of the photon
      • \(c\) is the speed of light in a vacuum, and
      • \(\lambda\) is the wavelength of the light.

      Sources #

      See also #

      \ No newline at end of file diff --git a/public/formulas/equivalent-uniform-annual-cost/index.html b/public/formulas/equivalent-uniform-annual-cost/index.html new file mode 100644 index 00000000..640cdf8c --- /dev/null +++ b/public/formulas/equivalent-uniform-annual-cost/index.html @@ -0,0 +1,13 @@ +Equivalent Uniform Annual Cost · stemformulas + + + + +

      Equivalent Uniform Annual Cost

      Present Worth to Annual Worth #

      For a sum of money \(\small P\) invested at a compounding interest rate \(\small i\) for \(\small n\) years, the equivalent uniform annual cost (a.k.a “ordinary annuity”) \(\small A\) is given by:

      $$A = P \frac{i(1 + i)^n}{(1 + i)^n - 1} $$

      Where

      • \(\small P\) is the present value,
      • \(\small i\) is the interest rate, and
      • \(\small n\) is the number of periods

      This can be rewritten to find P:

      $$P = A \frac{(1 + i)^n - 1}{i(1 + i)^n}$$

      Future Worth to Annual Worth #

      If the future worth is known instead, the formula is

      $$A = F \frac{i}{(1 + i)^n - 1}$$

      Rearranging again, F can be found instead if A is known:

      $$F = A \frac{(1 + i)^n - 1}{i}$$

      Sources #

      Note that these sources use a slightly rearranged form of the formula, but it is equivalent.

      \ No newline at end of file diff --git a/public/formulas/eulers-identity-formula/index.html b/public/formulas/eulers-identity-formula/index.html new file mode 100644 index 00000000..1c24a3aa --- /dev/null +++ b/public/formulas/eulers-identity-formula/index.html @@ -0,0 +1,18 @@ +Euler's Identity/Formula · stemformulas + + + + +

      Euler's Identity/Formula

      Euler’s Identity #

      $$e^{i\pi} = -1$$

      Where

      • \(e\) is Euler’s number ~= 2.71828,
      • \(i\) is the imaginary unit, \(\sqrt{-1}\), and
      • \(\pi\) is pi ~= 3.14159.

      Euler’s Formula #

      More generally, for any number (even complex) \(x\), Euler’s Formula says that

      $$e^{ix} = \cos(x) + i\sin(x)$$

      Sources #

      \ No newline at end of file diff --git a/public/formulas/feynmanns-trick/index.html b/public/formulas/feynmanns-trick/index.html new file mode 100644 index 00000000..595464d4 --- /dev/null +++ b/public/formulas/feynmanns-trick/index.html @@ -0,0 +1,16 @@ +Feynmann's Trick For Exponential Integrals · stemformulas + + + + +

      Feynmann's Trick For Exponential Integrals

      Feynmann’s Trick For Exponential Integrals #

      $$\int_0^{\infty} x^n e^{-tx} dx = \frac{n!}{t^{n+1}}$$

      Where

      • \(t\) is a constant and
      • \(n!\) is the Gamma function (does not require \(n\) to be an integer)

      Feynmann’s trick involves “differentiating under the integral” which is a whole technique on its own, and the above formula is something that can be found using this technique. +I found that formula particularly hard to find online, so I decided to write it up.

      Sources #

      \ No newline at end of file diff --git a/public/formulas/finite-infinite-series/index.html b/public/formulas/finite-infinite-series/index.html new file mode 100644 index 00000000..8023de5a --- /dev/null +++ b/public/formulas/finite-infinite-series/index.html @@ -0,0 +1,14 @@ +Finite and Infinite Geometric Series · stemformulas + + + + +

      Finite and Infinite Geometric Series

      Finite Geometric Series #

      For a series of the form \( \small a, ar, ar^2, ar^3, \ldots\), the sum of the first \(\small n\) terms is

      $$S_n = \sum_{n=0}^{N} ar^n = \frac{a(1-r^N)}{1-r}$$

      where \(\small r \neq 1 \) is the common ratio.

      If \(\small r = 1\), then \(\small S_n = aN\).

      Infinite Geometric Series #

      If the magnitude of \(\small r\) is less than \(\small 1\), the sum of the infinite series is

      $$S_{\infty} = \sum_{n=0}^{\infty} ar^n = \frac{a}{1-r}$$

      Sources #

      \ No newline at end of file diff --git a/public/formulas/fundmantal-theorem-of-calculus/index.html b/public/formulas/fundmantal-theorem-of-calculus/index.html new file mode 100644 index 00000000..688a742c --- /dev/null +++ b/public/formulas/fundmantal-theorem-of-calculus/index.html @@ -0,0 +1,15 @@ +Fundamental Theorem of Calculus · stemformulas + + + + +

      Fundamental Theorem of Calculus

      Table of Contents

      $$\int_a^b f(x) dx = F(b) - F(a)$$

      Where

      • \(f\) is a continuous function on \([a, b]\),
      • \(F\) is an antiderivative of \(f\),
      • \(a\) is the lower bound of the integral, and
      • \(b\) is the upper bound of the integral.

      This theorem, also known as the second fundamental theorem of calculus says that the definite integral of a continuous function on a closed interval is equal to the difference between the value of the antiderivative at the upper bound and the value of the antiderivative at the lower bound.

      See Wolfram MathWorld below for the other two fundamental theorems of calculus.

      Sources #

      Example #

      Due to his terrible posture, Kevin’s back is approximately the shape of x^3 on the interval [0, 3]. Given that his chair is the x axis, what is the area between his back and his chair?

      We know that the area between a curve and the x axis is equal to the definite integral of the curve. We also know that the definite integral of a function is equal to the difference between the value of the antiderivative at the upper bound and the value of the antiderivative at the lower bound. So we can plug in the values to get the answer, knowing that the antiderivative of x^3 is x^4/4:

      $$\int_0^3 x^3 dx = F(3) - F(0) = \frac{(3)^4}{4} - 0 = 20.25$$

      \ No newline at end of file diff --git a/public/formulas/future-to-net-present-worth/index.html b/public/formulas/future-to-net-present-worth/index.html new file mode 100644 index 00000000..5d4d709a --- /dev/null +++ b/public/formulas/future-to-net-present-worth/index.html @@ -0,0 +1,15 @@ +Present and Future Value · stemformulas + + + + +
      \ No newline at end of file diff --git a/public/formulas/gauss-law/index.html b/public/formulas/gauss-law/index.html new file mode 100644 index 00000000..ee13e1e8 --- /dev/null +++ b/public/formulas/gauss-law/index.html @@ -0,0 +1,16 @@ +Gauss's Law · stemformulas + + + + +

      Gauss's Law

      Table of Contents

      $$ \oiint \vec{E} \cdot d\vec{A} = \frac{Q_{enc}}{\epsilon_0} $$

      Where

      • The left side is a surface integral of the electric field \(\vec{E}\) over a closed surface \(\vec{A}\), and
      • \(Q_{enc}\) is the charge enclosed by the surface, and
      • \(\epsilon_0\) is the permittivity of free space.

      Differential form #

      Gauss’s law can also be written in differential form:

      $$ \nabla \cdot \vec{E} = \frac{\rho}{\epsilon_0} $$

      Where

      Sources #

      \ No newline at end of file diff --git a/public/formulas/gravitational-potential-energy/index.html b/public/formulas/gravitational-potential-energy/index.html new file mode 100644 index 00000000..ae7c3d7d --- /dev/null +++ b/public/formulas/gravitational-potential-energy/index.html @@ -0,0 +1,14 @@ +Gravitational Potential Energy · stemformulas + + + + +

      Gravitational Potential Energy

      Table of Contents

      $$ U = mgh $$

      Where

      • \(U\) is the gravitational potential energy of the object,
      • \(m\) is the mass of the object,
      • \(g\) is the acceleration due to gravity, and
      • \(h\) is the height of the object above the ground.

      This is an approximation that can be made when the object is small compared to the distance between the object and the ground, and g is fairly constant in the domain of observation.

      Sources #

      Example #

      Kevin throws a 400,000 kg spaceship straight up from the surface of the earth, with an initial velocity of 100 m/s. After some time, the spaceship reaches its peak height. Assuming no losses due to friction, what is this peak height?

      Since no energy is lost due to air friction, we know that all of the kinetic energy gets converted to potential energy.

      The initial kinetic energy is \(\scriptsize E_k = \frac{1}{2}mv^2 = 200,000 * 100^2 = 5.0 \cdot 10^{10} J\)

      The final potential energy is \(\scriptsize 5.0 \cdot 10^{10} = mgh = 400,000 * 9.8 * h\)

      So, we can solve for the height of the spaceship:

      \(\scriptsize h = \frac{5.0 \cdot 10^{10}}{400,000 * 9.8} = 1.27 \cdot 10^4 m\)

      See also #

      \ No newline at end of file diff --git a/public/formulas/greens-theorem/index.html b/public/formulas/greens-theorem/index.html new file mode 100644 index 00000000..8fad6e25 --- /dev/null +++ b/public/formulas/greens-theorem/index.html @@ -0,0 +1,17 @@ +Green's Theorem · stemformulas + + + + +

      Green's Theorem

      Table of Contents

      If \(\small P\) and \(\small Q\) are continuous functions of \(\small x\) and \(\small y\) over the region \(\small D\) with a closed path \(\small C\) that bounds \(\small D\), then Green’s theorem states that

      $$ \oint_C Pdx + Qdy = \iint_D \frac{\partial Q}{\partial x} - \frac{\partial P}{\partial y} dA $$

      Honestly, just read Paul’s Online Notes, they’re great.

      Green’s theorem can be thought of as a 2D version of Stokes’ theorem.

      Sources #

      See also #

      \ No newline at end of file diff --git a/public/formulas/hookes-law-springs/index.html b/public/formulas/hookes-law-springs/index.html new file mode 100644 index 00000000..3a6285d1 --- /dev/null +++ b/public/formulas/hookes-law-springs/index.html @@ -0,0 +1,17 @@ +Hooke's Law (Spring Constant) · stemformulas + + + + +

      Hooke's Law (Spring Constant)

      Table of Contents

      $$ F = -kx $$

      Where

      • \(F\) is the force applied to stretch or compress the spring,
      • \(k\) is the spring constant of the spring, and
      • \(x\) is the displacement of the spring.

      The negative sign is used when the force being considered is the “restoring force”. +If the force is the “applied force”, then the negative sign is omitted.

      Sources #

      \ No newline at end of file diff --git a/public/formulas/hookes-law-stress-strain/index.html b/public/formulas/hookes-law-stress-strain/index.html new file mode 100644 index 00000000..da3d134a --- /dev/null +++ b/public/formulas/hookes-law-stress-strain/index.html @@ -0,0 +1,16 @@ +Hooke's Law (Modulus of Elasticity) · stemformulas + + + + +

      Hooke's Law (Modulus of Elasticity)

      Table of Contents

      $$ \frac{F}{A} = E\frac{\Delta L}{L} $$

      Where

      • \(F\) is the force applied to the material,
      • \(A\) is the area of the material where force is applied,
      • \(E\) is the modulus of elasticity (a.ka. Young’s modulus) of the material,
      • \(\Delta L\) is the change in length of the material, and
      • \(L\) is the original length of the material.

      This version of Hooke’s Law is generalized from the original version used to describe the force of springs.

      Sources #

      \ No newline at end of file diff --git a/public/formulas/hyperbolic-trig-functions/index.html b/public/formulas/hyperbolic-trig-functions/index.html new file mode 100644 index 00000000..ed54ff1e --- /dev/null +++ b/public/formulas/hyperbolic-trig-functions/index.html @@ -0,0 +1,18 @@ +Hyperbolic Functions · stemformulas + + + + +

      Hyperbolic Functions

      $$\small sinh(x) = \frac{e^x - e^{-x}}{2}, cosh(x) = \frac{e^x + e^{-x}}{2}, tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$$

      Where

      • \(e\) is Euler’s number ~= 2.71828, and
      • \(i\) is the imaginary unit, \(\sqrt{-1}\)

      Complex trig definitions #

      The hyperbolic functions can be defined in terms of the trig functions with complex arguments:

      • \(sinh(x) = -i sin(ix)\)
      • \(cosh(x) = cos(ix)\)
      • \(tanh(x) = -i tan(ix)\)

      Sources #

      \ No newline at end of file diff --git a/public/formulas/ideal-gas-law/index.html b/public/formulas/ideal-gas-law/index.html new file mode 100644 index 00000000..04ff2420 --- /dev/null +++ b/public/formulas/ideal-gas-law/index.html @@ -0,0 +1,16 @@ +Ideal Gas Law · stemformulas + + + + +

      Ideal Gas Law

      Table of Contents

      $$PV = nRT$$

      Where

      • \(P\) is the pressure of the gas,
      • \(V\) is the volume of the gas,
      • \(n\) is the number of moles of gas,
      • \(R\) is the gas constant (see here for a table of R with various units), and
      • \(T\) is the temperature of the gas.

      “The ideal gas law, also called the general gas equation, is the equation of state of a hypothetical ideal gas. It is a good approximation of the behavior of many gases under many conditions, although it has several limitations.” - Wikipedia

      Sources #

      Example #

      Kevin has a 1 liter container of a mysterious (ideal) gas at 1 atm and 300 K. What is the pressure of the gas if the volume is doubled?

      There are two ways we could use the Ideal Gas Law to solve this problem:

      1. We could solve for \(n = \frac{PV}{RT}\) and then use that to solve for \(P_2 = \frac{nRT}{V_2}\)
      2. We could notice that the right side of the equation, \(nRT\) is a constant, since no moles of gas can escape, +R is a constant by definition, and the temperature is not changed in the question. Since the right side is a constant, +the left side must remain a constant. If the volume is doubled, then the pressure must thus be halved.
      \ No newline at end of file diff --git a/public/formulas/index.html b/public/formulas/index.html new file mode 100644 index 00000000..f821cd45 --- /dev/null +++ b/public/formulas/index.html @@ -0,0 +1,9 @@ +formulas · stemformulas + + +

      formulas

      + +

      Equivalent Uniform Annual Cost

      $$A = P \frac{i(1 + i)^n}{(1 + i)^n - 1}$$

      Present and Future Value

      $$F = P(1 + i)^n$$

      Light Wavelength and Frequency Relationship

      $$c = \lambda f$$

      Photon Energy

      $$E = hf$$

      Feynmann's Trick For Exponential Integrals

      $$\int_0^{\infty} x^n e^{-tx} dx = \frac{n!}{t^{n+1}}$$

      Finite and Infinite Geometric Series

      $$S_n = \frac{a(1-r^n)}{1-r}$$

      Convolution

      $$(f*g)(t)=\int_{-\infty}^{\infty} f(\tau)g(t-\tau)d\tau$$

      Shockley Diode Model

      $$I = I_S \cdot (e^{\frac{V_D}{nV_T}} - 1)$$

      Schrodinger's Equation

      $$\scriptsize i\hbar\frac{\partial}{\partial t}\Psi(x,t) = \left[-\frac{\hbar^2}{2m}\frac{\partial^2}{\partial x^2} + V(x,t)\right]\Psi(x,t)$$

      L'Hopital's Rule

      $$\lim_{x \to c} \frac{f(x)}{g(x)} = \lim_{x \to c} \frac{f'(x)}{g'(x)}$$

      Lorentz Transformations

      $$x' \frac{x-vt}{\sqrt{1-v^2/c^2}}$$

      Determinants of Matrices

      $$det(A) = |A|$$

      Double Angle Trig Identities

      $$sin(2\theta) = 2 \cdot sin(\theta) \cdot cos(\theta)$$

      Trig Angle Sum/Difference Identities

      $$\scriptsize sin(a \pm b) = sin(a) cos(b) \pm cos(a) sin(b)$$

      Vector Projection

      $$proj_{\vec{b}}(\vec{a})=\frac{\vec{a}\cdot\vec{b}}{\|\vec{b}\|^2}\vec{b}=(\vec{a}\cdot\hat{b})\hat{b}$$

      Green's Theorem

      $$\small \oint_C Pdx + Qdy = \iint_D \frac{\partial Q}{\partial x} - \frac{\partial P}{\partial y} dA$$

      Hooke's Law (Modulus of Elasticity)

      $$\frac{F}{A} = E\frac{\Delta L}{L}$$

      Hooke's Law (Spring Constant)

      $$F = -kx$$

      Hyperbolic Functions

      $$sinh(x) = \frac{e^x - e^{-x}}{2}$$

      Stokes' Theorem

      $$\int_C \vec{F} \cdot d\vec{r} = \iint_S \nabla \times \vec{F} \cdot d\vec{S}$$

      Cross Product

      $$\vec{a} \times \vec{b} = \begin{vmatrix} \vec{i} & \vec{j} & \vec{k} \\ a_1 & a_2 & a_3 \\ b_1 & b_2 & b_3 \end{vmatrix}$$

      Divergence Theorem

      $$\iiint_V (\nabla \cdot \vec{F}) dV = \oiint_S (\vec{F} \cdot \hat{n}) dS$$

      Dot Product

      $$\vec{a} \cdot \vec{b} = \sum_{i=1}^n a_i b_i$$

      Ampere's Law

      $$\oint \vec{B} \cdot d\vec{l} = \mu_0 I$$

      Gauss's Law

      $$\oiint \vec{E} \cdot d\vec{A} = \frac{Q_{enc}}{\epsilon_0}$$

      Cosine Law

      $$c^2 = a^2 + b^2 - 2 \cdot a \cdot b \cdot cos(\theta)$$

      Definition of the Derivative

      $$\frac{d}{dx}f(x) = \lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$

      Pythagorean Trig Identities

      $$\sin^2(x) + \cos^2(x) = 1$$

      Cauchy's Integral Theorem

      $$\oint_C f(z)dz = 0$$

      Gravitational Potential Energy

      $$U = mgh$$
      \ No newline at end of file diff --git a/public/formulas/index.xml b/public/formulas/index.xml new file mode 100644 index 00000000..7adb4bdd --- /dev/null +++ b/public/formulas/index.xml @@ -0,0 +1 @@ +formulas on stemformulashttps://stemformulas.com/formulas/Recent content in formulas on stemformulasHugo -- gohugo.ioenSat, 24 Jun 2023 00:00:00 +0000Equivalent Uniform Annual Costhttps://stemformulas.com/formulas/equivalent-uniform-annual-cost/Sat, 24 Jun 2023 00:00:00 +0000https://stemformulas.com/formulas/equivalent-uniform-annual-cost/Formulas for converting between present worth, annual worth, and future worthPresent and Future Valuehttps://stemformulas.com/formulas/future-to-net-present-worth/Sat, 24 Jun 2023 00:00:00 +0000https://stemformulas.com/formulas/future-to-net-present-worth/Formulas for converting between future worth and net present worthLight Wavelength and Frequency Relationshiphttps://stemformulas.com/formulas/light-wavelength-frequency/Fri, 24 Mar 2023 00:00:00 +0000https://stemformulas.com/formulas/light-wavelength-frequency/The relationship between the wavelength and frequency of light.Photon Energyhttps://stemformulas.com/formulas/energy-of-light/Fri, 24 Mar 2023 00:00:00 +0000https://stemformulas.com/formulas/energy-of-light/The energy of a photon.Feynmann's Trick For Exponential Integralshttps://stemformulas.com/formulas/feynmanns-trick/Thu, 16 Mar 2023 00:00:00 +0000https://stemformulas.com/formulas/feynmanns-trick/A niche trick for evaluation exponential integrals of a certain form.Finite and Infinite Geometric Serieshttps://stemformulas.com/formulas/finite-infinite-series/Sun, 26 Feb 2023 00:00:00 +0000https://stemformulas.com/formulas/finite-infinite-series/The simplified formulas for finite and infinite geometric series.Convolutionhttps://stemformulas.com/formulas/convolution/Wed, 18 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/convolution/Formula for the convolution of two functions.Shockley Diode Modelhttps://stemformulas.com/formulas/shockley-diode-model/Wed, 18 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/shockley-diode-model/The Shockley diode model is a simplified model of a diode&rsquo;s Voltage-Current relationship.Schrodinger's Equationhttps://stemformulas.com/formulas/schrodingers-equation/Wed, 04 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/schrodingers-equation/The Schrodinger equation is a partial differential equation that describes the behavior of a quantum system.L'Hopital's Rulehttps://stemformulas.com/formulas/lhopitals-rule/Tue, 03 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/lhopitals-rule/L&rsquo;Hopital&rsquo;s rule is a method for evaluating limits of indeterminate forms.Lorentz Transformationshttps://stemformulas.com/formulas/lorentz-transformations/Mon, 02 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/lorentz-transformations/Lorentz transformations are used to transform between inertial frames of reference.Determinants of Matriceshttps://stemformulas.com/formulas/determinant/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/determinant/The formula for the determinant of a matrix.Double Angle Trig Identitieshttps://stemformulas.com/formulas/double-angle-trig-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/double-angle-trig-identities/Formulas expanding the trigonometric functions of double angles.Trig Angle Sum/Difference Identitieshttps://stemformulas.com/formulas/trig-angle-sum-difference-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/trig-angle-sum-difference-identities/Formulas for the trigonometric functions of the sum and difference of angles.Vector Projectionhttps://stemformulas.com/formulas/projection-and-perpendicular/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/projection-and-perpendicular/Formulas for the projection of a vector onto another vector and the perpendicular vector left over.Green's Theoremhttps://stemformulas.com/formulas/greens-theorem/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/greens-theorem/Green&rsquo;s theorem is a formula that describes the relationship between certain closed path line integrals and line integrals.Hooke's Law (Modulus of Elasticity)https://stemformulas.com/formulas/hookes-law-stress-strain/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hookes-law-stress-strain/Hooke&rsquo;s Law and Modulus of Elasticity relate the stress and strain of a material.Hooke's Law (Spring Constant)https://stemformulas.com/formulas/hookes-law-springs/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hookes-law-springs/Hooke&rsquo;s Law and the Spring Constant relate the force and displacement of a spring.Hyperbolic Functionshttps://stemformulas.com/formulas/hyperbolic-trig-functions/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hyperbolic-trig-functions/Definitions of the hyperbolic functionsStokes' Theoremhttps://stemformulas.com/formulas/stokes-theorem/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/stokes-theorem/Stokes&rsquo; theorem describes the relationship between the integral of the curl of a vector field over a surface to the line integral of the same field around the boundary of the surface.Cross Producthttps://stemformulas.com/formulas/cross-product/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cross-product/The cross product is a common operation in linear algebra and beyond.Divergence Theoremhttps://stemformulas.com/formulas/divergence-theorem/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/divergence-theorem/The divergence theorem is a formula that describes the relationship between the divergence of a vector field and the surface integral of the field over a closed surface.Dot Producthttps://stemformulas.com/formulas/dot-product/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/dot-product/The dot product is a common operation in linear algebra and beyond.Ampere's Lawhttps://stemformulas.com/formulas/amperes-law/Wed, 28 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/amperes-law/Ampere&rsquo;s law is a formula that describes the magnetic field produced by a current-carrying wire.Gauss's Lawhttps://stemformulas.com/formulas/gauss-law/Wed, 28 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/gauss-law/Gauss&rsquo;s law is a formula that describes the electric field produced by a charge distribution.Cosine Lawhttps://stemformulas.com/formulas/cosine-law/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cosine-law/The formula relating the sides and angles of every triangle.Definition of the Derivativehttps://stemformulas.com/formulas/definition-of-the-derivative/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/definition-of-the-derivative/The definition of the derivative.Pythagorean Trig Identitieshttps://stemformulas.com/formulas/pythagorean-trig-identities/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/pythagorean-trig-identities/A few identities involving sine, cosine, and tangent.Cauchy's Integral Theoremhttps://stemformulas.com/formulas/cauchys-integral-theorem/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cauchys-integral-theorem/A theorem used for line integrals of complex functions.Gravitational Potential Energyhttps://stemformulas.com/formulas/gravitational-potential-energy/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/gravitational-potential-energy/The potential energy of an object in a gravitation field.Kinetic Energyhttps://stemformulas.com/formulas/kinetic-energy/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/kinetic-energy/The energy of motion.Laplace's Equationhttps://stemformulas.com/formulas/laplaces-equation/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/laplaces-equation/Laplace&rsquo;s equation is a common partial differential equationFundamental Theorem of Calculushttps://stemformulas.com/formulas/fundmantal-theorem-of-calculus/Fri, 23 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/fundmantal-theorem-of-calculus/Fundamental Theorem of CalculusPythagorean Theoremhttps://stemformulas.com/formulas/pythagorean-theorem/Thu, 22 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/pythagorean-theorem/Formula relating the lengths of the sides of a right triangleMaclaurin Series for e^xhttps://stemformulas.com/formulas/taylor-expansion-of-e/Thu, 08 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/taylor-expansion-of-e/The Maclaurin series for e^xMomentum (Newtonian)https://stemformulas.com/formulas/newtonian-momentum/Thu, 08 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/newtonian-momentum/The momentum of a body in Newtonian mechanicsQuadratic Formulahttps://stemformulas.com/formulas/quadratic-formula/Tue, 06 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/quadratic-formula/The formula for the zeros of a quadratic equationNewton's 2nd Lawhttps://stemformulas.com/formulas/newtons-2nd-law/Sun, 04 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/newtons-2nd-law/The law that describes the acceleration of an object in Newtonian mechanics.Euler's Identity/Formulahttps://stemformulas.com/formulas/eulers-identity-formula/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/eulers-identity-formula/One of the most amazing formulas in mathematics.Trig functions in terms of ehttps://stemformulas.com/formulas/trig-in-terms-of-e/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/trig-in-terms-of-e/Common trig functions in terms of eIdeal Gas Lawhttps://stemformulas.com/formulas/ideal-gas-law/Sun, 27 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/ideal-gas-law/The equation of state of a hypothetical ideal gas.Ohm's Lawhttps://stemformulas.com/formulas/ohms-law/Sun, 27 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/ohms-law/Ohm&rsquo;s law states that the current through a conductor between two points is directly proportional to the voltage across the two points. \ No newline at end of file diff --git a/public/formulas/kinetic-energy/index.html b/public/formulas/kinetic-energy/index.html new file mode 100644 index 00000000..e50a6db0 --- /dev/null +++ b/public/formulas/kinetic-energy/index.html @@ -0,0 +1,14 @@ +Kinetic Energy · stemformulas + + + + +

      Kinetic Energy

      Table of Contents

      $$ E_k = \frac{1}{2}mv^2 $$

      Where

      • \(E_k\) is the kinetic energy of the object,
      • \(m\) is the mass of the object, and
      • \(v\) is the velocity of the object.

      Sources #

      Example #

      Kevin throws a 400,000 kg spaceship straight down off of an infinitely tall cliff. After some time, it reaches a terminal velocity of 500 m/s. What is the kinetic energy of the spaceship at this point?

      We know that kinetic energy is equal to \(\small \frac{1}{2}mv^2\), so we can plug in the values to get the answer:

      $$ \scriptsize E_k = \frac{1}{2}mv^2 \Longrightarrow E_k = \frac{1}{2} \cdot 400000 \cdot 500^2 \Longrightarrow E_k = 5.0 \cdot 10^{10} J $$

      See also #

      \ No newline at end of file diff --git a/public/formulas/laplaces-equation/index.html b/public/formulas/laplaces-equation/index.html new file mode 100644 index 00000000..d0637733 --- /dev/null +++ b/public/formulas/laplaces-equation/index.html @@ -0,0 +1,16 @@ +Laplace's Equation · stemformulas + + + + +

      Laplace's Equation

      $$ \nabla^2 f = \nabla \cdot \nabla f = 0 $$

      Where

      In Different Coordinate Systems #

      In rectangular coordinates: #

      $$ \scriptsize \nabla^2 f = \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2} + \frac{\partial^2 f}{\partial z^2} = 0$$

      In cylindrical coordinates: #

      $$ \scriptsize \nabla^2 f = \frac{1}{r} \frac{\partial}{\partial r} \left( r \frac{\partial f}{\partial r} \right) + \frac{1}{r^2} \frac{\partial^2 f}{\partial \phi^2} + \frac{\partial^2 f}{\partial z^2} = 0$$

      In spherical coordinates: #

      $$ \scriptsize \nabla^2 f = \frac{1}{r^2} \frac{\partial}{\partial r} \left( r^2 \frac{\partial f}{\partial r} \right) + \frac{1}{r^2 \sin \theta} \frac{\partial}{\partial \theta} \left( \sin \theta \frac{\partial f}{\partial \theta} \right) + \frac{1}{r^2 \sin^2 \theta}\frac{\partial^2 f}{\partial \varphi^2} = 0$$

      Sources #

      • Wikipedia
      • Griffith’s Introduction to Electrodynamics’ back cover
      \ No newline at end of file diff --git a/public/formulas/lhopitals-rule/index.html b/public/formulas/lhopitals-rule/index.html new file mode 100644 index 00000000..05bf4dd2 --- /dev/null +++ b/public/formulas/lhopitals-rule/index.html @@ -0,0 +1,16 @@ +L'Hopital's Rule · stemformulas + + + + +

      L'Hopital's Rule

      Table of Contents

      L’hopital’s rule is a method for evaluating limits of indeterminate form.

      $$\lim_{x \to c} \frac{f(x)}{g(x)} = \lim_{x \to c} \frac{f’(x)}{g’(x)}$$

      Where

      • \( \small f(x) \) and \( \small g(x) \) are functions,
      • \(\small ‘\) denotes the derivative of a function, and
      • \( \small c \) is the point at which the limit is being evaluated

      Sources #

      Example #

      Calculate the limit of \(\small f(x) = \frac{x^2 - 9}{x - 3}\) as \(\small x\) approaches \(\small 3\).

      Since plugging in 3 yields 0/0 which is an indeterminate form, we can apply L’Hopital’s rule, with \( \small f(x) = x^2 - 9\) and \( \small g(x) = x - 3\).

      Taking both derivatives, we get \( \small f’(x) = 2x\) and \( \small g’(x) = 1\).

      Plugging into the right side of the L’Hopital’s rule, we get that

      $$ \lim_{x \to 3} \frac{f(x)}{g(x)} = \lim_{x \to 3} \frac{f’(x)}{g’(x)} = \lim_{x \to 3} \frac{2x}{1} = 6$$

      \ No newline at end of file diff --git a/public/formulas/light-wavelength-frequency/index.html b/public/formulas/light-wavelength-frequency/index.html new file mode 100644 index 00000000..54ee9d0e --- /dev/null +++ b/public/formulas/light-wavelength-frequency/index.html @@ -0,0 +1,15 @@ +Light Wavelength and Frequency Relationship · stemformulas + + + + +

      Light Wavelength and Frequency Relationship

      Table of Contents

      The relationship between the wavelength and frequency of light in a vacuum is:

      $$ c_0 = \lambda f $$

      Where

      • \(\scriptsize \lambda\) is the wavelength of the light,
      • \(\scriptsize c_0\) is the speed of light in a vacuum, and
      • \(\scriptsize f\) is the frequency of the light.

      For a medium with a refractive index of \(\scriptsize n\), the relationship is:

      $$ \frac{c_0}{n} = \frac{\lambda}{n} f $$

      That is to say, the speed of light and wavelength change in a medium, but the frequency remains the same.

      Sources #

      See also #

      \ No newline at end of file diff --git a/public/formulas/lorentz-transformations/index.html b/public/formulas/lorentz-transformations/index.html new file mode 100644 index 00000000..11304845 --- /dev/null +++ b/public/formulas/lorentz-transformations/index.html @@ -0,0 +1,18 @@ +Lorentz Transformations · stemformulas + + + + +

      Lorentz Transformations

      Table of Contents

      For a fixed frame of reference \(\small x, y, z, t\), the following transformations can be used to transform to a frame of reference moving with velocity \(\small v\) with respect to the fixed frame:

      $$\small x’ = \frac{x-vt}{\sqrt{1-v^2/c^2}}$$ +$$ \small y’ = y$$ +$$ \small z’ = z$$ +$$ \small t’ = \frac{t-vx/c^2}{\sqrt{1-v^2/c^2}}$$

      Where

      • \(c\) is the speed of light

      Sources #

      \ No newline at end of file diff --git a/public/formulas/newtonian-momentum/index.html b/public/formulas/newtonian-momentum/index.html new file mode 100644 index 00000000..9cc83551 --- /dev/null +++ b/public/formulas/newtonian-momentum/index.html @@ -0,0 +1,16 @@ +Momentum (Newtonian) · stemformulas + + + + +

      Momentum (Newtonian)

      Table of Contents

      $$p = mv$$

      Where

      • \(p\) is the momentum of the body,
      • \(m\) is the mass of the body, and
      • \(v\) is the velocity of the body

      This formula relates the momentum of a body to its mass and velocity.

      Sources #

      Example #

      Kevin throws a baseball with a mass of 0.5 kg at a speed of 5000000 m/s. What is the momentum of the baseball?

      We know that momentum is equal to mass times velocity, so we can plug in the values to get the answer.

      $$p = mv \Longrightarrow p = 0.5 \cdot 5000000 \Longrightarrow p = 2500000 \frac{kg \cdot m}{s}$$

      \ No newline at end of file diff --git a/public/formulas/newtons-2nd-law/index.html b/public/formulas/newtons-2nd-law/index.html new file mode 100644 index 00000000..926f592c --- /dev/null +++ b/public/formulas/newtons-2nd-law/index.html @@ -0,0 +1,19 @@ +Newton's 2nd Law · stemformulas + + + + +

      Newton's 2nd Law

      Table of Contents

      $$F = ma$$

      Where +\(F\) is the net force being applied to the object, +\(m\) is the mass of the object, and +\(a\) is the acceleration of the object.

      Newton’s second law is a statement of Newtonian mechanics that the net force on a body is equal to the body’s mass times its acceleration.

      Sources #

      Example #

      Kevin pushes his 10 kg brain across the floor with a force of 100 N. Friction pushes back against his brain statically +with 10 N of force. What is the acceleration of the brain?

      $$ F = ma \Longrightarrow a = \frac{F}{m} = \frac{100N - 10N}{10kg} = 9.8 m/s^2 $$

      \ No newline at end of file diff --git a/public/formulas/ohms-law/index.html b/public/formulas/ohms-law/index.html new file mode 100644 index 00000000..f00c6a37 --- /dev/null +++ b/public/formulas/ohms-law/index.html @@ -0,0 +1,15 @@ +Ohm's Law · stemformulas + + + + +

      Ohm's Law

      Table of Contents

      $$V = IR$$

      Where +\(V\) is the voltage across the conductor (e.g. a wire), +\(I\) is the current through the conductor, and +\(R\) is the resistance of the conductor.

      Ohm’s law states that the current through a conductor between two points is directly proportional to the voltage across the two points. - Wikipedia

      Sources #

      Example #

      Kevin measures the current through a 10 ohm resistor to be 0.5 A. He measures the current with the resistor actually connected to the circuit (sorry Mr. Sidney). What is the voltage across the resistor?

      $$ V = IR \Longrightarrow V = 10 * 0.5 = 5V $$

      \ No newline at end of file diff --git a/public/formulas/page/1/index.html b/public/formulas/page/1/index.html new file mode 100644 index 00000000..a5ceba49 --- /dev/null +++ b/public/formulas/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/formulas/ \ No newline at end of file diff --git a/public/formulas/page/2/index.html b/public/formulas/page/2/index.html new file mode 100644 index 00000000..04fe8838 --- /dev/null +++ b/public/formulas/page/2/index.html @@ -0,0 +1,9 @@ +formulas · stemformulas + + +
      \ No newline at end of file diff --git a/public/formulas/projection-and-perpendicular/index.html b/public/formulas/projection-and-perpendicular/index.html new file mode 100644 index 00000000..3597a729 --- /dev/null +++ b/public/formulas/projection-and-perpendicular/index.html @@ -0,0 +1,16 @@ +Vector Projection · stemformulas + + + + +

      Vector Projection

      Table of Contents

      For any vectors \(\small \vec{a}\) and \(\small \vec{b}\):

      diagram-dont-css

      The projected (red) and perpendicular (green) vector can be calculated as follows:

      $$ proj_{\vec{b}}(\vec{a})=\frac{\vec{a}\cdot\vec{b}}{|\vec{b}|^2}\vec{b}=(\vec{a}\cdot\hat{b})\hat{b} $$

      $$ perp_{\vec{b}}(\vec{a})=\vec{a}-proj_{\vec{b}}(\vec{a}) $$

      Where

      • \(\small \vec{a}\) is the vector to be projected
      • \(\small \vec{b}\) is the vector to be projected onto
      • \(\cdot\) is the dot product
      • \(\small |\vec{b}|^2\) is the magnitude of \(\small \vec{b}\), squared
      • \(\small \hat{b}\) is the unit vector in the direction of \(\small \vec{b}\)

      Sources #

      \ No newline at end of file diff --git a/public/formulas/projection-and-perpendicular/projection.png b/public/formulas/projection-and-perpendicular/projection.png new file mode 100644 index 00000000..40c64e81 Binary files /dev/null and b/public/formulas/projection-and-perpendicular/projection.png differ diff --git a/public/formulas/projection-and-perpendicular/projection_hub0ab227e1d60e0d86aab4e2fbfa18360_54800_1024x0_resize_lanczos_3.png b/public/formulas/projection-and-perpendicular/projection_hub0ab227e1d60e0d86aab4e2fbfa18360_54800_1024x0_resize_lanczos_3.png new file mode 100644 index 00000000..bede7280 Binary files /dev/null and b/public/formulas/projection-and-perpendicular/projection_hub0ab227e1d60e0d86aab4e2fbfa18360_54800_1024x0_resize_lanczos_3.png differ diff --git a/public/formulas/projection-and-perpendicular/projection_hub0ab227e1d60e0d86aab4e2fbfa18360_54800_1320x0_resize_lanczos_3.png b/public/formulas/projection-and-perpendicular/projection_hub0ab227e1d60e0d86aab4e2fbfa18360_54800_1320x0_resize_lanczos_3.png new file mode 100644 index 00000000..689a509d Binary files /dev/null and b/public/formulas/projection-and-perpendicular/projection_hub0ab227e1d60e0d86aab4e2fbfa18360_54800_1320x0_resize_lanczos_3.png differ diff --git a/public/formulas/projection-and-perpendicular/projection_hub0ab227e1d60e0d86aab4e2fbfa18360_54800_330x0_resize_lanczos_3.png b/public/formulas/projection-and-perpendicular/projection_hub0ab227e1d60e0d86aab4e2fbfa18360_54800_330x0_resize_lanczos_3.png new file mode 100644 index 00000000..9fa7dd9a Binary files /dev/null and b/public/formulas/projection-and-perpendicular/projection_hub0ab227e1d60e0d86aab4e2fbfa18360_54800_330x0_resize_lanczos_3.png differ diff --git a/public/formulas/projection-and-perpendicular/projection_hub0ab227e1d60e0d86aab4e2fbfa18360_54800_660x0_resize_lanczos_3.png b/public/formulas/projection-and-perpendicular/projection_hub0ab227e1d60e0d86aab4e2fbfa18360_54800_660x0_resize_lanczos_3.png new file mode 100644 index 00000000..78481654 Binary files /dev/null and b/public/formulas/projection-and-perpendicular/projection_hub0ab227e1d60e0d86aab4e2fbfa18360_54800_660x0_resize_lanczos_3.png differ diff --git a/public/formulas/pythagorean-theorem/index.html b/public/formulas/pythagorean-theorem/index.html new file mode 100644 index 00000000..ceffdaa6 --- /dev/null +++ b/public/formulas/pythagorean-theorem/index.html @@ -0,0 +1,17 @@ +Pythagorean Theorem · stemformulas + + + + +

      Pythagorean Theorem

      Table of Contents

      For any right triangle abc (see diagram below):

      The lengths of the sides are related by the Pythagorean Theorem:

      $$a^2 + b^2 = c^2$$

      diagram

      Where

      • \(a\) and \(b\) are the lengths of the legs of the triangle, and
      • \(c\) is the length of the hypotenuse

      Sources: #

      Example #

      After being rejected by a girl, Kevin bends forward to pick up his hurt ego. His legs contact the floor at a right angle and his arms + torso miraculously reach the ground in front of him.

      If his legs are 30 meters long, and his arms + torso +are 50 meters long, how far away is his ego from his legs?

      Using the diagram above, a = 30m and c = 50m. Using the pythagorean theorem:

      $$ a^2 + b^2 = c^2 \Longrightarrow b = \sqrt{c^2 - a^2} = \sqrt{1600} = 40m$$

      \ No newline at end of file diff --git a/public/formulas/pythagorean-theorem/triangle.png b/public/formulas/pythagorean-theorem/triangle.png new file mode 100644 index 00000000..05c00089 Binary files /dev/null and b/public/formulas/pythagorean-theorem/triangle.png differ diff --git a/public/formulas/pythagorean-trig-identities/index.html b/public/formulas/pythagorean-trig-identities/index.html new file mode 100644 index 00000000..6713f7c2 --- /dev/null +++ b/public/formulas/pythagorean-trig-identities/index.html @@ -0,0 +1,15 @@ +Pythagorean Trig Identities · stemformulas + + + + +
      \ No newline at end of file diff --git a/public/formulas/quadratic-formula/index.html b/public/formulas/quadratic-formula/index.html new file mode 100644 index 00000000..1ddde61b --- /dev/null +++ b/public/formulas/quadratic-formula/index.html @@ -0,0 +1,16 @@ +Quadratic Formula · stemformulas + + + + +

      Quadratic Formula

      Table of Contents

      $$x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$$

      Where

      • \(x\) is the solution to the quadratic equation \(ax^2 + bx + c = 0\),
      • \(a\) is the coefficient of the \(x^2\) term,
      • \(b\) is the coefficient of the \(x\) term, and
      • \(c\) is the constant term

      Sources #

      Example #

      Find the intersection points of the parabola \(y = x^2\) and the line \(y = 2x + 3\).

      We know that these two will intersect when \(x^2 = 2x + 3\). We can solve this quadratic equation using the quadratic formula.

      First, we rearrange to get it into the correct form: \(x^2 - 2x - 3 = 0\). Then, we plug in the coefficients into the quadratic formula, +with a = 1, b = -2, and c = -3.

      $$x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \Longrightarrow x = \frac{-(-2) \pm \sqrt{(-2)^2 - 4(1)(-3)}}{2(1)} $$

      $$\Longrightarrow x = \frac{2 \pm \sqrt{4 + 12}}{2} \Longrightarrow x = \frac{2 \pm 4}{2} \Longrightarrow x = 3, -1$$

      Plugging these x values into either of the original equations gives us the y values of the intersection points.

      The final answer is \((3, 9)\) and \((-1, 1)\), which we can verify on a graph:

      correct answer is confirmed

      \ No newline at end of file diff --git a/public/formulas/quadratic-formula/solution.png b/public/formulas/quadratic-formula/solution.png new file mode 100644 index 00000000..1393d0a1 Binary files /dev/null and b/public/formulas/quadratic-formula/solution.png differ diff --git a/public/formulas/quadratic-formula/solution_hu5122a1ea184d218598e49f6ebc9f9a74_74578_1024x0_resize_lanczos_3.png b/public/formulas/quadratic-formula/solution_hu5122a1ea184d218598e49f6ebc9f9a74_74578_1024x0_resize_lanczos_3.png new file mode 100644 index 00000000..6b033e8b Binary files /dev/null and b/public/formulas/quadratic-formula/solution_hu5122a1ea184d218598e49f6ebc9f9a74_74578_1024x0_resize_lanczos_3.png differ diff --git a/public/formulas/quadratic-formula/solution_hu5122a1ea184d218598e49f6ebc9f9a74_74578_1320x0_resize_lanczos_3.png b/public/formulas/quadratic-formula/solution_hu5122a1ea184d218598e49f6ebc9f9a74_74578_1320x0_resize_lanczos_3.png new file mode 100644 index 00000000..b39254ac Binary files /dev/null and b/public/formulas/quadratic-formula/solution_hu5122a1ea184d218598e49f6ebc9f9a74_74578_1320x0_resize_lanczos_3.png differ diff --git a/public/formulas/quadratic-formula/solution_hu5122a1ea184d218598e49f6ebc9f9a74_74578_330x0_resize_lanczos_3.png b/public/formulas/quadratic-formula/solution_hu5122a1ea184d218598e49f6ebc9f9a74_74578_330x0_resize_lanczos_3.png new file mode 100644 index 00000000..92a9b15c Binary files /dev/null and b/public/formulas/quadratic-formula/solution_hu5122a1ea184d218598e49f6ebc9f9a74_74578_330x0_resize_lanczos_3.png differ diff --git a/public/formulas/quadratic-formula/solution_hu5122a1ea184d218598e49f6ebc9f9a74_74578_660x0_resize_lanczos_3.png b/public/formulas/quadratic-formula/solution_hu5122a1ea184d218598e49f6ebc9f9a74_74578_660x0_resize_lanczos_3.png new file mode 100644 index 00000000..89547117 Binary files /dev/null and b/public/formulas/quadratic-formula/solution_hu5122a1ea184d218598e49f6ebc9f9a74_74578_660x0_resize_lanczos_3.png differ diff --git a/public/formulas/schrodingers-equation/index.html b/public/formulas/schrodingers-equation/index.html new file mode 100644 index 00000000..f24c447a --- /dev/null +++ b/public/formulas/schrodingers-equation/index.html @@ -0,0 +1,15 @@ +Schrodinger's Equation · stemformulas + + + + +

      Schrodinger's Equation

      Time-dependent #

      The time-dependent Schrodinger equation is a partial differential equation that describes the behavior of a quantum system evolving with time. In one spacial dimension it is given by:

      $$ \scriptsize i\hbar\frac{\partial}{\partial t}\Psi(x,t) = \left[-\frac{\hbar^2}{2m}\frac{\partial^2}{\partial x^2} + V(x, t)\right]\Psi(x,t) $$

      Where

      • \(\small \Psi(x,t)\) is the wave function of the particle,
      • \(\small V \) is the potential energy function,
      • \(\small m \) is the mass of the particle, and
      • \(\small \hbar \) is the reduced Planck constant.

      In three spacial dimensions, the partial derivative in the second term is replaced with the Laplacian operator:

      $$ \scriptsize i\hbar\frac{\partial}{\partial t}\Psi(r,t) = \left[-\frac{\hbar^2}{2m}\nabla^2 + V(r,t)\right]\Psi(r,t) $$

      Where \(\small r \) is the position vector of the particle.

      Time-independent #

      If \(\small V \) is independent of time, the wave function can form stationary states that are described by the time-independent Schrodinger equation. In one spacial dimension it is given by:

      $$ \scriptsize \left[-\frac{\hbar^2}{2m}\frac{\partial^2}{\partial x^2} + V(x)\right]\Psi(x) = E\Psi(x) $$

      Where \(\small E \) is the energy of the stationary state.

      In three spacial dimensions, the partial derivative is again replaced with the Laplacian operator:

      $$ \scriptsize \left[-\frac{\hbar^2}{2m}\nabla^2 + V(r)\right]\Psi(r) = E\Psi(r) $$

      Sources #

      • Wikipedia
      • Griffiths’ Introduction to Quantum Mechanics, P. 171
      \ No newline at end of file diff --git a/public/formulas/shockley-diode-model/index.html b/public/formulas/shockley-diode-model/index.html new file mode 100644 index 00000000..aa7df95a --- /dev/null +++ b/public/formulas/shockley-diode-model/index.html @@ -0,0 +1,15 @@ +Shockley Diode Model · stemformulas + + + + +

      Shockley Diode Model

      Table of Contents

      The Shockley diode equation is an approximation that relates the diode’s current to its voltage.

      $$ I = I_S \cdot (e^{\frac{V_D}{nV_T}} - 1)$$

      Where

      • \(\small I\) is the current through the diode
      • \(\small I_S\) is the diode’s saturation current
      • \(\small V_D\) is the diode’s voltage
      • \(\small n\) is the diode’s ideality factor, usually between 1 and 2
      • \(\small V_T\) is the thermal voltage, which is equal to \(\small kT/q\) where \(\small k\) is Boltzmann’s constant, \(\small T\) is the temperature in Kelvin, and \(\small q\) is the electron charge.

      When \(\small V_D\) is large relative to \(\small nV_T\), the equation can be approximated as:

      $$ I \approx I_S \cdot e^{\frac{V_D}{nV_T}} $$

      Sources #

      \ No newline at end of file diff --git a/public/formulas/stokes-theorem/index.html b/public/formulas/stokes-theorem/index.html new file mode 100644 index 00000000..76e4eba8 --- /dev/null +++ b/public/formulas/stokes-theorem/index.html @@ -0,0 +1,17 @@ +Stokes' Theorem · stemformulas + + + + +

      Stokes' Theorem

      Table of Contents

      If S is an oriented smooth surface that is bounded by a simple, closed, smooth boundary curve C with positive orientation. and F is a vector field then, Stokes’ theorem says that

      $$ \int_C \vec{F} \cdot d\vec{r} = \iint_S \nabla \times \vec{F} \cdot d\vec{S} $$

      Definitely read Paul’s Online Notes, they’re great.

      Stokes’ theorem can be thought of as a 3D generalization of Green’s theorem.

      Sources #

      See also #

      \ No newline at end of file diff --git a/public/formulas/taylor-expansion-of-e/index.html b/public/formulas/taylor-expansion-of-e/index.html new file mode 100644 index 00000000..b3a87543 --- /dev/null +++ b/public/formulas/taylor-expansion-of-e/index.html @@ -0,0 +1,15 @@ +Maclaurin Series for e^x · stemformulas + + + + +
      \ No newline at end of file diff --git a/public/formulas/trig-angle-sum-difference-identities/index.html b/public/formulas/trig-angle-sum-difference-identities/index.html new file mode 100644 index 00000000..6b7384e7 --- /dev/null +++ b/public/formulas/trig-angle-sum-difference-identities/index.html @@ -0,0 +1,22 @@ +Trig Angle Sum/Difference Identities · stemformulas + + + + +

      Trig Angle Sum/Difference Identities

      Table of Contents

      For arbitrary angles \(\small a\) and \(\small b\), the following are true:

      $$ sin(a + b) = sin(a) cos(b) + cos(a) sin(b) $$ +$$ sin(a - b) = sin(a) cos(b) - cos(a) sin(b) $$

      $$ cos(a + b) = cos(a) cos(b) - sin(a) sin(b) $$ +$$ cos(a - b) = cos(a) cos(b) + sin(a) sin(b) $$

      $$ tan(a + b) = \frac{tan(a) + tan(b)}{1 - tan(a) tan(b)} $$ +$$ tan(a - b) = \frac{tan(a) - tan(b)}{1 + tan(a) tan(b)} $$

      Sources: #

      \ No newline at end of file diff --git a/public/formulas/trig-in-terms-of-e/index.html b/public/formulas/trig-in-terms-of-e/index.html new file mode 100644 index 00000000..ddcbebf0 --- /dev/null +++ b/public/formulas/trig-in-terms-of-e/index.html @@ -0,0 +1,18 @@ +Trig functions in terms of e · stemformulas + + + + +
      \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg new file mode 100644 index 00000000..567f17b0 --- /dev/null +++ b/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/logo.png b/public/img/logo.png similarity index 100% rename from assets/img/logo.png rename to public/img/logo.png diff --git a/public/index.html b/public/index.html new file mode 100644 index 00000000..147cf588 --- /dev/null +++ b/public/index.html @@ -0,0 +1,7 @@ +stemformulas + + +
      stemformulas logo
        \ No newline at end of file diff --git a/public/index.json b/public/index.json new file mode 100644 index 00000000..99e2f77f --- /dev/null +++ b/public/index.json @@ -0,0 +1 @@ +[{"content":"Present Worth to Annual Worth # For a sum of money \\(\\small P\\) invested at a compounding interest rate \\(\\small i\\) for \\(\\small n\\) years, the equivalent uniform annual cost (a.k.a \u0026ldquo;ordinary annuity\u0026rdquo;) \\(\\small A\\) is given by:\n$$A = P \\frac{i(1 + i)^n}{(1 + i)^n - 1} $$\nWhere\n\\(\\small P\\) is the present value, \\(\\small i\\) is the interest rate, and \\(\\small n\\) is the number of periods This can be rewritten to find P:\n$$P = A \\frac{(1 + i)^n - 1}{i(1 + i)^n}$$\nFuture Worth to Annual Worth # If the future worth is known instead, the formula is\n$$A = F \\frac{i}{(1 + i)^n - 1}$$\nRearranging again, F can be found instead if A is known:\n$$F = A \\frac{(1 + i)^n - 1}{i}$$\nSources # Note that these sources use a slightly rearranged form of the formula, but it is equivalent.\nInvestopedia Investopedia financeformulas.net ","date":"Jun 24 2023","permalink":"/formulas/equivalent-uniform-annual-cost/","section":"formulas","summary":"Formulas for converting between present worth, annual worth, and future worth","title":"Equivalent Uniform Annual Cost"},{"content":"","date":null,"permalink":"/tags/finance/","section":"Tags","summary":"","title":"finance"},{"content":" ","date":null,"permalink":"/formulas/","section":"formulas","summary":" ","title":"formulas"},{"content":"","date":null,"permalink":"/tags/math/","section":"Tags","summary":"","title":"math"},{"content":"For a sum of money \\(P\\) invested at a compounding interest rate \\(i\\) for \\(n\\) periods, the future value \\(F\\) is given by:\nF = P(1 + i)^n\nWhere\n\\(P\\) is the present value, \\(i\\) is the interest rate, and \\(n\\) is the number of periods Sources # Investopedia Wikipedia ","date":"Jun 24 2023","permalink":"/formulas/future-to-net-present-worth/","section":"formulas","summary":"Formulas for converting between future worth and net present worth","title":"Present and Future Value"},{"content":"","date":null,"permalink":"/","section":"stemformulas","summary":"","title":"stemformulas"},{"content":"","date":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags"},{"content":" The relationship between the wavelength and frequency of light in a vacuum is:\n$$ c_0 = \\lambda f $$\nWhere\n\\(\\scriptsize \\lambda\\) is the wavelength of the light, \\(\\scriptsize c_0\\) is the speed of light in a vacuum, and \\(\\scriptsize f\\) is the frequency of the light. For a medium with a refractive index of \\(\\scriptsize n\\), the relationship is:\n$$ \\frac{c_0}{n} = \\frac{\\lambda}{n} f $$\nThat is to say, the speed of light and wavelength change in a medium, but the frequency remains the same.\nSources # Wikipedia Brittanica See also # Energy of light ","date":"Mar 24 2023","permalink":"/formulas/light-wavelength-frequency/","section":"formulas","summary":"The relationship between the wavelength and frequency of light.","title":"Light Wavelength and Frequency Relationship"},{"content":"","date":null,"permalink":"/tags/optics/","section":"Tags","summary":"","title":"optics"},{"content":" The energy of a photon is:\n$$ E = hf = \\frac{hc}{\\lambda}$$\nWhere\n\\(h\\) is the Planck constant, \\(f\\) is the frequency of the photon \\(c\\) is the speed of light in a vacuum, and \\(\\lambda\\) is the wavelength of the light. Sources # Wikipedia Khan Academy See also # Light Wavelength and Frequency Relationship ","date":"Mar 24 2023","permalink":"/formulas/energy-of-light/","section":"formulas","summary":"The energy of a photon.","title":"Photon Energy"},{"content":"","date":null,"permalink":"/tags/physics/","section":"Tags","summary":"","title":"physics"},{"content":"","date":null,"permalink":"/tags/calculus/","section":"Tags","summary":"","title":"calculus"},{"content":" Feynmann\u0026rsquo;s Trick For Exponential Integrals # $$\\int_0^{\\infty} x^n e^{-tx} dx = \\frac{n!}{t^{n+1}}$$\nWhere\n\\(t\\) is a constant and \\(n!\\) is the Gamma function (does not require \\(n\\) to be an integer) Feynmann\u0026rsquo;s trick involves \u0026ldquo;differentiating under the integral\u0026rdquo; which is a whole technique on its own, and the above formula is something that can be found using this technique. I found that formula particularly hard to find online, so I decided to write it up.\nSources # William\u0026rsquo;s College (PDF Download) ","date":"Mar 16 2023","permalink":"/formulas/feynmanns-trick/","section":"formulas","summary":"A niche trick for evaluation exponential integrals of a certain form.","title":"Feynmann's Trick For Exponential Integrals"},{"content":" Finite Geometric Series # For a series of the form \\( \\small a, ar, ar^2, ar^3, \\ldots\\), the sum of the first \\(\\small n\\) terms is\n$$S_n = \\sum_{n=0}^{N} ar^n = \\frac{a(1-r^N)}{1-r}$$\nwhere \\(\\small r \\neq 1 \\) is the common ratio.\nIf \\(\\small r = 1\\), then \\(\\small S_n = aN\\).\nInfinite Geometric Series # If the magnitude of \\(\\small r\\) is less than \\(\\small 1\\), the sum of the infinite series is\n$$S_{\\infty} = \\sum_{n=0}^{\\infty} ar^n = \\frac{a}{1-r}$$\nSources # Wikipedia Amsi.org.au ","date":"Feb 26 2023","permalink":"/formulas/finite-infinite-series/","section":"formulas","summary":"The simplified formulas for finite and infinite geometric series.","title":"Finite and Infinite Geometric Series"},{"content":"The formula for the convolution of two functions \\(\\small f\\) and \\(\\small g\\) is:\n$$ (f*g)(t)=\\int_{-\\infty}^{\\infty} f(\\tau)g(t-\\tau)d\\tau$$\nWhere\n\\(\\tau\\) is a dummy variable that is used in the integral only. Sources # Wikipedia Wolfram Mathworld ","date":"Jan 18 2023","permalink":"/formulas/convolution/","section":"formulas","summary":"Formula for the convolution of two functions.","title":"Convolution"},{"content":"","date":null,"permalink":"/tags/electrical-engineering/","section":"Tags","summary":"","title":"electrical engineering"},{"content":"","date":null,"permalink":"/tags/electronics/","section":"Tags","summary":"","title":"electronics"},{"content":"","date":null,"permalink":"/tags/integration/","section":"Tags","summary":"","title":"integration"},{"content":"The Shockley diode equation is an approximation that relates the diode\u0026rsquo;s current to its voltage.\n$$ I = I_S \\cdot (e^{\\frac{V_D}{nV_T}} - 1)$$\nWhere\n\\(\\small I\\) is the current through the diode \\(\\small I_S\\) is the diode\u0026rsquo;s saturation current \\(\\small V_D\\) is the diode\u0026rsquo;s voltage \\(\\small n\\) is the diode\u0026rsquo;s ideality factor, usually between 1 and 2 \\(\\small V_T\\) is the thermal voltage, which is equal to \\(\\small kT/q\\) where \\(\\small k\\) is Boltzmann\u0026rsquo;s constant, \\(\\small T\\) is the temperature in Kelvin, and \\(\\small q\\) is the electron charge. When \\(\\small V_D\\) is large relative to \\(\\small nV_T\\), the equation can be approximated as:\n$$ I \\approx I_S \\cdot e^{\\frac{V_D}{nV_T}} $$\nSources # Wikipedia Wikiwand ","date":"Jan 18 2023","permalink":"/formulas/shockley-diode-model/","section":"formulas","summary":"The Shockley diode model is a simplified model of a diode\u0026rsquo;s Voltage-Current relationship.","title":"Shockley Diode Model"},{"content":"","date":null,"permalink":"/tags/quantum-mechanics/","section":"Tags","summary":"","title":"quantum mechanics"},{"content":" Time-dependent # The time-dependent Schrodinger equation is a partial differential equation that describes the behavior of a quantum system evolving with time. In one spacial dimension it is given by:\n$$ \\scriptsize i\\hbar\\frac{\\partial}{\\partial t}\\Psi(x,t) = \\left[-\\frac{\\hbar^2}{2m}\\frac{\\partial^2}{\\partial x^2} + V(x, t)\\right]\\Psi(x,t) $$\nWhere\n\\(\\small \\Psi(x,t)\\) is the wave function of the particle, \\(\\small V \\) is the potential energy function, \\(\\small m \\) is the mass of the particle, and \\(\\small \\hbar \\) is the reduced Planck constant. In three spacial dimensions, the partial derivative in the second term is replaced with the Laplacian operator:\n$$ \\scriptsize i\\hbar\\frac{\\partial}{\\partial t}\\Psi(r,t) = \\left[-\\frac{\\hbar^2}{2m}\\nabla^2 + V(r,t)\\right]\\Psi(r,t) $$\nWhere \\(\\small r \\) is the position vector of the particle.\nTime-independent # If \\(\\small V \\) is independent of time, the wave function can form stationary states that are described by the time-independent Schrodinger equation. In one spacial dimension it is given by:\n$$ \\scriptsize \\left[-\\frac{\\hbar^2}{2m}\\frac{\\partial^2}{\\partial x^2} + V(x)\\right]\\Psi(x) = E\\Psi(x) $$\nWhere \\(\\small E \\) is the energy of the stationary state.\nIn three spacial dimensions, the partial derivative is again replaced with the Laplacian operator:\n$$ \\scriptsize \\left[-\\frac{\\hbar^2}{2m}\\nabla^2 + V(r)\\right]\\Psi(r) = E\\Psi(r) $$\nSources # Wikipedia Griffiths\u0026rsquo; Introduction to Quantum Mechanics, P. 171 ","date":"Jan 4 2023","permalink":"/formulas/schrodingers-equation/","section":"formulas","summary":"The Schrodinger equation is a partial differential equation that describes the behavior of a quantum system.","title":"Schrodinger's Equation"},{"content":" L\u0026rsquo;hopital\u0026rsquo;s rule is a method for evaluating limits of indeterminate form.\n$$\\lim_{x \\to c} \\frac{f(x)}{g(x)} = \\lim_{x \\to c} \\frac{f\u0026rsquo;(x)}{g\u0026rsquo;(x)}$$\nWhere\n\\( \\small f(x) \\) and \\( \\small g(x) \\) are functions, \\(\\small \u0026lsquo;\\) denotes the derivative of a function, and \\( \\small c \\) is the point at which the limit is being evaluated Sources # Wikipedia Paul\u0026rsquo;s Online Notes Example # Calculate the limit of \\(\\small f(x) = \\frac{x^2 - 9}{x - 3}\\) as \\(\\small x\\) approaches \\(\\small 3\\).\nSince plugging in 3 yields 0/0 which is an indeterminate form, we can apply L\u0026rsquo;Hopital\u0026rsquo;s rule, with \\( \\small f(x) = x^2 - 9\\) and \\( \\small g(x) = x - 3\\).\nTaking both derivatives, we get \\( \\small f\u0026rsquo;(x) = 2x\\) and \\( \\small g\u0026rsquo;(x) = 1\\).\nPlugging into the right side of the L\u0026rsquo;Hopital\u0026rsquo;s rule, we get that\n$$ \\lim_{x \\to 3} \\frac{f(x)}{g(x)} = \\lim_{x \\to 3} \\frac{f\u0026rsquo;(x)}{g\u0026rsquo;(x)} = \\lim_{x \\to 3} \\frac{2x}{1} = 6$$\n","date":"Jan 3 2023","permalink":"/formulas/lhopitals-rule/","section":"formulas","summary":"L\u0026rsquo;Hopital\u0026rsquo;s rule is a method for evaluating limits of indeterminate forms.","title":"L'Hopital's Rule"},{"content":"","date":null,"permalink":"/tags/limits/","section":"Tags","summary":"","title":"limits"},{"content":" For a fixed frame of reference \\(\\small x, y, z, t\\), the following transformations can be used to transform to a frame of reference moving with velocity \\(\\small v\\) with respect to the fixed frame:\n$$\\small x\u0026rsquo; = \\frac{x-vt}{\\sqrt{1-v^2/c^2}}$$ $$ \\small y\u0026rsquo; = y$$ $$ \\small z\u0026rsquo; = z$$ $$ \\small t\u0026rsquo; = \\frac{t-vx/c^2}{\\sqrt{1-v^2/c^2}}$$\nWhere\n\\(c\\) is the speed of light Sources # Wikipedia HyperPhysics ","date":"Jan 2 2023","permalink":"/formulas/lorentz-transformations/","section":"formulas","summary":"Lorentz transformations are used to transform between inertial frames of reference.","title":"Lorentz Transformations"},{"content":"","date":null,"permalink":"/tags/relativity/","section":"Tags","summary":"","title":"relativity"},{"content":"","date":null,"permalink":"/tags/cos/","section":"Tags","summary":"","title":"cos"},{"content":" The determinant of a matrix is a scalar value that can be calculated from the elements of the matrix. It is denoted by \\(\\small \\det(A)\\) or \\(\\small |A|\\).\n$$ \\det\\begin{bmatrix}\\ a \u0026amp; b\\\\ c \u0026amp; d\\\\ \\end{bmatrix}=ad-cb $$\n$$\\det\\begin{bmatrix} a \u0026amp; b \u0026amp; c\\\\ d \u0026amp; e \u0026amp; f\\\\ g \u0026amp; h \u0026amp; i \\end{bmatrix}=a\\begin{vmatrix} e \u0026amp; f\\\\ h \u0026amp; i \\end{vmatrix}-b\\begin{vmatrix} d \u0026amp; f\\\\ g \u0026amp; i \\end{vmatrix}+c\\begin{vmatrix} d \u0026amp; e\\\\ g \u0026amp; h \\end{vmatrix}$$\nThe pattern continues for larger matrices, here is an example of a 4x4 matrix determinant by Byju\u0026rsquo;s.\nSources # Wikipedia Khan Academy ","date":"Jan 1 2023","permalink":"/formulas/determinant/","section":"formulas","summary":"The formula for the determinant of a matrix.","title":"Determinants of Matrices"},{"content":" For any angle \\(\\small \\theta\\), the following are true:\n$$ sin(2\\theta) = 2 sin(\\theta) cos(\\theta) $$\n$$ \\small cos(2\\theta) = cos^2(\\theta) - sin^2(\\theta) = 2 cos^2(\\theta) - 1 = 1 - 2 sin^2(\\theta)$$\n$$ tan(2\\theta) = \\frac{2 tan(\\theta)}{1 - tan^2(\\theta)} $$\nSources # Wikipedia Byju\u0026rsquo;s ","date":"Jan 1 2023","permalink":"/formulas/double-angle-trig-identities/","section":"formulas","summary":"Formulas expanding the trigonometric functions of double angles.","title":"Double Angle Trig Identities"},{"content":"","date":null,"permalink":"/tags/identity/","section":"Tags","summary":"","title":"identity"},{"content":"","date":null,"permalink":"/tags/linear-algebra/","section":"Tags","summary":"","title":"linear algebra"},{"content":"","date":null,"permalink":"/tags/sin/","section":"Tags","summary":"","title":"sin"},{"content":"","date":null,"permalink":"/tags/tan/","section":"Tags","summary":"","title":"tan"},{"content":" For arbitrary angles \\(\\small a\\) and \\(\\small b\\), the following are true:\n$$ sin(a + b) = sin(a) cos(b) + cos(a) sin(b) $$ $$ sin(a - b) = sin(a) cos(b) - cos(a) sin(b) $$\n$$ cos(a + b) = cos(a) cos(b) - sin(a) sin(b) $$ $$ cos(a - b) = cos(a) cos(b) + sin(a) sin(b) $$\n$$ tan(a + b) = \\frac{tan(a) + tan(b)}{1 - tan(a) tan(b)} $$ $$ tan(a - b) = \\frac{tan(a) - tan(b)}{1 + tan(a) tan(b)} $$\nSources: # Wikipedia Byju\u0026rsquo;s ","date":"Jan 1 2023","permalink":"/formulas/trig-angle-sum-difference-identities/","section":"formulas","summary":"Formulas for the trigonometric functions of the sum and difference of angles.","title":"Trig Angle Sum/Difference Identities"},{"content":"","date":null,"permalink":"/tags/trigonometry/","section":"Tags","summary":"","title":"trigonometry"},{"content":"","date":null,"permalink":"/tags/vector/","section":"Tags","summary":"","title":"vector"},{"content":" For any vectors \\(\\small \\vec{a}\\) and \\(\\small \\vec{b}\\): The projected (red) and perpendicular (green) vector can be calculated as follows:\n$$ proj_{\\vec{b}}(\\vec{a})=\\frac{\\vec{a}\\cdot\\vec{b}}{|\\vec{b}|^2}\\vec{b}=(\\vec{a}\\cdot\\hat{b})\\hat{b} $$\n$$ perp_{\\vec{b}}(\\vec{a})=\\vec{a}-proj_{\\vec{b}}(\\vec{a}) $$\nWhere\n\\(\\small \\vec{a}\\) is the vector to be projected \\(\\small \\vec{b}\\) is the vector to be projected onto \\(\\cdot\\) is the dot product \\(\\small |\\vec{b}|^2\\) is the magnitude of \\(\\small \\vec{b}\\), squared \\(\\small \\hat{b}\\) is the unit vector in the direction of \\(\\small \\vec{b}\\) Sources # Wikipedia The Organic Chemistry Tutor ","date":"Jan 1 2023","permalink":"/formulas/projection-and-perpendicular/","section":"formulas","summary":"Formulas for the projection of a vector onto another vector and the perpendicular vector left over.","title":"Vector Projection"},{"content":"","date":null,"permalink":"/tags/complex-analysis/","section":"Tags","summary":"","title":"complex analysis"},{"content":"","date":null,"permalink":"/tags/e/","section":"Tags","summary":"","title":"e"},{"content":" If \\(\\small P\\) and \\(\\small Q\\) are continuous functions of \\(\\small x\\) and \\(\\small y\\) over the region \\(\\small D\\) with a closed path \\(\\small C\\) that bounds \\(\\small D\\), then Green\u0026rsquo;s theorem states that\n$$ \\oint_C Pdx + Qdy = \\iint_D \\frac{\\partial Q}{\\partial x} - \\frac{\\partial P}{\\partial y} dA $$\nHonestly, just read Paul\u0026rsquo;s Online Notes, they\u0026rsquo;re great.\nGreen\u0026rsquo;s theorem can be thought of as a 2D version of Stokes\u0026rsquo; theorem.\nSources # Wikipedia Paul\u0026rsquo;s Online Notes See also # Divergence Theorem Stokes\u0026rsquo; Theorem ","date":"Dec 30 2022","permalink":"/formulas/greens-theorem/","section":"formulas","summary":"Green\u0026rsquo;s theorem is a formula that describes the relationship between certain closed path line integrals and line integrals.","title":"Green's Theorem"},{"content":" $$ \\frac{F}{A} = E\\frac{\\Delta L}{L} $$\nWhere\n\\(F\\) is the force applied to the material, \\(A\\) is the area of the material where force is applied, \\(E\\) is the modulus of elasticity (a.ka. Young\u0026rsquo;s modulus) of the material, \\(\\Delta L\\) is the change in length of the material, and \\(L\\) is the original length of the material. This version of Hooke\u0026rsquo;s Law is generalized from the original version used to describe the force of springs.\nSources # Wikipedia Byju\u0026rsquo;s ","date":"Dec 30 2022","permalink":"/formulas/hookes-law-stress-strain/","section":"formulas","summary":"Hooke\u0026rsquo;s Law and Modulus of Elasticity relate the stress and strain of a material.","title":"Hooke's Law (Modulus of Elasticity)"},{"content":" $$ F = -kx $$\nWhere\n\\(F\\) is the force applied to stretch or compress the spring, \\(k\\) is the spring constant of the spring, and \\(x\\) is the displacement of the spring. The negative sign is used when the force being considered is the \u0026ldquo;restoring force\u0026rdquo;. If the force is the \u0026ldquo;applied force\u0026rdquo;, then the negative sign is omitted.\nSources # Wikipedia Byju\u0026rsquo;s ","date":"Dec 30 2022","permalink":"/formulas/hookes-law-springs/","section":"formulas","summary":"Hooke\u0026rsquo;s Law and the Spring Constant relate the force and displacement of a spring.","title":"Hooke's Law (Spring Constant)"},{"content":" $$\\small sinh(x) = \\frac{e^x - e^{-x}}{2}, cosh(x) = \\frac{e^x + e^{-x}}{2}, tanh(x) = \\frac{e^x - e^{-x}}{e^x + e^{-x}}$$\nWhere\n\\(e\\) is Euler\u0026rsquo;s number ~= 2.71828, and \\(i\\) is the imaginary unit, \\(\\sqrt{-1}\\) Complex trig definitions # The hyperbolic functions can be defined in terms of the trig functions with complex arguments:\n\\(sinh(x) = -i sin(ix)\\) \\(cosh(x) = cos(ix)\\) \\(tanh(x) = -i tan(ix)\\) Sources # Wikipedia Byju\u0026rsquo;s ","date":"Dec 30 2022","permalink":"/formulas/hyperbolic-trig-functions/","section":"formulas","summary":"Definitions of the hyperbolic functions","title":"Hyperbolic Functions"},{"content":"","date":null,"permalink":"/tags/imaginary-numbers/","section":"Tags","summary":"","title":"imaginary numbers"},{"content":"","date":null,"permalink":"/tags/materials-engineering/","section":"Tags","summary":"","title":"materials engineering"},{"content":"","date":null,"permalink":"/tags/mechanical-engineering/","section":"Tags","summary":"","title":"mechanical engineering"},{"content":"","date":null,"permalink":"/tags/multivariable-calculus/","section":"Tags","summary":"","title":"multivariable calculus"},{"content":" If S is an oriented smooth surface that is bounded by a simple, closed, smooth boundary curve C with positive orientation. and F is a vector field then, Stokes\u0026rsquo; theorem says that\n$$ \\int_C \\vec{F} \\cdot d\\vec{r} = \\iint_S \\nabla \\times \\vec{F} \\cdot d\\vec{S} $$\nDefinitely read Paul\u0026rsquo;s Online Notes, they\u0026rsquo;re great.\nStokes\u0026rsquo; theorem can be thought of as a 3D generalization of Green\u0026rsquo;s theorem.\nSources # Wikipedia Paul\u0026rsquo;s Online Notes See also # This Khan Academy video provides great intuition: https://www.youtube.com/watch?v=9iaYNaENVH4 Divergence Theorem Green\u0026rsquo;s Theorem ","date":"Dec 30 2022","permalink":"/formulas/stokes-theorem/","section":"formulas","summary":"Stokes\u0026rsquo; theorem describes the relationship between the integral of the curl of a vector field over a surface to the line integral of the same field around the boundary of the surface.","title":"Stokes' Theorem"},{"content":"","date":null,"permalink":"/tags/vector-calculus/","section":"Tags","summary":"","title":"vector calculus"},{"content":" For two vectors \\(\\small \\vec{a}\\) and \\(\\small \\vec{b}\\) in \\(\\small \\mathbb{R}^3\\) (real coordinate spaces, the cross product is defined as\n$$ \\vec{a} \\times \\vec{b} = \\begin{vmatrix} \\vec{i} \u0026amp; \\vec{j} \u0026amp; \\vec{k} \\\\ a_1 \u0026amp; a_2 \u0026amp; a_3 \\\\ b_1 \u0026amp; b_2 \u0026amp; b_3 \\end{vmatrix}$$\nWhere\nThe right hand side is a determinant of a 3x3 matrix, \\(\\small a_i\\) and \\(\\small b_i\\) are the \\(\\small i\\)-th components of \\(\\small \\vec{a}\\) and \\(\\small \\vec{b}\\), respectively, and \\(\\small \\vec{i}\\), \\(\\small \\vec{j}\\), and \\(\\small \\vec{k}\\) are the standard basis vectors of \\(\\small \\mathbb{R}^3\\). Interpretation # The result of a cross product is a vector that is perpendicular to both \\(\\small \\vec{a}\\) and \\(\\small \\vec{b}\\).\nThe magnitude of the cross product is equal to the area of the parallelogram formed by \\(\\small \\vec{a}\\) and \\(\\small \\vec{b}\\), and can be calculated:\n$$ |a \\times b| = |a| |b| \\sin \\theta $$\nWhere \\(\\small \\theta\\) is the angle between \\(\\small \\vec{a}\\) and \\(\\small \\vec{b}\\).\nThe direction of the cross product can be determined by the right-hand rule. If you point your right hand in the direction of \\(\\small \\vec{a}\\) and curl your fingers in the direction of \\(\\small \\vec{b}\\), your thumb will point in the direction of \\(\\small \\vec{a} \\times \\vec{b}\\).\nProperties # The cross product is anti-commutative: \\(\\small \\vec{a} \\times \\vec{b} = - \\vec{b} \\times \\vec{a}\\) The cross product is distributive: \\(\\small \\vec{a} \\times (\\vec{b} + \\vec{c}) = \\vec{a} \\times \\vec{b} + \\vec{a} \\times \\vec{c}\\) Sources # Wikipedia ","date":"Dec 29 2022","permalink":"/formulas/cross-product/","section":"formulas","summary":"The cross product is a common operation in linear algebra and beyond.","title":"Cross Product"},{"content":" If \\(\\small \\vec{F}\\) is a continuously diffrerentiable vector field in the volume \\(\\small V\\) with closed surface \\(\\small S\\), then the divergence theorem (also known as Gauss\u0026rsquo;s Theorem) states that\n$$ \\iiint_V (\\nabla \\cdot \\vec{F}) dV = \\oiint_S (\\vec{F} \\cdot \\hat{n}) dS $$\nWhere\nThe left hand side is a volume integral of the divergence of \\(\\vec{F}\\) over the volume \\(V\\), and \\(\\hat{n}\\) is the unit normal vector to the surface S, used in the surface integral on the right hand side. This can be interpreted intuitively. Since the divergence of a vector field can be thought of as the degree to which a field is acting as a source or sink, the divergence theorem can be thought of as saying that the total amount of a field that is acting as a source or sink in a volume is equal to the amount of the field leaving or entering the volume through the surface.\nSources # Wikipedia Wolfram Mathworld See also # Green\u0026rsquo;s Theorem Stokes\u0026rsquo; Theorem ","date":"Dec 29 2022","permalink":"/formulas/divergence-theorem/","section":"formulas","summary":"The divergence theorem is a formula that describes the relationship between the divergence of a vector field and the surface integral of the field over a closed surface.","title":"Divergence Theorem"},{"content":" For two vectors \\(\\small \\vec{a}\\) and \\(\\small \\vec{b}\\) in \\(\\small \\mathbb{R}^n\\) (real coordinate spaces, the dot product is defined as\n$$ \\vec{a} \\cdot \\vec{b} = \\sum_{i=1}^n a_i b_i $$\nWhere\n\\(\\small a_i\\) and \\(\\small b_i\\) are the \\(\\small i\\)-th components of \\(\\small \\vec{a}\\) and \\(\\small \\vec{b}\\), respectively, and \\(\\small n\\) is the dimension of \\(\\small \\vec{a}\\) and \\(\\small \\vec{b}\\). Alternative definition # Given that \\(\\small \\vec{a}\\) and \\(\\small \\vec{b}\\) are vectors with lengths \\(\\small |a|\\) and \\(\\small |b|\\), respectively, the dot product is also equal to\n$$ \\vec{a} \\cdot \\vec{b} = |a| |b| \\cos \\theta $$\nWhere \\(\\small \\theta\\) is the angle between \\(\\small \\vec{a}\\) and \\(\\small \\vec{b}\\).\nProperties # \\(\\small \\vec{a} \\cdot \\vec{b} = \\vec{b} \\cdot \\vec{a}\\) \\(\\small (\\vec{a} + \\vec{b}) \\cdot \\vec{c} = \\vec{a} \\cdot \\vec{c} + \\vec{b} \\cdot \\vec{c}\\) \\(\\small \\vec{a} \\cdot \\vec{a} = |a|^2\\) \\(\\small \\vec{a} \\cdot \\vec{b} = 0\\) if and only if \\(\\small \\vec{a}\\) and \\(\\small \\vec{b}\\) are orthogonal For a scalar s, \\((\\small s \\vec{a}) \\cdot \\vec{b} = s \\cdot (\\vec{a} \\cdot \\vec{b})\\) Sources # Wikipedia Swarthmore.edu ","date":"Dec 29 2022","permalink":"/formulas/dot-product/","section":"formulas","summary":"The dot product is a common operation in linear algebra and beyond.","title":"Dot Product"},{"content":" $$ \\oint \\vec{B} \\cdot d\\vec{l} = \\mu_0 I $$\nWhere\nThe left side is a line integral of the magnetic field \\(\\vec{B}\\) over a closed loop \\(\\vec{l}\\), and \\(\\mu_0\\) is the permeability of free space, and \\(I\\) is the current enclosed by the loop. Ampere\u0026rsquo;s law is a formula that describes the magnetic field produced by a current-carrying wire. It says that the magneitc field created by an electric current is proportional to the magnitude of the current.\nWith displacement current # Ampere\u0026rsquo;s law has a more general form that includes displacement current. The displacement current is proportional to the rate of change of the electric flux. This site has a good explanation of why this modification is needed. The modified form is:\n$$ \\oint \\vec{B} \\cdot d\\vec{l} = \\mu_0 I + \\mu_0 \\epsilon_0 \\frac{d\\vec{\\phi_E}}{dt} $$\nWhere, in addition to the above definitions,\n\\(\\epsilon_0\\) is the permittivity of free space, and \\(\\vec{\\phi_E}\\) is the electric flux intercepted by the surface spanned by the integration path of the magnetic field. Sources # Wikipedia Byjus Rochester Edu ","date":"Dec 28 2022","permalink":"/formulas/amperes-law/","section":"formulas","summary":"Ampere\u0026rsquo;s law is a formula that describes the magnetic field produced by a current-carrying wire.","title":"Ampere's Law"},{"content":"","date":null,"permalink":"/tags/electromagnetism/","section":"Tags","summary":"","title":"electromagnetism"},{"content":" $$ \\oiint \\vec{E} \\cdot d\\vec{A} = \\frac{Q_{enc}}{\\epsilon_0} $$\nWhere\nThe left side is a surface integral of the electric field \\(\\vec{E}\\) over a closed surface \\(\\vec{A}\\), and \\(Q_{enc}\\) is the charge enclosed by the surface, and \\(\\epsilon_0\\) is the permittivity of free space. Differential form # Gauss\u0026rsquo;s law can also be written in differential form:\n$$ \\nabla \\cdot \\vec{E} = \\frac{\\rho}{\\epsilon_0} $$\nWhere\nThe left side is the divergence of the electric field \\(\\vec{E}\\), and \\(\\rho\\) is the charge density. Sources # Wikipedia Oregon State ","date":"Dec 28 2022","permalink":"/formulas/gauss-law/","section":"formulas","summary":"Gauss\u0026rsquo;s law is a formula that describes the electric field produced by a charge distribution.","title":"Gauss's Law"},{"content":"","date":null,"permalink":"/tags/maxwells-equations/","section":"Tags","summary":"","title":"Maxwell's equations"},{"content":" For any triangle:\nThe following is true:\n$$ c^2 = a^2 + b^2 - 2 \\cdot a \\cdot b \\cdot cos(\\theta) $$\nNote that the naming of the sides and angle is arbitrary. The formula is true as long as \\(\\small \\theta\\) is the angle opposite side c.\nSources # Wikipedia Byju\u0026rsquo;s ","date":"Dec 26 2022","permalink":"/formulas/cosine-law/","section":"formulas","summary":"The formula relating the sides and angles of every triangle.","title":"Cosine Law"},{"content":" $$ \\frac{d}{dx}f(x) = \\lim_{h\\to 0}\\frac{f(x+h)-f(x)}{h} $$\nWhere\n\\(f(x)\\) is a function, \\(x\\) is the independent variable, and \\(h\\) is an increment that we take to 0 in the limit. Sources # Wikipedia Wolfram MathWorld Example # Find the derivative of \\(f(x) = x^2\\) at \\(x=2\\) using the definition of the derivative.\nWe can plug in everything into the definition to get the answer:\n$$ \\scriptsize \\frac{d}{dx}f(x) = \\lim_{h\\to 0}\\frac{f(x+h)-f(x)}{h} = \\lim_{h\\to 0}\\frac{(x+h)^2-x^2}{h} = \\lim_{h\\to 0}\\frac{x^2+2xh+h^2-x^2}{h} $$\n$$ \\scriptsize = \\lim_{h\\to 0}\\frac{2xh+h^2}{h} = \\lim_{h\\to 0}2x+2h = 2x $$\nEvaluated at \\(x=2\\), we get \\(4\\).\n","date":"Dec 26 2022","permalink":"/formulas/definition-of-the-derivative/","section":"formulas","summary":"The definition of the derivative.","title":"Definition of the Derivative"},{"content":"","date":null,"permalink":"/tags/differentiation/","section":"Tags","summary":"","title":"differentiation"},{"content":" $$\\sin^2(x) + \\cos^2(x) = 1$$\n$$\\tan^2(x) + 1 = \\sec^2(x)$$\n$$\\cot^2(x) + 1 = \\csc^2(x)$$\nThe above are the Pythagorean trigonometric identities, true for all real x.\nSources # Wikipedia trigidentities.info ","date":"Dec 26 2022","permalink":"/formulas/pythagorean-trig-identities/","section":"formulas","summary":"A few identities involving sine, cosine, and tangent.","title":"Pythagorean Trig Identities"},{"content":" $$ \\oint_C f(z)dz = 0 $$\nWhere\n\\(f(z)\\) is a holomorphic complex function, and \\(C\\) is a simple closed curve in the complex plane. Sources # Wikipedia Wolfram MathWorld ","date":"Dec 24 2022","permalink":"/formulas/cauchys-integral-theorem/","section":"formulas","summary":"A theorem used for line integrals of complex functions.","title":"Cauchy's Integral Theorem"},{"content":"","date":null,"permalink":"/tags/differential-equations/","section":"Tags","summary":"","title":"differential equations"},{"content":" $$ U = mgh $$\nWhere\n\\(U\\) is the gravitational potential energy of the object, \\(m\\) is the mass of the object, \\(g\\) is the acceleration due to gravity, and \\(h\\) is the height of the object above the ground. This is an approximation that can be made when the object is small compared to the distance between the object and the ground, and g is fairly constant in the domain of observation.\nSources # Wikipedia HyperPhysics Example # Kevin throws a 400,000 kg spaceship straight up from the surface of the earth, with an initial velocity of 100 m/s. After some time, the spaceship reaches its peak height. Assuming no losses due to friction, what is this peak height?\nSince no energy is lost due to air friction, we know that all of the kinetic energy gets converted to potential energy.\nThe initial kinetic energy is \\(\\scriptsize E_k = \\frac{1}{2}mv^2 = 200,000 * 100^2 = 5.0 \\cdot 10^{10} J\\)\nThe final potential energy is \\(\\scriptsize 5.0 \\cdot 10^{10} = mgh = 400,000 * 9.8 * h\\)\nSo, we can solve for the height of the spaceship:\n\\(\\scriptsize h = \\frac{5.0 \\cdot 10^{10}}{400,000 * 9.8} = 1.27 \\cdot 10^4 m\\)\nSee also # Kinetic Energy ","date":"Dec 24 2022","permalink":"/formulas/gravitational-potential-energy/","section":"formulas","summary":"The potential energy of an object in a gravitation field.","title":"Gravitational Potential Energy"},{"content":" $$ E_k = \\frac{1}{2}mv^2 $$\nWhere\n\\(E_k\\) is the kinetic energy of the object, \\(m\\) is the mass of the object, and \\(v\\) is the velocity of the object. Sources # Wikipedia Brittanica Example # Kevin throws a 400,000 kg spaceship straight down off of an infinitely tall cliff. After some time, it reaches a terminal velocity of 500 m/s. What is the kinetic energy of the spaceship at this point?\nWe know that kinetic energy is equal to \\(\\small \\frac{1}{2}mv^2\\), so we can plug in the values to get the answer:\n$$ \\scriptsize E_k = \\frac{1}{2}mv^2 \\Longrightarrow E_k = \\frac{1}{2} \\cdot 400000 \\cdot 500^2 \\Longrightarrow E_k = 5.0 \\cdot 10^{10} J $$\nSee also # Potential Energy ","date":"Dec 24 2022","permalink":"/formulas/kinetic-energy/","section":"formulas","summary":"The energy of motion.","title":"Kinetic Energy"},{"content":" $$ \\nabla^2 f = \\nabla \\cdot \\nabla f = 0 $$\nWhere\n\\(f\\) is a twice-differentiable function, \\(\\nabla\\) is the gradient operator, \\(\\nabla^2\\) is the Laplace operator, and \\(\\nabla \\cdot \\) is the divergence operator. In Different Coordinate Systems # In rectangular coordinates: # $$ \\scriptsize \\nabla^2 f = \\frac{\\partial^2 f}{\\partial x^2} + \\frac{\\partial^2 f}{\\partial y^2} + \\frac{\\partial^2 f}{\\partial z^2} = 0$$\nIn cylindrical coordinates: # $$ \\scriptsize \\nabla^2 f = \\frac{1}{r} \\frac{\\partial}{\\partial r} \\left( r \\frac{\\partial f}{\\partial r} \\right) + \\frac{1}{r^2} \\frac{\\partial^2 f}{\\partial \\phi^2} + \\frac{\\partial^2 f}{\\partial z^2} = 0$$\nIn spherical coordinates: # $$ \\scriptsize \\nabla^2 f = \\frac{1}{r^2} \\frac{\\partial}{\\partial r} \\left( r^2 \\frac{\\partial f}{\\partial r} \\right) + \\frac{1}{r^2 \\sin \\theta} \\frac{\\partial}{\\partial \\theta} \\left( \\sin \\theta \\frac{\\partial f}{\\partial \\theta} \\right) + \\frac{1}{r^2 \\sin^2 \\theta}\\frac{\\partial^2 f}{\\partial \\varphi^2} = 0$$\nSources # Wikipedia Griffith\u0026rsquo;s Introduction to Electrodynamics\u0026rsquo; back cover ","date":"Dec 24 2022","permalink":"/formulas/laplaces-equation/","section":"formulas","summary":"Laplace\u0026rsquo;s equation is a common partial differential equation","title":"Laplace's Equation"},{"content":" $$\\int_a^b f(x) dx = F(b) - F(a)$$\nWhere\n\\(f\\) is a continuous function on \\([a, b]\\), \\(F\\) is an antiderivative of \\(f\\), \\(a\\) is the lower bound of the integral, and \\(b\\) is the upper bound of the integral. This theorem, also known as the second fundamental theorem of calculus says that the definite integral of a continuous function on a closed interval is equal to the difference between the value of the antiderivative at the upper bound and the value of the antiderivative at the lower bound.\nSee Wolfram MathWorld below for the other two fundamental theorems of calculus.\nSources # Wikipedia Wolfram MathWorld Example # Due to his terrible posture, Kevin\u0026rsquo;s back is approximately the shape of x^3 on the interval [0, 3]. Given that his chair is the x axis, what is the area between his back and his chair?\nWe know that the area between a curve and the x axis is equal to the definite integral of the curve. We also know that the definite integral of a function is equal to the difference between the value of the antiderivative at the upper bound and the value of the antiderivative at the lower bound. So we can plug in the values to get the answer, knowing that the antiderivative of x^3 is x^4/4:\n$$\\int_0^3 x^3 dx = F(3) - F(0) = \\frac{(3)^4}{4} - 0 = 20.25$$\n","date":"Dec 23 2022","permalink":"/formulas/fundmantal-theorem-of-calculus/","section":"formulas","summary":"Fundamental Theorem of Calculus","title":"Fundamental Theorem of Calculus"},{"content":"","date":null,"permalink":"/tags/geometry/","section":"Tags","summary":"","title":"geometry"},{"content":"For any right triangle abc (see diagram below):\nThe lengths of the sides are related by the Pythagorean Theorem: $$a^2 + b^2 = c^2$$\nWhere\n\\(a\\) and \\(b\\) are the lengths of the legs of the triangle, and \\(c\\) is the length of the hypotenuse Sources: # Wikipedia Brittanica Example # After being rejected by a girl, Kevin bends forward to pick up his hurt ego. His legs contact the floor at a right angle and his arms + torso miraculously reach the ground in front of him.\nIf his legs are 30 meters long, and his arms + torso are 50 meters long, how far away is his ego from his legs?\nUsing the diagram above, a = 30m and c = 50m. Using the pythagorean theorem:\n$$ a^2 + b^2 = c^2 \\Longrightarrow b = \\sqrt{c^2 - a^2} = \\sqrt{1600} = 40m$$\n","date":"Dec 22 2022","permalink":"/formulas/pythagorean-theorem/","section":"formulas","summary":"Formula relating the lengths of the sides of a right triangle","title":"Pythagorean Theorem"},{"content":" $$e^x = \\sum_{n=0}^\\infty \\frac{x^n}{n!}$$\nWhere\n\\(e\\) is the base of the natural logarithm, and \\(x\\) is the exponent Sources # Wikipedia Khan Academy ","date":"Dec 8 2022","permalink":"/formulas/taylor-expansion-of-e/","section":"formulas","summary":"The Maclaurin series for e^x","title":"Maclaurin Series for e^x"},{"content":"","date":null,"permalink":"/tags/mass/","section":"Tags","summary":"","title":"mass"},{"content":" $$p = mv$$\nWhere\n\\(p\\) is the momentum of the body, \\(m\\) is the mass of the body, and \\(v\\) is the velocity of the body This formula relates the momentum of a body to its mass and velocity.\nSources # Wikipedia Hyperphysics Example # Kevin throws a baseball with a mass of 0.5 kg at a speed of 5000000 m/s. What is the momentum of the baseball?\nWe know that momentum is equal to mass times velocity, so we can plug in the values to get the answer.\n$$p = mv \\Longrightarrow p = 0.5 \\cdot 5000000 \\Longrightarrow p = 2500000 \\frac{kg \\cdot m}{s}$$\n","date":"Dec 8 2022","permalink":"/formulas/newtonian-momentum/","section":"formulas","summary":"The momentum of a body in Newtonian mechanics","title":"Momentum (Newtonian)"},{"content":"","date":null,"permalink":"/tags/velocity/","section":"Tags","summary":"","title":"velocity"},{"content":"","date":null,"permalink":"/tags/algebra/","section":"Tags","summary":"","title":"algebra"},{"content":" $$x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}$$\nWhere\n\\(x\\) is the solution to the quadratic equation \\(ax^2 + bx + c = 0\\), \\(a\\) is the coefficient of the \\(x^2\\) term, \\(b\\) is the coefficient of the \\(x\\) term, and \\(c\\) is the constant term Sources # Wikipedia Khan Academy Example # Find the intersection points of the parabola \\(y = x^2\\) and the line \\(y = 2x + 3\\).\nWe know that these two will intersect when \\(x^2 = 2x + 3\\). We can solve this quadratic equation using the quadratic formula.\nFirst, we rearrange to get it into the correct form: \\(x^2 - 2x - 3 = 0\\). Then, we plug in the coefficients into the quadratic formula, with a = 1, b = -2, and c = -3.\n$$x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a} \\Longrightarrow x = \\frac{-(-2) \\pm \\sqrt{(-2)^2 - 4(1)(-3)}}{2(1)} $$\n$$\\Longrightarrow x = \\frac{2 \\pm \\sqrt{4 + 12}}{2} \\Longrightarrow x = \\frac{2 \\pm 4}{2} \\Longrightarrow x = 3, -1$$\nPlugging these x values into either of the original equations gives us the y values of the intersection points.\nThe final answer is \\((3, 9)\\) and \\((-1, 1)\\), which we can verify on a graph:\n","date":"Dec 6 2022","permalink":"/formulas/quadratic-formula/","section":"formulas","summary":"The formula for the zeros of a quadratic equation","title":"Quadratic Formula"},{"content":"","date":null,"permalink":"/tags/mechanics/","section":"Tags","summary":"","title":"mechanics"},{"content":" $$F = ma$$\nWhere \\(F\\) is the net force being applied to the object, \\(m\\) is the mass of the object, and \\(a\\) is the acceleration of the object.\nNewton\u0026rsquo;s second law is a statement of Newtonian mechanics that the net force on a body is equal to the body\u0026rsquo;s mass times its acceleration.\nSources # Wikipedia Brittanica Example # Kevin pushes his 10 kg brain across the floor with a force of 100 N. Friction pushes back against his brain statically with 10 N of force. What is the acceleration of the brain?\n$$ F = ma \\Longrightarrow a = \\frac{F}{m} = \\frac{100N - 10N}{10kg} = 9.8 m/s^2 $$\n","date":"Dec 4 2022","permalink":"/formulas/newtons-2nd-law/","section":"formulas","summary":"The law that describes the acceleration of an object in Newtonian mechanics.","title":"Newton's 2nd Law"},{"content":" Euler\u0026rsquo;s Identity # $$e^{i\\pi} = -1$$\nWhere\n\\(e\\) is Euler\u0026rsquo;s number ~= 2.71828, \\(i\\) is the imaginary unit, \\(\\sqrt{-1}\\), and \\(\\pi\\) is pi ~= 3.14159. Euler\u0026rsquo;s Formula # More generally, for any number (even complex) \\(x\\), Euler\u0026rsquo;s Formula says that\n$$e^{ix} = \\cos(x) + i\\sin(x)$$\nSources # Wikipedia Wikipedia ","date":"Nov 28 2022","permalink":"/formulas/eulers-identity-formula/","section":"formulas","summary":"One of the most amazing formulas in mathematics.","title":"Euler's Identity/Formula"},{"content":"","date":null,"permalink":"/tags/pi/","section":"Tags","summary":"","title":"pi"},{"content":" $$\\small sin(x) = \\frac{e^{ix} - e^{-ix}}{2i}, cos(x) = \\frac{e^{ix} + e^{-ix}}{2}, tan(x) = \\frac{e^{ix} - e^{-ix}}{i(e^{ix} + e^{-ix})}$$\nWhere\n\\(e\\) is Euler\u0026rsquo;s number ~= 2.71828, and \\(i\\) is the imaginary unit, \\(\\sqrt{-1}\\) Sources # Duke.edu ProofWiki ","date":"Nov 28 2022","permalink":"/formulas/trig-in-terms-of-e/","section":"formulas","summary":"Common trig functions in terms of e","title":"Trig functions in terms of e"},{"content":"","date":null,"permalink":"/tags/chemistry/","section":"Tags","summary":"","title":"chemistry"},{"content":" $$PV = nRT$$\nWhere\n\\(P\\) is the pressure of the gas, \\(V\\) is the volume of the gas, \\(n\\) is the number of moles of gas, \\(R\\) is the gas constant (see here for a table of R with various units), and \\(T\\) is the temperature of the gas. \u0026ldquo;The ideal gas law, also called the general gas equation, is the equation of state of a hypothetical ideal gas. It is a good approximation of the behavior of many gases under many conditions, although it has several limitations.\u0026rdquo; - Wikipedia\nSources # Wikipedia HyperPhysics Example # Kevin has a 1 liter container of a mysterious (ideal) gas at 1 atm and 300 K. What is the pressure of the gas if the volume is doubled?\nThere are two ways we could use the Ideal Gas Law to solve this problem:\nWe could solve for \\(n = \\frac{PV}{RT}\\) and then use that to solve for \\(P_2 = \\frac{nRT}{V_2}\\) We could notice that the right side of the equation, \\(nRT\\) is a constant, since no moles of gas can escape, R is a constant by definition, and the temperature is not changed in the question. Since the right side is a constant, the left side must remain a constant. If the volume is doubled, then the pressure must thus be halved. ","date":"Nov 27 2022","permalink":"/formulas/ideal-gas-law/","section":"formulas","summary":"The equation of state of a hypothetical ideal gas.","title":"Ideal Gas Law"},{"content":" $$V = IR$$\nWhere \\(V\\) is the voltage across the conductor (e.g. a wire), \\(I\\) is the current through the conductor, and \\(R\\) is the resistance of the conductor.\nOhm\u0026rsquo;s law states that the current through a conductor between two points is directly proportional to the voltage across the two points. - Wikipedia\nSources # Wikipedia HyperPhysics Example # Kevin measures the current through a 10 ohm resistor to be 0.5 A. He measures the current with the resistor actually connected to the circuit (sorry Mr. Sidney). What is the voltage across the resistor?\n$$ V = IR \\Longrightarrow V = 10 * 0.5 = 5V $$\n","date":"Nov 27 2022","permalink":"/formulas/ohms-law/","section":"formulas","summary":"Ohm\u0026rsquo;s law states that the current through a conductor between two points is directly proportional to the voltage across the two points.","title":"Ohm's Law"},{"content":"Stemformulas is a website dedicated to providing a single place to look for STEM formulas.\nIt was made by a few engineering students who were frustrated with the current state of formula searching online: Kevin Lin and Pranjal Biswas, both based in Vancouver, Canada.\nWe hope you find this site useful!\nTech Stack # This site is made with the static website framework Hugo using the Congo theme, with many HTML/CSS/JS additions from our team.\nIt is hosted on GitHub Pages, deployed conveniently with GitHub Actions.\nContributing # If you want to add a formula to this site, there are two ways you can do so. The first way is easier for you and more work for us, and the second way is the opposite:\nSubmit all the relevant information about the formula to our Google Form (can also be filled out on our suggest page).\nCreate a pull request on the GitHub repo. More detailed instructions can be found in the README.\nSuggestions/corrections # If you think you\u0026rsquo;ve found a mistake in one of the formula pages or if you otherwise have some suggestions, please make a GitHub account and submit an issue here.\n","date":null,"permalink":"/about/","section":"about","summary":"Stemformulas is a website dedicated to providing a single place to look for STEM formulas.","title":"about"},{"content":"","date":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories"},{"content":"Loading…","date":null,"permalink":"/suggest/","section":"Suggest","summary":"Loading…","title":"Suggest"}] \ No newline at end of file diff --git a/public/index.xml b/public/index.xml new file mode 100644 index 00000000..fd608dff --- /dev/null +++ b/public/index.xml @@ -0,0 +1 @@ +stemformulashttps://stemformulas.com/Recent content on stemformulasHugo -- gohugo.ioenSat, 24 Jun 2023 00:00:00 +0000Equivalent Uniform Annual Costhttps://stemformulas.com/formulas/equivalent-uniform-annual-cost/Sat, 24 Jun 2023 00:00:00 +0000https://stemformulas.com/formulas/equivalent-uniform-annual-cost/Formulas for converting between present worth, annual worth, and future worthPresent and Future Valuehttps://stemformulas.com/formulas/future-to-net-present-worth/Sat, 24 Jun 2023 00:00:00 +0000https://stemformulas.com/formulas/future-to-net-present-worth/Formulas for converting between future worth and net present worthLight Wavelength and Frequency Relationshiphttps://stemformulas.com/formulas/light-wavelength-frequency/Fri, 24 Mar 2023 00:00:00 +0000https://stemformulas.com/formulas/light-wavelength-frequency/The relationship between the wavelength and frequency of light.Photon Energyhttps://stemformulas.com/formulas/energy-of-light/Fri, 24 Mar 2023 00:00:00 +0000https://stemformulas.com/formulas/energy-of-light/The energy of a photon.Feynmann's Trick For Exponential Integralshttps://stemformulas.com/formulas/feynmanns-trick/Thu, 16 Mar 2023 00:00:00 +0000https://stemformulas.com/formulas/feynmanns-trick/A niche trick for evaluation exponential integrals of a certain form.Finite and Infinite Geometric Serieshttps://stemformulas.com/formulas/finite-infinite-series/Sun, 26 Feb 2023 00:00:00 +0000https://stemformulas.com/formulas/finite-infinite-series/The simplified formulas for finite and infinite geometric series.Convolutionhttps://stemformulas.com/formulas/convolution/Wed, 18 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/convolution/Formula for the convolution of two functions.Shockley Diode Modelhttps://stemformulas.com/formulas/shockley-diode-model/Wed, 18 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/shockley-diode-model/The Shockley diode model is a simplified model of a diode&rsquo;s Voltage-Current relationship.Schrodinger's Equationhttps://stemformulas.com/formulas/schrodingers-equation/Wed, 04 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/schrodingers-equation/The Schrodinger equation is a partial differential equation that describes the behavior of a quantum system.L'Hopital's Rulehttps://stemformulas.com/formulas/lhopitals-rule/Tue, 03 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/lhopitals-rule/L&rsquo;Hopital&rsquo;s rule is a method for evaluating limits of indeterminate forms.Lorentz Transformationshttps://stemformulas.com/formulas/lorentz-transformations/Mon, 02 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/lorentz-transformations/Lorentz transformations are used to transform between inertial frames of reference.Determinants of Matriceshttps://stemformulas.com/formulas/determinant/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/determinant/The formula for the determinant of a matrix.Double Angle Trig Identitieshttps://stemformulas.com/formulas/double-angle-trig-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/double-angle-trig-identities/Formulas expanding the trigonometric functions of double angles.Trig Angle Sum/Difference Identitieshttps://stemformulas.com/formulas/trig-angle-sum-difference-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/trig-angle-sum-difference-identities/Formulas for the trigonometric functions of the sum and difference of angles.Vector Projectionhttps://stemformulas.com/formulas/projection-and-perpendicular/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/projection-and-perpendicular/Formulas for the projection of a vector onto another vector and the perpendicular vector left over.Green's Theoremhttps://stemformulas.com/formulas/greens-theorem/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/greens-theorem/Green&rsquo;s theorem is a formula that describes the relationship between certain closed path line integrals and line integrals.Hooke's Law (Modulus of Elasticity)https://stemformulas.com/formulas/hookes-law-stress-strain/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hookes-law-stress-strain/Hooke&rsquo;s Law and Modulus of Elasticity relate the stress and strain of a material.Hooke's Law (Spring Constant)https://stemformulas.com/formulas/hookes-law-springs/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hookes-law-springs/Hooke&rsquo;s Law and the Spring Constant relate the force and displacement of a spring.Hyperbolic Functionshttps://stemformulas.com/formulas/hyperbolic-trig-functions/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hyperbolic-trig-functions/Definitions of the hyperbolic functionsStokes' Theoremhttps://stemformulas.com/formulas/stokes-theorem/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/stokes-theorem/Stokes&rsquo; theorem describes the relationship between the integral of the curl of a vector field over a surface to the line integral of the same field around the boundary of the surface.Cross Producthttps://stemformulas.com/formulas/cross-product/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cross-product/The cross product is a common operation in linear algebra and beyond.Divergence Theoremhttps://stemformulas.com/formulas/divergence-theorem/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/divergence-theorem/The divergence theorem is a formula that describes the relationship between the divergence of a vector field and the surface integral of the field over a closed surface.Dot Producthttps://stemformulas.com/formulas/dot-product/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/dot-product/The dot product is a common operation in linear algebra and beyond.Ampere's Lawhttps://stemformulas.com/formulas/amperes-law/Wed, 28 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/amperes-law/Ampere&rsquo;s law is a formula that describes the magnetic field produced by a current-carrying wire.Gauss's Lawhttps://stemformulas.com/formulas/gauss-law/Wed, 28 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/gauss-law/Gauss&rsquo;s law is a formula that describes the electric field produced by a charge distribution.Cosine Lawhttps://stemformulas.com/formulas/cosine-law/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cosine-law/The formula relating the sides and angles of every triangle.Definition of the Derivativehttps://stemformulas.com/formulas/definition-of-the-derivative/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/definition-of-the-derivative/The definition of the derivative.Pythagorean Trig Identitieshttps://stemformulas.com/formulas/pythagorean-trig-identities/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/pythagorean-trig-identities/A few identities involving sine, cosine, and tangent.Cauchy's Integral Theoremhttps://stemformulas.com/formulas/cauchys-integral-theorem/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cauchys-integral-theorem/A theorem used for line integrals of complex functions.Gravitational Potential Energyhttps://stemformulas.com/formulas/gravitational-potential-energy/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/gravitational-potential-energy/The potential energy of an object in a gravitation field.Kinetic Energyhttps://stemformulas.com/formulas/kinetic-energy/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/kinetic-energy/The energy of motion.Laplace's Equationhttps://stemformulas.com/formulas/laplaces-equation/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/laplaces-equation/Laplace&rsquo;s equation is a common partial differential equationFundamental Theorem of Calculushttps://stemformulas.com/formulas/fundmantal-theorem-of-calculus/Fri, 23 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/fundmantal-theorem-of-calculus/Fundamental Theorem of CalculusPythagorean Theoremhttps://stemformulas.com/formulas/pythagorean-theorem/Thu, 22 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/pythagorean-theorem/Formula relating the lengths of the sides of a right triangleMaclaurin Series for e^xhttps://stemformulas.com/formulas/taylor-expansion-of-e/Thu, 08 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/taylor-expansion-of-e/The Maclaurin series for e^xMomentum (Newtonian)https://stemformulas.com/formulas/newtonian-momentum/Thu, 08 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/newtonian-momentum/The momentum of a body in Newtonian mechanicsQuadratic Formulahttps://stemformulas.com/formulas/quadratic-formula/Tue, 06 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/quadratic-formula/The formula for the zeros of a quadratic equationNewton's 2nd Lawhttps://stemformulas.com/formulas/newtons-2nd-law/Sun, 04 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/newtons-2nd-law/The law that describes the acceleration of an object in Newtonian mechanics.Euler's Identity/Formulahttps://stemformulas.com/formulas/eulers-identity-formula/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/eulers-identity-formula/One of the most amazing formulas in mathematics.Trig functions in terms of ehttps://stemformulas.com/formulas/trig-in-terms-of-e/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/trig-in-terms-of-e/Common trig functions in terms of eIdeal Gas Lawhttps://stemformulas.com/formulas/ideal-gas-law/Sun, 27 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/ideal-gas-law/The equation of state of a hypothetical ideal gas.Ohm's Lawhttps://stemformulas.com/formulas/ohms-law/Sun, 27 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/ohms-law/Ohm&rsquo;s law states that the current through a conductor between two points is directly proportional to the voltage across the two points. \ No newline at end of file diff --git a/public/js/appearance.min.c6198a5ecbc6c7b35a8568d29315f50cf5d775d4461c515a476359767f1a745c245aa83fa96b0c7d83da976cf77481e1fc29537a2391a53ffe69a991638802e6.js b/public/js/appearance.min.c6198a5ecbc6c7b35a8568d29315f50cf5d775d4461c515a476359767f1a745c245aa83fa96b0c7d83da976cf77481e1fc29537a2391a53ffe69a991638802e6.js new file mode 100644 index 00000000..7a04c3f3 --- /dev/null +++ b/public/js/appearance.min.c6198a5ecbc6c7b35a8568d29315f50cf5d775d4461c515a476359767f1a745c245aa83fa96b0c7d83da976cf77481e1fc29537a2391a53ffe69a991638802e6.js @@ -0,0 +1 @@ +const sitePreference=document.documentElement.getAttribute("data-default-appearance"),userPreference=localStorage.getItem("appearance");function getCSSValue(e){var t=window.getComputedStyle(document.documentElement).getPropertyValue(e);return"rgb("+t.replace(/\s+/g,"")+")"}function setThemeColor(){var e=document.querySelector("meta[name=theme-color]");return document.documentElement.classList.contains("dark")?e.setAttribute("content",getCSSValue("--color-neutral-800")):e.setAttribute("content",getCSSValue("--color-neutral")),!0}(sitePreference==="dark"&&userPreference===null||userPreference==="dark")&&(document.documentElement.classList.add("dark"),setThemeColor()),document.documentElement.getAttribute("data-auto-appearance")==="true"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&userPreference!=="light"&&(document.documentElement.classList.add("dark"),setThemeColor()),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{e.matches?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark"),setThemeColor()})),window.addEventListener("DOMContentLoaded",e=>{var t=document.querySelectorAll("[id^='appearance-switcher']");t.forEach(e=>{e.addEventListener("click",()=>{document.documentElement.classList.toggle("dark"),setThemeColor(),localStorage.setItem("appearance",document.documentElement.classList.contains("dark")?"dark":"light")}),e.addEventListener("contextmenu",e=>{e.preventDefault(),localStorage.removeItem("appearance")})})}) \ No newline at end of file diff --git a/public/js/main.bundle.min.fb01fe3c07fd26fcfa4f462861d42aec78e6ff4158e94f6c164ca7c90384ec19a5fcfbf736dadfc11847f74dd5b541cdbe1d33f9433274ee0386c3f452410da5.js b/public/js/main.bundle.min.fb01fe3c07fd26fcfa4f462861d42aec78e6ff4158e94f6c164ca7c90384ec19a5fcfbf736dadfc11847f74dd5b541cdbe1d33f9433274ee0386c3f452410da5.js new file mode 100644 index 00000000..3780b2c5 --- /dev/null +++ b/public/js/main.bundle.min.fb01fe3c07fd26fcfa4f462861d42aec78e6ff4158e94f6c164ca7c90384ec19a5fcfbf736dadfc11847f74dd5b541cdbe1d33f9433274ee0386c3f452410da5.js @@ -0,0 +1,12 @@ +e=this,t=function(){"use strict";function P(e,t){var n,s=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),s.push.apply(s,n)),s}function u(e){for(var t,n=1;ne.length)&&(t=e.length);for(var n=0,s=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:1,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,e=new Map,t=Math.pow(10,s);return{get:function(s){if(o=s.match(ge).length,e.has(o))return e.get(o);var o,a=1/Math.pow(o,.5*n),i=parseFloat(Math.round(a*t)/t);return e.set(o,i),i},clear:function(){e.clear()}}}f=function(){function a(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=n.getFn,i=void 0===s?e.getFn:s,o=n.fieldNormWeight,r=void 0===o?e.fieldNormWeight:o;t(this,a),this.norm=ue(r,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return n(a,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=e,this._keysMap={},e.forEach(function(e,n){t._keysMap[e.id]=n})}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,o(this.docs[0])?this.docs.forEach(function(t,n){e._addString(t,n)}):this.docs.forEach(function(t,n){e._addObject(t,n)}),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();o(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t2&&void 0!==arguments[2]?arguments[2]:{},i=o.getFn,r=void 0===i?e.getFn:i,a=o.fieldNormWeight,c=void 0===a?e.fieldNormWeight:a,s=new f({getFn:r,fieldNormWeight:c});return s.setKeys(t.map(z)),s.setSources(n),s.create(),s}function g(t){var s,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},d=n.errors,f=void 0===d?0:d,l=n.currentLocation,u=void 0===l?0:l,a=n.expectedLocation,h=void 0===a?0:a,r=n.distance,c=void 0===r?e.distance:r,i=n.ignoreLocation,m=void 0===i?e.ignoreLocation:i,o=f/t.length;return m?o:(s=Math.abs(h-u),c?o+s/c:s?1:o)}function oe(){for(var i,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.minMatchCharLength,o=[],t=-1,r=-1,n=0,c=s.length;n=a&&o.push([t,r]),t=-1);return s[n-1]&&n-t>=a&&o.push([t,n-1]),o}l=32;function W(e){for(var s,n={},t=0,o=e.length;t1&&void 0!==arguments[1]?arguments[1]:{},h=o.location,C=void 0===h?e.location:h,g=o.threshold,O=void 0===g?e.threshold:g,d=o.distance,A=void 0===d?e.distance:d,m=o.includeMatches,E=void 0===m?e.includeMatches:m,p=o.findAllMatches,x=void 0===p?e.findAllMatches:p,v=o.minMatchCharLength,_=void 0===v?e.minMatchCharLength:v,u=o.isCaseSensitive,j=void 0===u?e.isCaseSensitive:u,b=o.ignoreLocation,w=void 0===b?e.ignoreLocation:b;if(t(this,s),this.options={location:C,threshold:O,distance:A,includeMatches:E,findAllMatches:x,minMatchCharLength:_,isCaseSensitive:j,ignoreLocation:w},this.pattern=j?n:n.toLowerCase(),this.chunks=[],this.pattern.length)if(a=function(e,t){y.chunks.push({pattern:e,alphabet:W(e),startIndex:t})},i=this.pattern.length,i>l){for(var r=0,f=i%l,k=i-f;r3&&void 0!==arguments[3]?arguments[3]:{},B=r.location,V=void 0===B?e.location:B,R=r.distance,C=void 0===R?e.distance:R,N=r.threshold,K=void 0===N?e.threshold:N,F=r.findAllMatches,W=void 0===F?e.findAllMatches:F,D=r.minMatchCharLength,z=void 0===D?e.minMatchCharLength:D,I=r.includeMatches,H=void 0===I?e.includeMatches:I,L=r.ignoreLocation,j=void 0===L?e.ignoreLocation:L;if(n.length>l)throw new Error($(l));for(var y,d=n.length,p=t.length,i=Math.max(0,Math.min(V,p)),m=K,h=i,x=z>1||H,S=x?Array(p):[];(y=t.indexOf(n,h))>-1;)if(P=g(n,{currentLocation:y,expectedLocation:i,distance:C,ignoreLocation:j}),m=Math.min(P,m),h=y+d,x)for(b=0;b=T;o-=1)if(v=o-1,E=s[t.charAt(v)],x&&(S[v]=+!!E),u[o]=(u[o+1]<<1|1)&E,c&&(u[o]|=(w[o+1]|w[o])<<1|1|w[o+1]),u[o]&U&&(A=g(n,{errors:c,currentLocation:v,expectedLocation:i,distance:C,ignoreLocation:j}))<=m){if(m=A,(h=v)<=i)break;T=Math.max(1,2*i-h)}if(g(n,{errors:c+1,currentLocation:i,expectedLocation:i,distance:C,ignoreLocation:j})>m)break;w=u}return _={isMatch:h>=0,score:Math.max(.001,A)},x&&(M=oe(S,z),M.length?H&&(_.indices=M):_.isMatch=!1),_}(t,j,y,{location:b+_,distance:h,threshold:v,findAllMatches:p,minMatchCharLength:m,includeMatches:a,ignoreLocation:f}),r=i.isMatch,w=i.score,c=i.indices;r&&(s=!0),u+=w,r&&c&&(o=[].concat(d(o),d(c)))}),i={isMatch:s,score:s?u/this.chunks.length:1},s&&a&&(i.indices=o),i}}]),s}(),a=function(){function e(n){t(this,e),this.pattern=n}return n(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return B(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return B(e,this.singleRegex)}}]),e}();function B(e,t){var n=e.match(t);return n?n[1]:null}var a,l,h,f,O,G=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),s}(a),Y=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),s}(a),ne=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),s}(a),U=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),s}(a),K=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),s}(a),q=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),s}(a),S=function(s){r(o,s);var i=c(o);function o(n){var f,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},h=s.location,g=void 0===h?e.location:h,l=s.threshold,p=void 0===l?e.threshold:l,u=s.distance,j=void 0===u?e.distance:u,a=s.includeMatches,_=void 0===a?e.includeMatches:a,d=s.findAllMatches,v=void 0===d?e.findAllMatches:d,m=s.minMatchCharLength,b=void 0===m?e.minMatchCharLength:m,r=s.isCaseSensitive,y=void 0===r?e.isCaseSensitive:r,c=s.ignoreLocation,w=void 0===c?e.ignoreLocation:c;return t(this,o),(f=i.call(this,n))._bitapSearch=new O(n,{location:g,threshold:p,distance:j,includeMatches:_,findAllMatches:v,minMatchCharLength:b,isCaseSensitive:y,ignoreLocation:w}),f}return n(o,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),o}(a),V=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){for(var t,o,n=0,s=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,s.push([t,n-1]);return o=!!s.length,{isMatch:o,score:o?0:1,indices:s}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),s}(a),_=[G,V,ne,U,q,K,Y,S],H=_.length,Z=/ +(?=(?:[^"]*"[^"]*")*[^"]*$)/;function J(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map(function(e){for(var a,r,c,l,d=e.trim().split(Z).filter(function(e){return e&&!!e.trim()}),s=[],o=0,h=d.length;o1&&void 0!==arguments[1]?arguments[1]:{},a=o.isCaseSensitive,r=void 0===a?e.isCaseSensitive:a,c=o.includeMatches,j=void 0===c?e.includeMatches:c,d=o.minMatchCharLength,v=void 0===d?e.minMatchCharLength:d,h=o.ignoreLocation,f=void 0===h?e.ignoreLocation:h,m=o.findAllMatches,p=void 0===m?e.findAllMatches:m,i=o.location,g=void 0===i?e.location:i,u=o.threshold,b=void 0===u?e.threshold:u,l=o.distance,y=void 0===l?e.distance:l;t(this,s),this.query=null,this.options={isCaseSensitive:r,includeMatches:j,minMatchCharLength:v,findAllMatches:p,ignoreLocation:f,location:g,threshold:b,distance:y},this.pattern=r?n:n.toLowerCase(),this.query=J(this.pattern,this.options)}return n(s,[{key:"searchIn",value:function(e){if(o=this.query,!o)return{isMatch:!1,score:1};u=this.options,l=u.includeMatches,e=u.isCaseSensitive?e:e.toLowerCase();for(var s,o,i,c,l,u,f,g,n=0,t=[],a=0,r=0,j=o.length;r-1&&(n.refIndex=e.idx),t.matches.push(n)}})}function fe(e,t){t.score=e.score}function pe(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=o.includeMatches,r=void 0===i?e.includeMatches:i,a=o.includeScore,c=void 0===a?e.includeScore:a,s=[];return r&&s.push(me),c&&s.push(fe),t.map(function(e){var t=e.idx,o={item:n[t],refIndex:t};return s.length&&s.forEach(function(t){t(e,o)}),o})}return h=function(){function a(n){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;t(this,a),this.options=u(u({},e),s),this.options.useExtendedSearch,this._keyStore=new ae(this.options.keys),this.setCollection(n,o)}return n(a,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof f))throw new Error("Incorrect 'index' type");this._myIndex=t||D(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){s(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var t,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},n=[],e=0,s=this._docs.length;e1&&void 0!==arguments[1]?arguments[1]:{},i=a.limit,s=void 0===i?-1:i,t=this.options,r=t.includeMatches,c=t.includeScore,l=t.shouldSort,d=t.sortFn,u=t.ignoreFieldNorm,n=o(e)?o(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return he(n,{ignoreFieldNorm:u}),l&&n.sort(d),L(s)&&s>-1&&(n=n.slice(0,s)),pe(n,this._docs,{includeMatches:r,includeScore:c})}},{key:"_searchStringList",value:function(e){var n=b(e,this.options),o=this._myIndex.records,t=[];return o.forEach(function(e){var o=e.v,a=e.i,r=e.n;if(s(o)){var i=n.searchIn(o),c=i.isMatch,l=i.score,d=i.indices;c&&t.push({item:o,idx:a,matches:[{score:l,value:o,norm:r,indices:d}]})}}),t}},{key:"_searchLogical",value:function(e){var n=this,r=function(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,s=void 0===n||n,a=function e(n){var r,c,d,u,a=Object.keys(n),l=le(n);if(!l&&a.length>1&&!E(n))return e(T(n));if(de(n)){if(r=l?n[N]:a[0],c=l?n[re]:n[r],!o(c))throw new Error(X(r));return d={keyId:C(r),pattern:c},s&&(d.searcher=b(c,t)),d}return u={children:[],operator:a[0]},a.forEach(function(t){var s=n[t];i(s)&&s.forEach(function(t){u.children.push(e(t))})}),u};return E(e)||(e=T(e)),a(e)}(e,this.options),c=function e(t,s,o){if(!t.children){var c,l=t.keyId,u=t.searcher,i=n._findMatches({key:n._keyStore.get(l),value:n._myIndex.getValueForItemAtKeyId(s,l),searcher:u});return i&&i.length?[{idx:o,item:s,matches:i}]:[]}for(var a=[],r=0,h=t.children.length;r1&&void 0!==arguments[1]?arguments[1]:{},o=s.getFn,a=void 0===o?e.getFn:o,i=s.fieldNormWeight,r=void 0===i?e.fieldNormWeight:i,c=t.keys,l=t.records,n=new f({getFn:a,fieldNormWeight:r});return n.setKeys(c),n.setIndexRecords(l),n},h.config=e,function(){m.push.apply(m,arguments)}(te),h},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t();var e,t,fuse,onMainPage=document.getElementById("search-query-main"),input,output,modal,wrapper,hideButton,first,last,searchVisible,indexed,hasResults,scriptBundle,copyText,copiedText,showButtons=document.querySelectorAll("[id^='search-button']");onMainPage?(input=document.getElementById("search-query-main"),output=document.getElementById("search-results-main"),modal=document.getElementById("search-modal-main"),wrapper=document.getElementById("search-wrapper-main")):(input=document.getElementById("search-query"),output=document.getElementById("search-results"),modal=document.getElementById("search-modal"),wrapper=document.getElementById("search-wrapper"),hideButton=document.getElementById("close-search-button")),first=output.firstChild,last=output.lastChild,searchVisible=!1,indexed=!1,hasResults=!1,onMainPage&&(buildIndex(),searchVisible=!0),showButtons.forEach(e=>{e.addEventListener("click",displaySearch)}),onMainPage||(hideButton.addEventListener("click",hideSearch),wrapper.addEventListener("click",hideSearch),modal.addEventListener("click",function(e){return e.stopPropagation(),e.stopImmediatePropagation(),!1})),document.addEventListener("keydown",function(e){e.key=="/"&&(searchVisible||(e.preventDefault(),displaySearch()),onMainPage&&(e.preventDefault(),input.focus())),e.key=="Escape"&&hideSearch(),e.key=="ArrowDown"&&searchVisible&&hasResults&&(e.preventDefault(),document.activeElement==input?first.focus():document.activeElement==last?last.focus():document.activeElement.parentElement.nextSibling.firstElementChild.focus()),e.key=="ArrowUp"&&searchVisible&&hasResults&&(e.preventDefault(),document.activeElement==input?input.focus():document.activeElement==first?input.focus():document.activeElement.parentElement.previousSibling.firstElementChild.focus()),e.key=="Enter"&&searchVisible&&hasResults&&(e.preventDefault(),document.activeElement==input?window.location.href=first.href:window.location.href=document.activeElement.href)}),input.onkeyup=function(){executeQuery(this.value)};function displaySearch(){indexed||buildIndex(),searchVisible||(document.body.style.overflow="hidden",wrapper.style.visibility="visible",input.focus(),searchVisible=!0)}function hideSearch(){searchVisible&&(document.body.style.overflow="visible",wrapper.style.visibility="hidden",input.value="",output.innerHTML="",document.activeElement.blur(),searchVisible=!1)}function fetchJSON(e,t){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(n.readyState===4&&n.status===200){var e=JSON.parse(n.responseText);t&&t(e)}},n.open("GET",e),n.send()}function buildIndex(){var e=wrapper.getAttribute("data-url"),e=e.replace(/\/?$/,"/");fetchJSON(e+"index.json",function(e){var t={shouldSort:!0,ignoreLocation:!0,threshold:0,includeMatches:!0,keys:[{name:"title",weight:.8},{name:"section",weight:.2},{name:"summary",weight:.6},{name:"content",weight:.4}]};fuse=new Fuse(e,t),fuse.remove(e=>e.title==="formulas"||e.title==="Suggest"||e.title==="stemformulas"||e.title==="about"||e.title==="Tags"||e.title==="Categories"),indexed=!0})}function executeQuery(e){let n=fuse.search(e),t="";n.length>0?(n.forEach(function(e){t=t+`
      • + +
        +
        ${e.item.title}
        +
        ${e.item.section}·${e.item.date}
        +
        ${e.item.summary}
        +
        +
        +
        +
        +
      • `}),hasResults=!0):(t="",hasResults=!1),output.innerHTML=t,n.length>0&&(first=output.firstChild.firstElementChild,last=output.lastChild.firstElementChild)}scriptBundle=document.getElementById("script-bundle"),copyText=scriptBundle?scriptBundle.getAttribute("data-copy"):"Copy",copiedText=scriptBundle?scriptBundle.getAttribute("data-copied"):"Copied";function createCopyButton(e){const t=document.createElement("button");t.className="copy-button",t.type="button",t.ariaLabel=copyText,t.innerText=copyText,t.addEventListener("click",()=>copyCodeToClipboard(t,e)),addCopyButtonToDom(t,e)}async function copyCodeToClipboard(e,t){const n=t.querySelector(":last-child > .chroma > code").innerText;try{result=await navigator.permissions.query({name:"clipboard-write"}),result.state=="granted"||result.state=="prompt"?await navigator.clipboard.writeText(n):copyCodeBlockExecCommand(n,t)}catch{copyCodeBlockExecCommand(n,t)}finally{codeWasCopied(e)}}function copyCodeBlockExecCommand(e,t){const n=document.createElement("textArea");n.contentEditable="true",n.readOnly="false",n.className="copy-textarea",n.value=e,t.insertBefore(n,t.firstChild);const s=document.createRange();s.selectNodeContents(n);const o=window.getSelection();o.removeAllRanges(),o.addRange(s),n.setSelectionRange(0,999999),document.execCommand("copy"),t.removeChild(n)}function codeWasCopied(e){e.blur(),e.innerText=copiedText,setTimeout(function(){e.innerText=copyText},2e3)}function addCopyButtonToDom(e,t){t.insertBefore(e,t.firstChild);const n=document.createElement("div");n.className="highlight-wrapper",t.parentNode.insertBefore(n,t),n.appendChild(t)}window.addEventListener("DOMContentLoaded",e=>{document.querySelectorAll(".highlight").forEach(e=>createCopyButton(e))}) \ No newline at end of file diff --git a/static/logo.png b/public/logo.png similarity index 100% rename from static/logo.png rename to public/logo.png diff --git a/static/logo.webp b/public/logo.webp similarity index 100% rename from static/logo.webp rename to public/logo.webp diff --git a/public/next.svg b/public/next.svg new file mode 100644 index 00000000..5174b28c --- /dev/null +++ b/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 00000000..1cfea19e --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Allow: / +Sitemap: https://stemformulas.com/sitemap.xml diff --git a/static/site.webmanifest b/public/site.webmanifest similarity index 100% rename from static/site.webmanifest rename to public/site.webmanifest diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 00000000..70645528 --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1 @@ +https://stemformulas.com/formulas/equivalent-uniform-annual-cost/2023-06-24T00:00:00+00:00https://stemformulas.com/formulas/2023-06-24T00:00:00+00:00https://stemformulas.com/formulas/future-to-net-present-worth/2023-06-24T00:00:00+00:00https://stemformulas.com/2023-06-24T00:00:00+00:00https://stemformulas.com/formulas/light-wavelength-frequency/2023-03-24T00:00:00+00:00https://stemformulas.com/formulas/energy-of-light/2023-03-24T00:00:00+00:00https://stemformulas.com/formulas/feynmanns-trick/2023-03-16T00:00:00+00:00https://stemformulas.com/formulas/finite-infinite-series/2023-02-26T00:00:00+00:00https://stemformulas.com/formulas/convolution/2023-01-18T00:00:00+00:00https://stemformulas.com/formulas/shockley-diode-model/2023-01-18T00:00:00+00:00https://stemformulas.com/formulas/schrodingers-equation/2023-01-04T00:00:00+00:00https://stemformulas.com/formulas/lhopitals-rule/2023-01-03T00:00:00+00:00https://stemformulas.com/formulas/lorentz-transformations/2023-01-02T00:00:00+00:00https://stemformulas.com/formulas/determinant/2023-01-01T00:00:00+00:00https://stemformulas.com/formulas/double-angle-trig-identities/2023-01-01T00:00:00+00:00https://stemformulas.com/formulas/trig-angle-sum-difference-identities/2023-01-01T00:00:00+00:00https://stemformulas.com/formulas/projection-and-perpendicular/2023-01-01T00:00:00+00:00https://stemformulas.com/formulas/greens-theorem/2022-12-30T00:00:00+00:00https://stemformulas.com/formulas/hookes-law-stress-strain/2022-12-30T00:00:00+00:00https://stemformulas.com/formulas/hookes-law-springs/2022-12-30T00:00:00+00:00https://stemformulas.com/formulas/hyperbolic-trig-functions/2022-12-30T00:00:00+00:00https://stemformulas.com/formulas/stokes-theorem/2022-12-30T00:00:00+00:00https://stemformulas.com/formulas/cross-product/2022-12-29T00:00:00+00:00https://stemformulas.com/formulas/divergence-theorem/2022-12-29T00:00:00+00:00https://stemformulas.com/formulas/dot-product/2022-12-29T00:00:00+00:00https://stemformulas.com/formulas/amperes-law/2022-12-28T00:00:00+00:00https://stemformulas.com/formulas/gauss-law/2022-12-28T00:00:00+00:00https://stemformulas.com/formulas/cosine-law/2022-12-26T00:00:00+00:00https://stemformulas.com/formulas/definition-of-the-derivative/2022-12-26T00:00:00+00:00https://stemformulas.com/formulas/pythagorean-trig-identities/2022-12-26T00:00:00+00:00https://stemformulas.com/formulas/cauchys-integral-theorem/2022-12-24T00:00:00+00:00https://stemformulas.com/formulas/gravitational-potential-energy/2022-12-24T00:00:00+00:00https://stemformulas.com/formulas/kinetic-energy/2022-12-24T00:00:00+00:00https://stemformulas.com/formulas/laplaces-equation/2022-12-24T00:00:00+00:00https://stemformulas.com/formulas/fundmantal-theorem-of-calculus/2022-12-23T00:00:00+00:00https://stemformulas.com/formulas/pythagorean-theorem/2022-12-22T00:00:00+00:00https://stemformulas.com/formulas/taylor-expansion-of-e/2022-12-08T00:00:00+00:00https://stemformulas.com/formulas/newtonian-momentum/2022-12-08T00:00:00+00:00https://stemformulas.com/formulas/quadratic-formula/2022-12-06T00:00:00+00:00https://stemformulas.com/formulas/newtons-2nd-law/2022-12-04T00:00:00+00:00https://stemformulas.com/formulas/eulers-identity-formula/2022-11-28T00:00:00+00:00https://stemformulas.com/formulas/trig-in-terms-of-e/2022-11-28T00:00:00+00:00https://stemformulas.com/formulas/ideal-gas-law/2022-11-27T00:00:00+00:00https://stemformulas.com/formulas/ohms-law/2022-11-27T00:00:00+00:00https://stemformulas.com/about/https://stemformulas.com/suggest/ \ No newline at end of file diff --git a/public/suggest/index.html b/public/suggest/index.html new file mode 100644 index 00000000..d5dfc211 --- /dev/null +++ b/public/suggest/index.html @@ -0,0 +1,7 @@ +Suggest · stemformulas + + +

        Suggest

        \ No newline at end of file diff --git a/public/suggest/index.xml b/public/suggest/index.xml new file mode 100644 index 00000000..435aaf74 --- /dev/null +++ b/public/suggest/index.xml @@ -0,0 +1 @@ +Suggest on stemformulashttps://stemformulas.com/suggest/Recent content in Suggest on stemformulasHugo -- gohugo.ioen \ No newline at end of file diff --git a/public/tags/algebra/index.html b/public/tags/algebra/index.html new file mode 100644 index 00000000..52bfaa50 --- /dev/null +++ b/public/tags/algebra/index.html @@ -0,0 +1,9 @@ +algebra · stemformulas + + +
        + +

        algebra

        Quadratic Formula

        $$x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$$
        \ No newline at end of file diff --git a/public/tags/algebra/index.xml b/public/tags/algebra/index.xml new file mode 100644 index 00000000..44c806f4 --- /dev/null +++ b/public/tags/algebra/index.xml @@ -0,0 +1 @@ +algebra on stemformulashttps://stemformulas.com/tags/algebra/Recent content in algebra on stemformulasHugo -- gohugo.ioenTue, 06 Dec 2022 00:00:00 +0000Quadratic Formulahttps://stemformulas.com/formulas/quadratic-formula/Tue, 06 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/quadratic-formula/The formula for the zeros of a quadratic equation \ No newline at end of file diff --git a/public/tags/algebra/page/1/index.html b/public/tags/algebra/page/1/index.html new file mode 100644 index 00000000..22f4a2da --- /dev/null +++ b/public/tags/algebra/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/algebra/ \ No newline at end of file diff --git a/public/tags/calculus/index.html b/public/tags/calculus/index.html new file mode 100644 index 00000000..20a77dcc --- /dev/null +++ b/public/tags/calculus/index.html @@ -0,0 +1,9 @@ +calculus · stemformulas + + +
        \ No newline at end of file diff --git a/public/tags/calculus/index.xml b/public/tags/calculus/index.xml new file mode 100644 index 00000000..1b3781d2 --- /dev/null +++ b/public/tags/calculus/index.xml @@ -0,0 +1 @@ +calculus on stemformulashttps://stemformulas.com/tags/calculus/Recent content in calculus on stemformulasHugo -- gohugo.ioenThu, 16 Mar 2023 00:00:00 +0000Feynmann's Trick For Exponential Integralshttps://stemformulas.com/formulas/feynmanns-trick/Thu, 16 Mar 2023 00:00:00 +0000https://stemformulas.com/formulas/feynmanns-trick/A niche trick for evaluation exponential integrals of a certain form.Convolutionhttps://stemformulas.com/formulas/convolution/Wed, 18 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/convolution/Formula for the convolution of two functions.L'Hopital's Rulehttps://stemformulas.com/formulas/lhopitals-rule/Tue, 03 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/lhopitals-rule/L&rsquo;Hopital&rsquo;s rule is a method for evaluating limits of indeterminate forms.Green's Theoremhttps://stemformulas.com/formulas/greens-theorem/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/greens-theorem/Green&rsquo;s theorem is a formula that describes the relationship between certain closed path line integrals and line integrals.Stokes' Theoremhttps://stemformulas.com/formulas/stokes-theorem/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/stokes-theorem/Stokes&rsquo; theorem describes the relationship between the integral of the curl of a vector field over a surface to the line integral of the same field around the boundary of the surface.Definition of the Derivativehttps://stemformulas.com/formulas/definition-of-the-derivative/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/definition-of-the-derivative/The definition of the derivative.Fundamental Theorem of Calculushttps://stemformulas.com/formulas/fundmantal-theorem-of-calculus/Fri, 23 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/fundmantal-theorem-of-calculus/Fundamental Theorem of CalculusMaclaurin Series for e^xhttps://stemformulas.com/formulas/taylor-expansion-of-e/Thu, 08 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/taylor-expansion-of-e/The Maclaurin series for e^x \ No newline at end of file diff --git a/public/tags/calculus/page/1/index.html b/public/tags/calculus/page/1/index.html new file mode 100644 index 00000000..8f37bd6d --- /dev/null +++ b/public/tags/calculus/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/calculus/ \ No newline at end of file diff --git a/public/tags/chemistry/index.html b/public/tags/chemistry/index.html new file mode 100644 index 00000000..9984e1b4 --- /dev/null +++ b/public/tags/chemistry/index.html @@ -0,0 +1,9 @@ +chemistry · stemformulas + + +
        + +

        chemistry

        Ideal Gas Law

        $$PV = nRT$$
        \ No newline at end of file diff --git a/public/tags/chemistry/index.xml b/public/tags/chemistry/index.xml new file mode 100644 index 00000000..e762bcbc --- /dev/null +++ b/public/tags/chemistry/index.xml @@ -0,0 +1 @@ +chemistry on stemformulashttps://stemformulas.com/tags/chemistry/Recent content in chemistry on stemformulasHugo -- gohugo.ioenSun, 27 Nov 2022 00:00:00 +0000Ideal Gas Lawhttps://stemformulas.com/formulas/ideal-gas-law/Sun, 27 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/ideal-gas-law/The equation of state of a hypothetical ideal gas. \ No newline at end of file diff --git a/public/tags/chemistry/page/1/index.html b/public/tags/chemistry/page/1/index.html new file mode 100644 index 00000000..269078d8 --- /dev/null +++ b/public/tags/chemistry/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/chemistry/ \ No newline at end of file diff --git a/public/tags/complex-analysis/index.html b/public/tags/complex-analysis/index.html new file mode 100644 index 00000000..e924496f --- /dev/null +++ b/public/tags/complex-analysis/index.html @@ -0,0 +1,9 @@ +complex analysis · stemformulas + + +
        + +

        complex analysis

        Hyperbolic Functions

        $$sinh(x) = \frac{e^x - e^{-x}}{2}$$

        Cauchy's Integral Theorem

        $$\oint_C f(z)dz = 0$$

        Euler's Identity/Formula

        $$e^{i\pi} = -1$$

        Trig functions in terms of e

        $$\small{sin(x) = \frac{e^{ix} - e^{-ix}}{2i}, cos(x) = \frac{e^{ix} + e^{-ix}}{2}}$$
        \ No newline at end of file diff --git a/public/tags/complex-analysis/index.xml b/public/tags/complex-analysis/index.xml new file mode 100644 index 00000000..23b016f7 --- /dev/null +++ b/public/tags/complex-analysis/index.xml @@ -0,0 +1 @@ +complex analysis on stemformulashttps://stemformulas.com/tags/complex-analysis/Recent content in complex analysis on stemformulasHugo -- gohugo.ioenFri, 30 Dec 2022 00:00:00 +0000Hyperbolic Functionshttps://stemformulas.com/formulas/hyperbolic-trig-functions/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hyperbolic-trig-functions/Definitions of the hyperbolic functionsCauchy's Integral Theoremhttps://stemformulas.com/formulas/cauchys-integral-theorem/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cauchys-integral-theorem/A theorem used for line integrals of complex functions.Euler's Identity/Formulahttps://stemformulas.com/formulas/eulers-identity-formula/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/eulers-identity-formula/One of the most amazing formulas in mathematics.Trig functions in terms of ehttps://stemformulas.com/formulas/trig-in-terms-of-e/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/trig-in-terms-of-e/Common trig functions in terms of e \ No newline at end of file diff --git a/public/tags/complex-analysis/page/1/index.html b/public/tags/complex-analysis/page/1/index.html new file mode 100644 index 00000000..4e8b1f77 --- /dev/null +++ b/public/tags/complex-analysis/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/complex-analysis/ \ No newline at end of file diff --git a/public/tags/cos/index.html b/public/tags/cos/index.html new file mode 100644 index 00000000..5bedf526 --- /dev/null +++ b/public/tags/cos/index.html @@ -0,0 +1,9 @@ +cos · stemformulas + + +
        + +

        cos

        Double Angle Trig Identities

        $$sin(2\theta) = 2 \cdot sin(\theta) \cdot cos(\theta)$$

        Trig Angle Sum/Difference Identities

        $$\scriptsize sin(a \pm b) = sin(a) cos(b) \pm cos(a) sin(b)$$

        Cosine Law

        $$c^2 = a^2 + b^2 - 2 \cdot a \cdot b \cdot cos(\theta)$$
        \ No newline at end of file diff --git a/public/tags/cos/index.xml b/public/tags/cos/index.xml new file mode 100644 index 00000000..00109647 --- /dev/null +++ b/public/tags/cos/index.xml @@ -0,0 +1 @@ +cos on stemformulashttps://stemformulas.com/tags/cos/Recent content in cos on stemformulasHugo -- gohugo.ioenSun, 01 Jan 2023 00:00:00 +0000Double Angle Trig Identitieshttps://stemformulas.com/formulas/double-angle-trig-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/double-angle-trig-identities/Formulas expanding the trigonometric functions of double angles.Trig Angle Sum/Difference Identitieshttps://stemformulas.com/formulas/trig-angle-sum-difference-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/trig-angle-sum-difference-identities/Formulas for the trigonometric functions of the sum and difference of angles.Cosine Lawhttps://stemformulas.com/formulas/cosine-law/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cosine-law/The formula relating the sides and angles of every triangle. \ No newline at end of file diff --git a/public/tags/cos/page/1/index.html b/public/tags/cos/page/1/index.html new file mode 100644 index 00000000..df1105f6 --- /dev/null +++ b/public/tags/cos/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/cos/ \ No newline at end of file diff --git a/public/tags/differential-equations/index.html b/public/tags/differential-equations/index.html new file mode 100644 index 00000000..3ac05624 --- /dev/null +++ b/public/tags/differential-equations/index.html @@ -0,0 +1,9 @@ +differential equations · stemformulas + + +
        + +

        differential equations

        Laplace's Equation

        $$\nabla^2 f = \nabla \cdot \nabla f = 0$$
        \ No newline at end of file diff --git a/public/tags/differential-equations/index.xml b/public/tags/differential-equations/index.xml new file mode 100644 index 00000000..2d66413b --- /dev/null +++ b/public/tags/differential-equations/index.xml @@ -0,0 +1 @@ +differential equations on stemformulashttps://stemformulas.com/tags/differential-equations/Recent content in differential equations on stemformulasHugo -- gohugo.ioenSat, 24 Dec 2022 00:00:00 +0000Laplace's Equationhttps://stemformulas.com/formulas/laplaces-equation/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/laplaces-equation/Laplace&rsquo;s equation is a common partial differential equation \ No newline at end of file diff --git a/public/tags/differential-equations/page/1/index.html b/public/tags/differential-equations/page/1/index.html new file mode 100644 index 00000000..a4208598 --- /dev/null +++ b/public/tags/differential-equations/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/differential-equations/ \ No newline at end of file diff --git a/public/tags/differentiation/index.html b/public/tags/differentiation/index.html new file mode 100644 index 00000000..74a04f48 --- /dev/null +++ b/public/tags/differentiation/index.html @@ -0,0 +1,9 @@ +differentiation · stemformulas + + +
        + +

        differentiation

        Definition of the Derivative

        $$\frac{d}{dx}f(x) = \lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$
        \ No newline at end of file diff --git a/public/tags/differentiation/index.xml b/public/tags/differentiation/index.xml new file mode 100644 index 00000000..2c8587f9 --- /dev/null +++ b/public/tags/differentiation/index.xml @@ -0,0 +1 @@ +differentiation on stemformulashttps://stemformulas.com/tags/differentiation/Recent content in differentiation on stemformulasHugo -- gohugo.ioenMon, 26 Dec 2022 00:00:00 +0000Definition of the Derivativehttps://stemformulas.com/formulas/definition-of-the-derivative/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/definition-of-the-derivative/The definition of the derivative. \ No newline at end of file diff --git a/public/tags/differentiation/page/1/index.html b/public/tags/differentiation/page/1/index.html new file mode 100644 index 00000000..eeb3156a --- /dev/null +++ b/public/tags/differentiation/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/differentiation/ \ No newline at end of file diff --git a/public/tags/e/index.html b/public/tags/e/index.html new file mode 100644 index 00000000..42a26e70 --- /dev/null +++ b/public/tags/e/index.html @@ -0,0 +1,9 @@ +e · stemformulas + + +
        + +

        e

        Hyperbolic Functions

        $$sinh(x) = \frac{e^x - e^{-x}}{2}$$

        Euler's Identity/Formula

        $$e^{i\pi} = -1$$

        Trig functions in terms of e

        $$\small{sin(x) = \frac{e^{ix} - e^{-ix}}{2i}, cos(x) = \frac{e^{ix} + e^{-ix}}{2}}$$
        \ No newline at end of file diff --git a/public/tags/e/index.xml b/public/tags/e/index.xml new file mode 100644 index 00000000..2507f5f5 --- /dev/null +++ b/public/tags/e/index.xml @@ -0,0 +1 @@ +e on stemformulashttps://stemformulas.com/tags/e/Recent content in e on stemformulasHugo -- gohugo.ioenFri, 30 Dec 2022 00:00:00 +0000Hyperbolic Functionshttps://stemformulas.com/formulas/hyperbolic-trig-functions/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hyperbolic-trig-functions/Definitions of the hyperbolic functionsEuler's Identity/Formulahttps://stemformulas.com/formulas/eulers-identity-formula/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/eulers-identity-formula/One of the most amazing formulas in mathematics.Trig functions in terms of ehttps://stemformulas.com/formulas/trig-in-terms-of-e/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/trig-in-terms-of-e/Common trig functions in terms of e \ No newline at end of file diff --git a/public/tags/e/page/1/index.html b/public/tags/e/page/1/index.html new file mode 100644 index 00000000..996323a0 --- /dev/null +++ b/public/tags/e/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/e/ \ No newline at end of file diff --git a/public/tags/electrical-engineering/index.html b/public/tags/electrical-engineering/index.html new file mode 100644 index 00000000..d98fcb12 --- /dev/null +++ b/public/tags/electrical-engineering/index.html @@ -0,0 +1,9 @@ +electrical engineering · stemformulas + + +
        + +

        electrical engineering

        Shockley Diode Model

        $$I = I_S \cdot (e^{\frac{V_D}{nV_T}} - 1)$$

        Ohm's Law

        $$V = IR$$
        \ No newline at end of file diff --git a/public/tags/electrical-engineering/index.xml b/public/tags/electrical-engineering/index.xml new file mode 100644 index 00000000..666b1247 --- /dev/null +++ b/public/tags/electrical-engineering/index.xml @@ -0,0 +1 @@ +electrical engineering on stemformulashttps://stemformulas.com/tags/electrical-engineering/Recent content in electrical engineering on stemformulasHugo -- gohugo.ioenWed, 18 Jan 2023 00:00:00 +0000Shockley Diode Modelhttps://stemformulas.com/formulas/shockley-diode-model/Wed, 18 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/shockley-diode-model/The Shockley diode model is a simplified model of a diode&rsquo;s Voltage-Current relationship.Ohm's Lawhttps://stemformulas.com/formulas/ohms-law/Sun, 27 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/ohms-law/Ohm&rsquo;s law states that the current through a conductor between two points is directly proportional to the voltage across the two points. \ No newline at end of file diff --git a/public/tags/electrical-engineering/page/1/index.html b/public/tags/electrical-engineering/page/1/index.html new file mode 100644 index 00000000..d231ecf6 --- /dev/null +++ b/public/tags/electrical-engineering/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/electrical-engineering/ \ No newline at end of file diff --git a/public/tags/electromagnetism/index.html b/public/tags/electromagnetism/index.html new file mode 100644 index 00000000..18648e9b --- /dev/null +++ b/public/tags/electromagnetism/index.html @@ -0,0 +1,9 @@ +electromagnetism · stemformulas + + +
        + +

        electromagnetism

        Ampere's Law

        $$\oint \vec{B} \cdot d\vec{l} = \mu_0 I$$

        Gauss's Law

        $$\oiint \vec{E} \cdot d\vec{A} = \frac{Q_{enc}}{\epsilon_0}$$
        \ No newline at end of file diff --git a/public/tags/electromagnetism/index.xml b/public/tags/electromagnetism/index.xml new file mode 100644 index 00000000..f0373674 --- /dev/null +++ b/public/tags/electromagnetism/index.xml @@ -0,0 +1 @@ +electromagnetism on stemformulashttps://stemformulas.com/tags/electromagnetism/Recent content in electromagnetism on stemformulasHugo -- gohugo.ioenWed, 28 Dec 2022 00:00:00 +0000Ampere's Lawhttps://stemformulas.com/formulas/amperes-law/Wed, 28 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/amperes-law/Ampere&rsquo;s law is a formula that describes the magnetic field produced by a current-carrying wire.Gauss's Lawhttps://stemformulas.com/formulas/gauss-law/Wed, 28 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/gauss-law/Gauss&rsquo;s law is a formula that describes the electric field produced by a charge distribution. \ No newline at end of file diff --git a/public/tags/electromagnetism/page/1/index.html b/public/tags/electromagnetism/page/1/index.html new file mode 100644 index 00000000..1743aae0 --- /dev/null +++ b/public/tags/electromagnetism/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/electromagnetism/ \ No newline at end of file diff --git a/public/tags/electronics/index.html b/public/tags/electronics/index.html new file mode 100644 index 00000000..a04531d6 --- /dev/null +++ b/public/tags/electronics/index.html @@ -0,0 +1,9 @@ +electronics · stemformulas + + +
        + +

        electronics

        Shockley Diode Model

        $$I = I_S \cdot (e^{\frac{V_D}{nV_T}} - 1)$$
        \ No newline at end of file diff --git a/public/tags/electronics/index.xml b/public/tags/electronics/index.xml new file mode 100644 index 00000000..8a07cdfc --- /dev/null +++ b/public/tags/electronics/index.xml @@ -0,0 +1 @@ +electronics on stemformulashttps://stemformulas.com/tags/electronics/Recent content in electronics on stemformulasHugo -- gohugo.ioenWed, 18 Jan 2023 00:00:00 +0000Shockley Diode Modelhttps://stemformulas.com/formulas/shockley-diode-model/Wed, 18 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/shockley-diode-model/The Shockley diode model is a simplified model of a diode&rsquo;s Voltage-Current relationship. \ No newline at end of file diff --git a/public/tags/electronics/page/1/index.html b/public/tags/electronics/page/1/index.html new file mode 100644 index 00000000..d0ee5287 --- /dev/null +++ b/public/tags/electronics/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/electronics/ \ No newline at end of file diff --git a/public/tags/finance/index.html b/public/tags/finance/index.html new file mode 100644 index 00000000..e5075107 --- /dev/null +++ b/public/tags/finance/index.html @@ -0,0 +1,9 @@ +finance · stemformulas + + +
        + +

        finance

        Equivalent Uniform Annual Cost

        $$A = P \frac{i(1 + i)^n}{(1 + i)^n - 1}$$

        Present and Future Value

        $$F = P(1 + i)^n$$
        \ No newline at end of file diff --git a/public/tags/finance/index.xml b/public/tags/finance/index.xml new file mode 100644 index 00000000..04aa467a --- /dev/null +++ b/public/tags/finance/index.xml @@ -0,0 +1 @@ +finance on stemformulashttps://stemformulas.com/tags/finance/Recent content in finance on stemformulasHugo -- gohugo.ioenSat, 24 Jun 2023 00:00:00 +0000Equivalent Uniform Annual Costhttps://stemformulas.com/formulas/equivalent-uniform-annual-cost/Sat, 24 Jun 2023 00:00:00 +0000https://stemformulas.com/formulas/equivalent-uniform-annual-cost/Formulas for converting between present worth, annual worth, and future worthPresent and Future Valuehttps://stemformulas.com/formulas/future-to-net-present-worth/Sat, 24 Jun 2023 00:00:00 +0000https://stemformulas.com/formulas/future-to-net-present-worth/Formulas for converting between future worth and net present worth \ No newline at end of file diff --git a/public/tags/finance/page/1/index.html b/public/tags/finance/page/1/index.html new file mode 100644 index 00000000..7882751e --- /dev/null +++ b/public/tags/finance/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/finance/ \ No newline at end of file diff --git a/public/tags/geometry/index.html b/public/tags/geometry/index.html new file mode 100644 index 00000000..383bdf61 --- /dev/null +++ b/public/tags/geometry/index.html @@ -0,0 +1,9 @@ +geometry · stemformulas + + +
        + +

        geometry

        Pythagorean Theorem

        $$a^2 + b^2 = c^2$$
        \ No newline at end of file diff --git a/public/tags/geometry/index.xml b/public/tags/geometry/index.xml new file mode 100644 index 00000000..88a49711 --- /dev/null +++ b/public/tags/geometry/index.xml @@ -0,0 +1 @@ +geometry on stemformulashttps://stemformulas.com/tags/geometry/Recent content in geometry on stemformulasHugo -- gohugo.ioenThu, 22 Dec 2022 00:00:00 +0000Pythagorean Theoremhttps://stemformulas.com/formulas/pythagorean-theorem/Thu, 22 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/pythagorean-theorem/Formula relating the lengths of the sides of a right triangle \ No newline at end of file diff --git a/public/tags/geometry/page/1/index.html b/public/tags/geometry/page/1/index.html new file mode 100644 index 00000000..25c1fbec --- /dev/null +++ b/public/tags/geometry/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/geometry/ \ No newline at end of file diff --git a/public/tags/identity/index.html b/public/tags/identity/index.html new file mode 100644 index 00000000..f9743ff5 --- /dev/null +++ b/public/tags/identity/index.html @@ -0,0 +1,9 @@ +identity · stemformulas + + +
        + +

        identity

        Trig Angle Sum/Difference Identities

        $$\scriptsize sin(a \pm b) = sin(a) cos(b) \pm cos(a) sin(b)$$
        \ No newline at end of file diff --git a/public/tags/identity/index.xml b/public/tags/identity/index.xml new file mode 100644 index 00000000..d11517c4 --- /dev/null +++ b/public/tags/identity/index.xml @@ -0,0 +1 @@ +identity on stemformulashttps://stemformulas.com/tags/identity/Recent content in identity on stemformulasHugo -- gohugo.ioenSun, 01 Jan 2023 00:00:00 +0000Trig Angle Sum/Difference Identitieshttps://stemformulas.com/formulas/trig-angle-sum-difference-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/trig-angle-sum-difference-identities/Formulas for the trigonometric functions of the sum and difference of angles. \ No newline at end of file diff --git a/public/tags/identity/page/1/index.html b/public/tags/identity/page/1/index.html new file mode 100644 index 00000000..0046e95c --- /dev/null +++ b/public/tags/identity/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/identity/ \ No newline at end of file diff --git a/public/tags/imaginary-numbers/index.html b/public/tags/imaginary-numbers/index.html new file mode 100644 index 00000000..962e50e7 --- /dev/null +++ b/public/tags/imaginary-numbers/index.html @@ -0,0 +1,9 @@ +imaginary numbers · stemformulas + + +
        + +

        imaginary numbers

        Hyperbolic Functions

        $$sinh(x) = \frac{e^x - e^{-x}}{2}$$

        Trig functions in terms of e

        $$\small{sin(x) = \frac{e^{ix} - e^{-ix}}{2i}, cos(x) = \frac{e^{ix} + e^{-ix}}{2}}$$
        \ No newline at end of file diff --git a/public/tags/imaginary-numbers/index.xml b/public/tags/imaginary-numbers/index.xml new file mode 100644 index 00000000..c4bc1a40 --- /dev/null +++ b/public/tags/imaginary-numbers/index.xml @@ -0,0 +1 @@ +imaginary numbers on stemformulashttps://stemformulas.com/tags/imaginary-numbers/Recent content in imaginary numbers on stemformulasHugo -- gohugo.ioenFri, 30 Dec 2022 00:00:00 +0000Hyperbolic Functionshttps://stemformulas.com/formulas/hyperbolic-trig-functions/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hyperbolic-trig-functions/Definitions of the hyperbolic functionsTrig functions in terms of ehttps://stemformulas.com/formulas/trig-in-terms-of-e/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/trig-in-terms-of-e/Common trig functions in terms of e \ No newline at end of file diff --git a/public/tags/imaginary-numbers/page/1/index.html b/public/tags/imaginary-numbers/page/1/index.html new file mode 100644 index 00000000..50bfb3d8 --- /dev/null +++ b/public/tags/imaginary-numbers/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/imaginary-numbers/ \ No newline at end of file diff --git a/public/tags/index.html b/public/tags/index.html new file mode 100644 index 00000000..93b3708e --- /dev/null +++ b/public/tags/index.html @@ -0,0 +1,7 @@ +Tags · stemformulas + + +
        \ No newline at end of file diff --git a/public/tags/index.xml b/public/tags/index.xml new file mode 100644 index 00000000..5fc5aea5 --- /dev/null +++ b/public/tags/index.xml @@ -0,0 +1 @@ +Tags on stemformulashttps://stemformulas.com/tags/Recent content in Tags on stemformulasHugo -- gohugo.ioenSat, 24 Jun 2023 00:00:00 +0000financehttps://stemformulas.com/tags/finance/Sat, 24 Jun 2023 00:00:00 +0000https://stemformulas.com/tags/finance/mathhttps://stemformulas.com/tags/math/Sat, 24 Jun 2023 00:00:00 +0000https://stemformulas.com/tags/math/opticshttps://stemformulas.com/tags/optics/Fri, 24 Mar 2023 00:00:00 +0000https://stemformulas.com/tags/optics/physicshttps://stemformulas.com/tags/physics/Fri, 24 Mar 2023 00:00:00 +0000https://stemformulas.com/tags/physics/calculushttps://stemformulas.com/tags/calculus/Thu, 16 Mar 2023 00:00:00 +0000https://stemformulas.com/tags/calculus/electrical engineeringhttps://stemformulas.com/tags/electrical-engineering/Wed, 18 Jan 2023 00:00:00 +0000https://stemformulas.com/tags/electrical-engineering/electronicshttps://stemformulas.com/tags/electronics/Wed, 18 Jan 2023 00:00:00 +0000https://stemformulas.com/tags/electronics/integrationhttps://stemformulas.com/tags/integration/Wed, 18 Jan 2023 00:00:00 +0000https://stemformulas.com/tags/integration/quantum mechanicshttps://stemformulas.com/tags/quantum-mechanics/Wed, 04 Jan 2023 00:00:00 +0000https://stemformulas.com/tags/quantum-mechanics/limitshttps://stemformulas.com/tags/limits/Tue, 03 Jan 2023 00:00:00 +0000https://stemformulas.com/tags/limits/relativityhttps://stemformulas.com/tags/relativity/Mon, 02 Jan 2023 00:00:00 +0000https://stemformulas.com/tags/relativity/coshttps://stemformulas.com/tags/cos/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/tags/cos/identityhttps://stemformulas.com/tags/identity/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/tags/identity/linear algebrahttps://stemformulas.com/tags/linear-algebra/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/tags/linear-algebra/sinhttps://stemformulas.com/tags/sin/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/tags/sin/tanhttps://stemformulas.com/tags/tan/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/tags/tan/trigonometryhttps://stemformulas.com/tags/trigonometry/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/tags/trigonometry/vectorhttps://stemformulas.com/tags/vector/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/tags/vector/complex analysishttps://stemformulas.com/tags/complex-analysis/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/complex-analysis/ehttps://stemformulas.com/tags/e/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/e/imaginary numbershttps://stemformulas.com/tags/imaginary-numbers/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/imaginary-numbers/materials engineeringhttps://stemformulas.com/tags/materials-engineering/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/materials-engineering/mechanical engineeringhttps://stemformulas.com/tags/mechanical-engineering/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/mechanical-engineering/multivariable calculushttps://stemformulas.com/tags/multivariable-calculus/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/multivariable-calculus/vector calculushttps://stemformulas.com/tags/vector-calculus/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/vector-calculus/electromagnetismhttps://stemformulas.com/tags/electromagnetism/Wed, 28 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/electromagnetism/Maxwell's equationshttps://stemformulas.com/tags/maxwells-equations/Wed, 28 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/maxwells-equations/differentiationhttps://stemformulas.com/tags/differentiation/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/differentiation/differential equationshttps://stemformulas.com/tags/differential-equations/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/differential-equations/geometryhttps://stemformulas.com/tags/geometry/Thu, 22 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/geometry/masshttps://stemformulas.com/tags/mass/Thu, 08 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/mass/velocityhttps://stemformulas.com/tags/velocity/Thu, 08 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/velocity/algebrahttps://stemformulas.com/tags/algebra/Tue, 06 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/algebra/mechanicshttps://stemformulas.com/tags/mechanics/Sun, 04 Dec 2022 00:00:00 +0000https://stemformulas.com/tags/mechanics/pihttps://stemformulas.com/tags/pi/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/tags/pi/chemistryhttps://stemformulas.com/tags/chemistry/Sun, 27 Nov 2022 00:00:00 +0000https://stemformulas.com/tags/chemistry/ \ No newline at end of file diff --git a/public/tags/integration/index.html b/public/tags/integration/index.html new file mode 100644 index 00000000..08f60244 --- /dev/null +++ b/public/tags/integration/index.html @@ -0,0 +1,9 @@ +integration · stemformulas + + +
        \ No newline at end of file diff --git a/public/tags/integration/index.xml b/public/tags/integration/index.xml new file mode 100644 index 00000000..025bc0e5 --- /dev/null +++ b/public/tags/integration/index.xml @@ -0,0 +1 @@ +integration on stemformulashttps://stemformulas.com/tags/integration/Recent content in integration on stemformulasHugo -- gohugo.ioenWed, 18 Jan 2023 00:00:00 +0000Convolutionhttps://stemformulas.com/formulas/convolution/Wed, 18 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/convolution/Formula for the convolution of two functions.Green's Theoremhttps://stemformulas.com/formulas/greens-theorem/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/greens-theorem/Green&rsquo;s theorem is a formula that describes the relationship between certain closed path line integrals and line integrals.Stokes' Theoremhttps://stemformulas.com/formulas/stokes-theorem/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/stokes-theorem/Stokes&rsquo; theorem describes the relationship between the integral of the curl of a vector field over a surface to the line integral of the same field around the boundary of the surface.Divergence Theoremhttps://stemformulas.com/formulas/divergence-theorem/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/divergence-theorem/The divergence theorem is a formula that describes the relationship between the divergence of a vector field and the surface integral of the field over a closed surface.Cauchy's Integral Theoremhttps://stemformulas.com/formulas/cauchys-integral-theorem/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cauchys-integral-theorem/A theorem used for line integrals of complex functions. \ No newline at end of file diff --git a/public/tags/integration/page/1/index.html b/public/tags/integration/page/1/index.html new file mode 100644 index 00000000..04c7a06a --- /dev/null +++ b/public/tags/integration/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/integration/ \ No newline at end of file diff --git a/public/tags/limits/index.html b/public/tags/limits/index.html new file mode 100644 index 00000000..258d1741 --- /dev/null +++ b/public/tags/limits/index.html @@ -0,0 +1,9 @@ +limits · stemformulas + + +
        + +

        limits

        L'Hopital's Rule

        $$\lim_{x \to c} \frac{f(x)}{g(x)} = \lim_{x \to c} \frac{f'(x)}{g'(x)}$$

        Definition of the Derivative

        $$\frac{d}{dx}f(x) = \lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$
        \ No newline at end of file diff --git a/public/tags/limits/index.xml b/public/tags/limits/index.xml new file mode 100644 index 00000000..cb609fcf --- /dev/null +++ b/public/tags/limits/index.xml @@ -0,0 +1 @@ +limits on stemformulashttps://stemformulas.com/tags/limits/Recent content in limits on stemformulasHugo -- gohugo.ioenTue, 03 Jan 2023 00:00:00 +0000L'Hopital's Rulehttps://stemformulas.com/formulas/lhopitals-rule/Tue, 03 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/lhopitals-rule/L&rsquo;Hopital&rsquo;s rule is a method for evaluating limits of indeterminate forms.Definition of the Derivativehttps://stemformulas.com/formulas/definition-of-the-derivative/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/definition-of-the-derivative/The definition of the derivative. \ No newline at end of file diff --git a/public/tags/limits/page/1/index.html b/public/tags/limits/page/1/index.html new file mode 100644 index 00000000..6b5de6b4 --- /dev/null +++ b/public/tags/limits/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/limits/ \ No newline at end of file diff --git a/public/tags/linear-algebra/index.html b/public/tags/linear-algebra/index.html new file mode 100644 index 00000000..5c92c392 --- /dev/null +++ b/public/tags/linear-algebra/index.html @@ -0,0 +1,9 @@ +linear algebra · stemformulas + + +
        \ No newline at end of file diff --git a/public/tags/linear-algebra/index.xml b/public/tags/linear-algebra/index.xml new file mode 100644 index 00000000..4459b353 --- /dev/null +++ b/public/tags/linear-algebra/index.xml @@ -0,0 +1 @@ +linear algebra on stemformulashttps://stemformulas.com/tags/linear-algebra/Recent content in linear algebra on stemformulasHugo -- gohugo.ioenSun, 01 Jan 2023 00:00:00 +0000Determinants of Matriceshttps://stemformulas.com/formulas/determinant/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/determinant/The formula for the determinant of a matrix.Vector Projectionhttps://stemformulas.com/formulas/projection-and-perpendicular/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/projection-and-perpendicular/Formulas for the projection of a vector onto another vector and the perpendicular vector left over.Cross Producthttps://stemformulas.com/formulas/cross-product/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cross-product/The cross product is a common operation in linear algebra and beyond.Dot Producthttps://stemformulas.com/formulas/dot-product/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/dot-product/The dot product is a common operation in linear algebra and beyond. \ No newline at end of file diff --git a/public/tags/linear-algebra/page/1/index.html b/public/tags/linear-algebra/page/1/index.html new file mode 100644 index 00000000..d187e792 --- /dev/null +++ b/public/tags/linear-algebra/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/linear-algebra/ \ No newline at end of file diff --git a/public/tags/mass/index.html b/public/tags/mass/index.html new file mode 100644 index 00000000..4bc398cf --- /dev/null +++ b/public/tags/mass/index.html @@ -0,0 +1,9 @@ +mass · stemformulas + + +
        + +

        mass

        Momentum (Newtonian)

        $$p = mv$$
        \ No newline at end of file diff --git a/public/tags/mass/index.xml b/public/tags/mass/index.xml new file mode 100644 index 00000000..da0647cd --- /dev/null +++ b/public/tags/mass/index.xml @@ -0,0 +1 @@ +mass on stemformulashttps://stemformulas.com/tags/mass/Recent content in mass on stemformulasHugo -- gohugo.ioenThu, 08 Dec 2022 00:00:00 +0000Momentum (Newtonian)https://stemformulas.com/formulas/newtonian-momentum/Thu, 08 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/newtonian-momentum/The momentum of a body in Newtonian mechanics \ No newline at end of file diff --git a/public/tags/mass/page/1/index.html b/public/tags/mass/page/1/index.html new file mode 100644 index 00000000..8224e6fe --- /dev/null +++ b/public/tags/mass/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/mass/ \ No newline at end of file diff --git a/public/tags/materials-engineering/index.html b/public/tags/materials-engineering/index.html new file mode 100644 index 00000000..1073497e --- /dev/null +++ b/public/tags/materials-engineering/index.html @@ -0,0 +1,9 @@ +materials engineering · stemformulas + + +
        + +

        materials engineering

        Hooke's Law (Modulus of Elasticity)

        $$\frac{F}{A} = E\frac{\Delta L}{L}$$

        Hooke's Law (Spring Constant)

        $$F = -kx$$
        \ No newline at end of file diff --git a/public/tags/materials-engineering/index.xml b/public/tags/materials-engineering/index.xml new file mode 100644 index 00000000..d7cd33cc --- /dev/null +++ b/public/tags/materials-engineering/index.xml @@ -0,0 +1 @@ +materials engineering on stemformulashttps://stemformulas.com/tags/materials-engineering/Recent content in materials engineering on stemformulasHugo -- gohugo.ioenFri, 30 Dec 2022 00:00:00 +0000Hooke's Law (Modulus of Elasticity)https://stemformulas.com/formulas/hookes-law-stress-strain/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hookes-law-stress-strain/Hooke&rsquo;s Law and Modulus of Elasticity relate the stress and strain of a material.Hooke's Law (Spring Constant)https://stemformulas.com/formulas/hookes-law-springs/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hookes-law-springs/Hooke&rsquo;s Law and the Spring Constant relate the force and displacement of a spring. \ No newline at end of file diff --git a/public/tags/materials-engineering/page/1/index.html b/public/tags/materials-engineering/page/1/index.html new file mode 100644 index 00000000..31e2f479 --- /dev/null +++ b/public/tags/materials-engineering/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/materials-engineering/ \ No newline at end of file diff --git a/public/tags/math/index.html b/public/tags/math/index.html new file mode 100644 index 00000000..d9bfb4a3 --- /dev/null +++ b/public/tags/math/index.html @@ -0,0 +1,9 @@ +math · stemformulas + + +
        + +

        math

        Equivalent Uniform Annual Cost

        $$A = P \frac{i(1 + i)^n}{(1 + i)^n - 1}$$

        Present and Future Value

        $$F = P(1 + i)^n$$

        Feynmann's Trick For Exponential Integrals

        $$\int_0^{\infty} x^n e^{-tx} dx = \frac{n!}{t^{n+1}}$$

        Finite and Infinite Geometric Series

        $$S_n = \frac{a(1-r^n)}{1-r}$$

        Convolution

        $$(f*g)(t)=\int_{-\infty}^{\infty} f(\tau)g(t-\tau)d\tau$$

        L'Hopital's Rule

        $$\lim_{x \to c} \frac{f(x)}{g(x)} = \lim_{x \to c} \frac{f'(x)}{g'(x)}$$

        Determinants of Matrices

        $$det(A) = |A|$$

        Double Angle Trig Identities

        $$sin(2\theta) = 2 \cdot sin(\theta) \cdot cos(\theta)$$

        Trig Angle Sum/Difference Identities

        $$\scriptsize sin(a \pm b) = sin(a) cos(b) \pm cos(a) sin(b)$$

        Vector Projection

        $$proj_{\vec{b}}(\vec{a})=\frac{\vec{a}\cdot\vec{b}}{\|\vec{b}\|^2}\vec{b}=(\vec{a}\cdot\hat{b})\hat{b}$$

        Hyperbolic Functions

        $$sinh(x) = \frac{e^x - e^{-x}}{2}$$

        Cross Product

        $$\vec{a} \times \vec{b} = \begin{vmatrix} \vec{i} & \vec{j} & \vec{k} \\ a_1 & a_2 & a_3 \\ b_1 & b_2 & b_3 \end{vmatrix}$$

        Dot Product

        $$\vec{a} \cdot \vec{b} = \sum_{i=1}^n a_i b_i$$

        Cosine Law

        $$c^2 = a^2 + b^2 - 2 \cdot a \cdot b \cdot cos(\theta)$$

        Definition of the Derivative

        $$\frac{d}{dx}f(x) = \lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$

        Pythagorean Trig Identities

        $$\sin^2(x) + \cos^2(x) = 1$$

        Cauchy's Integral Theorem

        $$\oint_C f(z)dz = 0$$

        Laplace's Equation

        $$\nabla^2 f = \nabla \cdot \nabla f = 0$$

        Fundamental Theorem of Calculus

        $$\int_a^b f(x) dx = F(b) - F(a)$$

        Pythagorean Theorem

        $$a^2 + b^2 = c^2$$

        Maclaurin Series for e^x

        $$e^x = \sum_{n=0}^\infty \frac{x^n}{n!}$$

        Quadratic Formula

        $$x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$$

        Euler's Identity/Formula

        $$e^{i\pi} = -1$$

        Trig functions in terms of e

        $$\small{sin(x) = \frac{e^{ix} - e^{-ix}}{2i}, cos(x) = \frac{e^{ix} + e^{-ix}}{2}}$$
        \ No newline at end of file diff --git a/public/tags/math/index.xml b/public/tags/math/index.xml new file mode 100644 index 00000000..ebcd253d --- /dev/null +++ b/public/tags/math/index.xml @@ -0,0 +1 @@ +math on stemformulashttps://stemformulas.com/tags/math/Recent content in math on stemformulasHugo -- gohugo.ioenSat, 24 Jun 2023 00:00:00 +0000Equivalent Uniform Annual Costhttps://stemformulas.com/formulas/equivalent-uniform-annual-cost/Sat, 24 Jun 2023 00:00:00 +0000https://stemformulas.com/formulas/equivalent-uniform-annual-cost/Formulas for converting between present worth, annual worth, and future worthPresent and Future Valuehttps://stemformulas.com/formulas/future-to-net-present-worth/Sat, 24 Jun 2023 00:00:00 +0000https://stemformulas.com/formulas/future-to-net-present-worth/Formulas for converting between future worth and net present worthFeynmann's Trick For Exponential Integralshttps://stemformulas.com/formulas/feynmanns-trick/Thu, 16 Mar 2023 00:00:00 +0000https://stemformulas.com/formulas/feynmanns-trick/A niche trick for evaluation exponential integrals of a certain form.Finite and Infinite Geometric Serieshttps://stemformulas.com/formulas/finite-infinite-series/Sun, 26 Feb 2023 00:00:00 +0000https://stemformulas.com/formulas/finite-infinite-series/The simplified formulas for finite and infinite geometric series.Convolutionhttps://stemformulas.com/formulas/convolution/Wed, 18 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/convolution/Formula for the convolution of two functions.L'Hopital's Rulehttps://stemformulas.com/formulas/lhopitals-rule/Tue, 03 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/lhopitals-rule/L&rsquo;Hopital&rsquo;s rule is a method for evaluating limits of indeterminate forms.Determinants of Matriceshttps://stemformulas.com/formulas/determinant/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/determinant/The formula for the determinant of a matrix.Double Angle Trig Identitieshttps://stemformulas.com/formulas/double-angle-trig-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/double-angle-trig-identities/Formulas expanding the trigonometric functions of double angles.Trig Angle Sum/Difference Identitieshttps://stemformulas.com/formulas/trig-angle-sum-difference-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/trig-angle-sum-difference-identities/Formulas for the trigonometric functions of the sum and difference of angles.Vector Projectionhttps://stemformulas.com/formulas/projection-and-perpendicular/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/projection-and-perpendicular/Formulas for the projection of a vector onto another vector and the perpendicular vector left over.Hyperbolic Functionshttps://stemformulas.com/formulas/hyperbolic-trig-functions/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hyperbolic-trig-functions/Definitions of the hyperbolic functionsCross Producthttps://stemformulas.com/formulas/cross-product/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cross-product/The cross product is a common operation in linear algebra and beyond.Dot Producthttps://stemformulas.com/formulas/dot-product/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/dot-product/The dot product is a common operation in linear algebra and beyond.Cosine Lawhttps://stemformulas.com/formulas/cosine-law/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cosine-law/The formula relating the sides and angles of every triangle.Definition of the Derivativehttps://stemformulas.com/formulas/definition-of-the-derivative/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/definition-of-the-derivative/The definition of the derivative.Pythagorean Trig Identitieshttps://stemformulas.com/formulas/pythagorean-trig-identities/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/pythagorean-trig-identities/A few identities involving sine, cosine, and tangent.Cauchy's Integral Theoremhttps://stemformulas.com/formulas/cauchys-integral-theorem/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cauchys-integral-theorem/A theorem used for line integrals of complex functions.Laplace's Equationhttps://stemformulas.com/formulas/laplaces-equation/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/laplaces-equation/Laplace&rsquo;s equation is a common partial differential equationFundamental Theorem of Calculushttps://stemformulas.com/formulas/fundmantal-theorem-of-calculus/Fri, 23 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/fundmantal-theorem-of-calculus/Fundamental Theorem of CalculusPythagorean Theoremhttps://stemformulas.com/formulas/pythagorean-theorem/Thu, 22 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/pythagorean-theorem/Formula relating the lengths of the sides of a right triangleMaclaurin Series for e^xhttps://stemformulas.com/formulas/taylor-expansion-of-e/Thu, 08 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/taylor-expansion-of-e/The Maclaurin series for e^xQuadratic Formulahttps://stemformulas.com/formulas/quadratic-formula/Tue, 06 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/quadratic-formula/The formula for the zeros of a quadratic equationEuler's Identity/Formulahttps://stemformulas.com/formulas/eulers-identity-formula/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/eulers-identity-formula/One of the most amazing formulas in mathematics.Trig functions in terms of ehttps://stemformulas.com/formulas/trig-in-terms-of-e/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/trig-in-terms-of-e/Common trig functions in terms of e \ No newline at end of file diff --git a/public/tags/math/page/1/index.html b/public/tags/math/page/1/index.html new file mode 100644 index 00000000..64156ef8 --- /dev/null +++ b/public/tags/math/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/math/ \ No newline at end of file diff --git a/public/tags/maxwells-equations/index.html b/public/tags/maxwells-equations/index.html new file mode 100644 index 00000000..3b1489de --- /dev/null +++ b/public/tags/maxwells-equations/index.html @@ -0,0 +1,9 @@ +Maxwell's equations · stemformulas + + +
        + +

        Maxwell's equations

        Ampere's Law

        $$\oint \vec{B} \cdot d\vec{l} = \mu_0 I$$

        Gauss's Law

        $$\oiint \vec{E} \cdot d\vec{A} = \frac{Q_{enc}}{\epsilon_0}$$
        \ No newline at end of file diff --git a/public/tags/maxwells-equations/index.xml b/public/tags/maxwells-equations/index.xml new file mode 100644 index 00000000..469f0f96 --- /dev/null +++ b/public/tags/maxwells-equations/index.xml @@ -0,0 +1 @@ +Maxwell's equations on stemformulashttps://stemformulas.com/tags/maxwells-equations/Recent content in Maxwell's equations on stemformulasHugo -- gohugo.ioenWed, 28 Dec 2022 00:00:00 +0000Ampere's Lawhttps://stemformulas.com/formulas/amperes-law/Wed, 28 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/amperes-law/Ampere&rsquo;s law is a formula that describes the magnetic field produced by a current-carrying wire.Gauss's Lawhttps://stemformulas.com/formulas/gauss-law/Wed, 28 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/gauss-law/Gauss&rsquo;s law is a formula that describes the electric field produced by a charge distribution. \ No newline at end of file diff --git a/public/tags/maxwells-equations/page/1/index.html b/public/tags/maxwells-equations/page/1/index.html new file mode 100644 index 00000000..f49025ad --- /dev/null +++ b/public/tags/maxwells-equations/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/maxwells-equations/ \ No newline at end of file diff --git a/public/tags/mechanical-engineering/index.html b/public/tags/mechanical-engineering/index.html new file mode 100644 index 00000000..15e6a7e4 --- /dev/null +++ b/public/tags/mechanical-engineering/index.html @@ -0,0 +1,9 @@ +mechanical engineering · stemformulas + + +
        + +

        mechanical engineering

        Hooke's Law (Modulus of Elasticity)

        $$\frac{F}{A} = E\frac{\Delta L}{L}$$

        Hooke's Law (Spring Constant)

        $$F = -kx$$
        \ No newline at end of file diff --git a/public/tags/mechanical-engineering/index.xml b/public/tags/mechanical-engineering/index.xml new file mode 100644 index 00000000..69089db2 --- /dev/null +++ b/public/tags/mechanical-engineering/index.xml @@ -0,0 +1 @@ +mechanical engineering on stemformulashttps://stemformulas.com/tags/mechanical-engineering/Recent content in mechanical engineering on stemformulasHugo -- gohugo.ioenFri, 30 Dec 2022 00:00:00 +0000Hooke's Law (Modulus of Elasticity)https://stemformulas.com/formulas/hookes-law-stress-strain/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hookes-law-stress-strain/Hooke&rsquo;s Law and Modulus of Elasticity relate the stress and strain of a material.Hooke's Law (Spring Constant)https://stemformulas.com/formulas/hookes-law-springs/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hookes-law-springs/Hooke&rsquo;s Law and the Spring Constant relate the force and displacement of a spring. \ No newline at end of file diff --git a/public/tags/mechanical-engineering/page/1/index.html b/public/tags/mechanical-engineering/page/1/index.html new file mode 100644 index 00000000..cf71e97d --- /dev/null +++ b/public/tags/mechanical-engineering/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/mechanical-engineering/ \ No newline at end of file diff --git a/public/tags/mechanics/index.html b/public/tags/mechanics/index.html new file mode 100644 index 00000000..a3928cb1 --- /dev/null +++ b/public/tags/mechanics/index.html @@ -0,0 +1,9 @@ +mechanics · stemformulas + + +
        + +

        mechanics

        Newton's 2nd Law

        $$F = ma$$
        \ No newline at end of file diff --git a/public/tags/mechanics/index.xml b/public/tags/mechanics/index.xml new file mode 100644 index 00000000..36058739 --- /dev/null +++ b/public/tags/mechanics/index.xml @@ -0,0 +1 @@ +mechanics on stemformulashttps://stemformulas.com/tags/mechanics/Recent content in mechanics on stemformulasHugo -- gohugo.ioenSun, 04 Dec 2022 00:00:00 +0000Newton's 2nd Lawhttps://stemformulas.com/formulas/newtons-2nd-law/Sun, 04 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/newtons-2nd-law/The law that describes the acceleration of an object in Newtonian mechanics. \ No newline at end of file diff --git a/public/tags/mechanics/page/1/index.html b/public/tags/mechanics/page/1/index.html new file mode 100644 index 00000000..de808c19 --- /dev/null +++ b/public/tags/mechanics/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/mechanics/ \ No newline at end of file diff --git a/public/tags/multivariable-calculus/index.html b/public/tags/multivariable-calculus/index.html new file mode 100644 index 00000000..bad6cab3 --- /dev/null +++ b/public/tags/multivariable-calculus/index.html @@ -0,0 +1,9 @@ +multivariable calculus · stemformulas + + +
        + +

        multivariable calculus

        Green's Theorem

        $$\small \oint_C Pdx + Qdy = \iint_D \frac{\partial Q}{\partial x} - \frac{\partial P}{\partial y} dA$$

        Stokes' Theorem

        $$\int_C \vec{F} \cdot d\vec{r} = \iint_S \nabla \times \vec{F} \cdot d\vec{S}$$
        \ No newline at end of file diff --git a/public/tags/multivariable-calculus/index.xml b/public/tags/multivariable-calculus/index.xml new file mode 100644 index 00000000..508b96d4 --- /dev/null +++ b/public/tags/multivariable-calculus/index.xml @@ -0,0 +1 @@ +multivariable calculus on stemformulashttps://stemformulas.com/tags/multivariable-calculus/Recent content in multivariable calculus on stemformulasHugo -- gohugo.ioenFri, 30 Dec 2022 00:00:00 +0000Green's Theoremhttps://stemformulas.com/formulas/greens-theorem/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/greens-theorem/Green&rsquo;s theorem is a formula that describes the relationship between certain closed path line integrals and line integrals.Stokes' Theoremhttps://stemformulas.com/formulas/stokes-theorem/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/stokes-theorem/Stokes&rsquo; theorem describes the relationship between the integral of the curl of a vector field over a surface to the line integral of the same field around the boundary of the surface. \ No newline at end of file diff --git a/public/tags/multivariable-calculus/page/1/index.html b/public/tags/multivariable-calculus/page/1/index.html new file mode 100644 index 00000000..879d3fcf --- /dev/null +++ b/public/tags/multivariable-calculus/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/multivariable-calculus/ \ No newline at end of file diff --git a/public/tags/optics/index.html b/public/tags/optics/index.html new file mode 100644 index 00000000..1b6e1697 --- /dev/null +++ b/public/tags/optics/index.html @@ -0,0 +1,9 @@ +optics · stemformulas + + +
        + +

        optics

        Light Wavelength and Frequency Relationship

        $$c = \lambda f$$

        Photon Energy

        $$E = hf$$
        \ No newline at end of file diff --git a/public/tags/optics/index.xml b/public/tags/optics/index.xml new file mode 100644 index 00000000..61aaa484 --- /dev/null +++ b/public/tags/optics/index.xml @@ -0,0 +1 @@ +optics on stemformulashttps://stemformulas.com/tags/optics/Recent content in optics on stemformulasHugo -- gohugo.ioenFri, 24 Mar 2023 00:00:00 +0000Light Wavelength and Frequency Relationshiphttps://stemformulas.com/formulas/light-wavelength-frequency/Fri, 24 Mar 2023 00:00:00 +0000https://stemformulas.com/formulas/light-wavelength-frequency/The relationship between the wavelength and frequency of light.Photon Energyhttps://stemformulas.com/formulas/energy-of-light/Fri, 24 Mar 2023 00:00:00 +0000https://stemformulas.com/formulas/energy-of-light/The energy of a photon. \ No newline at end of file diff --git a/public/tags/optics/page/1/index.html b/public/tags/optics/page/1/index.html new file mode 100644 index 00000000..2d404d01 --- /dev/null +++ b/public/tags/optics/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/optics/ \ No newline at end of file diff --git a/public/tags/physics/index.html b/public/tags/physics/index.html new file mode 100644 index 00000000..8026aa59 --- /dev/null +++ b/public/tags/physics/index.html @@ -0,0 +1,9 @@ +physics · stemformulas + + +
        \ No newline at end of file diff --git a/public/tags/physics/index.xml b/public/tags/physics/index.xml new file mode 100644 index 00000000..f48c9152 --- /dev/null +++ b/public/tags/physics/index.xml @@ -0,0 +1 @@ +physics on stemformulashttps://stemformulas.com/tags/physics/Recent content in physics on stemformulasHugo -- gohugo.ioenFri, 24 Mar 2023 00:00:00 +0000Light Wavelength and Frequency Relationshiphttps://stemformulas.com/formulas/light-wavelength-frequency/Fri, 24 Mar 2023 00:00:00 +0000https://stemformulas.com/formulas/light-wavelength-frequency/The relationship between the wavelength and frequency of light.Photon Energyhttps://stemformulas.com/formulas/energy-of-light/Fri, 24 Mar 2023 00:00:00 +0000https://stemformulas.com/formulas/energy-of-light/The energy of a photon.Schrodinger's Equationhttps://stemformulas.com/formulas/schrodingers-equation/Wed, 04 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/schrodingers-equation/The Schrodinger equation is a partial differential equation that describes the behavior of a quantum system.Lorentz Transformationshttps://stemformulas.com/formulas/lorentz-transformations/Mon, 02 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/lorentz-transformations/Lorentz transformations are used to transform between inertial frames of reference.Hooke's Law (Modulus of Elasticity)https://stemformulas.com/formulas/hookes-law-stress-strain/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hookes-law-stress-strain/Hooke&rsquo;s Law and Modulus of Elasticity relate the stress and strain of a material.Hooke's Law (Spring Constant)https://stemformulas.com/formulas/hookes-law-springs/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hookes-law-springs/Hooke&rsquo;s Law and the Spring Constant relate the force and displacement of a spring.Ampere's Lawhttps://stemformulas.com/formulas/amperes-law/Wed, 28 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/amperes-law/Ampere&rsquo;s law is a formula that describes the magnetic field produced by a current-carrying wire.Gauss's Lawhttps://stemformulas.com/formulas/gauss-law/Wed, 28 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/gauss-law/Gauss&rsquo;s law is a formula that describes the electric field produced by a charge distribution.Gravitational Potential Energyhttps://stemformulas.com/formulas/gravitational-potential-energy/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/gravitational-potential-energy/The potential energy of an object in a gravitation field.Kinetic Energyhttps://stemformulas.com/formulas/kinetic-energy/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/kinetic-energy/The energy of motion.Laplace's Equationhttps://stemformulas.com/formulas/laplaces-equation/Sat, 24 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/laplaces-equation/Laplace&rsquo;s equation is a common partial differential equationMomentum (Newtonian)https://stemformulas.com/formulas/newtonian-momentum/Thu, 08 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/newtonian-momentum/The momentum of a body in Newtonian mechanicsNewton's 2nd Lawhttps://stemformulas.com/formulas/newtons-2nd-law/Sun, 04 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/newtons-2nd-law/The law that describes the acceleration of an object in Newtonian mechanics.Ohm's Lawhttps://stemformulas.com/formulas/ohms-law/Sun, 27 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/ohms-law/Ohm&rsquo;s law states that the current through a conductor between two points is directly proportional to the voltage across the two points. \ No newline at end of file diff --git a/public/tags/physics/page/1/index.html b/public/tags/physics/page/1/index.html new file mode 100644 index 00000000..279e8cdc --- /dev/null +++ b/public/tags/physics/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/physics/ \ No newline at end of file diff --git a/public/tags/pi/index.html b/public/tags/pi/index.html new file mode 100644 index 00000000..4761f3de --- /dev/null +++ b/public/tags/pi/index.html @@ -0,0 +1,9 @@ +pi · stemformulas + + +
        + +

        pi

        Euler's Identity/Formula

        $$e^{i\pi} = -1$$
        \ No newline at end of file diff --git a/public/tags/pi/index.xml b/public/tags/pi/index.xml new file mode 100644 index 00000000..e8d557ae --- /dev/null +++ b/public/tags/pi/index.xml @@ -0,0 +1 @@ +pi on stemformulashttps://stemformulas.com/tags/pi/Recent content in pi on stemformulasHugo -- gohugo.ioenMon, 28 Nov 2022 00:00:00 +0000Euler's Identity/Formulahttps://stemformulas.com/formulas/eulers-identity-formula/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/eulers-identity-formula/One of the most amazing formulas in mathematics. \ No newline at end of file diff --git a/public/tags/pi/page/1/index.html b/public/tags/pi/page/1/index.html new file mode 100644 index 00000000..482a7bd3 --- /dev/null +++ b/public/tags/pi/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/pi/ \ No newline at end of file diff --git a/public/tags/quantum-mechanics/index.html b/public/tags/quantum-mechanics/index.html new file mode 100644 index 00000000..82354860 --- /dev/null +++ b/public/tags/quantum-mechanics/index.html @@ -0,0 +1,9 @@ +quantum mechanics · stemformulas + + +
        + +

        quantum mechanics

        Schrodinger's Equation

        $$\scriptsize i\hbar\frac{\partial}{\partial t}\Psi(x,t) = \left[-\frac{\hbar^2}{2m}\frac{\partial^2}{\partial x^2} + V(x,t)\right]\Psi(x,t)$$
        \ No newline at end of file diff --git a/public/tags/quantum-mechanics/index.xml b/public/tags/quantum-mechanics/index.xml new file mode 100644 index 00000000..8f34b882 --- /dev/null +++ b/public/tags/quantum-mechanics/index.xml @@ -0,0 +1 @@ +quantum mechanics on stemformulashttps://stemformulas.com/tags/quantum-mechanics/Recent content in quantum mechanics on stemformulasHugo -- gohugo.ioenWed, 04 Jan 2023 00:00:00 +0000Schrodinger's Equationhttps://stemformulas.com/formulas/schrodingers-equation/Wed, 04 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/schrodingers-equation/The Schrodinger equation is a partial differential equation that describes the behavior of a quantum system. \ No newline at end of file diff --git a/public/tags/quantum-mechanics/page/1/index.html b/public/tags/quantum-mechanics/page/1/index.html new file mode 100644 index 00000000..7504e9e1 --- /dev/null +++ b/public/tags/quantum-mechanics/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/quantum-mechanics/ \ No newline at end of file diff --git a/public/tags/relativity/index.html b/public/tags/relativity/index.html new file mode 100644 index 00000000..0fe2a8a4 --- /dev/null +++ b/public/tags/relativity/index.html @@ -0,0 +1,9 @@ +relativity · stemformulas + + +
        + +

        relativity

        Lorentz Transformations

        $$x' \frac{x-vt}{\sqrt{1-v^2/c^2}}$$
        \ No newline at end of file diff --git a/public/tags/relativity/index.xml b/public/tags/relativity/index.xml new file mode 100644 index 00000000..aa705963 --- /dev/null +++ b/public/tags/relativity/index.xml @@ -0,0 +1 @@ +relativity on stemformulashttps://stemformulas.com/tags/relativity/Recent content in relativity on stemformulasHugo -- gohugo.ioenMon, 02 Jan 2023 00:00:00 +0000Lorentz Transformationshttps://stemformulas.com/formulas/lorentz-transformations/Mon, 02 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/lorentz-transformations/Lorentz transformations are used to transform between inertial frames of reference. \ No newline at end of file diff --git a/public/tags/relativity/page/1/index.html b/public/tags/relativity/page/1/index.html new file mode 100644 index 00000000..941ec7d9 --- /dev/null +++ b/public/tags/relativity/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/relativity/ \ No newline at end of file diff --git a/public/tags/sin/index.html b/public/tags/sin/index.html new file mode 100644 index 00000000..ce777582 --- /dev/null +++ b/public/tags/sin/index.html @@ -0,0 +1,9 @@ +sin · stemformulas + + +
        + +

        sin

        Double Angle Trig Identities

        $$sin(2\theta) = 2 \cdot sin(\theta) \cdot cos(\theta)$$

        Trig Angle Sum/Difference Identities

        $$\scriptsize sin(a \pm b) = sin(a) cos(b) \pm cos(a) sin(b)$$
        \ No newline at end of file diff --git a/public/tags/sin/index.xml b/public/tags/sin/index.xml new file mode 100644 index 00000000..86321311 --- /dev/null +++ b/public/tags/sin/index.xml @@ -0,0 +1 @@ +sin on stemformulashttps://stemformulas.com/tags/sin/Recent content in sin on stemformulasHugo -- gohugo.ioenSun, 01 Jan 2023 00:00:00 +0000Double Angle Trig Identitieshttps://stemformulas.com/formulas/double-angle-trig-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/double-angle-trig-identities/Formulas expanding the trigonometric functions of double angles.Trig Angle Sum/Difference Identitieshttps://stemformulas.com/formulas/trig-angle-sum-difference-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/trig-angle-sum-difference-identities/Formulas for the trigonometric functions of the sum and difference of angles. \ No newline at end of file diff --git a/public/tags/sin/page/1/index.html b/public/tags/sin/page/1/index.html new file mode 100644 index 00000000..58166125 --- /dev/null +++ b/public/tags/sin/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/sin/ \ No newline at end of file diff --git a/public/tags/tan/index.html b/public/tags/tan/index.html new file mode 100644 index 00000000..362eaff0 --- /dev/null +++ b/public/tags/tan/index.html @@ -0,0 +1,9 @@ +tan · stemformulas + + +
        + +

        tan

        Double Angle Trig Identities

        $$sin(2\theta) = 2 \cdot sin(\theta) \cdot cos(\theta)$$

        Trig Angle Sum/Difference Identities

        $$\scriptsize sin(a \pm b) = sin(a) cos(b) \pm cos(a) sin(b)$$
        \ No newline at end of file diff --git a/public/tags/tan/index.xml b/public/tags/tan/index.xml new file mode 100644 index 00000000..8c569b4f --- /dev/null +++ b/public/tags/tan/index.xml @@ -0,0 +1 @@ +tan on stemformulashttps://stemformulas.com/tags/tan/Recent content in tan on stemformulasHugo -- gohugo.ioenSun, 01 Jan 2023 00:00:00 +0000Double Angle Trig Identitieshttps://stemformulas.com/formulas/double-angle-trig-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/double-angle-trig-identities/Formulas expanding the trigonometric functions of double angles.Trig Angle Sum/Difference Identitieshttps://stemformulas.com/formulas/trig-angle-sum-difference-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/trig-angle-sum-difference-identities/Formulas for the trigonometric functions of the sum and difference of angles. \ No newline at end of file diff --git a/public/tags/tan/page/1/index.html b/public/tags/tan/page/1/index.html new file mode 100644 index 00000000..c9d7ff14 --- /dev/null +++ b/public/tags/tan/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/tan/ \ No newline at end of file diff --git a/public/tags/trigonometry/index.html b/public/tags/trigonometry/index.html new file mode 100644 index 00000000..229de668 --- /dev/null +++ b/public/tags/trigonometry/index.html @@ -0,0 +1,9 @@ +trigonometry · stemformulas + + +
        \ No newline at end of file diff --git a/public/tags/trigonometry/index.xml b/public/tags/trigonometry/index.xml new file mode 100644 index 00000000..5666087d --- /dev/null +++ b/public/tags/trigonometry/index.xml @@ -0,0 +1 @@ +trigonometry on stemformulashttps://stemformulas.com/tags/trigonometry/Recent content in trigonometry on stemformulasHugo -- gohugo.ioenSun, 01 Jan 2023 00:00:00 +0000Double Angle Trig Identitieshttps://stemformulas.com/formulas/double-angle-trig-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/double-angle-trig-identities/Formulas expanding the trigonometric functions of double angles.Trig Angle Sum/Difference Identitieshttps://stemformulas.com/formulas/trig-angle-sum-difference-identities/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/trig-angle-sum-difference-identities/Formulas for the trigonometric functions of the sum and difference of angles.Hyperbolic Functionshttps://stemformulas.com/formulas/hyperbolic-trig-functions/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/hyperbolic-trig-functions/Definitions of the hyperbolic functionsCosine Lawhttps://stemformulas.com/formulas/cosine-law/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cosine-law/The formula relating the sides and angles of every triangle.Pythagorean Trig Identitieshttps://stemformulas.com/formulas/pythagorean-trig-identities/Mon, 26 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/pythagorean-trig-identities/A few identities involving sine, cosine, and tangent.Pythagorean Theoremhttps://stemformulas.com/formulas/pythagorean-theorem/Thu, 22 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/pythagorean-theorem/Formula relating the lengths of the sides of a right triangleEuler's Identity/Formulahttps://stemformulas.com/formulas/eulers-identity-formula/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/eulers-identity-formula/One of the most amazing formulas in mathematics.Trig functions in terms of ehttps://stemformulas.com/formulas/trig-in-terms-of-e/Mon, 28 Nov 2022 00:00:00 +0000https://stemformulas.com/formulas/trig-in-terms-of-e/Common trig functions in terms of e \ No newline at end of file diff --git a/public/tags/trigonometry/page/1/index.html b/public/tags/trigonometry/page/1/index.html new file mode 100644 index 00000000..d01c6351 --- /dev/null +++ b/public/tags/trigonometry/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/trigonometry/ \ No newline at end of file diff --git a/public/tags/vector-calculus/index.html b/public/tags/vector-calculus/index.html new file mode 100644 index 00000000..ea277a6d --- /dev/null +++ b/public/tags/vector-calculus/index.html @@ -0,0 +1,9 @@ +vector calculus · stemformulas + + +
        \ No newline at end of file diff --git a/public/tags/vector-calculus/index.xml b/public/tags/vector-calculus/index.xml new file mode 100644 index 00000000..f882bcdf --- /dev/null +++ b/public/tags/vector-calculus/index.xml @@ -0,0 +1 @@ +vector calculus on stemformulashttps://stemformulas.com/tags/vector-calculus/Recent content in vector calculus on stemformulasHugo -- gohugo.ioenFri, 30 Dec 2022 00:00:00 +0000Green's Theoremhttps://stemformulas.com/formulas/greens-theorem/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/greens-theorem/Green&rsquo;s theorem is a formula that describes the relationship between certain closed path line integrals and line integrals.Stokes' Theoremhttps://stemformulas.com/formulas/stokes-theorem/Fri, 30 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/stokes-theorem/Stokes&rsquo; theorem describes the relationship between the integral of the curl of a vector field over a surface to the line integral of the same field around the boundary of the surface.Cross Producthttps://stemformulas.com/formulas/cross-product/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/cross-product/The cross product is a common operation in linear algebra and beyond.Divergence Theoremhttps://stemformulas.com/formulas/divergence-theorem/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/divergence-theorem/The divergence theorem is a formula that describes the relationship between the divergence of a vector field and the surface integral of the field over a closed surface.Dot Producthttps://stemformulas.com/formulas/dot-product/Thu, 29 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/dot-product/The dot product is a common operation in linear algebra and beyond. \ No newline at end of file diff --git a/public/tags/vector-calculus/page/1/index.html b/public/tags/vector-calculus/page/1/index.html new file mode 100644 index 00000000..efc18f39 --- /dev/null +++ b/public/tags/vector-calculus/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/vector-calculus/ \ No newline at end of file diff --git a/public/tags/vector/index.html b/public/tags/vector/index.html new file mode 100644 index 00000000..4608adf4 --- /dev/null +++ b/public/tags/vector/index.html @@ -0,0 +1,9 @@ +vector · stemformulas + + +
        + +

        vector

        Vector Projection

        $$proj_{\vec{b}}(\vec{a})=\frac{\vec{a}\cdot\vec{b}}{\|\vec{b}\|^2}\vec{b}=(\vec{a}\cdot\hat{b})\hat{b}$$
        \ No newline at end of file diff --git a/public/tags/vector/index.xml b/public/tags/vector/index.xml new file mode 100644 index 00000000..768ec83e --- /dev/null +++ b/public/tags/vector/index.xml @@ -0,0 +1 @@ +vector on stemformulashttps://stemformulas.com/tags/vector/Recent content in vector on stemformulasHugo -- gohugo.ioenSun, 01 Jan 2023 00:00:00 +0000Vector Projectionhttps://stemformulas.com/formulas/projection-and-perpendicular/Sun, 01 Jan 2023 00:00:00 +0000https://stemformulas.com/formulas/projection-and-perpendicular/Formulas for the projection of a vector onto another vector and the perpendicular vector left over. \ No newline at end of file diff --git a/public/tags/vector/page/1/index.html b/public/tags/vector/page/1/index.html new file mode 100644 index 00000000..37cb52a8 --- /dev/null +++ b/public/tags/vector/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/vector/ \ No newline at end of file diff --git a/public/tags/velocity/index.html b/public/tags/velocity/index.html new file mode 100644 index 00000000..a1e3180f --- /dev/null +++ b/public/tags/velocity/index.html @@ -0,0 +1,9 @@ +velocity · stemformulas + + +
        + +

        velocity

        Momentum (Newtonian)

        $$p = mv$$
        \ No newline at end of file diff --git a/public/tags/velocity/index.xml b/public/tags/velocity/index.xml new file mode 100644 index 00000000..b3649127 --- /dev/null +++ b/public/tags/velocity/index.xml @@ -0,0 +1 @@ +velocity on stemformulashttps://stemformulas.com/tags/velocity/Recent content in velocity on stemformulasHugo -- gohugo.ioenThu, 08 Dec 2022 00:00:00 +0000Momentum (Newtonian)https://stemformulas.com/formulas/newtonian-momentum/Thu, 08 Dec 2022 00:00:00 +0000https://stemformulas.com/formulas/newtonian-momentum/The momentum of a body in Newtonian mechanics \ No newline at end of file diff --git a/public/tags/velocity/page/1/index.html b/public/tags/velocity/page/1/index.html new file mode 100644 index 00000000..759d87c7 --- /dev/null +++ b/public/tags/velocity/page/1/index.html @@ -0,0 +1 @@ +https://stemformulas.com/tags/velocity/ \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg new file mode 100644 index 00000000..77053960 --- /dev/null +++ b/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/window.svg b/public/window.svg new file mode 100644 index 00000000..b2b2a44f --- /dev/null +++ b/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/capture_all_latex_previews.py b/scripts/capture_all_latex_previews.py similarity index 100% rename from capture_all_latex_previews.py rename to scripts/capture_all_latex_previews.py diff --git a/normalize_preview_imgs.py b/scripts/normalize_preview_imgs.py similarity index 100% rename from normalize_preview_imgs.py rename to scripts/normalize_preview_imgs.py diff --git a/streamlit-app.py b/scripts/streamlit-app.py similarity index 100% rename from streamlit-app.py rename to scripts/streamlit-app.py diff --git a/src/app/about/page.module.css b/src/app/about/page.module.css new file mode 100644 index 00000000..56dc4a8c --- /dev/null +++ b/src/app/about/page.module.css @@ -0,0 +1,12 @@ +.title { + font-size: 2.25rem; + font-weight: 800; + line-height: 2.5rem; + color: var(--color-neutral-900); + margin: 0 0 0.67em 0; +} + +.section { + max-width: 65ch; + margin-top: 3rem; +} diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx new file mode 100644 index 00000000..24b9b3dc --- /dev/null +++ b/src/app/about/page.tsx @@ -0,0 +1,85 @@ +import type { Metadata } from "next"; +import styles from "./page.module.css"; + +export const metadata: Metadata = { + title: "about · stemformulas", + description: "About page", +}; + +export default function AboutPage() { + return ( +
        +
        +

        about

        +
        +
        +

        + Stemformulas is a website dedicated to providing a single place to + look for STEM formulas. It has a long way to go to become that, but + the foundation is laid out. +

        +

        + It was made by a few engineering students (lead by{" "} + @linguinelabs) who were + frustrated with the current state of formula searching online. This + frustration lead to the focus of the features of the site, which + include: +

        +
          +
        • + The search bar being in focus on site load, so you can search for a + formula quickly +
        • +
        • + LaTeX being copyable by just clicking on it on any formula's + page +
        • +
        • The / key being used to open the search on any page
        • +
        • + Formula pages having nice preview images when shared on social + media, so people don't even need to visit the site to see the + formula +
        • +
        • The mobile-friendliness of the site
        • +
        +

        Tech Stack

        +

        + This site is open-source on{" "} + + GitHub + + . +

        +

        + It is made with the Next.js framework, and pages are rendered with MDX and KaTeX. +

        +

        + It is hosted on{" "} + GitHub Pages, deployed + conveniently with GitHub Actions. +

        +

        Contributing

        +

        + If you want to add a formula to this site, there are two ways you can + do so. +

        +
          +
        1. + Submit a formula on our submit page. +
        2. +
        3. + Create a pull request directly on the{" "} + + GitHub repo + + . More detailed contribution instructions can be found in the{" "} + + README + + . +
        4. +
        +
        +
        + ); +} diff --git a/src/app/api/search-index/route.ts b/src/app/api/search-index/route.ts new file mode 100644 index 00000000..8565de94 --- /dev/null +++ b/src/app/api/search-index/route.ts @@ -0,0 +1,6 @@ +import { getAllFormulas } from "@/lib/formulas"; + +export async function GET() { + const formulas = getAllFormulas(); + return Response.json(formulas); +} diff --git a/src/app/api/submit/route.ts b/src/app/api/submit/route.ts new file mode 100644 index 00000000..ee840f4a --- /dev/null +++ b/src/app/api/submit/route.ts @@ -0,0 +1,46 @@ +export async function POST(request: Request) { + const body = await request.json(); + const webhookUrl = process.env.DISCORD_WEBHOOK_URL; + + if (!webhookUrl) { + return Response.json({ error: "Webhook not configured" }, { status: 500 }); + } + + const res = await fetch(webhookUrl, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + embeds: [ + { + title: "New stemformulas.com formula suggestion", + color: 0x00ff00, + fields: [ + { name: "Title", value: body.title || "n/a", inline: true }, + { + name: "Description", + value: body.description || "n/a", + inline: true, + }, + { name: "Tags", value: body.tags || "n/a", inline: true }, + { + name: "LaTeX", + value: `\`\`\`latex\n${body.latex || "n/a"}\n\`\`\``, + inline: false, + }, + { + name: "Body", + value: `\`\`\`markdown\n${body.body || "n/a"}\n\`\`\``, + inline: false, + }, + ], + }, + ], + }), + }); + + if (!res.ok) { + return Response.json({ error: "Webhook failed" }, { status: 500 }); + } + + return Response.json({ ok: true }); +} diff --git a/src/app/formulas/[slug]/layout.tsx b/src/app/formulas/[slug]/layout.tsx new file mode 100644 index 00000000..a3e5f7c5 --- /dev/null +++ b/src/app/formulas/[slug]/layout.tsx @@ -0,0 +1,7 @@ +export default function FormulaLayout({ + children, +}: { + children: React.ReactNode; +}) { + return children; +} \ No newline at end of file diff --git a/src/app/formulas/[slug]/page.module.css b/src/app/formulas/[slug]/page.module.css new file mode 100644 index 00000000..9b97b7c7 --- /dev/null +++ b/src/app/formulas/[slug]/page.module.css @@ -0,0 +1,100 @@ +.articleHeader { + max-width: 65ch; + margin-bottom: 0; +} + +.title { + font-size: 2.25rem; + font-weight: 800; + line-height: 2.5rem; + color: var(--color-neutral-900); + margin: 0; + padding: 0; +} + +.articleLayout { + display: flex; + flex-direction: column; + max-width: 100%; + margin-top: 0; +} + +@media (min-width: 1024px) { + .articleLayout { + flex-direction: row; + } +} + +.tocSidebar { + padding: 0; +} + +@media (min-width: 1024px) { + .tocSidebar { + order: 999; + max-width: 20rem; + padding-left: 2rem; + } +} + +.tocSticky { + position: sticky; + top: 2.5rem; + padding-right: 1.25rem; +} + +.tocDetails { + margin-left: -1.25rem; + margin-top: 0; + overflow: hidden; + border-radius: 0.5rem; + padding-left: 1.25rem; +} + +.tocSummary { + display: block; + cursor: pointer; + background: var(--color-neutral-100); + padding: 0.25rem 1.25rem; + font-size: 1.125rem; + font-weight: 600; + color: var(--color-neutral-800); + margin-left: -1.25rem; +} + +@media (min-width: 1024px) { + .tocSummary { + display: none; + } +} + +.tocContent { + border-left: 1px dotted var(--color-neutral-300); + padding: 0.5rem 1.25rem; + margin-left: -1.25rem; +} + +.contentArea { + min-width: 0; + min-height: 0; + max-width: 65ch; + flex-grow: 1; +} + +.tags { + margin: 1rem 0; + font-size: 1rem; + line-height: 1.5rem; + color: var(--color-neutral-500); +} + +.tagsInner { + margin: 0.5rem 0; + font-size: 0.75rem; + color: var(--color-neutral-500); +} + +.articleFooter { + padding-top: 2rem; + max-width: 65ch; +} diff --git a/src/app/formulas/[slug]/page.tsx b/src/app/formulas/[slug]/page.tsx new file mode 100644 index 00000000..8a2778c7 --- /dev/null +++ b/src/app/formulas/[slug]/page.tsx @@ -0,0 +1,161 @@ +import { notFound } from "next/navigation"; +import fs from "fs"; +import path from "path"; +import { compileMDX } from "next-mdx-remote/rsc"; +import { rehypeRestoreMath } from "@/lib/rehype-restore-math"; +import Link from "next/link"; +import type { Metadata } from "next"; +import styles from "./page.module.css"; +import KatexContent from "@/components/KatexContent"; +import CopyKatex from "@/components/CopyKatex"; + +const GITHUB_RAW = + "https://github.com/stemformulas/stemformulas.github.io/raw/main/content/formulas"; + +async function getFormula(slug: string) { + const filePath = path.join( + process.cwd(), + "src/content/formulas", + `${slug}.mdx` + ); + + if (!fs.existsSync(filePath)) return null; + + const source = fs.readFileSync(filePath, "utf-8"); + + const safeSource = source.replace( + /(\$\$[\s\S]*?\$\$|\$[^$\n]+?\$)/g, + (match) => match.replace(/[{}]/g, (ch) => (ch === "{" ? "\\{" : "\\}")) + ); + const contentDir = path.join(process.cwd(), "src/content/formulas"); + + function resolveImage(src: string | undefined) { + if (!src || src.startsWith("http")) return src; + const imgPath = path.join(contentDir, src); + if (!fs.existsSync(imgPath)) return src; + const buf = fs.readFileSync(imgPath); + const ext = path.extname(src).slice(1) || "png"; + return `data:image/${ext};base64,${buf.toString("base64")}`; + } + + const { content, frontmatter } = await compileMDX<{ + title: string; + description: string; + latex: string; + tags: string[]; + }>({ + source: safeSource, + options: { + parseFrontmatter: true, + mdxOptions: { + rehypePlugins: [rehypeRestoreMath], + }, + }, + components: { + img: ({ src, alt, ...rest }: React.ImgHTMLAttributes) => ( + // eslint-disable-next-line @next/next/no-img-element + {alt + ), + }, + }); + + return { content, frontmatter }; +} + +export async function generateStaticParams() { + const formulasDir = path.join(process.cwd(), "src/content/formulas"); + const files = fs.readdirSync(formulasDir); + + return files + .filter((file) => file.endsWith(".mdx")) + .map((file) => ({ + slug: file.replace(".mdx", ""), + })); +} + +export async function generateMetadata({ + params, +}: { + params: Promise<{ slug: string }>; +}): Promise { + const { slug } = await params; + const formula = await getFormula(slug); + if (!formula) return {}; + + return { + title: `${formula.frontmatter.title} · stemformulas`, + description: formula.frontmatter.description, + openGraph: { + title: `${formula.frontmatter.title} · stemformulas`, + description: formula.frontmatter.description, + type: "website", + images: [ + { + url: `${GITHUB_RAW}/${slug}/preview.png`, + width: 1500, + height: 600, + }, + ], + }, + twitter: { + card: "summary_large_image", + title: `${formula.frontmatter.title} · stemformulas`, + description: formula.frontmatter.description, + images: [`${GITHUB_RAW}/${slug}/preview.png`], + }, + }; +} + +export default async function FormulaPage({ + params, +}: { + params: Promise<{ slug: string }>; +}) { + const { slug } = await params; + const formula = await getFormula(slug); + + if (!formula) notFound(); + + return ( +
        + +
        +

        {formula.frontmatter.title}

        + {formula.frontmatter.tags && formula.frontmatter.tags.length > 0 && ( +
        +
        + {formula.frontmatter.tags.map((tag) => ( + + {tag} + + ))} +
        +
        + )} +
        + +
        +
        +
        +
        + + Table of Contents + +
        + {/* TOC will be populated later */} +
        +
        +
        +
        + +
        + {formula.content} +
        +
        + +
        + {/* Prev/next navigation will go here */} +
        +
        + ); +} diff --git a/src/app/formulas/page.module.css b/src/app/formulas/page.module.css new file mode 100644 index 00000000..aafc4207 --- /dev/null +++ b/src/app/formulas/page.module.css @@ -0,0 +1,73 @@ +.heading { + font-size: 2.25rem; + font-weight: 800; + margin: 0; +} + +.subtitle { + margin-top: 0.5rem; + font-size: 0.875rem; + color: var(--color-neutral-900); +} + +.grid { + margin-top: 1.5rem; +} + +.card { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 0.125rem; + border: 1px solid darkgray; + border-radius: 12px; + padding: 0.5rem 0.75rem; + overflow: hidden; + text-decoration: none; + color: inherit; + max-width: 100%; +} + +.card:hover { + background: var(--color-primary-100); +} + +.cardTitle { + font-size: 1.125rem; + font-weight: 600; + text-align: center; + color: var(--color-neutral-800); +} + +.cardLatex { + font-size: 0.8125rem; + color: var(--color-neutral-500); +} + +.pagination { + display: flex; + gap: 0.25rem; + margin-top: 2rem; +} + +.pageLink { + display: block; + min-width: 1.8rem; + text-align: center; + padding: 0.25rem 0.5rem; + border-radius: 0.25rem; + text-decoration: none; + color: inherit; +} + +.pageLink:hover { + background: var(--color-primary-600); + color: #fff; +} + +.pageActive { + font-weight: 600; + background: var(--color-primary-200); + color: var(--color-primary-700); +} diff --git a/src/app/formulas/page.tsx b/src/app/formulas/page.tsx new file mode 100644 index 00000000..0459dc8c --- /dev/null +++ b/src/app/formulas/page.tsx @@ -0,0 +1,103 @@ +import fs from "fs"; +import path from "path"; +import Link from "next/link"; +import katex from "katex"; +import matter from "gray-matter"; +import styles from "./page.module.css"; + +const PER_PAGE = 50; + +interface FormulaMeta { + slug: string; + title: string; + latex: string; +} + +function getFormulas(): FormulaMeta[] { + const dir = path.join(process.cwd(), "src/content/formulas"); + const files = fs.readdirSync(dir).filter((f) => f.endsWith(".mdx")); + + return files.map((file) => { + const slug = file.replace(".mdx", ""); + const source = fs.readFileSync(path.join(dir, file), "utf-8"); + const { data } = matter(source); + return { + slug, + title: data.title || slug, + latex: data.latex || "", + }; + }); +} + +export default async function FormulasPage({ + searchParams, +}: { + searchParams: Promise<{ page?: string }>; +}) { + const { page: pageParam } = await searchParams; + const currentPage = Math.max(1, parseInt(pageParam || "1") || 1); + const formulas = getFormulas(); + const totalPages = Math.ceil(formulas.length / PER_PAGE); + const paginated = formulas.slice( + (currentPage - 1) * PER_PAGE, + currentPage * PER_PAGE + ); + + return ( + <> +
        +

        formulas

        +
        + +

        + Click on any formula to visit its page for more details. +

        + +
        + {paginated.map((formula) => { + let renderedLatex = ""; + if (formula.latex) { + try { + renderedLatex = katex.renderToString(formula.latex, { + throwOnError: false, + displayMode: true, + }); + } catch { + renderedLatex = formula.latex; + } + } + + return ( + + {formula.title} + {renderedLatex && ( +
        + )} + + ); + })} +
        + + {totalPages > 1 && ( + + )} + + ); +} diff --git a/src/app/globals.css b/src/app/globals.css new file mode 100644 index 00000000..b49ca4b5 --- /dev/null +++ b/src/app/globals.css @@ -0,0 +1,439 @@ +:root { + --color-neutral-50: #f9fafb; + --color-neutral-100: #f3f4f6; + --color-neutral-200: #e5e7eb; + --color-neutral-300: #d1d5db; + --color-neutral-400: #9ca3af; + --color-neutral-500: #6b7280; + --color-neutral-600: #4b5563; + --color-neutral-700: #374151; + --color-neutral-800: #1f2937; + --color-neutral-900: #111827; + --color-primary-100: #f1f5f9; + --color-primary-500: #64748b; + --color-primary-600: #475569; + --color-primary-700: #334155; +} + +html { + scroll-behavior: smooth; + height: 100%; +} + +body { + min-height: 100%; + display: flex; + flex-direction: column; + margin: 0 auto; + padding: 0 1.5rem; + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", + Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif; + font-size: 1rem; + line-height: 1.75rem; + color: var(--color-neutral-900); + background: #fff; + max-width: 80rem; + -webkit-font-smoothing: antialiased; +} + +@media (min-width: 640px) { + body { + padding: 0 3.5rem; + } +} + +@media (min-width: 768px) { + body { + padding: 0 6rem; + } +} + +@media (min-width: 1024px) { + body { + padding: 0 8rem; + } +} + +* { + box-sizing: border-box; +} + +article, +header, +section { + margin: 0; +} + +a { + color: inherit; + text-decoration: none; +} + +/* ── Header ── */ +.site-header { + padding: 1.5rem 0; + font-weight: 600; + font-size: 1.125rem; +} + +@media (min-width: 640px) { + .site-header { + padding: 2.5rem 0; + } +} + +.site-header nav { + display: flex; + align-items: flex-start; + justify-content: space-between; +} + +@media (min-width: 640px) { + .site-header nav { + align-items: center; + } +} + +.site-header .brand { + display: flex; + flex-direction: row; + align-items: center; +} + +.site-header .brand a { + margin-right: 0.5rem; +} + +.site-header .brand img { + width: 32px; + height: 32px; + max-height: 10rem; + max-width: 10rem; + object-fit: scale-down; + object-position: left; +} + +.site-header .brand .site-title { + text-decoration-color: var(--color-primary-500); +} + +.site-header .brand .site-title:hover { + text-decoration: underline; + text-decoration-thickness: 2px; + text-underline-offset: 2px; +} + +.site-header .nav-links { + list-style: none; + display: flex; + flex-direction: column; + text-align: right; + padding: 0; + margin: 0; +} + +@media (min-width: 640px) { + .site-header .nav-links { + flex-direction: row; + } +} + +.site-header .nav-links li { + margin-bottom: 0.25rem; +} + +@media (min-width: 640px) { + .site-header .nav-links li { + margin-bottom: 0; + margin-right: 1.75rem; + } + .site-header .nav-links li:last-child { + margin-right: 0.125rem; + } +} + +.site-header .nav-links a { + text-decoration-color: var(--color-primary-500); +} + +.site-header .nav-links a:hover { + text-decoration: underline; + text-decoration-thickness: 2px; + text-underline-offset: 2px; +} + +/* ── Search button in header ── */ +.search-toggle { + background: none; + border: none; + cursor: pointer; + font-size: 1.125rem; + color: inherit; + padding: 0; +} + +.search-toggle:hover { + color: var(--color-primary-600); +} + +/* ── Main content area ── */ +.main-content { + flex-grow: 1; +} + +/* ── Footer ── */ +.site-footer { + padding: 2.5rem 0; +} + +/* ── Prose (article content) ── */ +.prose { + max-width: 65ch; +} + +.prose h2 { + font-size: 1.5em; + font-weight: 700; + line-height: 1.3333; + margin-top: 2em; + margin-bottom: 1em; +} + +.prose h3 { + font-size: 1.25em; + font-weight: 600; + line-height: 1.6; + margin-top: 1.6em; + margin-bottom: 0.6em; +} + +.prose > :first-child { + margin-top: 0; +} + +.prose > :last-child { + margin-bottom: 0; +} + +.prose p { + margin-top: 1.25em; + margin-bottom: 1.25em; +} + +.prose ul, +.prose ol { + padding-left: 1.625em; + margin-top: 1.25em; + margin-bottom: 1.25em; +} + +.prose ul { + list-style-type: disc; +} + +.prose ol { + list-style-type: decimal; +} + +.prose li { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +.prose li > p { + margin: 0; +} + +.prose a { + color: var(--color-primary-600); + text-decoration: underline; +} + +.prose a:hover { + color: var(--color-neutral-900); +} + +.prose img { + max-width: 100%; + height: auto; + border-radius: 0.375rem; + margin: 0 auto; + display: block; +} + +.prose img[alt="diagram"] { + width: 400px; +} + +.prose iframe { + max-width: 100%; + border-radius: 0.375rem; +} + +.prose blockquote { + border-left: 4px solid var(--color-neutral-300); + padding-left: 1rem; + color: var(--color-neutral-500); + margin: 1rem 0; +} + +.prose code { + font-size: 0.875em; + background: var(--color-neutral-100); + padding: 0.125rem 0.375rem; + border-radius: 0.25rem; +} + +.prose pre { + background: var(--color-neutral-800); + color: var(--color-neutral-100); + padding: 1rem; + border-radius: 0.375rem; + overflow-x: auto; + margin-bottom: 1rem; +} + +.prose pre code { + background: none; + padding: 0; + color: inherit; +} + +/* ── Tags ── */ +.tag { + display: inline-block; + font-size: 0.75rem; + line-height: 1rem; + color: var(--color-neutral-500); + border: 1px solid var(--color-neutral-200); + border-radius: 0.375rem; + padding: 0.0625rem 0.5rem; + margin-right: 0.25rem; +} + +.tag:hover { + border-color: #000; + color: var(--color-primary-700); +} + +/* ── Table of Contents ── */ +.toc nav ul { + list-style: none; + padding: 0; +} + +.toc nav li { + margin-bottom: 0.25rem; +} + +.toc nav a { + font-size: 0.875rem; + color: var(--color-neutral-500); +} + +.toc nav a:hover { + color: var(--color-primary-600); +} + +/* ── Prev/Next links ── */ +.article-nav { + padding-top: 2rem; +} + +.article-nav hr { + border: none; + border-top: 1px dotted var(--color-neutral-300); +} + +.article-nav .nav-links-row { + display: flex; + justify-content: space-between; + padding-top: 0.75rem; +} + +.article-nav .nav-link { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.article-nav .nav-link:hover span:last-child { + text-decoration: underline; + text-decoration-color: var(--color-primary-500); +} + +.article-nav .nav-arrow { + color: var(--color-neutral-700); + transition: transform 0.2s; +} + +.article-nav .nav-link:hover .nav-arrow { + color: var(--color-primary-600); +} + +.article-nav .nav-link:hover .nav-arrow-prev { + transform: translateX(-2px); +} + +.article-nav .nav-link:hover .nav-arrow-next { + transform: translateX(2px); +} + +/* ── KaTeX ── */ +.katex-display { + margin: 1em 0; + font-size: 1.21em; +} + +.katex-display > .katex { + font-size: 1.21em; +} + +.katex-html { + color: #000; +} + +.katex { + padding-left: 0 !important; + line-height: normal; +} + +.katex-tooltip { + position: fixed; + background: rgba(0, 0, 0, 0.8); + color: #fff; + padding: 5px 10px; + font-size: 12px; + border-radius: 4px; + pointer-events: none; + z-index: 1000; + transition: opacity 0.5s ease-in-out; +} + +.katex-tooltip.hide { + opacity: 0; +} + +.katex-display, +.katex-display * { + line-height: normal; +} + +/* formula grid */ +.grid-container { + display: grid; + grid-template-columns: 1fr; + gap: 12px; +} + +@media (min-width: 640px) { + .grid-container { + grid-template-columns: 1fr 1fr; + } +} + +@media (min-width: 1024px) { + .grid-container { + grid-template-columns: 1fr 1fr 1fr; + } +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 00000000..856f04f8 --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,65 @@ +import type { Metadata } from "next"; +import "./globals.css"; +import "katex/dist/katex.min.css"; +import Header from "@/components/Header"; +import { GoogleAnalytics } from "@next/third-parties/google"; + +export const metadata: Metadata = { + title: "stemformulas", + description: + "Stemformulas is the eventual home of every STEM formula in the world.", + openGraph: { + title: "stemformulas", + description: "All of the STEM formulas, eventually", + url: "https://stemformulas.com", + siteName: "stemformulas.com", + type: "website", + images: [ + { + url: "https://github.com/stemformulas/stemformulas.github.io/raw/main/equalsicon-wide.png", + width: 1500, + height: 600, + }, + ], + }, + twitter: { + card: "summary_large_image", + title: "stemformulas", + description: "All of the STEM formulas, eventually", + images: [ + "https://github.com/stemformulas/stemformulas.github.io/raw/main/equalsicon-wide.png", + ], + site: "stemformulas.com", + }, + icons: { + icon: [ + { url: "/favicon-32x32.png", sizes: "32x32", type: "image/png" }, + { url: "/favicon-16x16.png", sizes: "16x16", type: "image/png" }, + ], + apple: "/apple-touch-icon.png", + other: [{ url: "/favicon.ico" }], + }, +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + +
        + +
        {children}
        + +
        +
        +
        +
        +
        + + + + ); +} diff --git a/src/app/page.module.css b/src/app/page.module.css new file mode 100644 index 00000000..643fe27d --- /dev/null +++ b/src/app/page.module.css @@ -0,0 +1,142 @@ +.page { + --background: #fafafa; + --foreground: #fff; + + --text-primary: #000; + --text-secondary: #666; + + --button-primary-hover: #383838; + --button-secondary-hover: #f2f2f2; + --button-secondary-border: #ebebeb; + + display: flex; + flex: 1; + flex-direction: column; + align-items: center; + justify-content: center; + font-family: var(--font-geist-sans); + background-color: var(--background); +} + +.main { + display: flex; + flex: 1; + width: 100%; + max-width: 800px; + flex-direction: column; + align-items: flex-start; + justify-content: space-between; + background-color: var(--foreground); + padding: 120px 60px; +} + +.intro { + display: flex; + flex-direction: column; + align-items: flex-start; + text-align: left; + gap: 24px; +} + +.intro h1 { + max-width: 320px; + font-size: 40px; + font-weight: 600; + line-height: 48px; + letter-spacing: -2.4px; + text-wrap: balance; + color: var(--text-primary); +} + +.intro p { + max-width: 440px; + font-size: 18px; + line-height: 32px; + text-wrap: balance; + color: var(--text-secondary); +} + +.intro a { + font-weight: 500; + color: var(--text-primary); +} + +.ctas { + display: flex; + flex-direction: row; + width: 100%; + max-width: 440px; + gap: 16px; + font-size: 14px; +} + +.ctas a { + display: flex; + justify-content: center; + align-items: center; + height: 40px; + padding: 0 16px; + border-radius: 128px; + border: 1px solid transparent; + transition: 0.2s; + cursor: pointer; + width: fit-content; + font-weight: 500; +} + +a.primary { + background: var(--text-primary); + color: var(--background); + gap: 8px; +} + +a.secondary { + border-color: var(--button-secondary-border); +} + +/* Enable hover only on non-touch devices */ +@media (hover: hover) and (pointer: fine) { + a.primary:hover { + background: var(--button-primary-hover); + border-color: transparent; + } + + a.secondary:hover { + background: var(--button-secondary-hover); + border-color: transparent; + } +} + +@media (max-width: 600px) { + .main { + padding: 48px 24px; + } + + .intro { + gap: 16px; + } + + .intro h1 { + font-size: 32px; + line-height: 40px; + letter-spacing: -1.92px; + } +} + +@media (prefers-color-scheme: dark) { + .logo { + filter: invert(); + } + + .page { + --background: #000; + --foreground: #000; + + --text-primary: #ededed; + --text-secondary: #999; + + --button-primary-hover: #ccc; + --button-secondary-hover: #1a1a1a; + --button-secondary-border: #1a1a1a; + } +} diff --git a/src/app/page.tsx b/src/app/page.tsx new file mode 100644 index 00000000..0c0284d7 --- /dev/null +++ b/src/app/page.tsx @@ -0,0 +1,5 @@ +import HomeSearch from "@/components/HomeSearch"; + +export default function Home() { + return ; +} diff --git a/src/app/submit/page.module.css b/src/app/submit/page.module.css new file mode 100644 index 00000000..a448da3f --- /dev/null +++ b/src/app/submit/page.module.css @@ -0,0 +1,112 @@ +.wrapper { + max-width: 48rem; + margin: 0 auto; + padding: 0 1rem; +} + +.header { + max-width: 65ch; + margin-bottom: 1.5rem; +} + +.title { + font-size: 2.25rem; + font-weight: 800; + line-height: 2.5rem; + color: var(--color-neutral-900); + margin: 0 0 0.5rem 0; +} + +.subtitle { + font-size: 1.125rem; + color: var(--color-neutral-500); + margin: 0 0 1.5rem 0; +} + +.formSection { + background: #fff; + border: 1px solid var(--color-neutral-200); + border-radius: 0.375rem; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); +} + +.form { + padding: 1.25rem; + display: flex; + flex-direction: column; +} + +.label { + display: block; + font-size: 1.125rem; + font-weight: 500; + color: var(--color-neutral-700); + margin-bottom: 0.5rem; +} + +.input, +.textarea { + width: 100%; + padding: 0.5rem 1rem; + margin-bottom: 1.5rem; + border-radius: 0.375rem; + border: 1px solid var(--color-neutral-200); + font-family: inherit; + font-size: 1rem; + outline: none; + background: #fff; + color: var(--color-neutral-900); +} + +.input:focus, +.textarea:focus { + ring: 2px solid var(--color-primary-500); + border-color: var(--color-primary-500); +} + +.textarea { + resize: vertical; +} + +.btn { + padding: 0.5rem 1.5rem; + font-size: 1rem; + font-weight: 600; + color: #fff; + background: var(--color-neutral-700); + border: none; + border-radius: 0.375rem; + cursor: pointer; + align-self: flex-start; +} + +.btn:hover { + background: var(--color-primary-600); +} + +.btn:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.previewSection { + max-width: 65ch; + margin-top: 2rem; +} + +.previewHeading { + font-size: 1.5rem; + font-weight: 700; + margin-bottom: 1.5rem; + color: var(--color-neutral-900); +} + +.previewContent { + background: #fff; + border: 1px solid var(--color-neutral-200); + border-radius: 0.5rem; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); + padding: 3rem; + padding-top: 5rem; + padding-bottom: 2rem; +} diff --git a/src/app/submit/page.tsx b/src/app/submit/page.tsx new file mode 100644 index 00000000..e223f07b --- /dev/null +++ b/src/app/submit/page.tsx @@ -0,0 +1,191 @@ +"use client"; + +import { useRef, useState } from "react"; +import { marked } from "marked"; +import DOMPurify from "dompurify"; +import katex from "katex"; +import styles from "./page.module.css"; + +export default function SubmitPage() { + const [title, setTitle] = useState("Gaussian/Normal Distribution"); + const [description, setDescription] = useState("The formula for the normal distribution."); + const [tags, setTags] = useState("math, statistics, probability theory"); + const [latex, setLatex] = useState( + "f(x) = \\frac{1}{\\sigma \\sqrt{2\\pi}} e^{-\\frac{1}{2}\\left(\\frac{x-\\mu}{\\sigma}\\right)^2}" + ); + const [body, setBody] = useState( + "The formula for the normal distribution as a function of the variable x is:\n$$ \\frac{1}{\\sigma \\sqrt{2\\pi}} e^{-\\frac{1}{2}\\left(\\frac{x-\\mu}{\\sigma}\\right)^2} $$\n\nWhere\n\n* $e$ is Euler's number,\n* $\\mu$ is the mean of the distribution, and\n* $\\sigma$ is the standard deviation of the distribution.\n\n## Sources\n\n- [Wikipedia](https://en.wikipedia.org/wiki/Normal_distribution)\n- [Britannica](https://www.britannica.com/topic/uniform-distribution-statistics)" + ); + const [showPreview, setShowPreview] = useState(false); + const [sending, setSending] = useState(false); + const previewRef = useRef(null); + + const tagList = tags.split(",").map((t) => t.trim()).filter(Boolean); + + function renderPreview() { + const sanitized = DOMPurify.sanitize(marked.parse(body) as string); + const tagsHTML = tagList + .map((tag) => `${tag}`) + .join(" "); + + const html = ` +
        +
        +

        ${DOMPurify.sanitize(title)}

        +
        ${tagsHTML}
        +
        +
        ${sanitized}
        +
        + `; + + setShowPreview(true); + + requestAnimationFrame(() => { + if (previewRef.current) { + previewRef.current.innerHTML = html; + const el = previewRef.current; + // Replace $$...$$ and $...$ with rendered KaTeX + const replaced = el.innerHTML.replace( + /\$\$([\s\S]+?)\$\$/g, + (_, math) => katex.renderToString(math.trim(), { displayMode: true, throwOnError: false }) + ).replace( + /\$([^$\n]+?)\$/g, + (_, math) => katex.renderToString(math.trim(), { displayMode: false, throwOnError: false }) + ); + el.innerHTML = replaced; + } + }); + } + + async function handleSubmit() { + try { + setSending(true); + const lastSubmit = localStorage.getItem("lastSubmissionTime"); + if (lastSubmit) { + const elapsed = Date.now() - parseInt(lastSubmit); + if (elapsed < 120000) { + alert( + `Please wait ${Math.ceil((120000 - elapsed) / 1000)} seconds before submitting again.` + ); + setSending(false); + return; + } + } + + const res = await fetch("/api/submit", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ title, description, tags, latex, body }), + }); + + if (res.ok) { + localStorage.setItem("lastSubmissionTime", String(Date.now())); + alert("Submission sent successfully. Thank you!"); + } else { + alert("Failed to send submission. Please try again."); + } + } catch { + alert("An error occurred. Please try again."); + } finally { + setSending(false); + } + } + + return ( +
        +
        +

        submit a formula

        +

        + Replace the example fields below, preview your submission, and then + submit! +

        +
        + +
        +
        { + e.preventDefault(); + renderPreview(); + }} + > + + setTitle(e.target.value)} + required + /> + + + setDescription(e.target.value)} + required + /> + + + setTags(e.target.value)} + required + /> + + +