diff --git a/.bun-version b/.bun-version new file mode 100644 index 00000000..d2d61a7e --- /dev/null +++ b/.bun-version @@ -0,0 +1 @@ +1.2.2 \ No newline at end of file diff --git a/.dockerignore b/.dockerignore index 47896a63..75ee715b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,6 @@ node_modules -coverage -test +.git +.gitignore +.next +out +bun.l* \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..37224185 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["next/core-web-vitals", "next/typescript"] +} diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml index 1d503bdf..4b2a4e85 100644 --- a/.github/workflows/branch.yml +++ b/.github/workflows/branch.yml @@ -43,9 +43,6 @@ jobs: with: fetch-depth: 2 - - name: Install Cosign - uses: sigstore/cosign-installer@v3 - - name: Install Node.js uses: actions/setup-node@v4 with: @@ -55,19 +52,18 @@ jobs: - name: Install Node.js uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4 with: - node-version-file: package.json + node-version-file: .nvmrc token: ${{ secrets.GITHUB_TOKEN }} - name: Setup caches uses: namespacelabs/nscloud-cache-action@1d016dd6d40428050a16a6271307888386cc0bec # v1 with: path: | - .turbo ~/.bun/install/cache - uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2 with: - bun-version-file: package.json + bun-version-file: .bun-version - name: Login to GitHub Container Registry uses: docker/login-action@v3 @@ -106,8 +102,4 @@ jobs: - name: Build Docker container run: | - bun run docker - - - name: Cosign Docker container - run: | - bun run cosign + bun run docker \ No newline at end of file diff --git a/.gitignore b/.gitignore index b2d6de30..55a12ae7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,20 +1,28 @@ -# Dependencies +# deps /node_modules -# Production -/build +# generated content +.contentlayer +.content-collections +.source -# Generated files -.docusaurus -.cache-loader +# test & build +/coverage +/.next/ +/out/ +/build +*.tsbuildinfo -# Misc +# misc .DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - +*.pem +/.pnp +.pnp.js npm-debug.log* yarn-debug.log* yarn-error.log* + +# others +.env*.local +.vercel +next-env.d.ts \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..adb55585 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22.14.0 \ No newline at end of file diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 9847402b..00000000 --- a/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "printWidth": 80, - "tabWidth": 2, - "useTabs": false, - "semi": true, - "singleQuote": true, - "trailingComma": "none", - "bracketSpacing": true, - "arrowParens": "avoid", - "plugins": ["prettier-plugin-sh"] -} diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 70f8a00a..00000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "recommendations": [ - "firsttris.vscode-jest-runner", - "mikehanson.auto-barrel", - "apollographql.vscode-apollo", - "ms-azuretools.vscode-docker", - "mikestead.dotenv", - "editorconfig.editorconfig", - "usernamehw.errorlens", - "dbaeumer.vscode-eslint", - "codezombiech.gitignore", - "qezhu.gitlink", - "nhoizey.gremlins", - "tim-koehler.helm-intellisense", - "yoavbls.pretty-ts-errors", - "stivo.tailwind-fold", - "statelyai.stately-vscode", - "dksedgwick.xstviz", - "esbenp.prettier-vscode", - "dracula-theme.theme-dracula", - "miguelsolorio.fluent-icons", - "github.vscode-github-actions", - "github.codespaces", - "github.vscode-pull-request-github", - "quicktype.quicktype", - "ms-vscode-remote.remote-ssh-edit", - "juanblanco.solidity", - "ashinzekene.nestjs", - "vscode-icons-team.vscode-icons", - "redhat.vscode-yaml", - "stringham.copy-with-imports", - "adpyke.codesnap", - "tilt-dev.tiltfile", - "shardulm94.trailing-spaces", - "rangav.vscode-thunder-client", - "bradlc.vscode-tailwindcss", - "mattpocock.ts-error-translator" - ] -} diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 1d472d72..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "API", - "port": 9229, - "request": "attach", - "skipFiles": ["/**"], - "type": "node" - }, - { - "name": "Services Firefly CLI", - "port": 9235, - "request": "attach", - "skipFiles": ["/**"], - "type": "node" - }, - { - "name": "Services IDE CLI", - "port": 9236, - "request": "attach", - "skipFiles": ["/**"], - "type": "node" - }, - { - "name": "Services TX Signer", - "port": 9237, - "request": "attach", - "skipFiles": ["/**"], - "type": "node" - }, - { - "name": "Services Vault CLI", - "port": 9238, - "request": "attach", - "skipFiles": ["/**"], - "type": "node" - } - ] -} diff --git a/.vscode/settings.json b/.vscode/settings.json index 1983a3e8..c8696693 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,100 +1,85 @@ { - "editor.inlineSuggest.enabled": true, - "workbench.productIconTheme": "fluent-icons", - "workbench.iconTheme": "vscode-icons", - "diffEditor.ignoreTrimWhitespace": false, - "editor.tabSize": 2, - "git.enableSmartCommit": true, - "editor.defaultFormatter": "esbenp.prettier-vscode", + "typescript.tsdk": "node_modules/typescript/lib", + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true, + "editor.formatOnPaste": true, + "emmet.showExpandedAbbreviation": "never", "editor.codeActionsOnSave": { - "source.addMissingImports": "explicit", - "source.organizeImports": "explicit", - "source.fixAll.eslint": "explicit" + "quickfix.biome": "explicit", + "source.organizeImports.biome": "explicit" }, - "eslint.execArgv": [ - "--max-old-space-size=8192", - "--max-semi-space-size=8192" - ], - "git.confirmSync": false, - "git.autofetch": true, - "explorer.confirmDelete": false, - "explorer.confirmDragAndDrop": false, - "javascript.updateImportsOnFileMove.enabled": "never", - "workbench.tree.renderIndentGuides": "always", - "workbench.colorCustomizations": { - "tree.indentGuidesStroke": "#05ef3c9c" + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[json]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[javascript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[jsonc]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "biomejs.biome" }, - "solidity.compilerOptimization": 2000, - "solidity.compileUsingRemoteVersion": "v0.8.20+commit.a1b79de6", + "[solidity]": { + "editor.defaultFormatter": "NomicFoundation.hardhat-solidity" + }, + "solidity.formatter": "forge", + "solidity.telemetry": false, + "editor.stickyScroll.enabled": true, + "editor.tabSize": 2, "errorLens.fontStyleItalic": true, - "editor.fontWeight": "normal", - "editor.minimap.enabled": false, - "redhat.telemetry.enabled": false, - "security.promptForLocalFileProtocolHandling": false, - "workbench.editor.enablePreview": false, "explorer.fileNesting.enabled": true, "explorer.fileNesting.patterns": { - "*.ts": "${capture}.js, ${capture}.typegen.ts, ${capture}.spec.ts", + "*.cts": "${capture}.typegen.ts", "*.js": "${capture}.js.map, ${capture}.min.js, ${capture}.d.ts", "*.jsx": "${capture}.js", + "*.mts": "${capture}.typegen.ts", + "*.ts": "${capture}.js, ${capture}.typegen.ts, ${capture}.spec.ts, ${capture}.test.ts", "*.tsx": "${capture}.ts, ${capture}.typegen.ts", - "tsconfig.json": "tsconfig.*.json", "package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb, bun.lock", - "*.mts": "${capture}.typegen.ts", - "*.cts": "${capture}.typegen.ts" - }, - "typescript.tsserver.maxTsServerMemory": 16384, - "workbench.activityBar.orientation": "vertical", - "typescript.disableAutomaticTypeAcquisition": true, - "editor.formatOnSave": true, - "editor.cursorBlinking": "smooth", - "editor.cursorSmoothCaretAnimation": "on", - "editor.stickyScroll.enabled": true, - "githubPullRequests.pullBranch": "never", - "autoBarrel.ignoreFilePathContainingAnyOf": ".spec,.test,pulumi-templates/route,pulumi-templates/scc,.d.ts,module-definition,pulumi-resources/route,pulumi-resources/scc,pulumi-resources/velero", - "eslint.codeActionsOnSave.rules": null, - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "tsconfig.json": "tsconfig.*.json" }, - "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[jsonc]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "files.associations": { + "*.css": "tailwindcss" }, - "javascript.preferences.importModuleSpecifier": "project-relative", - "nxConsole.showNodeVersionOnStartup": false, - "typescript.tsdk": "node_modules/typescript/lib", - "typescript.enablePromptUseWorkspaceTsdk": true, - "typescript.inlayHints.variableTypes.enabled": true, - "typescript.preferences.preferTypeOnlyAutoImports": true, - "typescript.updateImportsOnFileMove.enabled": "never", - "typescript.inlayHints.enumMemberValues.enabled": true, + "git.autofetch": true, + "git.autoStash": true, + "git.enableCommitSigning": true, + "git.enableSmartCommit": true, + "githubPullRequests.commentExpandState": "collapseAll", + "githubPullRequests.defaultMergeMethod": "squash", + "githubPullRequests.notifications": "pullRequests", + "githubPullRequests.quickDiff": true, + "sherlock.userId": "2e2829ed-26e5-4fb5-87e9-3d921da61e9f", + "trailing-spaces.trimOnSave": true, "typescript.inlayHints.functionLikeReturnTypes.enabled": true, - "typescript.inlayHints.parameterNames.enabled": "all", "typescript.inlayHints.parameterTypes.enabled": true, "typescript.inlayHints.propertyDeclarationTypes.enabled": true, - "editor.codeLens": true, + "typescript.inlayHints.variableTypes.enabled": true, + "typescript.suggest.completeFunctionCalls": true, "typescript.tsserver.experimental.enableProjectDiagnostics": true, - "trailing-spaces.trimOnSave": true, - "yaml.schemas": {}, - "workbench.tree.enableStickyScroll": true, - "git.openRepositoryInParentFolders": "never", - "codesnap.realLineNumbers": true, - "codesnap.showWindowTitle": true, - "codesnap.shutterAction": "copy", - "codesnap.transparentBackground": true, - "codesnap.backgroundColor": "#282828", - "editor.wordWrap": "on", - "files.associations": { - "*.css": "tailwindcss" + "typescript.tsserver.maxTsServerMemory": 16384, + "typescript.tsserver.watchOptions": { + "fallbackPolling": "dynamicPriorityPolling", + "synchronousWatchDirectory": true, + "watchDirectory": "useFsEvents", + "watchFile": "useFsEventsOnParentDirectory" }, - "editor.quickSuggestions": { - "strings": "on" + "workbench.editor.customLabels.patterns": { + "**/app/**/layout.tsx": "${dirname(1)}/${dirname} ", + "**/app/**/page.tsx": "${dirname(1)}/${dirname} ", + "**/app/**/route.ts": "${dirname(1)}/${dirname} ", + "**/components/**/index.tsx": "${dirname(1)}/${dirname} " }, - "eslint.workingDirectories": [ - { - "mode": "auto" - } - ] + "workbench.tree.enableStickyScroll": true, + "typescript.enablePromptUseWorkspaceTsdk": true, + "[dockerfile]": { + "editor.defaultFormatter": "ms-azuretools.vscode-docker" + }, + "[mdx]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + } } diff --git a/Dockerfile b/Dockerfile index 36b76bf8..6740d15f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,28 @@ -FROM nginxinc/nginx-unprivileged:1.27-bookworm -LABEL org.opencontainers.image.source="https://github.com/settlemint/btp-docs" - -WORKDIR /usr/share/nginx/html/documentation -COPY --chmod=0777 ./build/ /usr/share/nginx/html/documentation -COPY --chmod=0777 ./nginx.conf /etc/nginx/nginx.conf -COPY --chmod=0777 ./nginx.default.conf /etc/nginx/conf.d/default.conf -HEALTHCHECK NONE -USER 1001 -ENTRYPOINT ["nginx", "-g", "daemon off;"] +FROM node:22.14.0 AS build + +COPY --from=oven/bun:1.2.2-debian --chmod=0777 /usr/local/bin/bun /bin/bun + +RUN mkdir -p /app +WORKDIR /app + +COPY --chmod=0777 . . +RUN bun install +RUN bun run build +RUN rm -Rf .next/standalone/.env + +# RUN +FROM node:22.14.0-slim + +LABEL org.opencontainers.image.source="https://github.com/settlemint/docs" + +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 + +# COPY --from=build --chmod=0777 /app/public public +COPY --from=build --chmod=0777 /app/.next/standalone ./ +COPY --from=build --chmod=0777 /app/.next/static ./.next/static + +ENV PORT=3000 +ENV HOSTNAME="0.0.0.0" + +CMD ["server.js"] \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..d74c7635 --- /dev/null +++ b/LICENSE @@ -0,0 +1,110 @@ +# Functional Source License, Version 1.1, MIT Future License + +## Abbreviation + +FSL-1.1-MIT + +## Notice + +Copyright 2024 SettleMint + +## Terms and Conditions + +### Licensor ("We") + +The party offering the Software under these Terms and Conditions. + +### The Software + +The "Software" is each version of the software that we make available under +these Terms and Conditions, as indicated by our inclusion of these Terms and +Conditions with the Software. + +### License Grant + +Subject to your compliance with this License Grant and the Patents, +Redistribution and Trademark clauses below, we hereby grant you the right to +use, copy, modify, create derivative works, publicly perform, publicly display +and redistribute the Software for any Permitted Purpose identified below. + +### Permitted Purpose + +A Permitted Purpose is any purpose other than a Competing Use. A Competing Use +means making the Software available to others in a commercial product or +service that: + +1. substitutes for the Software; + +2. substitutes for any other product or service we offer using the Software + that exists as of the date we make the Software available; or + +3. offers the same or substantially similar functionality as the Software. + +Permitted Purposes specifically include using the Software: + +1. for your internal use and access; + +2. for non-commercial education; + +3. for non-commercial research; and + +4. in connection with professional services that you provide to a licensee + using the Software in accordance with these Terms and Conditions. + +### Patents + +To the extent your use for a Permitted Purpose would necessarily infringe our +patents, the license grant above includes a license under our patents. If you +make a claim against any party that the Software infringes or contributes to +the infringement of any patent, then your patent license to the Software ends +immediately. + +### Redistribution + +The Terms and Conditions apply to all copies, modifications and derivatives of +the Software. + +If you redistribute any copies, modifications or derivatives of the Software, +you must include a copy of or a link to these Terms and Conditions and not +remove any copyright notices provided in or with the Software. + +### Disclaimer + +THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR +PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT. + +IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE +SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, +EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE. + +### Trademarks + +Except for displaying the License Details and identifying us as the origin of +the Software, you have no right under these Terms and Conditions to use our +trademarks, trade names, service marks or product names. + +## Grant of Future License + +We hereby irrevocably grant you an additional license to use the Software under +the MIT license that is effective on the second anniversary of the date we make +the Software available. On or after that date, you may use the Software under +the MIT license, in which case the following will apply: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 00000000..26f51ea6 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +

+ SettleMint logo +

SettleMint - Documentation

+

+ ✨ https://settlemint.com ✨ +
+ Get going with SettleMint in minutes. +

+

+
+

+CI status +stars +

+ +
+ Documentation +   •   + Issues +
+
\ No newline at end of file diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 6bf8d26f..00000000 --- a/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: [require.resolve('@docusaurus/core/lib/babel/preset')] -}; diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..ad98fc9a --- /dev/null +++ b/biome.json @@ -0,0 +1,41 @@ +{ + "extends": ["ultracite"], + "files": { + "ignore": [ + "kit/subgraph/**", + "kit/contracts/artifacts/**/*", + "kit/contracts/dependencies/**/*", + "kit/contracts/ignition/deployments/**/*", + "kit/dapp/src/components/ui/**/*", + "kit/dapp/*.d.ts", + ".vscode/*" + ] + }, + "linter": { + "rules": { + "style": { + "noNonNullAssertion": "off", + "useNamingConvention": "off" + }, + "nursery": { + "noSecrets": "off", + "noNestedTernary": "off" + } + } + }, + "javascript": { + "formatter": { + "lineWidth": 120 + } + }, + "css": { + "formatter": { + "lineWidth": 120 + } + }, + "json": { + "formatter": { + "lineWidth": 120 + } + } +} diff --git a/blog/2024-03-26.md b/blog/2024-03-26.md deleted file mode 100644 index 8b94a68f..00000000 --- a/blog/2024-03-26.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -slug: March-26-2024 -title: Extending ERC-20 Token for Enterprise -authors: saeed -tags: [solidity, smartcontract, erc-20] ---- - -The exchange and transfer of tokens through smart contracts is a critical part of building blockchain applications. To make these operations more efficient to implement for developers, token standards like [ERC-20](https://ethereum.org/en/developers/docs/standards/tokens/erc-20/) have been created. This allows our applications to run predictably. When building enterprise blockchain applications, we might need to have additional functionality outside of the defined standards. - -For this reason, developers can extend the ERC-20 token standard with new features that fit their use case. In this article, we will explore 3 of these extensions: -[Pausable ERC20](https://docs.openzeppelin.com/contracts/2.x/api/token/erc20#ERC20Pausable), [ERC20Capped](https://docs.openzeppelin.com/contracts/4.x/api/token/erc20#ERC20Capped) and [ERC4626](https://docs.openzeppelin.com/contracts/4.x/erc4626). First, let's define what an ERC-20 token is. - -## What is an ERC20 token? - -A token is a representation of something on a blockchain. This could be real-world assets like shares of a company or currency like EUR or digital assets like customer loyalty points or items in a game. Like what they represent, tokens can share the same value as another token (fungible) or have their unique value (non-fungible). - -ERC20 tokens are fungible tokens and are created by deploying an [ERC20 smart contract](/documentation/docs/blockchain-guides/Ethereum/Template-library/ethereum-erc-20/). The ERC20 standard defines that the contract must: - Define the Contract Address (the creator of the token) - Define the total supply of the token (the amount of tokens created) - -It also allows for these optional fields to be created: - The name of the token - (Ex: Ether) - The symbol of the token - (Ex: ETH) - The number of decimals for the token - -To add new functionality to a smart contract that deploys an ERC20 token, formal extensions have been created to create increased security for both developers and their users. - -## ERC20 Pausable - -A standard ERC20 token can be transferred at all times as soon as it is created. To have more control over the transfer of the token, ERC20Pausable was created. This is all transfer of those tokens to be paused. What this means is that the holder of the tokens cannot transfer or approve any transactions involving this token. The person who has deployed the contract is the only one who can pause or unpause the contract. - -This extension is a useful control when operating with tokens that represent real-world value and where ownership of the token should be limited. For example, if you create a token to connect to your supply chain operations, you can pause the token if there is a break in operations. Another example is if you have an asset that represents an initial investment and only those who have made that investment are allowed to own this token. - -## ERC20Capped - -Tokens are minted to a blockchain by calling the mint function within the smart contract. To have control over how many tokens can be minted, ERC20Capped allows developers to define a fixed cap. Limiting the supply can control the value of the token and the type of asset it represents. - -The advantage of using ERC20Capped is that it allows you to be able to represent assets that also have a fixed amount. For example, a fixed amount of shares in a company or the fractionalization of an insured asset. - -## ERC4626 - -ERC4626 is a standard for creating token vaults. Token vaults are a way for users to store a collection of different tokens and a token back that is specific to that vault. The vault can then increase the yield of these tokens to create passive income for the users holding the vault token. These tokens back the shares of the vault. The amount of tokens a user contributes is correlated to the amount of shares they receive. - -Token vaults are useful in the enterprise context when working with multiple tokens. These tokens could represent different assets that a company holds or invests in. To simplify the experience for customers, a token vault can be created and users only have to manage the token connected to the vault to manage the value from the other tokens inside the vault. - -## Conclusion - -We just looked at 3 ways that developers can get more out of working with the ERC20 token standard. These extensions allow more control and visibility of assets that enterprise use cases may require. To get started deploying your own ERC20 smart contract on SettleMint, check out this guide on [Connecting a frontend to a token transfer application](/documentation/docs/developer-guides/connect-frontend/). - -Have more questions about the ERC20 tokens and extensions, please contact us at support@settlemint.com! - ---- diff --git a/blog/authors.yml b/blog/authors.yml deleted file mode 100644 index 6807fbb2..00000000 --- a/blog/authors.yml +++ /dev/null @@ -1,17 +0,0 @@ -roderik: - name: Roderik van der Veer - title: Founder & CTO - url: https://github.com/roderik - image_url: https://github.com/roderik.png - -jurgen: - name: Jurgen Mustafa - title: Technical Writer - url: https://github.com/jurgen-mustafa - image_url: https://github.com/jurgen-mustafa.png - -saeed: - name: Saeed Dawod - title: Customer Success Engineer - url: https://github.com/SaeeDawod - image_url: https://github.com/SaeeDawod.png diff --git a/bun.lock b/bun.lock index 92a7092d..bfdc828d 100644 --- a/bun.lock +++ b/bun.lock @@ -2,3071 +2,1664 @@ "lockfileVersion": 1, "workspaces": { "": { + "name": "docs", "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/faster": "3.7.0", - "@docusaurus/plugin-ideal-image": "3.7.0", - "@docusaurus/plugin-sitemap": "3.7.0", - "@docusaurus/preset-classic": "3.7.0", - "@fontsource/figtree": "5.1.2", - "@mdx-js/react": "3.1.0", - "clsx": "2.1.1", - "docusaurus-lunr-search": "3.6.0", - "gray-matter": "4.0.3", - "prism-react-renderer": "2.4.1", - "react": "19.0.0", - "react-dom": "19.0.0", + "@biomejs/biome": "^1.9.4", + "@next/third-parties": "^15.1.7", + "@theguild/remark-mermaid": "^0.2.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "fumadocs-core": "15.0.9", + "fumadocs-docgen": "^1.3.7", + "fumadocs-mdx": "11.5.6", + "fumadocs-twoslash": "^3.0.0", + "fumadocs-ui": "15.0.9", + "lucide-react": "^0.475.0", + "next": "15.1.7", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "tailwind-merge": "^3.0.1", + "tailwindcss-animate": "^1.0.7", + "ultracite": "^4.1.20", }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.7.0", - "@docusaurus/tsconfig": "3.7.0", - "@docusaurus/types": "3.7.0", - "graphql-request": "7.1.2", - "typescript": "5.7.3", + "@fumadocs/cli": "^0.0.8", + "@tailwindcss/postcss": "^4.0.6", + "@types/mdx": "^2.0.13", + "@types/node": "22.13.4", + "@types/react": "^19.0.9", + "@types/react-dom": "^19.0.3", + "babel-plugin-react-compiler": "^19.0.0-beta-21e868a-20250216", + "eslint": "^8", + "eslint-config-next": "15.1.7", + "postcss": "^8.5.2", + "tailwindcss": "^4.0.6", + "typescript": "^5.7.3", }, }, }, + "trustedDependencies": [ + "@biomejs/biome", + ], "packages": { - "@algolia/autocomplete-core": ["@algolia/autocomplete-core@1.17.7", "", { "dependencies": { "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", "@algolia/autocomplete-shared": "1.17.7" } }, "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q=="], + "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], - "@algolia/autocomplete-plugin-algolia-insights": ["@algolia/autocomplete-plugin-algolia-insights@1.17.7", "", { "dependencies": { "@algolia/autocomplete-shared": "1.17.7" }, "peerDependencies": { "search-insights": ">= 1 < 3" } }, "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A=="], + "@antfu/install-pkg": ["@antfu/install-pkg@1.0.0", "", { "dependencies": { "package-manager-detector": "^0.2.8", "tinyexec": "^0.3.2" } }, "sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw=="], - "@algolia/autocomplete-preset-algolia": ["@algolia/autocomplete-preset-algolia@1.17.7", "", { "dependencies": { "@algolia/autocomplete-shared": "1.17.7" }, "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA=="], + "@antfu/utils": ["@antfu/utils@8.1.1", "", {}, "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ=="], - "@algolia/autocomplete-shared": ["@algolia/autocomplete-shared@1.17.7", "", { "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg=="], + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.25.9", "", {}, "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA=="], - "@algolia/client-abtesting": ["@algolia/client-abtesting@5.19.0", "", { "dependencies": { "@algolia/client-common": "5.19.0", "@algolia/requester-browser-xhr": "5.19.0", "@algolia/requester-fetch": "5.19.0", "@algolia/requester-node-http": "5.19.0" } }, "sha512-dMHwy2+nBL0SnIsC1iHvkBao64h4z+roGelOz11cxrDBrAdASxLxmfVMop8gmodQ2yZSacX0Rzevtxa+9SqxCw=="], + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.25.9", "", {}, "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="], - "@algolia/client-analytics": ["@algolia/client-analytics@5.19.0", "", { "dependencies": { "@algolia/client-common": "5.19.0", "@algolia/requester-browser-xhr": "5.19.0", "@algolia/requester-fetch": "5.19.0", "@algolia/requester-node-http": "5.19.0" } }, "sha512-CDW4RwnCHzU10upPJqS6N6YwDpDHno7w6/qXT9KPbPbt8szIIzCHrva4O9KIfx1OhdsHzfGSI5hMAiOOYl4DEQ=="], + "@babel/types": ["@babel/types@7.26.9", "", { "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" } }, "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw=="], - "@algolia/client-common": ["@algolia/client-common@5.19.0", "", {}, "sha512-2ERRbICHXvtj5kfFpY5r8qu9pJII/NAHsdgUXnUitQFwPdPL7wXiupcvZJC7DSntOnE8AE0lM7oDsPhrJfj5nQ=="], + "@biomejs/biome": ["@biomejs/biome@1.9.4", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "1.9.4", "@biomejs/cli-darwin-x64": "1.9.4", "@biomejs/cli-linux-arm64": "1.9.4", "@biomejs/cli-linux-arm64-musl": "1.9.4", "@biomejs/cli-linux-x64": "1.9.4", "@biomejs/cli-linux-x64-musl": "1.9.4", "@biomejs/cli-win32-arm64": "1.9.4", "@biomejs/cli-win32-x64": "1.9.4" }, "bin": { "biome": "bin/biome" } }, "sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog=="], - "@algolia/client-insights": ["@algolia/client-insights@5.19.0", "", { "dependencies": { "@algolia/client-common": "5.19.0", "@algolia/requester-browser-xhr": "5.19.0", "@algolia/requester-fetch": "5.19.0", "@algolia/requester-node-http": "5.19.0" } }, "sha512-xPOiGjo6I9mfjdJO7Y+p035aWePcbsItizIp+qVyfkfZiGgD+TbNxM12g7QhFAHIkx/mlYaocxPY/TmwPzTe+A=="], + "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@1.9.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw=="], - "@algolia/client-personalization": ["@algolia/client-personalization@5.19.0", "", { "dependencies": { "@algolia/client-common": "5.19.0", "@algolia/requester-browser-xhr": "5.19.0", "@algolia/requester-fetch": "5.19.0", "@algolia/requester-node-http": "5.19.0" } }, "sha512-B9eoce/fk8NLboGje+pMr72pw+PV7c5Z01On477heTZ7jkxoZ4X92dobeGuEQop61cJ93Gaevd1of4mBr4hu2A=="], + "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@1.9.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg=="], - "@algolia/client-query-suggestions": ["@algolia/client-query-suggestions@5.19.0", "", { "dependencies": { "@algolia/client-common": "5.19.0", "@algolia/requester-browser-xhr": "5.19.0", "@algolia/requester-fetch": "5.19.0", "@algolia/requester-node-http": "5.19.0" } }, "sha512-6fcP8d4S8XRDtVogrDvmSM6g5g6DndLc0pEm1GCKe9/ZkAzCmM3ZmW1wFYYPxdjMeifWy1vVEDMJK7sbE4W7MA=="], + "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@1.9.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g=="], - "@algolia/client-search": ["@algolia/client-search@5.19.0", "", { "dependencies": { "@algolia/client-common": "5.19.0", "@algolia/requester-browser-xhr": "5.19.0", "@algolia/requester-fetch": "5.19.0", "@algolia/requester-node-http": "5.19.0" } }, "sha512-Ctg3xXD/1VtcwmkulR5+cKGOMj4r0wC49Y/KZdGQcqpydKn+e86F6l3tb3utLJQVq4lpEJud6kdRykFgcNsp8Q=="], + "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@1.9.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA=="], - "@algolia/events": ["@algolia/events@4.0.1", "", {}, "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ=="], + "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@1.9.4", "", { "os": "linux", "cpu": "x64" }, "sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg=="], - "@algolia/ingestion": ["@algolia/ingestion@1.19.0", "", { "dependencies": { "@algolia/client-common": "5.19.0", "@algolia/requester-browser-xhr": "5.19.0", "@algolia/requester-fetch": "5.19.0", "@algolia/requester-node-http": "5.19.0" } }, "sha512-LO7w1MDV+ZLESwfPmXkp+KLeYeFrYEgtbCZG6buWjddhYraPQ9MuQWLhLLiaMlKxZ/sZvFTcZYuyI6Jx4WBhcg=="], + "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@1.9.4", "", { "os": "linux", "cpu": "x64" }, "sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg=="], - "@algolia/monitoring": ["@algolia/monitoring@1.19.0", "", { "dependencies": { "@algolia/client-common": "5.19.0", "@algolia/requester-browser-xhr": "5.19.0", "@algolia/requester-fetch": "5.19.0", "@algolia/requester-node-http": "5.19.0" } }, "sha512-Mg4uoS0aIKeTpu6iv6O0Hj81s8UHagi5TLm9k2mLIib4vmMtX7WgIAHAcFIaqIZp5D6s5EVy1BaDOoZ7buuJHA=="], + "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@1.9.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg=="], - "@algolia/recommend": ["@algolia/recommend@5.19.0", "", { "dependencies": { "@algolia/client-common": "5.19.0", "@algolia/requester-browser-xhr": "5.19.0", "@algolia/requester-fetch": "5.19.0", "@algolia/requester-node-http": "5.19.0" } }, "sha512-PbgrMTbUPlmwfJsxjFhal4XqZO2kpBNRjemLVTkUiti4w/+kzcYO4Hg5zaBgVqPwvFDNQ8JS4SS3TBBem88u+g=="], + "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@1.9.4", "", { "os": "win32", "cpu": "x64" }, "sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA=="], - "@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.19.0", "", { "dependencies": { "@algolia/client-common": "5.19.0" } }, "sha512-GfnhnQBT23mW/VMNs7m1qyEyZzhZz093aY2x8p0era96MMyNv8+FxGek5pjVX0b57tmSCZPf4EqNCpkGcGsmbw=="], + "@braintree/sanitize-url": ["@braintree/sanitize-url@7.1.1", "", {}, "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw=="], - "@algolia/requester-fetch": ["@algolia/requester-fetch@5.19.0", "", { "dependencies": { "@algolia/client-common": "5.19.0" } }, "sha512-oyTt8ZJ4T4fYvW5avAnuEc6Laedcme9fAFryMD9ndUTIUe/P0kn3BuGcCLFjN3FDmdrETHSFkgPPf1hGy3sLCw=="], + "@chevrotain/cst-dts-gen": ["@chevrotain/cst-dts-gen@11.0.3", "", { "dependencies": { "@chevrotain/gast": "11.0.3", "@chevrotain/types": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ=="], - "@algolia/requester-node-http": ["@algolia/requester-node-http@5.19.0", "", { "dependencies": { "@algolia/client-common": "5.19.0" } }, "sha512-p6t8ue0XZNjcRiqNkb5QAM0qQRAKsCiebZ6n9JjWA+p8fWf8BvnhO55y2fO28g3GW0Imj7PrAuyBuxq8aDVQwQ=="], + "@chevrotain/gast": ["@chevrotain/gast@11.0.3", "", { "dependencies": { "@chevrotain/types": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q=="], - "@ampproject/remapping": ["@ampproject/remapping@2.3.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="], + "@chevrotain/regexp-to-ast": ["@chevrotain/regexp-to-ast@11.0.3", "", {}, "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA=="], - "@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], + "@chevrotain/types": ["@chevrotain/types@11.0.3", "", {}, "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ=="], - "@babel/compat-data": ["@babel/compat-data@7.26.3", "", {}, "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g=="], + "@chevrotain/utils": ["@chevrotain/utils@11.0.3", "", {}, "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ=="], - "@babel/core": ["@babel/core@7.26.0", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.0", "@babel/generator": "^7.26.0", "@babel/helper-compilation-targets": "^7.25.9", "@babel/helper-module-transforms": "^7.26.0", "@babel/helpers": "^7.26.0", "@babel/parser": "^7.26.0", "@babel/template": "^7.25.9", "@babel/traverse": "^7.25.9", "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg=="], + "@clack/core": ["@clack/core@0.4.1", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA=="], - "@babel/generator": ["@babel/generator@7.26.3", "", { "dependencies": { "@babel/parser": "^7.26.3", "@babel/types": "^7.26.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" } }, "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ=="], + "@clack/prompts": ["@clack/prompts@0.10.0", "", { "dependencies": { "@clack/core": "0.4.1", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-H3rCl6CwW1NdQt9rE3n373t7o5cthPv7yUoxF2ytZvyvlJv89C5RYMJu83Hed8ODgys5vpBU0GKxIRG83jd8NQ=="], - "@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.25.9", "", { "dependencies": { "@babel/types": "^7.25.9" } }, "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g=="], + "@emnapi/runtime": ["@emnapi/runtime@1.3.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw=="], - "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.25.9", "", { "dependencies": { "@babel/compat-data": "^7.25.9", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], - "@babel/helper-create-class-features-plugin": ["@babel/helper-create-class-features-plugin@7.25.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", "@babel/helper-replace-supers": "^7.25.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", "@babel/traverse": "^7.25.9", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ=="], + "@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], - "@babel/helper-create-regexp-features-plugin": ["@babel/helper-create-regexp-features-plugin@7.26.3", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong=="], + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], - "@babel/helper-define-polyfill-provider": ["@babel/helper-define-polyfill-provider@0.6.3", "", { "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg=="], + "@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], - "@babel/helper-member-expression-to-functions": ["@babel/helper-member-expression-to-functions@7.25.9", "", { "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ=="], + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], - "@babel/helper-module-imports": ["@babel/helper-module-imports@7.25.9", "", { "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw=="], + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], - "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.26.0", "", { "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw=="], + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], - "@babel/helper-optimise-call-expression": ["@babel/helper-optimise-call-expression@7.25.9", "", { "dependencies": { "@babel/types": "^7.25.9" } }, "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ=="], + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], - "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.25.9", "", {}, "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw=="], + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], - "@babel/helper-remap-async-to-generator": ["@babel/helper-remap-async-to-generator@7.25.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-wrap-function": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw=="], + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], - "@babel/helper-replace-supers": ["@babel/helper-replace-supers@7.25.9", "", { "dependencies": { "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ=="], + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], - "@babel/helper-skip-transparent-expression-wrappers": ["@babel/helper-skip-transparent-expression-wrappers@7.25.9", "", { "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], - "@babel/helper-string-parser": ["@babel/helper-string-parser@7.25.9", "", {}, "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA=="], + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.25.9", "", {}, "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="], + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], - "@babel/helper-validator-option": ["@babel/helper-validator-option@7.25.9", "", {}, "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw=="], + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], - "@babel/helper-wrap-function": ["@babel/helper-wrap-function@7.25.9", "", { "dependencies": { "@babel/template": "^7.25.9", "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g=="], + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], - "@babel/helpers": ["@babel/helpers@7.26.0", "", { "dependencies": { "@babel/template": "^7.25.9", "@babel/types": "^7.26.0" } }, "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw=="], + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], - "@babel/parser": ["@babel/parser@7.26.3", "", { "dependencies": { "@babel/types": "^7.26.3" }, "bin": "./bin/babel-parser.js" }, "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA=="], + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="], - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ["@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g=="], + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], - "@babel/plugin-bugfix-safari-class-field-initializer-scope": ["@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw=="], + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="], - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ["@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug=="], + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g=="], + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg=="], + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], - "@babel/plugin-proposal-private-property-in-object": ["@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w=="], + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], - "@babel/plugin-syntax-dynamic-import": ["@babel/plugin-syntax-dynamic-import@7.8.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ=="], + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], - "@babel/plugin-syntax-import-assertions": ["@babel/plugin-syntax-import-assertions@7.26.0", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg=="], + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.4.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA=="], - "@babel/plugin-syntax-import-attributes": ["@babel/plugin-syntax-import-attributes@7.26.0", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A=="], + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], - "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA=="], + "@eslint/eslintrc": ["@eslint/eslintrc@2.1.4", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ=="], - "@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ=="], + "@eslint/js": ["@eslint/js@8.57.1", "", {}, "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q=="], - "@babel/plugin-syntax-unicode-sets-regex": ["@babel/plugin-syntax-unicode-sets-regex@7.18.6", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg=="], + "@floating-ui/core": ["@floating-ui/core@1.6.9", "", { "dependencies": { "@floating-ui/utils": "^0.2.9" } }, "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw=="], - "@babel/plugin-transform-arrow-functions": ["@babel/plugin-transform-arrow-functions@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg=="], + "@floating-ui/dom": ["@floating-ui/dom@1.6.13", "", { "dependencies": { "@floating-ui/core": "^1.6.0", "@floating-ui/utils": "^0.2.9" } }, "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w=="], - "@babel/plugin-transform-async-generator-functions": ["@babel/plugin-transform-async-generator-functions@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-remap-async-to-generator": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw=="], + "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.2", "", { "dependencies": { "@floating-ui/dom": "^1.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A=="], - "@babel/plugin-transform-async-to-generator": ["@babel/plugin-transform-async-to-generator@7.25.9", "", { "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-remap-async-to-generator": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ=="], + "@floating-ui/utils": ["@floating-ui/utils@0.2.9", "", {}, "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg=="], - "@babel/plugin-transform-block-scoped-functions": ["@babel/plugin-transform-block-scoped-functions@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA=="], + "@formatjs/intl-localematcher": ["@formatjs/intl-localematcher@0.6.0", "", { "dependencies": { "tslib": "2" } }, "sha512-4rB4g+3hESy1bHSBG3tDFaMY2CH67iT7yne1e+0CLTsGLDcmoEWWpJjjpWVaYgYfYuohIRuo0E+N536gd2ZHZA=="], - "@babel/plugin-transform-block-scoping": ["@babel/plugin-transform-block-scoping@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg=="], + "@fumadocs/cli": ["@fumadocs/cli@0.0.8", "", { "dependencies": { "@clack/prompts": "^0.10.0", "commander": "^13.1.0", "execa": "^9.5.2", "package-manager-detector": "^0.2.9", "picocolors": "^1.1.1", "ts-morph": "^25.0.1" }, "bin": { "fumadocs": "dist/index.js" } }, "sha512-Cykk6jVDt1wHVOfas9S64TrF1uLgtV0ESLsXV5dgm1K5S9kyX+Nycogy/YTBqq05wuG7SI20byuUvX2QrUozSg=="], - "@babel/plugin-transform-class-properties": ["@babel/plugin-transform-class-properties@7.25.9", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q=="], + "@humanwhocodes/config-array": ["@humanwhocodes/config-array@0.13.0", "", { "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" } }, "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw=="], - "@babel/plugin-transform-class-static-block": ["@babel/plugin-transform-class-static-block@7.26.0", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.12.0" } }, "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ=="], + "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], - "@babel/plugin-transform-classes": ["@babel/plugin-transform-classes@7.25.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-compilation-targets": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-replace-supers": "^7.25.9", "@babel/traverse": "^7.25.9", "globals": "^11.1.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg=="], + "@humanwhocodes/object-schema": ["@humanwhocodes/object-schema@2.0.3", "", {}, "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA=="], - "@babel/plugin-transform-computed-properties": ["@babel/plugin-transform-computed-properties@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/template": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA=="], + "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], - "@babel/plugin-transform-destructuring": ["@babel/plugin-transform-destructuring@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ=="], + "@iconify/utils": ["@iconify/utils@2.3.0", "", { "dependencies": { "@antfu/install-pkg": "^1.0.0", "@antfu/utils": "^8.1.0", "@iconify/types": "^2.0.0", "debug": "^4.4.0", "globals": "^15.14.0", "kolorist": "^1.8.0", "local-pkg": "^1.0.0", "mlly": "^1.7.4" } }, "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA=="], - "@babel/plugin-transform-dotall-regex": ["@babel/plugin-transform-dotall-regex@7.25.9", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA=="], + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="], - "@babel/plugin-transform-duplicate-keys": ["@babel/plugin-transform-duplicate-keys@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw=="], + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="], - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ["@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog=="], + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="], - "@babel/plugin-transform-dynamic-import": ["@babel/plugin-transform-dynamic-import@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg=="], + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="], - "@babel/plugin-transform-exponentiation-operator": ["@babel/plugin-transform-exponentiation-operator@7.26.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ=="], + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.0.5", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="], - "@babel/plugin-transform-export-namespace-from": ["@babel/plugin-transform-export-namespace-from@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww=="], + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="], - "@babel/plugin-transform-for-of": ["@babel/plugin-transform-for-of@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A=="], + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.0.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="], - "@babel/plugin-transform-function-name": ["@babel/plugin-transform-function-name@7.25.9", "", { "dependencies": { "@babel/helper-compilation-targets": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA=="], + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="], - "@babel/plugin-transform-json-strings": ["@babel/plugin-transform-json-strings@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw=="], + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="], - "@babel/plugin-transform-literals": ["@babel/plugin-transform-literals@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ=="], + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="], - "@babel/plugin-transform-logical-assignment-operators": ["@babel/plugin-transform-logical-assignment-operators@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q=="], + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="], - "@babel/plugin-transform-member-expression-literals": ["@babel/plugin-transform-member-expression-literals@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA=="], + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="], - "@babel/plugin-transform-modules-amd": ["@babel/plugin-transform-modules-amd@7.25.9", "", { "dependencies": { "@babel/helper-module-transforms": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw=="], + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="], - "@babel/plugin-transform-modules-commonjs": ["@babel/plugin-transform-modules-commonjs@7.26.3", "", { "dependencies": { "@babel/helper-module-transforms": "^7.26.0", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ=="], + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="], - "@babel/plugin-transform-modules-systemjs": ["@babel/plugin-transform-modules-systemjs@7.25.9", "", { "dependencies": { "@babel/helper-module-transforms": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA=="], + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="], - "@babel/plugin-transform-modules-umd": ["@babel/plugin-transform-modules-umd@7.25.9", "", { "dependencies": { "@babel/helper-module-transforms": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw=="], + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="], - "@babel/plugin-transform-named-capturing-groups-regex": ["@babel/plugin-transform-named-capturing-groups-regex@7.25.9", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA=="], + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.33.5", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="], - "@babel/plugin-transform-new-target": ["@babel/plugin-transform-new-target@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ=="], + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.33.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="], - "@babel/plugin-transform-nullish-coalescing-operator": ["@babel/plugin-transform-nullish-coalescing-operator@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog=="], + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="], - "@babel/plugin-transform-numeric-separator": ["@babel/plugin-transform-numeric-separator@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q=="], + "@mdx-js/mdx": ["@mdx-js/mdx@3.1.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.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" } }, "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw=="], - "@babel/plugin-transform-object-rest-spread": ["@babel/plugin-transform-object-rest-spread@7.25.9", "", { "dependencies": { "@babel/helper-compilation-targets": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/plugin-transform-parameters": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg=="], + "@mermaid-js/parser": ["@mermaid-js/parser@0.3.0", "", { "dependencies": { "langium": "3.0.0" } }, "sha512-HsvL6zgE5sUPGgkIDlmAWR1HTNHz2Iy11BAWPTa4Jjabkpguy4Ze2gzfLrg6pdRuBvFwgUYyxiaNqZwrEEXepA=="], - "@babel/plugin-transform-object-super": ["@babel/plugin-transform-object-super@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-replace-supers": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A=="], + "@next/env": ["@next/env@15.1.7", "", {}, "sha512-d9jnRrkuOH7Mhi+LHav2XW91HOgTAWHxjMPkXMGBc9B2b7614P7kjt8tAplRvJpbSt4nbO1lugcT/kAaWzjlLQ=="], - "@babel/plugin-transform-optional-catch-binding": ["@babel/plugin-transform-optional-catch-binding@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g=="], + "@next/eslint-plugin-next": ["@next/eslint-plugin-next@15.1.7", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-kRP7RjSxfTO13NE317ek3mSGzoZlI33nc/i5hs1KaWpK+egs85xg0DJ4p32QEiHnR0mVjuUfhRIun7awqfL7pQ=="], - "@babel/plugin-transform-optional-chaining": ["@babel/plugin-transform-optional-chaining@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A=="], + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@15.1.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-hPFwzPJDpA8FGj7IKV3Yf1web3oz2YsR8du4amKw8d+jAOHfYHYFpMkoF6vgSY4W6vB29RtZEklK9ayinGiCmQ=="], - "@babel/plugin-transform-parameters": ["@babel/plugin-transform-parameters@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g=="], + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@15.1.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-2qoas+fO3OQKkU0PBUfwTiw/EYpN+kdAx62cePRyY1LqKtP09Vp5UcUntfZYajop5fDFTjSxCHfZVRxzi+9FYQ=="], - "@babel/plugin-transform-private-methods": ["@babel/plugin-transform-private-methods@7.25.9", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw=="], + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@15.1.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-sKLLwDX709mPdzxMnRIXLIT9zaX2w0GUlkLYQnKGoXeWUhcvpCrK+yevcwCJPdTdxZEUA0mOXGLdPsGkudGdnA=="], - "@babel/plugin-transform-private-property-in-object": ["@babel/plugin-transform-private-property-in-object@7.25.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw=="], + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@15.1.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-zblK1OQbQWdC8fxdX4fpsHDw+VSpBPGEUX4PhSE9hkaWPrWoeIJn+baX53vbsbDRaDKd7bBNcXRovY1hEhFd7w=="], - "@babel/plugin-transform-property-literals": ["@babel/plugin-transform-property-literals@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA=="], + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@15.1.7", "", { "os": "linux", "cpu": "x64" }, "sha512-GOzXutxuLvLHFDAPsMP2zDBMl1vfUHHpdNpFGhxu90jEzH6nNIgmtw/s1MDwpTOiM+MT5V8+I1hmVFeAUhkbgQ=="], - "@babel/plugin-transform-react-constant-elements": ["@babel/plugin-transform-react-constant-elements@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow=="], + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@15.1.7", "", { "os": "linux", "cpu": "x64" }, "sha512-WrZ7jBhR7ATW1z5iEQ0ZJfE2twCNSXbpCSaAunF3BKcVeHFADSI/AW1y5Xt3DzTqPF1FzQlwQTewqetAABhZRQ=="], - "@babel/plugin-transform-react-display-name": ["@babel/plugin-transform-react-display-name@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ=="], + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@15.1.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-LDnj1f3OVbou1BqvvXVqouJZKcwq++mV2F+oFHptToZtScIEnhNRJAhJzqAtTE2dB31qDYL45xJwrc+bLeKM2Q=="], - "@babel/plugin-transform-react-jsx": ["@babel/plugin-transform-react-jsx@7.25.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-module-imports": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/plugin-syntax-jsx": "^7.25.9", "@babel/types": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw=="], + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@15.1.7", "", { "os": "win32", "cpu": "x64" }, "sha512-dC01f1quuf97viOfW05/K8XYv2iuBgAxJZl7mbCKEjMgdQl5JjAKJ0D2qMKZCgPWDeFbFT0Q0nYWwytEW0DWTQ=="], - "@babel/plugin-transform-react-jsx-development": ["@babel/plugin-transform-react-jsx-development@7.25.9", "", { "dependencies": { "@babel/plugin-transform-react-jsx": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw=="], + "@next/third-parties": ["@next/third-parties@15.1.7", "", { "dependencies": { "third-party-capital": "1.0.20" }, "peerDependencies": { "next": "^13.0.0 || ^14.0.0 || ^15.0.0", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0" } }, "sha512-wDAh/gW+WFT7jPYmGEGtNeLC74D8+hu3S6YJOpcfC/6uBMSC7yjh0QW1/RPYKziVnjqe6O4jR0AhbN0uuS8CZw=="], - "@babel/plugin-transform-react-pure-annotations": ["@babel/plugin-transform-react-pure-annotations@7.25.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg=="], + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], - "@babel/plugin-transform-regenerator": ["@babel/plugin-transform-regenerator@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "regenerator-transform": "^0.15.2" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg=="], + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], - "@babel/plugin-transform-regexp-modifiers": ["@babel/plugin-transform-regexp-modifiers@7.26.0", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw=="], + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], - "@babel/plugin-transform-reserved-words": ["@babel/plugin-transform-reserved-words@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg=="], + "@nolyfill/is-core-module": ["@nolyfill/is-core-module@1.0.39", "", {}, "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA=="], - "@babel/plugin-transform-runtime": ["@babel/plugin-transform-runtime@7.25.9", "", { "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ=="], + "@orama/orama": ["@orama/orama@2.1.1", "", {}, "sha512-euTV/2kya290SNkl5m8e/H1na8iDygk74nNtl4E0YZNyYIrEMwE1JwamoroMKGZw2Uz+in/8gH3m1+2YfP0j1w=="], - "@babel/plugin-transform-shorthand-properties": ["@babel/plugin-transform-shorthand-properties@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng=="], + "@oxc-transform/binding-darwin-arm64": ["@oxc-transform/binding-darwin-arm64@0.48.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JzctV+H6IDl+vwTlY/7+2JMqb+94HUHfgHii+hMUM76XNaLAOyKxn3Be26t/FgrscoIR+bO6kMYL/T0sDkP7fA=="], - "@babel/plugin-transform-spread": ["@babel/plugin-transform-spread@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A=="], + "@oxc-transform/binding-darwin-x64": ["@oxc-transform/binding-darwin-x64@0.48.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-4yen3cHv/AUMb/mmDkrZXTxsFthqdzWbBb39hQgUNK81/AkFS3t+yrg7BBz1zdXunT6iJh/WQDp2ULWEV7Caiw=="], - "@babel/plugin-transform-sticky-regex": ["@babel/plugin-transform-sticky-regex@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA=="], + "@oxc-transform/binding-linux-arm64-gnu": ["@oxc-transform/binding-linux-arm64-gnu@0.48.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-LH5+AVb16tNDfkFbG9+aXjfGJTKmPjhIwl5ENHVAN5XlAz2w4rTp9873oo909G6uZWsdOtjxGpG3qzneXg6Aaw=="], - "@babel/plugin-transform-template-literals": ["@babel/plugin-transform-template-literals@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw=="], + "@oxc-transform/binding-linux-arm64-musl": ["@oxc-transform/binding-linux-arm64-musl@0.48.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-jAP77atjtsfPfRtPhCcsDY3nLXy4oEVIsiuioBDWKuerAGwDPL6Q5GBhFXNH+yN2Yi5lZMgATM/4OGn9dVGM8A=="], - "@babel/plugin-transform-typeof-symbol": ["@babel/plugin-transform-typeof-symbol@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA=="], + "@oxc-transform/binding-linux-x64-gnu": ["@oxc-transform/binding-linux-x64-gnu@0.48.2", "", { "os": "linux", "cpu": "x64" }, "sha512-qx+xL9FZzSSdYZRzZbvQtqWPaQkDmaHU/EScAiVrELwuDp7Dinn8YmMmYV52iaZvVs2+blMLCOG8xaqIjJIfBA=="], - "@babel/plugin-transform-typescript": ["@babel/plugin-transform-typescript@7.26.3", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", "@babel/plugin-syntax-typescript": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA=="], + "@oxc-transform/binding-linux-x64-musl": ["@oxc-transform/binding-linux-x64-musl@0.48.2", "", { "os": "linux", "cpu": "x64" }, "sha512-auPVLE2WXWNwjVsQBbN8pX1HDJtUeD4BNkI2byI9LSGpu7kmY9+GGxU5/3INmXNnaMuWTlBiuEKDIUVr9Znt7A=="], - "@babel/plugin-transform-unicode-escapes": ["@babel/plugin-transform-unicode-escapes@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q=="], + "@oxc-transform/binding-win32-arm64-msvc": ["@oxc-transform/binding-win32-arm64-msvc@0.48.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-X/hpuxXEhzliwqkSvecxGBrvVpFggH3gnWKNhq4MaMRbPyBpFzRf0ygThzLQdOgUIu806jRXRAL2UY0XDBB7Ng=="], - "@babel/plugin-transform-unicode-property-regex": ["@babel/plugin-transform-unicode-property-regex@7.25.9", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg=="], + "@oxc-transform/binding-win32-x64-msvc": ["@oxc-transform/binding-win32-x64-msvc@0.48.2", "", { "os": "win32", "cpu": "x64" }, "sha512-CLa3NMLpKiWg3OTu09XVNPWlYci9go/vijoj658zlbccMwT5yioHjPTk+pomycBMNEG5ei6Ak8fWjCKpXXRJRA=="], - "@babel/plugin-transform-unicode-regex": ["@babel/plugin-transform-unicode-regex@7.25.9", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA=="], + "@radix-ui/number": ["@radix-ui/number@1.1.0", "", {}, "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ=="], - "@babel/plugin-transform-unicode-sets-regex": ["@babel/plugin-transform-unicode-sets-regex@7.25.9", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ=="], + "@radix-ui/primitive": ["@radix-ui/primitive@1.1.1", "", {}, "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA=="], - "@babel/preset-env": ["@babel/preset-env@7.26.0", "", { "dependencies": { "@babel/compat-data": "^7.26.0", "@babel/helper-compilation-targets": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-import-assertions": "^7.26.0", "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.25.9", "@babel/plugin-transform-async-generator-functions": "^7.25.9", "@babel/plugin-transform-async-to-generator": "^7.25.9", "@babel/plugin-transform-block-scoped-functions": "^7.25.9", "@babel/plugin-transform-block-scoping": "^7.25.9", "@babel/plugin-transform-class-properties": "^7.25.9", "@babel/plugin-transform-class-static-block": "^7.26.0", "@babel/plugin-transform-classes": "^7.25.9", "@babel/plugin-transform-computed-properties": "^7.25.9", "@babel/plugin-transform-destructuring": "^7.25.9", "@babel/plugin-transform-dotall-regex": "^7.25.9", "@babel/plugin-transform-duplicate-keys": "^7.25.9", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-dynamic-import": "^7.25.9", "@babel/plugin-transform-exponentiation-operator": "^7.25.9", "@babel/plugin-transform-export-namespace-from": "^7.25.9", "@babel/plugin-transform-for-of": "^7.25.9", "@babel/plugin-transform-function-name": "^7.25.9", "@babel/plugin-transform-json-strings": "^7.25.9", "@babel/plugin-transform-literals": "^7.25.9", "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", "@babel/plugin-transform-member-expression-literals": "^7.25.9", "@babel/plugin-transform-modules-amd": "^7.25.9", "@babel/plugin-transform-modules-commonjs": "^7.25.9", "@babel/plugin-transform-modules-systemjs": "^7.25.9", "@babel/plugin-transform-modules-umd": "^7.25.9", "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-new-target": "^7.25.9", "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", "@babel/plugin-transform-numeric-separator": "^7.25.9", "@babel/plugin-transform-object-rest-spread": "^7.25.9", "@babel/plugin-transform-object-super": "^7.25.9", "@babel/plugin-transform-optional-catch-binding": "^7.25.9", "@babel/plugin-transform-optional-chaining": "^7.25.9", "@babel/plugin-transform-parameters": "^7.25.9", "@babel/plugin-transform-private-methods": "^7.25.9", "@babel/plugin-transform-private-property-in-object": "^7.25.9", "@babel/plugin-transform-property-literals": "^7.25.9", "@babel/plugin-transform-regenerator": "^7.25.9", "@babel/plugin-transform-regexp-modifiers": "^7.26.0", "@babel/plugin-transform-reserved-words": "^7.25.9", "@babel/plugin-transform-shorthand-properties": "^7.25.9", "@babel/plugin-transform-spread": "^7.25.9", "@babel/plugin-transform-sticky-regex": "^7.25.9", "@babel/plugin-transform-template-literals": "^7.25.9", "@babel/plugin-transform-typeof-symbol": "^7.25.9", "@babel/plugin-transform-unicode-escapes": "^7.25.9", "@babel/plugin-transform-unicode-property-regex": "^7.25.9", "@babel/plugin-transform-unicode-regex": "^7.25.9", "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", "core-js-compat": "^3.38.1", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw=="], + "@radix-ui/react-accordion": ["@radix-ui/react-accordion@1.2.3", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-collapsible": "1.1.3", "@radix-ui/react-collection": "1.1.2", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-RIQ15mrcvqIkDARJeERSuXSry2N8uYnxkdDetpfmalT/+0ntOXLkFOsh9iwlAsCv+qcmhZjbdJogIm6WBa6c4A=="], - "@babel/preset-modules": ["@babel/preset-modules@0.1.6-no-external-plugins", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA=="], + "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.2", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg=="], - "@babel/preset-react": ["@babel/preset-react@7.26.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-transform-react-display-name": "^7.25.9", "@babel/plugin-transform-react-jsx": "^7.25.9", "@babel/plugin-transform-react-jsx-development": "^7.25.9", "@babel/plugin-transform-react-pure-annotations": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw=="], + "@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.3", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-controllable-state": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-jFSerheto1X03MUC0g6R7LedNW9EEGWdg9W1+MlpkMLwGkgkbUXLPBH/KIuWKXUoeYRVY11llqbTBDzuLg7qrw=="], - "@babel/preset-typescript": ["@babel/preset-typescript@7.26.0", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-syntax-jsx": "^7.25.9", "@babel/plugin-transform-modules-commonjs": "^7.25.9", "@babel/plugin-transform-typescript": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg=="], + "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.2", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-slot": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw=="], - "@babel/runtime": ["@babel/runtime@7.26.0", "", { "dependencies": { "regenerator-runtime": "^0.14.0" } }, "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw=="], + "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw=="], - "@babel/runtime-corejs3": ["@babel/runtime-corejs3@7.26.0", "", { "dependencies": { "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.14.0" } }, "sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w=="], + "@radix-ui/react-context": ["@radix-ui/react-context@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q=="], - "@babel/template": ["@babel/template@7.25.9", "", { "dependencies": { "@babel/code-frame": "^7.25.9", "@babel/parser": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg=="], + "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.5", "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.2", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-portal": "1.1.4", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-slot": "1.1.2", "@radix-ui/react-use-controllable-state": "1.1.0", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw=="], - "@babel/traverse": ["@babel/traverse@7.26.4", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.3", "@babel/parser": "^7.26.3", "@babel/template": "^7.25.9", "@babel/types": "^7.26.3", "debug": "^4.3.1", "globals": "^11.1.0" } }, "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w=="], + "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg=="], - "@babel/types": ["@babel/types@7.26.3", "", { "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" } }, "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA=="], + "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.5", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-escape-keydown": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg=="], - "@colors/colors": ["@colors/colors@1.5.0", "", {}, "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="], + "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg=="], - "@csstools/cascade-layer-name-parser": ["@csstools/cascade-layer-name-parser@2.0.4", "", { "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" } }, "sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA=="], + "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.2", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA=="], - "@csstools/color-helpers": ["@csstools/color-helpers@5.0.1", "", {}, "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA=="], + "@radix-ui/react-id": ["@radix-ui/react-id@1.1.0", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA=="], - "@csstools/css-calc": ["@csstools/css-calc@2.1.1", "", { "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" } }, "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag=="], + "@radix-ui/react-navigation-menu": ["@radix-ui/react-navigation-menu@1.2.5", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-collection": "1.1.2", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-dismissable-layer": "1.1.5", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0", "@radix-ui/react-use-previous": "1.1.0", "@radix-ui/react-visually-hidden": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-myMHHQUZ3ZLTi8W381/Vu43Ia0NqakkQZ2vzynMmTUtQQ9kNkjzhOwkZC9TAM5R07OZUVIQyHC06f/9JZJpvvA=="], - "@csstools/css-color-parser": ["@csstools/css-color-parser@3.0.7", "", { "dependencies": { "@csstools/color-helpers": "^5.0.1", "@csstools/css-calc": "^2.1.1" }, "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" } }, "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA=="], + "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.5", "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.2", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-popper": "1.2.2", "@radix-ui/react-portal": "1.1.4", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-slot": "1.1.2", "@radix-ui/react-use-controllable-state": "1.1.0", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-NQouW0x4/GnkFJ/pRqsIS3rM/k97VzKnVb2jB7Gq7VEGPy5g7uNV1ykySFt7eWSp3i2uSGFwaJcvIRJBAHmmFg=="], - "@csstools/css-parser-algorithms": ["@csstools/css-parser-algorithms@3.0.4", "", { "peerDependencies": { "@csstools/css-tokenizer": "^3.0.3" } }, "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A=="], + "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.2", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.2", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0", "@radix-ui/react-use-rect": "1.1.0", "@radix-ui/react-use-size": "1.1.0", "@radix-ui/rect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA=="], - "@csstools/css-tokenizer": ["@csstools/css-tokenizer@3.0.3", "", {}, "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw=="], + "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.4", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA=="], - "@csstools/media-query-list-parser": ["@csstools/media-query-list-parser@4.0.2", "", { "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" } }, "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A=="], + "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.2", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg=="], - "@csstools/postcss-cascade-layers": ["@csstools/postcss-cascade-layers@5.0.1", "", { "dependencies": { "@csstools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ=="], + "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.0.2", "", { "dependencies": { "@radix-ui/react-slot": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w=="], - "@csstools/postcss-color-function": ["@csstools/postcss-color-function@4.0.7", "", { "dependencies": { "@csstools/css-color-parser": "^3.0.7", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-aDHYmhNIHR6iLw4ElWhf+tRqqaXwKnMl0YsQ/X105Zc4dQwe6yJpMrTN6BwOoESrkDjOYMOfORviSSLeDTJkdQ=="], + "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.2", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-collection": "1.1.2", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw=="], - "@csstools/postcss-color-mix-function": ["@csstools/postcss-color-mix-function@3.0.7", "", { "dependencies": { "@csstools/css-color-parser": "^3.0.7", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-e68Nev4CxZYCLcrfWhHH4u/N1YocOfTmw67/kVX5Rb7rnguqqLyxPjhHWjSBX8o4bmyuukmNf3wrUSU3//kT7g=="], + "@radix-ui/react-scroll-area": ["@radix-ui/react-scroll-area@1.2.3", "", { "dependencies": { "@radix-ui/number": "1.1.0", "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-l7+NNBfBYYJa9tNqVcP2AGvxdE3lmE6kFTBXdvHgUaZuy+4wGCL1Cl2AfaR7RKyimj7lZURGLwFO59k4eBnDJQ=="], - "@csstools/postcss-content-alt-text": ["@csstools/postcss-content-alt-text@2.0.4", "", { "dependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-YItlZUOuZJCBlRaCf8Aucc1lgN41qYGALMly0qQllrxYJhiyzlI6RxOTMUvtWk+KhS8GphMDsDhKQ7KTPfEMSw=="], + "@radix-ui/react-slot": ["@radix-ui/react-slot@1.1.2", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ=="], - "@csstools/postcss-exponential-functions": ["@csstools/postcss-exponential-functions@2.0.6", "", { "dependencies": { "@csstools/css-calc": "^2.1.1", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-IgJA5DQsQLu/upA3HcdvC6xEMR051ufebBTIXZ5E9/9iiaA7juXWz1ceYj814lnDYP/7eWjZnw0grRJlX4eI6g=="], + "@radix-ui/react-tabs": ["@radix-ui/react-tabs@1.1.3", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-roving-focus": "1.1.2", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9mFyI30cuRDImbmFF6O2KUJdgEOsGh9Vmx9x/Dh9tOhL7BngmQPQfwW4aejKm5OHpfWIdmeV6ySyuxoOGjtNng=="], - "@csstools/postcss-font-format-keywords": ["@csstools/postcss-font-format-keywords@4.0.0", "", { "dependencies": { "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw=="], + "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw=="], - "@csstools/postcss-gamut-mapping": ["@csstools/postcss-gamut-mapping@2.0.7", "", { "dependencies": { "@csstools/css-color-parser": "^3.0.7", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-gzFEZPoOkY0HqGdyeBXR3JP218Owr683u7KOZazTK7tQZBE8s2yhg06W1tshOqk7R7SWvw9gkw2TQogKpIW8Xw=="], + "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.1.0", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw=="], - "@csstools/postcss-gradients-interpolation-method": ["@csstools/postcss-gradients-interpolation-method@5.0.7", "", { "dependencies": { "@csstools/css-color-parser": "^3.0.7", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-WgEyBeg6glUeTdS2XT7qeTFBthTJuXlS9GFro/DVomj7W7WMTamAwpoP4oQCq/0Ki2gvfRYFi/uZtmRE14/DFA=="], + "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.0", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw=="], - "@csstools/postcss-hwb-function": ["@csstools/postcss-hwb-function@4.0.7", "", { "dependencies": { "@csstools/css-color-parser": "^3.0.7", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-LKYqjO+wGwDCfNIEllessCBWfR4MS/sS1WXO+j00KKyOjm7jDW2L6jzUmqASEiv/kkJO39GcoIOvTTfB3yeBUA=="], + "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w=="], - "@csstools/postcss-ic-unit": ["@csstools/postcss-ic-unit@4.0.0", "", { "dependencies": { "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-9QT5TDGgx7wD3EEMN3BSUG6ckb6Eh5gSPT5kZoVtUuAonfPmLDJyPhqR4ntPpMYhUKAMVKAg3I/AgzqHMSeLhA=="], + "@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og=="], - "@csstools/postcss-initial": ["@csstools/postcss-initial@2.0.0", "", { "peerDependencies": { "postcss": "^8.4" } }, "sha512-dv2lNUKR+JV+OOhZm9paWzYBXOCi+rJPqJ2cJuhh9xd8USVrd0cBEPczla81HNOyThMQWeCcdln3gZkQV2kYxA=="], + "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.0", "", { "dependencies": { "@radix-ui/rect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ=="], - "@csstools/postcss-is-pseudo-class": ["@csstools/postcss-is-pseudo-class@5.0.1", "", { "dependencies": { "@csstools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-JLp3POui4S1auhDR0n8wHd/zTOWmMsmK3nQd3hhL6FhWPaox5W7j1se6zXOG/aP07wV2ww0lxbKYGwbBszOtfQ=="], + "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.0", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw=="], - "@csstools/postcss-light-dark-function": ["@csstools/postcss-light-dark-function@2.0.7", "", { "dependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-ZZ0rwlanYKOHekyIPaU+sVm3BEHCe+Ha0/px+bmHe62n0Uc1lL34vbwrLYn6ote8PHlsqzKeTQdIejQCJ05tfw=="], + "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.1.2", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q=="], - "@csstools/postcss-logical-float-and-clear": ["@csstools/postcss-logical-float-and-clear@3.0.0", "", { "peerDependencies": { "postcss": "^8.4" } }, "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ=="], + "@radix-ui/rect": ["@radix-ui/rect@1.1.0", "", {}, "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg=="], - "@csstools/postcss-logical-overflow": ["@csstools/postcss-logical-overflow@2.0.0", "", { "peerDependencies": { "postcss": "^8.4" } }, "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA=="], + "@rtsao/scc": ["@rtsao/scc@1.1.0", "", {}, "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="], - "@csstools/postcss-logical-overscroll-behavior": ["@csstools/postcss-logical-overscroll-behavior@2.0.0", "", { "peerDependencies": { "postcss": "^8.4" } }, "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w=="], + "@rushstack/eslint-patch": ["@rushstack/eslint-patch@1.10.5", "", {}, "sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A=="], - "@csstools/postcss-logical-resize": ["@csstools/postcss-logical-resize@3.0.0", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg=="], + "@sec-ant/readable-stream": ["@sec-ant/readable-stream@0.4.1", "", {}, "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg=="], - "@csstools/postcss-logical-viewport-units": ["@csstools/postcss-logical-viewport-units@3.0.3", "", { "dependencies": { "@csstools/css-tokenizer": "^3.0.3", "@csstools/utilities": "^2.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-OC1IlG/yoGJdi0Y+7duz/kU/beCwO+Gua01sD6GtOtLi7ByQUpcIqs7UE/xuRPay4cHgOMatWdnDdsIDjnWpPw=="], + "@shikijs/core": ["@shikijs/core@2.5.0", "", { "dependencies": { "@shikijs/engine-javascript": "2.5.0", "@shikijs/engine-oniguruma": "2.5.0", "@shikijs/types": "2.5.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg=="], - "@csstools/postcss-media-minmax": ["@csstools/postcss-media-minmax@2.0.6", "", { "dependencies": { "@csstools/css-calc": "^2.1.1", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/media-query-list-parser": "^4.0.2" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-J1+4Fr2W3pLZsfxkFazK+9kr96LhEYqoeBszLmFjb6AjYs+g9oDAw3J5oQignLKk3rC9XHW+ebPTZ9FaW5u5pg=="], + "@shikijs/engine-javascript": ["@shikijs/engine-javascript@2.5.0", "", { "dependencies": { "@shikijs/types": "2.5.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^3.1.0" } }, "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w=="], - "@csstools/postcss-media-queries-aspect-ratio-number-values": ["@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4", "", { "dependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/media-query-list-parser": "^4.0.2" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-AnGjVslHMm5xw9keusQYvjVWvuS7KWK+OJagaG0+m9QnIjZsrysD2kJP/tr/UJIyYtMCtu8OkUd+Rajb4DqtIQ=="], + "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@2.5.0", "", { "dependencies": { "@shikijs/types": "2.5.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw=="], - "@csstools/postcss-nested-calc": ["@csstools/postcss-nested-calc@4.0.0", "", { "dependencies": { "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A=="], + "@shikijs/langs": ["@shikijs/langs@2.5.0", "", { "dependencies": { "@shikijs/types": "2.5.0" } }, "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w=="], - "@csstools/postcss-normalize-display-values": ["@csstools/postcss-normalize-display-values@4.0.0", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q=="], + "@shikijs/rehype": ["@shikijs/rehype@2.5.0", "", { "dependencies": { "@shikijs/types": "2.5.0", "@types/hast": "^3.0.4", "hast-util-to-string": "^3.0.1", "shiki": "2.5.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0" } }, "sha512-BO/QRsuQVdzQdoQLq//zcex8K6w57kD9zT8KhSs9kNBJFVDsxm6mTmi6OiRIxysZqhvVrEpY5Mh9IOv1NnjGFg=="], - "@csstools/postcss-oklab-function": ["@csstools/postcss-oklab-function@4.0.7", "", { "dependencies": { "@csstools/css-color-parser": "^3.0.7", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-I6WFQIbEKG2IO3vhaMGZDkucbCaUSXMxvHNzDdnfsTCF5tc0UlV3Oe2AhamatQoKFjBi75dSEMrgWq3+RegsOQ=="], + "@shikijs/themes": ["@shikijs/themes@2.5.0", "", { "dependencies": { "@shikijs/types": "2.5.0" } }, "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw=="], - "@csstools/postcss-progressive-custom-properties": ["@csstools/postcss-progressive-custom-properties@4.0.0", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-XQPtROaQjomnvLUSy/bALTR5VCtTVUFwYs1SblvYgLSeTo2a/bMNwUwo2piXw5rTv/FEYiy5yPSXBqg9OKUx7Q=="], + "@shikijs/transformers": ["@shikijs/transformers@2.5.0", "", { "dependencies": { "@shikijs/core": "2.5.0", "@shikijs/types": "2.5.0" } }, "sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg=="], - "@csstools/postcss-random-function": ["@csstools/postcss-random-function@1.0.2", "", { "dependencies": { "@csstools/css-calc": "^2.1.1", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-vBCT6JvgdEkvRc91NFoNrLjgGtkLWt47GKT6E2UDn3nd8ZkMBiziQ1Md1OiKoSsgzxsSnGKG3RVdhlbdZEkHjA=="], + "@shikijs/twoslash": ["@shikijs/twoslash@2.5.0", "", { "dependencies": { "@shikijs/core": "2.5.0", "@shikijs/types": "2.5.0", "twoslash": "^0.2.12" } }, "sha512-OdyoZRbzTB80qHFHdaXT070OG9hiljxbsJMZmrMAPWXG2e4FV8wbC63VBM5BJXa1DH645nw20VX1MzASkO5V9g=="], - "@csstools/postcss-relative-color-syntax": ["@csstools/postcss-relative-color-syntax@3.0.7", "", { "dependencies": { "@csstools/css-color-parser": "^3.0.7", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-apbT31vsJVd18MabfPOnE977xgct5B1I+Jpf+Munw3n6kKb1MMuUmGGH+PT9Hm/fFs6fe61Q/EWnkrb4bNoNQw=="], + "@shikijs/types": ["@shikijs/types@2.5.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw=="], - "@csstools/postcss-scope-pseudo-class": ["@csstools/postcss-scope-pseudo-class@4.0.1", "", { "dependencies": { "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q=="], + "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], - "@csstools/postcss-sign-functions": ["@csstools/postcss-sign-functions@1.1.1", "", { "dependencies": { "@csstools/css-calc": "^2.1.1", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-MslYkZCeMQDxetNkfmmQYgKCy4c+w9pPDfgOBCJOo/RI1RveEUdZQYtOfrC6cIZB7sD7/PHr2VGOcMXlZawrnA=="], + "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@4.0.0", "", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="], - "@csstools/postcss-stepped-value-functions": ["@csstools/postcss-stepped-value-functions@4.0.6", "", { "dependencies": { "@csstools/css-calc": "^2.1.1", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-/dwlO9w8vfKgiADxpxUbZOWlL5zKoRIsCymYoh1IPuBsXODKanKnfuZRr32DEqT0//3Av1VjfNZU9yhxtEfIeA=="], + "@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="], - "@csstools/postcss-text-decoration-shorthand": ["@csstools/postcss-text-decoration-shorthand@4.0.1", "", { "dependencies": { "@csstools/color-helpers": "^5.0.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-xPZIikbx6jyzWvhms27uugIc0I4ykH4keRvoa3rxX5K7lEhkbd54rjj/dv60qOCTisoS+3bmwJTeyV1VNBrXaw=="], + "@swc/counter": ["@swc/counter@0.1.3", "", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="], - "@csstools/postcss-trigonometric-functions": ["@csstools/postcss-trigonometric-functions@4.0.6", "", { "dependencies": { "@csstools/css-calc": "^2.1.1", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-c4Y1D2Why/PeccaSouXnTt6WcNHJkoJRidV2VW9s5gJ97cNxnLgQ4Qj8qOqkIR9VmTQKJyNcbF4hy79ZQnWD7A=="], + "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], - "@csstools/postcss-unset-value": ["@csstools/postcss-unset-value@4.0.0", "", { "peerDependencies": { "postcss": "^8.4" } }, "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA=="], + "@tailwindcss/node": ["@tailwindcss/node@4.0.7", "", { "dependencies": { "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "tailwindcss": "4.0.7" } }, "sha512-dkFXufkbRB2mu3FPsW5xLAUWJyexpJA+/VtQj18k3SUiJVLdpgzBd1v1gRRcIpEJj7K5KpxBKfOXlZxT3ZZRuA=="], - "@csstools/selector-resolve-nested": ["@csstools/selector-resolve-nested@3.0.0", "", { "peerDependencies": { "postcss-selector-parser": "^7.0.0" } }, "sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ=="], + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.0.7", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.0.7", "@tailwindcss/oxide-darwin-arm64": "4.0.7", "@tailwindcss/oxide-darwin-x64": "4.0.7", "@tailwindcss/oxide-freebsd-x64": "4.0.7", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.7", "@tailwindcss/oxide-linux-arm64-gnu": "4.0.7", "@tailwindcss/oxide-linux-arm64-musl": "4.0.7", "@tailwindcss/oxide-linux-x64-gnu": "4.0.7", "@tailwindcss/oxide-linux-x64-musl": "4.0.7", "@tailwindcss/oxide-win32-arm64-msvc": "4.0.7", "@tailwindcss/oxide-win32-x64-msvc": "4.0.7" } }, "sha512-yr6w5YMgjy+B+zkJiJtIYGXW+HNYOPfRPtSs+aqLnKwdEzNrGv4ZuJh9hYJ3mcA+HMq/K1rtFV+KsEr65S558g=="], - "@csstools/selector-specificity": ["@csstools/selector-specificity@5.0.0", "", { "peerDependencies": { "postcss-selector-parser": "^7.0.0" } }, "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw=="], + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.0.7", "", { "os": "android", "cpu": "arm64" }, "sha512-5iQXXcAeOHBZy8ASfHFm1k0O/9wR2E3tKh6+P+ilZZbQiMgu+qrnfpBWYPc3FPuQdWiWb73069WT5D+CAfx/tg=="], - "@csstools/utilities": ["@csstools/utilities@2.0.0", "", { "peerDependencies": { "postcss": "^8.4" } }, "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ=="], + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.0.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-7yGZtEc5IgVYylqK/2B0yVqoofk4UAbkn1ygNpIJZyrOhbymsfr8uUFCueTu2fUxmAYIfMZ8waWo2dLg/NgLgg=="], - "@discoveryjs/json-ext": ["@discoveryjs/json-ext@0.5.7", "", {}, "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw=="], + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.0.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-tPQDV20fBjb26yWbPqT1ZSoDChomMCiXTKn4jupMSoMCFyU7+OJvIY1ryjqBuY622dEBJ8LnCDDWsnj1lX9nNQ=="], - "@docsearch/css": ["@docsearch/css@3.8.2", "", {}, "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ=="], + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.0.7", "", { "os": "freebsd", "cpu": "x64" }, "sha512-sZqJpTyTZiknU9LLHuByg5GKTW+u3FqM7q7myequAXxKOpAFiOfXpY710FuMY+gjzSapyRbDXJlsTQtCyiTo5w=="], - "@docsearch/react": ["@docsearch/react@3.8.2", "", { "dependencies": { "@algolia/autocomplete-core": "1.17.7", "@algolia/autocomplete-preset-algolia": "1.17.7", "@docsearch/css": "3.8.2", "algoliasearch": "^5.14.2" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 19.0.0", "react": ">= 16.8.0 < 19.0.0", "react-dom": ">= 16.8.0 < 19.0.0", "search-insights": ">= 1 < 3" }, "optionalPeers": ["@types/react", "react", "react-dom", "search-insights"] }, "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg=="], + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.0.7", "", { "os": "linux", "cpu": "arm" }, "sha512-PBgvULgeSswjd8cbZ91gdIcIDMdc3TUHV5XemEpxlqt9M8KoydJzkuB/Dt910jYdofOIaTWRL6adG9nJICvU4A=="], - "@docusaurus/babel": ["@docusaurus/babel@3.7.0", "", { "dependencies": { "@babel/core": "^7.25.9", "@babel/generator": "^7.25.9", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-transform-runtime": "^7.25.9", "@babel/preset-env": "^7.25.9", "@babel/preset-react": "^7.25.9", "@babel/preset-typescript": "^7.25.9", "@babel/runtime": "^7.25.9", "@babel/runtime-corejs3": "^7.25.9", "@babel/traverse": "^7.25.9", "@docusaurus/logger": "3.7.0", "@docusaurus/utils": "3.7.0", "babel-plugin-dynamic-import-node": "^2.3.3", "fs-extra": "^11.1.1", "tslib": "^2.6.0" } }, "sha512-0H5uoJLm14S/oKV3Keihxvh8RV+vrid+6Gv+2qhuzbqHanawga8tYnsdpjEyt36ucJjqlby2/Md2ObWjA02UXQ=="], + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.0.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-By/a2yeh+e9b+C67F88ndSwVJl2A3tcUDb29FbedDi+DZ4Mr07Oqw9Y1DrDrtHIDhIZ3bmmiL1dkH2YxrtV+zw=="], - "@docusaurus/bundler": ["@docusaurus/bundler@3.7.0", "", { "dependencies": { "@babel/core": "^7.25.9", "@docusaurus/babel": "3.7.0", "@docusaurus/cssnano-preset": "3.7.0", "@docusaurus/logger": "3.7.0", "@docusaurus/types": "3.7.0", "@docusaurus/utils": "3.7.0", "babel-loader": "^9.2.1", "clean-css": "^5.3.2", "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.8.1", "css-minimizer-webpack-plugin": "^5.0.1", "cssnano": "^6.1.2", "file-loader": "^6.2.0", "html-minifier-terser": "^7.2.0", "mini-css-extract-plugin": "^2.9.1", "null-loader": "^4.0.1", "postcss": "^8.4.26", "postcss-loader": "^7.3.3", "postcss-preset-env": "^10.1.0", "react-dev-utils": "^12.0.1", "terser-webpack-plugin": "^5.3.9", "tslib": "^2.6.0", "url-loader": "^4.1.1", "webpack": "^5.95.0", "webpackbar": "^6.0.1" }, "peerDependencies": { "@docusaurus/faster": "*" }, "optionalPeers": ["@docusaurus/faster"] }, "sha512-CUUT9VlSGukrCU5ctZucykvgCISivct+cby28wJwCC/fkQFgAHRp/GKv2tx38ZmXb7nacrKzFTcp++f9txUYGg=="], + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.0.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-WHYs3cpPEJb/ccyT20NOzopYQkl7JKncNBUbb77YFlwlXMVJLLV3nrXQKhr7DmZxz2ZXqjyUwsj2rdzd9stYdw=="], - "@docusaurus/core": ["@docusaurus/core@3.7.0", "", { "dependencies": { "@docusaurus/babel": "3.7.0", "@docusaurus/bundler": "3.7.0", "@docusaurus/logger": "3.7.0", "@docusaurus/mdx-loader": "3.7.0", "@docusaurus/utils": "3.7.0", "@docusaurus/utils-common": "3.7.0", "@docusaurus/utils-validation": "3.7.0", "boxen": "^6.2.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", "cli-table3": "^0.6.3", "combine-promises": "^1.1.0", "commander": "^5.1.0", "core-js": "^3.31.1", "del": "^6.1.1", "detect-port": "^1.5.1", "escape-html": "^1.0.3", "eta": "^2.2.0", "eval": "^0.1.8", "fs-extra": "^11.1.1", "html-tags": "^3.3.1", "html-webpack-plugin": "^5.6.0", "leven": "^3.1.0", "lodash": "^4.17.21", "p-map": "^4.0.0", "prompts": "^2.4.2", "react-dev-utils": "^12.0.1", "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", "react-loadable-ssr-addon-v5-slorber": "^1.0.1", "react-router": "^5.3.4", "react-router-config": "^5.1.1", "react-router-dom": "^5.3.4", "semver": "^7.5.4", "serve-handler": "^6.1.6", "shelljs": "^0.8.5", "tslib": "^2.6.0", "update-notifier": "^6.0.2", "webpack": "^5.95.0", "webpack-bundle-analyzer": "^4.10.2", "webpack-dev-server": "^4.15.2", "webpack-merge": "^6.0.1" }, "peerDependencies": { "@mdx-js/react": "^3.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "bin": { "docusaurus": "bin/docusaurus.mjs" } }, "sha512-b0fUmaL+JbzDIQaamzpAFpTviiaU4cX3Qz8cuo14+HGBCwa0evEK0UYCBFY3n4cLzL8Op1BueeroUD2LYAIHbQ=="], + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.0.7", "", { "os": "linux", "cpu": "x64" }, "sha512-7bP1UyuX9kFxbOwkeIJhBZNevKYPXB6xZI37v09fqi6rqRJR8elybwjMUHm54GVP+UTtJ14ueB1K54Dy1tIO6w=="], - "@docusaurus/cssnano-preset": ["@docusaurus/cssnano-preset@3.7.0", "", { "dependencies": { "cssnano-preset-advanced": "^6.1.2", "postcss": "^8.4.38", "postcss-sort-media-queries": "^5.2.0", "tslib": "^2.6.0" } }, "sha512-X9GYgruZBSOozg4w4dzv9uOz8oK/EpPVQXkp0MM6Tsgp/nRIU9hJzJ0Pxg1aRa3xCeEQTOimZHcocQFlLwYajQ=="], + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.0.7", "", { "os": "linux", "cpu": "x64" }, "sha512-gBQIV8nL/LuhARNGeroqzXymMzzW5wQzqlteVqOVoqwEfpHOP3GMird5pGFbnpY+NP0fOlsZGrxxOPQ4W/84bQ=="], - "@docusaurus/faster": ["@docusaurus/faster@3.7.0", "", { "dependencies": { "@docusaurus/types": "3.7.0", "@rspack/core": "1.2.0-alpha.0", "@swc/core": "^1.7.39", "@swc/html": "^1.7.39", "browserslist": "^4.24.2", "lightningcss": "^1.27.0", "swc-loader": "^0.2.6", "tslib": "^2.6.0", "webpack": "^5.95.0" } }, "sha512-d+7uyOEs3SBk38i2TL79N6mFaP7J4knc5lPX/W9od+jplXZhnDdl5ZMh2u2Lg7JxGV/l33Bd7h/xwv4mr21zag=="], + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.0.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-aH530NFfx0kpQpvYMfWoeG03zGnRCMVlQG8do/5XeahYydz+6SIBxA1tl/cyITSJyWZHyVt6GVNkXeAD30v0Xg=="], - "@docusaurus/logger": ["@docusaurus/logger@3.7.0", "", { "dependencies": { "chalk": "^4.1.2", "tslib": "^2.6.0" } }, "sha512-z7g62X7bYxCYmeNNuO9jmzxLQG95q9QxINCwpboVcNff3SJiHJbGrarxxOVMVmAh1MsrSfxWkVGv4P41ktnFsA=="], + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.0.7", "", { "os": "win32", "cpu": "x64" }, "sha512-8Cva6bbJN7ZJx320k7vxGGdU0ewmpfS5A4PudyzUuofdi8MgeINuiiWiPQ0VZCda/GX88K6qp+6UpDZNVr8HMQ=="], - "@docusaurus/lqip-loader": ["@docusaurus/lqip-loader@3.7.0", "", { "dependencies": { "@docusaurus/logger": "3.7.0", "file-loader": "^6.2.0", "lodash": "^4.17.21", "sharp": "^0.32.3", "tslib": "^2.6.0" } }, "sha512-bEQ/6o9VSzpqV6OYbyoZUtrKAFJOPKdo8tBmvZCee3M+Hl4V1XAg4TY/KmlAlw6HfMdr42FuqGIy9CsFNxL3CQ=="], + "@tailwindcss/postcss": ["@tailwindcss/postcss@4.0.7", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.0.7", "@tailwindcss/oxide": "4.0.7", "lightningcss": "^1.29.1", "postcss": "^8.4.41", "tailwindcss": "4.0.7" } }, "sha512-zXcKs1uGssVDlnsQ+iwrkul5GPKvsXPynGCuk/eXLx3DVhHlQKMpA6tXN2oO28x2ki1xRBTfadKiHy2taVvp7g=="], - "@docusaurus/mdx-loader": ["@docusaurus/mdx-loader@3.7.0", "", { "dependencies": { "@docusaurus/logger": "3.7.0", "@docusaurus/utils": "3.7.0", "@docusaurus/utils-validation": "3.7.0", "@mdx-js/mdx": "^3.0.0", "@slorber/remark-comment": "^1.0.0", "escape-html": "^1.0.3", "estree-util-value-to-estree": "^3.0.1", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", "image-size": "^1.0.2", "mdast-util-mdx": "^3.0.0", "mdast-util-to-string": "^4.0.0", "rehype-raw": "^7.0.0", "remark-directive": "^3.0.0", "remark-emoji": "^4.0.0", "remark-frontmatter": "^5.0.0", "remark-gfm": "^4.0.0", "stringify-object": "^3.3.0", "tslib": "^2.6.0", "unified": "^11.0.3", "unist-util-visit": "^5.0.0", "url-loader": "^4.1.1", "vfile": "^6.0.1", "webpack": "^5.88.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-OFBG6oMjZzc78/U3WNPSHs2W9ZJ723ewAcvVJaqS0VgyeUfmzUV8f1sv+iUHA0DtwiR5T5FjOxj6nzEE8LY6VA=="], + "@theguild/remark-mermaid": ["@theguild/remark-mermaid@0.2.0", "", { "dependencies": { "mermaid": "^11.0.0", "unist-util-visit": "^5.0.0" }, "peerDependencies": { "react": "^18.2.0" } }, "sha512-o8n57TJy0OI4PCrNw8z6S+vpHtrwoQZzTA5Y3fL0U1NDRIoMg/78duWgEBFsCZcWM1G6zjE91yg1aKCsDwgE2Q=="], - "@docusaurus/module-type-aliases": ["@docusaurus/module-type-aliases@3.7.0", "", { "dependencies": { "@docusaurus/types": "3.7.0", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", "@types/react-router-dom": "*", "react-helmet-async": "npm:@slorber/react-helmet-async@*", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" }, "peerDependencies": { "react": "*", "react-dom": "*" } }, "sha512-g7WdPqDNaqA60CmBrr0cORTrsOit77hbsTj7xE2l71YhBn79sxdm7WMK7wfhcaafkbpIh7jv5ef5TOpf1Xv9Lg=="], + "@ts-morph/common": ["@ts-morph/common@0.26.1", "", { "dependencies": { "fast-glob": "^3.3.2", "minimatch": "^9.0.4", "path-browserify": "^1.0.1" } }, "sha512-Sn28TGl/4cFpcM+jwsH1wLncYq3FtN/BIpem+HOygfBWPT5pAeS5dB4VFVzV8FbnOKHpDLZmvAl4AjPEev5idA=="], - "@docusaurus/plugin-content-blog": ["@docusaurus/plugin-content-blog@3.7.0", "", { "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/logger": "3.7.0", "@docusaurus/mdx-loader": "3.7.0", "@docusaurus/theme-common": "3.7.0", "@docusaurus/types": "3.7.0", "@docusaurus/utils": "3.7.0", "@docusaurus/utils-common": "3.7.0", "@docusaurus/utils-validation": "3.7.0", "cheerio": "1.0.0-rc.12", "feed": "^4.2.2", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "reading-time": "^1.5.0", "srcset": "^4.0.0", "tslib": "^2.6.0", "unist-util-visit": "^5.0.0", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-EFLgEz6tGHYWdPU0rK8tSscZwx+AsyuBW/r+tNig2kbccHYGUJmZtYN38GjAa3Fda4NU+6wqUO5kTXQSRBQD3g=="], + "@types/acorn": ["@types/acorn@4.0.6", "", { "dependencies": { "@types/estree": "*" } }, "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ=="], - "@docusaurus/plugin-content-docs": ["@docusaurus/plugin-content-docs@3.7.0", "", { "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/logger": "3.7.0", "@docusaurus/mdx-loader": "3.7.0", "@docusaurus/module-type-aliases": "3.7.0", "@docusaurus/theme-common": "3.7.0", "@docusaurus/types": "3.7.0", "@docusaurus/utils": "3.7.0", "@docusaurus/utils-common": "3.7.0", "@docusaurus/utils-validation": "3.7.0", "@types/react-router-config": "^5.0.7", "combine-promises": "^1.1.0", "fs-extra": "^11.1.1", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "tslib": "^2.6.0", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-GXg5V7kC9FZE4FkUZA8oo/NrlRb06UwuICzI6tcbzj0+TVgjq/mpUXXzSgKzMS82YByi4dY2Q808njcBCyy6tQ=="], + "@types/d3": ["@types/d3@7.4.3", "", { "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", "@types/d3-brush": "*", "@types/d3-chord": "*", "@types/d3-color": "*", "@types/d3-contour": "*", "@types/d3-delaunay": "*", "@types/d3-dispatch": "*", "@types/d3-drag": "*", "@types/d3-dsv": "*", "@types/d3-ease": "*", "@types/d3-fetch": "*", "@types/d3-force": "*", "@types/d3-format": "*", "@types/d3-geo": "*", "@types/d3-hierarchy": "*", "@types/d3-interpolate": "*", "@types/d3-path": "*", "@types/d3-polygon": "*", "@types/d3-quadtree": "*", "@types/d3-random": "*", "@types/d3-scale": "*", "@types/d3-scale-chromatic": "*", "@types/d3-selection": "*", "@types/d3-shape": "*", "@types/d3-time": "*", "@types/d3-time-format": "*", "@types/d3-timer": "*", "@types/d3-transition": "*", "@types/d3-zoom": "*" } }, "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww=="], - "@docusaurus/plugin-content-pages": ["@docusaurus/plugin-content-pages@3.7.0", "", { "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/mdx-loader": "3.7.0", "@docusaurus/types": "3.7.0", "@docusaurus/utils": "3.7.0", "@docusaurus/utils-validation": "3.7.0", "fs-extra": "^11.1.1", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-YJSU3tjIJf032/Aeao8SZjFOrXJbz/FACMveSMjLyMH4itQyZ2XgUIzt4y+1ISvvk5zrW4DABVT2awTCqBkx0Q=="], + "@types/d3-array": ["@types/d3-array@3.2.1", "", {}, "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg=="], - "@docusaurus/plugin-debug": ["@docusaurus/plugin-debug@3.7.0", "", { "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/types": "3.7.0", "@docusaurus/utils": "3.7.0", "fs-extra": "^11.1.1", "react-json-view-lite": "^1.2.0", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-Qgg+IjG/z4svtbCNyTocjIwvNTNEwgRjSXXSJkKVG0oWoH0eX/HAPiu+TS1HBwRPQV+tTYPWLrUypYFepfujZA=="], + "@types/d3-axis": ["@types/d3-axis@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw=="], - "@docusaurus/plugin-google-analytics": ["@docusaurus/plugin-google-analytics@3.7.0", "", { "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/types": "3.7.0", "@docusaurus/utils-validation": "3.7.0", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-otIqiRV/jka6Snjf+AqB360XCeSv7lQC+DKYW+EUZf6XbuE8utz5PeUQ8VuOcD8Bk5zvT1MC4JKcd5zPfDuMWA=="], + "@types/d3-brush": ["@types/d3-brush@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A=="], - "@docusaurus/plugin-google-gtag": ["@docusaurus/plugin-google-gtag@3.7.0", "", { "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/types": "3.7.0", "@docusaurus/utils-validation": "3.7.0", "@types/gtag.js": "^0.0.12", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-M3vrMct1tY65ModbyeDaMoA+fNJTSPe5qmchhAbtqhDD/iALri0g9LrEpIOwNaoLmm6lO88sfBUADQrSRSGSWA=="], + "@types/d3-chord": ["@types/d3-chord@3.0.6", "", {}, "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg=="], - "@docusaurus/plugin-google-tag-manager": ["@docusaurus/plugin-google-tag-manager@3.7.0", "", { "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/types": "3.7.0", "@docusaurus/utils-validation": "3.7.0", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-X8U78nb8eiMiPNg3jb9zDIVuuo/rE1LjGDGu+5m5CX4UBZzjMy+klOY2fNya6x8ACyE/L3K2erO1ErheP55W/w=="], + "@types/d3-color": ["@types/d3-color@3.1.3", "", {}, "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="], - "@docusaurus/plugin-ideal-image": ["@docusaurus/plugin-ideal-image@3.7.0", "", { "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/lqip-loader": "3.7.0", "@docusaurus/responsive-loader": "^1.7.0", "@docusaurus/theme-translations": "3.7.0", "@docusaurus/types": "3.7.0", "@docusaurus/utils-validation": "3.7.0", "@slorber/react-ideal-image": "^0.0.14", "react-waypoint": "^10.3.0", "sharp": "^0.32.3", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "peerDependencies": { "jimp": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["jimp"] }, "sha512-1IKmXJ6I7WKxfESdCMroechuoQEo1IZzIOhQlga8m7ioHzu+sb+Egnyrau2buCYh0QJ8gZoXtscSt5TBFlzMOQ=="], + "@types/d3-contour": ["@types/d3-contour@3.0.6", "", { "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" } }, "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg=="], - "@docusaurus/plugin-sitemap": ["@docusaurus/plugin-sitemap@3.7.0", "", { "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/logger": "3.7.0", "@docusaurus/types": "3.7.0", "@docusaurus/utils": "3.7.0", "@docusaurus/utils-common": "3.7.0", "@docusaurus/utils-validation": "3.7.0", "fs-extra": "^11.1.1", "sitemap": "^7.1.1", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-bTRT9YLZ/8I/wYWKMQke18+PF9MV8Qub34Sku6aw/vlZ/U+kuEuRpQ8bTcNOjaTSfYsWkK4tTwDMHK2p5S86cA=="], + "@types/d3-delaunay": ["@types/d3-delaunay@6.0.4", "", {}, "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw=="], - "@docusaurus/plugin-svgr": ["@docusaurus/plugin-svgr@3.7.0", "", { "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/types": "3.7.0", "@docusaurus/utils": "3.7.0", "@docusaurus/utils-validation": "3.7.0", "@svgr/core": "8.1.0", "@svgr/webpack": "^8.1.0", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-HByXIZTbc4GV5VAUkZ2DXtXv1Qdlnpk3IpuImwSnEzCDBkUMYcec5282hPjn6skZqB25M1TYCmWS91UbhBGxQg=="], + "@types/d3-dispatch": ["@types/d3-dispatch@3.0.6", "", {}, "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ=="], - "@docusaurus/preset-classic": ["@docusaurus/preset-classic@3.7.0", "", { "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/plugin-content-blog": "3.7.0", "@docusaurus/plugin-content-docs": "3.7.0", "@docusaurus/plugin-content-pages": "3.7.0", "@docusaurus/plugin-debug": "3.7.0", "@docusaurus/plugin-google-analytics": "3.7.0", "@docusaurus/plugin-google-gtag": "3.7.0", "@docusaurus/plugin-google-tag-manager": "3.7.0", "@docusaurus/plugin-sitemap": "3.7.0", "@docusaurus/plugin-svgr": "3.7.0", "@docusaurus/theme-classic": "3.7.0", "@docusaurus/theme-common": "3.7.0", "@docusaurus/theme-search-algolia": "3.7.0", "@docusaurus/types": "3.7.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-nPHj8AxDLAaQXs+O6+BwILFuhiWbjfQWrdw2tifOClQoNfuXDjfjogee6zfx6NGHWqshR23LrcN115DmkHC91Q=="], + "@types/d3-drag": ["@types/d3-drag@3.0.7", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ=="], - "@docusaurus/responsive-loader": ["@docusaurus/responsive-loader@1.7.0", "", { "dependencies": { "loader-utils": "^2.0.0" }, "peerDependencies": { "jimp": "*", "sharp": "*" }, "optionalPeers": ["jimp", "sharp"] }, "sha512-N0cWuVqTRXRvkBxeMQcy/OF2l7GN8rmni5EzR3HpwR+iU2ckYPnziceojcxvvxQ5NqZg1QfEW0tycQgHp+e+Nw=="], + "@types/d3-dsv": ["@types/d3-dsv@3.0.7", "", {}, "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g=="], - "@docusaurus/theme-classic": ["@docusaurus/theme-classic@3.7.0", "", { "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/logger": "3.7.0", "@docusaurus/mdx-loader": "3.7.0", "@docusaurus/module-type-aliases": "3.7.0", "@docusaurus/plugin-content-blog": "3.7.0", "@docusaurus/plugin-content-docs": "3.7.0", "@docusaurus/plugin-content-pages": "3.7.0", "@docusaurus/theme-common": "3.7.0", "@docusaurus/theme-translations": "3.7.0", "@docusaurus/types": "3.7.0", "@docusaurus/utils": "3.7.0", "@docusaurus/utils-common": "3.7.0", "@docusaurus/utils-validation": "3.7.0", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "copy-text-to-clipboard": "^3.2.0", "infima": "0.2.0-alpha.45", "lodash": "^4.17.21", "nprogress": "^0.2.0", "postcss": "^8.4.26", "prism-react-renderer": "^2.3.0", "prismjs": "^1.29.0", "react-router-dom": "^5.3.4", "rtlcss": "^4.1.0", "tslib": "^2.6.0", "utility-types": "^3.10.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-MnLxG39WcvLCl4eUzHr0gNcpHQfWoGqzADCly54aqCofQX6UozOS9Th4RK3ARbM9m7zIRv3qbhggI53dQtx/hQ=="], + "@types/d3-ease": ["@types/d3-ease@3.0.2", "", {}, "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA=="], - "@docusaurus/theme-common": ["@docusaurus/theme-common@3.7.0", "", { "dependencies": { "@docusaurus/mdx-loader": "3.7.0", "@docusaurus/module-type-aliases": "3.7.0", "@docusaurus/utils": "3.7.0", "@docusaurus/utils-common": "3.7.0", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", "clsx": "^2.0.0", "parse-numeric-range": "^1.3.0", "prism-react-renderer": "^2.3.0", "tslib": "^2.6.0", "utility-types": "^3.10.0" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-8eJ5X0y+gWDsURZnBfH0WabdNm8XMCXHv8ENy/3Z/oQKwaB/EHt5lP9VsTDTf36lKEp0V6DjzjFyFIB+CetL0A=="], + "@types/d3-fetch": ["@types/d3-fetch@3.0.7", "", { "dependencies": { "@types/d3-dsv": "*" } }, "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA=="], - "@docusaurus/theme-search-algolia": ["@docusaurus/theme-search-algolia@3.7.0", "", { "dependencies": { "@docsearch/react": "^3.8.1", "@docusaurus/core": "3.7.0", "@docusaurus/logger": "3.7.0", "@docusaurus/plugin-content-docs": "3.7.0", "@docusaurus/theme-common": "3.7.0", "@docusaurus/theme-translations": "3.7.0", "@docusaurus/utils": "3.7.0", "@docusaurus/utils-validation": "3.7.0", "algoliasearch": "^5.17.1", "algoliasearch-helper": "^3.22.6", "clsx": "^2.0.0", "eta": "^2.2.0", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "tslib": "^2.6.0", "utility-types": "^3.10.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-Al/j5OdzwRU1m3falm+sYy9AaB93S1XF1Lgk9Yc6amp80dNxJVplQdQTR4cYdzkGtuQqbzUA8+kaoYYO0RbK6g=="], + "@types/d3-force": ["@types/d3-force@3.0.10", "", {}, "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw=="], - "@docusaurus/theme-translations": ["@docusaurus/theme-translations@3.7.0", "", { "dependencies": { "fs-extra": "^11.1.1", "tslib": "^2.6.0" } }, "sha512-Ewq3bEraWDmienM6eaNK7fx+/lHMtGDHQyd1O+4+3EsDxxUmrzPkV7Ct3nBWTuE0MsoZr3yNwQVKjllzCMuU3g=="], + "@types/d3-format": ["@types/d3-format@3.0.4", "", {}, "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g=="], - "@docusaurus/tsconfig": ["@docusaurus/tsconfig@3.7.0", "", {}, "sha512-vRsyj3yUZCjscgfgcFYjIsTcAru/4h4YH2/XAE8Rs7wWdnng98PgWKvP5ovVc4rmRpRg2WChVW0uOy2xHDvDBQ=="], + "@types/d3-geo": ["@types/d3-geo@3.1.0", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ=="], - "@docusaurus/types": ["@docusaurus/types@3.7.0", "", { "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", "@types/react": "*", "commander": "^5.1.0", "joi": "^17.9.2", "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "utility-types": "^3.10.0", "webpack": "^5.95.0", "webpack-merge": "^5.9.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ=="], + "@types/d3-hierarchy": ["@types/d3-hierarchy@3.1.7", "", {}, "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg=="], - "@docusaurus/utils": ["@docusaurus/utils@3.7.0", "", { "dependencies": { "@docusaurus/logger": "3.7.0", "@docusaurus/types": "3.7.0", "@docusaurus/utils-common": "3.7.0", "escape-string-regexp": "^4.0.0", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", "github-slugger": "^1.5.0", "globby": "^11.1.0", "gray-matter": "^4.0.3", "jiti": "^1.20.0", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "micromatch": "^4.0.5", "prompts": "^2.4.2", "resolve-pathname": "^3.0.0", "shelljs": "^0.8.5", "tslib": "^2.6.0", "url-loader": "^4.1.1", "utility-types": "^3.10.0", "webpack": "^5.88.1" } }, "sha512-e7zcB6TPnVzyUaHMJyLSArKa2AG3h9+4CfvKXKKWNx6hRs+p0a+u7HHTJBgo6KW2m+vqDnuIHK4X+bhmoghAFA=="], + "@types/d3-interpolate": ["@types/d3-interpolate@3.0.4", "", { "dependencies": { "@types/d3-color": "*" } }, "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA=="], - "@docusaurus/utils-common": ["@docusaurus/utils-common@3.7.0", "", { "dependencies": { "@docusaurus/types": "3.7.0", "tslib": "^2.6.0" } }, "sha512-IZeyIfCfXy0Mevj6bWNg7DG7B8G+S6o6JVpddikZtWyxJguiQ7JYr0SIZ0qWd8pGNuMyVwriWmbWqMnK7Y5PwA=="], + "@types/d3-path": ["@types/d3-path@3.1.1", "", {}, "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg=="], - "@docusaurus/utils-validation": ["@docusaurus/utils-validation@3.7.0", "", { "dependencies": { "@docusaurus/logger": "3.7.0", "@docusaurus/utils": "3.7.0", "@docusaurus/utils-common": "3.7.0", "fs-extra": "^11.2.0", "joi": "^17.9.2", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "tslib": "^2.6.0" } }, "sha512-w8eiKk8mRdN+bNfeZqC4nyFoxNyI1/VExMKAzD9tqpJfLLbsa46Wfn5wcKH761g9WkKh36RtFV49iL9lh1DYBA=="], + "@types/d3-polygon": ["@types/d3-polygon@3.0.2", "", {}, "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA=="], - "@fontsource/figtree": ["@fontsource/figtree@5.1.2", "", {}, "sha512-WlauXrKAtHOadYti0l/dA2ez4lK7Yw2iQccv3ulmkMXgfKOdMjngob2AkIVxFyNLcvorVhh/Eq77DiWSGoR2bw=="], + "@types/d3-quadtree": ["@types/d3-quadtree@3.0.6", "", {}, "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg=="], - "@graphql-typed-document-node/core": ["@graphql-typed-document-node/core@3.2.0", "", { "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ=="], + "@types/d3-random": ["@types/d3-random@3.0.3", "", {}, "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ=="], - "@hapi/hoek": ["@hapi/hoek@9.3.0", "", {}, "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ=="], + "@types/d3-scale": ["@types/d3-scale@4.0.9", "", { "dependencies": { "@types/d3-time": "*" } }, "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw=="], - "@hapi/topo": ["@hapi/topo@5.1.0", "", { "dependencies": { "@hapi/hoek": "^9.0.0" } }, "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg=="], + "@types/d3-scale-chromatic": ["@types/d3-scale-chromatic@3.1.0", "", {}, "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ=="], - "@jest/schemas": ["@jest/schemas@29.6.3", "", { "dependencies": { "@sinclair/typebox": "^0.27.8" } }, "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA=="], + "@types/d3-selection": ["@types/d3-selection@3.0.11", "", {}, "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w=="], - "@jest/types": ["@jest/types@29.6.3", "", { "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw=="], + "@types/d3-shape": ["@types/d3-shape@3.1.7", "", { "dependencies": { "@types/d3-path": "*" } }, "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg=="], - "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.8", "", { "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA=="], + "@types/d3-time": ["@types/d3-time@3.0.4", "", {}, "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g=="], - "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + "@types/d3-time-format": ["@types/d3-time-format@4.0.3", "", {}, "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg=="], - "@jridgewell/set-array": ["@jridgewell/set-array@1.2.1", "", {}, "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="], + "@types/d3-timer": ["@types/d3-timer@3.0.2", "", {}, "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="], - "@jridgewell/source-map": ["@jridgewell/source-map@0.3.6", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ=="], + "@types/d3-transition": ["@types/d3-transition@3.0.9", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg=="], - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="], + "@types/d3-zoom": ["@types/d3-zoom@3.0.8", "", { "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" } }, "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw=="], - "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], + "@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="], - "@leichtgewicht/ip-codec": ["@leichtgewicht/ip-codec@2.0.5", "", {}, "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw=="], + "@types/estree": ["@types/estree@1.0.6", "", {}, "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="], - "@mdx-js/mdx": ["@mdx-js/mdx@3.1.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.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" } }, "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw=="], + "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], - "@mdx-js/react": ["@mdx-js/react@3.1.0", "", { "dependencies": { "@types/mdx": "^2.0.0" }, "peerDependencies": { "@types/react": ">=16", "react": ">=16" } }, "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ=="], + "@types/geojson": ["@types/geojson@7946.0.16", "", {}, "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg=="], - "@module-federation/error-codes": ["@module-federation/error-codes@0.8.4", "", {}, "sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ=="], + "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], - "@module-federation/runtime": ["@module-federation/runtime@0.8.4", "", { "dependencies": { "@module-federation/error-codes": "0.8.4", "@module-federation/sdk": "0.8.4" } }, "sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ=="], + "@types/json5": ["@types/json5@0.0.29", "", {}, "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="], - "@module-federation/runtime-tools": ["@module-federation/runtime-tools@0.8.4", "", { "dependencies": { "@module-federation/runtime": "0.8.4", "@module-federation/webpack-bundler-runtime": "0.8.4" } }, "sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q=="], + "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], - "@module-federation/sdk": ["@module-federation/sdk@0.8.4", "", { "dependencies": { "isomorphic-rslog": "0.0.6" } }, "sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg=="], + "@types/mdx": ["@types/mdx@2.0.13", "", {}, "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw=="], - "@module-federation/webpack-bundler-runtime": ["@module-federation/webpack-bundler-runtime@0.8.4", "", { "dependencies": { "@module-federation/runtime": "0.8.4", "@module-federation/sdk": "0.8.4" } }, "sha512-HggROJhvHPUX7uqBD/XlajGygMNM1DG0+4OAkk8MBQe4a18QzrRNzZt6XQbRTSG4OaEoyRWhQHvYD3Yps405tQ=="], + "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], - "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + "@types/node": ["@types/node@22.13.4", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg=="], - "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + "@types/react": ["@types/react@19.0.10", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g=="], - "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + "@types/react-dom": ["@types/react-dom@19.0.4", "", { "peerDependencies": { "@types/react": "^19.0.0" } }, "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg=="], - "@pnpm/config.env-replace": ["@pnpm/config.env-replace@1.1.0", "", {}, "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w=="], + "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], - "@pnpm/network.ca-file": ["@pnpm/network.ca-file@1.0.2", "", { "dependencies": { "graceful-fs": "4.2.10" } }, "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA=="], + "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], - "@pnpm/npm-conf": ["@pnpm/npm-conf@2.3.1", "", { "dependencies": { "@pnpm/config.env-replace": "^1.1.0", "@pnpm/network.ca-file": "^1.0.1", "config-chain": "^1.1.11" } }, "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw=="], + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.24.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.24.1", "@typescript-eslint/type-utils": "8.24.1", "@typescript-eslint/utils": "8.24.1", "@typescript-eslint/visitor-keys": "8.24.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA=="], - "@polka/url": ["@polka/url@1.0.0-next.28", "", {}, "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw=="], + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.24.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.24.1", "@typescript-eslint/types": "8.24.1", "@typescript-eslint/typescript-estree": "8.24.1", "@typescript-eslint/visitor-keys": "8.24.1", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ=="], - "@rspack/binding": ["@rspack/binding@1.2.0-alpha.0", "", { "optionalDependencies": { "@rspack/binding-darwin-arm64": "1.2.0-alpha.0", "@rspack/binding-darwin-x64": "1.2.0-alpha.0", "@rspack/binding-linux-arm64-gnu": "1.2.0-alpha.0", "@rspack/binding-linux-arm64-musl": "1.2.0-alpha.0", "@rspack/binding-linux-x64-gnu": "1.2.0-alpha.0", "@rspack/binding-linux-x64-musl": "1.2.0-alpha.0", "@rspack/binding-win32-arm64-msvc": "1.2.0-alpha.0", "@rspack/binding-win32-ia32-msvc": "1.2.0-alpha.0", "@rspack/binding-win32-x64-msvc": "1.2.0-alpha.0" } }, "sha512-rtmDScjtGUxv1zA1m3jXecuX2LsgNp4aWaAjOowHasoO1YqfHK0fMyprCiPowTjoHtpZ7Xt/tnMhii0GlGIITQ=="], + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.24.1", "", { "dependencies": { "@typescript-eslint/types": "8.24.1", "@typescript-eslint/visitor-keys": "8.24.1" } }, "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q=="], - "@rspack/binding-darwin-arm64": ["@rspack/binding-darwin-arm64@1.2.0-alpha.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-EPprIe6BrkJ9XuWL5HBXJFaH4vvt5C2kBTvyu+t5E3wacyH9A0gIDaMOEmH30Kt3zl4B07OCBC1nCiJ1sTtimw=="], + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.24.1", "", { "dependencies": { "@typescript-eslint/typescript-estree": "8.24.1", "@typescript-eslint/utils": "8.24.1", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw=="], - "@rspack/binding-darwin-x64": ["@rspack/binding-darwin-x64@1.2.0-alpha.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-ACwdgWg0V9j0o3gs1wvhqRJ4xui82L+Fii9Fa74az7P974iWO0ZHw4QIUaO5r434+v9OWMqpyBRN1M7cBrx3GA=="], + "@typescript-eslint/types": ["@typescript-eslint/types@8.24.1", "", {}, "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A=="], - "@rspack/binding-linux-arm64-gnu": ["@rspack/binding-linux-arm64-gnu@1.2.0-alpha.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-Ex9SviDikz9E36R4I5si/626FsYOJ35l1Lb+DCRUijjjsvoq4k8Shi8csyBfubR+JZ1M0uOXjJftu1Gm5z8Q0Q=="], + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.24.1", "", { "dependencies": { "@typescript-eslint/types": "8.24.1", "@typescript-eslint/visitor-keys": "8.24.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "typescript": ">=4.8.4 <5.8.0" } }, "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg=="], - "@rspack/binding-linux-arm64-musl": ["@rspack/binding-linux-arm64-musl@1.2.0-alpha.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-U320xZmTcTwQ0BR8yIzE1L4olMCqzYkT3VFjXPR6iok/Mj0xjfk/SiKhLoZml473qQrHSGaFJ321cp02zgTFJg=="], + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.24.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.24.1", "@typescript-eslint/types": "8.24.1", "@typescript-eslint/typescript-estree": "8.24.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ=="], - "@rspack/binding-linux-x64-gnu": ["@rspack/binding-linux-x64-gnu@1.2.0-alpha.0", "", { "os": "linux", "cpu": "x64" }, "sha512-GNur7VXJ29NtJhY8PYgv3Fv1Zxbx0XZhDUj/+7Wp40CAXRFsLgXScZIRh2U30TECYaihboZ7BD+xugv8MQPDoA=="], + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.24.1", "", { "dependencies": { "@typescript-eslint/types": "8.24.1", "eslint-visitor-keys": "^4.2.0" } }, "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg=="], - "@rspack/binding-linux-x64-musl": ["@rspack/binding-linux-x64-musl@1.2.0-alpha.0", "", { "os": "linux", "cpu": "x64" }, "sha512-0IdswzpG9+sgxvGu7KTwSeqfV0hvciaHMoZvGklfZa2txpcUqAg4ASp7uxrNaUo+G2a1fTUMOtP9351Cnl8DBg=="], + "@typescript/vfs": ["@typescript/vfs@1.6.1", "", { "dependencies": { "debug": "^4.1.1" }, "peerDependencies": { "typescript": "*" } }, "sha512-JwoxboBh7Oz1v38tPbkrZ62ZXNHAk9bJ7c9x0eI5zBfBnBYGhURdbnh7Z4smN/MV48Y5OCcZb58n972UtbazsA=="], - "@rspack/binding-win32-arm64-msvc": ["@rspack/binding-win32-arm64-msvc@1.2.0-alpha.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-FcFgoWGjSrCfJwDZY5bDA2aO02l5BP7qdyW6ehjwBiMxNZyeSbGvKz3jXl5TtTHR1IgdLzi9kEJkTPYLLMiE1A=="], + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], - "@rspack/binding-win32-ia32-msvc": ["@rspack/binding-win32-ia32-msvc@1.2.0-alpha.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-cZYFJw6DKCaPPz9VDJPndZ9KSp+/eedgt11Mv8OTpq+MJTUjB2HjtcjqJh8xxVcp3IuwvSMndTkC69WWt/4feA=="], + "acorn": ["acorn@8.14.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="], - "@rspack/binding-win32-x64-msvc": ["@rspack/binding-win32-x64-msvc@1.2.0-alpha.0", "", { "os": "win32", "cpu": "x64" }, "sha512-gfOqb/rq5716NV+Vbk5MteBhV4VhJeSoh2+dRQjdy4EN1wPZ+Uebs9ORVrT9uRjY3JrPn/5PkAHJXtgaOA9Uyg=="], + "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - "@rspack/core": ["@rspack/core@1.2.0-alpha.0", "", { "dependencies": { "@module-federation/runtime-tools": "0.8.4", "@rspack/binding": "1.2.0-alpha.0", "@rspack/lite-tapable": "1.0.1", "caniuse-lite": "^1.0.30001616" }, "peerDependencies": { "@swc/helpers": ">=0.5.1" }, "optionalPeers": ["@swc/helpers"] }, "sha512-YiD0vFDj+PfHs3ZqJwPNhTYyVTb4xR6FpOI5WJ4jJHV4lgdErS+RChTCPhf1xeqxfuTSSnFA7UeqosLhBuNSqQ=="], + "ajv": ["ajv@6.12.6", "", { "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" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], - "@rspack/lite-tapable": ["@rspack/lite-tapable@1.0.1", "", {}, "sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w=="], + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "@sideway/address": ["@sideway/address@4.1.5", "", { "dependencies": { "@hapi/hoek": "^9.0.0" } }, "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q=="], + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "@sideway/formula": ["@sideway/formula@3.0.1", "", {}, "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg=="], + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "@sideway/pinpoint": ["@sideway/pinpoint@2.0.0", "", {}, "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ=="], + "aria-hidden": ["aria-hidden@1.2.4", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A=="], - "@sinclair/typebox": ["@sinclair/typebox@0.27.8", "", {}, "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA=="], + "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], - "@sindresorhus/is": ["@sindresorhus/is@4.6.0", "", {}, "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw=="], + "array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="], - "@slorber/react-ideal-image": ["@slorber/react-ideal-image@0.0.14", "", { "peerDependencies": { "react": ">=0.14.x", "react-waypoint": ">=9.0.2" } }, "sha512-ULJ1VtNg+B5puJp4ZQzEnDqYyDT9erbABoQygmAovg35ltOymLMH8jXPuxJQBVskcmaG29bTZ+++hE/PAXRgxA=="], + "array-includes": ["array-includes@3.1.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" } }, "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ=="], - "@slorber/remark-comment": ["@slorber/remark-comment@1.0.0", "", { "dependencies": { "micromark-factory-space": "^1.0.0", "micromark-util-character": "^1.1.0", "micromark-util-symbol": "^1.0.1" } }, "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA=="], + "array.prototype.findlast": ["array.prototype.findlast@1.2.5", "", { "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" } }, "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ=="], - "@svgr/babel-plugin-add-jsx-attribute": ["@svgr/babel-plugin-add-jsx-attribute@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g=="], + "array.prototype.findlastindex": ["array.prototype.findlastindex@1.2.5", "", { "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" } }, "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ=="], - "@svgr/babel-plugin-remove-jsx-attribute": ["@svgr/babel-plugin-remove-jsx-attribute@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA=="], + "array.prototype.flat": ["array.prototype.flat@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg=="], - "@svgr/babel-plugin-remove-jsx-empty-expression": ["@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA=="], + "array.prototype.flatmap": ["array.prototype.flatmap@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg=="], - "@svgr/babel-plugin-replace-jsx-attribute-value": ["@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ=="], + "array.prototype.tosorted": ["array.prototype.tosorted@1.1.4", "", { "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" } }, "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA=="], - "@svgr/babel-plugin-svg-dynamic-title": ["@svgr/babel-plugin-svg-dynamic-title@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og=="], + "arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "", { "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" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="], - "@svgr/babel-plugin-svg-em-dimensions": ["@svgr/babel-plugin-svg-em-dimensions@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g=="], + "ast-types-flow": ["ast-types-flow@0.0.8", "", {}, "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ=="], - "@svgr/babel-plugin-transform-react-native-svg": ["@svgr/babel-plugin-transform-react-native-svg@8.1.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q=="], + "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], - "@svgr/babel-plugin-transform-svg-component": ["@svgr/babel-plugin-transform-svg-component@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw=="], + "async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="], - "@svgr/babel-preset": ["@svgr/babel-preset@8.1.0", "", { "dependencies": { "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", "@svgr/babel-plugin-transform-svg-component": "8.0.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug=="], + "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], - "@svgr/core": ["@svgr/core@8.1.0", "", { "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", "camelcase": "^6.2.0", "cosmiconfig": "^8.1.3", "snake-case": "^3.0.4" } }, "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA=="], + "axe-core": ["axe-core@4.10.2", "", {}, "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w=="], - "@svgr/hast-util-to-babel-ast": ["@svgr/hast-util-to-babel-ast@8.0.0", "", { "dependencies": { "@babel/types": "^7.21.3", "entities": "^4.4.0" } }, "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q=="], + "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], - "@svgr/plugin-jsx": ["@svgr/plugin-jsx@8.1.0", "", { "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", "@svgr/hast-util-to-babel-ast": "8.0.0", "svg-parser": "^2.0.4" }, "peerDependencies": { "@svgr/core": "*" } }, "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA=="], + "babel-plugin-react-compiler": ["babel-plugin-react-compiler@19.0.0-beta-21e868a-20250216", "", { "dependencies": { "@babel/types": "^7.19.0" } }, "sha512-WDOBsm9t9P0RADm8CSlav5OqWvs+3mZFvrBo/qf3vuNtdz78OG5TFxOy7De8ePR3rA6qg1Qmcjjae6nR1pOpCA=="], - "@svgr/plugin-svgo": ["@svgr/plugin-svgo@8.1.0", "", { "dependencies": { "cosmiconfig": "^8.1.3", "deepmerge": "^4.3.1", "svgo": "^3.0.2" }, "peerDependencies": { "@svgr/core": "*" } }, "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA=="], + "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - "@svgr/webpack": ["@svgr/webpack@8.1.0", "", { "dependencies": { "@babel/core": "^7.21.3", "@babel/plugin-transform-react-constant-elements": "^7.21.3", "@babel/preset-env": "^7.20.2", "@babel/preset-react": "^7.18.6", "@babel/preset-typescript": "^7.21.0", "@svgr/core": "8.1.0", "@svgr/plugin-jsx": "8.1.0", "@svgr/plugin-svgo": "8.1.0" } }, "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA=="], + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "@swc/core": ["@swc/core@1.10.12", "", { "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.17" }, "optionalDependencies": { "@swc/core-darwin-arm64": "1.10.12", "@swc/core-darwin-x64": "1.10.12", "@swc/core-linux-arm-gnueabihf": "1.10.12", "@swc/core-linux-arm64-gnu": "1.10.12", "@swc/core-linux-arm64-musl": "1.10.12", "@swc/core-linux-x64-gnu": "1.10.12", "@swc/core-linux-x64-musl": "1.10.12", "@swc/core-win32-arm64-msvc": "1.10.12", "@swc/core-win32-ia32-msvc": "1.10.12", "@swc/core-win32-x64-msvc": "1.10.12" }, "peerDependencies": { "@swc/helpers": "*" }, "optionalPeers": ["@swc/helpers"] }, "sha512-+iUL0PYpPm6N9AdV1wvafakvCqFegQus1aoEDxgFsv3/uNVNIyRaupf/v/Zkp5hbep2EzhtoJR0aiJIzDbXWHg=="], + "brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="], - "@swc/core-darwin-arm64": ["@swc/core-darwin-arm64@1.10.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-pOANQegUTAriW7jq3SSMZGM5l89yLVMs48R0F2UG6UZsH04SiViCnDctOGlA/Sa++25C+rL9MGMYM1jDLylBbg=="], + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - "@swc/core-darwin-x64": ["@swc/core-darwin-x64@1.10.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-m4kbpIDDsN1FrwfNQMU+FTrss356xsXvatLbearwR+V0lqOkjLBP0VmRvQfHEg+uy13VPyrT9gj4HLoztlci7w=="], + "busboy": ["busboy@1.6.0", "", { "dependencies": { "streamsearch": "^1.1.0" } }, "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA=="], - "@swc/core-linux-arm-gnueabihf": ["@swc/core-linux-arm-gnueabihf@1.10.12", "", { "os": "linux", "cpu": "arm" }, "sha512-OY9LcupgqEu8zVK+rJPes6LDJJwPDmwaShU96beTaxX2K6VrXbpwm5WbPS/8FfQTsmpnuA7dCcMPUKhNgmzTrQ=="], + "call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], - "@swc/core-linux-arm64-gnu": ["@swc/core-linux-arm64-gnu@1.10.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-nJD587rO0N4y4VZszz3xzVr7JIiCzSMhEMWnPjuh+xmPxDBz0Qccpr8xCr1cSxpl1uY7ERkqAGlKr6CwoV5kVg=="], + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], - "@swc/core-linux-arm64-musl": ["@swc/core-linux-arm64-musl@1.10.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-oqhSmV+XauSf0C//MoQnVErNUB/5OzmSiUzuazyLsD5pwqKNN+leC3JtRQ/QVzaCpr65jv9bKexT9+I2Tt3xDw=="], + "call-bound": ["call-bound@1.0.3", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "get-intrinsic": "^1.2.6" } }, "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA=="], - "@swc/core-linux-x64-gnu": ["@swc/core-linux-x64-gnu@1.10.12", "", { "os": "linux", "cpu": "x64" }, "sha512-XldSIHyjD7m1Gh+/8rxV3Ok711ENLI420CU2EGEqSe3VSGZ7pHJvJn9ZFbYpWhsLxPqBYMFjp3Qw+J6OXCPXCA=="], + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - "@swc/core-linux-x64-musl": ["@swc/core-linux-x64-musl@1.10.12", "", { "os": "linux", "cpu": "x64" }, "sha512-wvPXzJxzPgTqhyp1UskOx1hRTtdWxlyFD1cGWOxgLsMik0V9xKRgqKnMPv16Nk7L9xl6quQ6DuUHj9ID7L3oVw=="], + "caniuse-lite": ["caniuse-lite@1.0.30001700", "", {}, "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ=="], - "@swc/core-win32-arm64-msvc": ["@swc/core-win32-arm64-msvc@1.10.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-TUYzWuu1O7uyIcRfxdm6Wh1u+gNnrW5M1DUgDOGZLsyQzgc2Zjwfh2llLhuAIilvCVg5QiGbJlpibRYJ/8QGsg=="], + "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], - "@swc/core-win32-ia32-msvc": ["@swc/core-win32-ia32-msvc@1.10.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-4Qrw+0Xt+Fe2rz4OJ/dEPMeUf/rtuFWWAj/e0vL7J5laUHirzxawLRE5DCJLQTarOiYR6mWnmadt9o3EKzV6Xg=="], + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "@swc/core-win32-x64-msvc": ["@swc/core-win32-x64-msvc@1.10.12", "", { "os": "win32", "cpu": "x64" }, "sha512-YiloZXLW7rUxJpALwHXaGjVaAEn+ChoblG7/3esque+Y7QCyheoBUJp2DVM1EeVA43jBfZ8tvYF0liWd9Tpz1A=="], + "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], - "@swc/counter": ["@swc/counter@0.1.3", "", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="], + "character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="], - "@swc/html": ["@swc/html@1.10.12", "", { "dependencies": { "@swc/counter": "^0.1.3" }, "optionalDependencies": { "@swc/html-darwin-arm64": "1.10.12", "@swc/html-darwin-x64": "1.10.12", "@swc/html-linux-arm-gnueabihf": "1.10.12", "@swc/html-linux-arm64-gnu": "1.10.12", "@swc/html-linux-arm64-musl": "1.10.12", "@swc/html-linux-x64-gnu": "1.10.12", "@swc/html-linux-x64-musl": "1.10.12", "@swc/html-win32-arm64-msvc": "1.10.12", "@swc/html-win32-ia32-msvc": "1.10.12", "@swc/html-win32-x64-msvc": "1.10.12" } }, "sha512-TGjjWXsRzXTjrWPszcLXWn2Xla4qBGeo5tP6CjnZ/DwaYddgHaFqPQ7p6w3jwolNrIiNztkP0xsMcQ5zYgVO6A=="], + "character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="], - "@swc/html-darwin-arm64": ["@swc/html-darwin-arm64@1.10.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-uef8zjOf55AA5yATHWcxROAiSPD0/hDwo5itOF+cjBBsBURK7atUJh/yoeBTaE9H8dexOdVItyfLk6xjf1BucA=="], + "character-reference-invalid": ["character-reference-invalid@2.0.1", "", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="], - "@swc/html-darwin-x64": ["@swc/html-darwin-x64@1.10.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-TDxVaQrZdjknqSftT1gYC0VgD1uWxXaE7HN77ExP5xQybUv7X9ES9ZdyaUTtNePAoUAghXnVEmPfAp57kCHhZQ=="], + "chevrotain": ["chevrotain@11.0.3", "", { "dependencies": { "@chevrotain/cst-dts-gen": "11.0.3", "@chevrotain/gast": "11.0.3", "@chevrotain/regexp-to-ast": "11.0.3", "@chevrotain/types": "11.0.3", "@chevrotain/utils": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw=="], - "@swc/html-linux-arm-gnueabihf": ["@swc/html-linux-arm-gnueabihf@1.10.12", "", { "os": "linux", "cpu": "arm" }, "sha512-BqtEYl3Ho/vBsn6AsFaoHaXFKX+o2VqmTPMt1RGkO5WdbtIYMiQYjDv9oiRa6Mgj6+ra2vW6a+Zzk2IB/g7vKg=="], + "chevrotain-allstar": ["chevrotain-allstar@0.3.1", "", { "dependencies": { "lodash-es": "^4.17.21" }, "peerDependencies": { "chevrotain": "^11.0.0" } }, "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw=="], - "@swc/html-linux-arm64-gnu": ["@swc/html-linux-arm64-gnu@1.10.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-sMwl5fuK0e/9M5arvLuuRHEISK18jJqACZWBDjWML4s+31CgqgK/24xEX3zgF8U272WwNvJRb1W32uS4Wc5xHA=="], + "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], - "@swc/html-linux-arm64-musl": ["@swc/html-linux-arm64-musl@1.10.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-2EBCivqdb42+zd+J0NfCXQ6R1j9K7zCj4w1jcI1w5F3DIw71+LTUWBPf6usWvJIf+MK583mZiaF0D4kykZPfDw=="], + "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], - "@swc/html-linux-x64-gnu": ["@swc/html-linux-x64-gnu@1.10.12", "", { "os": "linux", "cpu": "x64" }, "sha512-zJtFKfV684EIfab4EunsjROsbmQ5OlNbjpFBq/fwtslC6haD1fe9Za+Dvh+FbmUiXWZ1ONUlnCbnzbO7lr/G6Q=="], + "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], - "@swc/html-linux-x64-musl": ["@swc/html-linux-x64-musl@1.10.12", "", { "os": "linux", "cpu": "x64" }, "sha512-P6LdVHp6ObNSgr9rKcwKBrq42tgadR9ywrdK87Cx4YPGGFlp7p9azRYxgmxURLy4vD2Ll0D4QXvMRv+iSPqOLw=="], + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], - "@swc/html-win32-arm64-msvc": ["@swc/html-win32-arm64-msvc@1.10.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-Qcmo9e22/BIhG/KYzQXX9coRS6oaxfcEiq+X8C/JQvxXOC4N6QfGc1OqkF7lhLkRYGATPq6UWzj05UmfOg6fBg=="], + "code-block-writer": ["code-block-writer@13.0.3", "", {}, "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg=="], - "@swc/html-win32-ia32-msvc": ["@swc/html-win32-ia32-msvc@1.10.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-27QMM5azQ03Gfd0WQZIyDlCMOOOaRkqE4DJwPMKz9Fb+YqOFLKMeWuu/dl9TPcclYpVOs2tilBPxQvzdvWoDyw=="], + "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], - "@swc/html-win32-x64-msvc": ["@swc/html-win32-x64-msvc@1.10.12", "", { "os": "win32", "cpu": "x64" }, "sha512-C0Ic4I9qsSuk4qpMIL+0eLBHEphi4+muJRMQdAAJkTJL2LOfpNnAPXpV3IqsoXEqlsSatdD9xmp1GJ3aSZRJ/g=="], + "color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="], - "@swc/types": ["@swc/types@0.1.17", "", { "dependencies": { "@swc/counter": "^0.1.3" } }, "sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ=="], + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], - "@szmarczak/http-timer": ["@szmarczak/http-timer@5.0.1", "", { "dependencies": { "defer-to-connect": "^2.0.1" } }, "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw=="], + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], - "@trysound/sax": ["@trysound/sax@0.2.0", "", {}, "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="], + "color-string": ["color-string@1.9.1", "", { "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="], - "@types/acorn": ["@types/acorn@4.0.6", "", { "dependencies": { "@types/estree": "*" } }, "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ=="], + "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], - "@types/body-parser": ["@types/body-parser@1.19.5", "", { "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg=="], + "commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="], - "@types/bonjour": ["@types/bonjour@3.5.13", "", { "dependencies": { "@types/node": "*" } }, "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ=="], + "compute-scroll-into-view": ["compute-scroll-into-view@3.1.1", "", {}, "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw=="], - "@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="], + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], - "@types/connect-history-api-fallback": ["@types/connect-history-api-fallback@1.5.4", "", { "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" } }, "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw=="], + "confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], - "@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="], + "cose-base": ["cose-base@1.0.3", "", { "dependencies": { "layout-base": "^1.0.0" } }, "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg=="], - "@types/eslint": ["@types/eslint@9.6.1", "", { "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag=="], + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], - "@types/eslint-scope": ["@types/eslint-scope@3.7.7", "", { "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg=="], + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], - "@types/estree": ["@types/estree@1.0.6", "", {}, "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="], + "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], - "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], + "cytoscape": ["cytoscape@3.31.0", "", {}, "sha512-zDGn1K/tfZwEnoGOcHc0H4XazqAAXAuDpcYw9mUnUjATjqljyCNGJv8uEvbvxGaGHaVshxMecyl6oc6uKzRfbw=="], - "@types/express": ["@types/express@4.17.21", "", { "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ=="], + "cytoscape-cose-bilkent": ["cytoscape-cose-bilkent@4.1.0", "", { "dependencies": { "cose-base": "^1.0.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ=="], - "@types/express-serve-static-core": ["@types/express-serve-static-core@5.0.4", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-5kz9ScmzBdzTgB/3susoCgfqNDzBjvLL4taparufgSvlwjdLy6UyUy9T/tCpYd2GIdIilCatC4iSQS0QSYHt0w=="], + "cytoscape-fcose": ["cytoscape-fcose@2.2.0", "", { "dependencies": { "cose-base": "^2.2.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ=="], - "@types/gtag.js": ["@types/gtag.js@0.0.12", "", {}, "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg=="], + "d3": ["d3@7.9.0", "", { "dependencies": { "d3-array": "3", "d3-axis": "3", "d3-brush": "3", "d3-chord": "3", "d3-color": "3", "d3-contour": "4", "d3-delaunay": "6", "d3-dispatch": "3", "d3-drag": "3", "d3-dsv": "3", "d3-ease": "3", "d3-fetch": "3", "d3-force": "3", "d3-format": "3", "d3-geo": "3", "d3-hierarchy": "3", "d3-interpolate": "3", "d3-path": "3", "d3-polygon": "3", "d3-quadtree": "3", "d3-random": "3", "d3-scale": "4", "d3-scale-chromatic": "3", "d3-selection": "3", "d3-shape": "3", "d3-time": "3", "d3-time-format": "4", "d3-timer": "3", "d3-transition": "3", "d3-zoom": "3" } }, "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA=="], - "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], + "d3-array": ["d3-array@3.2.4", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="], - "@types/history": ["@types/history@4.7.11", "", {}, "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA=="], + "d3-axis": ["d3-axis@3.0.0", "", {}, "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw=="], - "@types/html-minifier-terser": ["@types/html-minifier-terser@6.1.0", "", {}, "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg=="], + "d3-brush": ["d3-brush@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "3", "d3-transition": "3" } }, "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ=="], - "@types/http-cache-semantics": ["@types/http-cache-semantics@4.0.4", "", {}, "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA=="], + "d3-chord": ["d3-chord@3.0.1", "", { "dependencies": { "d3-path": "1 - 3" } }, "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g=="], - "@types/http-errors": ["@types/http-errors@2.0.4", "", {}, "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA=="], + "d3-color": ["d3-color@3.1.0", "", {}, "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="], - "@types/http-proxy": ["@types/http-proxy@1.17.15", "", { "dependencies": { "@types/node": "*" } }, "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ=="], + "d3-contour": ["d3-contour@4.0.2", "", { "dependencies": { "d3-array": "^3.2.0" } }, "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA=="], - "@types/istanbul-lib-coverage": ["@types/istanbul-lib-coverage@2.0.6", "", {}, "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w=="], + "d3-delaunay": ["d3-delaunay@6.0.4", "", { "dependencies": { "delaunator": "5" } }, "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A=="], - "@types/istanbul-lib-report": ["@types/istanbul-lib-report@3.0.3", "", { "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA=="], + "d3-dispatch": ["d3-dispatch@3.0.1", "", {}, "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="], - "@types/istanbul-reports": ["@types/istanbul-reports@3.0.4", "", { "dependencies": { "@types/istanbul-lib-report": "*" } }, "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ=="], + "d3-drag": ["d3-drag@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" } }, "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg=="], - "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], + "d3-dsv": ["d3-dsv@3.0.1", "", { "dependencies": { "commander": "7", "iconv-lite": "0.6", "rw": "1" }, "bin": { "csv2json": "bin/dsv2json.js", "csv2tsv": "bin/dsv2dsv.js", "dsv2dsv": "bin/dsv2dsv.js", "dsv2json": "bin/dsv2json.js", "json2csv": "bin/json2dsv.js", "json2dsv": "bin/json2dsv.js", "json2tsv": "bin/json2dsv.js", "tsv2csv": "bin/dsv2dsv.js", "tsv2json": "bin/dsv2json.js" } }, "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q=="], - "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], + "d3-ease": ["d3-ease@3.0.1", "", {}, "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="], - "@types/mdx": ["@types/mdx@2.0.13", "", {}, "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw=="], + "d3-fetch": ["d3-fetch@3.0.1", "", { "dependencies": { "d3-dsv": "1 - 3" } }, "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw=="], - "@types/mime": ["@types/mime@1.3.5", "", {}, "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="], + "d3-force": ["d3-force@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", "d3-timer": "1 - 3" } }, "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg=="], - "@types/ms": ["@types/ms@0.7.34", "", {}, "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="], + "d3-format": ["d3-format@3.1.0", "", {}, "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA=="], - "@types/node": ["@types/node@22.10.5", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ=="], + "d3-geo": ["d3-geo@3.1.1", "", { "dependencies": { "d3-array": "2.5.0 - 3" } }, "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q=="], - "@types/node-forge": ["@types/node-forge@1.3.11", "", { "dependencies": { "@types/node": "*" } }, "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ=="], + "d3-hierarchy": ["d3-hierarchy@3.1.2", "", {}, "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA=="], - "@types/parse-json": ["@types/parse-json@4.0.2", "", {}, "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="], + "d3-interpolate": ["d3-interpolate@3.0.1", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], - "@types/parse5": ["@types/parse5@5.0.3", "", {}, "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw=="], + "d3-path": ["d3-path@3.1.0", "", {}, "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="], - "@types/prismjs": ["@types/prismjs@1.26.5", "", {}, "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ=="], + "d3-polygon": ["d3-polygon@3.0.1", "", {}, "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg=="], - "@types/qs": ["@types/qs@6.9.17", "", {}, "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ=="], + "d3-quadtree": ["d3-quadtree@3.0.1", "", {}, "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw=="], - "@types/range-parser": ["@types/range-parser@1.2.7", "", {}, "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="], + "d3-random": ["d3-random@3.0.1", "", {}, "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ=="], - "@types/react": ["@types/react@19.0.4", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-3O4QisJDYr1uTUMZHA2YswiQZRq+Pd8D+GdVFYikTutYsTz+QZgWkAPnP7rx9txoI6EXKcPiluMqWPFV3tT9Wg=="], + "d3-sankey": ["d3-sankey@0.12.3", "", { "dependencies": { "d3-array": "1 - 2", "d3-shape": "^1.2.0" } }, "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ=="], - "@types/react-router": ["@types/react-router@5.1.20", "", { "dependencies": { "@types/history": "^4.7.11", "@types/react": "*" } }, "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q=="], + "d3-scale": ["d3-scale@4.0.2", "", { "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" } }, "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="], - "@types/react-router-config": ["@types/react-router-config@5.0.11", "", { "dependencies": { "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router": "^5.1.0" } }, "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw=="], + "d3-scale-chromatic": ["d3-scale-chromatic@3.1.0", "", { "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" } }, "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ=="], - "@types/react-router-dom": ["@types/react-router-dom@5.3.3", "", { "dependencies": { "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router": "*" } }, "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw=="], + "d3-selection": ["d3-selection@3.0.0", "", {}, "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="], - "@types/retry": ["@types/retry@0.12.0", "", {}, "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="], + "d3-shape": ["d3-shape@3.2.0", "", { "dependencies": { "d3-path": "^3.1.0" } }, "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA=="], - "@types/sax": ["@types/sax@1.2.7", "", { "dependencies": { "@types/node": "*" } }, "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A=="], + "d3-time": ["d3-time@3.1.0", "", { "dependencies": { "d3-array": "2 - 3" } }, "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q=="], - "@types/send": ["@types/send@0.17.4", "", { "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA=="], + "d3-time-format": ["d3-time-format@4.1.0", "", { "dependencies": { "d3-time": "1 - 3" } }, "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg=="], - "@types/serve-index": ["@types/serve-index@1.9.4", "", { "dependencies": { "@types/express": "*" } }, "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug=="], + "d3-timer": ["d3-timer@3.0.1", "", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="], - "@types/serve-static": ["@types/serve-static@1.15.7", "", { "dependencies": { "@types/http-errors": "*", "@types/node": "*", "@types/send": "*" } }, "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw=="], + "d3-transition": ["d3-transition@3.0.1", "", { "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", "d3-ease": "1 - 3", "d3-interpolate": "1 - 3", "d3-timer": "1 - 3" }, "peerDependencies": { "d3-selection": "2 - 3" } }, "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w=="], - "@types/sockjs": ["@types/sockjs@0.3.36", "", { "dependencies": { "@types/node": "*" } }, "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q=="], + "d3-zoom": ["d3-zoom@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "2 - 3", "d3-transition": "2 - 3" } }, "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw=="], - "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], + "dagre-d3-es": ["dagre-d3-es@7.0.11", "", { "dependencies": { "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, "sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw=="], - "@types/ws": ["@types/ws@8.5.13", "", { "dependencies": { "@types/node": "*" } }, "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA=="], + "damerau-levenshtein": ["damerau-levenshtein@1.0.8", "", {}, "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="], - "@types/yargs": ["@types/yargs@17.0.33", "", { "dependencies": { "@types/yargs-parser": "*" } }, "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA=="], + "data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="], - "@types/yargs-parser": ["@types/yargs-parser@21.0.3", "", {}, "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="], + "data-view-byte-length": ["data-view-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ=="], - "@ungap/structured-clone": ["@ungap/structured-clone@1.2.1", "", {}, "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA=="], + "data-view-byte-offset": ["data-view-byte-offset@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="], - "@webassemblyjs/ast": ["@webassemblyjs/ast@1.14.1", "", { "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ=="], + "dayjs": ["dayjs@1.11.13", "", {}, "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="], - "@webassemblyjs/floating-point-hex-parser": ["@webassemblyjs/floating-point-hex-parser@1.13.2", "", {}, "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA=="], + "debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="], - "@webassemblyjs/helper-api-error": ["@webassemblyjs/helper-api-error@1.13.2", "", {}, "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ=="], + "decode-named-character-reference": ["decode-named-character-reference@1.0.2", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg=="], - "@webassemblyjs/helper-buffer": ["@webassemblyjs/helper-buffer@1.14.1", "", {}, "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA=="], + "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], - "@webassemblyjs/helper-numbers": ["@webassemblyjs/helper-numbers@1.13.2", "", { "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA=="], + "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], - "@webassemblyjs/helper-wasm-bytecode": ["@webassemblyjs/helper-wasm-bytecode@1.13.2", "", {}, "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA=="], + "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], - "@webassemblyjs/helper-wasm-section": ["@webassemblyjs/helper-wasm-section@1.14.1", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", "@webassemblyjs/wasm-gen": "1.14.1" } }, "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw=="], + "delaunator": ["delaunator@5.0.1", "", { "dependencies": { "robust-predicates": "^3.0.2" } }, "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw=="], - "@webassemblyjs/ieee754": ["@webassemblyjs/ieee754@1.13.2", "", { "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw=="], + "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], - "@webassemblyjs/leb128": ["@webassemblyjs/leb128@1.13.2", "", { "dependencies": { "@xtuc/long": "4.2.2" } }, "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw=="], + "detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], - "@webassemblyjs/utf8": ["@webassemblyjs/utf8@1.13.2", "", {}, "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ=="], + "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], - "@webassemblyjs/wasm-edit": ["@webassemblyjs/wasm-edit@1.14.1", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", "@webassemblyjs/helper-wasm-section": "1.14.1", "@webassemblyjs/wasm-gen": "1.14.1", "@webassemblyjs/wasm-opt": "1.14.1", "@webassemblyjs/wasm-parser": "1.14.1", "@webassemblyjs/wast-printer": "1.14.1" } }, "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ=="], + "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], - "@webassemblyjs/wasm-gen": ["@webassemblyjs/wasm-gen@1.14.1", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", "@webassemblyjs/ieee754": "1.13.2", "@webassemblyjs/leb128": "1.13.2", "@webassemblyjs/utf8": "1.13.2" } }, "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg=="], + "doctrine": ["doctrine@3.0.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w=="], - "@webassemblyjs/wasm-opt": ["@webassemblyjs/wasm-opt@1.14.1", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", "@webassemblyjs/wasm-gen": "1.14.1", "@webassemblyjs/wasm-parser": "1.14.1" } }, "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw=="], + "dompurify": ["dompurify@3.2.4", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg=="], - "@webassemblyjs/wasm-parser": ["@webassemblyjs/wasm-parser@1.14.1", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", "@webassemblyjs/ieee754": "1.13.2", "@webassemblyjs/leb128": "1.13.2", "@webassemblyjs/utf8": "1.13.2" } }, "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ=="], + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], - "@webassemblyjs/wast-printer": ["@webassemblyjs/wast-printer@1.14.1", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw=="], + "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], - "@xtuc/ieee754": ["@xtuc/ieee754@1.2.0", "", {}, "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="], + "emoji-regex-xs": ["emoji-regex-xs@1.0.0", "", {}, "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg=="], - "@xtuc/long": ["@xtuc/long@4.2.2", "", {}, "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="], + "enhanced-resolve": ["enhanced-resolve@5.18.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg=="], - "abbrev": ["abbrev@1.1.1", "", {}, "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="], + "es-abstract": ["es-abstract@1.23.9", "", { "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.3", "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.0.0", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.0", "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-regex": "^1.2.1", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.0", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.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.18" } }, "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA=="], - "accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="], + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], - "acorn": ["acorn@8.14.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="], + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], - "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], + "es-iterator-helpers": ["es-iterator-helpers@1.2.1", "", { "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-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.6", "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.4", "safe-array-concat": "^1.1.3" } }, "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w=="], - "acorn-walk": ["acorn-walk@8.3.4", "", { "dependencies": { "acorn": "^8.11.0" } }, "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g=="], + "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], - "address": ["address@1.2.2", "", {}, "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA=="], + "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], - "aggregate-error": ["aggregate-error@3.1.0", "", { "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" } }, "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA=="], + "es-shim-unscopables": ["es-shim-unscopables@1.1.0", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw=="], - "ajv": ["ajv@6.12.6", "", { "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" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], + "es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], - "ajv-formats": ["ajv-formats@2.1.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="], + "esast-util-from-estree": ["esast-util-from-estree@2.0.0", "", { "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" } }, "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ=="], - "ajv-keywords": ["ajv-keywords@3.5.2", "", { "peerDependencies": { "ajv": "^6.9.1" } }, "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="], + "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], - "algoliasearch": ["algoliasearch@5.19.0", "", { "dependencies": { "@algolia/client-abtesting": "5.19.0", "@algolia/client-analytics": "5.19.0", "@algolia/client-common": "5.19.0", "@algolia/client-insights": "5.19.0", "@algolia/client-personalization": "5.19.0", "@algolia/client-query-suggestions": "5.19.0", "@algolia/client-search": "5.19.0", "@algolia/ingestion": "1.19.0", "@algolia/monitoring": "1.19.0", "@algolia/recommend": "5.19.0", "@algolia/requester-browser-xhr": "5.19.0", "@algolia/requester-fetch": "5.19.0", "@algolia/requester-node-http": "5.19.0" } }, "sha512-zrLtGhC63z3sVLDDKGW+SlCRN9eJHFTgdEmoAOpsVh6wgGL1GgTTDou7tpCBjevzgIvi3AIyDAQO3Xjbg5eqZg=="], + "esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], - "algoliasearch-helper": ["algoliasearch-helper@3.22.6", "", { "dependencies": { "@algolia/events": "^4.0.1" }, "peerDependencies": { "algoliasearch": ">= 3.1 < 6" } }, "sha512-F2gSb43QHyvZmvH/2hxIjbk/uFdO2MguQYTFP7J+RowMW1csjIODMobEnpLI8nbLQuzZnGZdIxl5Bpy1k9+CFQ=="], + "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - "ansi-align": ["ansi-align@3.0.1", "", { "dependencies": { "string-width": "^4.1.0" } }, "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w=="], + "eslint": ["eslint@8.57.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", "@eslint/js": "8.57.1", "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.2", "eslint-visitor-keys": "^3.4.3", "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" } }, "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA=="], - "ansi-escapes": ["ansi-escapes@4.3.2", "", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="], + "eslint-config-next": ["eslint-config-next@15.1.7", "", { "dependencies": { "@next/eslint-plugin-next": "15.1.7", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^5.0.0" }, "peerDependencies": { "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-zXoMnYUIy3XHaAoOhrcYkT9UQWvXqWju2K7NNsmb5wd/7XESDwof61eUdW4QhERr3eJ9Ko/vnXqIrj8kk/drYw=="], - "ansi-html-community": ["ansi-html-community@0.0.8", "", { "bin": { "ansi-html": "bin/ansi-html" } }, "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw=="], + "eslint-import-resolver-node": ["eslint-import-resolver-node@0.3.9", "", { "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", "resolve": "^1.22.4" } }, "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g=="], - "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "eslint-import-resolver-typescript": ["eslint-import-resolver-typescript@3.8.2", "", { "dependencies": { "@nolyfill/is-core-module": "1.0.39", "debug": "^4.3.7", "enhanced-resolve": "^5.15.0", "get-tsconfig": "^4.10.0", "is-bun-module": "^1.0.2", "stable-hash": "^0.0.4", "tinyglobby": "^0.2.11" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*", "eslint-plugin-import-x": "*" }, "optionalPeers": ["eslint-plugin-import", "eslint-plugin-import-x"] }, "sha512-o0nvXxsatYCDTzI1K5b3aYGQ6PjpDGJEVN86zqJw5SEewhmmggfRTotd2dqWr2t2zbeYpIEWGTCkgtUpIEIcaQ=="], - "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "eslint-module-utils": ["eslint-module-utils@2.12.0", "", { "dependencies": { "debug": "^3.2.7" } }, "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg=="], - "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], + "eslint-plugin-import": ["eslint-plugin-import@2.31.0", "", { "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.8", "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.12.0", "hasown": "^2.0.2", "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", "object.values": "^1.2.0", "semver": "^6.3.1", "string.prototype.trimend": "^1.0.8", "tsconfig-paths": "^3.15.0" }, "peerDependencies": { "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A=="], - "aproba": ["aproba@2.0.0", "", {}, "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="], + "eslint-plugin-jsx-a11y": ["eslint-plugin-jsx-a11y@6.10.2", "", { "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" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q=="], - "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], + "eslint-plugin-react": ["eslint-plugin-react@7.37.4", "", { "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.8", "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" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ=="], - "argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@5.1.0", "", { "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw=="], - "array-flatten": ["array-flatten@1.1.1", "", {}, "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="], + "eslint-scope": ["eslint-scope@7.2.2", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg=="], - "array-union": ["array-union@2.1.0", "", {}, "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="], + "eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], - "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], + "espree": ["espree@9.6.1", "", { "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } }, "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ=="], - "at-least-node": ["at-least-node@1.0.0", "", {}, "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="], + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], - "autocomplete.js": ["autocomplete.js@0.37.1", "", { "dependencies": { "immediate": "^3.2.3" } }, "sha512-PgSe9fHYhZEsm/9jggbjtVsGXJkPLvd+9mC7gZJ662vVL5CRWEtm/mIrrzCx0MrNxHVwxD5d00UOn6NsmL2LUQ=="], + "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], - "autoprefixer": ["autoprefixer@10.4.20", "", { "dependencies": { "browserslist": "^4.23.3", "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g=="], + "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], - "b4a": ["b4a@1.6.7", "", {}, "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg=="], + "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], - "babel-loader": ["babel-loader@9.2.1", "", { "dependencies": { "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" }, "peerDependencies": { "@babel/core": "^7.12.0", "webpack": ">=5" } }, "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA=="], + "estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="], - "babel-plugin-dynamic-import-node": ["babel-plugin-dynamic-import-node@2.3.3", "", { "dependencies": { "object.assign": "^4.1.0" } }, "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ=="], + "estree-util-build-jsx": ["estree-util-build-jsx@3.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-walker": "^3.0.0" } }, "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ=="], - "babel-plugin-polyfill-corejs2": ["babel-plugin-polyfill-corejs2@0.4.12", "", { "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.6.3", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og=="], + "estree-util-is-identifier-name": ["estree-util-is-identifier-name@3.0.0", "", {}, "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="], - "babel-plugin-polyfill-corejs3": ["babel-plugin-polyfill-corejs3@0.10.6", "", { "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.2", "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA=="], + "estree-util-scope": ["estree-util-scope@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" } }, "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ=="], - "babel-plugin-polyfill-regenerator": ["babel-plugin-polyfill-regenerator@0.6.3", "", { "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.3" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q=="], + "estree-util-to-js": ["estree-util-to-js@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", "source-map": "^0.7.0" } }, "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg=="], - "bail": ["bail@1.0.5", "", {}, "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ=="], + "estree-util-value-to-estree": ["estree-util-value-to-estree@3.3.2", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-hYH1aSvQI63Cvq3T3loaem6LW4u72F187zW4FHpTrReJSm6W66vYTFNO1vH/chmcOulp1HlAj1pxn8Ag0oXI5Q=="], - "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "estree-util-visit": ["estree-util-visit@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" } }, "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww=="], - "bare-events": ["bare-events@2.5.4", "", {}, "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA=="], + "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], - "bare-fs": ["bare-fs@4.0.1", "", { "dependencies": { "bare-events": "^2.0.0", "bare-path": "^3.0.0", "bare-stream": "^2.0.0" } }, "sha512-ilQs4fm/l9eMfWY2dY0WCIUplSUp7U0CT1vrqMg1MUdeZl4fypu5UP0XcDBK5WBQPJAKP1b7XEodISmekH/CEg=="], + "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], - "bare-os": ["bare-os@3.4.0", "", {}, "sha512-9Ous7UlnKbe3fMi7Y+qh0DwAup6A1JkYgPnjvMDNOlmnxNRQvQ/7Nst+OnUQKzk0iAT0m9BisbDVp9gCv8+ETA=="], + "execa": ["execa@9.5.2", "", { "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", "figures": "^6.1.0", "get-stream": "^9.0.0", "human-signals": "^8.0.0", "is-plain-obj": "^4.1.0", "is-stream": "^4.0.1", "npm-run-path": "^6.0.0", "pretty-ms": "^9.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^4.0.0", "yoctocolors": "^2.0.0" } }, "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q=="], - "bare-path": ["bare-path@3.0.0", "", { "dependencies": { "bare-os": "^3.0.1" } }, "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw=="], + "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], - "bare-stream": ["bare-stream@2.6.4", "", { "dependencies": { "streamx": "^2.21.0" }, "peerDependencies": { "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-buffer", "bare-events"] }, "sha512-G6i3A74FjNq4nVrrSTUz5h3vgXzBJnjmWAVlBWaZETkgu+LgKd7AiyOml3EDJY1AHlIbBHKDXE+TUT53Ff8OaA=="], + "extend-shallow": ["extend-shallow@2.0.1", "", { "dependencies": { "is-extendable": "^0.1.0" } }, "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug=="], - "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - "batch": ["batch@0.6.1", "", {}, "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw=="], + "fast-glob": ["fast-glob@3.3.3", "", { "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.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], - "bcp-47-match": ["bcp-47-match@1.0.3", "", {}, "sha512-LggQ4YTdjWQSKELZF5JwchnBa1u0pIQSZf5lSdOHEdbVP55h0qICA/FUp3+W99q0xqxYa1ZQizTUH87gecII5w=="], + "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], - "big.js": ["big.js@5.2.2", "", {}, "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="], + "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], - "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + "fastq": ["fastq@1.19.0", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA=="], - "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], + "fdir": ["fdir@6.4.3", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw=="], - "body-parser": ["body-parser@1.20.3", "", { "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" } }, "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g=="], + "figures": ["figures@6.1.0", "", { "dependencies": { "is-unicode-supported": "^2.0.0" } }, "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg=="], - "bonjour-service": ["bonjour-service@1.3.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } }, "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA=="], + "file-entry-cache": ["file-entry-cache@6.0.1", "", { "dependencies": { "flat-cache": "^3.0.4" } }, "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg=="], - "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], - "boxen": ["boxen@6.2.1", "", { "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^6.2.0", "chalk": "^4.1.2", "cli-boxes": "^3.0.0", "string-width": "^5.0.1", "type-fest": "^2.5.0", "widest-line": "^4.0.1", "wrap-ansi": "^8.0.1" } }, "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw=="], + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], - "brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="], + "flat-cache": ["flat-cache@3.2.0", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" } }, "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw=="], - "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], - "browserslist": ["browserslist@4.24.4", "", { "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" } }, "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A=="], + "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], - "buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], + "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="], - "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], + "fumadocs-core": ["fumadocs-core@15.0.9", "", { "dependencies": { "@formatjs/intl-localematcher": "^0.6.0", "@orama/orama": "^2.1.1", "@shikijs/rehype": "^2.4.1", "@shikijs/transformers": "^2.4.1", "github-slugger": "^2.0.0", "hast-util-to-estree": "^3.1.1", "hast-util-to-jsx-runtime": "^2.3.2", "image-size": "^1.2.0", "negotiator": "^1.0.0", "react-remove-scroll": "^2.6.3", "remark": "^15.0.0", "remark-gfm": "^4.0.1", "scroll-into-view-if-needed": "^3.1.0", "shiki": "^2.4.1", "unist-util-visit": "^5.0.0" }, "peerDependencies": { "@orama/tokenizers": "2.x.x", "@oramacloud/client": "1.x.x || 2.x.x", "algoliasearch": "4.24.0", "next": "14.x.x || 15.x.x", "react": "18.x.x || 19.x.x", "react-dom": "18.x.x || 19.x.x" }, "optionalPeers": ["@orama/tokenizers", "@oramacloud/client", "algoliasearch", "next", "react", "react-dom"] }, "sha512-+SKzNUAeIShNoy81RNBpf7KyAsQbYr9rtTr2CGLMo2cBZanvlIjtel2A2AUEIFjN1+63/alYEp396LiZJLQFLQ=="], - "bytes": ["bytes@3.0.0", "", {}, "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw=="], + "fumadocs-docgen": ["fumadocs-docgen@1.3.7", "", { "dependencies": { "estree-util-to-js": "^2.0.0", "estree-util-value-to-estree": "^3.3.2", "fumadocs-typescript": "^3.0.3", "hast-util-to-estree": "^3.1.1", "npm-to-yarn": "^3.0.1", "oxc-transform": "^0.48.2", "unist-util-visit": "^5.0.0", "zod": "^3.24.1" } }, "sha512-GzlxZoEsY2WQVPMMoaSqzrSmxNtUpGvCutcd2he+jfrV+Hu+Xc8LVymI6meH99vv3HkftUsCHUsfkaQrV7Aa2A=="], - "cacheable-lookup": ["cacheable-lookup@7.0.0", "", {}, "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w=="], + "fumadocs-mdx": ["fumadocs-mdx@11.5.6", "", { "dependencies": { "@mdx-js/mdx": "^3.1.0", "@standard-schema/spec": "^1.0.0", "chokidar": "^4.0.3", "cross-spawn": "^7.0.6", "esbuild": "^0.25.0", "estree-util-value-to-estree": "^3.3.2", "fast-glob": "^3.3.3", "gray-matter": "^4.0.3", "unist-util-visit": "^5.0.0", "zod": "^3.24.2" }, "peerDependencies": { "@fumadocs/mdx-remote": "^1.2.0", "fumadocs-core": "^14.0.0 || ^15.0.0", "next": "14.x.x || 15.x.x" }, "optionalPeers": ["@fumadocs/mdx-remote"], "bin": { "fumadocs-mdx": "bin.js" } }, "sha512-XhzfR7WsI4qO9EdmRZQc/mRxMkSY2HQ7Fg2fv7ia4R3LN0Km7X8KSEry9lU2c0XmSHcospniW5o1FFgsAq4+mQ=="], - "cacheable-request": ["cacheable-request@10.2.14", "", { "dependencies": { "@types/http-cache-semantics": "^4.0.2", "get-stream": "^6.0.1", "http-cache-semantics": "^4.1.1", "keyv": "^4.5.3", "mimic-response": "^4.0.0", "normalize-url": "^8.0.0", "responselike": "^3.0.0" } }, "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ=="], + "fumadocs-twoslash": ["fumadocs-twoslash@3.0.0", "", { "dependencies": { "@radix-ui/react-popover": "^1.1.5", "@shikijs/twoslash": "^2.1.0", "mdast-util-from-markdown": "^2.0.2", "mdast-util-gfm": "^3.0.0", "mdast-util-to-hast": "^13.2.0", "tailwind-merge": "^2.6.0" }, "peerDependencies": { "fumadocs-ui": "^15.0.0", "react": "18.x.x || 19.x.x", "shiki": "1.x.x || 2.x.x" } }, "sha512-6fcNTkhMANMsVt0qUYiYI/W5pjpylfHE6114M+flnlJdf9S5eN4sH9Tmaoylp02Txwn0NanZQDOOyVJoS7vqOA=="], - "call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], + "fumadocs-typescript": ["fumadocs-typescript@3.0.3", "", { "dependencies": { "fast-glob": "^3.3.3", "hast-util-to-jsx-runtime": "^2.3.2", "mdast-util-from-markdown": "^2.0.2", "mdast-util-gfm": "^3.0.0", "mdast-util-to-hast": "^13.2.0", "shiki": "^2.0.3", "ts-morph": "^25.0.0" }, "peerDependencies": { "typescript": "*" } }, "sha512-TpVem2Sy+fo5e8wJibisn1XZoRdwNyY8+MuxQWBC2k8Q4oaxA6qVVsy2paCVEa716UnXbES0sVP1HqX3HCEhBg=="], - "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g=="], + "fumadocs-ui": ["fumadocs-ui@15.0.9", "", { "dependencies": { "@radix-ui/react-accordion": "^1.2.3", "@radix-ui/react-collapsible": "^1.1.3", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-direction": "^1.1.0", "@radix-ui/react-navigation-menu": "^1.2.5", "@radix-ui/react-popover": "^1.1.6", "@radix-ui/react-scroll-area": "^1.2.3", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-tabs": "^1.1.3", "class-variance-authority": "^0.7.1", "lodash.merge": "^4.6.2", "lucide-react": "^0.475.0", "next-themes": "^0.4.4", "postcss-selector-parser": "^7.1.0", "react-medium-image-zoom": "^5.2.13", "tailwind-merge": "^3.0.1" }, "peerDependencies": { "fumadocs-core": "15.0.9", "next": "14.x.x || 15.x.x", "react": "18.x.x || 19.x.x", "react-dom": "18.x.x || 19.x.x", "tailwindcss": "^3.4.14 || ^4.0.0" }, "optionalPeers": ["tailwindcss"] }, "sha512-HgKfXJgDSxxezwvxfHdUerzjqGPwWFKH5ccCC8L/HpCSWOCIMtU/KxvXDiMwX3N1kHDTZFBRs5CJcreXZglEsg=="], - "call-bound": ["call-bound@1.0.3", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "get-intrinsic": "^1.2.6" } }, "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA=="], + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], - "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], + "function.prototype.name": ["function.prototype.name@1.1.8", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="], - "camel-case": ["camel-case@4.1.2", "", { "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" } }, "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw=="], + "functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="], - "camelcase": ["camelcase@6.3.0", "", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="], + "get-intrinsic": ["get-intrinsic@1.2.7", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", "get-proto": "^1.0.0", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA=="], - "caniuse-api": ["caniuse-api@3.0.0", "", { "dependencies": { "browserslist": "^4.0.0", "caniuse-lite": "^1.0.0", "lodash.memoize": "^4.1.2", "lodash.uniq": "^4.5.0" } }, "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw=="], + "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], - "caniuse-lite": ["caniuse-lite@1.0.30001692", "", {}, "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A=="], + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], - "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], + "get-stream": ["get-stream@9.0.1", "", { "dependencies": { "@sec-ant/readable-stream": "^0.4.1", "is-stream": "^4.0.1" } }, "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA=="], - "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], - "char-regex": ["char-regex@1.0.2", "", {}, "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw=="], + "get-tsconfig": ["get-tsconfig@4.10.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A=="], - "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], + "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], - "character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="], + "glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], - "character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="], + "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], - "character-reference-invalid": ["character-reference-invalid@2.0.1", "", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="], + "globals": ["globals@13.24.0", "", { "dependencies": { "type-fest": "^0.20.2" } }, "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ=="], - "cheerio": ["cheerio@1.0.0-rc.12", "", { "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", "domutils": "^3.0.1", "htmlparser2": "^8.0.1", "parse5": "^7.0.0", "parse5-htmlparser2-tree-adapter": "^7.0.0" } }, "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q=="], + "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], - "cheerio-select": ["cheerio-select@2.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", "css-what": "^6.1.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1" } }, "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g=="], + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], - "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - "chownr": ["chownr@1.1.4", "", {}, "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="], + "graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="], - "chrome-trace-event": ["chrome-trace-event@1.0.4", "", {}, "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ=="], + "gray-matter": ["gray-matter@4.0.3", "", { "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", "section-matter": "^1.0.0", "strip-bom-string": "^1.0.0" } }, "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q=="], - "ci-info": ["ci-info@3.9.0", "", {}, "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ=="], + "hachure-fill": ["hachure-fill@0.5.2", "", {}, "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg=="], - "clean-css": ["clean-css@5.3.3", "", { "dependencies": { "source-map": "~0.6.0" } }, "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg=="], + "has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], - "clean-stack": ["clean-stack@2.2.0", "", {}, "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="], + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], - "cli-boxes": ["cli-boxes@3.0.0", "", {}, "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g=="], + "has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="], - "cli-table3": ["cli-table3@0.6.5", "", { "dependencies": { "string-width": "^4.2.0" }, "optionalDependencies": { "@colors/colors": "1.5.0" } }, "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ=="], + "has-proto": ["has-proto@1.2.0", "", { "dependencies": { "dunder-proto": "^1.0.0" } }, "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ=="], - "clone-deep": ["clone-deep@4.0.1", "", { "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" } }, "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ=="], + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], - "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], - "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], - "color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="], + "hast-util-to-estree": ["hast-util-to-estree@3.1.2", "", { "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-object": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-94SDoKOfop5gP8RHyw4vV1aj+oChuD42g08BONGAaWFbbO6iaWUqxk7SWfGybgcVzhK16KifZr3zD2dqQgx3jQ=="], - "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + "hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="], - "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + "hast-util-to-jsx-runtime": ["hast-util-to-jsx-runtime@2.3.3", "", { "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-object": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" } }, "sha512-pdpkP8YD4v+qMKn2lnKSiJvZvb3FunDmFYQvVOsoO08+eTNWdaWKPMrC5wwNICtU3dQWHhElj5Sf5jPEnv4qJg=="], - "color-string": ["color-string@1.9.1", "", { "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="], + "hast-util-to-string": ["hast-util-to-string@3.0.1", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A=="], - "color-support": ["color-support@1.1.3", "", { "bin": { "color-support": "bin.js" } }, "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="], + "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], - "colord": ["colord@2.9.3", "", {}, "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw=="], + "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], - "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="], + "human-signals": ["human-signals@8.0.0", "", {}, "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA=="], - "combine-promises": ["combine-promises@1.2.0", "", {}, "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ=="], + "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], - "comma-separated-tokens": ["comma-separated-tokens@1.0.8", "", {}, "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw=="], + "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "commander": ["commander@5.1.0", "", {}, "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg=="], + "image-size": ["image-size@1.2.0", "", { "dependencies": { "queue": "6.0.2" }, "bin": { "image-size": "bin/image-size.js" } }, "sha512-4S8fwbO6w3GeCVN6OPtA9I5IGKkcDMPcKndtUlpJuCwu7JLjtj7JZpwqLuyY2nrmQT3AWsCJLSKPsc2mPBSl3w=="], - "common-path-prefix": ["common-path-prefix@3.0.0", "", {}, "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w=="], + "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], - "compressible": ["compressible@2.0.18", "", { "dependencies": { "mime-db": ">= 1.43.0 < 2" } }, "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg=="], + "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], - "compression": ["compression@1.7.5", "", { "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", "on-headers": "~1.0.2", "safe-buffer": "5.2.1", "vary": "~1.1.2" } }, "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q=="], + "inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="], - "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], - "config-chain": ["config-chain@1.1.13", "", { "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" } }, "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ=="], + "inline-style-parser": ["inline-style-parser@0.2.4", "", {}, "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q=="], - "configstore": ["configstore@6.0.0", "", { "dependencies": { "dot-prop": "^6.0.1", "graceful-fs": "^4.2.6", "unique-string": "^3.0.0", "write-file-atomic": "^3.0.3", "xdg-basedir": "^5.0.1" } }, "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA=="], + "internal-slot": ["internal-slot@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="], - "connect-history-api-fallback": ["connect-history-api-fallback@2.0.0", "", {}, "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA=="], + "internmap": ["internmap@2.0.3", "", {}, "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="], - "consola": ["consola@3.3.3", "", {}, "sha512-Qil5KwghMzlqd51UXM0b6fyaGHtOC22scxrwrz4A2882LyUMwQjnvaedN1HAeXzphspQ6CpHkzMAWxBTUruDLg=="], + "is-alphabetical": ["is-alphabetical@2.0.1", "", {}, "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="], - "console-control-strings": ["console-control-strings@1.1.0", "", {}, "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="], + "is-alphanumerical": ["is-alphanumerical@2.0.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="], - "consolidated-events": ["consolidated-events@2.0.2", "", {}, "sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ=="], + "is-array-buffer": ["is-array-buffer@3.0.5", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="], - "content-disposition": ["content-disposition@0.5.2", "", {}, "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA=="], + "is-arrayish": ["is-arrayish@0.3.2", "", {}, "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="], - "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], + "is-async-function": ["is-async-function@2.1.1", "", { "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" } }, "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ=="], - "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + "is-bigint": ["is-bigint@1.1.0", "", { "dependencies": { "has-bigints": "^1.0.2" } }, "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ=="], - "cookie": ["cookie@0.7.1", "", {}, "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w=="], + "is-boolean-object": ["is-boolean-object@1.2.2", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A=="], - "cookie-signature": ["cookie-signature@1.0.6", "", {}, "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="], + "is-bun-module": ["is-bun-module@1.3.0", "", { "dependencies": { "semver": "^7.6.3" } }, "sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA=="], - "copy-text-to-clipboard": ["copy-text-to-clipboard@3.2.0", "", {}, "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q=="], + "is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], - "copy-webpack-plugin": ["copy-webpack-plugin@11.0.0", "", { "dependencies": { "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", "globby": "^13.1.1", "normalize-path": "^3.0.0", "schema-utils": "^4.0.0", "serialize-javascript": "^6.0.0" }, "peerDependencies": { "webpack": "^5.1.0" } }, "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ=="], + "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], - "core-js": ["core-js@3.40.0", "", {}, "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ=="], + "is-data-view": ["is-data-view@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="], - "core-js-compat": ["core-js-compat@3.40.0", "", { "dependencies": { "browserslist": "^4.24.3" } }, "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ=="], + "is-date-object": ["is-date-object@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg=="], - "core-js-pure": ["core-js-pure@3.40.0", "", {}, "sha512-AtDzVIgRrmRKQai62yuSIN5vNiQjcJakJb4fbhVw3ehxx7Lohphvw9SGNWKhLFqSxC4ilD0g/L1huAYFQU3Q6A=="], + "is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], - "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], + "is-extendable": ["is-extendable@0.1.1", "", {}, "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="], - "cosmiconfig": ["cosmiconfig@8.3.6", "", { "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0", "path-type": "^4.0.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA=="], + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], - "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + "is-finalizationregistry": ["is-finalizationregistry@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg=="], - "crypto-random-string": ["crypto-random-string@4.0.0", "", { "dependencies": { "type-fest": "^1.0.1" } }, "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA=="], + "is-generator-function": ["is-generator-function@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "get-proto": "^1.0.0", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ=="], - "css-blank-pseudo": ["css-blank-pseudo@7.0.1", "", { "dependencies": { "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag=="], + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], - "css-declaration-sorter": ["css-declaration-sorter@7.2.0", "", { "peerDependencies": { "postcss": "^8.0.9" } }, "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow=="], + "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], - "css-has-pseudo": ["css-has-pseudo@7.0.2", "", { "dependencies": { "@csstools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ=="], + "is-map": ["is-map@2.0.3", "", {}, "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="], - "css-loader": ["css-loader@6.11.0", "", { "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", "postcss-modules-extract-imports": "^3.1.0", "postcss-modules-local-by-default": "^4.0.5", "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", "semver": "^7.5.4" }, "peerDependencies": { "@rspack/core": "0.x || 1.x", "webpack": "^5.0.0" }, "optionalPeers": ["@rspack/core", "webpack"] }, "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g=="], + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], - "css-minimizer-webpack-plugin": ["css-minimizer-webpack-plugin@5.0.1", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", "cssnano": "^6.0.1", "jest-worker": "^29.4.3", "postcss": "^8.4.24", "schema-utils": "^4.0.1", "serialize-javascript": "^6.0.1" }, "peerDependencies": { "webpack": "^5.0.0" } }, "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg=="], + "is-number-object": ["is-number-object@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="], - "css-prefers-color-scheme": ["css-prefers-color-scheme@10.0.0", "", { "peerDependencies": { "postcss": "^8.4" } }, "sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ=="], + "is-path-inside": ["is-path-inside@3.0.3", "", {}, "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="], - "css-select": ["css-select@4.3.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", "domhandler": "^4.3.1", "domutils": "^2.8.0", "nth-check": "^2.0.1" } }, "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ=="], + "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - "css-selector-parser": ["css-selector-parser@1.4.1", "", {}, "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g=="], + "is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], - "css-tree": ["css-tree@2.3.1", "", { "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" } }, "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw=="], + "is-set": ["is-set@2.0.3", "", {}, "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg=="], - "css-what": ["css-what@6.1.0", "", {}, "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw=="], + "is-shared-array-buffer": ["is-shared-array-buffer@1.0.4", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A=="], - "cssdb": ["cssdb@8.2.3", "", {}, "sha512-9BDG5XmJrJQQnJ51VFxXCAtpZ5ebDlAREmO8sxMOVU0aSxN/gocbctjIG5LMh3WBUq+xTlb/jw2LoljBEqraTA=="], + "is-stream": ["is-stream@4.0.1", "", {}, "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A=="], - "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + "is-string": ["is-string@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="], - "cssnano": ["cssnano@6.1.2", "", { "dependencies": { "cssnano-preset-default": "^6.1.2", "lilconfig": "^3.1.1" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA=="], + "is-symbol": ["is-symbol@1.1.1", "", { "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", "safe-regex-test": "^1.1.0" } }, "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w=="], - "cssnano-preset-advanced": ["cssnano-preset-advanced@6.1.2", "", { "dependencies": { "autoprefixer": "^10.4.19", "browserslist": "^4.23.0", "cssnano-preset-default": "^6.1.2", "postcss-discard-unused": "^6.0.5", "postcss-merge-idents": "^6.0.3", "postcss-reduce-idents": "^6.0.3", "postcss-zindex": "^6.0.2" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ=="], + "is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="], - "cssnano-preset-default": ["cssnano-preset-default@6.1.2", "", { "dependencies": { "browserslist": "^4.23.0", "css-declaration-sorter": "^7.2.0", "cssnano-utils": "^4.0.2", "postcss-calc": "^9.0.1", "postcss-colormin": "^6.1.0", "postcss-convert-values": "^6.1.0", "postcss-discard-comments": "^6.0.2", "postcss-discard-duplicates": "^6.0.3", "postcss-discard-empty": "^6.0.3", "postcss-discard-overridden": "^6.0.2", "postcss-merge-longhand": "^6.0.5", "postcss-merge-rules": "^6.1.1", "postcss-minify-font-values": "^6.1.0", "postcss-minify-gradients": "^6.0.3", "postcss-minify-params": "^6.1.0", "postcss-minify-selectors": "^6.0.4", "postcss-normalize-charset": "^6.0.2", "postcss-normalize-display-values": "^6.0.2", "postcss-normalize-positions": "^6.0.2", "postcss-normalize-repeat-style": "^6.0.2", "postcss-normalize-string": "^6.0.2", "postcss-normalize-timing-functions": "^6.0.2", "postcss-normalize-unicode": "^6.1.0", "postcss-normalize-url": "^6.0.2", "postcss-normalize-whitespace": "^6.0.2", "postcss-ordered-values": "^6.0.2", "postcss-reduce-initial": "^6.1.0", "postcss-reduce-transforms": "^6.0.2", "postcss-svgo": "^6.0.3", "postcss-unique-selectors": "^6.0.4" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg=="], + "is-unicode-supported": ["is-unicode-supported@2.1.0", "", {}, "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ=="], - "cssnano-utils": ["cssnano-utils@4.0.2", "", { "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ=="], + "is-weakmap": ["is-weakmap@2.0.2", "", {}, "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w=="], - "csso": ["csso@5.0.5", "", { "dependencies": { "css-tree": "~2.2.0" } }, "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="], + "is-weakref": ["is-weakref@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew=="], - "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], + "is-weakset": ["is-weakset@2.0.4", "", { "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ=="], - "debounce": ["debounce@1.2.1", "", {}, "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="], + "isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], - "debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="], + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], - "decode-named-character-reference": ["decode-named-character-reference@1.0.2", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg=="], + "iterator.prototype": ["iterator.prototype@1.1.5", "", { "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" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="], - "decompress-response": ["decompress-response@6.0.0", "", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="], + "jiti": ["jiti@2.4.2", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A=="], - "deep-extend": ["deep-extend@0.6.0", "", {}, "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="], + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "deepmerge": ["deepmerge@4.3.1", "", {}, "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="], + "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], - "default-gateway": ["default-gateway@6.0.3", "", { "dependencies": { "execa": "^5.0.0" } }, "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg=="], + "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], - "defer-to-connect": ["defer-to-connect@2.0.1", "", {}, "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg=="], + "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], - "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], + "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], - "define-lazy-prop": ["define-lazy-prop@2.0.0", "", {}, "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="], + "json5": ["json5@1.0.2", "", { "dependencies": { "minimist": "^1.2.0" }, "bin": { "json5": "lib/cli.js" } }, "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA=="], - "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], + "jsx-ast-utils": ["jsx-ast-utils@3.3.5", "", { "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" } }, "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ=="], - "del": ["del@6.1.1", "", { "dependencies": { "globby": "^11.0.1", "graceful-fs": "^4.2.4", "is-glob": "^4.0.1", "is-path-cwd": "^2.2.0", "is-path-inside": "^3.0.2", "p-map": "^4.0.0", "rimraf": "^3.0.2", "slash": "^3.0.0" } }, "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg=="], + "katex": ["katex@0.16.21", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A=="], - "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], - "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], + "khroma": ["khroma@2.1.0", "", {}, "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="], - "destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="], + "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], - "detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], + "kolorist": ["kolorist@1.8.0", "", {}, "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="], - "detect-node": ["detect-node@2.1.0", "", {}, "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="], + "langium": ["langium@3.0.0", "", { "dependencies": { "chevrotain": "~11.0.3", "chevrotain-allstar": "~0.3.0", "vscode-languageserver": "~9.0.1", "vscode-languageserver-textdocument": "~1.0.11", "vscode-uri": "~3.0.8" } }, "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg=="], - "detect-port": ["detect-port@1.6.1", "", { "dependencies": { "address": "^1.0.1", "debug": "4" }, "bin": { "detect": "bin/detect-port.js", "detect-port": "bin/detect-port.js" } }, "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q=="], + "language-subtag-registry": ["language-subtag-registry@0.3.23", "", {}, "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ=="], - "detect-port-alt": ["detect-port-alt@1.1.6", "", { "dependencies": { "address": "^1.0.1", "debug": "^2.6.0" }, "bin": { "detect": "./bin/detect-port", "detect-port": "./bin/detect-port" } }, "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q=="], + "language-tags": ["language-tags@1.0.9", "", { "dependencies": { "language-subtag-registry": "^0.3.20" } }, "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA=="], - "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], + "layout-base": ["layout-base@1.0.2", "", {}, "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="], - "dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="], + "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], - "direction": ["direction@1.0.4", "", { "bin": { "direction": "cli.js" } }, "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ=="], + "lightningcss": ["lightningcss@1.29.1", "", { "dependencies": { "detect-libc": "^1.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.29.1", "lightningcss-darwin-x64": "1.29.1", "lightningcss-freebsd-x64": "1.29.1", "lightningcss-linux-arm-gnueabihf": "1.29.1", "lightningcss-linux-arm64-gnu": "1.29.1", "lightningcss-linux-arm64-musl": "1.29.1", "lightningcss-linux-x64-gnu": "1.29.1", "lightningcss-linux-x64-musl": "1.29.1", "lightningcss-win32-arm64-msvc": "1.29.1", "lightningcss-win32-x64-msvc": "1.29.1" } }, "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q=="], - "dns-packet": ["dns-packet@5.6.1", "", { "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" } }, "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw=="], + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.29.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw=="], - "docusaurus-lunr-search": ["docusaurus-lunr-search@3.6.0", "", { "dependencies": { "autocomplete.js": "^0.37.1", "clsx": "^2.1.1", "gauge": "^3.0.2", "hast-util-select": "^4.0.2", "hast-util-to-text": "^2.0.1", "hogan.js": "^3.0.2", "lunr": "^2.3.9", "lunr-languages": "^1.4.0", "mark.js": "^8.11.1", "minimatch": "^3.1.2", "rehype-parse": "^7.0.1", "to-vfile": "^6.1.0", "unified": "^9.2.2", "unist-util-is": "^4.1.0" }, "peerDependencies": { "@docusaurus/core": "^2.0.0-alpha.60 || ^2.0.0 || ^3.0.0", "react": "^16.8.4 || ^17 || ^18 || ^19", "react-dom": "^16.8.4 || ^17 || ^18 || ^19" } }, "sha512-CCEAnj5e67sUZmIb2hOl4xb4nDN07fb0fvRDDmdWlYpUvyS1CSKbw4lsGInLyUFEEEBzxQmT6zaVQdF/8Zretg=="], + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.29.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA=="], - "dom-converter": ["dom-converter@0.2.0", "", { "dependencies": { "utila": "~0.4" } }, "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA=="], + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.29.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ=="], - "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.29.1", "", { "os": "linux", "cpu": "arm" }, "sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg=="], - "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.29.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ=="], - "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.29.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw=="], - "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.29.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw=="], - "dot-case": ["dot-case@3.0.4", "", { "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w=="], + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.29.1", "", { "os": "linux", "cpu": "x64" }, "sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw=="], - "dot-prop": ["dot-prop@6.0.1", "", { "dependencies": { "is-obj": "^2.0.0" } }, "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA=="], + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.29.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog=="], - "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.29.1", "", { "os": "win32", "cpu": "x64" }, "sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q=="], - "duplexer": ["duplexer@0.1.2", "", {}, "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="], + "local-pkg": ["local-pkg@1.0.0", "", { "dependencies": { "mlly": "^1.7.3", "pkg-types": "^1.3.0" } }, "sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg=="], - "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], + "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], - "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], + "lodash-es": ["lodash-es@4.17.21", "", {}, "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="], - "electron-to-chromium": ["electron-to-chromium@1.5.79", "", {}, "sha512-nYOxJNxQ9Om4EC88BE4pPoNI8xwSFf8pU/BAeOl4Hh/b/i6V4biTAzwV7pXi3ARKeoYO5JZKMIXTryXSVer5RA=="], + "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], - "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], - "emojilib": ["emojilib@2.4.0", "", {}, "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw=="], + "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], - "emojis-list": ["emojis-list@3.0.0", "", {}, "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="], + "lucide-react": ["lucide-react@0.475.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-NJzvVu1HwFVeZ+Gwq2q00KygM1aBhy/ZrhY9FsAgJtpB+E4R7uxRk9M2iKvHa6/vNxZydIB59htha4c2vvwvVg=="], - "emoticon": ["emoticon@4.1.0", "", {}, "sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ=="], + "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], - "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], + "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], - "end-of-stream": ["end-of-stream@1.4.4", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q=="], + "marked": ["marked@13.0.3", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA=="], - "enhanced-resolve": ["enhanced-resolve@5.18.0", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ=="], + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], - "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="], - "error-ex": ["error-ex@1.3.2", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="], + "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.2", "", { "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" } }, "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="], - "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], + "mdast-util-gfm": ["mdast-util-gfm@3.1.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="], - "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], + "mdast-util-gfm-autolink-literal": ["mdast-util-gfm-autolink-literal@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" } }, "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ=="], - "es-module-lexer": ["es-module-lexer@1.6.0", "", {}, "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ=="], + "mdast-util-gfm-footnote": ["mdast-util-gfm-footnote@2.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" } }, "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ=="], - "es-object-atoms": ["es-object-atoms@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw=="], + "mdast-util-gfm-strikethrough": ["mdast-util-gfm-strikethrough@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="], - "esast-util-from-estree": ["esast-util-from-estree@2.0.0", "", { "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" } }, "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ=="], + "mdast-util-gfm-table": ["mdast-util-gfm-table@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="], - "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], + "mdast-util-gfm-task-list-item": ["mdast-util-gfm-task-list-item@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="], - "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + "mdast-util-mdx": ["mdast-util-mdx@3.0.0", "", { "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" } }, "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w=="], - "escape-goat": ["escape-goat@4.0.0", "", {}, "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg=="], + "mdast-util-mdx-expression": ["mdast-util-mdx-expression@2.0.1", "", { "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" } }, "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ=="], - "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], + "mdast-util-mdx-jsx": ["mdast-util-mdx-jsx@3.2.0", "", { "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" } }, "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q=="], - "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + "mdast-util-mdxjs-esm": ["mdast-util-mdxjs-esm@2.0.1", "", { "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" } }, "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="], - "eslint-scope": ["eslint-scope@5.1.1", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="], + "mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="], - "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], + "mdast-util-to-hast": ["mdast-util-to-hast@13.2.0", "", { "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" } }, "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA=="], - "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], + "mdast-util-to-markdown": ["mdast-util-to-markdown@2.1.2", "", { "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" } }, "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="], - "estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="], + "mdast-util-to-string": ["mdast-util-to-string@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="], - "estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="], + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], - "estree-util-build-jsx": ["estree-util-build-jsx@3.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-walker": "^3.0.0" } }, "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ=="], + "mermaid": ["mermaid@11.4.1", "", { "dependencies": { "@braintree/sanitize-url": "^7.0.1", "@iconify/utils": "^2.1.32", "@mermaid-js/parser": "^0.3.0", "@types/d3": "^7.4.3", "cytoscape": "^3.29.2", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.11", "dayjs": "^1.11.10", "dompurify": "^3.2.1", "katex": "^0.16.9", "khroma": "^2.1.0", "lodash-es": "^4.17.21", "marked": "^13.0.2", "roughjs": "^4.6.6", "stylis": "^4.3.1", "ts-dedent": "^2.2.0", "uuid": "^9.0.1" } }, "sha512-Mb01JT/x6CKDWaxigwfZYuYmDZ6xtrNwNlidKZwkSrDaY9n90tdrJTV5Umk+wP1fZscGptmKFXHsXMDEVZ+Q6A=="], - "estree-util-is-identifier-name": ["estree-util-is-identifier-name@3.0.0", "", {}, "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="], + "micromark": ["micromark@4.0.1", "", { "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" } }, "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw=="], - "estree-util-scope": ["estree-util-scope@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" } }, "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ=="], + "micromark-core-commonmark": ["micromark-core-commonmark@2.0.2", "", { "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" } }, "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w=="], - "estree-util-to-js": ["estree-util-to-js@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", "source-map": "^0.7.0" } }, "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg=="], + "micromark-extension-gfm": ["micromark-extension-gfm@3.0.0", "", { "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w=="], - "estree-util-value-to-estree": ["estree-util-value-to-estree@3.2.1", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-Vt2UOjyPbNQQgT5eJh+K5aATti0OjCIAGc9SgMdOFYbohuifsWclR74l0iZTJwePMgWYdX1hlVS+dedH9XV8kw=="], + "micromark-extension-gfm-autolink-literal": ["micromark-extension-gfm-autolink-literal@2.1.0", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw=="], - "estree-util-visit": ["estree-util-visit@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" } }, "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww=="], + "micromark-extension-gfm-footnote": ["micromark-extension-gfm-footnote@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw=="], - "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], + "micromark-extension-gfm-strikethrough": ["micromark-extension-gfm-strikethrough@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="], - "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], + "micromark-extension-gfm-table": ["micromark-extension-gfm-table@2.1.1", "", { "dependencies": { "devlop": "^1.0.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" } }, "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg=="], - "eta": ["eta@2.2.0", "", {}, "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g=="], + "micromark-extension-gfm-tagfilter": ["micromark-extension-gfm-tagfilter@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg=="], - "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="], + "micromark-extension-gfm-task-list-item": ["micromark-extension-gfm-task-list-item@2.1.0", "", { "dependencies": { "devlop": "^1.0.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" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="], - "eval": ["eval@0.1.8", "", { "dependencies": { "@types/node": "*", "require-like": ">= 0.1.1" } }, "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw=="], + "micromark-extension-mdx-expression": ["micromark-extension-mdx-expression@3.0.0", "", { "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" } }, "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ=="], - "eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], + "micromark-extension-mdx-jsx": ["micromark-extension-mdx-jsx@3.0.1", "", { "dependencies": { "@types/acorn": "^4.0.0", "@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" } }, "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg=="], - "events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], + "micromark-extension-mdx-md": ["micromark-extension-mdx-md@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ=="], - "execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], + "micromark-extension-mdxjs": ["micromark-extension-mdxjs@3.0.0", "", { "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" } }, "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ=="], - "expand-template": ["expand-template@2.0.3", "", {}, "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg=="], + "micromark-extension-mdxjs-esm": ["micromark-extension-mdxjs-esm@3.0.0", "", { "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" } }, "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A=="], - "express": ["express@4.21.2", "", { "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.19.0", "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA=="], + "micromark-factory-destination": ["micromark-factory-destination@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="], - "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], + "micromark-factory-label": ["micromark-factory-label@2.0.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="], - "extend-shallow": ["extend-shallow@2.0.1", "", { "dependencies": { "is-extendable": "^0.1.0" } }, "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug=="], + "micromark-factory-mdx-expression": ["micromark-factory-mdx-expression@2.0.2", "", { "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" } }, "sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw=="], - "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + "micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], - "fast-fifo": ["fast-fifo@1.3.2", "", {}, "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="], + "micromark-factory-title": ["micromark-factory-title@2.0.1", "", { "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" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="], - "fast-glob": ["fast-glob@3.3.3", "", { "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.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + "micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "", { "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" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="], - "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], + "micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], - "fast-uri": ["fast-uri@3.0.5", "", {}, "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q=="], + "micromark-util-chunked": ["micromark-util-chunked@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="], - "fastq": ["fastq@1.18.0", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw=="], + "micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="], - "fault": ["fault@2.0.1", "", { "dependencies": { "format": "^0.2.0" } }, "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ=="], + "micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="], - "faye-websocket": ["faye-websocket@0.11.4", "", { "dependencies": { "websocket-driver": ">=0.5.1" } }, "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g=="], + "micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="], - "feed": ["feed@4.2.2", "", { "dependencies": { "xml-js": "^1.6.11" } }, "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ=="], + "micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "", { "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" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="], - "figures": ["figures@3.2.0", "", { "dependencies": { "escape-string-regexp": "^1.0.5" } }, "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg=="], + "micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], - "file-loader": ["file-loader@6.2.0", "", { "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" }, "peerDependencies": { "webpack": "^4.0.0 || ^5.0.0" } }, "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw=="], + "micromark-util-events-to-acorn": ["micromark-util-events-to-acorn@2.0.2", "", { "dependencies": { "@types/acorn": "^4.0.0", "@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" } }, "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA=="], - "filesize": ["filesize@8.0.7", "", {}, "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ=="], + "micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="], - "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + "micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="], - "finalhandler": ["finalhandler@1.3.1", "", { "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", "statuses": "2.0.1", "unpipe": "~1.0.0" } }, "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ=="], + "micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="], - "find-cache-dir": ["find-cache-dir@4.0.0", "", { "dependencies": { "common-path-prefix": "^3.0.0", "pkg-dir": "^7.0.0" } }, "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg=="], + "micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="], - "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], + "micromark-util-subtokenize": ["micromark-util-subtokenize@2.0.4", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-N6hXjrin2GTJDe3MVjf5FuXpm12PGm80BrUAeub9XFXca8JZbP+oIwY4LJSVwFUCL1IPm/WwSVUN7goFHmSGGQ=="], - "flat": ["flat@5.0.2", "", { "bin": { "flat": "cli.js" } }, "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="], + "micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], - "follow-redirects": ["follow-redirects@1.15.9", "", {}, "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="], + "micromark-util-types": ["micromark-util-types@2.0.1", "", {}, "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ=="], - "fork-ts-checker-webpack-plugin": ["fork-ts-checker-webpack-plugin@6.5.3", "", { "dependencies": { "@babel/code-frame": "^7.8.3", "@types/json-schema": "^7.0.5", "chalk": "^4.1.0", "chokidar": "^3.4.2", "cosmiconfig": "^6.0.0", "deepmerge": "^4.2.2", "fs-extra": "^9.0.0", "glob": "^7.1.6", "memfs": "^3.1.2", "minimatch": "^3.0.4", "schema-utils": "2.7.0", "semver": "^7.3.2", "tapable": "^1.0.0" }, "peerDependencies": { "eslint": ">= 6", "typescript": ">= 2.7", "vue-template-compiler": "*", "webpack": ">= 4" }, "optionalPeers": ["eslint", "vue-template-compiler"] }, "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ=="], + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - "form-data-encoder": ["form-data-encoder@2.1.4", "", {}, "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw=="], + "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - "format": ["format@0.2.2", "", {}, "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww=="], + "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], - "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], + "mlly": ["mlly@1.7.4", "", { "dependencies": { "acorn": "^8.14.0", "pathe": "^2.0.1", "pkg-types": "^1.3.0", "ufo": "^1.5.4" } }, "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw=="], - "fraction.js": ["fraction.js@4.3.7", "", {}, "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="], + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - "fresh": ["fresh@0.5.2", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="], + "nanoid": ["nanoid@3.3.8", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w=="], - "fs-constants": ["fs-constants@1.0.0", "", {}, "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="], + "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], - "fs-extra": ["fs-extra@11.2.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw=="], + "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], - "fs-monkey": ["fs-monkey@1.0.6", "", {}, "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg=="], + "next": ["next@15.1.7", "", { "dependencies": { "@next/env": "15.1.7", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "15.1.7", "@next/swc-darwin-x64": "15.1.7", "@next/swc-linux-arm64-gnu": "15.1.7", "@next/swc-linux-arm64-musl": "15.1.7", "@next/swc-linux-x64-gnu": "15.1.7", "@next/swc-linux-x64-musl": "15.1.7", "@next/swc-win32-arm64-msvc": "15.1.7", "@next/swc-win32-x64-msvc": "15.1.7", "sharp": "^0.33.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "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" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-GNeINPGS9c6OZKCvKypbL8GTsT5GhWPp4DM0fzkXJuXMilOO2EeFxuAY6JZbtk6XIl6Ws10ag3xRINDjSO5+wg=="], - "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="], + "next-themes": ["next-themes@0.4.4", "", { "peerDependencies": { "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, "sha512-LDQ2qIOJF0VnuVrrMSMLrWGjRMkq+0mpgl6e0juCLqdJ+oo8Q84JRWT6Wh11VDQKkMMe+dVzDKLWs5n87T+PkQ=="], - "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + "npm-run-path": ["npm-run-path@6.0.0", "", { "dependencies": { "path-key": "^4.0.0", "unicorn-magic": "^0.3.0" } }, "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA=="], - "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + "npm-to-yarn": ["npm-to-yarn@3.0.1", "", {}, "sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A=="], - "gauge": ["gauge@3.0.2", "", { "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", "console-control-strings": "^1.0.0", "has-unicode": "^2.0.1", "object-assign": "^4.1.1", "signal-exit": "^3.0.0", "string-width": "^4.2.3", "strip-ansi": "^6.0.1", "wide-align": "^1.1.2" } }, "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q=="], + "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], - "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], - "get-intrinsic": ["get-intrinsic@1.2.7", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", "get-proto": "^1.0.0", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA=="], + "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], - "get-own-enumerable-property-symbols": ["get-own-enumerable-property-symbols@3.0.2", "", {}, "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g=="], + "object.assign": ["object.assign@4.1.7", "", { "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" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="], - "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], + "object.entries": ["object.entries@1.1.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ=="], - "get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], + "object.fromentries": ["object.fromentries@2.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0" } }, "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ=="], - "github-from-package": ["github-from-package@0.0.0", "", {}, "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw=="], + "object.groupby": ["object.groupby@1.0.3", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2" } }, "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ=="], - "github-slugger": ["github-slugger@1.5.0", "", {}, "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw=="], + "object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], - "glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], - - "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - - "glob-to-regexp": ["glob-to-regexp@0.4.1", "", {}, "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="], - - "global-dirs": ["global-dirs@3.0.1", "", { "dependencies": { "ini": "2.0.0" } }, "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA=="], - - "global-modules": ["global-modules@2.0.0", "", { "dependencies": { "global-prefix": "^3.0.0" } }, "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A=="], - - "global-prefix": ["global-prefix@3.0.0", "", { "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", "which": "^1.3.1" } }, "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg=="], - - "globals": ["globals@11.12.0", "", {}, "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="], - - "globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="], - - "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], - - "got": ["got@12.6.1", "", { "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", "cacheable-lookup": "^7.0.0", "cacheable-request": "^10.2.8", "decompress-response": "^6.0.0", "form-data-encoder": "^2.1.2", "get-stream": "^6.0.1", "http2-wrapper": "^2.1.10", "lowercase-keys": "^3.0.0", "p-cancelable": "^3.0.0", "responselike": "^3.0.0" } }, "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ=="], - - "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - - "graphql": ["graphql@16.10.0", "", {}, "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ=="], - - "graphql-request": ["graphql-request@7.1.2", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0" }, "peerDependencies": { "graphql": "14 - 16" } }, "sha512-+XE3iuC55C2di5ZUrB4pjgwe+nIQBuXVIK9J98wrVwojzDW3GMdSBZfxUk8l4j9TieIpjpggclxhNEU9ebGF8w=="], - - "gray-matter": ["gray-matter@4.0.3", "", { "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", "section-matter": "^1.0.0", "strip-bom-string": "^1.0.0" } }, "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q=="], - - "gzip-size": ["gzip-size@6.0.0", "", { "dependencies": { "duplexer": "^0.1.2" } }, "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q=="], - - "handle-thing": ["handle-thing@2.0.1", "", {}, "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg=="], - - "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], - - "has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="], - - "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], - - "has-unicode": ["has-unicode@2.0.1", "", {}, "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="], - - "has-yarn": ["has-yarn@3.0.0", "", {}, "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA=="], - - "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], - - "hast-util-from-parse5": ["hast-util-from-parse5@6.0.1", "", { "dependencies": { "@types/parse5": "^5.0.0", "hastscript": "^6.0.0", "property-information": "^5.0.0", "vfile": "^4.0.0", "vfile-location": "^3.2.0", "web-namespaces": "^1.0.0" } }, "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA=="], - - "hast-util-has-property": ["hast-util-has-property@1.0.4", "", {}, "sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg=="], - - "hast-util-is-element": ["hast-util-is-element@1.1.0", "", {}, "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ=="], - - "hast-util-parse-selector": ["hast-util-parse-selector@2.2.5", "", {}, "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ=="], - - "hast-util-raw": ["hast-util-raw@9.1.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "@ungap/structured-clone": "^1.0.0", "hast-util-from-parse5": "^8.0.0", "hast-util-to-parse5": "^8.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "parse5": "^7.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw=="], - - "hast-util-select": ["hast-util-select@4.0.2", "", { "dependencies": { "bcp-47-match": "^1.0.0", "comma-separated-tokens": "^1.0.0", "css-selector-parser": "^1.0.0", "direction": "^1.0.0", "hast-util-has-property": "^1.0.0", "hast-util-is-element": "^1.0.0", "hast-util-to-string": "^1.0.0", "hast-util-whitespace": "^1.0.0", "not": "^0.1.0", "nth-check": "^2.0.0", "property-information": "^5.0.0", "space-separated-tokens": "^1.0.0", "unist-util-visit": "^2.0.0", "zwitch": "^1.0.0" } }, "sha512-8EEG2//bN5rrzboPWD2HdS3ugLijNioS1pqOTIolXNf67xxShYw4SQEmVXd3imiBG+U2bC2nVTySr/iRAA7Cjg=="], - - "hast-util-to-estree": ["hast-util-to-estree@3.1.1", "", { "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": "^6.0.0", "space-separated-tokens": "^2.0.0", "style-to-object": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-IWtwwmPskfSmma9RpzCappDUitC8t5jhAynHhc1m2+5trOgsrp7txscUSavc5Ic8PATyAjfrCK1wgtxh2cICVQ=="], - - "hast-util-to-jsx-runtime": ["hast-util-to-jsx-runtime@2.3.2", "", { "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": "^6.0.0", "space-separated-tokens": "^2.0.0", "style-to-object": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" } }, "sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg=="], - - "hast-util-to-parse5": ["hast-util-to-parse5@8.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw=="], - - "hast-util-to-string": ["hast-util-to-string@1.0.4", "", {}, "sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w=="], - - "hast-util-to-text": ["hast-util-to-text@2.0.1", "", { "dependencies": { "hast-util-is-element": "^1.0.0", "repeat-string": "^1.0.0", "unist-util-find-after": "^3.0.0" } }, "sha512-8nsgCARfs6VkwH2jJU9b8LNTuR4700na+0h3PqCaEk4MAnMDeu5P0tP8mjk9LLNGxIeQRLbiDbZVw6rku+pYsQ=="], - - "hast-util-whitespace": ["hast-util-whitespace@1.0.4", "", {}, "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A=="], - - "hastscript": ["hastscript@6.0.0", "", { "dependencies": { "@types/hast": "^2.0.0", "comma-separated-tokens": "^1.0.0", "hast-util-parse-selector": "^2.0.0", "property-information": "^5.0.0", "space-separated-tokens": "^1.0.0" } }, "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w=="], - - "he": ["he@1.2.0", "", { "bin": { "he": "bin/he" } }, "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="], - - "history": ["history@4.10.1", "", { "dependencies": { "@babel/runtime": "^7.1.2", "loose-envify": "^1.2.0", "resolve-pathname": "^3.0.0", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0", "value-equal": "^1.0.1" } }, "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew=="], - - "hogan.js": ["hogan.js@3.0.2", "", { "dependencies": { "mkdirp": "0.3.0", "nopt": "1.0.10" }, "bin": { "hulk": "./bin/hulk" } }, "sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg=="], - - "hoist-non-react-statics": ["hoist-non-react-statics@3.3.2", "", { "dependencies": { "react-is": "^16.7.0" } }, "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw=="], - - "hpack.js": ["hpack.js@2.1.6", "", { "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", "readable-stream": "^2.0.1", "wbuf": "^1.1.0" } }, "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ=="], - - "html-entities": ["html-entities@2.5.2", "", {}, "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA=="], - - "html-escaper": ["html-escaper@2.0.2", "", {}, "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg=="], - - "html-minifier-terser": ["html-minifier-terser@7.2.0", "", { "dependencies": { "camel-case": "^4.1.2", "clean-css": "~5.3.2", "commander": "^10.0.0", "entities": "^4.4.0", "param-case": "^3.0.4", "relateurl": "^0.2.7", "terser": "^5.15.1" }, "bin": { "html-minifier-terser": "cli.js" } }, "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA=="], - - "html-tags": ["html-tags@3.3.1", "", {}, "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ=="], - - "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], - - "html-webpack-plugin": ["html-webpack-plugin@5.6.3", "", { "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", "lodash": "^4.17.21", "pretty-error": "^4.0.0", "tapable": "^2.0.0" }, "peerDependencies": { "@rspack/core": "0.x || 1.x", "webpack": "^5.20.0" }, "optionalPeers": ["@rspack/core", "webpack"] }, "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg=="], - - "htmlparser2": ["htmlparser2@8.0.2", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1", "entities": "^4.4.0" } }, "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA=="], - - "http-cache-semantics": ["http-cache-semantics@4.1.1", "", {}, "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ=="], - - "http-deceiver": ["http-deceiver@1.2.7", "", {}, "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw=="], - - "http-errors": ["http-errors@2.0.0", "", { "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" } }, "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ=="], - - "http-parser-js": ["http-parser-js@0.5.8", "", {}, "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q=="], - - "http-proxy": ["http-proxy@1.18.1", "", { "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } }, "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ=="], - - "http-proxy-middleware": ["http-proxy-middleware@2.0.7", "", { "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", "is-glob": "^4.0.1", "is-plain-obj": "^3.0.0", "micromatch": "^4.0.2" }, "peerDependencies": { "@types/express": "^4.17.13" }, "optionalPeers": ["@types/express"] }, "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA=="], - - "http2-wrapper": ["http2-wrapper@2.2.1", "", { "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" } }, "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ=="], - - "human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], - - "iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], - - "icss-utils": ["icss-utils@5.1.0", "", { "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA=="], - - "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], - - "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - - "image-size": ["image-size@1.2.0", "", { "dependencies": { "queue": "6.0.2" }, "bin": { "image-size": "bin/image-size.js" } }, "sha512-4S8fwbO6w3GeCVN6OPtA9I5IGKkcDMPcKndtUlpJuCwu7JLjtj7JZpwqLuyY2nrmQT3AWsCJLSKPsc2mPBSl3w=="], - - "immediate": ["immediate@3.3.0", "", {}, "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q=="], - - "immer": ["immer@9.0.21", "", {}, "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA=="], - - "import-fresh": ["import-fresh@3.3.0", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw=="], - - "import-lazy": ["import-lazy@4.0.0", "", {}, "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw=="], - - "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], - - "indent-string": ["indent-string@4.0.0", "", {}, "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="], - - "infima": ["infima@0.2.0-alpha.45", "", {}, "sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw=="], - - "inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="], - - "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], - - "ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="], - - "inline-style-parser": ["inline-style-parser@0.2.4", "", {}, "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q=="], - - "interpret": ["interpret@1.4.0", "", {}, "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="], - - "invariant": ["invariant@2.2.4", "", { "dependencies": { "loose-envify": "^1.0.0" } }, "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA=="], - - "ipaddr.js": ["ipaddr.js@2.2.0", "", {}, "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA=="], - - "is-alphabetical": ["is-alphabetical@2.0.1", "", {}, "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="], - - "is-alphanumerical": ["is-alphanumerical@2.0.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="], - - "is-arrayish": ["is-arrayish@0.3.2", "", {}, "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="], - - "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], - - "is-buffer": ["is-buffer@2.0.5", "", {}, "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ=="], - - "is-ci": ["is-ci@3.0.1", "", { "dependencies": { "ci-info": "^3.2.0" }, "bin": { "is-ci": "bin.js" } }, "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ=="], - - "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], - - "is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], - - "is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="], - - "is-extendable": ["is-extendable@0.1.1", "", {}, "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="], - - "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], - - "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], - - "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], - - "is-installed-globally": ["is-installed-globally@0.4.0", "", { "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" } }, "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ=="], - - "is-npm": ["is-npm@6.0.0", "", {}, "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ=="], - - "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], - - "is-obj": ["is-obj@1.0.1", "", {}, "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg=="], - - "is-path-cwd": ["is-path-cwd@2.2.0", "", {}, "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ=="], - - "is-path-inside": ["is-path-inside@3.0.3", "", {}, "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="], - - "is-plain-obj": ["is-plain-obj@2.1.0", "", {}, "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="], - - "is-plain-object": ["is-plain-object@2.0.4", "", { "dependencies": { "isobject": "^3.0.1" } }, "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og=="], - - "is-regexp": ["is-regexp@1.0.0", "", {}, "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA=="], - - "is-root": ["is-root@2.1.0", "", {}, "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg=="], - - "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], - - "is-typedarray": ["is-typedarray@1.0.0", "", {}, "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="], - - "is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], - - "is-yarn-global": ["is-yarn-global@0.4.1", "", {}, "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ=="], - - "isarray": ["isarray@0.0.1", "", {}, "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="], - - "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], - - "isobject": ["isobject@3.0.1", "", {}, "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="], - - "isomorphic-rslog": ["isomorphic-rslog@0.0.6", "", {}, "sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A=="], - - "jest-util": ["jest-util@29.7.0", "", { "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } }, "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA=="], - - "jest-worker": ["jest-worker@27.5.1", "", { "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" } }, "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg=="], - - "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], - - "joi": ["joi@17.13.3", "", { "dependencies": { "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", "@sideway/address": "^4.1.5", "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" } }, "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA=="], - - "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - - "js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="], - - "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], - - "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], - - "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], - - "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], - - "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], - - "jsonfile": ["jsonfile@6.1.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ=="], - - "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], - - "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], - - "kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], - - "latest-version": ["latest-version@7.0.0", "", { "dependencies": { "package-json": "^8.1.0" } }, "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg=="], - - "launch-editor": ["launch-editor@2.9.1", "", { "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" } }, "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w=="], - - "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], - - "lightningcss": ["lightningcss@1.29.1", "", { "dependencies": { "detect-libc": "^1.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.29.1", "lightningcss-darwin-x64": "1.29.1", "lightningcss-freebsd-x64": "1.29.1", "lightningcss-linux-arm-gnueabihf": "1.29.1", "lightningcss-linux-arm64-gnu": "1.29.1", "lightningcss-linux-arm64-musl": "1.29.1", "lightningcss-linux-x64-gnu": "1.29.1", "lightningcss-linux-x64-musl": "1.29.1", "lightningcss-win32-arm64-msvc": "1.29.1", "lightningcss-win32-x64-msvc": "1.29.1" } }, "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q=="], - - "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.29.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw=="], - - "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.29.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA=="], - - "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.29.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ=="], - - "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.29.1", "", { "os": "linux", "cpu": "arm" }, "sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg=="], - - "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.29.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ=="], - - "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.29.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw=="], - - "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.29.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw=="], - - "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.29.1", "", { "os": "linux", "cpu": "x64" }, "sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw=="], - - "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.29.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog=="], - - "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.29.1", "", { "os": "win32", "cpu": "x64" }, "sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q=="], - - "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], - - "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], - - "loader-runner": ["loader-runner@4.3.0", "", {}, "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg=="], - - "loader-utils": ["loader-utils@3.3.1", "", {}, "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg=="], - - "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], - - "lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="], - - "lodash.debounce": ["lodash.debounce@4.0.8", "", {}, "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="], - - "lodash.memoize": ["lodash.memoize@4.1.2", "", {}, "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag=="], - - "lodash.uniq": ["lodash.uniq@4.5.0", "", {}, "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="], - - "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], - - "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], - - "lower-case": ["lower-case@2.0.2", "", { "dependencies": { "tslib": "^2.0.3" } }, "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg=="], - - "lowercase-keys": ["lowercase-keys@3.0.0", "", {}, "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ=="], - - "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], - - "lunr": ["lunr@2.3.9", "", {}, "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow=="], - - "lunr-languages": ["lunr-languages@1.14.0", "", {}, "sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA=="], - - "mark.js": ["mark.js@8.11.1", "", {}, "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ=="], - - "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], - - "markdown-table": ["markdown-table@2.0.0", "", { "dependencies": { "repeat-string": "^1.0.0" } }, "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A=="], - - "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], - - "mdast-util-directive": ["mdast-util-directive@3.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.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-visit-parents": "^6.0.0" } }, "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q=="], - - "mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="], - - "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.2", "", { "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" } }, "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="], - - "mdast-util-frontmatter": ["mdast-util-frontmatter@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "escape-string-regexp": "^5.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0" } }, "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA=="], - - "mdast-util-gfm": ["mdast-util-gfm@3.0.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw=="], - - "mdast-util-gfm-autolink-literal": ["mdast-util-gfm-autolink-literal@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" } }, "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ=="], - - "mdast-util-gfm-footnote": ["mdast-util-gfm-footnote@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" } }, "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ=="], - - "mdast-util-gfm-strikethrough": ["mdast-util-gfm-strikethrough@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="], - - "mdast-util-gfm-table": ["mdast-util-gfm-table@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="], - - "mdast-util-gfm-task-list-item": ["mdast-util-gfm-task-list-item@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="], - - "mdast-util-mdx": ["mdast-util-mdx@3.0.0", "", { "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" } }, "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w=="], - - "mdast-util-mdx-expression": ["mdast-util-mdx-expression@2.0.1", "", { "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" } }, "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ=="], - - "mdast-util-mdx-jsx": ["mdast-util-mdx-jsx@3.1.3", "", { "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" } }, "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ=="], - - "mdast-util-mdxjs-esm": ["mdast-util-mdxjs-esm@2.0.1", "", { "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" } }, "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="], - - "mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="], - - "mdast-util-to-hast": ["mdast-util-to-hast@13.2.0", "", { "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" } }, "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA=="], - - "mdast-util-to-markdown": ["mdast-util-to-markdown@2.1.2", "", { "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" } }, "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="], - - "mdast-util-to-string": ["mdast-util-to-string@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="], - - "mdn-data": ["mdn-data@2.0.30", "", {}, "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="], - - "media-typer": ["media-typer@0.3.0", "", {}, "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="], - - "memfs": ["memfs@3.6.0", "", { "dependencies": { "fs-monkey": "^1.0.4" } }, "sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ=="], - - "merge-descriptors": ["merge-descriptors@1.0.3", "", {}, "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ=="], - - "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], - - "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], - - "methods": ["methods@1.1.2", "", {}, "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="], - - "micromark": ["micromark@4.0.1", "", { "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" } }, "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw=="], - - "micromark-core-commonmark": ["micromark-core-commonmark@2.0.2", "", { "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" } }, "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w=="], - - "micromark-extension-directive": ["micromark-extension-directive@3.0.2", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "parse-entities": "^4.0.0" } }, "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA=="], - - "micromark-extension-frontmatter": ["micromark-extension-frontmatter@2.0.0", "", { "dependencies": { "fault": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg=="], - - "micromark-extension-gfm": ["micromark-extension-gfm@3.0.0", "", { "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w=="], - - "micromark-extension-gfm-autolink-literal": ["micromark-extension-gfm-autolink-literal@2.1.0", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw=="], - - "micromark-extension-gfm-footnote": ["micromark-extension-gfm-footnote@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw=="], - - "micromark-extension-gfm-strikethrough": ["micromark-extension-gfm-strikethrough@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="], - - "micromark-extension-gfm-table": ["micromark-extension-gfm-table@2.1.0", "", { "dependencies": { "devlop": "^1.0.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" } }, "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g=="], - - "micromark-extension-gfm-tagfilter": ["micromark-extension-gfm-tagfilter@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg=="], - - "micromark-extension-gfm-task-list-item": ["micromark-extension-gfm-task-list-item@2.1.0", "", { "dependencies": { "devlop": "^1.0.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" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="], - - "micromark-extension-mdx-expression": ["micromark-extension-mdx-expression@3.0.0", "", { "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" } }, "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ=="], - - "micromark-extension-mdx-jsx": ["micromark-extension-mdx-jsx@3.0.1", "", { "dependencies": { "@types/acorn": "^4.0.0", "@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" } }, "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg=="], - - "micromark-extension-mdx-md": ["micromark-extension-mdx-md@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ=="], - - "micromark-extension-mdxjs": ["micromark-extension-mdxjs@3.0.0", "", { "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" } }, "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ=="], - - "micromark-extension-mdxjs-esm": ["micromark-extension-mdxjs-esm@3.0.0", "", { "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" } }, "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A=="], - - "micromark-factory-destination": ["micromark-factory-destination@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="], - - "micromark-factory-label": ["micromark-factory-label@2.0.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="], - - "micromark-factory-mdx-expression": ["micromark-factory-mdx-expression@2.0.2", "", { "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" } }, "sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw=="], - - "micromark-factory-space": ["micromark-factory-space@1.1.0", "", { "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-types": "^1.0.0" } }, "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ=="], - - "micromark-factory-title": ["micromark-factory-title@2.0.1", "", { "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" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="], - - "micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "", { "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" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="], - - "micromark-util-character": ["micromark-util-character@1.2.0", "", { "dependencies": { "micromark-util-symbol": "^1.0.0", "micromark-util-types": "^1.0.0" } }, "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg=="], - - "micromark-util-chunked": ["micromark-util-chunked@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="], - - "micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="], - - "micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="], - - "micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="], - - "micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "", { "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" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="], - - "micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], - - "micromark-util-events-to-acorn": ["micromark-util-events-to-acorn@2.0.2", "", { "dependencies": { "@types/acorn": "^4.0.0", "@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" } }, "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA=="], - - "micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="], - - "micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="], - - "micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="], - - "micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="], - - "micromark-util-subtokenize": ["micromark-util-subtokenize@2.0.3", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg=="], - - "micromark-util-symbol": ["micromark-util-symbol@1.1.0", "", {}, "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag=="], - - "micromark-util-types": ["micromark-util-types@2.0.1", "", {}, "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ=="], - - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - - "mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], - - "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], - - "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], - - "mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], - - "mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="], - - "mini-css-extract-plugin": ["mini-css-extract-plugin@2.9.2", "", { "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" }, "peerDependencies": { "webpack": "^5.0.0" } }, "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w=="], - - "minimalistic-assert": ["minimalistic-assert@1.0.1", "", {}, "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="], - - "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - - "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], - - "mkdirp": ["mkdirp@0.3.0", "", {}, "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew=="], - - "mkdirp-classic": ["mkdirp-classic@0.5.3", "", {}, "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="], - - "mrmime": ["mrmime@2.0.0", "", {}, "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw=="], - - "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - - "multicast-dns": ["multicast-dns@7.2.5", "", { "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" }, "bin": { "multicast-dns": "cli.js" } }, "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg=="], - - "nanoid": ["nanoid@3.3.8", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w=="], - - "napi-build-utils": ["napi-build-utils@2.0.0", "", {}, "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA=="], - - "negotiator": ["negotiator@0.6.4", "", {}, "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w=="], - - "neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="], - - "no-case": ["no-case@3.0.4", "", { "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg=="], - - "node-abi": ["node-abi@3.74.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w=="], - - "node-addon-api": ["node-addon-api@6.1.0", "", {}, "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA=="], - - "node-emoji": ["node-emoji@2.2.0", "", { "dependencies": { "@sindresorhus/is": "^4.6.0", "char-regex": "^1.0.2", "emojilib": "^2.4.0", "skin-tone": "^2.0.0" } }, "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw=="], - - "node-forge": ["node-forge@1.3.1", "", {}, "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA=="], - - "node-releases": ["node-releases@2.0.19", "", {}, "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="], - - "nopt": ["nopt@1.0.10", "", { "dependencies": { "abbrev": "1" }, "bin": { "nopt": "./bin/nopt.js" } }, "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg=="], - - "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], - - "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="], - - "normalize-url": ["normalize-url@8.0.1", "", {}, "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w=="], - - "not": ["not@0.1.0", "", {}, "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA=="], - - "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], - - "nprogress": ["nprogress@0.2.0", "", {}, "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA=="], - - "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], - - "null-loader": ["null-loader@4.0.1", "", { "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" }, "peerDependencies": { "webpack": "^4.0.0 || ^5.0.0" } }, "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg=="], - - "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], - - "object-inspect": ["object-inspect@1.13.3", "", {}, "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA=="], - - "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], - - "object.assign": ["object.assign@4.1.7", "", { "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" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="], - - "obuf": ["obuf@1.1.2", "", {}, "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="], - - "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], - - "on-headers": ["on-headers@1.0.2", "", {}, "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="], - - "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], - - "onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], - - "open": ["open@8.4.2", "", { "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" } }, "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="], - - "opener": ["opener@1.5.2", "", { "bin": { "opener": "bin/opener-bin.js" } }, "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A=="], - - "p-cancelable": ["p-cancelable@3.0.0", "", {}, "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw=="], - - "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], - - "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], - - "p-map": ["p-map@4.0.0", "", { "dependencies": { "aggregate-error": "^3.0.0" } }, "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ=="], - - "p-retry": ["p-retry@4.6.2", "", { "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" } }, "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ=="], - - "p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="], - - "package-json": ["package-json@8.1.1", "", { "dependencies": { "got": "^12.1.0", "registry-auth-token": "^5.0.1", "registry-url": "^6.0.0", "semver": "^7.3.7" } }, "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA=="], - - "param-case": ["param-case@3.0.4", "", { "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A=="], - - "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], - - "parse-entities": ["parse-entities@4.0.2", "", { "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" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], - - "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], - - "parse-numeric-range": ["parse-numeric-range@1.3.0", "", {}, "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ=="], - - "parse5": ["parse5@6.0.1", "", {}, "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="], - - "parse5-htmlparser2-tree-adapter": ["parse5-htmlparser2-tree-adapter@7.1.0", "", { "dependencies": { "domhandler": "^5.0.3", "parse5": "^7.0.0" } }, "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g=="], - - "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], - - "pascal-case": ["pascal-case@3.1.2", "", { "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g=="], - - "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], - - "path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="], - - "path-is-inside": ["path-is-inside@1.0.2", "", {}, "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w=="], - - "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - - "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], - - "path-to-regexp": ["path-to-regexp@1.9.0", "", { "dependencies": { "isarray": "0.0.1" } }, "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g=="], - - "path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], - - "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - - "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - - "pkg-dir": ["pkg-dir@7.0.0", "", { "dependencies": { "find-up": "^6.3.0" } }, "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA=="], - - "pkg-up": ["pkg-up@3.1.0", "", { "dependencies": { "find-up": "^3.0.0" } }, "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA=="], - - "postcss": ["postcss@8.4.49", "", { "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA=="], - - "postcss-attribute-case-insensitive": ["postcss-attribute-case-insensitive@7.0.1", "", { "dependencies": { "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw=="], - - "postcss-calc": ["postcss-calc@9.0.1", "", { "dependencies": { "postcss-selector-parser": "^6.0.11", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.2.2" } }, "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ=="], - - "postcss-clamp": ["postcss-clamp@4.1.0", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.6" } }, "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow=="], - - "postcss-color-functional-notation": ["postcss-color-functional-notation@7.0.7", "", { "dependencies": { "@csstools/css-color-parser": "^3.0.7", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-EZvAHsvyASX63vXnyXOIynkxhaHRSsdb7z6yiXKIovGXAolW4cMZ3qoh7k3VdTsLBS6VGdksGfIo3r6+waLoOw=="], - - "postcss-color-hex-alpha": ["postcss-color-hex-alpha@10.0.0", "", { "dependencies": { "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w=="], - - "postcss-color-rebeccapurple": ["postcss-color-rebeccapurple@10.0.0", "", { "dependencies": { "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ=="], - - "postcss-colormin": ["postcss-colormin@6.1.0", "", { "dependencies": { "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", "colord": "^2.9.3", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw=="], - - "postcss-convert-values": ["postcss-convert-values@6.1.0", "", { "dependencies": { "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w=="], - - "postcss-custom-media": ["postcss-custom-media@11.0.5", "", { "dependencies": { "@csstools/cascade-layer-name-parser": "^2.0.4", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/media-query-list-parser": "^4.0.2" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-SQHhayVNgDvSAdX9NQ/ygcDQGEY+aSF4b/96z7QUX6mqL5yl/JgG/DywcF6fW9XbnCRE+aVYk+9/nqGuzOPWeQ=="], - - "postcss-custom-properties": ["postcss-custom-properties@14.0.4", "", { "dependencies": { "@csstools/cascade-layer-name-parser": "^2.0.4", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-QnW8FCCK6q+4ierwjnmXF9Y9KF8q0JkbgVfvQEMa93x1GT8FvOiUevWCN2YLaOWyByeDX8S6VFbZEeWoAoXs2A=="], - - "postcss-custom-selectors": ["postcss-custom-selectors@8.0.4", "", { "dependencies": { "@csstools/cascade-layer-name-parser": "^2.0.4", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-ASOXqNvDCE0dAJ/5qixxPeL1aOVGHGW2JwSy7HyjWNbnWTQCl+fDc968HY1jCmZI0+BaYT5CxsOiUhavpG/7eg=="], - - "postcss-dir-pseudo-class": ["postcss-dir-pseudo-class@9.0.1", "", { "dependencies": { "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA=="], - - "postcss-discard-comments": ["postcss-discard-comments@6.0.2", "", { "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw=="], - - "postcss-discard-duplicates": ["postcss-discard-duplicates@6.0.3", "", { "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw=="], - - "postcss-discard-empty": ["postcss-discard-empty@6.0.3", "", { "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ=="], - - "postcss-discard-overridden": ["postcss-discard-overridden@6.0.2", "", { "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ=="], - - "postcss-discard-unused": ["postcss-discard-unused@6.0.5", "", { "dependencies": { "postcss-selector-parser": "^6.0.16" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA=="], - - "postcss-double-position-gradients": ["postcss-double-position-gradients@6.0.0", "", { "dependencies": { "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-JkIGah3RVbdSEIrcobqj4Gzq0h53GG4uqDPsho88SgY84WnpkTpI0k50MFK/sX7XqVisZ6OqUfFnoUO6m1WWdg=="], - - "postcss-focus-visible": ["postcss-focus-visible@10.0.1", "", { "dependencies": { "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA=="], - - "postcss-focus-within": ["postcss-focus-within@9.0.1", "", { "dependencies": { "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw=="], - - "postcss-font-variant": ["postcss-font-variant@5.0.0", "", { "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA=="], - - "postcss-gap-properties": ["postcss-gap-properties@6.0.0", "", { "peerDependencies": { "postcss": "^8.4" } }, "sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw=="], - - "postcss-image-set-function": ["postcss-image-set-function@7.0.0", "", { "dependencies": { "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA=="], - - "postcss-lab-function": ["postcss-lab-function@7.0.7", "", { "dependencies": { "@csstools/css-color-parser": "^3.0.7", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-+ONj2bpOQfsCKZE2T9VGMyVVdGcGUpr7u3SVfvkJlvhTRmDCfY25k4Jc8fubB9DclAPR4+w8uVtDZmdRgdAHig=="], - - "postcss-loader": ["postcss-loader@7.3.4", "", { "dependencies": { "cosmiconfig": "^8.3.5", "jiti": "^1.20.0", "semver": "^7.5.4" }, "peerDependencies": { "postcss": "^7.0.0 || ^8.0.1", "webpack": "^5.0.0" } }, "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A=="], - - "postcss-logical": ["postcss-logical@8.0.0", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-HpIdsdieClTjXLOyYdUPAX/XQASNIwdKt5hoZW08ZOAiI+tbV0ta1oclkpVkW5ANU+xJvk3KkA0FejkjGLXUkg=="], - - "postcss-merge-idents": ["postcss-merge-idents@6.0.3", "", { "dependencies": { "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g=="], - - "postcss-merge-longhand": ["postcss-merge-longhand@6.0.5", "", { "dependencies": { "postcss-value-parser": "^4.2.0", "stylehacks": "^6.1.1" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w=="], - - "postcss-merge-rules": ["postcss-merge-rules@6.1.1", "", { "dependencies": { "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", "cssnano-utils": "^4.0.2", "postcss-selector-parser": "^6.0.16" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ=="], - - "postcss-minify-font-values": ["postcss-minify-font-values@6.1.0", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg=="], - - "postcss-minify-gradients": ["postcss-minify-gradients@6.0.3", "", { "dependencies": { "colord": "^2.9.3", "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q=="], - - "postcss-minify-params": ["postcss-minify-params@6.1.0", "", { "dependencies": { "browserslist": "^4.23.0", "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA=="], - - "postcss-minify-selectors": ["postcss-minify-selectors@6.0.4", "", { "dependencies": { "postcss-selector-parser": "^6.0.16" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ=="], - - "postcss-modules-extract-imports": ["postcss-modules-extract-imports@3.1.0", "", { "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q=="], - - "postcss-modules-local-by-default": ["postcss-modules-local-by-default@4.2.0", "", { "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw=="], - - "postcss-modules-scope": ["postcss-modules-scope@3.2.1", "", { "dependencies": { "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA=="], - - "postcss-modules-values": ["postcss-modules-values@4.0.0", "", { "dependencies": { "icss-utils": "^5.0.0" }, "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ=="], - - "postcss-nesting": ["postcss-nesting@13.0.1", "", { "dependencies": { "@csstools/selector-resolve-nested": "^3.0.0", "@csstools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ=="], - - "postcss-normalize-charset": ["postcss-normalize-charset@6.0.2", "", { "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ=="], - - "postcss-normalize-display-values": ["postcss-normalize-display-values@6.0.2", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg=="], - - "postcss-normalize-positions": ["postcss-normalize-positions@6.0.2", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q=="], - - "postcss-normalize-repeat-style": ["postcss-normalize-repeat-style@6.0.2", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ=="], - - "postcss-normalize-string": ["postcss-normalize-string@6.0.2", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ=="], - - "postcss-normalize-timing-functions": ["postcss-normalize-timing-functions@6.0.2", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA=="], - - "postcss-normalize-unicode": ["postcss-normalize-unicode@6.1.0", "", { "dependencies": { "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg=="], - - "postcss-normalize-url": ["postcss-normalize-url@6.0.2", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ=="], - - "postcss-normalize-whitespace": ["postcss-normalize-whitespace@6.0.2", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q=="], - - "postcss-opacity-percentage": ["postcss-opacity-percentage@3.0.0", "", { "peerDependencies": { "postcss": "^8.4" } }, "sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ=="], - - "postcss-ordered-values": ["postcss-ordered-values@6.0.2", "", { "dependencies": { "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q=="], - - "postcss-overflow-shorthand": ["postcss-overflow-shorthand@6.0.0", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q=="], - - "postcss-page-break": ["postcss-page-break@3.0.4", "", { "peerDependencies": { "postcss": "^8" } }, "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ=="], - - "postcss-place": ["postcss-place@10.0.0", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw=="], - - "postcss-preset-env": ["postcss-preset-env@10.1.3", "", { "dependencies": { "@csstools/postcss-cascade-layers": "^5.0.1", "@csstools/postcss-color-function": "^4.0.7", "@csstools/postcss-color-mix-function": "^3.0.7", "@csstools/postcss-content-alt-text": "^2.0.4", "@csstools/postcss-exponential-functions": "^2.0.6", "@csstools/postcss-font-format-keywords": "^4.0.0", "@csstools/postcss-gamut-mapping": "^2.0.7", "@csstools/postcss-gradients-interpolation-method": "^5.0.7", "@csstools/postcss-hwb-function": "^4.0.7", "@csstools/postcss-ic-unit": "^4.0.0", "@csstools/postcss-initial": "^2.0.0", "@csstools/postcss-is-pseudo-class": "^5.0.1", "@csstools/postcss-light-dark-function": "^2.0.7", "@csstools/postcss-logical-float-and-clear": "^3.0.0", "@csstools/postcss-logical-overflow": "^2.0.0", "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", "@csstools/postcss-logical-resize": "^3.0.0", "@csstools/postcss-logical-viewport-units": "^3.0.3", "@csstools/postcss-media-minmax": "^2.0.6", "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.4", "@csstools/postcss-nested-calc": "^4.0.0", "@csstools/postcss-normalize-display-values": "^4.0.0", "@csstools/postcss-oklab-function": "^4.0.7", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/postcss-random-function": "^1.0.2", "@csstools/postcss-relative-color-syntax": "^3.0.7", "@csstools/postcss-scope-pseudo-class": "^4.0.1", "@csstools/postcss-sign-functions": "^1.1.1", "@csstools/postcss-stepped-value-functions": "^4.0.6", "@csstools/postcss-text-decoration-shorthand": "^4.0.1", "@csstools/postcss-trigonometric-functions": "^4.0.6", "@csstools/postcss-unset-value": "^4.0.0", "autoprefixer": "^10.4.19", "browserslist": "^4.23.1", "css-blank-pseudo": "^7.0.1", "css-has-pseudo": "^7.0.2", "css-prefers-color-scheme": "^10.0.0", "cssdb": "^8.2.3", "postcss-attribute-case-insensitive": "^7.0.1", "postcss-clamp": "^4.1.0", "postcss-color-functional-notation": "^7.0.7", "postcss-color-hex-alpha": "^10.0.0", "postcss-color-rebeccapurple": "^10.0.0", "postcss-custom-media": "^11.0.5", "postcss-custom-properties": "^14.0.4", "postcss-custom-selectors": "^8.0.4", "postcss-dir-pseudo-class": "^9.0.1", "postcss-double-position-gradients": "^6.0.0", "postcss-focus-visible": "^10.0.1", "postcss-focus-within": "^9.0.1", "postcss-font-variant": "^5.0.0", "postcss-gap-properties": "^6.0.0", "postcss-image-set-function": "^7.0.0", "postcss-lab-function": "^7.0.7", "postcss-logical": "^8.0.0", "postcss-nesting": "^13.0.1", "postcss-opacity-percentage": "^3.0.0", "postcss-overflow-shorthand": "^6.0.0", "postcss-page-break": "^3.0.4", "postcss-place": "^10.0.0", "postcss-pseudo-class-any-link": "^10.0.1", "postcss-replace-overflow-wrap": "^4.0.0", "postcss-selector-not": "^8.0.1" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-9qzVhcMFU/MnwYHyYpJz4JhGku/4+xEiPTmhn0hj3IxnUYlEF9vbh7OC1KoLAnenS6Fgg43TKNp9xcuMeAi4Zw=="], - - "postcss-pseudo-class-any-link": ["postcss-pseudo-class-any-link@10.0.1", "", { "dependencies": { "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q=="], - - "postcss-reduce-idents": ["postcss-reduce-idents@6.0.3", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA=="], - - "postcss-reduce-initial": ["postcss-reduce-initial@6.1.0", "", { "dependencies": { "browserslist": "^4.23.0", "caniuse-api": "^3.0.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw=="], - - "postcss-reduce-transforms": ["postcss-reduce-transforms@6.0.2", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA=="], - - "postcss-replace-overflow-wrap": ["postcss-replace-overflow-wrap@4.0.0", "", { "peerDependencies": { "postcss": "^8.0.3" } }, "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw=="], - - "postcss-selector-not": ["postcss-selector-not@8.0.1", "", { "dependencies": { "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.4" } }, "sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA=="], - - "postcss-selector-parser": ["postcss-selector-parser@7.0.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ=="], - - "postcss-sort-media-queries": ["postcss-sort-media-queries@5.2.0", "", { "dependencies": { "sort-css-media-queries": "2.2.0" }, "peerDependencies": { "postcss": "^8.4.23" } }, "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA=="], - - "postcss-svgo": ["postcss-svgo@6.0.3", "", { "dependencies": { "postcss-value-parser": "^4.2.0", "svgo": "^3.2.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g=="], - - "postcss-unique-selectors": ["postcss-unique-selectors@6.0.4", "", { "dependencies": { "postcss-selector-parser": "^6.0.16" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg=="], - - "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], - - "postcss-zindex": ["postcss-zindex@6.0.2", "", { "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg=="], - - "prebuild-install": ["prebuild-install@7.1.3", "", { "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", "simple-get": "^4.0.0", "tar-fs": "^2.0.0", "tunnel-agent": "^0.6.0" }, "bin": { "prebuild-install": "bin.js" } }, "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug=="], - - "pretty-error": ["pretty-error@4.0.0", "", { "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" } }, "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw=="], - - "pretty-time": ["pretty-time@1.1.0", "", {}, "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA=="], - - "prism-react-renderer": ["prism-react-renderer@2.4.1", "", { "dependencies": { "@types/prismjs": "^1.26.0", "clsx": "^2.0.0" }, "peerDependencies": { "react": ">=16.0.0" } }, "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig=="], - - "prismjs": ["prismjs@1.29.0", "", {}, "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q=="], - - "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], - - "prompts": ["prompts@2.4.2", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="], - - "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], - - "property-information": ["property-information@5.6.0", "", { "dependencies": { "xtend": "^4.0.0" } }, "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA=="], - - "proto-list": ["proto-list@1.2.4", "", {}, "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA=="], - - "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], - - "pump": ["pump@3.0.2", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw=="], - - "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], - - "pupa": ["pupa@3.1.0", "", { "dependencies": { "escape-goat": "^4.0.0" } }, "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug=="], - - "qs": ["qs@6.13.0", "", { "dependencies": { "side-channel": "^1.0.6" } }, "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg=="], - - "queue": ["queue@6.0.2", "", { "dependencies": { "inherits": "~2.0.3" } }, "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA=="], - - "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], - - "quick-lru": ["quick-lru@5.1.1", "", {}, "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="], - - "randombytes": ["randombytes@2.1.0", "", { "dependencies": { "safe-buffer": "^5.1.0" } }, "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="], - - "range-parser": ["range-parser@1.2.0", "", {}, "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A=="], - - "raw-body": ["raw-body@2.5.2", "", { "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } }, "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA=="], - - "rc": ["rc@1.2.8", "", { "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "bin": { "rc": "./cli.js" } }, "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw=="], - - "react": ["react@19.0.0", "", {}, "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ=="], - - "react-dev-utils": ["react-dev-utils@12.0.1", "", { "dependencies": { "@babel/code-frame": "^7.16.0", "address": "^1.1.2", "browserslist": "^4.18.1", "chalk": "^4.1.2", "cross-spawn": "^7.0.3", "detect-port-alt": "^1.1.6", "escape-string-regexp": "^4.0.0", "filesize": "^8.0.6", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^6.5.0", "global-modules": "^2.0.0", "globby": "^11.0.4", "gzip-size": "^6.0.0", "immer": "^9.0.7", "is-root": "^2.1.0", "loader-utils": "^3.2.0", "open": "^8.4.0", "pkg-up": "^3.1.0", "prompts": "^2.4.2", "react-error-overlay": "^6.0.11", "recursive-readdir": "^2.2.2", "shell-quote": "^1.7.3", "strip-ansi": "^6.0.1", "text-table": "^0.2.0" } }, "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ=="], - - "react-dom": ["react-dom@19.0.0", "", { "dependencies": { "scheduler": "^0.25.0" }, "peerDependencies": { "react": "^19.0.0" } }, "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ=="], - - "react-error-overlay": ["react-error-overlay@6.0.11", "", {}, "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg=="], - - "react-fast-compare": ["react-fast-compare@3.2.2", "", {}, "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="], - - "react-helmet-async": ["@slorber/react-helmet-async@1.3.0", "", { "dependencies": { "@babel/runtime": "^7.12.5", "invariant": "^2.2.4", "prop-types": "^15.7.2", "react-fast-compare": "^3.2.0", "shallowequal": "^1.1.0" }, "peerDependencies": { "react": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A=="], - - "react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], - - "react-json-view-lite": ["react-json-view-lite@1.5.0", "", { "peerDependencies": { "react": "^16.13.1 || ^17.0.0 || ^18.0.0" } }, "sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw=="], - - "react-loadable": ["@docusaurus/react-loadable@6.0.0", "", { "dependencies": { "@types/react": "*" }, "peerDependencies": { "react": "*" } }, "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ=="], - - "react-loadable-ssr-addon-v5-slorber": ["react-loadable-ssr-addon-v5-slorber@1.0.1", "", { "dependencies": { "@babel/runtime": "^7.10.3" }, "peerDependencies": { "react-loadable": "*", "webpack": ">=4.41.1 || 5.x" } }, "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A=="], - - "react-router": ["react-router@5.3.4", "", { "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", "hoist-non-react-statics": "^3.1.0", "loose-envify": "^1.3.1", "path-to-regexp": "^1.7.0", "prop-types": "^15.6.2", "react-is": "^16.6.0", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" }, "peerDependencies": { "react": ">=15" } }, "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA=="], - - "react-router-config": ["react-router-config@5.1.1", "", { "dependencies": { "@babel/runtime": "^7.1.2" }, "peerDependencies": { "react": ">=15", "react-router": ">=5" } }, "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg=="], - - "react-router-dom": ["react-router-dom@5.3.4", "", { "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", "loose-envify": "^1.3.1", "prop-types": "^15.6.2", "react-router": "5.3.4", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" }, "peerDependencies": { "react": ">=15" } }, "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ=="], - - "react-waypoint": ["react-waypoint@10.3.0", "", { "dependencies": { "@babel/runtime": "^7.12.5", "consolidated-events": "^1.1.0 || ^2.0.0", "prop-types": "^15.0.0", "react-is": "^17.0.1 || ^18.0.0" }, "peerDependencies": { "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, "sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ=="], - - "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], - - "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], - - "reading-time": ["reading-time@1.5.0", "", {}, "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg=="], - - "rechoir": ["rechoir@0.6.2", "", { "dependencies": { "resolve": "^1.1.6" } }, "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw=="], - - "recma-build-jsx": ["recma-build-jsx@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="], - - "recma-jsx": ["recma-jsx@1.0.0", "", { "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" } }, "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q=="], - - "recma-parse": ["recma-parse@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "esast-util-from-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ=="], - - "recma-stringify": ["recma-stringify@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g=="], - - "recursive-readdir": ["recursive-readdir@2.2.3", "", { "dependencies": { "minimatch": "^3.0.5" } }, "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA=="], - - "regenerate": ["regenerate@1.4.2", "", {}, "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="], - - "regenerate-unicode-properties": ["regenerate-unicode-properties@10.2.0", "", { "dependencies": { "regenerate": "^1.4.2" } }, "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA=="], - - "regenerator-runtime": ["regenerator-runtime@0.14.1", "", {}, "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="], - - "regenerator-transform": ["regenerator-transform@0.15.2", "", { "dependencies": { "@babel/runtime": "^7.8.4" } }, "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg=="], - - "regexpu-core": ["regexpu-core@6.2.0", "", { "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" } }, "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA=="], - - "registry-auth-token": ["registry-auth-token@5.0.3", "", { "dependencies": { "@pnpm/npm-conf": "^2.1.0" } }, "sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA=="], - - "registry-url": ["registry-url@6.0.1", "", { "dependencies": { "rc": "1.2.8" } }, "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q=="], - - "regjsgen": ["regjsgen@0.8.0", "", {}, "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q=="], - - "regjsparser": ["regjsparser@0.12.0", "", { "dependencies": { "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ=="], - - "rehype-parse": ["rehype-parse@7.0.1", "", { "dependencies": { "hast-util-from-parse5": "^6.0.0", "parse5": "^6.0.0" } }, "sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw=="], - - "rehype-raw": ["rehype-raw@7.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", "vfile": "^6.0.0" } }, "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww=="], - - "rehype-recma": ["rehype-recma@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "hast-util-to-estree": "^3.0.0" } }, "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw=="], - - "relateurl": ["relateurl@0.2.7", "", {}, "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog=="], - - "remark-directive": ["remark-directive@3.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-directive": "^3.0.0", "micromark-extension-directive": "^3.0.0", "unified": "^11.0.0" } }, "sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA=="], - - "remark-emoji": ["remark-emoji@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.2", "emoticon": "^4.0.1", "mdast-util-find-and-replace": "^3.0.1", "node-emoji": "^2.1.0", "unified": "^11.0.4" } }, "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg=="], - - "remark-frontmatter": ["remark-frontmatter@5.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-frontmatter": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0", "unified": "^11.0.0" } }, "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ=="], - - "remark-gfm": ["remark-gfm@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA=="], - - "remark-mdx": ["remark-mdx@3.1.0", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA=="], - - "remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="], - - "remark-rehype": ["remark-rehype@11.1.1", "", { "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" } }, "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ=="], - - "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], - - "renderkid": ["renderkid@3.0.0", "", { "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", "htmlparser2": "^6.1.0", "lodash": "^4.17.21", "strip-ansi": "^6.0.1" } }, "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg=="], - - "repeat-string": ["repeat-string@1.6.1", "", {}, "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w=="], - - "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], - - "require-like": ["require-like@0.1.2", "", {}, "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A=="], - - "requires-port": ["requires-port@1.0.0", "", {}, "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="], - - "resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="], - - "resolve-alpn": ["resolve-alpn@1.2.1", "", {}, "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="], - - "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], - - "resolve-pathname": ["resolve-pathname@3.0.0", "", {}, "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="], - - "responselike": ["responselike@3.0.0", "", { "dependencies": { "lowercase-keys": "^3.0.0" } }, "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg=="], - - "retry": ["retry@0.13.1", "", {}, "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="], - - "reusify": ["reusify@1.0.4", "", {}, "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="], - - "rimraf": ["rimraf@3.0.2", "", { "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" } }, "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="], - - "rtlcss": ["rtlcss@4.3.0", "", { "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0", "postcss": "^8.4.21", "strip-json-comments": "^3.1.1" }, "bin": { "rtlcss": "bin/rtlcss.js" } }, "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig=="], - - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], - - "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], - - "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], - - "sax": ["sax@1.4.1", "", {}, "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="], - - "scheduler": ["scheduler@0.25.0", "", {}, "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA=="], - - "schema-utils": ["schema-utils@3.3.0", "", { "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } }, "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg=="], - - "search-insights": ["search-insights@2.17.3", "", {}, "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ=="], - - "section-matter": ["section-matter@1.0.0", "", { "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" } }, "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA=="], - - "select-hose": ["select-hose@2.0.0", "", {}, "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg=="], - - "selfsigned": ["selfsigned@2.4.1", "", { "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" } }, "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q=="], - - "semver": ["semver@7.6.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A=="], - - "semver-diff": ["semver-diff@4.0.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA=="], - - "send": ["send@0.19.0", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "2.4.1", "range-parser": "~1.2.1", "statuses": "2.0.1" } }, "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw=="], - - "serialize-javascript": ["serialize-javascript@6.0.2", "", { "dependencies": { "randombytes": "^2.1.0" } }, "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g=="], - - "serve-handler": ["serve-handler@6.1.6", "", { "dependencies": { "bytes": "3.0.0", "content-disposition": "0.5.2", "mime-types": "2.1.18", "minimatch": "3.1.2", "path-is-inside": "1.0.2", "path-to-regexp": "3.3.0", "range-parser": "1.2.0" } }, "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ=="], - - "serve-index": ["serve-index@1.9.1", "", { "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "~1.0.3", "http-errors": "~1.6.2", "mime-types": "~2.1.17", "parseurl": "~1.3.2" } }, "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw=="], - - "serve-static": ["serve-static@1.16.2", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "0.19.0" } }, "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw=="], - - "set-function-length": ["set-function-length@1.2.2", "", { "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" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], - - "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], - - "shallow-clone": ["shallow-clone@3.0.1", "", { "dependencies": { "kind-of": "^6.0.2" } }, "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA=="], - - "shallowequal": ["shallowequal@1.1.0", "", {}, "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="], - - "sharp": ["sharp@0.32.6", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.2", "node-addon-api": "^6.1.0", "prebuild-install": "^7.1.1", "semver": "^7.5.4", "simple-get": "^4.0.1", "tar-fs": "^3.0.4", "tunnel-agent": "^0.6.0" } }, "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w=="], - - "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], - - "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - - "shell-quote": ["shell-quote@1.8.2", "", {}, "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA=="], - - "shelljs": ["shelljs@0.8.5", "", { "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" }, "bin": { "shjs": "bin/shjs" } }, "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow=="], - - "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], - - "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], - - "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], - - "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "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" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], - - "signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], - - "simple-concat": ["simple-concat@1.0.1", "", {}, "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="], - - "simple-get": ["simple-get@4.0.1", "", { "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } }, "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA=="], - - "simple-swizzle": ["simple-swizzle@0.2.2", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="], - - "sirv": ["sirv@2.0.4", "", { "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", "totalist": "^3.0.0" } }, "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ=="], - - "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], - - "sitemap": ["sitemap@7.1.2", "", { "dependencies": { "@types/node": "^17.0.5", "@types/sax": "^1.2.1", "arg": "^5.0.0", "sax": "^1.2.4" }, "bin": { "sitemap": "dist/cli.js" } }, "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw=="], - - "skin-tone": ["skin-tone@2.0.0", "", { "dependencies": { "unicode-emoji-modifier-base": "^1.0.0" } }, "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA=="], - - "slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="], - - "snake-case": ["snake-case@3.0.4", "", { "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg=="], - - "sockjs": ["sockjs@0.3.24", "", { "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", "websocket-driver": "^0.7.4" } }, "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ=="], - - "sort-css-media-queries": ["sort-css-media-queries@2.2.0", "", {}, "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA=="], - - "source-map": ["source-map@0.7.4", "", {}, "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="], - - "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], - - "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], - - "space-separated-tokens": ["space-separated-tokens@1.1.5", "", {}, "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA=="], - - "spdy": ["spdy@4.0.2", "", { "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", "http-deceiver": "^1.2.7", "select-hose": "^2.0.0", "spdy-transport": "^3.0.0" } }, "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA=="], - - "spdy-transport": ["spdy-transport@3.0.0", "", { "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", "hpack.js": "^2.1.6", "obuf": "^1.1.2", "readable-stream": "^3.0.6", "wbuf": "^1.7.3" } }, "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw=="], - - "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], - - "srcset": ["srcset@4.0.0", "", {}, "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw=="], - - "statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="], - - "std-env": ["std-env@3.8.0", "", {}, "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w=="], - - "streamx": ["streamx@2.22.0", "", { "dependencies": { "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" }, "optionalDependencies": { "bare-events": "^2.2.0" } }, "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw=="], - - "string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], - - "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], - - "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], - - "stringify-object": ["stringify-object@3.3.0", "", { "dependencies": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", "is-regexp": "^1.0.0" } }, "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw=="], - - "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "strip-bom-string": ["strip-bom-string@1.0.0", "", {}, "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g=="], - - "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], - - "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], - - "style-to-object": ["style-to-object@1.0.8", "", { "dependencies": { "inline-style-parser": "0.2.4" } }, "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g=="], - - "stylehacks": ["stylehacks@6.1.1", "", { "dependencies": { "browserslist": "^4.23.0", "postcss-selector-parser": "^6.0.16" }, "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg=="], - - "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - - "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], - - "svg-parser": ["svg-parser@2.0.4", "", {}, "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ=="], - - "svgo": ["svgo@3.3.2", "", { "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", "css-tree": "^2.3.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.0.0" }, "bin": "./bin/svgo" }, "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw=="], - - "swc-loader": ["swc-loader@0.2.6", "", { "dependencies": { "@swc/counter": "^0.1.3" }, "peerDependencies": { "@swc/core": "^1.2.147", "webpack": ">=2" } }, "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg=="], - - "tapable": ["tapable@2.2.1", "", {}, "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="], - - "tar-fs": ["tar-fs@3.0.8", "", { "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { "bare-fs": "^4.0.1", "bare-path": "^3.0.0" } }, "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg=="], - - "tar-stream": ["tar-stream@3.1.7", "", { "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ=="], - - "terser": ["terser@5.37.0", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA=="], - - "terser-webpack-plugin": ["terser-webpack-plugin@5.3.11", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "peerDependencies": { "webpack": "^5.1.0" } }, "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ=="], - - "text-decoder": ["text-decoder@1.2.3", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA=="], - - "text-table": ["text-table@0.2.0", "", {}, "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="], - - "thunky": ["thunky@1.1.0", "", {}, "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="], - - "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], - - "tiny-warning": ["tiny-warning@1.0.3", "", {}, "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="], - - "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], - - "to-vfile": ["to-vfile@6.1.0", "", { "dependencies": { "is-buffer": "^2.0.0", "vfile": "^4.0.0" } }, "sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw=="], - - "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], - - "totalist": ["totalist@3.0.1", "", {}, "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ=="], - - "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], - - "trough": ["trough@1.0.5", "", {}, "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA=="], - - "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "tunnel-agent": ["tunnel-agent@0.6.0", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w=="], - - "type-fest": ["type-fest@2.19.0", "", {}, "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA=="], - - "type-is": ["type-is@1.6.18", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="], - - "typedarray-to-buffer": ["typedarray-to-buffer@3.1.5", "", { "dependencies": { "is-typedarray": "^1.0.0" } }, "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q=="], - - "typescript": ["typescript@5.7.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw=="], - - "undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], - - "unicode-canonical-property-names-ecmascript": ["unicode-canonical-property-names-ecmascript@2.0.1", "", {}, "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg=="], - - "unicode-emoji-modifier-base": ["unicode-emoji-modifier-base@1.0.0", "", {}, "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g=="], - - "unicode-match-property-ecmascript": ["unicode-match-property-ecmascript@2.0.0", "", { "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" } }, "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q=="], - - "unicode-match-property-value-ecmascript": ["unicode-match-property-value-ecmascript@2.2.0", "", {}, "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg=="], - - "unicode-property-aliases-ecmascript": ["unicode-property-aliases-ecmascript@2.1.0", "", {}, "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w=="], - - "unified": ["unified@9.2.2", "", { "dependencies": { "bail": "^1.0.0", "extend": "^3.0.0", "is-buffer": "^2.0.0", "is-plain-obj": "^2.0.0", "trough": "^1.0.0", "vfile": "^4.0.0" } }, "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ=="], - - "unique-string": ["unique-string@3.0.0", "", { "dependencies": { "crypto-random-string": "^4.0.0" } }, "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ=="], - - "unist-util-find-after": ["unist-util-find-after@3.0.0", "", { "dependencies": { "unist-util-is": "^4.0.0" } }, "sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ=="], - - "unist-util-is": ["unist-util-is@4.1.0", "", {}, "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg=="], - - "unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], - - "unist-util-position-from-estree": ["unist-util-position-from-estree@2.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ=="], - - "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], - - "unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], - "unist-util-visit-parents": ["unist-util-visit-parents@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw=="], + "oniguruma-to-es": ["oniguruma-to-es@3.1.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-BJ3Jy22YlgejHSO7Fvmz1kKazlaPmRSUH+4adTDUS/dKQ4wLxI+gALZ8updbaux7/m7fIlpgOZ5fp/Inq5jUAw=="], - "universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + "optionator": ["optionator@0.9.4", "", { "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" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], - "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], + "own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="], - "update-browserslist-db": ["update-browserslist-db@1.1.2", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg=="], + "oxc-transform": ["oxc-transform@0.48.2", "", { "optionalDependencies": { "@oxc-transform/binding-darwin-arm64": "0.48.2", "@oxc-transform/binding-darwin-x64": "0.48.2", "@oxc-transform/binding-linux-arm64-gnu": "0.48.2", "@oxc-transform/binding-linux-arm64-musl": "0.48.2", "@oxc-transform/binding-linux-x64-gnu": "0.48.2", "@oxc-transform/binding-linux-x64-musl": "0.48.2", "@oxc-transform/binding-win32-arm64-msvc": "0.48.2", "@oxc-transform/binding-win32-x64-msvc": "0.48.2" } }, "sha512-SGXm/JNOo8aWUboNvF3KOJHAOI7rBRDiMqKyGQpAY2ffR+VfunCEi2tqYynKzG8gz0L6imgqFgyuASOuvJI8NA=="], - "update-notifier": ["update-notifier@6.0.2", "", { "dependencies": { "boxen": "^7.0.0", "chalk": "^5.0.1", "configstore": "^6.0.0", "has-yarn": "^3.0.0", "import-lazy": "^4.0.0", "is-ci": "^3.0.1", "is-installed-globally": "^0.4.0", "is-npm": "^6.0.0", "is-yarn-global": "^0.4.0", "latest-version": "^7.0.0", "pupa": "^3.1.0", "semver": "^7.3.7", "semver-diff": "^4.0.0", "xdg-basedir": "^5.1.0" } }, "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og=="], + "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], - "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], + "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], - "url-loader": ["url-loader@4.1.1", "", { "dependencies": { "loader-utils": "^2.0.0", "mime-types": "^2.1.27", "schema-utils": "^3.0.0" }, "peerDependencies": { "file-loader": "*", "webpack": "^4.0.0 || ^5.0.0" }, "optionalPeers": ["file-loader"] }, "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA=="], + "package-manager-detector": ["package-manager-detector@0.2.9", "", {}, "sha512-+vYvA/Y31l8Zk8dwxHhL3JfTuHPm6tlxM2A3GeQyl7ovYnSp1+mzAxClxaOr0qO1TtPxbQxetI7v5XqKLJZk7Q=="], - "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], - "utila": ["utila@0.4.0", "", {}, "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA=="], + "parse-entities": ["parse-entities@4.0.2", "", { "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" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], - "utility-types": ["utility-types@3.11.0", "", {}, "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw=="], + "parse-ms": ["parse-ms@4.0.0", "", {}, "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw=="], - "utils-merge": ["utils-merge@1.0.1", "", {}, "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="], + "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], - "uuid": ["uuid@8.3.2", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], + "path-data-parser": ["path-data-parser@0.1.0", "", {}, "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w=="], - "value-equal": ["value-equal@1.0.1", "", {}, "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="], + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], - "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], + "path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="], - "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - "vfile-location": ["vfile-location@3.2.0", "", {}, "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA=="], + "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], - "vfile-message": ["vfile-message@4.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw=="], + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "watchpack": ["watchpack@2.4.2", "", { "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" } }, "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw=="], + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "wbuf": ["wbuf@1.7.3", "", { "dependencies": { "minimalistic-assert": "^1.0.0" } }, "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA=="], + "picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="], - "web-namespaces": ["web-namespaces@1.1.4", "", {}, "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw=="], + "pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], - "webpack": ["webpack@5.97.1", "", { "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.14.0", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.10", "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { "webpack": "bin/webpack.js" } }, "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg=="], + "points-on-curve": ["points-on-curve@0.2.0", "", {}, "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A=="], - "webpack-bundle-analyzer": ["webpack-bundle-analyzer@4.10.2", "", { "dependencies": { "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", "commander": "^7.2.0", "debounce": "^1.2.1", "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", "html-escaper": "^2.0.2", "opener": "^1.5.2", "picocolors": "^1.0.0", "sirv": "^2.0.3", "ws": "^7.3.1" }, "bin": { "webpack-bundle-analyzer": "lib/bin/analyzer.js" } }, "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw=="], + "points-on-path": ["points-on-path@0.2.1", "", { "dependencies": { "path-data-parser": "0.1.0", "points-on-curve": "0.2.0" } }, "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g=="], - "webpack-dev-middleware": ["webpack-dev-middleware@5.3.4", "", { "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", "mime-types": "^2.1.31", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "peerDependencies": { "webpack": "^4.0.0 || ^5.0.0" } }, "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q=="], + "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], - "webpack-dev-server": ["webpack-dev-server@4.15.2", "", { "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", "@types/express": "^4.17.13", "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", "default-gateway": "^6.0.3", "express": "^4.17.3", "graceful-fs": "^4.2.6", "html-entities": "^2.3.2", "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", "rimraf": "^3.0.2", "schema-utils": "^4.0.0", "selfsigned": "^2.1.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^5.3.4", "ws": "^8.13.0" }, "peerDependencies": { "webpack": "^4.37.0 || ^5.0.0" }, "optionalPeers": ["webpack"], "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" } }, "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g=="], + "postcss": ["postcss@8.5.3", "", { "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A=="], - "webpack-merge": ["webpack-merge@5.10.0", "", { "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", "wildcard": "^2.0.0" } }, "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA=="], + "postcss-selector-parser": ["postcss-selector-parser@7.1.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA=="], - "webpack-sources": ["webpack-sources@3.2.3", "", {}, "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="], + "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], - "webpackbar": ["webpackbar@6.0.1", "", { "dependencies": { "ansi-escapes": "^4.3.2", "chalk": "^4.1.2", "consola": "^3.2.3", "figures": "^3.2.0", "markdown-table": "^2.0.0", "pretty-time": "^1.1.0", "std-env": "^3.7.0", "wrap-ansi": "^7.0.0" }, "peerDependencies": { "webpack": "3 || 4 || 5" } }, "sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q=="], + "pretty-ms": ["pretty-ms@9.2.0", "", { "dependencies": { "parse-ms": "^4.0.0" } }, "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg=="], - "websocket-driver": ["websocket-driver@0.7.4", "", { "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg=="], + "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], - "websocket-extensions": ["websocket-extensions@0.1.4", "", {}, "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="], + "property-information": ["property-information@7.0.0", "", {}, "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg=="], - "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], - "wide-align": ["wide-align@1.1.5", "", { "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg=="], + "queue": ["queue@6.0.2", "", { "dependencies": { "inherits": "~2.0.3" } }, "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA=="], - "widest-line": ["widest-line@4.0.1", "", { "dependencies": { "string-width": "^5.0.1" } }, "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig=="], + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], - "wildcard": ["wildcard@2.0.1", "", {}, "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ=="], + "react": ["react@19.0.0", "", {}, "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ=="], - "wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + "react-dom": ["react-dom@19.0.0", "", { "dependencies": { "scheduler": "^0.25.0" }, "peerDependencies": { "react": "^19.0.0" } }, "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ=="], - "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], + "react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], - "write-file-atomic": ["write-file-atomic@3.0.3", "", { "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", "signal-exit": "^3.0.2", "typedarray-to-buffer": "^3.1.5" } }, "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q=="], + "react-medium-image-zoom": ["react-medium-image-zoom@5.2.14", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-nfTVYcAUnBzXQpPDcZL+cG/e6UceYUIG+zDcnemL7jtAqbJjVVkA85RgneGtJeni12dTyiRPZVM6Szkmwd/o8w=="], - "ws": ["ws@7.5.10", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="], + "react-remove-scroll": ["react-remove-scroll@2.6.3", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ=="], - "xdg-basedir": ["xdg-basedir@5.1.0", "", {}, "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ=="], + "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], - "xml-js": ["xml-js@1.6.11", "", { "dependencies": { "sax": "^1.2.4" }, "bin": { "xml-js": "./bin/cli.js" } }, "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g=="], + "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], - "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], + "readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], - "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + "recma-build-jsx": ["recma-build-jsx@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="], - "yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="], + "recma-jsx": ["recma-jsx@1.0.0", "", { "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" } }, "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q=="], - "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + "recma-parse": ["recma-parse@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "esast-util-from-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ=="], - "zwitch": ["zwitch@1.0.5", "", {}, "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw=="], + "recma-stringify": ["recma-stringify@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g=="], - "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "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" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], - "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "regex": ["regex@6.0.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA=="], - "@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="], - "@babel/helper-create-regexp-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="], - "@babel/plugin-transform-runtime/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "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" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="], - "@babel/preset-env/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "rehype-recma": ["rehype-recma@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "hast-util-to-estree": "^3.0.0" } }, "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw=="], - "@docusaurus/core/webpack-merge": ["webpack-merge@6.0.1", "", { "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", "wildcard": "^2.0.1" } }, "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg=="], + "remark": ["remark@15.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A=="], - "@docusaurus/mdx-loader/unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], + "remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], - "@docusaurus/plugin-content-docs/js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], + "remark-mdx": ["remark-mdx@3.1.0", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA=="], - "@docusaurus/responsive-loader/loader-utils": ["loader-utils@2.0.4", "", { "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", "json5": "^2.1.2" } }, "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw=="], + "remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="], - "@docusaurus/utils/js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], + "remark-rehype": ["remark-rehype@11.1.1", "", { "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" } }, "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ=="], - "@docusaurus/utils-validation/js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], + "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], - "@mdx-js/mdx/unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], + "resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="], - "@pnpm/network.ca-file/graceful-fs": ["graceful-fs@4.2.10", "", {}, "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="], + "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], - "@types/express/@types/express-serve-static-core": ["@types/express-serve-static-core@4.19.6", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A=="], + "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], - "accepts/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], + "reusify": ["reusify@1.0.4", "", {}, "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="], - "ajv-formats/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], + "rimraf": ["rimraf@3.0.2", "", { "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" } }, "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="], - "ansi-align/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "robust-predicates": ["robust-predicates@3.0.2", "", {}, "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="], - "ansi-escapes/type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], + "roughjs": ["roughjs@4.6.6", "", { "dependencies": { "hachure-fill": "^0.5.2", "path-data-parser": "^0.1.0", "points-on-curve": "^0.2.0", "points-on-path": "^0.2.1" } }, "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ=="], - "babel-loader/schema-utils": ["schema-utils@4.3.0", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g=="], + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], - "babel-plugin-polyfill-corejs2/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], - "body-parser/bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], + "safe-array-concat": ["safe-array-concat@1.1.3", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="], - "body-parser/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + "safe-push-apply": ["safe-push-apply@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="], - "cacheable-request/mimic-response": ["mimic-response@4.0.0", "", {}, "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg=="], + "safe-regex-test": ["safe-regex-test@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="], - "cheerio/parse5": ["parse5@7.2.1", "", { "dependencies": { "entities": "^4.5.0" } }, "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ=="], + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], - "cheerio-select/css-select": ["css-select@5.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg=="], + "scheduler": ["scheduler@0.25.0", "", {}, "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA=="], - "clean-css/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "scroll-into-view-if-needed": ["scroll-into-view-if-needed@3.1.0", "", { "dependencies": { "compute-scroll-into-view": "^3.0.2" } }, "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ=="], - "cli-table3/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "section-matter": ["section-matter@1.0.0", "", { "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" } }, "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA=="], - "compression/bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], + "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "compression/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + "set-function-length": ["set-function-length@1.2.2", "", { "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" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], - "copy-webpack-plugin/glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + "set-function-name": ["set-function-name@2.0.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="], - "copy-webpack-plugin/globby": ["globby@13.2.2", "", { "dependencies": { "dir-glob": "^3.0.1", "fast-glob": "^3.3.0", "ignore": "^5.2.4", "merge2": "^1.4.1", "slash": "^4.0.0" } }, "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w=="], + "set-proto": ["set-proto@1.0.0", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="], - "copy-webpack-plugin/schema-utils": ["schema-utils@4.3.0", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g=="], + "sharp": ["sharp@0.33.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="], - "cosmiconfig/js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], - "crypto-random-string/type-fest": ["type-fest@1.4.0", "", {}, "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA=="], + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - "css-minimizer-webpack-plugin/jest-worker": ["jest-worker@29.7.0", "", { "dependencies": { "@types/node": "*", "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" } }, "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw=="], + "shiki": ["shiki@2.5.0", "", { "dependencies": { "@shikijs/core": "2.5.0", "@shikijs/engine-javascript": "2.5.0", "@shikijs/engine-oniguruma": "2.5.0", "@shikijs/langs": "2.5.0", "@shikijs/themes": "2.5.0", "@shikijs/types": "2.5.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ=="], - "css-minimizer-webpack-plugin/schema-utils": ["schema-utils@4.3.0", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g=="], + "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], - "css-select/domhandler": ["domhandler@4.3.1", "", { "dependencies": { "domelementtype": "^2.2.0" } }, "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ=="], + "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], - "css-select/domutils": ["domutils@2.8.0", "", { "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0" } }, "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A=="], + "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], - "csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="], + "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "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" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], - "detect-port-alt/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - "dot-prop/is-obj": ["is-obj@2.0.0", "", {}, "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="], + "simple-swizzle": ["simple-swizzle@0.2.2", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="], - "error-ex/is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], + "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], - "esrecurse/estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], + "source-map": ["source-map@0.7.4", "", {}, "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="], - "express/content-disposition": ["content-disposition@0.5.4", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ=="], + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], - "express/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], - "express/path-to-regexp": ["path-to-regexp@0.1.12", "", {}, "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="], + "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], - "express/range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], + "stable-hash": ["stable-hash@0.0.4", "", {}, "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g=="], - "figures/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="], + "streamsearch": ["streamsearch@1.1.0", "", {}, "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="], - "file-loader/loader-utils": ["loader-utils@2.0.4", "", { "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", "json5": "^2.1.2" } }, "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw=="], + "string.prototype.includes": ["string.prototype.includes@2.0.1", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3" } }, "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg=="], - "finalhandler/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + "string.prototype.matchall": ["string.prototype.matchall@4.0.12", "", { "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" } }, "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA=="], - "fork-ts-checker-webpack-plugin/cosmiconfig": ["cosmiconfig@6.0.0", "", { "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.1.0", "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.7.2" } }, "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg=="], + "string.prototype.repeat": ["string.prototype.repeat@1.0.0", "", { "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" } }, "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w=="], - "fork-ts-checker-webpack-plugin/fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], + "string.prototype.trim": ["string.prototype.trim@1.2.10", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="], - "fork-ts-checker-webpack-plugin/schema-utils": ["schema-utils@2.7.0", "", { "dependencies": { "@types/json-schema": "^7.0.4", "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" } }, "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A=="], + "string.prototype.trimend": ["string.prototype.trimend@1.0.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ=="], - "fork-ts-checker-webpack-plugin/tapable": ["tapable@1.1.3", "", {}, "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA=="], + "string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="], - "gauge/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], - "global-dirs/ini": ["ini@2.0.0", "", {}, "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA=="], + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "global-prefix/which": ["which@1.3.1", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "which": "./bin/which" } }, "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="], + "strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], - "got/@sindresorhus/is": ["@sindresorhus/is@5.6.0", "", {}, "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g=="], + "strip-bom-string": ["strip-bom-string@1.0.0", "", {}, "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g=="], - "hast-util-from-parse5/vfile": ["vfile@4.2.1", "", { "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", "unist-util-stringify-position": "^2.0.0", "vfile-message": "^2.0.0" } }, "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA=="], + "strip-final-newline": ["strip-final-newline@4.0.0", "", {}, "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw=="], - "hast-util-raw/hast-util-from-parse5": ["hast-util-from-parse5@8.0.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "hastscript": "^9.0.0", "property-information": "^6.0.0", "vfile": "^6.0.0", "vfile-location": "^5.0.0", "web-namespaces": "^2.0.0" } }, "sha512-SfMzfdAi/zAoZ1KkFEyyeXBn7u/ShQrfd675ZEE9M3qj+PMFX05xubzRyF76CCSJu8au9jgVxDV1+okFvgZU4A=="], + "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], - "hast-util-raw/parse5": ["parse5@7.2.1", "", { "dependencies": { "entities": "^4.5.0" } }, "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ=="], + "style-to-object": ["style-to-object@1.0.8", "", { "dependencies": { "inline-style-parser": "0.2.4" } }, "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g=="], - "hast-util-raw/web-namespaces": ["web-namespaces@2.0.1", "", {}, "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="], + "styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], - "hast-util-raw/zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + "stylis": ["stylis@4.3.6", "", {}, "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ=="], - "hast-util-select/unist-util-visit": ["unist-util-visit@2.0.3", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^4.0.0", "unist-util-visit-parents": "^3.0.0" } }, "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q=="], + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - "hast-util-to-estree/comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], - "hast-util-to-estree/hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], + "tailwind-merge": ["tailwind-merge@3.0.1", "", {}, "sha512-AvzE8FmSoXC7nC+oU5GlQJbip2UO7tmOhOfQyOmPhrStOGXHU08j8mZEHZ4BmCqY5dWTCo4ClWkNyRNx1wpT0g=="], - "hast-util-to-estree/property-information": ["property-information@6.5.0", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="], + "tailwindcss": ["tailwindcss@4.0.7", "", {}, "sha512-yH5bPPyapavo7L+547h3c4jcBXcrKwybQRjwdEIVAd9iXRvy/3T1CC6XSQEgZtRySjKfqvo3Cc0ZF1DTheuIdA=="], - "hast-util-to-estree/space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], + "tailwindcss-animate": ["tailwindcss-animate@1.0.7", "", { "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders" } }, "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA=="], - "hast-util-to-estree/zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + "tapable": ["tapable@2.2.1", "", {}, "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="], - "hast-util-to-jsx-runtime/comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], + "text-table": ["text-table@0.2.0", "", {}, "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="], - "hast-util-to-jsx-runtime/hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], + "third-party-capital": ["third-party-capital@1.0.20", "", {}, "sha512-oB7yIimd8SuGptespDAZnNkzIz+NWaJCu2RMsbs4Wmp9zSDUM8Nhi3s2OOcqYuv3mN4hitXc8DVx+LyUmbUDiA=="], - "hast-util-to-jsx-runtime/property-information": ["property-information@6.5.0", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="], + "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], - "hast-util-to-jsx-runtime/space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], + "tinyglobby": ["tinyglobby@0.2.12", "", { "dependencies": { "fdir": "^6.4.3", "picomatch": "^4.0.2" } }, "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww=="], - "hast-util-to-parse5/comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], - "hast-util-to-parse5/property-information": ["property-information@6.5.0", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="], + "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], - "hast-util-to-parse5/space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], + "trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - "hast-util-to-parse5/web-namespaces": ["web-namespaces@2.0.1", "", {}, "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="], + "ts-api-utils": ["ts-api-utils@2.0.1", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w=="], - "hast-util-to-parse5/zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + "ts-dedent": ["ts-dedent@2.2.0", "", {}, "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="], - "hastscript/@types/hast": ["@types/hast@2.3.10", "", { "dependencies": { "@types/unist": "^2" } }, "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw=="], + "ts-morph": ["ts-morph@25.0.1", "", { "dependencies": { "@ts-morph/common": "~0.26.0", "code-block-writer": "^13.0.3" } }, "sha512-QJEiTdnz1YjrB3JFhd626gX4rKHDLSjSVMvGGG4v7ONc3RBwa0Eei98G9AT9uNFDMtV54JyuXsFeC+OH0n6bXQ=="], - "hpack.js/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], + "tsconfig-paths": ["tsconfig-paths@3.15.0", "", { "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg=="], - "html-minifier-terser/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "html-webpack-plugin/html-minifier-terser": ["html-minifier-terser@6.1.0", "", { "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", "commander": "^8.3.0", "he": "^1.2.0", "param-case": "^3.0.4", "relateurl": "^0.2.7", "terser": "^5.10.0" }, "bin": { "html-minifier-terser": "cli.js" } }, "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw=="], + "twoslash": ["twoslash@0.2.12", "", { "dependencies": { "@typescript/vfs": "^1.6.0", "twoslash-protocol": "0.2.12" }, "peerDependencies": { "typescript": "*" } }, "sha512-tEHPASMqi7kqwfJbkk7hc/4EhlrKCSLcur+TcvYki3vhIfaRMXnXjaYFgXpoZRbT6GdprD4tGuVBEmTpUgLBsw=="], - "http-proxy-middleware/is-plain-obj": ["is-plain-obj@3.0.0", "", {}, "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA=="], + "twoslash-protocol": ["twoslash-protocol@0.2.12", "", {}, "sha512-5qZLXVYfZ9ABdjqbvPc4RWMr7PrpPaaDSeaYY55vl/w1j6H6kzsWK/urAEIXlzYlyrFmyz1UbwIt+AA0ck+wbg=="], - "jest-worker/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], + "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], - "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + "type-fest": ["type-fest@0.20.2", "", {}, "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="], - "mdast-util-find-and-replace/unist-util-is": ["unist-util-is@6.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw=="], + "typed-array-buffer": ["typed-array-buffer@1.0.3", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="], - "mdast-util-from-markdown/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "typed-array-byte-length": ["typed-array-byte-length@1.0.3", "", { "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" } }, "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg=="], - "mdast-util-frontmatter/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + "typed-array-byte-offset": ["typed-array-byte-offset@1.0.4", "", { "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" } }, "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ=="], - "mdast-util-gfm-autolink-literal/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="], - "mdast-util-gfm-table/markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], + "typescript": ["typescript@5.7.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw=="], - "mdast-util-phrasing/unist-util-is": ["unist-util-is@6.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw=="], + "ufo": ["ufo@1.5.4", "", {}, "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ=="], - "mdast-util-to-markdown/zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + "ultracite": ["ultracite@4.1.20", "", { "dependencies": { "commander": "^12.1.0" }, "bin": { "ultracite": "scripts/run.mjs" } }, "sha512-3vS8st0hUa2ui9RicTepFlnh2SIdZ2dCkLq0QU6HPt0KdU19iSLak3shKm83cG3Dka2sLYNerNlWoqbKHwtphg=="], - "micromark/micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + "unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], - "micromark/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], - "micromark/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="], - "micromark-core-commonmark/micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + "unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - "micromark-core-commonmark/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "unist-util-is": ["unist-util-is@6.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw=="], - "micromark-core-commonmark/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], - "micromark-extension-directive/micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + "unist-util-position-from-estree": ["unist-util-position-from-estree@2.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ=="], - "micromark-extension-directive/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], - "micromark-extension-directive/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], - "micromark-extension-frontmatter/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "unist-util-visit-parents": ["unist-util-visit-parents@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw=="], - "micromark-extension-frontmatter/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], - "micromark-extension-gfm-autolink-literal/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], - "micromark-extension-gfm-autolink-literal/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], - "micromark-extension-gfm-footnote/micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], - "micromark-extension-gfm-footnote/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], - "micromark-extension-gfm-footnote/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], - "micromark-extension-gfm-strikethrough/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "vfile-message": ["vfile-message@4.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw=="], - "micromark-extension-gfm-table/micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + "vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="], - "micromark-extension-gfm-table/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "vscode-languageserver": ["vscode-languageserver@9.0.1", "", { "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g=="], - "micromark-extension-gfm-table/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "vscode-languageserver-protocol": ["vscode-languageserver-protocol@3.17.5", "", { "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" } }, "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg=="], - "micromark-extension-gfm-task-list-item/micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], - "micromark-extension-gfm-task-list-item/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "vscode-languageserver-types": ["vscode-languageserver-types@3.17.5", "", {}, "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="], - "micromark-extension-gfm-task-list-item/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "vscode-uri": ["vscode-uri@3.0.8", "", {}, "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw=="], - "micromark-extension-mdx-expression/micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], - "micromark-extension-mdx-expression/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "which-boxed-primitive": ["which-boxed-primitive@1.1.1", "", { "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" } }, "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA=="], - "micromark-extension-mdx-expression/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "which-builtin-type": ["which-builtin-type@1.2.1", "", { "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" } }, "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q=="], - "micromark-extension-mdx-jsx/micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + "which-collection": ["which-collection@1.0.2", "", { "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" } }, "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw=="], - "micromark-extension-mdx-jsx/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "which-typed-array": ["which-typed-array@1.1.18", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.3", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA=="], - "micromark-extension-mdx-jsx/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], - "micromark-extension-mdxjs-esm/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], - "micromark-extension-mdxjs-esm/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], - "micromark-factory-destination/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "yoctocolors": ["yoctocolors@2.1.1", "", {}, "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ=="], - "micromark-factory-destination/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "zod": ["zod@3.24.2", "", {}, "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ=="], - "micromark-factory-label/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], - "micromark-factory-label/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "@iconify/utils/globals": ["globals@15.15.0", "", {}, "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg=="], - "micromark-factory-mdx-expression/micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + "@next/eslint-plugin-next/fast-glob": ["fast-glob@3.3.1", "", { "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" } }, "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg=="], - "micromark-factory-mdx-expression/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "@ts-morph/common/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], - "micromark-factory-mdx-expression/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], - "micromark-factory-space/micromark-util-types": ["micromark-util-types@1.1.0", "", {}, "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg=="], + "@typescript-eslint/typescript-estree/semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], - "micromark-factory-title/micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@4.2.0", "", {}, "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="], - "micromark-factory-title/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "cytoscape-fcose/cose-base": ["cose-base@2.2.0", "", { "dependencies": { "layout-base": "^2.0.0" } }, "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="], - "micromark-factory-title/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "d3-dsv/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], - "micromark-factory-whitespace/micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + "d3-sankey/d3-array": ["d3-array@2.12.1", "", { "dependencies": { "internmap": "^1.0.0" } }, "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ=="], - "micromark-factory-whitespace/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "d3-sankey/d3-shape": ["d3-shape@1.3.7", "", { "dependencies": { "d3-path": "1" } }, "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="], - "micromark-factory-whitespace/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "eslint-import-resolver-node/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], - "micromark-util-character/micromark-util-types": ["micromark-util-types@1.1.0", "", {}, "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg=="], + "eslint-module-utils/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], - "micromark-util-chunked/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "eslint-plugin-import/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], - "micromark-util-classify-character/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "eslint-plugin-import/doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], - "micromark-util-classify-character/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "eslint-plugin-react/doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], - "micromark-util-decode-numeric-character-reference/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "eslint-plugin-react/resolve": ["resolve@2.0.0-next.5", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="], - "micromark-util-decode-string/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - "micromark-util-decode-string/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "fumadocs-twoslash/tailwind-merge": ["tailwind-merge@2.6.0", "", {}, "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA=="], - "micromark-util-events-to-acorn/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "gray-matter/js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="], - "micromark-util-normalize-identifier/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "is-bun-module/semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], - "micromark-util-sanitize-uri/micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + "katex/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], - "micromark-util-sanitize-uri/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], - "micromark-util-subtokenize/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - "mini-css-extract-plugin/schema-utils": ["schema-utils@4.3.0", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g=="], + "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], - "null-loader/loader-utils": ["loader-utils@2.0.4", "", { "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", "json5": "^2.1.2" } }, "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw=="], + "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - "parse5-htmlparser2-tree-adapter/parse5": ["parse5@7.2.1", "", { "dependencies": { "entities": "^4.5.0" } }, "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ=="], - - "pkg-dir/find-up": ["find-up@6.3.0", "", { "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" } }, "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw=="], - - "pkg-up/find-up": ["find-up@3.0.0", "", { "dependencies": { "locate-path": "^3.0.0" } }, "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg=="], - - "postcss-calc/postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], - - "postcss-discard-unused/postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], - - "postcss-merge-rules/postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], - - "postcss-minify-selectors/postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], - - "postcss-unique-selectors/postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], - - "prebuild-install/detect-libc": ["detect-libc@2.0.3", "", {}, "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw=="], - - "prebuild-install/tar-fs": ["tar-fs@2.1.2", "", { "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^2.1.4" } }, "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA=="], - - "proxy-addr/ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], - - "raw-body/bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], - - "rc/strip-json-comments": ["strip-json-comments@2.0.1", "", {}, "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="], - - "react-waypoint/react-is": ["react-is@18.3.1", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="], - - "recma-jsx/unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - - "recma-parse/unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - - "recma-stringify/unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - - "regjsparser/jsesc": ["jsesc@3.0.2", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g=="], - - "remark-directive/unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - - "remark-emoji/unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - - "remark-frontmatter/unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - - "remark-gfm/unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - - "remark-parse/unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - - "remark-rehype/unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - - "remark-stringify/unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - - "renderkid/htmlparser2": ["htmlparser2@6.1.0", "", { "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", "domutils": "^2.5.2", "entities": "^2.0.0" } }, "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A=="], - - "send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - - "send/encodeurl": ["encodeurl@1.0.2", "", {}, "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="], - - "send/range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], - - "serve-handler/mime-types": ["mime-types@2.1.18", "", { "dependencies": { "mime-db": "~1.33.0" } }, "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ=="], - - "serve-handler/path-to-regexp": ["path-to-regexp@3.3.0", "", {}, "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw=="], - - "serve-index/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - - "serve-index/http-errors": ["http-errors@1.6.3", "", { "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", "statuses": ">= 1.4.0 < 2" } }, "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A=="], - "sharp/detect-libc": ["detect-libc@2.0.3", "", {}, "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw=="], - "sitemap/@types/node": ["@types/node@17.0.45", "", {}, "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw=="], - - "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], - - "string-width/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], - - "stylehacks/postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], - - "svgo/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], - - "svgo/css-select": ["css-select@5.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg=="], - - "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], - - "terser-webpack-plugin/schema-utils": ["schema-utils@4.3.0", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g=="], - - "to-vfile/vfile": ["vfile@4.2.1", "", { "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", "unist-util-stringify-position": "^2.0.0", "vfile-message": "^2.0.0" } }, "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA=="], - - "unified/vfile": ["vfile@4.2.1", "", { "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", "unist-util-stringify-position": "^2.0.0", "vfile-message": "^2.0.0" } }, "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA=="], - - "unist-util-visit/unist-util-is": ["unist-util-is@6.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw=="], - - "unist-util-visit-parents/unist-util-is": ["unist-util-is@6.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw=="], - - "update-notifier/boxen": ["boxen@7.1.1", "", { "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^7.0.1", "chalk": "^5.2.0", "cli-boxes": "^3.0.0", "string-width": "^5.1.2", "type-fest": "^2.13.0", "widest-line": "^4.0.1", "wrap-ansi": "^8.1.0" } }, "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog=="], - - "update-notifier/chalk": ["chalk@5.4.1", "", {}, "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w=="], - - "url-loader/loader-utils": ["loader-utils@2.0.4", "", { "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", "json5": "^2.1.2" } }, "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw=="], - - "webpack-bundle-analyzer/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], - - "webpack-dev-middleware/range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], - - "webpack-dev-middleware/schema-utils": ["schema-utils@4.3.0", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g=="], - - "webpack-dev-server/schema-utils": ["schema-utils@4.3.0", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g=="], - - "webpack-dev-server/ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="], - - "webpackbar/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - - "wide-align/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - - "wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], - - "wrap-ansi/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], - - "@docusaurus/mdx-loader/unified/bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - - "@docusaurus/mdx-loader/unified/is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - - "@docusaurus/mdx-loader/unified/trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - - "@docusaurus/plugin-content-docs/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - - "@docusaurus/utils-validation/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - - "@docusaurus/utils/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - - "@mdx-js/mdx/unified/bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - - "@mdx-js/mdx/unified/is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - - "@mdx-js/mdx/unified/trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - - "ajv-formats/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], - - "ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "babel-loader/schema-utils/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - - "babel-loader/schema-utils/ajv-keywords": ["ajv-keywords@5.1.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3" }, "peerDependencies": { "ajv": "^8.8.2" } }, "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw=="], - - "body-parser/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - - "cli-table3/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "compression/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - - "copy-webpack-plugin/globby/slash": ["slash@4.0.0", "", {}, "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew=="], - - "copy-webpack-plugin/schema-utils/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - - "copy-webpack-plugin/schema-utils/ajv-keywords": ["ajv-keywords@5.1.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3" }, "peerDependencies": { "ajv": "^8.8.2" } }, "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw=="], - - "cosmiconfig/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - - "css-minimizer-webpack-plugin/jest-worker/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], - - "css-minimizer-webpack-plugin/schema-utils/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - - "css-minimizer-webpack-plugin/schema-utils/ajv-keywords": ["ajv-keywords@5.1.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3" }, "peerDependencies": { "ajv": "^8.8.2" } }, "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw=="], - - "css-select/domutils/dom-serializer": ["dom-serializer@1.4.1", "", { "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" } }, "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag=="], - - "csso/css-tree/mdn-data": ["mdn-data@2.0.28", "", {}, "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="], - - "detect-port-alt/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - - "express/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - - "finalhandler/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - - "gauge/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "hast-util-from-parse5/vfile/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "hast-util-from-parse5/vfile/unist-util-stringify-position": ["unist-util-stringify-position@2.0.3", "", { "dependencies": { "@types/unist": "^2.0.2" } }, "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g=="], - - "hast-util-from-parse5/vfile/vfile-message": ["vfile-message@2.0.4", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^2.0.0" } }, "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ=="], - - "hast-util-raw/hast-util-from-parse5/hastscript": ["hastscript@9.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw=="], - - "hast-util-raw/hast-util-from-parse5/property-information": ["property-information@6.5.0", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="], - - "hast-util-raw/hast-util-from-parse5/vfile-location": ["vfile-location@5.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg=="], - - "hast-util-select/unist-util-visit/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "hast-util-select/unist-util-visit/unist-util-visit-parents": ["unist-util-visit-parents@3.1.1", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^4.0.0" } }, "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg=="], - - "hastscript/@types/hast/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "hpack.js/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], - - "hpack.js/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], - - "hpack.js/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], - - "html-webpack-plugin/html-minifier-terser/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], - - "mdast-util-gfm-autolink-literal/micromark-util-character/micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], - - "mini-css-extract-plugin/schema-utils/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - - "mini-css-extract-plugin/schema-utils/ajv-keywords": ["ajv-keywords@5.1.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3" }, "peerDependencies": { "ajv": "^8.8.2" } }, "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw=="], - - "pkg-dir/find-up/locate-path": ["locate-path@7.2.0", "", { "dependencies": { "p-locate": "^6.0.0" } }, "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA=="], - - "pkg-dir/find-up/path-exists": ["path-exists@5.0.0", "", {}, "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ=="], - - "pkg-up/find-up/locate-path": ["locate-path@3.0.0", "", { "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A=="], - - "prebuild-install/tar-fs/tar-stream": ["tar-stream@2.2.0", "", { "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" } }, "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="], - - "recma-jsx/unified/bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - - "recma-jsx/unified/is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - - "recma-jsx/unified/trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - - "recma-parse/unified/bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - - "recma-parse/unified/is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - - "recma-parse/unified/trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - - "recma-stringify/unified/bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - - "recma-stringify/unified/is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - - "recma-stringify/unified/trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - - "remark-directive/unified/bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - - "remark-directive/unified/is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - - "remark-directive/unified/trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - - "remark-emoji/unified/bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - - "remark-emoji/unified/is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - - "remark-emoji/unified/trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - - "remark-frontmatter/unified/bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - - "remark-frontmatter/unified/is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - - "remark-frontmatter/unified/trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - - "remark-gfm/unified/bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - - "remark-gfm/unified/is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - - "remark-gfm/unified/trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - - "remark-parse/unified/bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - - "remark-parse/unified/is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - - "remark-parse/unified/trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - - "remark-rehype/unified/bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - - "remark-rehype/unified/is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - - "remark-rehype/unified/trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - - "remark-stringify/unified/bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - - "remark-stringify/unified/is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - - "remark-stringify/unified/trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - - "renderkid/htmlparser2/domhandler": ["domhandler@4.3.1", "", { "dependencies": { "domelementtype": "^2.2.0" } }, "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ=="], - - "renderkid/htmlparser2/domutils": ["domutils@2.8.0", "", { "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0" } }, "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A=="], - - "renderkid/htmlparser2/entities": ["entities@2.2.0", "", {}, "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="], - - "send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - - "serve-handler/mime-types/mime-db": ["mime-db@1.33.0", "", {}, "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="], - - "serve-index/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - - "serve-index/http-errors/depd": ["depd@1.1.2", "", {}, "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="], - - "serve-index/http-errors/inherits": ["inherits@2.0.3", "", {}, "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="], - - "serve-index/http-errors/setprototypeof": ["setprototypeof@1.1.0", "", {}, "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="], - - "serve-index/http-errors/statuses": ["statuses@1.5.0", "", {}, "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="], - - "string-width/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], - - "terser-webpack-plugin/schema-utils/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - - "terser-webpack-plugin/schema-utils/ajv-keywords": ["ajv-keywords@5.1.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3" }, "peerDependencies": { "ajv": "^8.8.2" } }, "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw=="], - - "to-vfile/vfile/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "to-vfile/vfile/unist-util-stringify-position": ["unist-util-stringify-position@2.0.3", "", { "dependencies": { "@types/unist": "^2.0.2" } }, "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g=="], - - "to-vfile/vfile/vfile-message": ["vfile-message@2.0.4", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^2.0.0" } }, "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ=="], - - "unified/vfile/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "unified/vfile/unist-util-stringify-position": ["unist-util-stringify-position@2.0.3", "", { "dependencies": { "@types/unist": "^2.0.2" } }, "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g=="], - - "unified/vfile/vfile-message": ["vfile-message@2.0.4", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^2.0.0" } }, "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ=="], - - "update-notifier/boxen/camelcase": ["camelcase@7.0.1", "", {}, "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw=="], - - "webpack-dev-middleware/schema-utils/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - - "webpack-dev-middleware/schema-utils/ajv-keywords": ["ajv-keywords@5.1.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3" }, "peerDependencies": { "ajv": "^8.8.2" } }, "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw=="], - - "webpack-dev-server/schema-utils/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - - "webpack-dev-server/schema-utils/ajv-keywords": ["ajv-keywords@5.1.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3" }, "peerDependencies": { "ajv": "^8.8.2" } }, "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw=="], - - "webpackbar/wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - - "wide-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], - - "babel-loader/schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], - - "copy-webpack-plugin/schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], - - "css-minimizer-webpack-plugin/schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], - - "css-select/domutils/dom-serializer/entities": ["entities@2.2.0", "", {}, "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="], - - "hast-util-raw/hast-util-from-parse5/hastscript/comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], - - "hast-util-raw/hast-util-from-parse5/hastscript/hast-util-parse-selector": ["hast-util-parse-selector@4.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A=="], - - "hast-util-raw/hast-util-from-parse5/hastscript/space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], - - "mini-css-extract-plugin/schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], - - "pkg-dir/find-up/locate-path/p-locate": ["p-locate@6.0.0", "", { "dependencies": { "p-limit": "^4.0.0" } }, "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw=="], - - "pkg-up/find-up/locate-path/p-locate": ["p-locate@3.0.0", "", { "dependencies": { "p-limit": "^2.0.0" } }, "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ=="], - - "pkg-up/find-up/locate-path/path-exists": ["path-exists@3.0.0", "", {}, "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="], + "sharp/semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], - "renderkid/htmlparser2/domutils/dom-serializer": ["dom-serializer@1.4.1", "", { "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" } }, "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag=="], + "ultracite/commander": ["commander@12.1.0", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="], - "terser-webpack-plugin/schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + "@next/eslint-plugin-next/fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - "webpack-dev-middleware/schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + "@ts-morph/common/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], - "webpack-dev-server/schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], - "webpackbar/wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "cytoscape-fcose/cose-base/layout-base": ["layout-base@2.0.1", "", {}, "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="], - "pkg-dir/find-up/locate-path/p-locate/p-limit": ["p-limit@4.0.0", "", { "dependencies": { "yocto-queue": "^1.0.0" } }, "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ=="], + "d3-sankey/d3-array/internmap": ["internmap@1.0.1", "", {}, "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="], - "pkg-up/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + "d3-sankey/d3-shape/d3-path": ["d3-path@1.0.9", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="], - "pkg-dir/find-up/locate-path/p-locate/p-limit/yocto-queue": ["yocto-queue@1.1.1", "", {}, "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g=="], + "gray-matter/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], } } diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 00000000..ab4237b4 Binary files /dev/null and b/bun.lockb differ diff --git a/bunfig.toml b/bunfig.toml deleted file mode 100644 index 597cd49b..00000000 --- a/bunfig.toml +++ /dev/null @@ -1,3 +0,0 @@ -[install] -exact = true -saveTextLockfile = true \ No newline at end of file diff --git a/components.json b/components.json new file mode 100644 index 00000000..49c6a2cd --- /dev/null +++ b/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/app/global.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/content/docs/about-settlemint/components.mdx b/content/docs/about-settlemint/components.mdx new file mode 100644 index 00000000..c5b7a857 --- /dev/null +++ b/content/docs/about-settlemint/components.mdx @@ -0,0 +1,78 @@ +--- +title: Components +description: Overview of the SettleMint components and tools available to build blockchain applications +--- + +This guide will explain each of the tools and services on SettleMint and how they connect to build a blockchain application. + +## The Blockchain Application + +
+ ![Blockchain Application](../../img/about-settlemint/blockchain-application.png) +
+ +The first step to building anything on SettleMint is to [create an application](../building-with-settlemint/create-an-application). You can think of an application as the collection of resources that you need to build your blockchain application. This includes a blockchain network, smart contracts, middleware, storage, integrations, and insights. + +## Add a Blockchain Network and Node + +
+ ![Blockchain Network and Node](../../img/about-settlemint/network-node.png) +
+ +After creating a blockchain application, you now need to [add a blockchain network](../building-with-settlemint/add-a-network-to-an-application) and node to your application. SettleMint offers a variety of different [blockchain networks](../about-settlemint/supported-blockchains) to choose from whatever your usecase may be. + +## Create a Smart Contract + +
+ ![Smart Contract](../../img/about-settlemint/smart-contract.png) +
+ +## Add a Middleware + +
+ ![Middleware](../../img/about-settlemint/middleware.png) +
+ +Blockchain applications produce data that lives on the blockchain, but we need +to be able to access that data in order to use it. Creating a +[middleware](../building-with-settlemint/middleware) allows us to do so. SettleMint +currently offers three middleware services: The Graph, Smart Contract Portal +Middleware and Firefly Fabconnect. + +## Add Storage + +
+ ![Storage](../../img/about-settlemint/storage.png) +
+ +Your blockchain application may need to store data. Blockchains are good for +running different processes in a decentralized way but can be costly to store +large amounts of data. SettleMint offers [two storage +options](../building-with-settlemint/storage): IPFS (decentralized) and MinIO +(centralized) S3 storage. + +## Add an Integration + +
+ ![Integration](../../img/about-settlemint/integration.png) +
+ +Blockchains are not the only technology that your blockchain application may +need to interact with. SettleMint offers an [Integration +Studio](../building-with-settlemint/integration-studio) which allows you connect your +blockchain application to other technologies such as databases, APIs, and more. +This tool is a low-code to which also offers a visualization of any business +logic included in your integration. + +## Add a Custom Deployment + +Your blockchain application may require custom components or frontend applications that are not provided by the standard SettleMint platform offerings. +The [Custom Deployment](../building-with-settlemint/custom-deployment/) feature allows you to deploy your own Docker images on the SettleMint platform. This provides the flexibility to + integrate custom solutions, such as frontend applications, within your blockchain-based projects, enhancing the overall functionality and user experience of your application. + +## Getting Started + +Ready to build? Head over to: + +- [Building with SettleMint](../building-with-settlemint/add-a-network-to-an-application) for detailed platform instructions +- [Developer Guides](/developer-guides/guide-library) for step-by-step tutorials on common use cases diff --git a/content/docs/about-settlemint/intro.mdx b/content/docs/about-settlemint/intro.mdx new file mode 100644 index 00000000..d7431b8c --- /dev/null +++ b/content/docs/about-settlemint/intro.mdx @@ -0,0 +1,67 @@ +--- +title: Platform Overview +description: Introduction to the SettleMint Platform +--- + +import { Card, Cards } from 'fumadocs-ui/components/card' + +SettleMint makes it easy for any developer to build, deploy and integrate blockchain applications rapidly. How? By radically simplifying the entire blockchain development process through our Blockchain Transformation platform. This drastically reduces the complexity and the time needed for each step in the blockchain development process. + +## Getting Started + + + + Learn about the services and tools you can use on SettleMint + + + + Learn about the supported blockchains that you can use + + + + Create Your First Application using SettleMint on a Managed Cloud + + + + Learn about the supported blockchains that you can use + + + +## Start Building + +Follow these developer guides to start building on SettleMint + + + + Create Your First Application using SettleMint on a Managed Cloud + + + + Learn how to create a custom frontend by building an ERC20 token transfer application + + + + Build a Asset Tokenization blockchain application + + diff --git a/content/docs/about-settlemint/meta.json b/content/docs/about-settlemint/meta.json new file mode 100644 index 00000000..7af0a2f2 --- /dev/null +++ b/content/docs/about-settlemint/meta.json @@ -0,0 +1,5 @@ +{ + "title": "About SettleMint", + "icon": "House", + "pages": ["intro", "supported-blockchains", "components"] +} diff --git a/content/docs/about-settlemint/supported-blockchains.mdx b/content/docs/about-settlemint/supported-blockchains.mdx new file mode 100644 index 00000000..a24e8235 --- /dev/null +++ b/content/docs/about-settlemint/supported-blockchains.mdx @@ -0,0 +1,139 @@ +--- +title: Supported Blockchains +description: Overview of blockchain protocols supported by SettleMint +--- + +import { Card, Cards } from 'fumadocs-ui/components/card' + + +When launching a blockchain development project, the selection of a blockchain protocol is one of the most important decisions that has to be made. Protocols matter because they determine the scope of functionality your application can provide. + +SettleMint currently supports the following protocols: + +## Permissioned Blockchains + + + +

Hyperledger Besu

+
+
+ ![Hyperledger Besu](../../img/about-settlemint/blockchain-logos/besu-logo.png) +
+
Ethereum client designed to be enterprise-friendly
+
+
+ + +

Hyperledger Fabric

+
+
+ ![Hyperledger Fabric](../../img/about-settlemint/blockchain-logos/fabric-logo.png) +
+
An enterprise-grade permissioned distributed ledger
+
+
+ + +

Quorum

+
+
+ ![Quorum](../../img/about-settlemint/blockchain-logos/quorum-logo.png) +
+
An implementation of Ethereum supporting data privacy
+
+
+
+ +## Public Blockchains + + + +

Ethereum

+
+
+ ![Ethereum](../../img/about-settlemint/blockchain-logos/eth-logo.png) +
+
Goerli, Mainnet, Sepolia Testnet & Holesky Testnet. Full nodes
+
+
+ + +

Avalanche

+
+
+ ![Avalanche](../../img/about-settlemint/blockchain-logos/avalanche-logo.png) +
+
Mainnet & Fuji testnet. Full nodes
+
+
+ + +

Polygon

+
+
+ ![Polygon](../../img/about-settlemint/blockchain-logos/polygon-logo.webp) +
+
Mainnet & Mumbai Testnet. Full node
+
+
+ + +

Polygon zkEVM

+
+
+ ![Polygon zkEVM](../../img/about-settlemint/blockchain-logos/zkevm-logo.png) +
+
Mainnet & Testnet. Full nodes
+
+
+ + +

Arbitrum

+
+
+ ![Arbitrum](../../img/about-settlemint/blockchain-logos/arbitrum-logo.png) +
+
Mainnet & Testnet. Full nodes
+
+
+ + +

Optimism

+
+
+ ![Optimism](../../img/about-settlemint/blockchain-logos/optimism-logo.png) +
+
OP Mainnet & OP Goerli. Full nodes
+
+
+ + +

Hedera

+
+
+ ![Hedera](../../img/about-settlemint/blockchain-logos/hedera-logo.png) +
+
Hedera Mainnet & Testnet. Full nodes
+
+
+
diff --git a/docs/account-billing/add-a-client.mdx b/content/docs/account-billing/add-a-client.mdx similarity index 86% rename from docs/account-billing/add-a-client.mdx rename to content/docs/account-billing/add-a-client.mdx index f05edb58..ac038e92 100644 --- a/docs/account-billing/add-a-client.mdx +++ b/content/docs/account-billing/add-a-client.mdx @@ -9,7 +9,9 @@ This guide explains how to add a client's organization to your organization as a :::tip -If you are not a SettleMint partner, this guide may not be useful for you. For general account and organization information, visit the [Create an Account](../launch-platform/managed-cloud-deployment/1_create-an-account.md) or [About Organization](../launch-platform/managed-cloud-deployment/2_about-organizations.md) sections. +If you are not a SettleMint partner, this guide may not be useful for you. For general account and organization information, visit the + [Create an Account](/launching-the-platform/managed-cloud-deployment/create-an-account) or + [About Organization](/launching-the-platform/managed-cloud-deployment/about-organizations) sections. Learn about the SettleMint Partner program and how to become a partner on our [Partner Program Page](https://www.settlemint.com/partner-program). @@ -17,14 +19,14 @@ Learn about the SettleMint Partner program and how to become a partner on our [P ## Understanding the Partner-Client Model  -![Partner Client Model](../../static/img/account-billing/Partner-Client.png) +![Partner Client Model](../../img/account-billing/Partner-Client.png) As a SettleMint partner, you can manage your client's resource usage and applications on the platform.  This is done by transfering your client's organization to your organization. Your organization's other clients **WILL NOT** see information from any other clients. -Clients already using SettleMint can request to link their organization to yours. The client selects [join a partner](../account-billing/join-a-partner.mdx) from their account to start the process. +Clients already using SettleMint can request to link their organization to yours. The client selects [join a partner](/account-billing/join-a-partner) from their account to start the process. ## Enabling Partner Access @@ -65,7 +67,8 @@ The client will no longer receive any invoices or billing directly from SettleMi ### Clients already using SettleMint  -Clients already using SettleMint can request to transfer their organization to yours. The client selects [join a partner](../account-billing/join-a-partner.mdx) from their account to start the process. +Clients already using SettleMint can request to transfer their organization to yours. +The client selects [join a partner](/account-billing/join-a-partner) from their account to start the process. ### Client new to SettleMint  @@ -83,10 +86,10 @@ The `Add Client` option is only available to users with administrative access to For clients new to SettleMint, you can create a new organization for them by entering a client name. -For clients already using SettleMint, you can transfer their organization by selecting the transfer code option. The tranfer code is what you received by email when a client has requested to [join a partner](../account-billing/join-a-partner.mdx). +For clients already using SettleMint, you can transfer their organization by selecting the transfer code option. The tranfer code is what you received by email when a client has requested to [join a partner](/account-billing/join-a-partner). 3. **Confirming Client Added** -For clients new to SettleMint, you will be redirected to the client's SettleMint Dashboard. You can begin to [create applications](../using-platform/0_create-an-application.md) and [invite members to your client's organization](../../launch-platform/managed-cloud-deployment/about-organizations/). +For clients new to SettleMint, you will be redirected to the client's SettleMint Dashboard. You can begin to [create applications](/using-the-platform/create-an-application.md) and [invite members to your client's organization](../../launch-platform/managed-cloud-deployment/about-organizations/). Clients already using SettleMint will receive an email confirming the transfer of the client's organization. You will see their organization shown under the `Clients & apps` list on the main dashboard. diff --git a/docs/account-billing/20_billing.md b/content/docs/account-billing/billing.md similarity index 99% rename from docs/account-billing/20_billing.md rename to content/docs/account-billing/billing.md index e9f36e75..a557d382 100644 --- a/docs/account-billing/20_billing.md +++ b/content/docs/account-billing/billing.md @@ -1,4 +1,6 @@ -# Billing +--- +title: "Billing" +--- SettleMint follows a **metered pay-as-you-go model**, and charges you **based on the resources you use**. diff --git a/docs/account-billing/join-a-partner.mdx b/content/docs/account-billing/join-a-partner.mdx similarity index 82% rename from docs/account-billing/join-a-partner.mdx rename to content/docs/account-billing/join-a-partner.mdx index b9d49bfc..c8e6f6c9 100644 --- a/docs/account-billing/join-a-partner.mdx +++ b/content/docs/account-billing/join-a-partner.mdx @@ -6,14 +6,15 @@ sidebar_position: 3 This guide explains how to transfer your organization to a SettleMint partner. This feature helps clients of partners better manage their resources and applications on SettleMint. -:::tip + -If you have not been in contact with a SettleMint partner, this guide may not be useful for you. For general account and organization information, visit the [Create an Account](../launch-platform/managed-cloud-deployment/1_create-an-account.md) or [About Organization](../launch-platform/managed-cloud-deployment/2_about-organizations.md) sections. -::: +If you have not been in contact with a SettleMint partner, this guide may not be useful for you. For general account and organization information, visit the [Create an Account](/launching-the-platform/managed-cloud-deployment/create-an-account) or [About Organization](/launching-the-platform/managed-cloud-deployment/about-organizations) sections. + + ## Understanding the Client-Partner Model -![Client Partner Model](../../static/img/account-billing/Client-Partner.png) +![Client Partner Model](../../img/account-billing/Client-Partner.png) As a client of a SettleMint Partner, you can transfer your organization to a partner's organization. @@ -45,9 +46,11 @@ The cost of resources your organization uses on SettleMint (ex: Blockchain Netwo By going to the hompage and selecting the organization dashboard, then the manage menu of the organization , you will see the option to `Join a partner`. By clicking on this you will be shown the `Join a partner` form to complete. -:::info + + The `Join a Partner` option is only available to users with administrative access to your organization. -::: + + 2. **Add the Partner Email** @@ -55,6 +58,7 @@ The `Join a Partner` option is only available to users with administrative acces 3. **Confirmation** - After completing the form, the partner will receive a transfer code via the email you entered. They will then use this transfer code to add your organization as [a client](add-a-client.mdx). + After completing the form, the partner will receive a transfer code via the email you entered. + They will then use this transfer code to add your organization as [a client](/account-billing/add-a-client). Once completed, you will see a note for 24 hours in the SettleMint platform that your organization has been transfered. diff --git a/content/docs/account-billing/meta.json b/content/docs/account-billing/meta.json new file mode 100644 index 00000000..10a2d58d --- /dev/null +++ b/content/docs/account-billing/meta.json @@ -0,0 +1,4 @@ +{ + "title": "Account & Billing", + "icon": "Wallet" +} diff --git a/docs/blockchain-guides/0_Ethereum/1_ethereum-the-basics.md b/content/docs/blockchain-guides/0_Ethereum/1_ethereum-the-basics.md similarity index 98% rename from docs/blockchain-guides/0_Ethereum/1_ethereum-the-basics.md rename to content/docs/blockchain-guides/0_Ethereum/1_ethereum-the-basics.md index 2a8e5970..bee499af 100644 --- a/docs/blockchain-guides/0_Ethereum/1_ethereum-the-basics.md +++ b/content/docs/blockchain-guides/0_Ethereum/1_ethereum-the-basics.md @@ -1,9 +1,13 @@ +--- +title: "Ethereum The Basics" +--- + # The basics Ethereum is one of the most popular public blockchains. It has its own cryptocurrency, called Ether (ETH) or Ethereum, and its own native programming language called Solidity to build and publish dApps (distributed applications) on the Ethereum blockchain. ## Mainnet and Testnet - +cle SettleMint supports, the Ethereum **Mainnet**, the **Sepolia Testnet** and the **Holesky Testnet**. The Mainnet is the primary public Ethereum production blockchain, where actual-value transactions take place. Each transaction requires payment of a transaction fee, payable in the native coin ETH. The Testnet is an instance of the blockchain to be used for testing and experimentation. There are also coins used in the Testnet but they have no value, so there is no risk of real fund. diff --git a/docs/blockchain-guides/0_Ethereum/2_ethereum-node-types.md b/content/docs/blockchain-guides/0_Ethereum/2_ethereum-node-types.md similarity index 91% rename from docs/blockchain-guides/0_Ethereum/2_ethereum-node-types.md rename to content/docs/blockchain-guides/0_Ethereum/2_ethereum-node-types.md index 1265e746..a2342a55 100644 --- a/docs/blockchain-guides/0_Ethereum/2_ethereum-node-types.md +++ b/content/docs/blockchain-guides/0_Ethereum/2_ethereum-node-types.md @@ -1,3 +1,7 @@ +--- +title: "Ethereum Node Types" +--- + # Node types For Ethereum, SettleMint provides support for the Geth client. This means that when you add an Ethereum node, you get a **Geth node** by default. diff --git a/docs/blockchain-guides/0_Ethereum/3_ethereum-connect-to-a-node.md b/content/docs/blockchain-guides/0_Ethereum/3_ethereum-connect-to-a-node.md similarity index 99% rename from docs/blockchain-guides/0_Ethereum/3_ethereum-connect-to-a-node.md rename to content/docs/blockchain-guides/0_Ethereum/3_ethereum-connect-to-a-node.md index cb2c9a5e..d9b8fb36 100644 --- a/docs/blockchain-guides/0_Ethereum/3_ethereum-connect-to-a-node.md +++ b/content/docs/blockchain-guides/0_Ethereum/3_ethereum-connect-to-a-node.md @@ -1,3 +1,7 @@ +--- +title: "Ethereum Connect To A Node" +--- + # Connect to a node For a software application to interact with a blockchain (e.g. by sending transactions/data to the network, or even just by reading data), it must connect to a node. diff --git a/docs/blockchain-guides/0_Ethereum/4_ethereum-network-stats.md b/content/docs/blockchain-guides/0_Ethereum/4_ethereum-network-stats.md similarity index 95% rename from docs/blockchain-guides/0_Ethereum/4_ethereum-network-stats.md rename to content/docs/blockchain-guides/0_Ethereum/4_ethereum-network-stats.md index 94a7c5a0..6d03bc3f 100644 --- a/docs/blockchain-guides/0_Ethereum/4_ethereum-network-stats.md +++ b/content/docs/blockchain-guides/0_Ethereum/4_ethereum-network-stats.md @@ -1,3 +1,7 @@ +--- +title: "Ethereum Network Stats" +--- + # Network stats The dashboard gives you an overview of the following stats for the network: diff --git a/docs/blockchain-guides/0_Ethereum/5_ethereum-integration-tools.md b/content/docs/blockchain-guides/0_Ethereum/5_ethereum-integration-tools.md similarity index 86% rename from docs/blockchain-guides/0_Ethereum/5_ethereum-integration-tools.md rename to content/docs/blockchain-guides/0_Ethereum/5_ethereum-integration-tools.md index 003534a6..64f82caa 100644 --- a/docs/blockchain-guides/0_Ethereum/5_ethereum-integration-tools.md +++ b/content/docs/blockchain-guides/0_Ethereum/5_ethereum-integration-tools.md @@ -1,3 +1,7 @@ +--- +title: "Ethereum Integration Tools" +--- + # Smart Contract Sets You can launch a Smart Contract Set to significantly accelerate the development of your smart contracts. diff --git a/docs/blockchain-guides/0_Ethereum/Template-library/1_ethereum-erc-20.md b/content/docs/blockchain-guides/0_Ethereum/Template-library/1_ethereum-erc-20.md similarity index 99% rename from docs/blockchain-guides/0_Ethereum/Template-library/1_ethereum-erc-20.md rename to content/docs/blockchain-guides/0_Ethereum/Template-library/1_ethereum-erc-20.md index eddb78ba..36f55bf0 100644 --- a/docs/blockchain-guides/0_Ethereum/Template-library/1_ethereum-erc-20.md +++ b/content/docs/blockchain-guides/0_Ethereum/Template-library/1_ethereum-erc-20.md @@ -1,3 +1,7 @@ +--- +title: "Ethereum Erc 20" +--- + # ERC-20 token ERC-20 tokens are blockchain-based assets, issued on the Ethereum network, that have value and can be sent and received. These tokens are fungible, meaning they can be exchanged with another token of the same type because they have identical properties and there is an equal value. For example, the ERC-20 token of Alice is exactly the same as the ERC-20 token of Bob. They can exchange their token without consequences. diff --git a/docs/blockchain-guides/0_Ethereum/Template-library/2_ethereum-erc-721.md b/content/docs/blockchain-guides/0_Ethereum/Template-library/2_ethereum-erc-721.md similarity index 98% rename from docs/blockchain-guides/0_Ethereum/Template-library/2_ethereum-erc-721.md rename to content/docs/blockchain-guides/0_Ethereum/Template-library/2_ethereum-erc-721.md index 849efda8..1e7bde79 100644 --- a/docs/blockchain-guides/0_Ethereum/Template-library/2_ethereum-erc-721.md +++ b/content/docs/blockchain-guides/0_Ethereum/Template-library/2_ethereum-erc-721.md @@ -1,3 +1,7 @@ +--- +title: "Ethereum Erc 721" +--- + # ERC-721 token ERC-721 tokens are blockchain-based assets, issued on the Ethereum network, that have value and can be sent and received. Contrary to the ERC-20 tokens, these ERC-721 tokens are non- fungible, meaning that two tokens from the same smart contract are not equivalent. @@ -39,7 +43,7 @@ If you want to pixelate your images, use `yarn artengine:pixelate`, the settings Not that the generated metadata does not have a real base uri set, after we have uploaded everything to IPFS, we can set it in the `art_engine/src/config.js` file and update all the metadata using `yarn artengine:update_info`. The end result looks like this: -![thumbzup_419.png](../../../../static/img/document360/Images/thumbzup_419.png) +![thumbzup](../../../../img/document360/Images/thumbzup_419.png) ```json { @@ -79,7 +83,7 @@ In short, replace the images in the `assets/layers` folder, change the logic in The end result would look like this: -![aiko-1.png](../../../../static/img/document360/Images/aiko-1.png) +![image](../../../../img/document360/Images/aiko-1.png) ```json { diff --git a/docs/blockchain-guides/0_Ethereum/Template-library/3_ethereum-state-machine.md b/content/docs/blockchain-guides/0_Ethereum/Template-library/3_ethereum-state-machine.md similarity index 99% rename from docs/blockchain-guides/0_Ethereum/Template-library/3_ethereum-state-machine.md rename to content/docs/blockchain-guides/0_Ethereum/Template-library/3_ethereum-state-machine.md index 5ba5578e..1b90958c 100644 --- a/docs/blockchain-guides/0_Ethereum/Template-library/3_ethereum-state-machine.md +++ b/content/docs/blockchain-guides/0_Ethereum/Template-library/3_ethereum-state-machine.md @@ -1,3 +1,7 @@ +--- +title: "Ethereum State Machine" +--- + # State Machine This smart contract set implements a state machine. State machines are usually used to represent a system where an entity goes through several sequential states. diff --git a/docs/blockchain-guides/0_Ethereum/_category_.json b/content/docs/blockchain-guides/0_Ethereum/meta.json similarity index 100% rename from docs/blockchain-guides/0_Ethereum/_category_.json rename to content/docs/blockchain-guides/0_Ethereum/meta.json diff --git a/docs/blockchain-guides/7_Arbitrum/1_arbitrum-the-basics.md b/content/docs/blockchain-guides/Arbitrum/1_arbitrum-the-basics.md similarity index 98% rename from docs/blockchain-guides/7_Arbitrum/1_arbitrum-the-basics.md rename to content/docs/blockchain-guides/Arbitrum/1_arbitrum-the-basics.md index d529562c..f28fa05f 100644 --- a/docs/blockchain-guides/7_Arbitrum/1_arbitrum-the-basics.md +++ b/content/docs/blockchain-guides/Arbitrum/1_arbitrum-the-basics.md @@ -1,3 +1,7 @@ +--- +title: "Arbitrum The Basics" +--- + # The basics Arbitrum was launched in August 2021 by Offchain Labs, and has its own cryptocurrency since March 2023 called ARB. It is a layer 2 scaling solution for Ethereum that focusses on security, scalability and compatibility. Arbitrum uses optimistic rollup technology to process transactions off-chain, which allows it to offer significantly faster transaction speeds and lower fees than Ethereum mainnet. It uses AVM (Arbitrum Virtual Machine) which is a custom virtual machine that was created for the Arbitrum Layer 2 scaling solution. The AVM is designed to be fully compatible with the Ethereum Virtual Machine (EVM), but it also includes a number of optimizations that make it more efficient and scalable. In addition to scalability and compatibility, Arbitrum is also focused on decentralization. The Arbitrum network is secured by a decentralized network of validators, and it is governed by a DAO (decentralized autonomous organization). This ensures that Arbitrum is not controlled by any single entity. diff --git a/docs/blockchain-guides/7_Arbitrum/2_arbitrum-node-types.md b/content/docs/blockchain-guides/Arbitrum/2_arbitrum-node-types.md similarity index 87% rename from docs/blockchain-guides/7_Arbitrum/2_arbitrum-node-types.md rename to content/docs/blockchain-guides/Arbitrum/2_arbitrum-node-types.md index 29fad315..02df6457 100644 --- a/docs/blockchain-guides/7_Arbitrum/2_arbitrum-node-types.md +++ b/content/docs/blockchain-guides/Arbitrum/2_arbitrum-node-types.md @@ -1,3 +1,7 @@ +--- +title: "Arbitrum Node Types" +--- + # Node types All nodes running in SettleMint are configured to be **archive nodes**, meaning they all include all previous states of a given blockchain since its origin. diff --git a/docs/blockchain-guides/7_Arbitrum/3_arbitrum-connect-to-a-node.md b/content/docs/blockchain-guides/Arbitrum/3_arbitrum-connect-to-a-node.md similarity index 99% rename from docs/blockchain-guides/7_Arbitrum/3_arbitrum-connect-to-a-node.md rename to content/docs/blockchain-guides/Arbitrum/3_arbitrum-connect-to-a-node.md index 08a2db52..8159f3a3 100644 --- a/docs/blockchain-guides/7_Arbitrum/3_arbitrum-connect-to-a-node.md +++ b/content/docs/blockchain-guides/Arbitrum/3_arbitrum-connect-to-a-node.md @@ -1,3 +1,7 @@ +--- +title: "Arbitrum Connect To A Node" +--- + # Connect to a node For a software application to interact with a blockchain (e.g. by sending transactions/data to the network, or even just by reading data), it must connect to a node. This section describes how to connect to your Arbitrum node. diff --git a/docs/blockchain-guides/7_Arbitrum/4_arbitrum-network-stats.md b/content/docs/blockchain-guides/Arbitrum/4_arbitrum-network-stats.md similarity index 95% rename from docs/blockchain-guides/7_Arbitrum/4_arbitrum-network-stats.md rename to content/docs/blockchain-guides/Arbitrum/4_arbitrum-network-stats.md index 94a7c5a0..ece11edf 100644 --- a/docs/blockchain-guides/7_Arbitrum/4_arbitrum-network-stats.md +++ b/content/docs/blockchain-guides/Arbitrum/4_arbitrum-network-stats.md @@ -1,3 +1,7 @@ +--- +title: "Arbitrum Network Stats" +--- + # Network stats The dashboard gives you an overview of the following stats for the network: diff --git a/docs/blockchain-guides/7_Arbitrum/5_arbitrum-integration-tools.md b/content/docs/blockchain-guides/Arbitrum/5_arbitrum-integration-tools.md similarity index 86% rename from docs/blockchain-guides/7_Arbitrum/5_arbitrum-integration-tools.md rename to content/docs/blockchain-guides/Arbitrum/5_arbitrum-integration-tools.md index 003534a6..76b80ae6 100644 --- a/docs/blockchain-guides/7_Arbitrum/5_arbitrum-integration-tools.md +++ b/content/docs/blockchain-guides/Arbitrum/5_arbitrum-integration-tools.md @@ -1,3 +1,7 @@ +--- +title: "Arbitrum Integration Tools" +--- + # Smart Contract Sets You can launch a Smart Contract Set to significantly accelerate the development of your smart contracts. diff --git a/docs/blockchain-guides/7_Arbitrum/Template-library/1_arbitrum-erc-20.md b/content/docs/blockchain-guides/Arbitrum/Template-library/1_arbitrum-erc-20.md similarity index 99% rename from docs/blockchain-guides/7_Arbitrum/Template-library/1_arbitrum-erc-20.md rename to content/docs/blockchain-guides/Arbitrum/Template-library/1_arbitrum-erc-20.md index b5404e17..9411e322 100644 --- a/docs/blockchain-guides/7_Arbitrum/Template-library/1_arbitrum-erc-20.md +++ b/content/docs/blockchain-guides/Arbitrum/Template-library/1_arbitrum-erc-20.md @@ -1,3 +1,7 @@ +--- +title: "Arbitrum Erc 20" +--- + # ERC-20 token ERC-20 tokens are blockchain-based assets, issued on all EVM compatible blockchain networks such as Arbitrum, that have value and can be sent and received. These tokens are fungible, meaning they can be exchanged with another token of the same type because they have identical properties and there is an equal value. For example, the ERC-20 token of Alice is exactly the same as the ERC-20 token of Bob. They can exchange their token without consequences. diff --git a/docs/blockchain-guides/7_Arbitrum/Template-library/2_arbitrum-erc-721.md b/content/docs/blockchain-guides/Arbitrum/Template-library/2_arbitrum-erc-721.md similarity index 98% rename from docs/blockchain-guides/7_Arbitrum/Template-library/2_arbitrum-erc-721.md rename to content/docs/blockchain-guides/Arbitrum/Template-library/2_arbitrum-erc-721.md index e4aa5b1e..a804ce1a 100644 --- a/docs/blockchain-guides/7_Arbitrum/Template-library/2_arbitrum-erc-721.md +++ b/content/docs/blockchain-guides/Arbitrum/Template-library/2_arbitrum-erc-721.md @@ -1,3 +1,7 @@ +--- +title: "Arbitrum Erc 721" +--- + # ERC-721 token ERC-721 tokens are blockchain-based assets, issued on issued on all EVM compatible blockchain networks such as Arbitrum, that have value and can be sent and received. Contrary to the ERC-20 tokens, these ERC-721 tokens are non- fungible, meaning that two tokens from the same smart contract are not equivalent. @@ -39,7 +43,7 @@ If you want to pixelate your images, use `yarn artengine:pixelate`, the settings Not that the generated metadata does not have a real base uri set, after we have uploaded everything to IPFS, we can set it in the `art_engine/src/config.js` file and update all the metadata using `yarn artengine:update_info`. The end result looks like this: -![thumbzup_419.png](../../../../static/img/document360/Images/thumbzup_419.png) +![thumbzup_419.png](../../../../img/document360/Images/thumbzup_419.png) ```json { @@ -79,7 +83,7 @@ In short, replace the images in the `assets/layers` folder, change the logic in The end result would look like this: -![aiko-1.png](../../../../static/img/document360/Images/aiko-1.png) +![aiko-1.png](../../../../img/document360/Images/aiko-1.png) ```json { diff --git a/docs/blockchain-guides/7_Arbitrum/Template-library/3_arbitrum-state-machine.md b/content/docs/blockchain-guides/Arbitrum/Template-library/3_arbitrum-state-machine.md similarity index 99% rename from docs/blockchain-guides/7_Arbitrum/Template-library/3_arbitrum-state-machine.md rename to content/docs/blockchain-guides/Arbitrum/Template-library/3_arbitrum-state-machine.md index a2664456..2522ecd3 100644 --- a/docs/blockchain-guides/7_Arbitrum/Template-library/3_arbitrum-state-machine.md +++ b/content/docs/blockchain-guides/Arbitrum/Template-library/3_arbitrum-state-machine.md @@ -1,3 +1,7 @@ +--- +title: "Arbitrum State Machine" +--- + # State Machine This smart contract set implements a state machine. State machines are usually used to represent a system where an entity goes through several sequential states. diff --git a/docs/blockchain-guides/7_Arbitrum/_category_.json b/content/docs/blockchain-guides/Arbitrum/_category_.json similarity index 100% rename from docs/blockchain-guides/7_Arbitrum/_category_.json rename to content/docs/blockchain-guides/Arbitrum/_category_.json diff --git a/docs/blockchain-guides/2_Avalanche/1_avalanche-the-basics.md b/content/docs/blockchain-guides/Avalanche/1_avalanche-the-basics.md similarity index 98% rename from docs/blockchain-guides/2_Avalanche/1_avalanche-the-basics.md rename to content/docs/blockchain-guides/Avalanche/1_avalanche-the-basics.md index c747f62a..0aa32108 100644 --- a/docs/blockchain-guides/2_Avalanche/1_avalanche-the-basics.md +++ b/content/docs/blockchain-guides/Avalanche/1_avalanche-the-basics.md @@ -1,3 +1,7 @@ +--- +title: "Avalanche The Basics" +--- + # The basics Avalanche was launched in 2020 by Ava Labs, and has its own cryptocurrency called AVAX. It focuses on scalability, speed and low transactions costs. Avalanche is fully compatible with Ethereum components, dApps (distributed applications), and tooling. diff --git a/docs/blockchain-guides/2_Avalanche/2_avalanche-node-types.md b/content/docs/blockchain-guides/Avalanche/2_avalanche-node-types.md similarity index 87% rename from docs/blockchain-guides/2_Avalanche/2_avalanche-node-types.md rename to content/docs/blockchain-guides/Avalanche/2_avalanche-node-types.md index 4198acf6..adc6b877 100644 --- a/docs/blockchain-guides/2_Avalanche/2_avalanche-node-types.md +++ b/content/docs/blockchain-guides/Avalanche/2_avalanche-node-types.md @@ -1,3 +1,7 @@ +--- +title: "Avalanche Node Types" +--- + # Node types All nodes running in SettleMint are configured to be **archive nodes**, meaning they all include all previous states of a given blockchain since its origin. diff --git a/docs/blockchain-guides/2_Avalanche/3_avalanche-connect-to-a-node.md b/content/docs/blockchain-guides/Avalanche/3_avalanche-connect-to-a-node.md similarity index 98% rename from docs/blockchain-guides/2_Avalanche/3_avalanche-connect-to-a-node.md rename to content/docs/blockchain-guides/Avalanche/3_avalanche-connect-to-a-node.md index 6329e518..eed73de9 100644 --- a/docs/blockchain-guides/2_Avalanche/3_avalanche-connect-to-a-node.md +++ b/content/docs/blockchain-guides/Avalanche/3_avalanche-connect-to-a-node.md @@ -1,3 +1,7 @@ +--- +title: "Avalanche Connect To A Node" +--- + # Connect to a node For a software application to interact with a blockchain (e.g. by sending transactions/data to the network, or even just by reading data), it must connect to a node. This section describes how to connect to your Avalanche node. diff --git a/docs/blockchain-guides/2_Avalanche/4_avalanche-network-stats.md b/content/docs/blockchain-guides/Avalanche/4_avalanche-network-stats.md similarity index 95% rename from docs/blockchain-guides/2_Avalanche/4_avalanche-network-stats.md rename to content/docs/blockchain-guides/Avalanche/4_avalanche-network-stats.md index 94a7c5a0..8cd0e024 100644 --- a/docs/blockchain-guides/2_Avalanche/4_avalanche-network-stats.md +++ b/content/docs/blockchain-guides/Avalanche/4_avalanche-network-stats.md @@ -1,3 +1,7 @@ +--- +title: "Avalanche Network Stats" +--- + # Network stats The dashboard gives you an overview of the following stats for the network: diff --git a/docs/blockchain-guides/2_Avalanche/5_avalanche-integration-tools.md b/content/docs/blockchain-guides/Avalanche/5_avalanche-integration-tools.md similarity index 86% rename from docs/blockchain-guides/2_Avalanche/5_avalanche-integration-tools.md rename to content/docs/blockchain-guides/Avalanche/5_avalanche-integration-tools.md index 003534a6..dcddbd66 100644 --- a/docs/blockchain-guides/2_Avalanche/5_avalanche-integration-tools.md +++ b/content/docs/blockchain-guides/Avalanche/5_avalanche-integration-tools.md @@ -1,3 +1,7 @@ +--- +title: "Avalanche Integration Tools" +--- + # Smart Contract Sets You can launch a Smart Contract Set to significantly accelerate the development of your smart contracts. diff --git a/docs/blockchain-guides/2_Avalanche/Template-library/1_avalanche-erc-20.md b/content/docs/blockchain-guides/Avalanche/Template-library/1_avalanche-erc-20.md similarity index 99% rename from docs/blockchain-guides/2_Avalanche/Template-library/1_avalanche-erc-20.md rename to content/docs/blockchain-guides/Avalanche/Template-library/1_avalanche-erc-20.md index 39a2a978..64ae0afb 100644 --- a/docs/blockchain-guides/2_Avalanche/Template-library/1_avalanche-erc-20.md +++ b/content/docs/blockchain-guides/Avalanche/Template-library/1_avalanche-erc-20.md @@ -1,3 +1,7 @@ +--- +title: "Avalanche Erc 20" +--- + # ERC-20 token ERC-20 tokens are blockchain-based assets, issued on the Ethereum network, that have value and can be sent and received. These tokens are fungible, meaning they can be exchanged with another token of the same type because they have identical properties and there is an equal value. For example, the ERC-20 token of Alice is exactly the same as the ERC-20 token of Bob. They can exchange their token without consequences. diff --git a/docs/blockchain-guides/2_Avalanche/Template-library/2_avalanche-erc-721.md b/content/docs/blockchain-guides/Avalanche/Template-library/2_avalanche-erc-721.md similarity index 98% rename from docs/blockchain-guides/2_Avalanche/Template-library/2_avalanche-erc-721.md rename to content/docs/blockchain-guides/Avalanche/Template-library/2_avalanche-erc-721.md index a04b4f0d..bbbf4f6b 100644 --- a/docs/blockchain-guides/2_Avalanche/Template-library/2_avalanche-erc-721.md +++ b/content/docs/blockchain-guides/Avalanche/Template-library/2_avalanche-erc-721.md @@ -1,3 +1,7 @@ +--- +title: "Avalanche Erc 721" +--- + # ERC-721 token ERC-721 tokens are blockchain-based assets, issued on issued on all EVM compatible blockchain networks such as Avalanche, that have value and can be sent and received. Contrary to the ERC-20 tokens, these ERC-721 tokens are non- fungible, meaning that two tokens from the same smart contract are not equivalent. @@ -39,7 +43,7 @@ If you want to pixelate your images, use `yarn artengine:pixelate`, the settings Not that the generated metadata does not have a real base uri set, after we have uploaded everything to IPFS, we can set it in the `art_engine/src/config.js` file and update all the metadata using `yarn artengine:update_info`. The end result looks like this: -![thumbzup_419.png](../../../../static/img/document360/Images/thumbzup_419.png) +![thumbzup_419.png](../../../../img/document360/Images/thumbzup_419.png) ```json { @@ -79,7 +83,7 @@ In short, replace the images in the `assets/layers` folder, change the logic in The end result would look like this: -![aiko-1.png](../../../../static/img/document360/Images/aiko-1.png) +![aiko-1.png](../../../../img/document360/Images/aiko-1.png) ```json { diff --git a/docs/blockchain-guides/2_Avalanche/Template-library/3_avalanche-state-machine.md b/content/docs/blockchain-guides/Avalanche/Template-library/3_avalanche-state-machine.md similarity index 99% rename from docs/blockchain-guides/2_Avalanche/Template-library/3_avalanche-state-machine.md rename to content/docs/blockchain-guides/Avalanche/Template-library/3_avalanche-state-machine.md index 5ba5578e..040fcc94 100644 --- a/docs/blockchain-guides/2_Avalanche/Template-library/3_avalanche-state-machine.md +++ b/content/docs/blockchain-guides/Avalanche/Template-library/3_avalanche-state-machine.md @@ -1,3 +1,7 @@ +--- +title: "Avalanche State Machine" +--- + # State Machine This smart contract set implements a state machine. State machines are usually used to represent a system where an entity goes through several sequential states. diff --git a/docs/blockchain-guides/2_Avalanche/_category_.json b/content/docs/blockchain-guides/Avalanche/_category_.json similarity index 100% rename from docs/blockchain-guides/2_Avalanche/_category_.json rename to content/docs/blockchain-guides/Avalanche/_category_.json diff --git a/docs/blockchain-guides/11_Fantom/1_fantom-the-basics.md b/content/docs/blockchain-guides/Fantom/1_fantom-the-basics.md similarity index 98% rename from docs/blockchain-guides/11_Fantom/1_fantom-the-basics.md rename to content/docs/blockchain-guides/Fantom/1_fantom-the-basics.md index 1599bfe8..7a253946 100644 --- a/docs/blockchain-guides/11_Fantom/1_fantom-the-basics.md +++ b/content/docs/blockchain-guides/Fantom/1_fantom-the-basics.md @@ -1,3 +1,7 @@ +--- +title: "Fantom The Basics" +--- + # The basics Fantom is a high-performance, scalable, and secure smart-contract platform launched in December 2019. It is designed to overcome the limitations of older blockchain platforms like Ethereum. Fantom’s native cryptocurrency is called FTM. The platform leverages a unique consensus mechanism known as Lachesis, which allows it to process transactions much faster and at a lower cost compared to traditional blockchains. Fantom is fully compatible with the Ethereum Virtual Machine (EVM), enabling developers to deploy their existing Ethereum dApps on Fantom without any changes. Beyond scalability and compatibility, Fantom emphasizes decentralization. The network is secured by a decentralized network of validators and governed through on-chain governance, ensuring it is not controlled by any single entity. diff --git a/docs/blockchain-guides/11_Fantom/2_fantom-node-types.md b/content/docs/blockchain-guides/Fantom/2_fantom-node-types.md similarity index 87% rename from docs/blockchain-guides/11_Fantom/2_fantom-node-types.md rename to content/docs/blockchain-guides/Fantom/2_fantom-node-types.md index 7f3da228..ecf684f4 100644 --- a/docs/blockchain-guides/11_Fantom/2_fantom-node-types.md +++ b/content/docs/blockchain-guides/Fantom/2_fantom-node-types.md @@ -1,3 +1,7 @@ +--- +title: "Fantom Node Types" +--- + # Node types All nodes running in SettleMint are configured to be **archive nodes**, meaning they all include all previous states of a given blockchain since its origin. diff --git a/docs/blockchain-guides/11_Fantom/3_fantom-connect-to-a-node.md b/content/docs/blockchain-guides/Fantom/3_fantom-connect-to-a-node.md similarity index 99% rename from docs/blockchain-guides/11_Fantom/3_fantom-connect-to-a-node.md rename to content/docs/blockchain-guides/Fantom/3_fantom-connect-to-a-node.md index 61515dd9..0677f807 100644 --- a/docs/blockchain-guides/11_Fantom/3_fantom-connect-to-a-node.md +++ b/content/docs/blockchain-guides/Fantom/3_fantom-connect-to-a-node.md @@ -1,3 +1,7 @@ +--- +title: "Fantom Connect To A Node" +--- + # Connect to a node For a software application to interact with a blockchain (e.g. by sending transactions/data to the network, or even just by reading data), it must connect to a node. This section describes how to connect to your Fantom node. diff --git a/docs/blockchain-guides/11_Fantom/4_fantom-network-stats.md b/content/docs/blockchain-guides/Fantom/4_fantom-network-stats.md similarity index 95% rename from docs/blockchain-guides/11_Fantom/4_fantom-network-stats.md rename to content/docs/blockchain-guides/Fantom/4_fantom-network-stats.md index 94a7c5a0..831744ea 100644 --- a/docs/blockchain-guides/11_Fantom/4_fantom-network-stats.md +++ b/content/docs/blockchain-guides/Fantom/4_fantom-network-stats.md @@ -1,3 +1,7 @@ +--- +title: "Fantom Network Stats" +--- + # Network stats The dashboard gives you an overview of the following stats for the network: diff --git a/docs/blockchain-guides/11_Fantom/5_fantom-integration-tools.md b/content/docs/blockchain-guides/Fantom/5_fantom-integration-tools.md similarity index 87% rename from docs/blockchain-guides/11_Fantom/5_fantom-integration-tools.md rename to content/docs/blockchain-guides/Fantom/5_fantom-integration-tools.md index 003534a6..ca6502e3 100644 --- a/docs/blockchain-guides/11_Fantom/5_fantom-integration-tools.md +++ b/content/docs/blockchain-guides/Fantom/5_fantom-integration-tools.md @@ -1,3 +1,7 @@ +--- +title: "Fantom Integration Tools" +--- + # Smart Contract Sets You can launch a Smart Contract Set to significantly accelerate the development of your smart contracts. diff --git a/docs/blockchain-guides/11_Fantom/Template-library/1_fantom-erc-20.md b/content/docs/blockchain-guides/Fantom/Template-library/1_fantom-erc-20.md similarity index 99% rename from docs/blockchain-guides/11_Fantom/Template-library/1_fantom-erc-20.md rename to content/docs/blockchain-guides/Fantom/Template-library/1_fantom-erc-20.md index 79b24615..2786a5f5 100644 --- a/docs/blockchain-guides/11_Fantom/Template-library/1_fantom-erc-20.md +++ b/content/docs/blockchain-guides/Fantom/Template-library/1_fantom-erc-20.md @@ -1,3 +1,7 @@ +--- +title: "Fantom Erc 20" +--- + # ERC-20 token ERC-20 tokens are blockchain-based assets, issued on all EVM compatible blockchain networks such as Fantom, that have value and can be sent and received. These tokens are fungible, meaning they can be exchanged with another token of the same type because they have identical properties and there is an equal value. For example, the ERC-20 token of Alice is exactly the same as the ERC-20 token of Bob. They can exchange their token without consequences. diff --git a/docs/blockchain-guides/11_Fantom/Template-library/2_fantom-erc-721.md b/content/docs/blockchain-guides/Fantom/Template-library/2_fantom-erc-721.md similarity index 98% rename from docs/blockchain-guides/11_Fantom/Template-library/2_fantom-erc-721.md rename to content/docs/blockchain-guides/Fantom/Template-library/2_fantom-erc-721.md index 0b7a7304..5c7bdaf8 100644 --- a/docs/blockchain-guides/11_Fantom/Template-library/2_fantom-erc-721.md +++ b/content/docs/blockchain-guides/Fantom/Template-library/2_fantom-erc-721.md @@ -1,3 +1,7 @@ +--- +title: "Fantom Erc 721" +--- + # ERC-721 token ERC-721 tokens are blockchain-based assets, issued on issued on all EVM compatible blockchain networks such as Fantom, that have value and can be sent and received. Contrary to the ERC-20 tokens, these ERC-721 tokens are non- fungible, meaning that two tokens from the same smart contract are not equivalent. @@ -39,7 +43,7 @@ If you want to pixelate your images, use `yarn artengine:pixelate`, the settings Not that the generated metadata does not have a real base uri set, after we have uploaded everything to IPFS, we can set it in the `art_engine/src/config.js` file and update all the metadata using `yarn artengine:update_info`. The end result looks like this: -![thumbzup_419.png](../../../../static/img/document360/Images/thumbzup_419.png) +![thumbzup_419.png](../../../../img/document360/Images/thumbzup_419.png) ```json { @@ -79,7 +83,7 @@ In short, replace the images in the `assets/layers` folder, change the logic in The end result would look like this: -![aiko-1.png](../../../../static/img/document360/Images/aiko-1.png) +![aiko-1.png](../../../../img/document360/Images/aiko-1.png) ```json { diff --git a/docs/blockchain-guides/11_Fantom/Template-library/3_fantom-state-machine.md b/content/docs/blockchain-guides/Fantom/Template-library/3_fantom-state-machine.md similarity index 99% rename from docs/blockchain-guides/11_Fantom/Template-library/3_fantom-state-machine.md rename to content/docs/blockchain-guides/Fantom/Template-library/3_fantom-state-machine.md index a2664456..f592308a 100644 --- a/docs/blockchain-guides/11_Fantom/Template-library/3_fantom-state-machine.md +++ b/content/docs/blockchain-guides/Fantom/Template-library/3_fantom-state-machine.md @@ -1,3 +1,7 @@ +--- +title: "Fantom State Machine" +--- + # State Machine This smart contract set implements a state machine. State machines are usually used to represent a system where an entity goes through several sequential states. diff --git a/docs/blockchain-guides/11_Fantom/_category_.json b/content/docs/blockchain-guides/Fantom/_category_.json similarity index 100% rename from docs/blockchain-guides/11_Fantom/_category_.json rename to content/docs/blockchain-guides/Fantom/_category_.json diff --git a/docs/blockchain-guides/9_Hedera/1_hedera-the-basics.md b/content/docs/blockchain-guides/Hedera/1_hedera-the-basics.md similarity index 98% rename from docs/blockchain-guides/9_Hedera/1_hedera-the-basics.md rename to content/docs/blockchain-guides/Hedera/1_hedera-the-basics.md index 19cf9366..1f728273 100644 --- a/docs/blockchain-guides/9_Hedera/1_hedera-the-basics.md +++ b/content/docs/blockchain-guides/Hedera/1_hedera-the-basics.md @@ -1,3 +1,7 @@ +--- +title: "Hedera The Basics" +--- + # The basics Hedera is a public distributed ledger technology (DLT) network that was launched in August 2018 by Hedera Hashgraph, LLC. It uses the Hashgraph consensus algorithm, which is a unique and novel approach to achieving consensus in a distributed network. Hedera’s native cryptocurrency is called HBAR, and it is used to power the network’s services, including smart contracts, file storage, and regular transactions. diff --git a/docs/blockchain-guides/9_Hedera/2_hedera-node-types.md b/content/docs/blockchain-guides/Hedera/2_hedera-node-types.md similarity index 89% rename from docs/blockchain-guides/9_Hedera/2_hedera-node-types.md rename to content/docs/blockchain-guides/Hedera/2_hedera-node-types.md index 536f74c0..c423826a 100644 --- a/docs/blockchain-guides/9_Hedera/2_hedera-node-types.md +++ b/content/docs/blockchain-guides/Hedera/2_hedera-node-types.md @@ -1,3 +1,7 @@ +--- +title: "Hedera Node Types" +--- + # Node types We don't run our own Hedera nodes. We are running Hedera Json-RPC relay which points to public mirror node(https://mainnet.mirrornode.hedera.com and https://testnet.mirrornode.hedera.com) diff --git a/docs/blockchain-guides/9_Hedera/3_hedera-connect-to-a-relay.md b/content/docs/blockchain-guides/Hedera/3_hedera-connect-to-a-relay.md similarity index 99% rename from docs/blockchain-guides/9_Hedera/3_hedera-connect-to-a-relay.md rename to content/docs/blockchain-guides/Hedera/3_hedera-connect-to-a-relay.md index 0fe64f28..80d9fe55 100644 --- a/docs/blockchain-guides/9_Hedera/3_hedera-connect-to-a-relay.md +++ b/content/docs/blockchain-guides/Hedera/3_hedera-connect-to-a-relay.md @@ -1,3 +1,7 @@ +--- +title: "Hedera Connect To A Relay" +--- + # Connect to a node For a software application to interact with a blockchain (e.g. by sending transactions/data to the network, or even just by reading data), it must connect to a node. This section describes how to connect to your Hedera node. diff --git a/docs/blockchain-guides/9_Hedera/4_hedera-network-stats.md b/content/docs/blockchain-guides/Hedera/4_hedera-network-stats.md similarity index 95% rename from docs/blockchain-guides/9_Hedera/4_hedera-network-stats.md rename to content/docs/blockchain-guides/Hedera/4_hedera-network-stats.md index 94a7c5a0..e34bd6a4 100644 --- a/docs/blockchain-guides/9_Hedera/4_hedera-network-stats.md +++ b/content/docs/blockchain-guides/Hedera/4_hedera-network-stats.md @@ -1,3 +1,7 @@ +--- +title: "Hedera Network Stats" +--- + # Network stats The dashboard gives you an overview of the following stats for the network: diff --git a/docs/blockchain-guides/9_Hedera/5_hedera-integration-tools.md b/content/docs/blockchain-guides/Hedera/5_hedera-integration-tools.md similarity index 87% rename from docs/blockchain-guides/9_Hedera/5_hedera-integration-tools.md rename to content/docs/blockchain-guides/Hedera/5_hedera-integration-tools.md index 003534a6..65a828f5 100644 --- a/docs/blockchain-guides/9_Hedera/5_hedera-integration-tools.md +++ b/content/docs/blockchain-guides/Hedera/5_hedera-integration-tools.md @@ -1,3 +1,7 @@ +--- +title: "Hedera Integration Tools" +--- + # Smart Contract Sets You can launch a Smart Contract Set to significantly accelerate the development of your smart contracts. diff --git a/docs/blockchain-guides/9_Hedera/Template-library/1_hedera-erc-20.md b/content/docs/blockchain-guides/Hedera/Template-library/1_hedera-erc-20.md similarity index 99% rename from docs/blockchain-guides/9_Hedera/Template-library/1_hedera-erc-20.md rename to content/docs/blockchain-guides/Hedera/Template-library/1_hedera-erc-20.md index f41f47b7..bf848315 100644 --- a/docs/blockchain-guides/9_Hedera/Template-library/1_hedera-erc-20.md +++ b/content/docs/blockchain-guides/Hedera/Template-library/1_hedera-erc-20.md @@ -1,3 +1,7 @@ +--- +title: "Hedera Erc 20" +--- + # ERC-20 token ERC-20 tokens are blockchain-based assets, issued on all EVM compatible blockchain networks such as Hedera, that have value and can be sent and received. These tokens are fungible, meaning they can be exchanged with another token of the same type because they have identical properties and there is an equal value. For example, the ERC-20 token of Alice is exactly the same as the ERC-20 token of Bob. They can exchange their token without consequences. diff --git a/docs/blockchain-guides/9_Hedera/Template-library/2_hedera-erc-721.md b/content/docs/blockchain-guides/Hedera/Template-library/2_hedera-erc-721.md similarity index 98% rename from docs/blockchain-guides/9_Hedera/Template-library/2_hedera-erc-721.md rename to content/docs/blockchain-guides/Hedera/Template-library/2_hedera-erc-721.md index d35430c3..34e60f66 100644 --- a/docs/blockchain-guides/9_Hedera/Template-library/2_hedera-erc-721.md +++ b/content/docs/blockchain-guides/Hedera/Template-library/2_hedera-erc-721.md @@ -1,3 +1,7 @@ +--- +title: "Hedera Erc 721" +--- + # ERC-721 token ERC-721 tokens are blockchain-based assets, issued on issued on all EVM compatible blockchain networks such as Hedera, that have value and can be sent and received. Contrary to the ERC-20 tokens, these ERC-721 tokens are non- fungible, meaning that two tokens from the same smart contract are not equivalent. @@ -39,7 +43,7 @@ If you want to pixelate your images, use `yarn artengine:pixelate`, the settings Not that the generated metadata does not have a real base uri set, after we have uploaded everything to IPFS, we can set it in the `art_engine/src/config.js` file and update all the metadata using `yarn artengine:update_info`. The end result looks like this: -![thumbzup_419.png](../../../../static/img/document360/Images/thumbzup_419.png) +![thumbzup_419.png](../../../../img/document360/Images/thumbzup_419.png) ```json { @@ -79,7 +83,7 @@ In short, replace the images in the `assets/layers` folder, change the logic in The end result would look like this: -![aiko-1.png](../../../../static/img/document360/Images/aiko-1.png) +![aiko-1.png](../../../../img/document360/Images/aiko-1.png) ```json { diff --git a/docs/blockchain-guides/9_Hedera/Template-library/3_hedera-state-machine.md b/content/docs/blockchain-guides/Hedera/Template-library/3_hedera-state-machine.md similarity index 99% rename from docs/blockchain-guides/9_Hedera/Template-library/3_hedera-state-machine.md rename to content/docs/blockchain-guides/Hedera/Template-library/3_hedera-state-machine.md index a2664456..3af09c9e 100644 --- a/docs/blockchain-guides/9_Hedera/Template-library/3_hedera-state-machine.md +++ b/content/docs/blockchain-guides/Hedera/Template-library/3_hedera-state-machine.md @@ -1,3 +1,7 @@ +--- +title: "Hedera State Machine" +--- + # State Machine This smart contract set implements a state machine. State machines are usually used to represent a system where an entity goes through several sequential states. diff --git a/docs/blockchain-guides/9_Hedera/_category_.json b/content/docs/blockchain-guides/Hedera/_category_.json similarity index 100% rename from docs/blockchain-guides/9_Hedera/_category_.json rename to content/docs/blockchain-guides/Hedera/_category_.json diff --git a/docs/blockchain-guides/1_Hyperledger-Besu/10_performance.md b/content/docs/blockchain-guides/Hyperledger-Besu/10_performance.md similarity index 99% rename from docs/blockchain-guides/1_Hyperledger-Besu/10_performance.md rename to content/docs/blockchain-guides/Hyperledger-Besu/10_performance.md index 00b82964..165a760b 100644 --- a/docs/blockchain-guides/1_Hyperledger-Besu/10_performance.md +++ b/content/docs/blockchain-guides/Hyperledger-Besu/10_performance.md @@ -1,3 +1,7 @@ +--- +title: "Performance" +--- + # Understanding Transactions Per Second (TPS) on a Besu Node This document aims to provide a comprehensive overview of transaction throughput on a Hyperledger Besu node, explaining key concepts for readers who may not be familiar with blockchain technology. diff --git a/docs/blockchain-guides/1_Hyperledger-Besu/1_enterprise-ethereum-the-basics.md b/content/docs/blockchain-guides/Hyperledger-Besu/1_enterprise-ethereum-the-basics.md similarity index 98% rename from docs/blockchain-guides/1_Hyperledger-Besu/1_enterprise-ethereum-the-basics.md rename to content/docs/blockchain-guides/Hyperledger-Besu/1_enterprise-ethereum-the-basics.md index 85f3850d..c194e131 100644 --- a/docs/blockchain-guides/1_Hyperledger-Besu/1_enterprise-ethereum-the-basics.md +++ b/content/docs/blockchain-guides/Hyperledger-Besu/1_enterprise-ethereum-the-basics.md @@ -1,3 +1,7 @@ +--- +title: "Enterprise Ethereum The Basics" +--- + # The basics Enterprise Ethereum is the permissioned blockchain version of public Ethereum. The two major Enterprise Ethereum clients are **Hyperledger Besu and Quorum**. Both clients have implemented a permission layer, which only allows known nodes, designed specifically for use in a consortium environment, to join the network. diff --git a/docs/blockchain-guides/1_Hyperledger-Besu/2_enterprise-ethereum-network-settings.md b/content/docs/blockchain-guides/Hyperledger-Besu/2_enterprise-ethereum-network-settings.md similarity index 94% rename from docs/blockchain-guides/1_Hyperledger-Besu/2_enterprise-ethereum-network-settings.md rename to content/docs/blockchain-guides/Hyperledger-Besu/2_enterprise-ethereum-network-settings.md index c13a0410..38c7338b 100644 --- a/docs/blockchain-guides/1_Hyperledger-Besu/2_enterprise-ethereum-network-settings.md +++ b/content/docs/blockchain-guides/Hyperledger-Besu/2_enterprise-ethereum-network-settings.md @@ -1,3 +1,7 @@ +--- +title: "Enterprise Ethereum Network Settings" +--- + # Network settings Depending on your requirements, you can configure some advanced settings for your Hyperledger Besu network. We provide default settings, but you can change these according to your own preferences. diff --git a/docs/blockchain-guides/1_Hyperledger-Besu/3_enterprise-ethereum-node-types.md b/content/docs/blockchain-guides/Hyperledger-Besu/3_enterprise-ethereum-node-types.md similarity index 96% rename from docs/blockchain-guides/1_Hyperledger-Besu/3_enterprise-ethereum-node-types.md rename to content/docs/blockchain-guides/Hyperledger-Besu/3_enterprise-ethereum-node-types.md index f4b8a21e..705523fc 100644 --- a/docs/blockchain-guides/1_Hyperledger-Besu/3_enterprise-ethereum-node-types.md +++ b/content/docs/blockchain-guides/Hyperledger-Besu/3_enterprise-ethereum-node-types.md @@ -1,3 +1,7 @@ +--- +title: "Enterprise Ethereum Node Types" +--- + # Node types You can choose between 2 types of node: diff --git a/docs/blockchain-guides/1_Hyperledger-Besu/4_enterprise-ethereum-connect-to-a-node.md b/content/docs/blockchain-guides/Hyperledger-Besu/4_enterprise-ethereum-connect-to-a-node.md similarity index 98% rename from docs/blockchain-guides/1_Hyperledger-Besu/4_enterprise-ethereum-connect-to-a-node.md rename to content/docs/blockchain-guides/Hyperledger-Besu/4_enterprise-ethereum-connect-to-a-node.md index 65eac9a4..f9b3336e 100644 --- a/docs/blockchain-guides/1_Hyperledger-Besu/4_enterprise-ethereum-connect-to-a-node.md +++ b/content/docs/blockchain-guides/Hyperledger-Besu/4_enterprise-ethereum-connect-to-a-node.md @@ -1,3 +1,7 @@ +--- +title: "Enterprise Ethereum Connect To A Node" +--- + # Connect to a node For a software application to interact with a blockchain (e.g. by sending transactions/data to the network, or even just by reading data), it must connect to a node. diff --git a/docs/blockchain-guides/1_Hyperledger-Besu/5_enterprise-ethereum-network-stats.md b/content/docs/blockchain-guides/Hyperledger-Besu/5_enterprise-ethereum-network-stats.md similarity index 97% rename from docs/blockchain-guides/1_Hyperledger-Besu/5_enterprise-ethereum-network-stats.md rename to content/docs/blockchain-guides/Hyperledger-Besu/5_enterprise-ethereum-network-stats.md index 308803a1..073124d8 100644 --- a/docs/blockchain-guides/1_Hyperledger-Besu/5_enterprise-ethereum-network-stats.md +++ b/content/docs/blockchain-guides/Hyperledger-Besu/5_enterprise-ethereum-network-stats.md @@ -1,3 +1,7 @@ +--- +title: "Enterprise Ethereum Network Stats" +--- + # Network and node stats ## Network stats diff --git a/docs/blockchain-guides/1_Hyperledger-Besu/6_enterprise-ethereum-integration-tools.md b/content/docs/blockchain-guides/Hyperledger-Besu/6_enterprise-ethereum-integration-tools.md similarity index 84% rename from docs/blockchain-guides/1_Hyperledger-Besu/6_enterprise-ethereum-integration-tools.md rename to content/docs/blockchain-guides/Hyperledger-Besu/6_enterprise-ethereum-integration-tools.md index 003534a6..3bfe9350 100644 --- a/docs/blockchain-guides/1_Hyperledger-Besu/6_enterprise-ethereum-integration-tools.md +++ b/content/docs/blockchain-guides/Hyperledger-Besu/6_enterprise-ethereum-integration-tools.md @@ -1,3 +1,7 @@ +--- +title: "Enterprise Ethereum Integration Tools" +--- + # Smart Contract Sets You can launch a Smart Contract Set to significantly accelerate the development of your smart contracts. diff --git a/docs/blockchain-guides/1_Hyperledger-Besu/8_enterprise-ethereum-connect-external-node.md b/content/docs/blockchain-guides/Hyperledger-Besu/8_enterprise-ethereum-connect-external-node.md similarity index 99% rename from docs/blockchain-guides/1_Hyperledger-Besu/8_enterprise-ethereum-connect-external-node.md rename to content/docs/blockchain-guides/Hyperledger-Besu/8_enterprise-ethereum-connect-external-node.md index e16e6f7d..fec74fd9 100644 --- a/docs/blockchain-guides/1_Hyperledger-Besu/8_enterprise-ethereum-connect-external-node.md +++ b/content/docs/blockchain-guides/Hyperledger-Besu/8_enterprise-ethereum-connect-external-node.md @@ -1,3 +1,7 @@ +--- +title: "Enterprise Ethereum Connect External Node" +--- + # Connect to an external node There are many usecases where not all nodes are running on the SettleMint platform. For example, you might want to connect to a node running on a different server, you might want to connect to a node running on a different blockchain platform or just for development purposes. In this guide, we will show you how to connect to an external node. diff --git a/docs/blockchain-guides/1_Hyperledger-Besu/9_enterprise-ethereum-connect-external-network.md b/content/docs/blockchain-guides/Hyperledger-Besu/9_enterprise-ethereum-connect-external-network.md similarity index 98% rename from docs/blockchain-guides/1_Hyperledger-Besu/9_enterprise-ethereum-connect-external-network.md rename to content/docs/blockchain-guides/Hyperledger-Besu/9_enterprise-ethereum-connect-external-network.md index c12437ed..3b7bf266 100644 --- a/docs/blockchain-guides/1_Hyperledger-Besu/9_enterprise-ethereum-connect-external-network.md +++ b/content/docs/blockchain-guides/Hyperledger-Besu/9_enterprise-ethereum-connect-external-network.md @@ -1,3 +1,7 @@ +--- +title: "Enterprise Ethereum Connect External Network" +--- + # Connect to an External Network The SettleMint platform seamlessly integrates with existing external networks. You can deploy nodes on your external network within the SettleMint platform, enabling you to leverage the platform's robust features, including monitoring, resource scaling, an intuitive JSON-RPC UI, and reliable uptime management. diff --git a/docs/blockchain-guides/1_Hyperledger-Besu/Template-library/1_enterprise-ethereum-erc20.md b/content/docs/blockchain-guides/Hyperledger-Besu/Template-library/1_enterprise-ethereum-erc20.md similarity index 99% rename from docs/blockchain-guides/1_Hyperledger-Besu/Template-library/1_enterprise-ethereum-erc20.md rename to content/docs/blockchain-guides/Hyperledger-Besu/Template-library/1_enterprise-ethereum-erc20.md index eddb78ba..75a0bf1b 100644 --- a/docs/blockchain-guides/1_Hyperledger-Besu/Template-library/1_enterprise-ethereum-erc20.md +++ b/content/docs/blockchain-guides/Hyperledger-Besu/Template-library/1_enterprise-ethereum-erc20.md @@ -1,3 +1,7 @@ +--- +title: "Enterprise Ethereum Erc20" +--- + # ERC-20 token ERC-20 tokens are blockchain-based assets, issued on the Ethereum network, that have value and can be sent and received. These tokens are fungible, meaning they can be exchanged with another token of the same type because they have identical properties and there is an equal value. For example, the ERC-20 token of Alice is exactly the same as the ERC-20 token of Bob. They can exchange their token without consequences. diff --git a/docs/blockchain-guides/1_Hyperledger-Besu/Template-library/2_enterprise-ethereum-erc721.md b/content/docs/blockchain-guides/Hyperledger-Besu/Template-library/2_enterprise-ethereum-erc721.md similarity index 98% rename from docs/blockchain-guides/1_Hyperledger-Besu/Template-library/2_enterprise-ethereum-erc721.md rename to content/docs/blockchain-guides/Hyperledger-Besu/Template-library/2_enterprise-ethereum-erc721.md index 849efda8..67ddcc6f 100644 --- a/docs/blockchain-guides/1_Hyperledger-Besu/Template-library/2_enterprise-ethereum-erc721.md +++ b/content/docs/blockchain-guides/Hyperledger-Besu/Template-library/2_enterprise-ethereum-erc721.md @@ -1,3 +1,7 @@ +--- +title: "Enterprise Ethereum Erc721" +--- + # ERC-721 token ERC-721 tokens are blockchain-based assets, issued on the Ethereum network, that have value and can be sent and received. Contrary to the ERC-20 tokens, these ERC-721 tokens are non- fungible, meaning that two tokens from the same smart contract are not equivalent. @@ -39,7 +43,7 @@ If you want to pixelate your images, use `yarn artengine:pixelate`, the settings Not that the generated metadata does not have a real base uri set, after we have uploaded everything to IPFS, we can set it in the `art_engine/src/config.js` file and update all the metadata using `yarn artengine:update_info`. The end result looks like this: -![thumbzup_419.png](../../../../static/img/document360/Images/thumbzup_419.png) +![thumbzup_419.png](../../../../img/document360/Images/thumbzup_419.png) ```json { @@ -79,7 +83,7 @@ In short, replace the images in the `assets/layers` folder, change the logic in The end result would look like this: -![aiko-1.png](../../../../static/img/document360/Images/aiko-1.png) +![aiko-1.png](../../../../img/document360/Images/aiko-1.png) ```json { diff --git a/docs/blockchain-guides/1_Hyperledger-Besu/Template-library/3_enterprise-ethereum-state-machine.md b/content/docs/blockchain-guides/Hyperledger-Besu/Template-library/3_enterprise-ethereum-state-machine.md similarity index 99% rename from docs/blockchain-guides/1_Hyperledger-Besu/Template-library/3_enterprise-ethereum-state-machine.md rename to content/docs/blockchain-guides/Hyperledger-Besu/Template-library/3_enterprise-ethereum-state-machine.md index 5ba5578e..796b0fb8 100644 --- a/docs/blockchain-guides/1_Hyperledger-Besu/Template-library/3_enterprise-ethereum-state-machine.md +++ b/content/docs/blockchain-guides/Hyperledger-Besu/Template-library/3_enterprise-ethereum-state-machine.md @@ -1,3 +1,7 @@ +--- +title: "Enterprise Ethereum State Machine" +--- + # State Machine This smart contract set implements a state machine. State machines are usually used to represent a system where an entity goes through several sequential states. diff --git a/docs/blockchain-guides/1_Hyperledger-Besu/_category_.json b/content/docs/blockchain-guides/Hyperledger-Besu/_category_.json similarity index 100% rename from docs/blockchain-guides/1_Hyperledger-Besu/_category_.json rename to content/docs/blockchain-guides/Hyperledger-Besu/_category_.json diff --git a/docs/blockchain-guides/5_Hyperledger-Fabric/1_hyperledger-fabric-the-basics.md b/content/docs/blockchain-guides/Hyperledger-Fabric/1_hyperledger-fabric-the-basics.md similarity index 98% rename from docs/blockchain-guides/5_Hyperledger-Fabric/1_hyperledger-fabric-the-basics.md rename to content/docs/blockchain-guides/Hyperledger-Fabric/1_hyperledger-fabric-the-basics.md index 12094050..6610c886 100644 --- a/docs/blockchain-guides/5_Hyperledger-Fabric/1_hyperledger-fabric-the-basics.md +++ b/content/docs/blockchain-guides/Hyperledger-Fabric/1_hyperledger-fabric-the-basics.md @@ -1,3 +1,7 @@ +--- +title: "Hyperledger Fabric The Basics" +--- + # The basics Hyperledger Fabric is an open source enterprise-grade permissioned distributed ledger technology (DLT) platform, designed for use in enterprise contexts, that delivers some key differentiating capabilities over other popular distributed ledger or blockchain platforms. diff --git a/docs/blockchain-guides/5_Hyperledger-Fabric/2_hyperledger-fabric-network-settings.md b/content/docs/blockchain-guides/Hyperledger-Fabric/2_hyperledger-fabric-network-settings.md similarity index 99% rename from docs/blockchain-guides/5_Hyperledger-Fabric/2_hyperledger-fabric-network-settings.md rename to content/docs/blockchain-guides/Hyperledger-Fabric/2_hyperledger-fabric-network-settings.md index 58fb8a1f..c4b135eb 100644 --- a/docs/blockchain-guides/5_Hyperledger-Fabric/2_hyperledger-fabric-network-settings.md +++ b/content/docs/blockchain-guides/Hyperledger-Fabric/2_hyperledger-fabric-network-settings.md @@ -1,3 +1,7 @@ +--- +title: "Hyperledger Fabric Network Settings" +--- + # Network settings Depending on your requirements, you can configure some advanced settings for your Hyperledger Fabric network's default-channel. We provide default settings, but you can change these according to your own preferences. diff --git a/docs/blockchain-guides/5_Hyperledger-Fabric/3_hyperledger-fabric-node-types.md b/content/docs/blockchain-guides/Hyperledger-Fabric/3_hyperledger-fabric-node-types.md similarity index 99% rename from docs/blockchain-guides/5_Hyperledger-Fabric/3_hyperledger-fabric-node-types.md rename to content/docs/blockchain-guides/Hyperledger-Fabric/3_hyperledger-fabric-node-types.md index 0861c862..a25d5349 100644 --- a/docs/blockchain-guides/5_Hyperledger-Fabric/3_hyperledger-fabric-node-types.md +++ b/content/docs/blockchain-guides/Hyperledger-Fabric/3_hyperledger-fabric-node-types.md @@ -1,3 +1,7 @@ +--- +title: "Hyperledger Fabric Node Types" +--- + # Node types Before describing the different node types, we have to talk about Certificate Authorities (CA) and identities. diff --git a/docs/blockchain-guides/5_Hyperledger-Fabric/4_hyperledger-fabric-connect-to-a-node.md b/content/docs/blockchain-guides/Hyperledger-Fabric/4_hyperledger-fabric-connect-to-a-node.md similarity index 93% rename from docs/blockchain-guides/5_Hyperledger-Fabric/4_hyperledger-fabric-connect-to-a-node.md rename to content/docs/blockchain-guides/Hyperledger-Fabric/4_hyperledger-fabric-connect-to-a-node.md index e3cfff8c..6ba9a924 100644 --- a/docs/blockchain-guides/5_Hyperledger-Fabric/4_hyperledger-fabric-connect-to-a-node.md +++ b/content/docs/blockchain-guides/Hyperledger-Fabric/4_hyperledger-fabric-connect-to-a-node.md @@ -1,3 +1,7 @@ +--- +title: "Hyperledger Fabric Connect To A Node" +--- + # Connect to a node For a software application to interact with a blockchain (e.g. by sending transactions/data to the network, or even just by reading data), it must connect to a node. This section describes how to connect to your Hyperledger Fabric peer node. @@ -40,4 +44,4 @@ In the last step, you could also use the **admin user** to connect to your node, If everything went well, your results must look like the ones in the following image. -![HLF connect to a node.png](../../../static/img/document360/Images/HLF%20connect%20to%20a%20node.png) +![HLF connect to a node.png](../../../img/document360/Images/HLF%20connect%20to%20a%20node.png) diff --git a/docs/blockchain-guides/5_Hyperledger-Fabric/5_hyperledger-fabric-network-stats.md b/content/docs/blockchain-guides/Hyperledger-Fabric/5_hyperledger-fabric-network-stats.md similarity index 96% rename from docs/blockchain-guides/5_Hyperledger-Fabric/5_hyperledger-fabric-network-stats.md rename to content/docs/blockchain-guides/Hyperledger-Fabric/5_hyperledger-fabric-network-stats.md index 5d438e17..f807d340 100644 --- a/docs/blockchain-guides/5_Hyperledger-Fabric/5_hyperledger-fabric-network-stats.md +++ b/content/docs/blockchain-guides/Hyperledger-Fabric/5_hyperledger-fabric-network-stats.md @@ -1,3 +1,7 @@ +--- +title: "Hyperledger Fabric Network Stats" +--- + # Network and node stats ## Network stats diff --git a/docs/blockchain-guides/5_Hyperledger-Fabric/6_hyperledger-fabric-integration-tools.md b/content/docs/blockchain-guides/Hyperledger-Fabric/6_hyperledger-fabric-integration-tools.md similarity index 84% rename from docs/blockchain-guides/5_Hyperledger-Fabric/6_hyperledger-fabric-integration-tools.md rename to content/docs/blockchain-guides/Hyperledger-Fabric/6_hyperledger-fabric-integration-tools.md index 003534a6..47b49254 100644 --- a/docs/blockchain-guides/5_Hyperledger-Fabric/6_hyperledger-fabric-integration-tools.md +++ b/content/docs/blockchain-guides/Hyperledger-Fabric/6_hyperledger-fabric-integration-tools.md @@ -1,3 +1,7 @@ +--- +title: "Hyperledger Fabric Integration Tools" +--- + # Smart Contract Sets You can launch a Smart Contract Set to significantly accelerate the development of your smart contracts. diff --git a/docs/blockchain-guides/5_Hyperledger-Fabric/_category_.json b/content/docs/blockchain-guides/Hyperledger-Fabric/_category_.json similarity index 100% rename from docs/blockchain-guides/5_Hyperledger-Fabric/_category_.json rename to content/docs/blockchain-guides/Hyperledger-Fabric/_category_.json diff --git a/docs/blockchain-guides/8_Optimism/1_optimism-the-basics.md b/content/docs/blockchain-guides/Optimism/1_optimism-the-basics.md similarity index 98% rename from docs/blockchain-guides/8_Optimism/1_optimism-the-basics.md rename to content/docs/blockchain-guides/Optimism/1_optimism-the-basics.md index 5c09bc9c..3d78e5e9 100644 --- a/docs/blockchain-guides/8_Optimism/1_optimism-the-basics.md +++ b/content/docs/blockchain-guides/Optimism/1_optimism-the-basics.md @@ -1,3 +1,7 @@ +--- +title: "Optimism The Basics" +--- + # The basics Optimism was launched in March 2021 by Optimism PBC, and has its own cryptocurrency since May 2022 called OP. It is a layer 2 scaling solution for Ethereum that focusses on security, scalability and ease-of-use. Optimism uses optimistic rollup technology to process transactions off-chain, which allows it to offer significantly faster transaction speeds and lower fees than Ethereum mainnet. It uses Ethereum Virtual Machine (EVM), which means that developers can deploy their existing Ethereum dapps to Optimism without any changes. In addition to scalability and compatibility, Optimism is also focused on decentralization. The Optimism network is secured by a decentralized network of validators, and it is governed by a DAO (decentralized autonomous organization). This ensures that Optimism is not controlled by any single entity. diff --git a/docs/blockchain-guides/8_Optimism/2_optimism-node-types.md b/content/docs/blockchain-guides/Optimism/2_optimism-node-types.md similarity index 87% rename from docs/blockchain-guides/8_Optimism/2_optimism-node-types.md rename to content/docs/blockchain-guides/Optimism/2_optimism-node-types.md index 7b06374c..008e6dfb 100644 --- a/docs/blockchain-guides/8_Optimism/2_optimism-node-types.md +++ b/content/docs/blockchain-guides/Optimism/2_optimism-node-types.md @@ -1,3 +1,7 @@ +--- +title: "Optimism Node Types" +--- + # Node types All nodes running in SettleMint are configured to be **archive nodes**, meaning they all include all previous states of a given blockchain since its origin. diff --git a/docs/blockchain-guides/8_Optimism/3_optimism-connect-to-a-node.md b/content/docs/blockchain-guides/Optimism/3_optimism-connect-to-a-node.md similarity index 99% rename from docs/blockchain-guides/8_Optimism/3_optimism-connect-to-a-node.md rename to content/docs/blockchain-guides/Optimism/3_optimism-connect-to-a-node.md index 5bba134c..995baa65 100644 --- a/docs/blockchain-guides/8_Optimism/3_optimism-connect-to-a-node.md +++ b/content/docs/blockchain-guides/Optimism/3_optimism-connect-to-a-node.md @@ -1,3 +1,7 @@ +--- +title: "Optimism Connect To A Node" +--- + # Connect to a node For a software application to interact with a blockchain (e.g. by sending transactions/data to the network, or even just by reading data), it must connect to a node. This section describes how to connect to your Optimism node. diff --git a/docs/blockchain-guides/8_Optimism/4_optimism-network-stats.md b/content/docs/blockchain-guides/Optimism/4_optimism-network-stats.md similarity index 95% rename from docs/blockchain-guides/8_Optimism/4_optimism-network-stats.md rename to content/docs/blockchain-guides/Optimism/4_optimism-network-stats.md index 94a7c5a0..bf0d1ea2 100644 --- a/docs/blockchain-guides/8_Optimism/4_optimism-network-stats.md +++ b/content/docs/blockchain-guides/Optimism/4_optimism-network-stats.md @@ -1,3 +1,7 @@ +--- +title: "Optimism Network Stats" +--- + # Network stats The dashboard gives you an overview of the following stats for the network: diff --git a/docs/blockchain-guides/8_Optimism/5_optimism-integration-tools.md b/content/docs/blockchain-guides/Optimism/5_optimism-integration-tools.md similarity index 86% rename from docs/blockchain-guides/8_Optimism/5_optimism-integration-tools.md rename to content/docs/blockchain-guides/Optimism/5_optimism-integration-tools.md index 003534a6..1501a724 100644 --- a/docs/blockchain-guides/8_Optimism/5_optimism-integration-tools.md +++ b/content/docs/blockchain-guides/Optimism/5_optimism-integration-tools.md @@ -1,3 +1,7 @@ +--- +title: "Optimism Integration Tools" +--- + # Smart Contract Sets You can launch a Smart Contract Set to significantly accelerate the development of your smart contracts. diff --git a/docs/blockchain-guides/8_Optimism/Template-library/1_optimism-erc-20.md b/content/docs/blockchain-guides/Optimism/Template-library/1_optimism-erc-20.md similarity index 99% rename from docs/blockchain-guides/8_Optimism/Template-library/1_optimism-erc-20.md rename to content/docs/blockchain-guides/Optimism/Template-library/1_optimism-erc-20.md index 250adb74..91771036 100644 --- a/docs/blockchain-guides/8_Optimism/Template-library/1_optimism-erc-20.md +++ b/content/docs/blockchain-guides/Optimism/Template-library/1_optimism-erc-20.md @@ -1,3 +1,7 @@ +--- +title: "Optimism Erc 20" +--- + # ERC-20 token ERC-20 tokens are blockchain-based assets, issued on all EVM compatible blockchain networks such as Optimism, that have value and can be sent and received. These tokens are fungible, meaning they can be exchanged with another token of the same type because they have identical properties and there is an equal value. For example, the ERC-20 token of Alice is exactly the same as the ERC-20 token of Bob. They can exchange their token without consequences. diff --git a/docs/blockchain-guides/8_Optimism/Template-library/2_optimism-erc-721.md b/content/docs/blockchain-guides/Optimism/Template-library/2_optimism-erc-721.md similarity index 98% rename from docs/blockchain-guides/8_Optimism/Template-library/2_optimism-erc-721.md rename to content/docs/blockchain-guides/Optimism/Template-library/2_optimism-erc-721.md index aaf77b28..370a1428 100644 --- a/docs/blockchain-guides/8_Optimism/Template-library/2_optimism-erc-721.md +++ b/content/docs/blockchain-guides/Optimism/Template-library/2_optimism-erc-721.md @@ -1,3 +1,7 @@ +--- +title: "Optimism Erc 721" +--- + # ERC-721 token ERC-721 tokens are blockchain-based assets, issued on issued on all EVM compatible blockchain networks such as Optimism, that have value and can be sent and received. Contrary to the ERC-20 tokens, these ERC-721 tokens are non- fungible, meaning that two tokens from the same smart contract are not equivalent. @@ -39,7 +43,7 @@ If you want to pixelate your images, use `yarn artengine:pixelate`, the settings Not that the generated metadata does not have a real base uri set, after we have uploaded everything to IPFS, we can set it in the `art_engine/src/config.js` file and update all the metadata using `yarn artengine:update_info`. The end result looks like this: -![thumbzup_419.png](../../../../static/img/document360/Images/thumbzup_419.png) +![thumbzup_419.png](../../../../img/document360/Images/thumbzup_419.png) ```json { @@ -79,7 +83,7 @@ In short, replace the images in the `assets/layers` folder, change the logic in The end result would look like this: -![aiko-1.png](../../../../static/img/document360/Images/aiko-1.png) +![aiko-1.png](../../../../img/document360/Images/aiko-1.png) ```json { diff --git a/docs/blockchain-guides/8_Optimism/Template-library/3_optimism-state-machine.md b/content/docs/blockchain-guides/Optimism/Template-library/3_optimism-state-machine.md similarity index 99% rename from docs/blockchain-guides/8_Optimism/Template-library/3_optimism-state-machine.md rename to content/docs/blockchain-guides/Optimism/Template-library/3_optimism-state-machine.md index a2664456..6bbc03ce 100644 --- a/docs/blockchain-guides/8_Optimism/Template-library/3_optimism-state-machine.md +++ b/content/docs/blockchain-guides/Optimism/Template-library/3_optimism-state-machine.md @@ -1,3 +1,7 @@ +--- +title: "Optimism State Machine" +--- + # State Machine This smart contract set implements a state machine. State machines are usually used to represent a system where an entity goes through several sequential states. diff --git a/docs/blockchain-guides/8_Optimism/_category_.json b/content/docs/blockchain-guides/Optimism/_category_.json similarity index 100% rename from docs/blockchain-guides/8_Optimism/_category_.json rename to content/docs/blockchain-guides/Optimism/_category_.json diff --git a/docs/blockchain-guides/10_Polygon-zkEVM/1_polygon-zkevm-the-basics.md b/content/docs/blockchain-guides/Polygon-zkEVM/1_polygon-zkevm-the-basics.md similarity index 98% rename from docs/blockchain-guides/10_Polygon-zkEVM/1_polygon-zkevm-the-basics.md rename to content/docs/blockchain-guides/Polygon-zkEVM/1_polygon-zkevm-the-basics.md index 114fa24c..f9de40d8 100644 --- a/docs/blockchain-guides/10_Polygon-zkEVM/1_polygon-zkevm-the-basics.md +++ b/content/docs/blockchain-guides/Polygon-zkEVM/1_polygon-zkevm-the-basics.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Zkevm The Basics" +--- + # The basics Polygon zkEVM, introduced by the Polygon (formerly Matic) team in March 2023, represents the latest advancement in Polygon's efforts to provide a Layer 2 scalability solution. Using cryptographic zero-knowledge proofs to offer validity and quick finality to off-chain transaction computation, also known as a ZK-Rollup. It is the first zkEVM to be fully equivalent to an EVM, meaning that all existing smart contracts, developer toolings, and wallets work seamlessly. Polygon zkEVM provides a complete EVM-like experience for developers and users alike, with significantly lower transaction costs and higher throughput than Ethereum. diff --git a/docs/blockchain-guides/10_Polygon-zkEVM/2_polygon-zkevm-node-types.md b/content/docs/blockchain-guides/Polygon-zkEVM/2_polygon-zkevm-node-types.md similarity index 85% rename from docs/blockchain-guides/10_Polygon-zkEVM/2_polygon-zkevm-node-types.md rename to content/docs/blockchain-guides/Polygon-zkEVM/2_polygon-zkevm-node-types.md index f18ed0ee..53bccb37 100644 --- a/docs/blockchain-guides/10_Polygon-zkEVM/2_polygon-zkevm-node-types.md +++ b/content/docs/blockchain-guides/Polygon-zkEVM/2_polygon-zkevm-node-types.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Zkevm Node Types" +--- + # Node types All nodes running in SettleMint are configured to be **archive nodes**, meaning they all include all previous states of a given blockchain since its origin. diff --git a/docs/blockchain-guides/10_Polygon-zkEVM/3_polygon-zkevm-connect-to-a-node.md b/content/docs/blockchain-guides/Polygon-zkEVM/3_polygon-zkevm-connect-to-a-node.md similarity index 98% rename from docs/blockchain-guides/10_Polygon-zkEVM/3_polygon-zkevm-connect-to-a-node.md rename to content/docs/blockchain-guides/Polygon-zkEVM/3_polygon-zkevm-connect-to-a-node.md index f862a438..ac745cce 100644 --- a/docs/blockchain-guides/10_Polygon-zkEVM/3_polygon-zkevm-connect-to-a-node.md +++ b/content/docs/blockchain-guides/Polygon-zkEVM/3_polygon-zkevm-connect-to-a-node.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Zkevm Connect To A Node" +--- + # Connect to a node For a software application to interact with a blockchain (e.g. by sending transactions/data to the network, or even just by reading data), it must connect to a node. This section describes how to connect to your Polygon zkEVM node. diff --git a/docs/blockchain-guides/10_Polygon-zkEVM/4_polygon-zkevm-network-stats.md b/content/docs/blockchain-guides/Polygon-zkEVM/4_polygon-zkevm-network-stats.md similarity index 94% rename from docs/blockchain-guides/10_Polygon-zkEVM/4_polygon-zkevm-network-stats.md rename to content/docs/blockchain-guides/Polygon-zkEVM/4_polygon-zkevm-network-stats.md index 94a7c5a0..8278477a 100644 --- a/docs/blockchain-guides/10_Polygon-zkEVM/4_polygon-zkevm-network-stats.md +++ b/content/docs/blockchain-guides/Polygon-zkEVM/4_polygon-zkevm-network-stats.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Zkevm Network Stats" +--- + # Network stats The dashboard gives you an overview of the following stats for the network: diff --git a/docs/blockchain-guides/10_Polygon-zkEVM/5_polygon-zkevm-integration-tools.md b/content/docs/blockchain-guides/Polygon-zkEVM/5_polygon-zkevm-integration-tools.md similarity index 85% rename from docs/blockchain-guides/10_Polygon-zkEVM/5_polygon-zkevm-integration-tools.md rename to content/docs/blockchain-guides/Polygon-zkEVM/5_polygon-zkevm-integration-tools.md index 003534a6..09b59164 100644 --- a/docs/blockchain-guides/10_Polygon-zkEVM/5_polygon-zkevm-integration-tools.md +++ b/content/docs/blockchain-guides/Polygon-zkEVM/5_polygon-zkevm-integration-tools.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Zkevm Integration Tools" +--- + # Smart Contract Sets You can launch a Smart Contract Set to significantly accelerate the development of your smart contracts. diff --git a/docs/blockchain-guides/10_Polygon-zkEVM/Template-library/1_polygon-zkevm-erc-20.md b/content/docs/blockchain-guides/Polygon-zkEVM/Template-library/1_polygon-zkevm-erc-20.md similarity index 99% rename from docs/blockchain-guides/10_Polygon-zkEVM/Template-library/1_polygon-zkevm-erc-20.md rename to content/docs/blockchain-guides/Polygon-zkEVM/Template-library/1_polygon-zkevm-erc-20.md index dfd7c3db..f2d10695 100644 --- a/docs/blockchain-guides/10_Polygon-zkEVM/Template-library/1_polygon-zkevm-erc-20.md +++ b/content/docs/blockchain-guides/Polygon-zkEVM/Template-library/1_polygon-zkevm-erc-20.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Zkevm Erc 20" +--- + # ERC-20 token ERC-20 tokens are blockchain-based assets, issued on all EVM compatible blockchain networks such as Polygon zkEVM, that have value and can be sent and received. These tokens are fungible, meaning they can be exchanged with another token of the same type because they have identical properties and there is an equal value. For example, the ERC-20 token of Alice is exactly the same as the ERC-20 token of Bob. They can exchange their token without consequences. diff --git a/docs/blockchain-guides/10_Polygon-zkEVM/Template-library/2_polygon-zkevm-erc-721.md b/content/docs/blockchain-guides/Polygon-zkEVM/Template-library/2_polygon-zkevm-erc-721.md similarity index 98% rename from docs/blockchain-guides/10_Polygon-zkEVM/Template-library/2_polygon-zkevm-erc-721.md rename to content/docs/blockchain-guides/Polygon-zkEVM/Template-library/2_polygon-zkevm-erc-721.md index 363f7c88..b1eee79a 100644 --- a/docs/blockchain-guides/10_Polygon-zkEVM/Template-library/2_polygon-zkevm-erc-721.md +++ b/content/docs/blockchain-guides/Polygon-zkEVM/Template-library/2_polygon-zkevm-erc-721.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Zkevm Erc 721" +--- + # ERC-721 token ERC-721 tokens are blockchain-based assets, issued on issued on all EVM compatible blockchain networks such as Polygon zkEVM, that have value and can be sent and received. Contrary to the ERC-20 tokens, these ERC-721 tokens are non- fungible, meaning that two tokens from the same smart contract are not equivalent. @@ -39,7 +43,7 @@ If you want to pixelate your images, use `yarn artengine:pixelate`, the settings Not that the generated metadata does not have a real base uri set, after we have uploaded everything to IPFS, we can set it in the `art_engine/src/config.js` file and update all the metadata using `yarn artengine:update_info`. The end result looks like this: -![thumbzup_419.png](../../../../static/img/document360/Images/thumbzup_419.png) +![thumbzup_419.png](../../../../img/document360/Images/thumbzup_419.png) ```json { @@ -79,7 +83,7 @@ In short, replace the images in the `assets/layers` folder, change the logic in The end result would look like this: -![aiko-1.png](../../../../static/img/document360/Images/aiko-1.png) +![aiko-1.png](../../../../img/document360/Images/aiko-1.png) ```json { diff --git a/docs/blockchain-guides/10_Polygon-zkEVM/Template-library/3_polygon-zkevm-state-machine.md b/content/docs/blockchain-guides/Polygon-zkEVM/Template-library/3_polygon-zkevm-state-machine.md similarity index 99% rename from docs/blockchain-guides/10_Polygon-zkEVM/Template-library/3_polygon-zkevm-state-machine.md rename to content/docs/blockchain-guides/Polygon-zkEVM/Template-library/3_polygon-zkevm-state-machine.md index a2664456..bc801d6e 100644 --- a/docs/blockchain-guides/10_Polygon-zkEVM/Template-library/3_polygon-zkevm-state-machine.md +++ b/content/docs/blockchain-guides/Polygon-zkEVM/Template-library/3_polygon-zkevm-state-machine.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Zkevm State Machine" +--- + # State Machine This smart contract set implements a state machine. State machines are usually used to represent a system where an entity goes through several sequential states. diff --git a/docs/blockchain-guides/10_Polygon-zkEVM/_category_.json b/content/docs/blockchain-guides/Polygon-zkEVM/_category_.json similarity index 100% rename from docs/blockchain-guides/10_Polygon-zkEVM/_category_.json rename to content/docs/blockchain-guides/Polygon-zkEVM/_category_.json diff --git a/docs/blockchain-guides/4_Polygon/1_polygon-the-basics.md b/content/docs/blockchain-guides/Polygon/1_polygon-the-basics.md similarity index 98% rename from docs/blockchain-guides/4_Polygon/1_polygon-the-basics.md rename to content/docs/blockchain-guides/Polygon/1_polygon-the-basics.md index eba01340..8aa2925e 100644 --- a/docs/blockchain-guides/4_Polygon/1_polygon-the-basics.md +++ b/content/docs/blockchain-guides/Polygon/1_polygon-the-basics.md @@ -1,3 +1,7 @@ +--- +title: "Polygon The Basics" +--- + # The basics Polygon, previously MATIC, was launched in 2017, mainly to tackle Ethereum’s scaling problem. Polygon is a layer 2 commit chain to the Ethereum network, and acts as an add-on layer to Ethereum. It does not seek to change the original Ethereum blockchain layer, but solves pain points associated with it, like high gas fees and slow speeds, without sacrificing on security. Polygon supports all the existing Ethereum tooling, along with faster and cheaper transactions. diff --git a/docs/blockchain-guides/4_Polygon/2_polygon-node-types.md b/content/docs/blockchain-guides/Polygon/2_polygon-node-types.md similarity index 87% rename from docs/blockchain-guides/4_Polygon/2_polygon-node-types.md rename to content/docs/blockchain-guides/Polygon/2_polygon-node-types.md index 10645b01..d78b43af 100644 --- a/docs/blockchain-guides/4_Polygon/2_polygon-node-types.md +++ b/content/docs/blockchain-guides/Polygon/2_polygon-node-types.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Node Types" +--- + # Node types All nodes running in SettleMint are configured to be **archive nodes**, meaning they all include all previous states of a given blockchain since its origin. diff --git a/docs/blockchain-guides/4_Polygon/3_polygon-connect-to-a-node.md b/content/docs/blockchain-guides/Polygon/3_polygon-connect-to-a-node.md similarity index 99% rename from docs/blockchain-guides/4_Polygon/3_polygon-connect-to-a-node.md rename to content/docs/blockchain-guides/Polygon/3_polygon-connect-to-a-node.md index c0960b80..24f7c13e 100644 --- a/docs/blockchain-guides/4_Polygon/3_polygon-connect-to-a-node.md +++ b/content/docs/blockchain-guides/Polygon/3_polygon-connect-to-a-node.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Connect To A Node" +--- + # Connect to a node For a software application to interact with a blockchain (e.g. by sending transactions/data to the network, or even just by reading data), it must connect to a node. This section describes how to connect to your Polygon node. diff --git a/docs/blockchain-guides/4_Polygon/4_polygon-network-stats.md b/content/docs/blockchain-guides/Polygon/4_polygon-network-stats.md similarity index 95% rename from docs/blockchain-guides/4_Polygon/4_polygon-network-stats.md rename to content/docs/blockchain-guides/Polygon/4_polygon-network-stats.md index 94a7c5a0..40903090 100644 --- a/docs/blockchain-guides/4_Polygon/4_polygon-network-stats.md +++ b/content/docs/blockchain-guides/Polygon/4_polygon-network-stats.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Network Stats" +--- + # Network stats The dashboard gives you an overview of the following stats for the network: diff --git a/docs/blockchain-guides/4_Polygon/5_polygon-integration-tools.md b/content/docs/blockchain-guides/Polygon/5_polygon-integration-tools.md similarity index 87% rename from docs/blockchain-guides/4_Polygon/5_polygon-integration-tools.md rename to content/docs/blockchain-guides/Polygon/5_polygon-integration-tools.md index 003534a6..ed36aa56 100644 --- a/docs/blockchain-guides/4_Polygon/5_polygon-integration-tools.md +++ b/content/docs/blockchain-guides/Polygon/5_polygon-integration-tools.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Integration Tools" +--- + # Smart Contract Sets You can launch a Smart Contract Set to significantly accelerate the development of your smart contracts. diff --git a/docs/blockchain-guides/4_Polygon/Template-library/1_polygon-erc-20.md b/content/docs/blockchain-guides/Polygon/Template-library/1_polygon-erc-20.md similarity index 99% rename from docs/blockchain-guides/4_Polygon/Template-library/1_polygon-erc-20.md rename to content/docs/blockchain-guides/Polygon/Template-library/1_polygon-erc-20.md index f920d670..9055a2e2 100644 --- a/docs/blockchain-guides/4_Polygon/Template-library/1_polygon-erc-20.md +++ b/content/docs/blockchain-guides/Polygon/Template-library/1_polygon-erc-20.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Erc 20" +--- + # ERC-20 token ERC-20 tokens are blockchain-based assets, issued on all EVM compatible blockchain networks such as Polygon, that have value and can be sent and received. These tokens are fungible, meaning they can be exchanged with another token of the same type because they have identical properties and there is an equal value. For example, the ERC-20 token of Alice is exactly the same as the ERC-20 token of Bob. They can exchange their token without consequences. diff --git a/docs/blockchain-guides/4_Polygon/Template-library/2_polygon-erc-721.md b/content/docs/blockchain-guides/Polygon/Template-library/2_polygon-erc-721.md similarity index 98% rename from docs/blockchain-guides/4_Polygon/Template-library/2_polygon-erc-721.md rename to content/docs/blockchain-guides/Polygon/Template-library/2_polygon-erc-721.md index 5d148bcb..4b06706b 100644 --- a/docs/blockchain-guides/4_Polygon/Template-library/2_polygon-erc-721.md +++ b/content/docs/blockchain-guides/Polygon/Template-library/2_polygon-erc-721.md @@ -1,3 +1,7 @@ +--- +title: "Polygon Erc 721" +--- + # ERC-721 token ERC-721 tokens are blockchain-based assets, issued on issued on all EVM compatible blockchain networks such as Polygon, that have value and can be sent and received. Contrary to the ERC-20 tokens, these ERC-721 tokens are non- fungible, meaning that two tokens from the same smart contract are not equivalent. @@ -39,7 +43,7 @@ If you want to pixelate your images, use `yarn artengine:pixelate`, the settings Not that the generated metadata does not have a real base uri set, after we have uploaded everything to IPFS, we can set it in the `art_engine/src/config.js` file and update all the metadata using `yarn artengine:update_info`. The end result looks like this: -![thumbzup_419.png](../../../../static/img/document360/Images/thumbzup_419.png) +![thumbzup_419.png](../../../../img/document360/Images/thumbzup_419.png) ```json { @@ -79,7 +83,7 @@ In short, replace the images in the `assets/layers` folder, change the logic in The end result would look like this: -![aiko-1.png](../../../../static/img/document360/Images/aiko-1.png) +![aiko-1.png](../../../../img/document360/Images/aiko-1.png) ```json { diff --git a/docs/blockchain-guides/4_Polygon/Template-library/3_polygon-state-machine.md b/content/docs/blockchain-guides/Polygon/Template-library/3_polygon-state-machine.md similarity index 99% rename from docs/blockchain-guides/4_Polygon/Template-library/3_polygon-state-machine.md rename to content/docs/blockchain-guides/Polygon/Template-library/3_polygon-state-machine.md index a2664456..fafcea21 100644 --- a/docs/blockchain-guides/4_Polygon/Template-library/3_polygon-state-machine.md +++ b/content/docs/blockchain-guides/Polygon/Template-library/3_polygon-state-machine.md @@ -1,3 +1,7 @@ +--- +title: "Polygon State Machine" +--- + # State Machine This smart contract set implements a state machine. State machines are usually used to represent a system where an entity goes through several sequential states. diff --git a/docs/blockchain-guides/4_Polygon/_category_.json b/content/docs/blockchain-guides/Polygon/_category_.json similarity index 100% rename from docs/blockchain-guides/4_Polygon/_category_.json rename to content/docs/blockchain-guides/Polygon/_category_.json diff --git a/docs/blockchain-guides/12_Soneium/Template-library/1_soneium-erc-20.md b/content/docs/blockchain-guides/Soneium/Template-library/1_soneium-erc-20.md similarity index 99% rename from docs/blockchain-guides/12_Soneium/Template-library/1_soneium-erc-20.md rename to content/docs/blockchain-guides/Soneium/Template-library/1_soneium-erc-20.md index 0edcea85..6017d85c 100644 --- a/docs/blockchain-guides/12_Soneium/Template-library/1_soneium-erc-20.md +++ b/content/docs/blockchain-guides/Soneium/Template-library/1_soneium-erc-20.md @@ -1,3 +1,7 @@ +--- +title: "Soneium Erc 20" +--- + # ERC-20 token ERC-20 tokens are blockchain-based assets, issued on all EVM compatible blockchain networks such as Soneium, that have value and can be sent and received. These tokens are fungible, meaning they can be exchanged with another token of the same type because they have identical properties and there is an equal value. For example, the ERC-20 token of Alice is exactly the same as the ERC-20 token of Bob. They can exchange their token without consequences. diff --git a/docs/blockchain-guides/12_Soneium/Template-library/2_soneium-erc-721.md b/content/docs/blockchain-guides/Soneium/Template-library/2_soneium-erc-721.md similarity index 98% rename from docs/blockchain-guides/12_Soneium/Template-library/2_soneium-erc-721.md rename to content/docs/blockchain-guides/Soneium/Template-library/2_soneium-erc-721.md index b27a0f07..97efaa24 100644 --- a/docs/blockchain-guides/12_Soneium/Template-library/2_soneium-erc-721.md +++ b/content/docs/blockchain-guides/Soneium/Template-library/2_soneium-erc-721.md @@ -1,3 +1,7 @@ +--- +title: "Soneium Erc 721" +--- + # ERC-721 token ERC-721 tokens are blockchain-based assets, issued on issued on all EVM compatible blockchain networks such as Soneium, that have value and can be sent and received. Contrary to the ERC-20 tokens, these ERC-721 tokens are non- fungible, meaning that two tokens from the same smart contract are not equivalent. @@ -39,7 +43,7 @@ If you want to pixelate your images, use `yarn artengine:pixelate`, the settings Not that the generated metadata does not have a real base uri set, after we have uploaded everything to IPFS, we can set it in the `art_engine/src/config.js` file and update all the metadata using `yarn artengine:update_info`. The end result looks like this: -![thumbzup_419.png](../../../../static/img/document360/Images/thumbzup_419.png) +![thumbzup_419.png](../../../../img/document360/Images/thumbzup_419.png) ```json { @@ -79,7 +83,7 @@ In short, replace the images in the `assets/layers` folder, change the logic in The end result would look like this: -![aiko-1.png](../../../../static/img/document360/Images/aiko-1.png) +![aiko-1.png](../../../../img/document360/Images/aiko-1.png) ```json { diff --git a/docs/blockchain-guides/12_Soneium/Template-library/3_soneium-state-machine.md b/content/docs/blockchain-guides/Soneium/Template-library/3_soneium-state-machine.md similarity index 99% rename from docs/blockchain-guides/12_Soneium/Template-library/3_soneium-state-machine.md rename to content/docs/blockchain-guides/Soneium/Template-library/3_soneium-state-machine.md index a2664456..4b215275 100644 --- a/docs/blockchain-guides/12_Soneium/Template-library/3_soneium-state-machine.md +++ b/content/docs/blockchain-guides/Soneium/Template-library/3_soneium-state-machine.md @@ -1,3 +1,7 @@ +--- +title: "Soneium State Machine" +--- + # State Machine This smart contract set implements a state machine. State machines are usually used to represent a system where an entity goes through several sequential states. diff --git a/content/docs/blockchain-guides/Soneium/meta.json b/content/docs/blockchain-guides/Soneium/meta.json new file mode 100644 index 00000000..95928b42 --- /dev/null +++ b/content/docs/blockchain-guides/Soneium/meta.json @@ -0,0 +1,10 @@ +{ + "label": "Soneium", + "pages": [ + "soneium-the-basics", + "soneium-node-types", + "soneium-connect-to-a-node", + "soneium-network-stats", + "soneium-integration-tools" + ] +} diff --git a/docs/blockchain-guides/12_Soneium/3_soneium-connect-to-a-node.md b/content/docs/blockchain-guides/Soneium/soneium-connect-to-a-node.md similarity index 99% rename from docs/blockchain-guides/12_Soneium/3_soneium-connect-to-a-node.md rename to content/docs/blockchain-guides/Soneium/soneium-connect-to-a-node.md index c300df6f..66587bb0 100644 --- a/docs/blockchain-guides/12_Soneium/3_soneium-connect-to-a-node.md +++ b/content/docs/blockchain-guides/Soneium/soneium-connect-to-a-node.md @@ -1,3 +1,7 @@ +--- +title: "Soneium Connect To A Node" +--- + # Connect to a node For a software application to interact with a blockchain (e.g. by sending transactions/data to the network, or even just by reading data), it must connect to a node. This section describes how to connect to your Soneium node. diff --git a/docs/blockchain-guides/12_Soneium/5_soneium-integration-tools.md b/content/docs/blockchain-guides/Soneium/soneium-integration-tools.md similarity index 87% rename from docs/blockchain-guides/12_Soneium/5_soneium-integration-tools.md rename to content/docs/blockchain-guides/Soneium/soneium-integration-tools.md index 003534a6..2cebf7da 100644 --- a/docs/blockchain-guides/12_Soneium/5_soneium-integration-tools.md +++ b/content/docs/blockchain-guides/Soneium/soneium-integration-tools.md @@ -1,3 +1,7 @@ +--- +title: "Soneium Integration Tools" +--- + # Smart Contract Sets You can launch a Smart Contract Set to significantly accelerate the development of your smart contracts. diff --git a/docs/blockchain-guides/12_Soneium/4_soneium-network-stats.md b/content/docs/blockchain-guides/Soneium/soneium-network-stats.md similarity index 95% rename from docs/blockchain-guides/12_Soneium/4_soneium-network-stats.md rename to content/docs/blockchain-guides/Soneium/soneium-network-stats.md index 94a7c5a0..40c6e3d0 100644 --- a/docs/blockchain-guides/12_Soneium/4_soneium-network-stats.md +++ b/content/docs/blockchain-guides/Soneium/soneium-network-stats.md @@ -1,3 +1,7 @@ +--- +title: "Soneium Network Stats" +--- + # Network stats The dashboard gives you an overview of the following stats for the network: diff --git a/docs/blockchain-guides/12_Soneium/2_soneium-node-types.md b/content/docs/blockchain-guides/Soneium/soneium-node-types.md similarity index 87% rename from docs/blockchain-guides/12_Soneium/2_soneium-node-types.md rename to content/docs/blockchain-guides/Soneium/soneium-node-types.md index 84d915cd..609f2d8c 100644 --- a/docs/blockchain-guides/12_Soneium/2_soneium-node-types.md +++ b/content/docs/blockchain-guides/Soneium/soneium-node-types.md @@ -1,3 +1,7 @@ +--- +title: "Soneium Node Types" +--- + # Node types All nodes running in SettleMint are configured to be **archive nodes**, meaning they all include all previous states of a given blockchain since its origin. diff --git a/docs/blockchain-guides/12_Soneium/1-soneium-the-basics.md b/content/docs/blockchain-guides/Soneium/soneium-the-basics.md similarity index 98% rename from docs/blockchain-guides/12_Soneium/1-soneium-the-basics.md rename to content/docs/blockchain-guides/Soneium/soneium-the-basics.md index 313096d8..9d3335f5 100644 --- a/docs/blockchain-guides/12_Soneium/1-soneium-the-basics.md +++ b/content/docs/blockchain-guides/Soneium/soneium-the-basics.md @@ -1,3 +1,7 @@ +--- +title: "Soneium The Basics" +--- + # The basics Soneium is a next-generation blockchain ecosystem designed to invoke emotion and empower creativity. It was founded by Sony Group Corporation, a global technology leader, and Startale, a Web3 innovator. Soneium stands as a versatile, general-purpose blockchain ready to serve diverse needs across all verticals and support users globally. diff --git a/content/docs/blockchain-guides/meta.json b/content/docs/blockchain-guides/meta.json new file mode 100644 index 00000000..0e14fac5 --- /dev/null +++ b/content/docs/blockchain-guides/meta.json @@ -0,0 +1,18 @@ +{ + "label": "Blockchain Guides", + "pages": [ + "Ethereum", + "Hyperledger-Besu", + "Avalanche", + "Polygon", + "Hyperledger-Fabric", + "Hedera", + "Arbitrum", + "Optimism", + "Hedera", + "Polygon-zkEVM", + "Fantom", + "Soneium" + ], + "icon": "Network" +} diff --git a/docs/using-platform/6_add-a-load-balancer.md b/content/docs/building-with-SettleMint/add-a-load-balancer.mdx similarity index 53% rename from docs/using-platform/6_add-a-load-balancer.md rename to content/docs/building-with-SettleMint/add-a-load-balancer.mdx index 92a80d56..656977b2 100644 --- a/docs/using-platform/6_add-a-load-balancer.md +++ b/content/docs/building-with-SettleMint/add-a-load-balancer.mdx @@ -1,20 +1,41 @@ --- title: Add a Load Balancer -description: Guide to adding a Load Balancer to a Blockchain Network +description: Guide to adding load balancers in SettleMint --- -# Add a Load Balancer - -:::info Info +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + Load balancers are a new feature to SettleMint. We plan to add more management capabilities and interface additions. - -::: + After deploying nodes to your blockchain network, you can add a load balancer to the network. Like traditional network load balancers, these distribute traffic among your deployed nodes. -![LoadBalancer](../../static/img/using-the-platform/loadbalancer.png) +
+ ![LoadBalancer](../../img/using-the-platform/loadbalancer.png) +
+ +
+ + ### Key Features + - High availability + - Request distribution + - Health monitoring + - Failover support + + + + ### Benefits + - Improved performance + - Better reliability + - Scalable access + - Traffic management + +
## Why Use A Load Balancer @@ -26,17 +47,27 @@ The benefits of adding a load balancer to your network include: ## How to Add a Load Balancer -![Add Load Balancer](../../static/img/about-settlemint/add-load.png) - -Click on **Blockchain Node** in the left navigation. Then click the **Add Load Balancer** button. - -From here, you can choose the **Blockchain Network** and then select the **Blockchain Nodes** to include under the load balancer. - -:::warning Warning - +
+ ![Add Load Balancer](../../img/about-settlemint/add-load.png) +
+ + + ### Navigate to Nodes + Click on **Blockchain Node** in the left navigation + + ### Add Load Balancer + Click the **Add Load Balancer** button + + ### Configure Load Balancer + 1. Choose the **Blockchain Network** + 2. Select the **Blockchain Nodes** to include under the load balancer + 3. Configure any additional settings + 4. Confirm the deployment configuration + + + Adding Validator nodes to your load balancer is not advised. This could disrupt your network operations if a Validator node becomes overloaded from an increase of traffic. - -::: + Once you confirm the deployment configuration, your load balancers will appear under the list of deployed nodes. @@ -44,4 +75,4 @@ Once you confirm the deployment configuration, your load balancers will appear u You can select the load balancer to view the number of deployed nodes under it and access logs. More information including the ability to add or remove nodes are in development. -When deploying services including **The Graph Middleware** or **Blockscout Explorer**, you will now have the option to deploy to the load balancer. +When deploying services including **The Graph Middleware** or **Blockscout Explorer**, you will now have the option to deploy to the load balancer. \ No newline at end of file diff --git a/content/docs/building-with-SettleMint/add-a-network-to-an-application.mdx b/content/docs/building-with-SettleMint/add-a-network-to-an-application.mdx new file mode 100644 index 00000000..b4e143a4 --- /dev/null +++ b/content/docs/building-with-SettleMint/add-a-network-to-an-application.mdx @@ -0,0 +1,157 @@ +--- +title: Add a Network to an Application +description: Guide to adding a Blockchain Network to your application +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + + +## Prerequisites + +Before setting up a blockchain network, you need to have an application created in your workspace. Applications provide the organizational context for all your blockchain resources including networks, nodes, and development tools. + +If you haven't created an application yet, follow our [Create an Application](../building-with-settlemint/create-an-application) guide first. + +## How to Add a Blockchain Network + + + +
+ ![Add A Blockchain Network](../../img/about-settlemint/add-network.png) +
+ + + ### Navigate to Application + Navigate to the **application** where you will create the network. + + ### Add Network + Click **Add blockchain network** to open a form. + + ### Configure Network + 1. **Select the protocol** of your choice and click **Continue**. + 2. Choose a **network name** and a **node name**. + 3. Configure your deployment settings and network parameters. + 4. Click **Confirm** to add the network. + +
+ + + First ensure you're authenticated: + ```bash + settlemint login + ``` + + Create a blockchain network: + ```bash + settlemint platform create blockchain-network besu \ + --node-name + + # Get information about the command and all available options + settlemint platform create blockchain-network besu --help + ``` + + + + ```typescript + import { createSettleMintClient } from '@settlemint/sdk-js'; + + const client = createSettleMintClient({ + accessToken: 'your_access_token', + instance: 'https://console.settlemint.com' + }); + + // Create network + const createNetwork = async () => { + const result = await client.blockchainNetwork.create({ + applicationUniqueName: "your-app", + name: "my-network", + nodeName: "validator-1", + consensusAlgorithm: "BESU_QBFT", + provider: "GKE", // GKE, EKS, AKS + region: "EUROPE" + }); + console.log('Network created:', result); + }; + + // List networks + const listNetworks = async () => { + const networks = await client.blockchainNetwork.list("your-app"); + console.log('Networks:', networks); + }; + + // Get network details + const getNetwork = async () => { + const network = await client.blockchainNetwork.read("network-unique-name"); + console.log('Network details:', network); + }; + + // Delete network + const deleteNetwork = async () => { + await client.blockchainNetwork.delete("network-unique-name"); + }; + + // Restart network + const restartNetwork = async () => { + await client.blockchainNetwork.restart("network-unique-name"); + }; + ``` + + + Get your access token from the Platform UI under User Settings → API Tokens. + + +
+ +## Manage a Network + + + +
+ ![Manage Network](../../img/about-settlemint/manage-network.png) +
+ + Navigate to your network and click **Manage network** to see available actions: + - View network details and status + - Monitor network health + - Restart network operations +
+ + + ```bash + # List networks + settlemint platform list blockchain-networks --application + + # Get network details + settlemint platform read blockchain-network + + # Delete network + settlemint platform delete blockchain-network + + # Restart network + settlemint platform restart blockchain-network + ``` + + + + ```typescript + // List networks + await client.blockchainNetwork.list("your-app"); + + // Get network details + await client.blockchainNetwork.read("network-unique-name"); + + // Delete network + await client.blockchainNetwork.delete("network-unique-name"); + + // Restart network + await client.blockchainNetwork.restart("network-unique-name"); + ``` + +
+ + +All operations require appropriate permissions in your workspace. + \ No newline at end of file diff --git a/content/docs/building-with-SettleMint/add-a-node-to-a-network.mdx b/content/docs/building-with-SettleMint/add-a-node-to-a-network.mdx new file mode 100644 index 00000000..950d7368 --- /dev/null +++ b/content/docs/building-with-SettleMint/add-a-node-to-a-network.mdx @@ -0,0 +1,140 @@ +--- +title: Add a Node to a Network +description: Guide to adding blockchain nodes to your network +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + + + +Once you have deployed a permissioned network or joined a public network, you can add more nodes to it. The number of nodes needed depends on your network's protocol. + +
+ + ### Node Types + - Validator nodes + - Non-validator nodes + - Archive nodes + - Light nodes + + + + ### Key Features + - Custom configurations + - Resource management + - Performance monitoring + - Health checks + +
+ +## Add Node + + + +
+ ![Add a Node](../../img/about-settlemint/add-node.png) +
+ + + ### Navigate to Application + Go to the application containing your network + + ### Access Nodes + Click **Blockchain nodes** in the left navigation + + ### Configure Node + 1. Click **Add a blockchain node** + 2. Select the blockchain network to add this node to + 3. Choose node name and type (VALIDATOR/NON_VALIDATOR for permissioned networks) + 4. Configure deployment settings + 5. Click **Confirm** + +
+ + + First ensure you're authenticated: + ```bash + settlemint login + ``` + + Create a blockchain node: + ```bash + settlemint platform create blockchain-node besu \ + --blockchain-network \ + --node-type \ + --provider \ + --region + + # Get help + settlemint platform create blockchain-node --help + ``` + + + + ```typescript + import { createSettleMintClient } from '@settlemint/sdk-js'; + + const client = createSettleMintClient({ + accessToken: 'your_access_token', + instance: 'https://console.settlemint.com' + }); + + const createNode = async () => { + const result = await client.blockchainNode.create({ + applicationUniqueName: "your-application", + blockchainNetworkUniqueName: "your-network", + name: "my-node", + nodeType: "VALIDATOR", + provider: "provider", + region: "region" + }); + console.log('Node created:', result); + }; + ``` + + + Get your access token from the Platform UI under User Settings → API Tokens. + + +
+ +## Manage Node + + + + Navigate to your node and click **Manage node** to see available actions: + - View node details and status + - Monitor node health + - Restart node operations + + + + ```bash + # List nodes + settlemint platform list services --application + + # Restart node + settlemint platform restart blockchain-node + ``` + + + + ```typescript + // List nodes + await client.blockchainNode.list("your-application"); + + // Get node details + await client.blockchainNode.read("node-unique-name"); + + // Restart node + await client.blockchainNode.restart("node-unique-name"); + ``` + + + + +All operations require appropriate permissions in your workspace. + \ No newline at end of file diff --git a/docs/using-platform/16_application-access-tokens.md b/content/docs/building-with-SettleMint/application-access-tokens.mdx similarity index 87% rename from docs/using-platform/16_application-access-tokens.md rename to content/docs/building-with-SettleMint/application-access-tokens.mdx index 9618404b..47d27213 100644 --- a/docs/using-platform/16_application-access-tokens.md +++ b/content/docs/building-with-SettleMint/application-access-tokens.mdx @@ -1,4 +1,13 @@ -# Application Access Tokens +--- +title: Application Access Tokens +description: Guide to managing application access tokens in SettleMint +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + Application access tokens let you connect your SettleMint services with other apps securely. They represent your application, not individual users, and can be created by both admins and users. They can be used to connect to all or selected services of an application. @@ -16,11 +25,9 @@ Click on the "Add an application access token" button. This opens a form where y 3. You can also update the scopes of your application access token later. 4. Click **Confirm** to create your application access token. -:::warning Warning - + Copy and save your token securely - you won't see it again. Treat it like a password and keep it secret. - -::: + ## Update an application access token @@ -49,4 +56,4 @@ You can use these application access tokens in three ways depending on what work - As a query parameter using `https://myservice.settlemint.com/?token=TOKEN` appended to any URL. - As the last part of the URL `https://myservice.settlemint.com/TOKEN`. - For IPFS nodes build your uri so it becomes `https://myservice.settlemint.com/TOKEN/api/v0/...` - - For Avalanche and Fuji build your uri so they look like `https://myservice.settlemint.com/ext/bc/C/rpc/TOKEN` + - For Avalanche and Fuji build your uri so they look like `https://myservice.settlemint.com/ext/bc/C/rpc/TOKEN` \ No newline at end of file diff --git a/content/docs/building-with-SettleMint/audit-logs.mdx b/content/docs/building-with-SettleMint/audit-logs.mdx new file mode 100644 index 00000000..e3b4b994 --- /dev/null +++ b/content/docs/building-with-SettleMint/audit-logs.mdx @@ -0,0 +1,70 @@ +--- +title: Audit Logs +description: Guide to using audit logs in SettleMint +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + +# Audit Logs + +Audit logs provide a detailed record of activities in any application deployed on the SettleMint Blockchain Transformation Platform. These logs provide the following key benefits: + +- Compliance: Ensure adherence to regulatory requirements and industry standards. +- Accountability: Maintain a clear record of actions and changes made by users for transparency. +- Troubleshooting: Facilitate the identification and resolution of issues by tracking system activity. +- Data integrity: Provide a reliable trail of data access and modifications, protecting against data tampering + +Audit logs can be accessed from the application menu, on the left. + +![Audit Logs](../../img/using-the-platform/audit-logs.png) + +Four filters are available to find specific entries in the logs: + +- Timestamp: select a time range or a day for which you want to get the logs. +- Service: choose the service you want to analyze. +- User: select a user from your application to see their actions. +- Action: filter based on a specific action (e.g. create, delete, pause,...). + +## Access Audit Logs + + + ### Navigate to Logs + Access from application menu on the left + + ### Apply Filters + Use available filters: + - Timestamp: Select time range + - Service: Choose specific service + - User: Filter by user + - Action: Filter by action type + + ### View Details + Examine detailed log entries + + +## Log Categories + +
+ + ### System Events + - Service deployments + - Configuration changes + - Resource scaling + - System updates + + + + ### User Actions + - Resource creation + - Permission changes + - Token management + - Access attempts + +
+ + +Audit logs provide essential tracking for regulatory compliance and security monitoring. + \ No newline at end of file diff --git a/content/docs/building-with-SettleMint/connect-to-a-node.mdx b/content/docs/building-with-SettleMint/connect-to-a-node.mdx new file mode 100644 index 00000000..954daf03 --- /dev/null +++ b/content/docs/building-with-SettleMint/connect-to-a-node.mdx @@ -0,0 +1,98 @@ +--- +title: Connect to a Node +description: Guide to connecting to blockchain nodes in SettleMint +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + +For an application to interact with a blockchain (e.g. by sending transactions/data to the network, or even just by reading data), it must connect to a node. + +To connect to a node, you use an endpoint, which is a URL that enables an API to gain access to the node. You interact with the node by sending requests to, and receiving responses from it via an API. + +You can find the endpoints on the node detail page, in the Connect tab, together with node interaction tools with playgrounds for real-time tryouts (e.g. JSON-RPC, GraphQL, etc.). + + +
+ + ### Connection Methods + - JSON-RPC endpoints + - WebSocket connections + - IPC connections + - GraphQL endpoints + + + + ### Key Features + - Secure connections + - Multiple protocols + - Authentication support + - Load balanced access + +
+ +## Connection Details + + + + + ### Access Node + Navigate to your node in the application + + ### View Connection Info + Open the **Connect** tab to find: + - Endpoint URLs + - Authentication tokens + - Connection examples + + + + + ```bash + # Get node connection details + settlemint platform read node --show-connection + ``` + + + + ```typescript + const getConnectionDetails = async () => { + const node = await client.node.read("node-name"); + console.log('Connection details:', node.connection); + }; + ``` + + + +## Connection Examples + + + + ```javascript + const Web3 = require('web3'); + const web3 = new Web3('https://your-node-url/token'); + ``` + + + + ```javascript + const { ethers } = require('ethers'); + const provider = new ethers.JsonRpcProvider('https://your-node-url/token'); + ``` + + + + ```bash + curl -X POST https://your-node-url \ + -H "Content-Type: application/json" \ + -H "x-auth-token: " \ + --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' + ``` + + + + +Replace `your-node-url` and `token` with the actual values from your node's connection details. + \ No newline at end of file diff --git a/content/docs/building-with-SettleMint/create-an-application.mdx b/content/docs/building-with-SettleMint/create-an-application.mdx new file mode 100644 index 00000000..6814e752 --- /dev/null +++ b/content/docs/building-with-SettleMint/create-an-application.mdx @@ -0,0 +1,130 @@ +--- +title: Create an Application +description: Guide to creating a blockchain application on SettleMint +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + + +An application is the context in which you organize your networks, nodes, smart contract sets and any other related blockchain resource. + + +You will always need to create an application before you can deploy or join networks, and add nodes. + + +## How to create a new application + + + + ![Create an App](../../img/about-settlemint/create-app.png) + + + ### Access Application Creation + In the upper right corner of any page, click the **grid icon** + + ### Navigate & Create + - Navigate to your workspace + - Click **Create new application** + + ### Configure Application + - Choose a **name** for your application + - Click **Confirm** to create the application + + + + + First, install the [SDK CLI](https://github.com/settlemint/sdk/blob/main/sdk/cli/README.md#usage) as a global dependency. + + Then, ensure you're authenticated. For more information on authentication, see the [SDK CLI documentation](https://github.com/settlemint/sdk/blob/main/sdk/cli/README.md#login-to-the-platform). + ```bash + settlemint login + ``` + + Create an application: + ```bash + settlemint platform create application + ``` + + + + ```typescript + import { createSettleMintClient } from '@settlemint/sdk-js'; + + const client = createSettleMintClient({ + accessToken: 'your_access_token', + instance: 'https://console.settlemint.com' + }); + + // Create application + const createApp = async () => { + const result = await client.application.create({ + workspaceUniqueName: "your-workspace", + name: "myApp" + }); + console.log('Application created:', result); + }; + + // List applications + const listApps = async () => { + const apps = await client.application.list("your-workspace"); + console.log('Applications:', apps); + }; + + // Read application details + const readApp = async () => { + const app = await client.application.read("app-unique-name"); + console.log('Application details:', app); + }; + + // Delete application + const deleteApp = async () => { + await client.application.delete("application-unique-name"); + }; + ``` + + + Get your access token from the Platform UI under User Settings → API Tokens. + + + + +## Manage an application + + + + Navigate to your application and click **Manage app** to see available actions: + - View application details + - Update application name + - Delete application + + + + ```bash + # List applications + settlemint platform list applications + + # Delete application + settlemint platform delete application + ``` + + + + ```typescript + // List applications + await client.application.list("your-workspace"); + + // Read application + await client.application.read("app-unique-name"); + + // Delete application + await client.application.delete("app-unique-name"); + ``` + + + + +All operations require appropriate permissions in your workspace. + \ No newline at end of file diff --git a/docs/using-platform/14_custom-deployment.md b/content/docs/building-with-SettleMint/custom-deployment.mdx similarity index 52% rename from docs/using-platform/14_custom-deployment.md rename to content/docs/building-with-SettleMint/custom-deployment.mdx index d602a9ef..44d28341 100644 --- a/docs/using-platform/14_custom-deployment.md +++ b/content/docs/building-with-SettleMint/custom-deployment.mdx @@ -1,84 +1,80 @@ --- title: Custom Deployment description: Guide to deploying custom Docker images on SettleMint -sidebar_position: 14 --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' -# Custom Deployment A Custom Deployment allows you to deploy your own Docker images, such as frontend applications, on the SettleMint platform. This feature provides flexibility for integrating custom solutions within your blockchain-based applications. ## Create a Custom Deployment - - - -1. Prepare your container image and push it to a container registry (public or private). -2. In the SettleMint platform, navigate to the Custom Deployments section. -3. Click on the "Add Custom Deployment" button to create a new deployment. -4. Provide the necessary details: - - Container image path (e.g., registry.example.com/my-app:latest) - - Container registry credentials (if using a private registry) - - Environment variables (if required) - - Custom domain information (if applicable) -5. Configure any additional settings as needed. -6. Click on 'Confirm' and wait for the Custom Deployment to be in the Running status. [View the list of statuses](../reference/14_statuses.md). - - - - -```bash -# Create a custom deployment -settlemint platform create custom-deployment my-deployment \ - --application my-app \ - --image-repository registry.example.com \ - --image-name my-app \ - --image-tag latest \ - --port 3000 \ - --provider gcp \ - --region europe-west1 - -# With environment variables -settlemint platform create custom-deployment my-deployment \ - --application my-app \ - --image-repository registry.example.com \ - --image-name my-app \ - --image-tag latest \ - --env-vars NODE_ENV=production,DEBUG=false -``` - - - - -```typescript -import { createSettleMintClient } from '@settlemint/sdk-js'; - -const client = createSettleMintClient({ - accessToken: 'your_access_token', - instance: 'https://console.settlemint.com' -}); - -const createDeployment = async () => { - const result = await client.customDeployment.create({ - applicationId: "app-123", - name: "my-deployment", - imageRepository: "registry.example.com", - imageName: "my-app", - imageTag: "latest", - port: 3000, - provider: "gcp", - region: "europe-west1", - environmentVariables: { - NODE_ENV: "production" - } - }); -}; -``` - - + + + 1. Prepare your container image and push it to a container registry (public or private). + 2. In the SettleMint platform, navigate to the Custom Deployments section. + 3. Click on the "Add Custom Deployment" button to create a new deployment. + 4. Provide the necessary details: + - Container image path (e.g., registry.example.com/my-app:latest) + - Container registry credentials (if using a private registry) + - Environment variables (if required) + - Custom domain information (if applicable) + 5. Configure any additional settings as needed. + 6. Click on 'Confirm' and wait for the Custom Deployment to be in the Running status. [View the list of statuses](/docs/reference/statuses). + + + + ```bash + # Create a custom deployment + settlemint platform create custom-deployment my-deployment \ + --application my-app \ + --image-repository registry.example.com \ + --image-name my-app \ + --image-tag latest \ + --port 3000 \ + --provider gcp \ + --region europe-west1 + + # With environment variables + settlemint platform create custom-deployment my-deployment \ + --application my-app \ + --image-repository registry.example.com \ + --image-name my-app \ + --image-tag latest \ + --env-vars NODE_ENV=production,DEBUG=false + ``` + + + + ```typescript + import { createSettleMintClient } from '@settlemint/sdk-js'; + + const client = createSettleMintClient({ + accessToken: 'your_access_token', + instance: 'https://console.settlemint.com' + }); + + const createDeployment = async () => { + const result = await client.customDeployment.create({ + applicationId: "app-123", + name: "my-deployment", + imageRepository: "registry.example.com", + imageName: "my-app", + imageTag: "latest", + port: 3000, + provider: "gcp", + region: "europe-west1", + environmentVariables: { + NODE_ENV: "production" + } + }); + }; + ``` + ## DNS Configuration for Custom Domains @@ -127,63 +123,59 @@ Note: The configuration process is similar for both top-level domains and subdom ## Manage Custom Deployments - - - -1. Navigate to your application's **Custom Deployments** section -2. Click on a deployment to: - - View deployment status and details - - Manage environment variables - - Configure custom domains - - View logs - - Check endpoints - - - - -```bash -# List custom deployments -settlemint platform list custom-deployments --application my-app - -# Get deployment details -settlemint platform read custom-deployment my-deployment - -# Restart deployment -settlemint platform restart custom-deployment my-deployment - -# Edit deployment -settlemint platform edit custom-deployment my-deployment \ - --container-image registry.example.com/my-app:v2 -``` - - - - -```typescript -// List deployments -const listDeployments = async () => { - const deployments = await client.customDeployment.list("my-app"); -}; - -// Get deployment details -const getDeployment = async () => { - const deployment = await client.customDeployment.read("deployment-unique-name"); -}; - -// Restart deployment -const restartDeployment = async () => { - await client.customDeployment.restart("deployment-unique-name"); -}; - -// Edit deployment -const editDeployment = async () => { - await client.customDeployment.edit("deployment-unique-name", { - imageTag: "v2" - }); -}; -``` - - + + + 1. Navigate to your application's **Custom Deployments** section + 2. Click on a deployment to: + - View deployment status and details + - Manage environment variables + - Configure custom domains + - View logs + - Check endpoints + + + + ```bash + # List custom deployments + settlemint platform list custom-deployments --application my-app + + # Get deployment details + settlemint platform read custom-deployment my-deployment + + # Restart deployment + settlemint platform restart custom-deployment my-deployment + + # Edit deployment + settlemint platform edit custom-deployment my-deployment \ + --container-image registry.example.com/my-app:v2 + ``` + + + + ```typescript + // List deployments + const listDeployments = async () => { + const deployments = await client.customDeployment.list("my-app"); + }; + + // Get deployment details + const getDeployment = async () => { + const deployment = await client.customDeployment.read("deployment-unique-name"); + }; + + // Restart deployment + const restartDeployment = async () => { + await client.customDeployment.restart("deployment-unique-name"); + }; + + // Edit deployment + const editDeployment = async () => { + await client.customDeployment.edit("deployment-unique-name", { + imageTag: "v2" + }); + }; + ``` + ## Limitations and Considerations @@ -193,7 +185,7 @@ When using Custom Deployment, keep the following limitations in mind: 1. **No Root User Privileges**: Your application will run without root user privileges for security reasons. 2. **Read-Only Filesystem**: The filesystem is read-only. For data persistence, consider using: - - Hasura: A GraphQL engine that provides a scalable database solution. See [Hasura](./9_hasura-backend-as-a-service.md). + - Hasura: A GraphQL engine that provides a scalable database solution. See [Hasura](/docs/building-with-settlemint/hasura-backend-as-a-service). - Other External Services: Depending on your specific needs, you may use other cloud-based storage or database services 3. **Stateless Applications**: Your applications should be designed to be stateless. This ensures better scalability and reliability in a cloud environment. @@ -209,6 +201,6 @@ When using Custom Deployment, keep the following limitations in mind: Custom Deployment offers a powerful way to extend the capabilities of your blockchain solutions on the SettleMint platform. By following these guidelines and best practices, you can seamlessly integrate your custom applications into your blockchain ecosystem. -:::info Note + Custom Deployments support automatic SSL/TLS certificate management for custom domains. -::: + \ No newline at end of file diff --git a/content/docs/building-with-SettleMint/deployment-plans.mdx b/content/docs/building-with-SettleMint/deployment-plans.mdx new file mode 100644 index 00000000..a47d0cb5 --- /dev/null +++ b/content/docs/building-with-SettleMint/deployment-plans.mdx @@ -0,0 +1,116 @@ +--- +title: Deployment Plans +description: Guide to deployment plans and resource allocation in SettleMint +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + + + +
+ + ### Infrastructure Types + - **Shared** - Cost-effective, shared resources + - **Dedicated** - Exclusive infrastructure + - **On-premise** - Custom deployment + - **BYOC** - Bring Your Own Cloud + + + + ### Resource Packs + - **Small** - Basic resources + - **Medium** - Standard resources + - **Large** - Enhanced resources + +
+ +## Infrastructure Types + +
+ + ### Shared Infrastructure + - Most cost-effective + - Shared cluster resources + - Variable performance + - Suitable for testing + + + + ### Dedicated Infrastructure + - Exclusive resources + - Highest specifications + - Predictable performance + - Production ready + +
+ + +For On-premise and BYOC options, please [contact us](mailto:support@settlemint.com). + + +## Cloud Providers & Regions + + + ### Choose Provider + Select from supported cloud providers: + - Google Cloud Platform + - Amazon Web Services + - Microsoft Azure + + ### Select Region + Pick available regions based on: + - Geographic location + - Compliance requirements + - Performance needs + + +## Resource Packs + +
+ + ### Small + - Basic memory allocation + - Standard vCPU + - Minimal storage + - Development use + + + + ### Medium + - Enhanced memory + - Multiple vCPUs + - Extended storage + - Production ready + + + + ### Large + - Maximum memory + - Dedicated vCPUs + - Extensive storage + - High performance + +
+ +## Recommended Setups + +
+ + ### Development/PoC + - Shared infrastructure + - Small resource pack + - Basic monitoring + - Cost optimized + + + + ### Production + - Dedicated infrastructure + - Medium/Large resource pack + - Full monitoring + - High availability + +
\ No newline at end of file diff --git a/docs/using-platform/15_dev-tools/1_SDK.md b/content/docs/building-with-SettleMint/dev-tools/SDK.md similarity index 79% rename from docs/using-platform/15_dev-tools/1_SDK.md rename to content/docs/building-with-SettleMint/dev-tools/SDK.md index 97100693..477c1473 100644 --- a/docs/using-platform/15_dev-tools/1_SDK.md +++ b/content/docs/building-with-SettleMint/dev-tools/SDK.md @@ -4,12 +4,10 @@ description: SDK introduction sidebar_position: 1 --- -# SDK - The SettleMint SDK is a powerful toolkit designed to streamline blockchain integration into modern applications. It offers: - **Comprehensive Integration**: A complete suite of tools for interacting with SettleMint's blockchain platform services -- **Modular Architecture**: Specialized packages for different functionalities including interacting with platform services (Smart Contracts, [Smart Contract Portal Middleware](../7_middleware.md), [The Graph Middleware](../7_middleware.md), [IPFS](../11_storage.md), [MinIO](../11_storage.md), [Blockchain Explorer](../10_insights.md), etc.) +- **Modular Architecture**: Specialized packages for different functionalities including interacting with platform services (Smart Contracts, [Smart Contract Portal Middleware](/building-with-settlemint/middleware), [The Graph Middleware](/building-with-settlemint/middleware), [IPFS](/building-with-settlemint/storage), [MinIO](/building-with-settlemint/storage), [Blockchain Explorer](/building-with-settlemint/insights), etc.) - **Developer Experience**: Rich development tools, CLI capabilities, and extensive documentation - **Enterprise Ready**: Production-grade components with support for Next.js, GraphQL, and other enterprise technologies - **Type Safety**: Full TypeScript support across all packages with strong typing and modern development patterns diff --git a/docs/using-platform/15_dev-tools/0_code-studio/0_code-studio.md b/content/docs/building-with-SettleMint/dev-tools/code-studio/code-studio.md similarity index 98% rename from docs/using-platform/15_dev-tools/0_code-studio/0_code-studio.md rename to content/docs/building-with-SettleMint/dev-tools/code-studio/code-studio.md index 6d6c4136..8b08c678 100644 --- a/docs/using-platform/15_dev-tools/0_code-studio/0_code-studio.md +++ b/content/docs/building-with-SettleMint/dev-tools/code-studio/code-studio.md @@ -4,7 +4,7 @@ description: Code Studio introduction sidebar_position: 0 --- -# Code Studio + ## Introduction diff --git a/docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/5_AI_plugin.md b/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/AI_plugin.mdx similarity index 99% rename from docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/5_AI_plugin.md rename to content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/AI_plugin.mdx index 4df9aeb5..473a3d14 100644 --- a/docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/5_AI_plugin.md +++ b/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/AI_plugin.mdx @@ -3,7 +3,6 @@ title: Generative AI plugin description: Generative AI plugin --- -# Generative AI plugin The integration of an OpenAI GPT plugin into the Smart Contract Set of the SettleMint platform brings forth significant advantages for the fast development of new smart contracts. Generative AI technology empowers developers by providing them with automated code suggestions, smart contract templates, and code completion capabilities. This accelerates the development process by reducing manual effort and improving code efficiency. diff --git a/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/add-smart-contract-set.mdx b/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/add-smart-contract-set.mdx new file mode 100644 index 00000000..f5fb5dc2 --- /dev/null +++ b/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/add-smart-contract-set.mdx @@ -0,0 +1,200 @@ +--- +title: Add a Smart Contract Set +description: Add a Smart Contract Set using Platform UI, SDK CLI, or SDK JS +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + + +Smart contract sets allow you to incorporate **business logic** into your application by deploying smart contracts that run on the blockchain. You can add a smart contract set via different methods as part of your development workflow. + + +You must have an existing application before you add a smart contract set. + + + + + + ### Navigate to Application + Navigate to the **application** where you want to add the smart contract set. + + ### Open Dev Tools + Open **Dev tools** and click on **Add a Dev tool**. + + ![Dev tools](../../../../../img/smart-contract-sets/empty-dev-tools.png) + + ### Select Code Studio + Select **Code Studio** as the Dev tool type. + + ![Select Code Studio](../../../../../img/smart-contract-sets/select-code-studio.png) + + ### Choose Smart Contract Set + Then choose **Smart Contract Set**. + + ![Select Smart Contract Set](../../../../../img/smart-contract-sets/select-smart-contract-set.png) + + ### Pick a Template + Pick a **template**; the Code Studio will load with your chosen smart contract template. + + ![Select Template](../../../../../img/smart-contract-sets/select-template.png) + + ### Enter Details + Click **Continue** to enter details such as the Dev tool name, user, and deployment plan. + + ![Click Continue](../../../../../img/smart-contract-sets/click-continue.png) + + ### Confirm + Confirm the resource cost and click **Confirm** to add the smart contract set. + + + You can now further configure and eventually deploy your smart contracts. + + + + First, ensure you are authenticated: + + ```bash + settlemint login + ``` + + You can create a smart contract set either on the platform or locally: + + ### Create on Platform + + Then create a smart contract set with the following command (refer to the + [CLI docs](/docs/using-platform/15_dev-tools/1_SDK.md) for more details): + + ```bash + settlemint platform create smart-contract-set \ + --application \ + --template \ + --deployment-plan + ``` + + For example: + + ```bash + settlemint platform create smart-contract-set my-scset \ + --application my-app \ + --template default \ + --deployment-plan starter + ``` + + ### Working with Smart Contract Sets Locally + + You can also work with smart contract sets in your local development environment. This is useful for development and testing before deploying to the platform. + + To create a smart contract set locally: + + ```bash + # Create a new smart contract set + settlemint scs create + + # You'll see the SettleMint ASCII art and then be prompted: + ✔ What is the name of your new SettleMint project? my awesome project + + # Choose from available templates: + ❯ ERC20 token + Empty typescript + Empty typescript with PDC + ERC1155 token + ERC20 token with crowdsale mechanism + ERC20 token with MetaTx + ERC721 + # ... and more + ``` + + Once created, you can use these commands to work with your local smart contract set: + + ```bash + settlemint scs -h # Show all available commands + + # Main commands: + settlemint scs create # Create a new smart contract set + settlemint scs foundry # Foundry commands for building and testing + settlemint scs hardhat # Hardhat commands for building, testing and deploying + settlemint scs subgraph # Commands for managing TheGraph subgraphs + ``` + + The scaffolded project includes everything you need to start developing smart contracts: + - Contract templates + - Testing framework + - Deployment scripts + - Development tools configuration + + ### Managing Platform Smart Contract Sets + + Manage your platform smart contract sets with: + + ```bash + # List smart contract sets + settlemint platform list smart-contract-sets --application + + # Read smart contract set details + settlemint platform read smart-contract-set + + # Delete a smart contract set + settlemint platform delete smart-contract-set + ``` + + + + You can also add a smart contract set programmatically using the JS SDK. The API follows the same pattern as for applications and blockchain networks: + + ```typescript + import { createSettleMintClient } from '@settlemint/sdk-js'; + + const client = createSettleMintClient({ + accessToken: process.env.SETTLEMENT_ACCESS_TOKEN!, + instance: 'https://console.settlemint.com' + }); + + // Create a Smart Contract Set + const createSmartContractSet = async () => { + const result = await client.smartContractSet.create({ + applicationUniqueName: "your-app", // Your application unique name + name: "my-smart-contract-set", // The smart contract set name + template: "default" // Template to use (choose from available templates) + }); + console.log('Smart Contract Set created:', result); + }; + + // List Smart Contract Sets + const listSmartContractSets = async () => { + const sets = await client.smartContractSet.list("your-app"); + console.log('Smart Contract Sets:', sets); + }; + + // Read Smart Contract Set details + const readSmartContractSet = async () => { + const details = await client.smartContractSet.read("smart-contract-set-unique-name"); + console.log('Smart Contract Set details:', details); + }; + + // Delete a Smart Contract Set + const deleteSmartContractSet = async () => { + await client.smartContractSet.delete("smart-contract-set-unique-name"); + console.log('Smart Contract Set deleted'); + }; + ``` + + + Get your access token from the Platform UI under **User Settings → API Tokens**. + + + + + +All operations require that you have the necessary permissions in your workspace. + + +For protocol-specific information, please refer to the relevant section in our blockchain guides: + + - [Hyperledger Besu Smart Contracts IDE](/blockchain-guides/Hyperledger-Besu/6_enterprise-ethereum-integration-tools) + - [Ethereum Smart Contracts IDE](/blockchain-guides/0_Ethereum/5_ethereum-integration-tools) + - [Avalanche Smart Contracts IDE](/blockchain-guides/Avalanche/5_avalanche-integration-tools) + - [Polygon Smart Contracts IDE](/blockchain-guides/Polygon/5_polygon-integration-tools) + - [Hyperledger Fabric Smart Contracts IDE](/blockchain-guides/Hyperledger-Fabric/6_hyperledger-fabric-integration-tools) \ No newline at end of file diff --git a/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/deploying-a-contract.mdx b/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/deploying-a-contract.mdx new file mode 100644 index 00000000..9c891202 --- /dev/null +++ b/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/deploying-a-contract.mdx @@ -0,0 +1,151 @@ +--- +title: Deploying a smart contract +description: Deploying a smart contract using Platform UI or SDK CLI +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + + + +You can deploy your contracts to a network in the platform or a local development network. This guide covers both Platform UI and SDK CLI approaches. + + + + Follow these steps to deploy your smart contract through the Platform UI: + + 1. Open the IDE by clicking on your smart contract set. + + ![Open IDE](../../../../../img/deploy-scs/open-ide.png) + + 2. Click on the **Task Manager** button. + + ![Task Manager](../../../../../img/deploy-scs/task-manager.png) + + 3. First compile your contract by running either: + - **Hardhat - Build** task + ![Hardhat compile task manager](../../../../../img/deploy-scs/hardhat-build.png) + - **Foundry - Build** task + ![Foundry compile task manager](../../../../../img/deploy-scs/foundry-build.png) + + 4. To deploy to a platform network: + - Run the **SettleMint - Login** task + ![SettleMint login](../../../../../img/deploy-scs/settlemint-login.png) + - Run the **Hardhat - Deploy to platform network** task + ![Hardhat deploy remote task manager](../../../../../img/deploy-scs/hardhat-deploy-remote.png) + - Select your node and private key when prompted + ![Hardhat deploy remote select node](../../../../../img/deploy-scs/hardhat-deploy-remote-select-node.png) + + 5. To deploy locally: + - Run the **Hardhat - Start local network** task + ![Hardhat start local network](../../../../../img/deploy-scs/hardhat-start-local-network.png) + - Run the **Hardhat - Deploy to local network** task + ![Hardhat deploy local network](../../../../../img/deploy-scs/hardhat-deploy-local-network.png) + + + + ## Prerequisites + + First, authenticate yourself and connect to your application: + + ```bash + # Login to the platform + settlemint login + + # Connect to your application + settlemint connect + ``` + + ## Using Hardhat + + Hardhat provides a complete development environment. Here's how to use it: + + ```bash + # Step 1: Build your smart contracts + settlemint scs hardhat build + + # Step 2: Choose your deployment target + # For local development: + settlemint scs hardhat network # Start a local network + settlemint scs hardhat deploy local # Deploy to local network + + # For production: + settlemint scs hardhat deploy remote # Deploy to platform network + + # Development tools: + settlemint scs hardhat test # Run your test suite + settlemint scs hardhat script # Execute deployment scripts + ``` + + ## Using Foundry + + Foundry offers fast compilation and testing. Here's how to use it: + + ```bash + # Step 1: Build your smart contracts + settlemint scs foundry build + + # Step 2: Test and format + settlemint scs foundry test # Run your test suite + settlemint scs foundry format # Format your contract code + + # Step 3: Local development + settlemint scs foundry network # Start a local network for testing + ``` + + ## Working with Subgraphs + + If you need to index your smart contract data: + + ```bash + # Step 1: Generate TypeScript types from your schema + settlemint scs subgraph codegen + + # Step 2: Build the subgraph + settlemint scs subgraph build + + # Step 3: Deploy to the Graph node + settlemint scs subgraph deploy [subgraph-name] + ``` + + + Before deployment, ensure: + - You're authenticated (`settlemint login`) + - You're connected to your application (`settlemint connect`) + - Your smart contracts are compiled + - For remote deployment: you have a running node and sufficient funds + + + ### Environment Configuration + + When using `settlemint connect`, you'll be prompted to configure: + - Workspace selection + - Application selection + - Blockchain node selection + - The Graph instance selection + - HD Private Key selection + - Application access token creation + + This configuration is stored locally and used for subsequent commands. + + + +## Project Structure + +The typical folder structure of a SettleMint smart contract set includes: + +- **`contracts/`**: Contains the Solidity smart contracts +- **`test/`**: Contains both Hardhat (TypeScript) and Foundry (Solidity) tests +- **`script/`**: Deployment and interaction scripts +- **`lib/`**: Optional Solidity libraries +- **`ignitions/`**: Hardhat deployment configurations +- **`out/`**: Compilation artifacts +- **`foundry.toml`**: Foundry configuration +- **`hardhat.config`**: Hardhat configuration +- **`subgraphs/`**: The Graph indexing configurations + +## Customize smart contracts + +You can customize your smart contracts using the built-in IDE. The smart contract sets include a Generative AI plugin to assist with development. [Learn more about the AI plugin here.](./AI_plugin.md) \ No newline at end of file diff --git a/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/meta.json b/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/meta.json new file mode 100644 index 00000000..b2ae153c --- /dev/null +++ b/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/meta.json @@ -0,0 +1,10 @@ +{ + "label": "Smart Contract Sets", + "pages": [ + "smart-contract-sets", + "smart-contract-templates", + "add-smart-contract-set", + "deploying-a-contract", + "AI_plugin" + ] +} diff --git a/docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/1_smart-contract-sets.md b/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/smart-contract-sets.md similarity index 97% rename from docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/1_smart-contract-sets.md rename to content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/smart-contract-sets.md index 2dde9890..b4c4d343 100644 --- a/docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/1_smart-contract-sets.md +++ b/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/smart-contract-sets.md @@ -1,12 +1,7 @@ --- -title: Smart Contract Sets -description: Smart Contract Sets +title: Introduction to Smart Contract Sets --- -# Smart Contract Sets - -## Introduction - A Smart Contract Set is a [code studio](../../0_code-studio/0_code-studio.md) that comes with a [smart contract set template](2_smart-contract-templates.md) for your chosen use case. It is a powerful tool that accelerates the development of your smart contracts. You can choose from a wide variety of templates in our open-source [template library](2_smart-contract-templates.md#template-library). Each template includes pre-built smart contracts which you can then customize to meet your specific needs. diff --git a/docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/2_smart-contract-templates.md b/content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/smart-contract-templates.md similarity index 100% rename from docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/2_smart-contract-templates.md rename to content/docs/building-with-SettleMint/dev-tools/code-studio/smart-contract-sets/smart-contract-templates.md diff --git a/content/docs/building-with-SettleMint/dev-tools/dev-tools.md b/content/docs/building-with-SettleMint/dev-tools/dev-tools.md new file mode 100644 index 00000000..2dfac6a6 --- /dev/null +++ b/content/docs/building-with-SettleMint/dev-tools/dev-tools.md @@ -0,0 +1,21 @@ +--- +title: Dev Tools +description: Dev tools introduction +--- + + +## Introduction + +To make development easier, we offer Development tools. These tools are designed to help you build your decentralized application (dApp) faster, whether it is smart contract, frontend or backend development. + +We offer the following tools: + +## Code studio + +The Code studio is an Integrated Development Environment (IDE). Currently, we offer the following types of Code studio: + +- [Smart contract sets](/building-with-settlemint/dev-tools/code-studio/smart-contract-sets/add-smart-contract-set) - This is an IDE you can launch with a pre-built smart contract template. You can choose a template from our open-source [template library](/building-with-settlemint/dev-tools/code-studio/smart-contract-sets/smart-contract-templates). + +## SDK + +The [SDK](../dev-tools/SDK) is a powerful toolkit designed to streamline blockchain integration into modern applications. diff --git a/docs/using-platform/15_dev-tools/_category_.json b/content/docs/building-with-SettleMint/dev-tools/meta.json similarity index 100% rename from docs/using-platform/15_dev-tools/_category_.json rename to content/docs/building-with-SettleMint/dev-tools/meta.json diff --git a/content/docs/building-with-SettleMint/hasura-backend-as-a-service.mdx b/content/docs/building-with-SettleMint/hasura-backend-as-a-service.mdx new file mode 100644 index 00000000..ea9de0e8 --- /dev/null +++ b/content/docs/building-with-SettleMint/hasura-backend-as-a-service.mdx @@ -0,0 +1,359 @@ +--- +title: Hasura Backend-as-a-Service +description: Guide to using Hasura in SettleMint +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + +# Hasura - Backend-as-a-service + +Many dApps need more than just decentralized tools to build an end-to-end solution. The SettleMint Hasura SDK provides a seamless way to interact with Hasura GraphQL APIs for managing application data. + +## Add Hasura + + + + + ### Navigate to Application + Navigate to the **application** where you want to add Hasura. + + ### Access Integration Tools + Click **Integration tools** in the left navigation, and then click **Add an integration tool**. This opens a form. + + ### Configure Hasura + 1. Select **Hasura**, and click **Continue** + 2. Choose a **name** for your backend-as-a-service + 3. Choose a deployment plan (provider, region, resource pack) + 4. Click **Confirm** to add it + + + + + First ensure you're authenticated: + ```bash + settlemint login + ``` + + Create Hasura instance: + ```bash + settlemint platform create integration-tool hasura + + # Get information about the command and all available options + settlemint platform create integration-tool hasura --help + ``` + + + + For a full example of how to create a blockchain explorer using the SDK, see the [Hasura SDK API Reference](https://www.npmjs.com/package/@settlemint/sdk-hasura#api-reference). + + + The SDK enables you to easily query and mutate data stored in your SettleMint-powered PostgreSQL databases through a type-safe GraphQL interface. For detailed API reference, check out the [Hasura SDK documentation](https://github.com/settlemint/sdk/tree/main/sdk/hasura). + + + + +## Some Basic Features + +- Under the data subtab you can create an arbitrary number of **schema's**. A schema is a collection of tables. +- In a schema you can create **tables**, choose which columns you want and define relations and indexes. +- You can add, edit and delete **data** in these columns as well. + [Learn more here](https://hasura.io/docs/latest/graphql/core/databases/postgres/schema/tables.html) + +Any table you make is instantly visible in the **API subtab**. Note that by using the **REST and Derive Action buttons** you can convert queries into REST endpoints if that fits your application better. Using the **Code Exporter button** you can get the actual code snippets you can use in your application or the integration studio. + +A bit more advanced are **actions**. Actions are custom queries or mutations that are resolved via HTTP handlers. Actions can be used to carry out complex data validations, data enrichment from external sources or execute just about any custom business logic. Actions can be kickstarted by using the **Derive Action button** in the **API subtab**. +[Learn more here.](https://hasura.io/docs/latest/graphql/core/actions/index.html) + +If you need to execute tasks based on changes to your database you can leverage **Events**. An **Event Trigger** atomically captures events (insert, update, delete) on a specified table and then reliably calls a HTTP webhook to run some custom business logic. +[Learn more here.](https://hasura.io/docs/latest/graphql/core/event-triggers/index.html) + +**Cron Triggers** can be used to reliably trigger HTTP endpoints to run some custom business logic periodically based on a cron schedule. + +**One-off Scheduled Events** are individual events that can be scheduled to reliably trigger a HTTP webhook to run some custom business logic at a particular timestamp. + +**Access to your database** can be handled all the way to the row level by using the authentication and authorisation options available in Hasura. +[Learn more here.](https://hasura.io/docs/latest/graphql/core/auth/index.html) + +This is of course on top of the [application access tokens](/docs/building-with-settlemint/application-access-tokens) and [personal access tokens](/docs/building-with-settlemint/personal-access-tokens) in the platform you can use to close off access to the entire API. + +## Backups + +You should take a backup of the following components: + +1. Hasura Database +2. Hasura Metadata + +### Steps for taking a backup of Hasura Database + +1. Install Hasura CLI (https://hasura.io/docs/latest/hasura-cli/install-hasura-cli/) +2. Run hasura init command to initiate a new Hasura project in the working directory. +3. Edit config.yaml file to configure remote Hasura instance. We need to generate an API Key in BPaaS and pass it with the endpoint. + +config.yaml example: + +``` +version: 3 + +endpoint: +admin_secret: + +metadata_directory: metadata +actions: + kind: synchronous + handler_webhook_baseurl: http://localhost:3000 +``` + +4. Run hasura console command. (this command will sync everything to your local hasura instance.) +5. Run this curl command to generate DB export: + +Curl Format + +``` +curl -d '{"opts": [ "-O", "-x", "--schema=public", "--inserts"], "clean_output": true, "source": "default"}' -H "x-hasura-admin-secret: " /v1alpha1/pg_dump > db.sql +``` + +Example Curl + +``` +curl -d '{"opts": [ "-O", "-x", "--schema=public", "--inserts"], "clean_output": true, "source": "default"}' -H "x-hasura-admin-secret:78b0e4618125322de0eb" https://fuchsiacapybara-7f70.gke-europe.settlemint.com/bpaas-1d79Acd6A2f112EA450F1C07a372a7D582E6121F/v1alpha1/pg_dump > db.sql +``` + +### Importing data into a new instance + +Please copy the content of the exported db.sql file, paste it and execute as a SQL statement. + +![Import](../../img/blockchain-guide/Hasura_Import.png) + +> More info on this and other commands can be found in the [Hasura docs](https://hasura.io/docs/latest/api-reference/pgdump/), please note to always add the x-auth-token header with an api key for your Hasura instance. + +### Steps for taking a backup of Hasura Metadata + +Hasura Metadata Export is a collection of yaml files which captures all the Metadata required by the GraphQL Engine. This includes info about tables that are tracked, permission rules, relationships, and event triggers that are defined on those tables. + +If you have already initialized your project via the Hasura CLI you should see the Metadata directory structure in your project directory. + +To export your entire Metadata using the Hasura CLI execute the following command in your terminal: + +``` +#in hasura CLI +hasura metadata export +``` + +This will export the Metadata as YAML files in the /metadata directory + +### Steps for importing or applying Hasura Metadata + +You can apply Metadata from one Hasura Server instance to another. You can also apply an older or modified version of an instance's Metadata onto itself to replace the existing Metadata. Applying or importing completely replaces the Metadata on that instance, i.e. you lose any Metadata that existed before applying. + +``` +#in hasura CLI +hasura metadata apply +``` + +### Reload Hasura Metadata + +In some cases, the Metadata can be out of sync with the database schema. For example, when a new column has been added to a table via an external tool. + +``` +#in hasura CLI +hasura metadata reload +``` + +For more on Hasura Metadata, refer: https://hasura.io/docs/latest/migrations-metadata-seeds/manage-metadata/ +For more on Hasura Migrations, refer: https://hasura.io/docs/latest/migrations-metadata-seeds/manage-migrations/ + +## Usage Examples + +You can interact with your Hasura database in two ways: through the GraphQL API (recommended) or directly via PostgreSQL connection. + + + + ```javascript + import fetch from 'node-fetch'; + + // Configure your authentication details + const HASURA_ENDPOINT = "YOUR_HASURA_ENDPOINT"; + const HASURA_ADMIN_SECRET = "YOUR_HASURA_ADMIN_SECRET"; // Found in the "Connect" tab of Hasura console + const APP_ACCESS_TOKEN = "YOUR_APP_ACCESS_TOKEN"; // Generated following the Application Access Tokens guide + + // Reusable function to make GraphQL requests + async function fetchGraphQL(operationsDoc, operationName, variables) { + try { + const result = await fetch( + HASURA_ENDPOINT, + { + method: "POST", + headers: { + 'Content-Type': 'application/json', + 'x-hasura-admin-secret': HASURA_ADMIN_SECRET, + 'x-auth-token': APP_ACCESS_TOKEN + }, + body: JSON.stringify({ + query: operationsDoc, + variables: variables, + operationName: operationName + }) + } + ); + + if (!result.ok) { + const text = await result.text(); + throw new Error(`HTTP error! status: ${result.status}, body: ${text}`); + } + + return await result.json(); + } catch (error) { + console.error('Request failed:', error); + throw error; + } + } + + // Query to fetch verification records + const operationsDoc = ` + query MyQuery { + verification { + id + } + } + `; + + // Mutation to insert a new verification record + const insertOperationDoc = ` + mutation InsertVerification($name: String!, $status: String!) { + insert_verification_one(object: {name: $name, status: $status}) { + id + name + status + } + } + `; + + // Function to fetch verification records + async function main() { + try { + const { errors, data } = await fetchGraphQL(operationsDoc, "MyQuery", {}); + + if (errors) { + console.error('GraphQL Errors:', errors); + return; + } + + console.log('Data:', data); + } catch (error) { + console.error('Failed:', error); + } + } + + // Function to insert a new verification record + async function insertWithGraphQL() { + try { + const { errors, data } = await fetchGraphQL( + insertOperationDoc, + "InsertVerification", + { + name: "Test User", + status: "pending" + } + ); + + if (errors) { + console.error('GraphQL Errors:', errors); + return; + } + + console.log('Inserted Data:', data); + } catch (error) { + console.error('Failed:', error); + } + } + + // Execute both query and mutation + main(); + insertWithGraphQL(); + ``` + + + ```javascript + import pkg from 'pg'; + const { Pool } = pkg; + + // Initialize PostgreSQL connection (get connection string from Hasura console -> "Connect" tab) + const pool = new Pool({ + connectionString: 'YOUR_POSTGRES_CONNECTION_STRING' + }); + + // Simple query to read all records from verification table + const readData = async () => { + const query = 'SELECT * FROM verification'; + const result = await pool.query(query); + console.log('Current Data:', result.rows); + }; + + // Insert a new verification record with sample data + const insertData = async () => { + const query = ` + INSERT INTO verification (id, identifier, value, created_at, expires_at) + VALUES ($1, $2, $3, $4, $5) + RETURNING *`; + + // Sample values - modify according to your needs + const values = [ + 'test-id-123', + 'test-identifier', + 'test-value', + new Date(), + new Date(Date.now() + 24 * 60 * 60 * 1000) // Sets expiry to 24h from now + ]; + + const result = await pool.query(query, values); + console.log('Inserted:', result.rows[0]); + }; + + // Update an existing record by ID + const updateData = async () => { + const query = ` + UPDATE verification + SET value = $1, updated_at = $2 + WHERE id = $3 + RETURNING *`; + + const values = ['updated-value', new Date(), 'test-id-123']; + const result = await pool.query(query, values); + console.log('Updated:', result.rows[0]); + }; + + // Execute all operations in sequence + async function main() { + try { + await readData(); + await insertData(); + await updateData(); + await readData(); + } finally { + await pool.end(); // Close database connection + } + } + + main(); + ``` + + + +### Authentication Setup + +To run these examples, you'll need the following: + +For GraphQL API: +1. **Hasura Admin Secret**: Found in the "Connect" tab of Hasura console +2. **Application Access Token**: Generate this by following our [Application Access Tokens guide](/building-with-settlemint/application-access-tokens) + +For PostgreSQL: +1. **PostgreSQL Connection String**: Found in the "Connect" tab of Hasura console under "Database URL" + + + +Always keep your credentials secure and never expose them in client-side code. Use environment variables or a secure configuration management system in production environments. + \ No newline at end of file diff --git a/docs/using-platform/20_health-monitoring-tools.md b/content/docs/building-with-SettleMint/health-monitoring-tools.mdx similarity index 93% rename from docs/using-platform/20_health-monitoring-tools.md rename to content/docs/building-with-SettleMint/health-monitoring-tools.mdx index 93f16e33..05144737 100644 --- a/docs/using-platform/20_health-monitoring-tools.md +++ b/content/docs/building-with-SettleMint/health-monitoring-tools.mdx @@ -1,16 +1,18 @@ -# Monitoring tools +--- +title: Monitoring tools +--- For all your running services in a blockchain application, a set of monitoring tools is available to gain insights into the health and performance of those services. ## Service statuses -The service status indicates whether your service is running well, facing issues, or needs your attention. [View the list of statuses](../reference/14_statuses.md). +The service status indicates whether your service is running well, facing issues, or needs your attention. [View the list of statuses](../reference/statuses.md). Go to the **service's overview page** or a **service detail page** to view the status of a particular service (e.g. network, node, smart contract set, etc.). ## Resource usage status & metrics -You can view the resources (memory, vCPU, and disk space) allocated to your services at any time, and follow up on the current usage. When the current resource usage is about to reach its limit, you will see a warning with the recommendation to scale your resource pack to keep the service running. [More info on resource usage](19_resource-usage.md) +You can view the resources (memory, vCPU, and disk space) allocated to your services at any time, and follow up on the current usage. When the current resource usage is about to reach its limit, you will see a warning with the recommendation to scale your resource pack to keep the service running. [More info on resource usage](resource-usage.md) Go to the **Resource tab** of a **service detail page** to view the resource usage status and metrics. diff --git a/content/docs/building-with-SettleMint/insights.mdx b/content/docs/building-with-SettleMint/insights.mdx new file mode 100644 index 00000000..e1418caa --- /dev/null +++ b/content/docs/building-with-SettleMint/insights.mdx @@ -0,0 +1,145 @@ +--- +title: Insights +description: Guide to using blockchain explorers in SettleMint +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + + +To view and inspect transactions in your blockchain application, SettleMint provides insightful dashboards via integrated blockchain explorers: +- **Blockscout** - For EVM compatible networks (Besu, Polygon Edge) +- **Hyperledger Explorer** - For Fabric networks +- **Otterscan** - Alternative EVM explorer with advanced features + +## Add Blockchain Explorer + + + + Navigate to the **application** where you want to add a blockchain explorer. Click **Insights** in the left navigation, and then click **Add Insights**. This opens a form. + + Follow these steps: + 1. Select **Blockchain Explorer** + 2. Select the target **blockchain node** and click **Continue** + 3. Enter a **name** for your explorer instance + 4. Configure deployment settings (provider, region, size) + 5. Click **Confirm** to add the explorer + + + + First ensure you're authenticated: + ```bash + settlemint login + ``` + + Create blockchain explorer: + ```bash + # Create blockchain explorer + settlemint platform create insights blockscout + + # Get information about the command and all available options + settlemint platform create insights blockscout --help + ``` + + + + For a full example of how to create a blockchain explorer using the SDK, see the [Blockscout SDK API Reference](https://www.npmjs.com/package/@settlemint/sdk-blockscout#api-reference). + + + +## Manage Explorer + + + + Navigate to your explorer and click **Manage insights** to: + - View explorer details and status + - Monitor health status + - Access the explorer interface + - Update configurations + + Current status values: + - `DEPLOYING` - Initial deployment in progress + - `COMPLETED` - Running normally + - `FAILED` - Deployment or operation failed + - `PAUSED` - Explorer is paused + - `RESTARTING` - Explorer is restarting + + Health status indicators: + - `HEALTHY` - Operating normally + - `HAS_INDEXING_BACKLOG` - Processing backlog + - `NOT_HA` - High availability issue + - `NO_PEERS` - Network connectivity issue + + + + ```bash + # List explorers + settlemint platform list services --type insights + + # Restart explorer + settlemint platform restart insights blockscout + ``` + + + + ```typescript + // List explorers + const listExplorers = async () => { + const explorers = await client.insights.list("your-app"); + console.log('Explorers:', explorers); + }; + + // Get explorer details + const getExplorer = async () => { + const explorer = await client.insights.read("explorer-unique-name"); + console.log('Explorer details:', explorer); + }; + + // Restart explorer + const restartExplorer = async () => { + await client.insights.restart("explorer-unique-name"); + }; + ``` + + + +## Using the Explorer + +When the blockchain explorer is deployed and running successfully, you can: + +1. Access the web interface through the **Interface tab** +2. View in fullscreen mode for better visibility +3. Inspect blocks, transactions, addresses and balances + +Key features: +- View latest blocks and transactions +- Search by block number, transaction hash, or address +- Inspect transaction details and status +- View account balances and token transfers +- Monitor smart contract interactions + +![Blockscout Interface](../../img/document360/Images/Blockscout%201.png) + +### Transaction Details +Click a Transaction hash to see detailed information including: +- Gas usage and fees +- Input data and events +- Status and confirmations +- Related addresses + +![Transaction View](../../img/document360/Images/Blockscout%202.png) + +### Address Details +Click an Account address to view: +- Balance and token holdings +- Transaction history +- Contract interactions +- Analytics and graphs + +![Address View](../../img/document360/Images/Blockscout%203.png) + + +All operations require appropriate permissions in your workspace. + \ No newline at end of file diff --git a/docs/using-platform/8_integration-studio.md b/content/docs/building-with-SettleMint/integration-studio.mdx similarity index 73% rename from docs/using-platform/8_integration-studio.md rename to content/docs/building-with-SettleMint/integration-studio.mdx index 16422156..5d35e74f 100644 --- a/docs/using-platform/8_integration-studio.md +++ b/content/docs/building-with-SettleMint/integration-studio.mdx @@ -1,4 +1,11 @@ -# Integration studio +--- +title: Integration Studio +description: Low-code development environment for implementing business logic +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' + The SettleMint Integration Studio is a low-code development environment which enables you to implement business logic for your application simply by dragging and dropping. @@ -8,10 +15,10 @@ Under the hood, the Integration Studio is powered by a **Node-RED** instance ded The business logic for your application can be represented as a sequence of actions. Such a sequence of actions is represented by a **flow** in the Integration Studio. To bring your application to life, you need to create flows. **Nodes** are the smallest building blocks of a flow. -**Nodes** +### Nodes The nodes are the smallest building blocks. They can have at most one input port, and multiple output ports. They are triggered by some event (eg. an http request). When triggered, they perform some user defined actions, and generate an output. This output can be passed to the input of another node, to trigger another action. -**Flows** +### Flows A flow is represented as a tab within the editor workspace and is the main way to organize nodes. You can have more than one set of connected nodes in a flow tab. The Integration Studio allows you to create flows in the fastest way possible. You can drag and drop nodes in workspace and easily connect them by clicking from the output port of one node to input port of another to create complex flows. This allows you to visualise the orchestration and interaction between your components (your nodes). Since you can clearly visualize the sequence of actions your application is going to perform, it is not only more interpretable but also much easier to debug in the future. @@ -24,46 +31,54 @@ The use cases include interacting with other web services, applications, and eve Navigate to the **application** where you want to add the integration studio. Click **Integration tools** in the left navigation, and then click **Add an integration tool**. This opens a form. -Follow these steps to add the Integration Studio: + +### Select Integration Studio +Select **Integration Studio** and click **Continue** to proceed. + +### Choose a Name +Choose a **name** for your Integration Studio. Choose one that will be easily recognizable in your dashboards (eg. Crowdsale Flow) -1. Select **Integration Studio** and click **Continue** to proceed. -2. Choose a **name** for your Integration Studio. Choose one that will be easily recognizable in your dashboards (eg. Crowdsale Flow) -3. Choose a deployment plan. Select the type, cloud provider, region and resource pack. [More about deployment plans](launch-platform/managed-cloud-deployment/3_deployment-plans.md) -4. You can see the **resource cost** for the Integration Studio displayed at the bottom of the form. Click **Confirm** to add the Integration Studio. +### Select Deployment Plan +Choose a deployment plan. Select the type, cloud provider, region and resource pack. [More about deployment plans](/launching-the-platform/managed-cloud-deployment/deployment-plans) + +### Confirm Setup +You can see the **resource cost** for the Integration Studio displayed at the bottom of the form. Click **Confirm** to add the Integration Studio. + ## Using the Integration Studio When the Integration Studio is deployed, click on it from the list, and go to the **Interface** tab to start building your flows. You can also view the interface in full screen mode. -Once the Integration Studio interface is loaded, you will see 2 flow tabs: “Flow 1” and “Example”. Head over to the **“Example” tab** to see some full blown example flows to get you started. +Once the Integration Studio interface is loaded, you will see 2 flow tabs: "Flow 1" and "Example". Head over to the **"Example" tab** to see some full blown example flows to get you started. Double-click any of the nodes to see the code they are running. This code is written in JavaScript, and it represents the actions the particular node performs. -![blockchain-integration-studio.webp](../../static/img/document360/Images/blockchain-integration-studio.webp) +![Integration Studio Interface](../../img/document360/Images/blockchain-integration-studio.webp) ### Setting up a flow Before we show you how to set up your own flow, we recommend reading this [article by Node-RED on creating your first flow](https://nodered.org/docs/tutorials/first-flow). -Now let's set up an example flow together and build an endpoint to get the latest block number of the Polygon Mumbai Testnet using the Integration Studio. If you do not have a Polygon Mumbai Node, you can easily [deploy a node](4_add-a-node-to-a-network.md) first. - -#### Step 1 +Now let's set up an example flow together and build an endpoint to get the latest block number of the Polygon Mumbai Testnet using the Integration Studio. If you do not have a Polygon Mumbai Node, you can easily [deploy a node](/building-with-settlemint/add-a-node-to-a-network) first. + +### Add HTTP Input Node Drag and drop a **Http In node** to listen for requests. If you double-click the node, you will see you have a couple parameters to set: -`METHOD` - set it to `GET`. This is HTTP Method that your node is configured to listen to. -`URL` - set it to `/getLatestBlock`. This the endpoint that your node will listen to. +- `METHOD` - set it to `GET`. This is HTTP Method that your node is configured to listen to. +- `URL` - set it to `/getLatestBlock`. This the endpoint that your node will listen to. -#### Step 2 - -Drag and drop a **function node**. This is the node that will query the blockchain for the block number. Double-click the node to configure it. You can use the snippet below to set it up. +### Add Function Node +Drag and drop a **function node**. This is the node that will query the blockchain for the block number. Double-click the node to configure it. + `rpcEndpoint` is the RPC url of your Polygon Mumbai Node. Under the **Connect tab** of your Polygon Mumbai node, you will find its RPC url. -`accessToken` - You will need an access token for your application. If you do not have one, you can easily [create an access token](16_application-access-tokens.md) first. +`accessToken` - You will need an access token for your application. If you do not have one, you can easily [create an access token](/building-with-settlemint/application-access-tokens) first. + -Enter the following snippet in the Message tab. +Enter the following snippet in the Message tab: ```javascript /////////////////////////////////////////////////////////// @@ -90,9 +105,8 @@ return msg; /////////////////////////////////////////////////////////// ``` -##### Note: - -ethers and some ipfs libraries are already available by default and can be used like this: + +**Note:** ethers and some ipfs libraries are already available by default and can be used like this: ```javascript const ethers = global.get('ethers'); @@ -110,29 +124,29 @@ const data = uint8arrays.toString( ); ``` -if the library you need isn't available by default you will need to import it in the setup tab. -example for ethers providers: -![ethers-project-import.png](../../static/img/document360/Images/ethers-project-import.png) +If the library you need isn't available by default you will need to import it in the setup tab. +Example for ethers providers: +![Ethers Project Import](../../img/document360/Images/ethers-project-import.png) + -#### Step 3 +### Add HTTP Response Node +Drag and drop a **Http Response node** to reply to the request. Double-click and configure: -Drag and drop a **Http Response node** to reply to the request. Same as above, double-click and configure. - -`Status code` - This is the HTTP status code that the node will respond with after completion of the request. We set it to 200 (`OK`) +- `Status code` - This is the HTTP status code that the node will respond with after completion of the request. We set it to 200 (`OK`) Click on the `Deploy` button in the top right corner to save and deploy your changes. -#### Step 4 - +### Test Your Endpoint Now, go back to the **Connect tab** of your Integration Studio to see your **API endpoint**, which looks something like `https://YOUR_INTEGRATION_STUDIO_API_URL.settlemint.com`. You can now send requests to `https://YOUR_INTEGRATION_STUDIO_API_URL.settlemint.com/getLatestBlock` to get the latest block number. Do not forget to create an API Key for your Integration studio and pass it as the `x-auth-token` authorization header with your request. -example terminal command: +Example terminal command: ```bash curl -H "x-auth-token: bpaas-YOUR_INTEGRATION_KEY_HERE" https://YOUR_INTEGRATION_STUDIO_API_URL.settlemint.com/getLatestBlock ``` + The API is live and protected by the authorization header, and you can seamlessly integrate with your application. diff --git a/content/docs/building-with-SettleMint/invite-network-participants.mdx b/content/docs/building-with-SettleMint/invite-network-participants.mdx new file mode 100644 index 00000000..e2df9e9e --- /dev/null +++ b/content/docs/building-with-SettleMint/invite-network-participants.mdx @@ -0,0 +1,72 @@ +--- +title: Invite Network Participants +description: Guide to inviting participants to your blockchain network +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' + + +Permissioned networks, although started by a single organization, allow multiple organizations with a shared business goal to come together and form the consortium. The different organizations transacting with each other in a permissioned network are called **network participants**. The organization who created the network, i.e. the owner, can invite network participants and set specific permissions for the organizations joining the network. + +Depending on how you organize your work, you can grow the network with new participants in two ways: + +- **Invite an organization** to join the SettleMint platform so they can join the network (e.g. if the organization itself is responsible for adding and managing their nodes) +- **Add an organization** to the network yourself (e.g. if the organization is your client and you are managing the project for them) + +## Invite an Organization + +Navigate to the relevant **application**, and click **Blockchain network** in the left navigation. + +Open the **Participants** tab and click **Invite organization**. This opens a form. + + +### Enter Contact Information +Enter the **email address** of the contact person from the organization you want to invite. + +### Set Permissions +Set the **permissions** for this new network participant. You can change these permissions at any time. + +### Add Optional Message +Optionally, you can add a **message** to be included in the invitation email. + +### Confirm Invitation +Click **Confirm** to go to the list of organizations participating in the network. Your email invitation has now been sent, and you see in the list that it is pending. + + +The invitation email includes a code that the recipient can use to get access to the network. + +## Add an Organization + +Navigate to the relevant **application**, and click **Blockchain network** in the left navigation. + +Open the **Participants** tab and click **Add organization**. This opens a form. + + +### Define Organization +Define the **organization**. You can select an organization you already have in place, or create a new one and choose a name for this new organization. Separate invoices are generated for each organization, so creating a new organization might be more convenient if you need to separate invoices. + +### Enter Billing Information +Enter **billing information** if you created a new organization. SettleMint creates a billing account for this organization. You will be billed monthly for the resources you use within this organization. + +### Define Application +Define the **application**. You can select an application you already created, or create a new one and choose a name for this new application. + +### Set Permissions +Set the **permissions** for this new network participant. You can change these permissions at any time. + +### Confirm Addition +Click **Confirm** to go to the list of organizations participating in the network. You see the new participant added to the list. + + +## Manage a Network Participant + +Navigate to the relevant **application**, and click **Blockchain network** in the left navigation. + +Open the **Participants** tab and click **Manage participant** to see available actions. You can only perform these actions if you have administrator rights. + +**Change permissions** - Changes the network participant's permissions with immediate effect. + + +All operations require appropriate permissions in your workspace. + diff --git a/content/docs/building-with-SettleMint/join-a-network-by-invitation.mdx b/content/docs/building-with-SettleMint/join-a-network-by-invitation.mdx new file mode 100644 index 00000000..f9f47eb1 --- /dev/null +++ b/content/docs/building-with-SettleMint/join-a-network-by-invitation.mdx @@ -0,0 +1,38 @@ +--- +title: Join a Network by Invitation +description: Guide to joining an existing blockchain network +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' + +# Join a Network by Invitation + +In a permissioned blockchain network (often called a consortium network), participants need to be invited by the network's owner to join the network. + + +You need an invitation code from the network owner to join a permissioned network. + + +## Join Process + + + ### Access Platform + [Log in](https://console.settlemint.com/) to SettleMint, or [create an account](../launching-the-platform/managed-cloud-deployment/create-an-account) + + ### Navigate to Application + Go to an existing blockchain application, or create a new one + + ### Add Network + 1. Click **Blockchain network** in the left navigation + 2. Click **Add a blockchain network** + 3. Choose **Join by invitation code**, and then click **Continue** + 4. Enter the **invitation code** included in the email you received + 5. Click **Confirm** + + ### View Network Details + The network now appears in the overview. Click to see more details of the network. + + ### Start Adding Nodes + You can now start [adding nodes to the network](./add-a-node-to-a-network) + \ No newline at end of file diff --git a/content/docs/building-with-SettleMint/meta.json b/content/docs/building-with-SettleMint/meta.json new file mode 100644 index 00000000..2078c22f --- /dev/null +++ b/content/docs/building-with-SettleMint/meta.json @@ -0,0 +1,37 @@ +{ + "label": "Building with SettleMint", + "title": "Building with SettleMint", + "icon": "Grid2x2Plus", + "position": 3, + "pages": [ + "create-an-application", + "add-a-network-to-an-application", + "invite-network-participants", + "join-a-network-by-invitation", + "add-a-node-to-a-network", + "connect-to-a-node", + "add-a-load-balancer", + "middleware", + "integration-studio", + "hasura-backend-as-a-service", + "insights", + "storage", + "private-keys", + "user-wallet", + "custom-deployment", + "dev-tools", + "code-studio", + "smart-contract-sets", + "smart-contract-templates", + "add-smart-contract-set", + "deploying-a-contract", + "AI-plugin", + "SDK", + "application-access-tokens", + "personal-access-tokens", + "audit-logs", + "resource-usage", + "health-monitoring-tools", + "deployment-plans" + ] +} diff --git a/docs/using-platform/7_middleware.md b/content/docs/building-with-SettleMint/middleware.mdx similarity index 72% rename from docs/using-platform/7_middleware.md rename to content/docs/building-with-SettleMint/middleware.mdx index d6e48b12..5f9e9ad1 100644 --- a/docs/using-platform/7_middleware.md +++ b/content/docs/building-with-SettleMint/middleware.mdx @@ -3,129 +3,137 @@ title: Middleware description: Guide to using middleware in SettleMint --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Middleware +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' Middleware acts as a bridge between your blockchain network and applications, providing essential services like data indexing, API access, and event monitoring. Before adding middleware, ensure you have an application and blockchain node in place. -## Available Options - -- **Graph Middleware** - For EVM chains, providing subgraph-based indexing with GraphQL API -- **Smart Contract Portal** - For EVM chains, offering REST & GraphQL APIs with webhooks -- **FabConnect** - For Hyperledger Fabric, providing RESTful API -- **Attestation Indexer** - Specialized indexer for attestations with GraphQL API +
+ + ### Available Options + - **Graph Middleware** - For EVM chains, providing subgraph-based indexing with GraphQL API + - **Smart Contract Portal** - For EVM chains, offering REST & GraphQL APIs with webhooks + - **FabConnect** - For Hyperledger Fabric, providing RESTful API + - **Attestation Indexer** - Specialized indexer for attestations with GraphQL API + + + + ### Key Features + - Data indexing + - API access + - Event monitoring + - Webhook support + +
## How to Add Middleware - - - -Navigate to the **application** where you want to add middleware. Click **Middleware** in the left navigation, and then click **Add a middleware**. This opens a form. - -Follow these steps: -1. Choose middleware type (Graph or Portal) -2. Choose a **Middleware name** -3. Select the **blockchain node** -4. Configure deployment settings -5. Click **Confirm** - - - - -First ensure you're authenticated: -```bash -settlemint login -``` - -Create a middleware: -```bash -# Get the list of available middleware types -settlemint platform create middleware --help - -# Create a middleware -settlemint platform create middleware - -# Get information about the command and all available options -settlemint platform create middleware --help -``` - - - - -```typescript -import { createSettleMintClient } from '@settlemint/sdk-js'; - -const client = createSettleMintClient({ - accessToken: 'your_access_token', - instance: 'https://console.settlemint.com' -}); - -// Create middleware -const createMiddleware = async () => { - const result = await client.middleware.create({ - applicationUniqueName: "your-app-unique-name", - name: "my-middleware", - type: "SHARED", - interface: "GRAPH", - blockchainNodeUniqueName: "your-node-unique-name", - region: "EUROPE", // Required - provider: "GKE", // Required - size: "SMALL" // Valid options: "SMALL" | "MEDIUM" | "LARGE" - }); - console.log('Middleware created:', result); -}; - -``` - -:::tip -Get your access token from the Platform UI under User Settings → API Tokens. -::: - - + + + + ### Navigate to Application + Navigate to the **application** where you want to add middleware. + + ### Access Middleware Section + Click **Middleware** in the left navigation, and then click **Add a middleware**. This opens a form. + + ### Configure Middleware + 1. Choose middleware type (Graph or Portal) + 2. Choose a **Middleware name** + 3. Select the **blockchain node** + 4. Configure deployment settings + 5. Click **Confirm** + + + + + First ensure you're authenticated: + ```bash + settlemint login + ``` + + Create a middleware: + ```bash + # Get the list of available middleware types + settlemint platform create middleware --help + + # Create a middleware + settlemint platform create middleware + + # Get information about the command and all available options + settlemint platform create middleware --help + ``` + + + + ```typescript + import { createSettleMintClient } from '@settlemint/sdk-js'; + + const client = createSettleMintClient({ + accessToken: 'your_access_token', + instance: 'https://console.settlemint.com' + }); + + // Create middleware + const createMiddleware = async () => { + const result = await client.middleware.create({ + applicationUniqueName: "your-app-unique-name", + name: "my-middleware", + type: "SHARED", + interface: "GRAPH", + blockchainNodeUniqueName: "your-node-unique-name", + region: "EUROPE", // Required + provider: "GKE", // Required + size: "SMALL" // Valid options: "SMALL" | "MEDIUM" | "LARGE" + }); + console.log('Middleware created:', result); + }; + ``` + + + Get your access token from the Platform UI under User Settings → API Tokens. + + ## Manage Middleware - - - -Navigate to your middleware and click **Manage middleware** to: -- View middleware details and status -- Update configurations -- Monitor health -- Access endpoints - - - - -```bash -# List middlewares -settlemint platform list middlewares --application - -# Get middleware details -settlemint platform read middleware - -# Delete middleware -settlemint platform delete middleware -``` - - - - -```typescript -// List middlewares -await client.middleware.list("your-app"); - -// Get middleware details -await client.middleware.read("middleware-unique-name"); - -// Delete middleware -await client.middleware.delete("middleware-unique-name"); -``` - - + + + Navigate to your middleware and click **Manage middleware** to: + - View middleware details and status + - Update configurations + - Monitor health + - Access endpoints + + + + ```bash + # List middlewares + settlemint platform list middlewares --application + + # Get middleware details + settlemint platform read middleware + + # Delete middleware + settlemint platform delete middleware + ``` + + + + ```typescript + // List middlewares + await client.middleware.list("your-app"); + + // Get middleware details + await client.middleware.read("middleware-unique-name"); + + // Delete middleware + await client.middleware.delete("middleware-unique-name"); + ``` + ## The Graph Middleware @@ -147,9 +155,9 @@ const { client: graphClient, graphql } = createTheGraphClient({ }); ``` -:::tip + For detailed API reference and advanced usage examples, check out the [TheGraph SDK documentation](https://github.com/settlemint/sdk/tree/main/sdk/thegraph). -::: + ### Using The Graph Middleware @@ -159,13 +167,11 @@ Using the Graph protocol, you can create **subgraphs** that define which blockch We have some prebuilt subgraph indexing modules included in the smart contract set, and you can build your own modules if you have a custom smart contract set. -:::warning Warning - + Before you start, make sure you are running: - An EVM-compatible network (Ethereum, Polygon, Hyperledger Besu, Avalanche, etc.) - -::: + When the middleware is deployed, follow these steps to start using it: @@ -229,17 +235,6 @@ The following tasks need to be run in this sequence: The indexing of your smart contracts has now started. This can take a while, but once done you can query the middleware for your data in seconds using the **GraphQL API**. You can find the **endpoint** in the **Connect-tab**. -## Further Reading - -- [The Graph Middleware](#the-graph-middleware) -- [The Smart Contract Portal Middleware](#the-smart-contract-portal-middleware) -- [Attestation Indexer](#attestation-indexer) -- [Firefly FabConnect](#firefly-fabconnect) - -:::info Note -All operations require appropriate permissions in your workspace. -::: - ## The Smart Contract Portal Middleware The Smart Contract Portal is a middleware which creates an easy to use api on top of your smart contracts. It can be used with all EVM-compatible chains like Ethereum, Hyperledger Besu, Polygon, Avalanche, etc. You can run it on your own blockchain nodes (both public and permissioned) or on a Load Balancer. @@ -251,14 +246,12 @@ Benefits of using the smart contract portal: 3. Improved Performance: GraphQL optimizes data fetching, ensuring that clients retrieve only the necessary data in a single request, reducing network load and improving performance. 4. Stack agnostic: Teams are free to choose their own technology stack. -:::warning Warning - + Before you start, make sure you are running: - An EVM-compatible network (Ethereum, Polygon, Hyperledger Besu, Avalanche, etc.) - A Private Key - -::: + ### Using The Smart Contract Portal Middleware @@ -279,33 +272,33 @@ const { client: portalClient, graphql: portalGraphql } = createPortalClient({ }); ``` -:::tip + For comprehensive API documentation and advanced features, check out the [Portal SDK documentation](https://github.com/settlemint/sdk/tree/main/sdk/portal). -::: + ### Upload an ABI A smart contract ABI (Application Binary Interface) is a standardized way for interacting with smart contracts in the Ethereum blockchain and other compatible systems. It serves as the bridge between human-readable contract code (written in languages like Solidity) and the Ethereum Virtual Machine (EVM), which executes the contract. The ABI specifies the functions that can be called on the contract, including their names, input parameters, and output types. -When deploying a smart contract the ABI file can be found as part of the artificats. See [Deploying the Smart Contract](/documentation/docs/developer-guides/connect-frontend#adding-the-abi). Download the ABI json files and save them on your local filesystem. +When deploying a smart contract the ABI file can be found as part of the artificats. See [Deploying the Smart Contract](/developer-guides/connect-frontend#adding-the-abi). Download the ABI json files and save them on your local filesystem. When creating a new middleware you'll need to upload at least one ABI. To update the ABIs of an existing smart contract portal middleware navigate to the middleware, go the details and click on the 'Manage Middleware' button on the top right. Click on the 'Update ABIs' item and a dialog will open. In this dialog upload the ABI file(s) you saved on your local filesystem in the previous step. -![Update ABIs](../../static/img/using-the-platform/scp-update-abis.png) +![Update ABIs](../../img/using-the-platform/scp-update-abis.png) ### REST A fully typed REST api with documentation is created out of the Smart Contract ABI, you can discover all its endpoints on the REST tab. To see examples in your technology of choice use the dropdown in the example section on the right. -![REST](../../static/img/using-the-platform/scp-rest.png) +![REST](../../img/using-the-platform/scp-rest.png) ### GraphQL The GraphQL api exposes the same functionality as the REST api, you can discover it on the GraphQL tab. -![GraphQL](../../static/img/using-the-platform/scp-graphql.png) +![GraphQL](../../img/using-the-platform/scp-graphql.png) ### Webhooks @@ -315,7 +308,7 @@ When sending a message the event will have a signature which allows the receiver The secret to validate the signature can be copied from the details page of your webhook. -![Webhooks](../../static/img/using-the-platform/scp-webhooks.png) +![Webhooks](../../img/using-the-platform/scp-webhooks.png) Standard Webhooks has built [SDKs and useful tools](https://www.standardwebhooks.com/#resources) using different programming languages that make it easy to start using webhooks. @@ -361,8 +354,16 @@ async function webhookConsumerBootstrap(secret: string) { `Started the test webhook consumer on ${server?.url.toString()}` ); }); - await app.listen(3000); } +``` + +## Further Reading -webhookConsumerBootstrap('your-secret'); -``` \ No newline at end of file +- [The Graph Middleware](#the-graph-middleware) +- [The Smart Contract Portal Middleware](#the-smart-contract-portal-middleware) +- [Attestation Indexer](#attestation-indexer) +- [Firefly FabConnect](#firefly-fabconnect) + + +All operations require appropriate permissions in your workspace. + \ No newline at end of file diff --git a/docs/using-platform/17_personal-access-tokens.md b/content/docs/building-with-SettleMint/personal-access-tokens.mdx similarity index 74% rename from docs/using-platform/17_personal-access-tokens.md rename to content/docs/building-with-SettleMint/personal-access-tokens.mdx index e0f29cc8..04b84dd7 100644 --- a/docs/using-platform/17_personal-access-tokens.md +++ b/content/docs/building-with-SettleMint/personal-access-tokens.mdx @@ -1,6 +1,16 @@ +--- +title: Personal Access Tokens +description: Guide to managing personal access tokens in SettleMint +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + # Personal Access Tokens -Personal access tokens (or [Application access tokens](16_application-access-tokens.md)) let you connect your SettleMint services with other apps securely. They represent an individual user, and have the same rights as the user's role in the organization (admin or user). They can be used to connect to all services that the user has access to. +Personal access tokens (or [Application access tokens](/building-with-settlemint/application-access-tokens)) let you connect your SettleMint services with other apps securely. They represent an individual user, and have the same rights as the user's role in the organization (admin or user). They can be used to connect to all services that the user has access to. ## Create a personal access token @@ -12,11 +22,9 @@ Click on the **Add a personal access token** button, this opens a form where you 2. Select an **expiration date**. You cannot update this later. 3. Click **Confirm** to create your personal access token. -:::warning Warning - + Copy and save your token securely - you won't see it again. Treat it like a password and keep it secret. - -::: + ## Delete a personal access token @@ -40,4 +48,4 @@ You can use these personal access tokens in three ways depending on what works f For most use cases, you should use application access tokens. Since they are directly linked to the application, the token continues to work even if the user leaves the organization. They also provide more granular access control. -Personal access tokens are a simpler way to authenticate, but they are linked to the user's account. If the user leaves the organization, the token will no longer work for the services of that organization. +Personal access tokens are a simpler way to authenticate, but they are linked to the user's account. If the user leaves the organization, the token will no longer work for the services of that organization. \ No newline at end of file diff --git a/content/docs/building-with-SettleMint/private-keys.mdx b/content/docs/building-with-SettleMint/private-keys.mdx new file mode 100644 index 00000000..b82138b5 --- /dev/null +++ b/content/docs/building-with-SettleMint/private-keys.mdx @@ -0,0 +1,133 @@ +--- +title: Private Keys +description: Guide to managing private keys on SettleMint +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + +# Private Keys + +To send transactions to a blockchain network, you need a private key to sign these transactions, and the private key should contain enough funds to cover the gas price for the transaction. + +You can sign transactions with private keys you created outside SettleMint with e.g. MetaMask or other wallet solutions. SettleMint however provides an option to **create and manage private keys within the platform**. + +When you deploy a blockchain node it contains a signing proxy that captures the eth_sendTransaction call, uses the appropriate key from the private key section to sign it, and sends it onwards to the blockchain node. You can use this proxy directly via the nodes JSON-RPC endpoints ([https://eth.wiki/json-rpc/API](https://eth.wiki/json-rpc/API)) and via tools like Hardhat ([https://hardhat.org/config/#json-rpc-based-networks](https://hardhat.org/config/#json-rpc-based-networks)) configured to use the "remote" default option for signing. + +## Create a private key + + + + Navigate to your **application**, click **Private keys** in the left navigation, and then click **Create a private key**. This opens a form. + + Follow these steps to create the private key: + + 1. Choose a **private key type**: + - **Accessible ECDSA P256**: Standard Ethereum-style private keys with exposed mnemonic + - **HD ECDSA P256**: Hierarchical Deterministic keys for advanced key management + - **HSM ECDSA P256**: Hardware Security Module protected keys for maximum security + + 2. Choose a **name** for your private key + 3. Select the **nodes** on which you want the key to be active + 4. Click **Confirm** to create the key + + + + ```bash + # Create Accessible ECDSA P256 key + settlemint platform create private-key accessible-ecdsa-p256 my-key \ + --application my-app \ + --blockchain-node node-123 + + # Create HD ECDSA P256 key + settlemint platform create private-key hd-ecdsa-p256 my-key \ + --application my-app + + # Create HSM ECDSA P256 key + settlemint platform create private-key hsm-ecdsa-p256 my-key \ + --application my-app + ``` + + + + ```typescript + import { createSettleMintClient } from '@settlemint/sdk-js'; + + const client = createSettleMintClient({ + accessToken: 'your_access_token', + instance: 'https://console.settlemint.com' + }); + + // Create private key + const createKey = async () => { + const result = await client.privateKey.create({ + name: "my-key", + applicationUniqueName: "my-app", + privateKeyType: "ACCESSIBLE_ECDSA_P256", // or "HD_ECDSA_P256" or "HSM_ECDSA_P256" + blockchainNodeUniqueNames: ["node-123"] // optional + }); + console.log('Private key created:', result); + }; + ``` + + + +## Manage private keys + + + + 1. Navigate to your application's **Private keys** section + 2. Click on a private key to: + - View details and status + - Manage node associations + - Check balances + - Fund the key + + + + ```bash + # List all private keys + settlemint platform list private-keys --application + + # View specific key details + settlemint platform read private-key + + # Restart a private key + settlemint platform restart private-key + ``` + + + + ```typescript + // List private keys + const listKeys = async () => { + const keys = await client.privateKey.list("your-app-name"); + }; + + // Get key details + const getKey = async () => { + const key = await client.privateKey.read("key-unique-name"); + }; + + // Restart key + const restartKey = async () => { + await client.privateKey.restart("key-unique-name"); + }; + ``` + + + +## Fund the private key + +For networks that require gas to perform a transaction, your private key should contain enough funds to cover the gas price. + +1. Click the **private key** in the overview to see detailed information +2. Open the **Balances tab** +3. Click **Fund** +4. Scan the **QR code** with your wallet/exchange to fund the key + + +Ensure your private key has sufficient funds before attempting transactions on networks that require gas fees. + \ No newline at end of file diff --git a/docs/using-platform/19_resource-usage.md b/content/docs/building-with-SettleMint/resource-usage.mdx similarity index 65% rename from docs/using-platform/19_resource-usage.md rename to content/docs/building-with-SettleMint/resource-usage.mdx index cd3073a3..20046a82 100644 --- a/docs/using-platform/19_resource-usage.md +++ b/content/docs/building-with-SettleMint/resource-usage.mdx @@ -3,13 +3,17 @@ title: Resource Usage description: Guide to monitoring resource usage --- -# Resource usage +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' -When you add a service (network, node, smart contract set, etc.), you select the amount of resources to allocate to that service by choosing a small, medium or large [resource pack](launch-platform/managed-cloud-deployment/3_deployment-plans.md). Resources are the **memory**, **vCPU**, and **disk space** you need to keep your services running. You can see the resources allocated to your services at any time, and follow up on the current resource usage. + +When you add a service (network, node, smart contract set, etc.), you select the amount of resources to allocate to that service by choosing a small, medium or large [resource pack](/docs/launch-platform/managed-cloud-deployment/deployment-plans). Resources are the **memory**, **vCPU**, and **disk space** you need to keep your services running. You can see the resources allocated to your services at any time, and follow up on the current resource usage. ## Resource usage metrics -![Resource Usage](../../static/img/using-the-platform/resource-usage.png) +![Resource Usage](../../img/using-the-platform/resource-usage.png) Navigate to your **application**. Click **Blockchain networks**, **Blockchain nodes** or **Smart contracts** in the left navigation, depending on which resource usage you want to see, and choose the relevant one from the list. @@ -21,7 +25,7 @@ Moreover, detailed graphs are available to check memory, vCPU, and disk space us ## Resource usage status -![Resource Usage CPU](../../static/img/using-the-platform/resource-usage-cpu.png) +![Resource Usage CPU](../../img/using-the-platform/resource-usage-cpu.png) The **status** indicates whether or not your resources are still sufficient for optimal functioning of the service. @@ -31,4 +35,4 @@ The following statuses are defined: - **Suboptimal** - the used resources are between 75% and 90% of the allocated resources - **Critical** - the used resources are over 90% of the allocated resources -When the status is **Suboptimal**, and the current resource usage is about to reach its limit, you will see a **warning** with the recommendation to scale your resource pack to keep the service running. +When the status is **Suboptimal**, and the current resource usage is about to reach its limit, you will see a **warning** with the recommendation to scale your resource pack to keep the service running. \ No newline at end of file diff --git a/content/docs/building-with-SettleMint/storage.mdx b/content/docs/building-with-SettleMint/storage.mdx new file mode 100644 index 00000000..0304db08 --- /dev/null +++ b/content/docs/building-with-SettleMint/storage.mdx @@ -0,0 +1,149 @@ +--- +title: Storage +description: Guide to using storage solutions in SettleMint +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + +Managing complex or large data in decentralized systems can be a challenge. To securely store and share your files and data, SettleMint offers two storage solutions that can interact with the blockchain: **IPFS (decentralized)** and **MinIO (centralized)**. + +## Add Storage + + + + Navigate to the **application** where you want to add storage. Click **Storage** in the left navigation, and then click **Add storage**. This opens a form. + + + ### Configure Storage + 1. Choose storage type (IPFS or MinIO) + 2. Choose a **Storage name** + 3. Configure deployment settings + 4. Click **Confirm** + + + + + First ensure you're authenticated: + ```bash + settlemint login + ``` + + Create storage: + ```bash + # Get the list of available storage types + settlemint platform create storage --help + + # Create storage + settlemint platform create storage + + # Get information about the command and all available options + settlemint platform create storage --help + ``` + + + + For a full example of how to connect to a storage using the SDK, see the [MinIO SDK API Reference](https://www.npmjs.com/package/@settlemint/sdk-minio#api-reference) or [IPFS SDK API Reference](https://www.npmjs.com/package/@settlemint/sdk-ipfs#api-reference). + + + Get your access token from the Platform UI under User Settings → API Tokens. + + + + The SDK enables you to: + - Use IPFS for decentralized storage - check out the [IPFS SDK documentation](https://github.com/settlemint/sdk/tree/main/sdk/ipfs) + - Use MinIO for S3-compatible storage - check out the [MinIO SDK documentation](https://github.com/settlemint/sdk/tree/main/sdk/minio) + + + + +## Manage Storage + + + + Navigate to your storage and click **Manage storage** to: + - View storage details and status + - Monitor health + - Access storage interface + - Update configurations + + + + ```bash + # List storage instances + settlemint platform list storage --application + + # Get storage details + settlemint platform read storage + + # Delete storage + settlemint platform delete storage + ``` + + + + ```typescript + // List storage instances + const listStorage = async () => { + const storages = await client.storage.list("your-app-id"); + console.log('Storage instances:', storages); + }; + + // Get storage details + const getStorage = async () => { + const storage = await client.storage.read("storage-unique-name"); + console.log('Storage details:', storage); + }; + + // Delete storage + const deleteStorage = async () => { + await client.storage.delete("storage-unique-name"); + }; + ``` + + + +## About IPFS (decentralized) + +The InterPlanetary File System (IPFS) is a peer-to-peer network for storing and sharing data in a distributed file system. When uploading a file to IPFS it generates a unique fingerprint (hash). Later when querying that data it will use that fingerprint to find nodes storing the data behind this fingerprint. This means that this hash is not only a key used to retrieve a file, but it also serves as a proof of integrity. Often such fingerprints will be stored on chain in order to act as a bridge between the blockchain and IPFS. + +[Learn more on IPFS here](https://docs.ipfs.tech/concepts/) + +## About MinIO (centralized - S3 compatible) + +For private or confidential data, MinIO would be your preferred option. + +[Learn more on MinIO here](https://min.io/) + +MinIO is S3-compatible. If you want to **set up a MinIO client for AWS S3**, you need these parameters: + +**endPoint** +The endpoint is the URL to object storage service. Example value: example-minio-123a.settlemint.com, unique-name.settlemint.com (you can get the unique name from the Details tab) + +**accessKey** +The access key is like a user ID that uniquely identifies your account. You can get your access key under the **Connect tab** + +**secretKey** +The secret key is like the password to your account. You can get your secret key under the **Connect tab**. + +```js +var Minio = require('minio'); + +var s3Client = new Minio.Client({ + endPoint: 'your-minio-instance.settlemint.com', + accessKey: 'YOUR-ACCESSKEYID', + secretKey: 'YOUR-SECRETACCESSKEY' +}); +``` + +You can now use the s3Client object to call methods like `makeBucket`, `getObject`, and [many more methods which you can find here](https://docs.min.io/docs/javascript-client-api-reference.html). + + +MinIO client can also be configured in Python, .NET, Java, Golang, Haskell. You can follow the [quickstart guides provided by MinIO here](https://docs.min.io/docs/java-client-quickstart-guide.html) for more information. + + + +All operations require appropriate permissions in your workspace. + \ No newline at end of file diff --git a/docs/using-platform/13_user_wallet.md b/content/docs/building-with-SettleMint/user-wallet.mdx similarity index 70% rename from docs/using-platform/13_user_wallet.md rename to content/docs/building-with-SettleMint/user-wallet.mdx index b39092ee..c9be62c0 100644 --- a/docs/using-platform/13_user_wallet.md +++ b/content/docs/building-with-SettleMint/user-wallet.mdx @@ -1,4 +1,13 @@ -# User Wallets +--- +title: User Wallets +description: Guide to managing user wallets in SettleMint +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + SettleMint's **User Wallets** feature offers a production-ready solution for managing infinite wallets with efficiency and scalability. This tool empowers users with seamless wallet generation, ensuring **cost-effective management** and eliminating additional expenses. By generating **unique addresses for each user**, privacy is significantly enhanced, while improved performance ensures faster, parallel transaction processing through separate nonces. User wallet also simplifies wallet recovery since all wallets are derived from a single master key. User wallets use the same signing proxy to sign transactions with the corresponding user private key. @@ -8,24 +17,24 @@ To set up your user wallets, navigate to your application, click **Private keys* Select **HD ECDSA P256** as the private key type then, enter a **name** for your deployment. You can also select the nodes or load balancers on which you want to enable the user wallets. You can change this later if you want to use your user wallets on a different node. Click **Confirm** to deploy the wallet. -![Add User Wallet](../../static/img/using-the-platform/add-user-wallet.png) +![Add User Wallet](../../img/using-the-platform/add-user-wallet.png) ## Create User Wallets When your deployment status is **Running**, you can click on it to check the details. You can see the Mnemonic from which the user wallets are generated under **Key material**. -![Wallet details](../../static/img/using-the-platform/user-wallet-details.png) +![Wallet details](../../img/using-the-platform/user-wallet-details.png) Upon initialization, the User Wallets section is empty. To create your first user wallet, click on **Create a user wallet**. -![Create User Wallet](../../static/img/using-the-platform/create-user-wallet.png) +![Create User Wallet](../../img/using-the-platform/create-user-wallet.png) This opens a form in which you must enter a wallet name. -![Create User Wallet Form](../../static/img/using-the-platform/create-user-wallet-form.png) +![Create User Wallet Form](../../img/using-the-platform/create-user-wallet-form.png) The new user wallet appears in the list. -![User Wallet List](../../static/img/using-the-platform/user-wallet-list.png) +![User Wallet List](../../img/using-the-platform/user-wallet-list.png) -You can now see the address associated with that user. Remember that for networks that require gas to perform a transaction, the user wallet should contain enough funds to cover the gas price. You can fund it using the address displayed in the list. +You can now see the address associated with that user. Remember that for networks that require gas to perform a transaction, the user wallet should contain enough funds to cover the gas price. You can fund it using the address displayed in the list. \ No newline at end of file diff --git a/content/docs/core-components/index.mdx b/content/docs/core-components/index.mdx new file mode 100644 index 00000000..c6c521fd --- /dev/null +++ b/content/docs/core-components/index.mdx @@ -0,0 +1,3 @@ +--- +title: Core Components +--- \ No newline at end of file diff --git a/content/docs/core-components/meta.json b/content/docs/core-components/meta.json new file mode 100644 index 00000000..162df54a --- /dev/null +++ b/content/docs/core-components/meta.json @@ -0,0 +1,5 @@ +{ + "title": "Core Components", + "icon": "Grid2x2Plus", + "pages": ["about-settlemint"] +} diff --git a/docs/developer-guides/asset-tokenization.md b/content/docs/developer-guides/asset-tokenization.mdx similarity index 92% rename from docs/developer-guides/asset-tokenization.md rename to content/docs/developer-guides/asset-tokenization.mdx index 2d2fb22d..5f380eca 100644 --- a/docs/developer-guides/asset-tokenization.md +++ b/content/docs/developer-guides/asset-tokenization.mdx @@ -41,7 +41,7 @@ Asset tokenization is the process of representing ownership rights to an asset t To start, you need to create an application on SettleMint. An application is a collection of the different components on SettleMint that will help run your solution. -![Create an Application](./../../static/img/developer-guides/asset-tokenization/create-an-application.png) +![Create an Application](../../img/developer-guides/asset-tokenization/create-an-application.png) To create an application on SettleMint, select the application launcher in the top right of the dashboard (four boxes). Click `Add an application`. @@ -52,13 +52,13 @@ You will now be able to create a blockchain application and give it a name. After creating an application, you can now deploy a network and node. We will use both of these resources to deploy our Asset Tokenization Smart Contract. -![Deploy a Network or Node](./../../static/img/developer-guides/asset-tokenization/create-a-network.gif) +![Deploy a Network or Node](../../img/developer-guides/asset-tokenization/create-a-network.gif) To create a network and node, click on the `Start Here` button. Then Select `Add a Blockchain Network`. This will show all the supported blockchains on SettleMint. For this guide, select `Hyperledger Besu`. -![Configure Besu](../../static/img/developer-guides/asset-tokenization/configure-besu.png) +![Configure Besu](../../img/developer-guides/asset-tokenization/configure-besu.png) After selecting `Hyperledger Besu`, you now have the option to select our deployment plan. @@ -72,7 +72,7 @@ For this guide, you can use the following settings: **Resouce Pack**: Small -![Network Success](../../static/img/developer-guides/asset-tokenization/network-success.png) +![Network Success](../../img/developer-guides/asset-tokenization/network-success.png) After clicking confirm, the node and network will start deploying at the same time. You will see the status as `Running` once both have been successfully deployed. @@ -81,7 +81,7 @@ see the status as `Running` once both have been successfully deployed. This guide uses a simple image as the tokenized asset. This image will be pinned on IPFS, so the next step is to deploy a storage service. -![IPFS Storage](../../static/img/developer-guides/asset-tokenization/add-ipfs.png) +![IPFS Storage](../../img/developer-guides/asset-tokenization/add-ipfs.png) Click on `Storage` and then select `Add storage`. Then select `IPFS` and create an instance called `Token Storage`. You can choose the same deployment plan that you did earlier with the network and node. @@ -89,7 +89,7 @@ Click on `Storage` and then select `Add storage`. Then select `IPFS` and create To get access to the node you deployed, you will need to generate a private key. -![Create a Key](../../static/img/developer-guides/asset-tokenization/create-key.png) +![Create a Key](../../img/developer-guides/asset-tokenization/create-key.png) To create a key, click on the `Private Keys` option, then select the `Accessible EC DSA P256` option. Create a name and select the node that you deployed in the earlier step. @@ -106,13 +106,13 @@ To create a Smart contract set, navigate to the `Dev tools` section in the left You will now be given the option to select a template. Choose the `Empty` option. Create a name and select the same deployment plan as you did earlier. For more information on how to add a smart contract set, [see our Smart Contract Sets section](using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/3_add-smart-contract-set.md). -![Create a Smart Contract](../../static/img/developer-guides/asset-tokenization/create-empty-smart-contract.png) +![Create a Smart Contract](../../img/developer-guides/asset-tokenization/create-empty-smart-contract.png) ### 2. Opening the Integrated Development Environment (IDE) To add and edit the smart contract code, you will use the IDE. -![Open Fullscreen](../../static/img/developer-guides/asset-tokenization/open-fullscreen.png) +![Open Fullscreen](../../img/developer-guides/asset-tokenization/open-fullscreen.png) Once the resource has been deployed, select the `IDE` tab and then `View in fullscreen mode`. @@ -120,7 +120,7 @@ Once the resource has been deployed, select the `IDE` tab and then `View in full With the IDE open in fullscreen, create a new file for your Asset Tokenization smart contract. -![Create Asset Contract](../static/img/developer-guides/../../../../static/img/developer-guides/asset-tokenization/create-asset-contract.png) +![Create Asset Contract](../../img/developer-guides/asset-tokenization/create-asset-contract.png) 1. On the File Explorer on the left side, select the `Contracts` option. 2. Right Click and select `New File...` @@ -314,7 +314,7 @@ contract AssetTokenization is Initializable, UUPSUpgradeable, ERC1155SupplyUpgra With the code pasted in the IDE, you now need to change the deployment settings to include the smart contract you have just created. -![Edit Deployment Contract](./../../static/img/developer-guides/asset-tokenization/edit-deploy.png) +![Edit Deployment Contract](../../img/developer-guides/asset-tokenization/edit-deploy.png) In the file explorer on the left, select the `ignition` folder. Then open the `main.ts` file under `modules`. @@ -343,7 +343,7 @@ export default AssetTokenizationModule; With those settings changed, you are now ready to compile and deploy your smart contract. -![Compile Contract](./../../static/img/developer-guides/asset-tokenization/compile-contract.png) +![Compile Contract](../../img/developer-guides/asset-tokenization/compile-contract.png) To compile the smart contract: @@ -357,11 +357,11 @@ To deploy your smart contract: 2. The terminal will open to show the status of deploying your contract 3. The terminal will show the contract address of your smart contract -![Contract Address](./../../static/img/developer-guides/asset-tokenization/contract-address.png) +![Contract Address](../../img/developer-guides/asset-tokenization/contract-address.png) -:::info + The contract address can also be found in `deployed_addresses.json` in the `deployments`folder created when deploying the smart contract code. You will need it later for the integration. -::: + ## Part 3: Connect the Resources @@ -369,11 +369,11 @@ The contract address can also be found in `deployed_addresses.json` in the `depl You will now upload the image to the IPFS storage service you deployed earlier. -![Asset Image](./../../static/img/developer-guides/asset-tokenization/asset.png) +![Asset Image](../../img/developer-guides/asset-tokenization/asset.png) Save the image above to your computer. It is what you will use to represent your asset. -![Add to IPFS](./../../static/img/developer-guides/asset-tokenization/add-to-ipfs.png) +![Add to IPFS](../../img/developer-guides/asset-tokenization/add-to-ipfs.png) To upload this image to IPFS: @@ -381,7 +381,7 @@ To upload this image to IPFS: 2. Select File Manager 3. Select the `Import` option -![Set Pinning](./../../static/img/developer-guides/asset-tokenization/set-pinning.png) +![Set Pinning](../../img/developer-guides/asset-tokenization/set-pinning.png) After the image has been imported, select the `Share Link` option by clicking on the 3 dots next to the file size. @@ -392,7 +392,7 @@ Save this URL as you will use it later in this guide when building the integrati Select the `Set pinning` option. This will make sure your file remains on IPFS. -![Set Local Node](./../../static/img/developer-guides/asset-tokenization/set-local-node.png) +![Set Local Node](../../img/developer-guides/asset-tokenization/set-local-node.png) Choose the local node option and click `Apply`. @@ -400,7 +400,7 @@ Choose the local node option and click `Apply`. To connect to the network that you have created, you need to get your JSON-RPC connection URL. -![JSON RPC Node](./../../static/img/developer-guides/asset-tokenization/json-rpc.png) +![JSON RPC Node](../../img/developer-guides/asset-tokenization/json-rpc.png) The URL can be found by: @@ -408,9 +408,9 @@ The URL can be found by: 2. Clicking on the `Connect` tab 3. Copy the `JSON-RPC` URL -:::info + Save this URL as you will use it later in this guide when building the integration. -::: + ### 3. Creating an access token @@ -418,7 +418,7 @@ To connect to your node and storage, you will need an access token. We recommend You can create an application access token by navigating to the application dashboard, and then clicking on the `Access Tokens` section in the left sidebar. -![API Keys](../../static/img/developer-guides/asset-tokenization/access-token-node-storage.png) +![API Keys](../../img/developer-guides/asset-tokenization/access-token-node-storage.png) You can now create an application access token with an expiration and the scopes you want to use. For this guide, we recommend you create an access token scoped to your node and storage. @@ -428,7 +428,7 @@ You will now see your access token. Copy the token since you cannot see it again The final step is to create a deployment of the `Integration Studio`. -![Create an Integration](./../../static/img/developer-guides/asset-tokenization/create-an-integration.png) +![Create an Integration](../../img/developer-guides/asset-tokenization/create-an-integration.png) To create an integration studio deployment: @@ -436,13 +436,13 @@ To create an integration studio deployment: 2. Name the Integration Studio 3. Choose the same deployment plan you have used in this guide -![Open an Integration](./../../static/img/developer-guides/asset-tokenization/open-integration.png) +![Open an Integration](../../img/developer-guides/asset-tokenization/open-integration.png) Open your Integration Studio by selecting the `Interface` tab and then opening it in fullscreen mode. For this guide, import the template below into the Integration Studio. -![Import an Integration](./../../static/img/developer-guides/asset-tokenization/import-integration.png) +![Import an Integration](../../img/developer-guides/asset-tokenization/import-integration.png) To import the below JSON file: @@ -485,15 +485,15 @@ To import the below JSON file: The Integration Studio allows you to interact with your smart contract and add business logic. Go to the newly created `Asset Tokenisation` tab in the Integration Studio. -![Asset Imported](./../../static/img/developer-guides/asset-tokenization/asset-imported.png) +![Asset Imported](../../img/developer-guides/asset-tokenization/asset-imported.png) The first function you need to complete is to set the global variables of the integration. -![Set Global Variables](./../../static/img/developer-guides/asset-tokenization/set-global-variables.gif) +![Set Global Variables](./../../img/developer-guides/asset-tokenization/set-global-variables.gif) To do this, click on the middle item in the diagram labeled `Set Global Variables`. There you will you a variable called `glbVar`. Here is where you will enter the information to start interacting with your smart contract. -![Set Global Variables](./../../static/img/developer-guides/asset-tokenization/globalvariables-settings.png) +![Set Global Variables](../../img/developer-guides/asset-tokenization/globalvariables-settings.png) 1. **privateKey** - Enter your private key that you created in [Part 1 / Step 4](#4-deploy-a-private-key) 2. **privateKeyAdress** - The address created after completing [Part 1 / Step 4](#4-deploy-a-private-key) @@ -505,7 +505,7 @@ With this information entered, click on the blue square next to the `Inject` ite Now you need to create an asset by creating an asset name, asset symbol and assetUri. -![Change Asset Name](./../../static/img/developer-guides/asset-tokenization/assetname.gif) +![Change Asset Name](../../img/developer-guides/asset-tokenization/assetname.gif) To create an asset, double click on the `Inject` option next to the `Initialise Asset` item. @@ -521,7 +521,7 @@ From here you can now click on the other `inject` options to: 3. Mint the Asset 4. View the Balance -![Asset Name](./../../static/img/developer-guides/asset-tokenization/asset-debug.png) +![Asset Name](../../img/developer-guides/asset-tokenization/asset-debug.png) To see how the interactions with your smart contract, choose the `Debug` option under the deploy button. @@ -529,6 +529,6 @@ To see how the interactions with your smart contract, choose the `Debug` option You have now created and deployed an Asset Tokenization smart contract using SettleMint! -Find other guides in to help you build with SettleMint in our [Guide Library](guide-library.mdx) +Find other guides in our [Guide Library](/developer-guides/guide-library) to help you build with SettleMint. ``` diff --git a/docs/developer-guides/attestation-service.md b/content/docs/developer-guides/attestation-service.mdx similarity index 96% rename from docs/developer-guides/attestation-service.md rename to content/docs/developer-guides/attestation-service.mdx index 83735be3..4566b03f 100644 --- a/docs/developer-guides/attestation-service.md +++ b/content/docs/developer-guides/attestation-service.mdx @@ -1,7 +1,6 @@ --- title: Complete Guide to Ethereum Attestation Service (EAS) description: A comprehensive guide to implementing and using the Ethereum Attestation Service (EAS) for creating, managing, and verifying on-chain attestations -sidebar_position: 2 keywords: [ ethereum, @@ -16,10 +15,10 @@ keywords: ] --- -# Complete Guide to Ethereum Attestation Service (EAS) - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' ## 1. Introduction to EAS @@ -72,7 +71,19 @@ Ethereum Attestation Service (EAS) is a decentralized protocol that allows users ## 3. How EAS Works -![Visual Overview](mermaid-diagram.png) +```mermaid +graph TD + SchemaRegistry["SchemaRegistry"] + UsersSystems["Users/Systems"] + EASContract["EAS Contract"] + Verifiers["Verifiers"] + Attestations["Attestations"] + + SchemaRegistry -- "Defines Data Structure" --> EASContract + UsersSystems -- "Interact" --> EASContract + EASContract -- "Creates" --> Attestations + Verifiers -- "Verify" --> Attestations +``` ### Workflow @@ -94,7 +105,7 @@ Before deploying the EAS contracts, you must add the smart contract set to your 3. **Customize**: Modify the set as needed for your specific project. 4. **Save**: Save the configuration. -For detailed instructions, visit the [Smart Contract Sets Documentation](../using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/1_smart-contract-sets.md). +For detailed instructions, visit the [Smart Contract Sets Documentation](/docs/using-platform/dev-tools/code-studio/smart-contract-sets/smart-contract-sets). --- @@ -103,7 +114,7 @@ For detailed instructions, visit the [Smart Contract Sets Documentation](../usin Once the contract set is ready, you can deploy it using either the **Task Menu** in the SettleMint IDE or via the **Terminal**. - + #### Deploy Using the Task Menu @@ -118,8 +129,8 @@ Once the contract set is ready, you can deploy it using either the **Task Menu** 3. **Monitor Deployment Logs**: - The terminal output will display the deployment progress and contract addresses. - - + + #### Deploy Using the Terminal @@ -149,7 +160,7 @@ Once the contract set is ready, you can deploy it using either the **Task Menu** 3. **Monitor Deployment Logs**: - The terminal output will display the deployment progress and contract addresses. - + --- @@ -223,7 +234,7 @@ registerSchema(); ### Example Use Case -Let’s create an attestation that proves: +Let's create an attestation that proves: - **Username**: `awesome_developer` - **Platform**: `GitHub` @@ -301,7 +312,7 @@ Verification is essential to ensure the integrity and authenticity of attestatio ### Choose Your Verification Method - + #### Verification Using the EAS SDK @@ -352,8 +363,8 @@ verifyAttestation('YOUR_ATTESTATION_UID_HERE'); - **Lightweight**: Suitable for most off-chain verifications. - **No Custom Logic**: Fetches and verifies data stored in EAS. - - + + #### Verification Using a Custom Smart Contract Resolver @@ -421,7 +432,7 @@ npx hardhat deploy --module ignition/modules/main.ts ###### Linking the Resolver to a Schema -When registering a schema, include the resolver’s address for on-chain validation. +When registering a schema, include the resolver's address for on-chain validation. ```javascript const resolverAddress = 'YOUR_DEPLOYED_RESOLVER_ADDRESS'; @@ -456,7 +467,7 @@ console.log('✅ Is the attestation valid?', isValid); - **Customizable Rules**: Add your own validation logic to the resolver. - **On-Chain Validation**: Ensures attestations meet specific conditions before they are considered valid. - + --- diff --git a/docs/developer-guides/connect-frontend.md b/content/docs/developer-guides/connect-frontend.md similarity index 90% rename from docs/developer-guides/connect-frontend.md rename to content/docs/developer-guides/connect-frontend.md index dca62355..461e24f2 100644 --- a/docs/developer-guides/connect-frontend.md +++ b/content/docs/developer-guides/connect-frontend.md @@ -26,7 +26,7 @@ At the end of this guide, you will have deployed an ERC-20 token smart contract The first step is to create a new blockchain application on SettleMint. This is done by clicking on the grid icon in the top right and selecting `Create new application`. -![Create an Application](../../static/img/developer-guides/create-application.png) +![Create an Application](../../img/developer-guides/create-application.png) For this guide, we will name this application `TokenSender`. @@ -36,7 +36,7 @@ After creating an application, we need to create a Blockchain Network and Node t We will deploy our smart contract to the Polygon Amoy Testnet like the image below: -![Choose A Network](../../static/img/developer-guides/choose-network.png) +![Choose A Network](../../img/developer-guides/choose-network.png) We can continue to use the `TokenSender` name for the naming of the network. @@ -61,7 +61,7 @@ Below is the configuration you should use for your private key: Now that we have our private key address, we can copy the address and go to the [Polygon Faucet](https://faucet.polygon.technology/): -![Polygon Faucet](../../static/img/developer-guides/polygon-faucet.png) +![Polygon Faucet](../../img/developer-guides/polygon-faucet.png) Insert your Wallet Address and click the `Submit` button. Depending on faucet traffic, you may have to perform some validation that you are a human. @@ -75,15 +75,16 @@ You now have the option to select a smart contract set template. These are pre-b For this guide, we will use the ERC-20 Token template: -![Choose a template](../../static/img/developer-guides/connect-frontend-erc20-template.png) +![Choose a template](../../img/developer-guides/connect-frontend-erc20-template.png) -You can continue to use the naming and deployment plan that you used earlier for the other resources. For more information on how to add a smart contract set, [see our Smart Contract Sets section](using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/3_add-smart-contract-set.md). +You can continue to use the naming and deployment plan that you used earlier for the other resources. For more information on how to add a smart contract set, +[see our Smart Contract Sets section](/building-with-settlemint/dev-tools/code-studio/smart-contract-sets/smart-contract-sets). ### Editing the Contract Once that is deployed, we can go to the IDE and start editing our contract. -![Open IDE](../../static/img/developer-guides/open-ide.png) +![Open IDE](../../img/developer-guides/open-ide.png) You can find the ERC20 contract on the left in the Explorer under `contracts/GenericERC20.sol` @@ -109,7 +110,7 @@ const counter = m.contract('GenericERC20', ['DocumentationToken', 'DT']); After making the changes, we can compile our contract code. This is done by selecting the `Task Manager` option on the left side. -![Deploy Contract](../../static/img/developer-guides/deploy-contract.png) +![Deploy Contract](../../img/developer-guides/deploy-contract.png) 1. Select the `Task Manager` on the left 2. Compile the contract by selecting `Hardhat - Build` @@ -144,7 +145,7 @@ The first thing we will do is add the ABI and address of our deployed contract. Go to the `ignition/deployments/chain-46622/artifacts` folder in the file explorer and copy the `GenericERC20Module#GenericERC20.json` file to the `contractData` directory. -![Copy ABI](../../static/img/developer-guides/copy-abi.png) +![Copy ABI](../../img/developer-guides/copy-abi.png) ### Adding the access token @@ -152,7 +153,7 @@ To connect to your node and middleware, you will need an access token. We recomm You can create an application access token by navigating to the application dashboard, and then clicking on the `Access Tokens` section in the left sidebar. -![API Keys](../../static/img/developer-guides/access-token.png) +![API Keys](../../img/developer-guides/access-token.png) You can now create an application access token with an expiration and the scopes you want to use. For this guide, we recommend you create an access token scoped to your node and middleware. @@ -166,7 +167,7 @@ After creating an account, you can create a new project. From there you will see On that page, you will find the `Project ID` like below: -![Project ID](../../static/img/developer-guides/project-id.png) +![Project ID](../../img/developer-guides/project-id.png) Copy your Project ID and add it as the `NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID` variable value in the `.env` file. @@ -211,7 +212,7 @@ bun dev ``` This will start your application locally on `localhost:3000`. Go to that address and you will now see the frontend using NextJS: -![Front-End](../../static/img/developer-guides/front-end.png) +![Front-End](../../img/developer-guides/front-end.png) Using the `Smart Contract Portal Middleware` enables us to read different functions and values from our smart contract. In this template, we are reading the `symbol` function to display which token is connected to this smart contract. @@ -236,7 +237,7 @@ To send some tokens that we just created, we need to add our private key to our Copy your private key and open up your Metamask Extension. From there, select whatever account name is at the top of the window. Then scroll down until you see the `Import Account` option. -![Metamask](../../static/img/developer-guides/metamask.png) +![Metamask](../../img/developer-guides/metamask.png) Select that option and paste into your private key. You now have access via Metamask to perform transactions from this account. @@ -254,16 +255,17 @@ Your Metamask should now open up for you to sign the transaction. If not, make s After clicking `Confirm`, you will see a `Tokens Sent` confirmation on your front end: -![Tokens Sent](../../static/img/developer-guides/tokens-sent.png) +![Tokens Sent](../../img/developer-guides/tokens-sent.png) Congrats! You will now see the transaction confirmed in your Metamask activity. ## Next Steps -Now that you have built your custom frontend, you can now explore more [smart contract use cases](../guide-library) you can build on SettleMint! +Now that you have built your custom frontend, you can now explore more [smart contract use cases](/developer-guides/guide-library) you can build on SettleMint! ## Deploy Your Frontend as a Custom Deployment After building your custom frontend, you can deploy it on the SettleMint platform using the Custom Deployment feature. This allows you to host your frontend application alongside your blockchain components, providing a seamless integration within the SettleMint ecosystem. -For more detailed information on Custom Deployments, refer to the [Custom Deployment documentation](../../using-platform/custom-deployment). +For more detailed information on Custom Deployments, refer to the + [Custom Deployment documentation](/building-with-settlemint/custom-deployment). diff --git a/content/docs/developer-guides/guide-library.mdx b/content/docs/developer-guides/guide-library.mdx new file mode 100644 index 00000000..7382ae23 --- /dev/null +++ b/content/docs/developer-guides/guide-library.mdx @@ -0,0 +1,39 @@ +--- +title: Guide Library +description: A Guide to Connecting a Frontend to Your Blockchain Application +--- + +import { Card, Cards } from 'fumadocs-ui/components/card' + +# Guide Library + +## Application Development + +These guides will help you in your blockchain application development process. + + + + ![connect-frontend](../../img/guides/connect-frontend.png) + + This connects a frontend to your blockchain application using NextJS, wagmi and web3auth. + + + + +## Blockchain Use-Cases + +These guides will show you how to build blockchain applications for popular use-cases. + + + + + ![asset-tokenization](../../img/guides/asset-tokenization.png) + This guide explains how to build an asset tokenization application using SettleMint + + diff --git a/content/docs/developer-guides/meta.json b/content/docs/developer-guides/meta.json new file mode 100644 index 00000000..0085fe83 --- /dev/null +++ b/content/docs/developer-guides/meta.json @@ -0,0 +1,5 @@ +{ + "title": "Developer Guides", + "icon": "Code", + "pages": ["guide-library","utilizing-ai-features","asset-tokenization","attestation-service","user-wallets-and-scp","connect-frontend"] +} diff --git a/docs/developer-guides/user-wallets-and-smart-contract-portal.md b/content/docs/developer-guides/user-wallets-and-scp.md similarity index 85% rename from docs/developer-guides/user-wallets-and-smart-contract-portal.md rename to content/docs/developer-guides/user-wallets-and-scp.md index 3b597535..ca0532b3 100644 --- a/docs/developer-guides/user-wallets-and-smart-contract-portal.md +++ b/content/docs/developer-guides/user-wallets-and-scp.md @@ -3,7 +3,6 @@ title: User Wallets and Smart Contract Portal description: Guide for creating user wallets and sending transactions using the smart contract portal --- -# User Wallets and Smart Contract Portal In this document, we will guide you through the creation of user wallets using the smart contract portal on the SettleMint platform. We will also show how you can send transactions to your contracts and sign them with one of the wallets in the portal. @@ -30,7 +29,7 @@ Keep the address of the smart contract, you will need it to send a transaction i -![Contract deployment](user-wallet-scp-images/image5.png) +![Contract deployment](../../img/user-wallet-scp-images/image5.png) You will also need the contract ABI. You can find it in **out/counter.sol/counter.json** @@ -38,24 +37,24 @@ You will also need the contract ABI. You can find it in **out/counter.sol/counte ### Smart contract portal Deploy the portal on your blockchain network and use the contract that you copied from the IDE. This will create a custom API automatically. -![Smart contract portal](user-wallet-scp-images/image8.png) +![Smart contract portal](../../img/user-wallet-scp-images/image8.png) ## Create a new wallet using the portal To create a new wallet go to the REST tab of your portal and enter full screen mode. You should see this screen -![REST tab](user-wallet-scp-images/image7.png) +![REST tab](../../img/user-wallet-scp-images/image7.png) Next, expand the Wallet section on the left and select `/wallets`. -![Wallet section](user-wallet-scp-images/image1.png) +![Wallet section](../../img/user-wallet-scp-images/image1.png) You can test the request directly from the portal by clicking on **Test Request**. This opens a form in which you can enter the **keyVaultId** of your wallet and the user name of your choice: -![Test request form](user-wallet-scp-images/image2.png) +![Test request form](../../img/user-wallet-scp-images/image2.png) After you've sent the request, you can check your HD ECDSA wallet in the private key section. You should see a new account in the account section: -![Account section](user-wallet-scp-images/image6.png) +![Account section](../../img/user-wallet-scp-images/image6.png) Alternatively, you can also send the request using cURL: @@ -77,8 +76,8 @@ Other wallets methods are currently not supported. ## Send a transaction through the portal You are now going to send a transaction to the counter contract deployed earlier. To do so, expand the **Counter** section on the left and select `/api/counter/{address}/set-number`. -![Counter section](user-wallet-scp-images/image4.png) +![Counter section](../../img/user-wallet-scp-images/image4.png) Click on **Test Request** to open the details. To successfully send a transaction, you must enter the smart contract address in **Path Variables**. Then, in the body, enter the address of one of the user accounts. You can get it from the **Users** tab of the deployment. Set the **gasLimit**, the **gasPrice**, the **input** and click on **Send**. You should get a transactionHash back. -![Transaction details](user-wallet-scp-images/image3.png) +![Transaction details](../../img/user-wallet-scp-images/image3.png) diff --git a/docs/developer-guides/ai-features.md b/content/docs/developer-guides/utilizing-ai-features.mdx similarity index 98% rename from docs/developer-guides/ai-features.md rename to content/docs/developer-guides/utilizing-ai-features.mdx index 0727fd81..652fd133 100644 --- a/docs/developer-guides/ai-features.md +++ b/content/docs/developer-guides/utilizing-ai-features.mdx @@ -59,7 +59,7 @@ You can use this flow as a reference while building your own implementation. Eac - Use this node to generate vector embeddings for the text data using OpenAI's Embedding API. - Configure the OpenAI node to use the appropriate model and input data, such as `text-embedding-ada-002`. -![Create an OpenAI node](../../static/img/developer-guides/openai-node.png) +![Create an OpenAI node](../../img/developer-guides/openai-node.png) ### Step 5: Store Vectors in Hasura with pgvector diff --git a/content/docs/index.mdx b/content/docs/index.mdx new file mode 100644 index 00000000..7de187a7 --- /dev/null +++ b/content/docs/index.mdx @@ -0,0 +1,53 @@ +--- +title: Platform Overview +icon: House +--- + +SettleMint makes it easy for any developer to build, deploy and integrate blockchain applications rapidly. How? By radically simplifying the entire blockchain development process through our Blockchain Transformation platform. This drastically reduces the complexity and the time needed for each step in the blockchain development process. + +## Getting Started + + + + + + + + +## Start Building + +Follow these developer guides to start building on SettleMint + + + + + + diff --git a/docs/launch-platform/managed-cloud-deployment/2_about-organizations.md b/content/docs/launching-the-platform/managed-cloud-deployment/about-organizations.md similarity index 84% rename from docs/launch-platform/managed-cloud-deployment/2_about-organizations.md rename to content/docs/launching-the-platform/managed-cloud-deployment/about-organizations.md index b384b087..571f6623 100644 --- a/docs/launch-platform/managed-cloud-deployment/2_about-organizations.md +++ b/content/docs/launching-the-platform/managed-cloud-deployment/about-organizations.md @@ -3,21 +3,21 @@ title: Managing Organizations description: Guide to managing Organizations --- -# About organizations An organization is the highest level of hierarchy in SettleMint. It's at this level that you: -- Create and manage [blockchain applications](../../using-platform/0_create-an-application.md) +- Create and manage [blockchain applications](/building-with-settlemint/create-an-application) - [Invite team members](#invite-new-organization-members) to collaborate -- Manage [billing](../../account-billing/20_billing.md) +- Manage [billing](/account-billing/billing) You created your first organization when you signed up to use the SettleMint platform, but you can create as many organizations as you want, e.g. for your company, departments, teams, clients, etc. Organizations help you structure your work, manage collaboration, and keep your invoices clearly organized. ## Create an organization -![CreateanOrganization](../../../static/img/about-settlemint/create-org.png) +![CreateanOrganization](../../../img/about-settlemint/create-org.png) + Navigate to the **homepage**, or click the **grid icon** in the upper right corner. @@ -28,13 +28,13 @@ Click **Create new organization**. This opens a form. Follow these steps to crea 2. Enter **billing information**. SettleMint creates a billing account for this organization. You will be billed monthly for the resources you use within this organization. 3. Click **Confirm** to go to the organization dashboard. - From here, you can [create your first application](../../using-platform/0_create-an-application.md) in this organization. The dashboard will show you a summary of your organization's applications, the members in this organization, and a status of the resource costs for the current month. + From here, you can [create your first application](/building-with-settlemint/create-an-application) in this organization. The dashboard will show you a summary of your organization's applications, the members in this organization, and a status of the resource costs for the current month. When you create an organization, you are the owner, and therefore an administrator of the organization. This means you can perform all actions within this organization, with no limitations. ## Invite new organization members -![Add Members](--/../../../../static/img/about-settlemint/add-member.png) +![Add Members](../../../img/about-settlemint/add-member.png) Navigate to the **Members section** of your organization, via the homepage, or via your organization dashboard. @@ -48,7 +48,7 @@ Follow these steps to invite new members to your organization: ## Manage an organization -![Manage Org](../../../static/img/about-settlemint/manage-org.png) +![Manage Org](../../../img/about-settlemint/manage-org.png) Navigate to the **organization dashboard**. diff --git a/docs/launch-platform/managed-cloud-deployment/1_create-an-account.md b/content/docs/launching-the-platform/managed-cloud-deployment/create-an-account.md similarity index 79% rename from docs/launch-platform/managed-cloud-deployment/1_create-an-account.md rename to content/docs/launching-the-platform/managed-cloud-deployment/create-an-account.md index 7ac845a4..c2b06c6d 100644 --- a/docs/launch-platform/managed-cloud-deployment/1_create-an-account.md +++ b/content/docs/launching-the-platform/managed-cloud-deployment/create-an-account.md @@ -3,9 +3,7 @@ title: Creating an account description: Guide to create an account on SettleMint --- -# Create an account - -![SignUp](../../../static/img/about-settlemint/sign-up.png) +![SignUp](../../../img/about-settlemint/sign-up.png) Navigate to [SettleMint](https://console.settlemint.com/) and follow these steps to create an account: @@ -13,11 +11,11 @@ Navigate to [SettleMint](https://console.settlemint.com/) and follow these steps Magic links let you sign up and log in without a password. When you provide your email address, you get a magic link sent to your email. Once you click on the link, you will be logged in. 2. Enter your **first and last name**, and choose a name for your **organization**. - An organization is the highest level of hierarchy in SettleMint. It's at this level that you create and manage blockchain applications, invite team members to collaborate, and manage billing. You can create as many organizations as you want. Choose a name that is easily recognizable in your dashboards (like your company name, department name, team name, etc.). You can change the name of your organization at any time. [More about organizations](2_about-organizations.md) + An organization is the highest level of hierarchy in SettleMint. It's at this level that you create and manage blockchain applications, invite team members to collaborate, and manage billing. You can create as many organizations as you want. Choose a name that is easily recognizable in your dashboards (like your company name, department name, team name, etc.). You can change the name of your organization at any time. [More about organizations](/launching-the-platform/managed-cloud-deployment/about-organizations) 3. Choose a name for your first **blockchain application**. - You may want to choose a name related to what you are building, e.g. track and trace, NFT, data exchange, etc. Names like "my first app" or "test app" are also fine. You can change the name of an application at any time. [More about applications](../../using-platform/0_create-an-application.md) + You may want to choose a name related to what you are building, e.g. track and trace, NFT, data exchange, etc. Names like "my first app" or "test app" are also fine. You can change the name of an application at any time. [More about applications](/building-with-settlemint/create-an-application) 4. You're all set up now, and ready to start building your first application. -Start by [adding a network to your application](../../using-platform/1_add-a-network-to-an-application.md). +Start by [adding a network to your application](/building-with-settlemint/add-a-network-to-an-application). diff --git a/docs/launch-platform/managed-cloud-deployment/3_deployment-plans.md b/content/docs/launching-the-platform/managed-cloud-deployment/deployment-plans.md similarity index 94% rename from docs/launch-platform/managed-cloud-deployment/3_deployment-plans.md rename to content/docs/launching-the-platform/managed-cloud-deployment/deployment-plans.md index 171bcb4f..d3ebc3d4 100644 --- a/docs/launch-platform/managed-cloud-deployment/3_deployment-plans.md +++ b/content/docs/launching-the-platform/managed-cloud-deployment/deployment-plans.md @@ -3,7 +3,6 @@ title: Deployment plans description: A list of the available deployment plans for SettleMint --- -# Deployment plans For each service you deploy (network, node, smart contract set, etc.) you need to select a deployment plan. The deployment plan defines the infrastructure type, the cloud provider and region of your choice, and the resources (memory, vCPU and disk space) that will be allocated to your service. @@ -20,7 +19,7 @@ Not all applications are equal. Some are for experimentation, some are pilots, w We offer you the flexibility to deploy your services in the cloud of your choice, and easily build cross-cloud provider and cross-geographical region networks. All leading cloud providers are supported and we are continously working on adding support for more regions. -[Discover all supported cloud providers and available regions](0_supported-cloud-providers.md) +[Discover all supported cloud providers and available regions](/launching-the-platform/managed-cloud-deployment/supported-cloud-providers) ## Resource pack diff --git a/content/docs/launching-the-platform/managed-cloud-deployment/meta.json b/content/docs/launching-the-platform/managed-cloud-deployment/meta.json new file mode 100644 index 00000000..aecd4c07 --- /dev/null +++ b/content/docs/launching-the-platform/managed-cloud-deployment/meta.json @@ -0,0 +1,6 @@ + +{ + "label": "Managed Cloud Deployment", + "position": 1, + "pages": ["supported-cloud-providers","create-an-account", "about-organizations", "deployment-plans","quickstart"] +} \ No newline at end of file diff --git a/docs/launch-platform/managed-cloud-deployment/4_quickstart.md b/content/docs/launching-the-platform/managed-cloud-deployment/quickstart.mdx similarity index 90% rename from docs/launch-platform/managed-cloud-deployment/4_quickstart.md rename to content/docs/launching-the-platform/managed-cloud-deployment/quickstart.mdx index c25b4def..346a86e4 100644 --- a/docs/launch-platform/managed-cloud-deployment/4_quickstart.md +++ b/content/docs/launching-the-platform/managed-cloud-deployment/quickstart.mdx @@ -3,11 +3,9 @@ title: Getting Started - Hello World description: A step-by-step guide on building your first application on SettleMint --- -# Getting Started - Hello World - ##### This guide will help you explore some of the core building blocks of working with SettleMint even if this is your first time working with a Blockchain -In this guide you will learn how to [create a blockchain network](../../using-platform/1_add-a-network-to-an-application.md), [deploy a node](../../using-platform/4_add-a-node-to-a-network.md), write a [smart contract](../../using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/1_smart-contract-sets.md) and [create an integration](../../using-platform/8_integration-studio.md). +In this guide you will learn how to [create a blockchain network](/building-with-settlemint/add-a-network-to-an-application), [deploy a node](/building-with-settlemint/add-a-node-to-a-network), write a [smart contract](/building-with-settlemint/dev-tools/code-studio/smart-contract-sets/add-smart-contract-set) and [create an integration](/building-with-settlemint/integration-studio). Below is both a video and written guide for you to build along to: @@ -21,7 +19,7 @@ Organizations can create blockchain applications, monitor service usage, and man When registering an account, you have created an organization. If you already have an account, click the `+ Create an Organization` option on the main dashboard after logging in. -![Create An Organization](../../../static/img/quickstart/createorg.png) +![Create An Organization](../../../img/quickstart/createorg.png) ## Create A Blockchain Application @@ -33,11 +31,11 @@ If you are currently on a trial of SettleMint, you will also see your remaining Let's start creating our application by clicking on the `Let's create one!` link: -![Create An App](<../../../static/img/quickstart/createanapp2 1.png>) +![Create An App](../../../img/quickstart/createanapp2-1.png) From here, you will now need to provide a name of your blockchain application. To keep it simple, let's name this application `HelloWorld`: -![Hello World](../../../static/img/quickstart/HelloWorld.png) +![Hello World](../../../img/quickstart/HelloWorld.png) ### Choosing a Network @@ -47,7 +45,7 @@ We have options covering both permissioned and public networks. To understand th For this guide, we will select to deploy a `Hyperledger Besu` network: -![Hyperledger](../../../static/img/quickstart/hyperledgerbesu.png) +![Hyperledger](../../../img/quickstart/hyperledgerbesu.png) ### Configuring Network Details @@ -65,7 +63,7 @@ SettleMint provides various hosting choices, including both cloud-hosted and on- We will use the below settings: -![Deployment Settings](../../../static/img/quickstart/deploymentplan.png) +![Deployment Settings](../../../img/quickstart/deploymentplan.png) Deployment Options: @@ -91,7 +89,7 @@ If you are on the trial version, you will see your remaining credits that will c Click confirm and let's get deploying! -![Network Deploy](../../../static/img/quickstart/networkingdeploying.png) +![Network Deploy](../../../img/quickstart/networkingdeploying.png) You can now see the status of the deployment of the network and node. Deployment times range depending on the traffic, region, and resources. @@ -109,7 +107,7 @@ It also comes with smart contract templates that can help you get started quicke Click on `Smart contract sets` on the left navigation and then `Add a smart contract set` to start the deployment configuration: -![Add Smart Contract Set](../../../static/img/quickstart/addsmartcontractset.png) +![Add Smart Contract Set](../../../img/quickstart/addsmartcontractset.png) ### Selecting the Node @@ -125,7 +123,7 @@ This is a list of popular standardized smart contracts like ERC-20 for launching Since we are going to be creating a `Hello World` smart contract, you can choose the `Empty` option: -![Choose a Template](../../../static/img/quickstart/choosetemplate.png) +![Choose a Template](../../../img/quickstart/choosetemplate.png) ### Choosing a Deployment Plan @@ -149,7 +147,7 @@ Now it is time to write some smart contract code! It is ok if you have not worke In the IDE, you need to locate and rename the `Example.sol` file that comes included in your smart contract set. You can do this by following these steps: -![Rename Contract](../../../static/img/quickstart/renamecontract.png) +![Rename Contract](../../../img/quickstart/renamecontract.png) 1. On the left File Explorer panel, find the `contracts` folder and click the arrow to expand. 2. Find the `Example.sol` file in the list @@ -197,12 +195,12 @@ Allowing blockchain applications to integrate with existing applications and bus On SettleMint you can deploy different tools to make integration more effective. In this guide, we will use the `Integration Studio`. You can deploy this tool by following the steps below: -![Integration Studio](../../../static/img/quickstart/integrationstudiosetup.png) +![Integration Studio](../../../img/quickstart/integrationstudiosetup.png) After you have the Integration Studio has been deployed, you can now go to the interface to start building the integration using the following steps: -![Integration Deployed](../../../static/img/quickstart/intergrationstudio-deployed.png) -![Interface](../../../static/img/quickstart/intergrationstudio-interface.png) +![Integration Deployed](../../../img/quickstart/intergrationstudio-deployed.png) +![Interface](../../../img/quickstart/intergrationstudio-interface.png) 1. Click on the name of the Integration Studio 2. Select the `Interface` tab @@ -211,11 +209,11 @@ After you have the Integration Studio has been deployed, you can now go to the i ### Importing the Template The Integration Studio allows you to build a visual version of an integration to your blockchain application. - + In this guide, we have provided a contract template that will allow you to start interacting with the Hello World smart contract. To import the JSON file listed below, click on the top right "hamburger" icon and select the `Import` option: -![Import Studio](../../../static/img/quickstart/integrationstudioimport.png) +![Import Studio](../../../img/quickstart/integrationstudioimport.png) Copy the code below and paste it into the import window. As the code is in JSON format, make sure you have copied the complete code sample or you will receive an error. @@ -290,7 +288,7 @@ Copy the code below and paste it into the import window. As the code is in JSON After importing the code, this will create a new tab on the interface called `Contract Editor`. You should also see the configuration like in the below image: -![Interface Template](../../../static/img/quickstart/integrationstudiointerface.png) +![Interface Template](../../../img/quickstart/integrationstudiointerface.png) The JSON code we pasted below is set up for the Hello World contract. We still need to set up the specific information contract you are working with. This is done by clicking on the `Set Information` block. @@ -299,13 +297,13 @@ The JSON code we pasted below is set up for the Hello World contract. We still n After selecting the `Set Information` option, you will now see the configuration options for this block. Click on the `On Message` tab if it is not open already. Here we will start to paste important information about your smart contract and blockchain network. -![Setting the Information ](../../../static/img/quickstart/settinginformation.png) +![Setting the Information ](../../../img/quickstart/settinginformation.png) #### 1. Creating a Private Key You will need to create a private key for the Blockchain node. This allows you to sign transactions on the blockchain network. You can do this by following the steps below: -![Private Key](../../../static/img/quickstart/privatekey.png) +![Private Key](../../../img/quickstart/privatekey.png) 1. Select the `Private keys` from the left menu 2. Select the `Create a private key` button @@ -326,12 +324,12 @@ Now that you have deployed the private key, you can copy this key and paste it i This is done by clicking the name of the private key. There select the `Details` tab and the copy option by the `Private Key` field like below: -![Key Created](../../../static/img/quickstart/privatekeycreated.png) -![Alt text](../../../static/img/quickstart/copyprivatekey.png) +![Key Created](../../../img/quickstart/privatekeycreated.png) +![Alt text](../../../img/quickstart/copyprivatekey.png) With the private key copied, you can now go back to the Integration Studio and paste this key into the first line after `const privateKey =` inside the ' ''. The private key should begin with `0x`. -![Paste Private Key](../../../static/img/quickstart/pasteprivatekey.png) +![Paste Private Key](../../../img/quickstart/pasteprivatekey.png) #### 2. Get the Contract Address @@ -343,7 +341,7 @@ To get the contract address you need to deploy the contract. This is done in the SettleMint uses Hardhat scripts to deploy smart contracts. To deploy the Hello World smart contract, follow the steps below: -![Deploy Changes](../../../static/img/quickstart/deploychanges.png) +![Deploy Changes](../../../img/quickstart/deploychanges.png) 1. Go to the `deploy` folder in the file explorer on the left 2. Open the `00_deploy_example.ts` file @@ -378,25 +376,25 @@ After replacing the code with the code above, it is now time to compile. This wi To compile the Hello World contract, follow the steps below: -![Compile and Deploy](../../../static/img/quickstart/complieanddeploy.png) +![Compile and Deploy](../../../img/quickstart/complieanddeploy.png) 1. Click on the Clipboard icon on the left menu 2. Double click on `Compile`. This should open the terminal at the bottom of the screen. After the compiling is complete, the output should look similar to the below: -![Terminal Success](../../../static/img/quickstart/terminalsuccess.png) +![Terminal Success](../../../img/quickstart/terminalsuccess.png) 3. After successfully compiling the contract, double click on the `smartcontract:deploy`option in the Tasks Menu. This will run the deploy script we created earlier and deploy the contract to your blockchain network. Once the contract is deployed, the terminal will show its `contractAddress`. Copy this address and head back over to the Integration Studio. -![contractAddress](../../../static/img/quickstart/contractAddress.png) +![contractAddress](../../../img/quickstart/contractAddress.png) Once the contract is deployed, the terminal will show its `contractAddress`. Copy this address and head back over to the Integration Studio. Paste the `contractAddress` into the next line in the `Set Information` window where you pasted the `privateKey`earlier. -![contractAddress](../../../static/img/quickstart/contractAddressPasted.png) +![contractAddress](../../../img/quickstart/contractAddressPasted.png) We are almost done! The last thing we need to add is the JSON RPC that will allow you to connect to our blockchain node. @@ -406,7 +404,7 @@ First, you will need to get the JSON RPC URL. This is the URL to make the connec ### Getting the JSON-RPC URL -![JSON RPC URL](../../../static/img/quickstart/copyjsonrpc.png) +![JSON RPC URL](../../../img/quickstart/copyjsonrpc.png) 1. Go to the Blockchain nodes menu on the main dashboard 2. Go to the `Connect` tab @@ -414,7 +412,7 @@ First, you will need to get the JSON RPC URL. This is the URL to make the connec Now that you have the JSON-RPC URL, it is time to add this to the `Set Information` window of the Integration Studio: -![JSON Pasted](../../../static/img/quickstart/jsonrpcpasted.png) +![JSON Pasted](../../../img/quickstart/jsonrpcpasted.png) Paste the URL into the next line titled `jsonRPC` like the above image. @@ -422,7 +420,7 @@ Paste the URL into the next line titled `jsonRPC` like the above image. Below are the steps to generate an API key: 1. On the main dashboard, click on the `Profile` icon in the top right: -![Create API Key](../../../static/img/quickstart/createAPIKey1.png) +![Create API Key](../../../img/quickstart/createAPIKey1.png) 1. On the main dashboard, click on the `Profile` icon in the top right 2. Select `API Keys`from the menu options @@ -434,7 +432,7 @@ Let's name the API key, `helloworld-key` and give it `No expiration` so you know Next, you will need to configure what access this key has. For this guide, you can select all the options like the image below. If you have multiple apps, you can control the access of the API key to specific apps and resources. -![keys selected](../../../static/img/quickstart/allkeysettingsselected.png) +![keys selected](../../../img/quickstart/allkeysettingsselected.png) After clicking the `Confirm` button, you will now be shown the new API key that has been created. Click on the copy icon to copy the API key. This key will only be shown to you once. @@ -444,7 +442,7 @@ Go back to the Integration Studio and the `Set Information` window. You can now Your `Set Information`window should look like the below image: -![PasteAPI](../../../static/img/quickstart/pastedAPIKey.png) +![PasteAPI](../../../img/quickstart/pastedAPIKey.png) #### A Note about ABI @@ -458,7 +456,7 @@ Now that we have added all the required information for our integration, it is n Close the `Set Information` window and click the `Deploy` button on the top right. -![Deploy](../../../static/img/quickstart/deploy.png) +![Deploy](../../../img/quickstart/deploy.png) You will now receive a notification that the integration has been deployed: @@ -477,14 +475,14 @@ In your browser you will see two options `Read-only` and `Write`functions: - `Write Functions`: These functions can change the value of the data -![Hello World Editor](../../../static/img/quickstart/helloworldcontracteditor.png) +![Hello World Editor](../../..//img/quickstart/helloworldcontracteditor.png) By clicking the `Call` Button under `greetingMessage` this will call the contract and read the current value of the `greetingMessage` The result will be `Hello world!` as this was the initial value set we set in the `constructor` of the smart contract. To make it interesting, you can also change this value to whatever message you want! -![WriteFunction](../../../static/img/quickstart/writefunctioncomplete.png) +![WriteFunction](../../../img/quickstart/writefunctioncomplete.png) 1. Write a new message in the text field of `setGrettings` 2. Click the `Call` button @@ -492,7 +490,7 @@ To make it interesting, you can also change this value to whatever message you w Now to confirm that the `greetingMessage` has changed, click the `Call` button again: -![Call Contract](../../../static/img/quickstart/callcontractsecond.png) +![Call Contract](../../../img/quickstart/callcontractsecond.png) ## Wrapping Up diff --git a/content/docs/launching-the-platform/managed-cloud-deployment/supported-cloud-providers.mdx b/content/docs/launching-the-platform/managed-cloud-deployment/supported-cloud-providers.mdx new file mode 100644 index 00000000..4cf8bac7 --- /dev/null +++ b/content/docs/launching-the-platform/managed-cloud-deployment/supported-cloud-providers.mdx @@ -0,0 +1,130 @@ +--- +title: Supported Cloud Providers +description: Overview of cloud providers supported by the SettleMint platform +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' + +## Overview + +When launching a blockchain development project, you need to decide where your project will be stored. SettleMint offers you the flexibility to deploy in the cloud of your choice, and easily build cross-cloud provider and cross-geographical region networks. + +Every deployment uses Kubernetes as an orchestration layer for all the different services. Kubernetes is a widely used open-source system for automating the deployment, scaling, and management of containerized applications. By leveraging managed Kubernetes services by cloud providers, our platform can offer affordable, stable, and scalable environments to run the blockchain nodes and additional services. + +
+
+ ### Features + - Cross-cloud deployment support + - Regional flexibility + - Managed Kubernetes services + - Enterprise-grade infrastructure +
+ +
+ ### Benefits + + - High availability + - Scalable infrastructure + - Cost optimization + - Global reach +
+
+ +## Cloud Provider Options + + + + ### Available Regions + + #### Ready to Deploy + - Frankfurt + - Mumbai + - Singapore + + #### Contact Required + - Ohio [Contact us](mailto:support@settlemint.com) + - Bahrain [Contact us](mailto:support@settlemint.com) + - Osaka [Contact us](mailto:support@settlemint.com) + + + **AWS Benefits** + - Global infrastructure + - Enterprise-grade security + - Extensive service integration + - Flexible pricing options + + + + + ### Available Regions + + #### Ready to Deploy + - Brussels + - Mumbai + - Singapore + - Tokyo + + #### Contact Required + - Oregon [Contact us](mailto:support@settlemint.com) + + + **GCP Benefits** + - Advanced networking + - Strong container support + - Integrated DevOps tools + - AI/ML capabilities + + + + + ### Available Regions + + #### Ready to Deploy + - Dubai + - Tokyo + + #### Contact Required + - Amsterdam [Contact us](mailto:support@settlemint.com) + - Singapore [Contact us](mailto:support@settlemint.com) + - California [Contact us](mailto:support@settlemint.com) + + + **Azure Benefits** + - Enterprise integration + - Hybrid cloud support + - Comprehensive compliance + - Advanced security features + + + + +## Infrastructure Details + +Every deployment uses Kubernetes as an orchestration layer for all services, providing: + +- Automated deployment +- Scalable operations +- Container management +- Service orchestration +- High availability +- Resource optimization + +## Getting Started + +1. Choose your preferred cloud provider +2. Select an available region +3. Contact us for regions marked with "Contact Required" +4. Begin your deployment process + + +### Looking for More Options? + +We are continuously working on adding support for more cloud providers and regions. + +- Need a specific region? +- Interested in on-premise setup? +- Want to learn about 'Bring Your Own Cloud'? + +[Contact our team](mailto:support@settlemint.com) to discuss your requirements. + diff --git a/content/docs/launching-the-platform/meta.json b/content/docs/launching-the-platform/meta.json new file mode 100644 index 00000000..59376f31 --- /dev/null +++ b/content/docs/launching-the-platform/meta.json @@ -0,0 +1,5 @@ +{ + "title": "Launching the Platform", + "icon": "Rocket", + "pages": ["managed-cloud-deployment","self-hosted"] +} diff --git a/content/docs/launching-the-platform/self-hosted/infrastructure-requirements.mdx b/content/docs/launching-the-platform/self-hosted/infrastructure-requirements.mdx new file mode 100644 index 00000000..8f38419f --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/infrastructure-requirements.mdx @@ -0,0 +1,327 @@ +--- +title: Infrastructure Requirements +description: Infrastructure requirements for self-hosting the platform +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Card } from 'fumadocs-ui/components/card' + + +The requirements listed below are for the core platform components only. Additional resources will be needed for prerequisites and services you plan to deploy. + + +## Compute Resources + + + + - **CPU**: 4 cores + - **RAM**: 16GB + - **Storage**: 100GB SSD + + + Minimum requirements are suitable for testing and development environments only. + + + + + - **CPU**: 8+ cores + - **RAM**: 32GB + - **Storage**: 250GB+ SSD + + + These specifications provide headroom for growth and better performance. + + + + +## Network Requirements + +The platform requires specific network configurations to ensure secure and reliable communication between components: + +
+
+ ### Connectivity + + - **Internet Access**: Required for pulling container images and updates + - **Load Balancer**: For distributing traffic across nodes + - **Ingress Controller**: For routing external traffic + - **SSL/TLS**: Valid certificates for secure communication +
+ +
+ ### Required Ports + + - **80/443**: HTTP/HTTPS traffic + - **6443**: Kubernetes API server + - **30000-32767**: NodePort services range + - **10250**: Kubelet API + - **179**: Calico BGP (if using Calico) +
+
+ + +**Network Security** +We recommend implementing network policies and security groups to control traffic flow between components. + + +## Storage Requirements + +Proper storage configuration is crucial for platform stability and performance. Consider the following requirements: + +
+
+ ### Performance Requirements + + - **Type**: SSD storage required for all components + - **IOPS**: Minimum 3000 IOPS for database volumes + - **Latency**: < 10ms average latency + - **Throughput**: 125MB/s minimum for database volumes +
+ +
+ ### Capacity Planning + + - **Initial Allocation**: Start with recommended sizes + - **Growth Buffer**: Plan for 30% annual growth + - **Backup Storage**: Equal to primary storage + - **Monitoring**: Implement storage usage alerts +
+
+ + +### Storage Best Practices + +- Use separate volumes for different components +- Implement regular backup procedures +- Monitor storage performance metrics +- Set up alerts for capacity thresholds + + +## Prerequisites Resource Requirements + + +When hosting prerequisites on the same infrastructure, these requirements must be added to the base platform specifications. Each component can be hosted separately or together depending on your architecture. + + + + + ### PostgreSQL + +
+
+ #### Resource Requirements + + - **CPU**: 2 cores + - **RAM**: 4GB + - **Storage**: 50GB SSD +
+ +
+ #### Recommendations + + - High IOPS SSD storage + - Regular backups + - Consider high availability setup +
+
+ + ### Redis + +
+
+ #### Resource Requirements + + - **CPU**: 2 cores + - **RAM**: 4GB + - **Storage**: 20GB SSD +
+ +
+ #### Recommendations + + - In-memory performance + - Persistence configuration + - Consider clustering for HA +
+
+
+ + + ### MinIO + +
+
+ #### Resource Requirements + + - **CPU**: 2 cores + - **RAM**: 8GB + - **Storage**: 100GB+ SSD +
+ +
+ #### Recommendations + + - Scalable storage setup + - Regular capacity monitoring + - Backup strategy required +
+
+
+ + + ### HashiCorp Vault + +
+
+ #### Resource Requirements + + - **CPU**: 2 cores + - **RAM**: 4GB + - **Storage**: 20GB SSD +
+ +
+ #### Recommendations + + - High availability setup + - Auto-unsealing configuration + - Regular key rotation +
+
+
+
+ + +### Production Considerations + +These are baseline requirements. For production environments, consider: + +- High availability configurations may require 2-3x these resources +- Monitoring and logging overhead +- Backup storage requirements +- Scaling headroom for growth + + +### Total Resource Summary + +For a production setup hosting both platform and prerequisites: + +
+
+ ### CPU + + - Platform: 8 cores + - Prerequisites: 8 cores + - **Total: 16+ cores** +
+ +
+ ### RAM + + - Platform: 32GB + - Prerequisites: 20GB + - **Total: 52GB+** +
+ +
+ ### Storage + + - Platform: 250GB + - Prerequisites: 190GB + - **Total: 440GB+** +
+
+ +## Service Requirements + +The platform allows you to deploy services in two ways: + +1. On the same cluster as the platform +2. On separate target clusters + +
+
+ ### Same Cluster Deployment + + If you plan to deploy services on the same cluster as the platform: + + - Add service requirements to the platform requirements + - Include them in capacity planning + - Account for resource overhead + - Plan for scaling headroom +
+ +
+ ### Target Cluster Deployment + + Using separate target clusters for services: + + - Keeps platform and service workloads isolated + - Requires separate infrastructure planning + - Can be optimized for specific service needs + - Enables geographic distribution +
+
+ + +### Infrastructure Planning Strategy +We recommend: + +1. List all services you plan to deploy +2. Decide on deployment strategy (same cluster or target clusters) +3. For same cluster: Add service requirements to platform requirements +4. For target clusters: Plan separate infrastructure +5. Include 30% buffer for growth and peak loads + + + +### Example Calculation +Let's calculate requirements for a setup with: + +- 2 Polygon nodes (Mainnet & Mumbai) +- 1 Hyperledger Besu node +- 1 Smart Contract Portal +- 1 Integration Studio +- 1 Blocksout Explorer + +**Service Requirements (Medium size, Dedicated mode):** + +- Polygon Nodes (2x): + - CPU: 2 × 1.5 cores = 3 cores + - RAM: 2 × 1.0 GB = 2 GB + - Storage: Minimal + +- Besu Node (1x): + - CPU: 1.5 cores + - RAM: 2.5 GB + - Storage: 100 GB + +- Smart Contract Portal: + - CPU: 2.0 cores + - RAM: 2.0 GB + - Storage: 10 GB + +- Integration Studio: + - CPU: 2.0 cores + - RAM: 4.0 GB + - Storage: 10 GB + +- Blocksout Explorer: + - CPU: 2.0 cores + - RAM: 4.0 GB + - Storage: 50 GB + +**Same Cluster Approach:** +- Total CPU: 27+ cores (16 platform/prereqs + 11 services) +- Total RAM: 67GB+ (52GB platform/prereqs + 15GB services) +- Total Storage: 620GB+ (440GB platform/prereqs + 180GB services) + +**Target Cluster Approach:** +- Platform Cluster: 16+ cores, 52GB+ RAM, 440GB+ storage +- Service Cluster: 11+ cores, 15GB+ RAM, 180GB+ storage + + + +For detailed specifications of all available services and their resource requirements, please refer to our [Service Requirements Documentation](/reference/service-requirements). + diff --git a/docs/launch-platform/self-hosted/installation-guide/introduction.md b/content/docs/launching-the-platform/self-hosted/introduction.mdx similarity index 54% rename from docs/launch-platform/self-hosted/installation-guide/introduction.md rename to content/docs/launching-the-platform/self-hosted/introduction.mdx index 4dee14b5..37dccced 100644 --- a/docs/launch-platform/self-hosted/installation-guide/introduction.md +++ b/content/docs/launching-the-platform/self-hosted/introduction.mdx @@ -1,93 +1,95 @@ --- title: Introduction -sidebar_position: 1 description: Getting started with the SettleMint Platform self-hosted installation --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' + + # Self-Hosted Installation Guide Welcome to the SettleMint Platform self-hosted installation guide. This comprehensive guide will walk you through deploying the SettleMint Platform in your own infrastructure. -:::tip Installation Time + +**Installation Time** Complete installation typically takes 2-4 hours, depending on your infrastructure setup and familiarity with the components. -::: + ## Guide Structure -This installation guide is organized into three main sections, designed to be followed in order: - - - - -Start here to ensure your infrastructure meets all necessary specifications before proceeding. This section covers: - -- Kubernetes cluster requirements -- Network and storage specifications -- Access and security requirements - -[View Requirements Guide](/documentation/docs/launch-platform/self-hosted/installation-guide/infrastructure-requirements) +This installation guide is organized into three main sections. Select each tab below to learn more: - - + + + ### Requirements Section + + Start here to ensure your infrastructure meets all necessary specifications before proceeding. This section covers: -After confirming requirements, set up the required supporting services. This section provides: + - Kubernetes cluster requirements + - Network and storage specifications + - Access and security requirements -- Step-by-step setup guides -- Multiple deployment options -- Configuration requirements -- Information collection checklists + 👉 [View Requirements Guide](/launching-the-platform/self-hosted/infrastructure-requirements) + -[View Prerequisites Guide](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/overview) + + ### Prerequisites Section + + After confirming requirements, set up the required supporting services. This section provides: - - + - Step-by-step setup guides + - Multiple deployment options + - Configuration requirements + - Information collection checklists -Finally, deploy the SettleMint Platform using Helm: + 👉 [View Prerequisites Guide](/launching-the-platform/self-hosted/installation-guide/prerequisites/overview) + -- Standard Kubernetes deployment -- Flexible configuration options -- Production-ready setup + + ### Installation Section + + Finally, deploy the SettleMint Platform using Helm: -[View Installation Guide](/documentation/docs/launch-platform/self-hosted/installation-guide/platform-installation) + - Standard Kubernetes deployment + - Flexible configuration options + - Production-ready setup - + 👉 [View Installation Guide](/docs/launching-the-platform/self-hosted/installation-guide/platform-installation) + -:::tip Using This Guide + +**Using This Guide** We recommend: 1. Read through each section before starting 2. Complete all requirements and prerequisites 3. Collect required information as you progress 4. Follow the guides in order - ::: + ## Before You Begin -
-
+
+
+ ### Required Access -### Required Access + - Administrative access to your infrastructure + - Ability to create/modify DNS records + - Permission to deploy Kubernetes resources + - Access to cloud resources (if applicable) +
-- Administrative access to your infrastructure -- Ability to create/modify DNS records -- Permission to deploy Kubernetes resources -- Access to cloud resources (if applicable) +
+ ### Technical Prerequisites -
-
- -### Technical Prerequisites - -- Kubernetes cluster (1.20+) -- `kubectl` CLI tool -- `helm` (required for installation) -- Basic understanding of container orchestration - -
+ - Kubernetes cluster (1.20+) + - `kubectl` CLI tool + - `helm` (required for installation) + - Basic understanding of container orchestration +
## Partner Support @@ -125,7 +127,8 @@ Throughout the installation process, you'll need to collect configuration detail Here's what an Information Collection Box looks like in the prerequisite guides: -:::info Required Values Example + +**Required Values Example** This is a sample of what you'll see in the guides. For Redis setup, you would collect values like: - Endpoint: redis-master.default.svc.cluster.local @@ -133,7 +136,7 @@ This is a sample of what you'll see in the guides. For Redis setup, you would co - Port: 6379 Note: This is just an example. Actual values will be collected during the prerequisite setup. -::: + ## Need Help? @@ -150,6 +153,7 @@ Note: This is just an example. Actual values will be collected during the prereq - Schedule technical consultation - Contact your account manager -:::tip Next Step -Start by reviewing the [Infrastructure Requirements](/documentation/docs/launch-platform/self-hosted/installation-guide/infrastructure-requirements) to ensure your environment meets all necessary specifications. -::: + +**Next Step** +Start by reviewing the [Infrastructure Requirements](/launching-the-platform/self-hosted/infrastructure-requirements) to ensure your environment meets all necessary specifications. + diff --git a/content/docs/launching-the-platform/self-hosted/meta.json b/content/docs/launching-the-platform/self-hosted/meta.json new file mode 100644 index 00000000..ac9f0dce --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/meta.json @@ -0,0 +1,6 @@ + +{ + "label": "Self-hosted", + "position": 1, + "pages": ["introduction","infrastructure-requirements","platform-installation","prerequisites"] +} \ No newline at end of file diff --git a/docs/launch-platform/self-hosted/installation-guide/platform-installation.md b/content/docs/launching-the-platform/self-hosted/platform-installation.md similarity index 99% rename from docs/launch-platform/self-hosted/installation-guide/platform-installation.md rename to content/docs/launching-the-platform/self-hosted/platform-installation.md index e1b147ec..568a8fa1 100644 --- a/docs/launch-platform/self-hosted/installation-guide/platform-installation.md +++ b/content/docs/launching-the-platform/self-hosted/platform-installation.md @@ -3,8 +3,6 @@ title: Platform Installation sidebar_position: 3 --- -# Platform Installation Guide - ## Overview This guide walks you through installing the SettleMint Platform using Helm, providing a command-line based installation method with full control over the deployment process. @@ -13,7 +11,7 @@ This guide walks you through installing the SettleMint Platform using Helm, prov Before starting the installation, ensure you have: -- Completed all [prerequisite services](prerequisites/overview.md) setup +- Completed all [prerequisite services](prerequisites/overview) setup - Collected all required information from the prerequisite guides - Met all infrastructure requirements - Helm 3.x installed diff --git a/content/docs/launching-the-platform/self-hosted/platform-installation.mdx b/content/docs/launching-the-platform/self-hosted/platform-installation.mdx new file mode 100644 index 00000000..eb052c47 --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/platform-installation.mdx @@ -0,0 +1,712 @@ +--- +title: Platform Installation +sidebar_position: 3 +--- + +## Overview + +This guide walks you through installing the SettleMint Platform using Helm, providing a command-line based installation method with full control over the deployment process. + +## Prerequisites + +Before starting the installation, ensure you have: + +- Completed all [prerequisite services](prerequisites/overview) setup +- Collected all required information from the prerequisite guides +- Met all infrastructure requirements +- Helm 3.x installed +- kubectl access to your cluster +- Admin permissions + +## Installation Steps + +### 1. Sign in to the SettleMint Helm Registry + +```bash +helm registry login harbor.settlemint.com --username --password +``` + +Replace `` and `` with your provided credentials. + +### 2. Review Configuration Options + +View all available configuration options: + +```bash +helm show values oci://registry.settlemint.com/settlemint-platform/settlemint --version 7.0.0 +``` + +### 3. Install the Platform + +Create a values file (values.yaml) with your configuration: + +```yaml +ingress: + enabled: true + className: "nginx" + host: '' + annotations: + nginx.ingress.kubernetes.io/use-regex: "true" + nginx.ingress.kubernetes.io/proxy-ssl-server-name: "on" + nginx.ingress.kubernetes.io/proxy-body-size: "500m" + nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" + nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" + nginx.ingress.kubernetes.io/ssl-redirect: "false" + cert-manager.io/cluster-issuer: "letsencrypt" # If using cert-manager + tls: + - secretName: 'platform-tls' + hosts: + - '' + - '*.' + +redis: + host: '' + port: '' + password: '' + tls: true + +postgresql: + host: '' + port: '' + user: '' + password: '' + database: '' + sslMode: require + +auth: + jwtSigningKey: '' + providers: + google: + enabled: true + clientID: '' + clientSecret: '' + microsoftEntraId: + enabled: true + clientID: '' + clientSecret: '' + tenantId: '' + +vault: + address: '' + roleId: '' + secretId: '' + namespace: 'vault' + +features: + observability: + metrics: + enabled: true + apiUrl: '' + logs: + enabled: true + apiUrl: '' + deploymentEngine: + platform: + domain: + hostname: '' + clusterManager: + domain: + hostname: '' + state: + connectionUrl: 's3://?region=' + secretsProvider: 'passphrase' + credentials: + encryptionKey: '' + aws: + accessKeyId: '' + secretAccessKey: '' + region: '' + # azure: + # # -- Azure storage account name + # storageAccount: '' + # # -- Azure storage account key + # storageKey: '' + targets: + - id: '' + name: '' + icon: '' + clusters: + - id: '' + name: '' + icon: '' + location: + lat: '' + lon: '' + connection: + sameCluster: + enabled: true + namespace: + single: + name: '' + domains: + service: + tls: true + hostname: '' + storage: + storageClass: '' + ingress: + ingressClass: '' + capabilities: + mixedLoadBalancers: false + +app: + replicaCount: '' +api: + replicaCount: '' + existingSecret: '' +job: + resources: + requests: + cpu: '' + memory: '' + autoscaling: + enabled: true +deployWorker: + resources: + requests: + cpu: '' + memory: '' + autoscaling: + enabled: true +clusterManager: + replicaCount: '' +docs: + replicaCount: '' + +imagePullCredentials: + registries: + harbor: + enabled: true + registry: "harbor.settlemint.com" + username: '' + password: '' + email: '' + +support: + kubernetes-replicator: + enabled: true + +features: + billing: + enabled: false + alerting: + slack: + enabled: false + webhookUrl: '' + stripe: + apiSecret: '' + webhookSecret: '' + webhookUrl: '' + apiLiveMode: false + taxRateId: '' + publishableKey: '' + autoDelete: + enabled: false + emailUsageExcel: + enabled: true + + privateKeys: + hsm: + awsKms: + enabled: false + txsigner: + image: + registry: ghcr.io + repository: settlemint/btp-signer + tag: '7.6.10' + + networks: + besu: + image: + registry: docker.io + repository: hyperledger/besu + tag: '24.12.2' + quorum: + image: + registry: docker.io + repository: quorumengineering/quorum + tag: '24.4.1' + geth: + image: + registry: docker.io + repository: ethereum/client-go + tag: 'alltools-v1.13.4' + fabric: + ca: + image: + registry: docker.io + repository: hyperledger/fabric-ca + tag: '1.5.13' + orderer: + image: + registry: docker.io + repository: hyperledger/fabric-orderer + tag: '2.5.10' + tools: + image: + registry: docker.io + repository: hyperledger/fabric-tools + tag: '2.5.10' + peer: + image: + registry: docker.io + repository: hyperledger/fabric-peer + tag: '2.5.10' + couchdb: + image: + registry: docker.io + repository: apache/couchdb + tag: '3.4.2' + dind: + image: + registry: docker.io + repository: library/docker + tag: '24.0.7-alpine3.18' + mainnets: + enabled: true + ethereumMetricsExporter: + image: + registry: docker.io + repository: ethpandaops/ethereum-metrics-exporter + tag: '0.26.0' + + smartContractSets: + etherscan: + apiKeys: + etherscan: "" + polyscan: "" + zkevmpolyscan: "" + bscscan: "" + arbiscan: "" + optimistic: "" + ide: + image: + registry: ghcr.io + repository: settlemint/btp-ide + tag: 'v7.6.5' + sets: + - id: starterkit-asset-tokenization + name: Asset Tokenization + image: + registry: ghcr.io + repository: settlemint/starterkit-asset-tokenization + tag: '0.0.11' + # ... (other sets can be added as needed) + + customDomains: + enabled: false + outerIngressClass: "nginx" + email: "" + + crons: + cleanup: "0 */10 * * * *" +``` + + +Replace all placeholder values with your actual configuration +- The license section should be configured with your provided license file +- Image tags should be verified for the latest stable versions +- Remove any unused features to keep the configuration clean + + +
+Click to see a complete example values file + +```yaml +ingress: + enabled: true + className: "nginx" + host: 'example.company.com' + annotations: + nginx.ingress.kubernetes.io/use-regex: "true" + nginx.ingress.kubernetes.io/proxy-ssl-server-name: "on" + nginx.ingress.kubernetes.io/proxy-body-size: "500m" + nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" + nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" + nginx.ingress.kubernetes.io/ssl-redirect: "false" + cert-manager.io/cluster-issuer: "letsencrypt" + tls: + - secretName: 'example-tls' + hosts: + - 'example.company.com' + - '*.example.company.com' + +redis: + host: 'redis.example.local' + port: '6379' + password: 'abc123password' + tls: true + +postgresql: + host: 'postgresql.example.local' + port: '5432' + user: 'db_user' + password: 'xyz789password' + database: 'platform_db' + sslMode: require + +auth: + jwtSigningKey: 'abc123jwt456xyz789signing000key111example' + providers: + google: + enabled: true + clientID: 'example-123456789.apps.googleusercontent.com' + clientSecret: 'abcdef-example-google-secret' + +vault: + address: 'http://vault.example.local:8200' + roleId: 'abc123-role-id' + secretId: 'xyz789-secret-id' + namespace: 'vault' + +features: + observability: + metrics: + enabled: true + apiUrl: 'http://metrics.example.local/api/v1' + logs: + enabled: true + apiUrl: 'http://logs.example.local/api/v1' + deploymentEngine: + platform: + domain: + hostname: 'example.company.com' + state: + connectionUrl: 's3-compatible-endpoint-url' + secretsProvider: 'passphrase' + credentials: + encryptionKey: 'abc123encryption456key789example000key' + aws: + accessKeyId: 'EXAMPLEKEYID123456' + secretAccessKey: 'abc123example456secret789key000aws' + region: 'us-east-1' + azure: + storageAccount: 'example-storage-account' + storageKey: 'abc123example456key789key000azure' + google: + project: 'example-project-id' + credentials: | + { + "type": "service_account", + "project_id": "your-project", + "private_key_id": "key-id", + "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n", + "client_email": "service-account@project.iam.gserviceaccount.com", + "client_id": "client-id", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/service-account@project.iam.gserviceaccount.com" + } + targets: + - id: 'example' + name: 'Example Cluster' + icon: 'kubernetes' + clusters: + - id: 'main' + name: 'Main' + icon: 'global' + location: + lat: 0.0000 + lon: 0.0000 + connection: + sameCluster: + enabled: true + namespace: + single: + name: 'example' + domains: + service: + tls: true + hostname: 'example.company.com' + storage: + storageClass: 'standard' + ingress: + ingressClass: 'nginx' + +app: + replicaCount: '2' +api: + replicaCount: '2' + existingSecret: 'example-secret' +job: + resources: + requests: + cpu: '100m' + memory: '512Mi' +deployWorker: + resources: + requests: + cpu: '100m' + memory: '512Mi' +clusterManager: + replicaCount: '2' + +imagePullCredentials: + registries: + harbor: + enabled: true + registry: "harbor.settlemint.com" + username: 'example_user' + password: 'abc123registry456password' + email: 'example@company.com' + +support: + kubernetes-replicator: + enabled: true +``` + +
+ +Install the platform: + +```bash +helm upgrade --install settlemint oci://registry.settlemint.com/settlemint-platform/settlemint \ + --namespace settlemint \ + --version 7.0.0 \ + --create-namespace \ + --values values.yaml +``` + +### 4. Verify Installation + +Check the deployment status: + +```bash +kubectl get pods -n settlemint +``` + +Verify all pods are running and ready. + +### 5. Access the Platform + +Once all pods are running, access the platform at `https://`. + +### 6. Target Clusters Configuration + +The platform supports deploying blockchain nodes and applications to multiple target clusters across different cloud providers and regions. This section explains how to configure target clusters in your values file. + +#### Target Structure +The targets configuration uses a simple 2-level hierarchy: +- **Target** (top level grouping) +- **Clusters** (individual Kubernetes clusters) + +#### Basic Configuration Example +```yaml +features: + deploymentEngine: + targets: + - id: GROUP1 + name: First Group + icon: cloud + clusters: + - id: CLUSTER1 + name: Primary Cluster + icon: kubernetes + location: + lat: 50.8505 + lon: 4.3488 + namespace: + multiple: + enabled: true + prefix: "sm" + connection: + kubeconfig: + enabled: true + domains: + service: + tls: true + hostname: "cluster1.example.com" + storage: + storageClass: "standard" + ingress: + ingressClass: "nginx" + capabilities: + mixedLoadBalancers: false + nodePorts: + enabled: true + range: + min: 30000 + max: 32767 + - id: GROUP2 + name: Second Group + icon: cloud + clusters: + - id: CLUSTER2 + name: Secondary Cluster + icon: kubernetes + location: + lat: 1.3521 + lon: 103.8198 + namespace: + multiple: + enabled: true + prefix: "prod" + connection: + kubeconfig: + enabled: true + domains: + service: + tls: true + hostname: "cluster2.example.com" + storage: + storageClass: "standard" + ingress: + ingressClass: "nginx" + capabilities: + mixedLoadBalancers: true + nodePorts: + enabled: true + range: + min: 30000 + max: 32767 +``` + +#### Configuration Options + +##### Target Level +- `id`: Unique identifier for the target group +- `name`: Display name +- `icon`: Icon identifier for the UI + +##### Cluster Level +- `id`: Unique identifier for the cluster +- `name`: Display name for the region/location +- `icon`: Icon identifier for the UI +- `disabled`: (Optional) Set to true to disable this cluster +- `location`: Geographic coordinates for visualization + - `lat`: Latitude + - `lon`: Longitude + +##### Namespace Configuration +```yaml +namespace: + single: + enabled: false # Use for single namespace deployments + name: deployments + runAsUser: 2024 + fsGroup: 2024 + multiple: + enabled: true # Use for multiple namespace deployments + prefix: "sm" # Prefix for created namespaces +``` + +##### Connection Settings +```yaml +connection: + sameCluster: + enabled: false + kubeconfig: + enabled: true +``` + +##### Domain Configuration +```yaml +domains: + service: + tls: true # Enable TLS for the domain + hostname: "cluster.example.com" # Domain for accessing services +``` + +The domain configuration determines how services in the cluster will be accessed. Each cluster needs a unique domain that resolves to its ingress controller. + +##### Storage Configuration +```yaml +storage: + storageClass: "standard" # Default storage class for the cluster +``` + +Storage class recommendations per cloud provider: +- GKE: Use `"standard"` for general purpose or `"premium-rwo"` for better performance +- EKS: Use `"gp3"` for general purpose or `"io1"` for high-performance workloads +- AKS: Use `"managed-premium"` for production or `"default"` for development + +##### Ingress Configuration +```yaml +ingress: + ingressClass: "nginx" # Ingress controller class name +``` + +The ingress class should match your installed ingress controller. Common options: +- `"nginx"` for NGINX Ingress Controller +- `"azure/application-gateway"` for Azure Application Gateway +- `"alb"` for AWS Application Load Balancer + +##### Capabilities Configuration +```yaml +capabilities: + mixedLoadBalancers: false # Support for mixed LoadBalancer services + nodePorts: + enabled: true # Enable NodePort service type + range: # Port range for NodePort services + min: 30000 + max: 32767 +``` + +Capabilities determine what features are available in the cluster: +- `mixedLoadBalancers`: Enable if your cluster supports both internal and external load balancers +- `nodePorts`: Configure if you need to expose services using NodePort type + - The port range should be within Kubernetes defaults (30000-32767) + - Ensure the range doesn't conflict with other services + +#### Important Considerations + +1. **Domain Names** + - Each cluster must have a unique domain name + - Domains should be properly configured in your DNS provider + - TLS certificates will be automatically managed if cert-manager is configured + +2. **Storage Classes** + - Verify the storage class exists in your cluster before using it + - Consider performance requirements when selecting storage classes + - Some features may require specific storage capabilities (e.g., RWX support) + +3. **Network Capabilities** + - `mixedLoadBalancers` should match your cloud provider's capabilities + - NodePort ranges should not conflict with other services + - Ensure network policies allow required communication + + +When setting up a new cluster, start with the basic configuration and gradually enable additional capabilities as needed. This approach helps in identifying potential issues early in the deployment process. + + + +## Troubleshooting + +If you encounter issues during installation: + +1. Debug the installation: + +```bash +helm upgrade --install --debug --dry-run settlemint oci://registry.settlemint.com/settlemint-platform/settlemint \ + --namespace settlemint \ + --values values.yaml +``` + +2. Check pod logs: + +```bash +kubectl logs -n settlemint +``` + +3. Generate a support bundle: + +```bash +# Install support bundle plugin +curl https://krew.sh/support-bundle | bash + +# Generate bundle +kubectl support-bundle --load-cluster-specs +``` + +Send the generated support bundle to [support@settlemint.com](mailto:support@settlemint.com) for assistance. + +## Uninstalling + +To remove the platform: + +```bash +helm delete settlemint --namespace settlemint +``` + +**Note:** This will not delete persistent volumes or other resources outside of Helm's control. You may need to clean these up manually. diff --git a/content/docs/launching-the-platform/self-hosted/prerequisites/domain-and-tls.mdx b/content/docs/launching-the-platform/self-hosted/prerequisites/domain-and-tls.mdx new file mode 100644 index 00000000..e606806d --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/prerequisites/domain-and-tls.mdx @@ -0,0 +1,231 @@ +--- +title: Domain and TLS Configuration +description: Configure domain names and TLS certificates for your self-hosted platform +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + +## Overview + +
+ + ### Purpose + - Secure platform access + - Service-to-service communication + - API endpoint security + - User authentication + + + + ### Requirements + - Registered domain name + - DNS management access + - Ability to create DNS records + - TLS certificate provider + +
+ +## Domain Configuration + + + + ### 1. Configure Main Domain + - Create an A record pointing to your ingress controller IP + - Example: `platform.company.com → 203.0.113.1` + + ### 2. Add Wildcard Subdomain + - Create a CNAME record for all subdomains + - Pattern: `*.platform.company.com → platform.company.com` + + + + ### DNS Resolution Tests + ```bash + # Check A record + dig +short platform.company.com + + # Check CNAME record + dig +short test.platform.company.com + + # Verify IP matches ingress + kubectl -n ingress-nginx get svc ingress-nginx-controller \ + -o jsonpath='{.status.loadBalancer.ingress[0].ip}' + ``` + + + +## TLS Configuration + + + + ### Quick Setup with Cloudflare + + + ### Add Domain to Cloudflare + - Transfer DNS management + - Update nameservers + + ### Configure SSL/TLS + - Purchase Advanced Certificate Manager (ACM) + - Enable Total TLS + - Set SSL/TLS mode to Full (Strict) + + + + **Benefits** + - Automatic certificate management + - DDoS protection included + - Easy wildcard certificate support + - Global CDN + + + + + ### Setup with cert-manager + + + ### Install cert-manager + ```bash + helm repo add jetstack https://charts.jetstack.io --force-update + helm repo update + helm upgrade --install \ + cert-manager jetstack/cert-manager \ + --namespace cert-manager \ + --create-namespace \ + --set installCRDs=true + ``` + + ### Configure DNS Provider + ```bash + # Create API token secret + kubectl apply -n cert-manager -f - < + EOF + ``` + + ### Create ClusterIssuer + ```bash + kubectl apply -f - < + + + **Important** + - Use a valid email address for certificate notifications + - Ensure DNS provider API token has sufficient permissions + - Allow time for initial certificate issuance + + + + +## Information Collection + + +### Required Values for Platform Installation + +- [ ] Domain name (e.g., `platform.company.com`) +- [ ] Ingress annotations (if using cert-manager: `cert-manager.io/cluster-issuer: "letsencrypt"`) +- [ ] TLS secret name for the certificate +- [ ] SSL redirect setting (`true` or `false`) + +```yaml +ingress: + enabled: true + className: nginx + host: 'platform.company.com' + annotations: + cert-manager.io/cluster-issuer: 'letsencrypt' + nginx.ingress.kubernetes.io/ssl-redirect: 'false' + tls: + - secretName: 'tls-secret' + hosts: + - 'platform.company.com' + - '*.platform.company.com' + +deploymentEngine: + platform: + domain: + hostname: 'platform.company.com' + clusterManager: + domain: + hostname: 'platform.company.com' + targets: + - clusters: + - domains: + service: + tls: true + hostname: 'platform.company.com' + ingress: + ingressClass: 'nginx' +``` + + +## Troubleshooting + +
+ + ### DNS Issues + **Not Resolving** + - Verify A record IP + - Check CNAME configuration + - Allow DNS propagation (48h max) + + **Wrong IP** + - Confirm ingress controller IP + - Update DNS records + - Clear local DNS cache + + + + ### Certificate Issues + **cert-manager** + - Check issuer status + - Verify DNS01 challenge + - Review cert-manager logs + + **Cloudflare** + - Verify SSL/TLS mode + - Check certificate status + - Confirm proxy status + +
+ +## Next Steps + + + ### Verify DNS resolution + ### Confirm TLS certificate issuance + ### Proceed to [OAuth Provider Setup](/launching-the-platform/self-hosted/prerequisites/oauth) + + + +Need help? Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. + \ No newline at end of file diff --git a/content/docs/launching-the-platform/self-hosted/prerequisites/ingress-controller.mdx b/content/docs/launching-the-platform/self-hosted/prerequisites/ingress-controller.mdx new file mode 100644 index 00000000..3acb57f2 --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/prerequisites/ingress-controller.mdx @@ -0,0 +1,129 @@ +--- +title: Ingress Controller +description: Setup and configure the ingress controller for your self-hosted platform +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + +## Overview + +
+ + ### Purpose + - Managing external access to services + - Load balancing + - SSL/TLS termination + - Routing rules + + + + ### Requirements + - Kubernetes cluster access + - Load balancer support + - Helm (optional) + +
+ +## Deployment Options + + + + ### Install with Helm + + ```bash + helm upgrade --install ingress-nginx ingress-nginx \ + --repo https://kubernetes.github.io/ingress-nginx \ + --namespace ingress-nginx \ + --create-namespace + ``` + + Wait for the load balancer IP to be assigned: + + ```bash + kubectl get service -n ingress-nginx ingress-nginx-controller \ + --output jsonpath='{.status.loadBalancer.ingress[0].ip}' + ``` + + + + ### Cloud Provider Marketplaces + + Choose your cloud provider's marketplace offering: + + #### Digital Ocean + - Install "NGINX Ingress Controller" from marketplace + - Automatically configures load balancer + + #### CIVO + - Enable "Nginx ingress controller" during cluster creation + - Or add from marketplace post-creation + + #### Other Providers + - Most cloud providers offer similar marketplace solutions + - Follow provider-specific installation steps + + + +## Validation + + + ### Check pods are running + ```bash + kubectl get pods -n ingress-nginx + ``` + + ### Verify service and IP allocation + ```bash + kubectl get svc -n ingress-nginx + ``` + + +## Information Collection + + +### Required Values for Platform Installation + +- [ ] Ingress class name (default: `nginx`) +- [ ] Load balancer IP address +- [ ] Ingress controller namespace + +```yaml +ingress: + enabled: true + className: nginx + # Other ingress settings will be configured in Domain & TLS section +``` + + +## Troubleshooting + +
+ + ### No Load Balancer IP + - Verify cloud provider load balancer service is running + - Check cloud provider quotas + - Ensure correct service annotations + + + + ### Controller Not Ready + - Check pod logs: `kubectl logs -n ingress-nginx ` + - Verify resource requirements are met + - Check network policies + +
+ +## Next Steps + + + ### Verify ingress controller is running + ### Note down the load balancer IP + ### Proceed to [Domain and TLS Setup](/launching-the-platform/self-hosted/prerequisites/domain-and-tls) + + + +Need help? Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. + \ No newline at end of file diff --git a/content/docs/launching-the-platform/self-hosted/prerequisites/meta.json b/content/docs/launching-the-platform/self-hosted/prerequisites/meta.json new file mode 100644 index 00000000..2cb20791 --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/prerequisites/meta.json @@ -0,0 +1,16 @@ +{ + "label": "Prerequisites", + "position": 2, + "pages": [ + "overview", + "ingress-controller", + "domain-and-tls", + "oauth", + "postgresql", + "redis", + "s3-compatible-storage", + "secret-management", + "metrics-and-logs", + "terraform" + ] +} diff --git a/content/docs/launching-the-platform/self-hosted/prerequisites/metrics-and-logs.mdx b/content/docs/launching-the-platform/self-hosted/prerequisites/metrics-and-logs.mdx new file mode 100644 index 00000000..a1a53d0c --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/prerequisites/metrics-and-logs.mdx @@ -0,0 +1,194 @@ +--- +title: Metrics and Logs +description: Configure monitoring and logging for your self-hosted platform +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + +## Overview + +
+ + ### Monitoring Stack + - Metrics collection (Prometheus/VictoriaMetrics) + - Log aggregation (Loki) + - Metrics server for resource metrics + - Kube-state-metrics for cluster state + + + + ### Key Benefits + - Complete observability + - Performance monitoring + - Resource tracking + - Centralized logging + +
+ +## Deployment Options + + + + ### VictoriaMetrics + Loki Setup + + + ### Install VictoriaMetrics + ```bash + helm upgrade --install victoria-metrics victoria-metrics-single \ + --repo https://victoriametrics.github.io/helm-charts/ \ + --namespace observability \ + --create-namespace \ + --set server.scrape.enabled=true + ``` + + ### Install Loki and Promtail + ```bash + helm install loki loki \ + --repo https://grafana.github.io/helm-charts \ + --namespace observability \ + --create-namespace \ + --set loki.auth_enabled=false \ + --set loki.commonConfig.replication_factor=1 \ + --set loki.storage.type=filesystem + ``` + + ### Install kube-state-metrics + ```bash + helm install kube-state-metrics kube-state-metrics \ + --repo https://prometheus-community.github.io/helm-charts \ + --namespace observability \ + --create-namespace + ``` + + + + **Benefits** + - Efficient resource usage + - Simple maintenance + - Sufficient monitoring capabilities + - Easy scalability + + + + + ### Prometheus + Grafana + Loki + + + ### Install Prometheus Stack + ```bash + helm upgrade --install monitoring prometheus-community/kube-prometheus-stack \ + --namespace observability \ + --create-namespace + ``` + + ### Install Loki Stack + ```bash + helm install loki grafana/loki-stack \ + --namespace observability \ + --set grafana.enabled=false + ``` + + + + **Requirements** + - More resources + - Additional configuration + - Regular maintenance + + + + +## Requirements + +
+ + ### Minimum Specifications + - Storage for metrics retention + - Storage for log retention + - Network access from platform + - Basic authentication + + + + ### Optional Features + - Long-term storage + - Alerting setup + - Dashboard configuration + - High availability + +
+ +## Information Collection + + +### Required Values for Platform Installation + +- [ ] Metrics endpoint URL +- [ ] Logs endpoint URL +- [ ] Authentication details (if enabled) + +```yaml +features: + observability: + metrics: + enabled: true + apiUrl: 'http://victoria-metrics-victoria-metrics-single-server.observability.svc.cluster.local:8428/prometheus/api/v1' + logs: + enabled: true + apiUrl: 'http://loki-gateway.observability.svc.cluster.local/loki/api/v1' +``` + + +## Validation + + + ### Check VictoriaMetrics + ```bash + curl -f "http://victoria-metrics:8428/health" + ``` + + ### Check Loki + ```bash + curl -f "http://loki:3100/ready" + ``` + + ### Verify kube-state-metrics + ```bash + kubectl get --raw /metrics + ``` + + +## Troubleshooting + +
+ + ### Metrics Not Collecting + - Verify service endpoints + - Check scrape configurations + - Review service monitors + - Validate permissions + + + + ### Log Issues + - Check Loki status + - Verify storage configuration + - Review retention settings + - Check network policies + +
+ +## Next Steps + + + ### Set up metrics collection + ### Configure log aggregation + ### Ready for [Platform Installation](../launching-the-platform/self-hosted/platform-installation) + + + +Need help? Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. + \ No newline at end of file diff --git a/content/docs/launching-the-platform/self-hosted/prerequisites/oauth.mdx b/content/docs/launching-the-platform/self-hosted/prerequisites/oauth.mdx new file mode 100644 index 00000000..d1654c6d --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/prerequisites/oauth.mdx @@ -0,0 +1,172 @@ +--- +title: OAuth Provider +description: Setup and configure OAuth provider for your self-hosted platform +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + +## Overview + +
+ + ### Purpose + - User authentication + - Access control + - Single sign-on capabilities + - Identity management + + + + ### Key Features + - OpenID Connect support + - OAuth 2.0 compliance + - User profile information + - Email verification + +
+ +## Provider Options + + + + ### Google OAuth Setup + + + ### Access Google Cloud Console + - Go to [Google Cloud Console](https://console.developers.google.com/apis/credentials) + - Select or create a project + + ### Create OAuth Client + - Click `+ CREATE CREDENTIALS` + - Select `OAuth client ID` + - Choose `Web application` type + + ### Configure OAuth Client + - Add Authorized JavaScript origins: + ``` + https://your-domain.com + ``` + - Add Authorized redirect URIs: + ``` + https://your-domain.com/api/auth/callback/google + ``` + + + + Make sure to replace `your-domain.com` with your actual platform domain. + + + + + ### Azure Active Directory Setup + + + ### Access Azure Portal + - Go to Azure Active Directory + - Register a new application + + ### Configure Application + - Add redirect URIs + - Set up platform configurations + - Configure authentication settings + + ### Set Required Permissions + - OpenID Connect permissions + - User.Read permissions + - Additional scopes as needed + + + + + ### Custom OIDC Provider + + For enterprise setups, you can use any OpenID Connect compliant provider: + + - Okta + - Auth0 + - Keycloak + - Other OIDC-compliant providers + + Required provider capabilities: + - OpenID Connect support + - OAuth 2.0 compliance + - User profile information + - Email verification + + + +## JWT Configuration + + + ### Generate a secure signing key + ```bash + openssl rand -base64 32 + ``` + + + +Store this key securely - it's used to sign user sessions. + + +## Information Collection + + +### Required Values for Platform Installation + +- [ ] OAuth Client ID +- [ ] OAuth Client Secret +- [ ] JWT signing key +- [ ] Configured redirect URI + +```yaml +auth: + jwtSigningKey: 'your-generated-key' # From openssl command + providers: + google: + enabled: true + clientID: 'your-client-id' # From OAuth provider + clientSecret: 'your-secret' # From OAuth provider +``` + + +## Validation + + + ### Verify OAuth client is properly configured + ### Confirm redirect URIs match your domain + ### Check JWT signing key is generated and saved + ### Validate required scopes are enabled + + +## Troubleshooting + +
+ + ### Invalid Redirect URI + - Verify exact URI match + - Check for protocol (https) mismatch + - Confirm domain spelling + + + + ### Authentication Failures + - Verify client credentials + - Check scope configurations + - Validate JWT signing key + +
+ +## Next Steps + + + ### Configure OAuth provider + ### Generate JWT signing key + ### Proceed to [PostgreSQL Setup](/launching-the-platform/self-hosted/prerequisites/postgresql) + + + +Need help? Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. + diff --git a/content/docs/launching-the-platform/self-hosted/prerequisites/overview.mdx b/content/docs/launching-the-platform/self-hosted/prerequisites/overview.mdx new file mode 100644 index 00000000..0167b26d --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/prerequisites/overview.mdx @@ -0,0 +1,151 @@ +--- +title: Prerequisites Overview +description: Complete guide to setting up prerequisites for the SettleMint Platform installation +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Card } from 'fumadocs-ui/components/card' + +Before installing the SettleMint Platform, you'll need to set up several core services. This guide will walk you through each prerequisite and help you collect the necessary information for installation. + + + +Use the sidebar to navigate between different prerequisites. We recommend following them in order, but you can skip to specific sections if needed. + + +## How to Use This Section + +1. Review each prerequisite service +2. Choose your preferred deployment method for each service +3. Follow the setup instructions +4. Record the required information in a secure location +5. Proceed to the next prerequisite + + +Make sure to complete **all** prerequisites before proceeding with the platform installation. Missing or incorrectly configured services can cause installation failures. + + +## Required Services + + + + ### Ingress Controller + - Traffic management and load balancing + - SSL/TLS termination + - [Setup Guide](/launching-the-platform/self-hosted/prerequisites/ingress-controller) + + ### Domain and TLS + - Domain name configuration + - SSL/TLS certificates + - [Setup Guide](/launching-the-platform/self-hosted/prerequisites/domain-and-tls) + + ### Metrics and Logs + - Prometheus metrics collection + - Grafana visualization + - Loki log aggregation + - [Setup Guide](/launching-the-platform/self-hosted/prerequisites/metrics-and-logs) + + + + ### PostgreSQL Database + - Primary platform database + - Stores user data and configurations + - Minimum version: PostgreSQL 13+ + - [Setup Guide](/launching-the-platform/self-hosted/prerequisites/postgresql) + + ### Redis Cache + - Session management + - Real-time features + - Performance optimization + - [Setup Guide](/launching-the-platform/self-hosted/prerequisites/redis) + + + + ### S3-Compatible Storage + - Platform assets storage + - Blockchain data persistence + - [Setup Guide](/launching-the-platform/self-hosted/prerequisites/s3-compatible-storage) + + ### Secrets management + - Secrets management + - Encryption keys + - [Setup Guide](/launching-the-platform/self-hosted/prerequisites/secret-management) + + ### OAuth Provider + - Authentication service + - User identity management + - [Setup Guide](/launching-the-platform/self-hosted/prerequisites/oauth) + + + +## Deployment Options + +
+ + ### Self-Hosted + - ✓ Full control + - ✓ Data sovereignty + - ⚠ Higher maintenance + - ⚠ Requires expertise + + + + ### Managed Services + - ✓ Lower maintenance + - ✓ Managed updates + - ⚠ Limited customization + - ⚠ Higher costs + +
+ + +Choose deployment options based on your: + +- Security requirements +- Infrastructure capabilities +- Operational expertise +- Budget constraints + + +## Information Collection + +As you complete each prerequisite, you'll need to collect specific information required for the platform installation. + + +### Information Collection Checklist + +- [ ] Domain and TLS certificates +- [ ] Database connection strings +- [ ] Redis credentials +- [ ] S3 bucket details +- [ ] Vault access tokens +- [ ] OAuth client credentials +- [ ] Metrics endpoints + + +## Next Steps + +1. Start with the [Ingress Controller](/launching-the-platform/self-hosted/prerequisites/ingress-controller) setup +2. Follow each prerequisite guide in order +3. Validate your configurations +4. Proceed to [Platform Installation](/launching-the-platform/self-hosted/platform-installation) + +## Need Help? + +
+ + ### Documentation + - Review the prerequisites guides + - Check troubleshooting sections + - Follow best practices + - Consult platform architecture + + + + ### Support + - Email: support@settlemint.com + - Schedule technical consultation + - Contact your account manager + +
\ No newline at end of file diff --git a/content/docs/launching-the-platform/self-hosted/prerequisites/postgresql.mdx b/content/docs/launching-the-platform/self-hosted/prerequisites/postgresql.mdx new file mode 100644 index 00000000..036ca491 --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/prerequisites/postgresql.mdx @@ -0,0 +1,181 @@ +--- +title: PostgreSQL Database +description: Setup and configure PostgreSQL database for your self-hosted platform +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + +## Overview + +
+ + ### Primary Database + - User data and configurations + - Platform state + - Application data + - Minimum version: PostgreSQL 13+ + + + + ### Key Features + - High availability + - Data persistence + - Backup support + - Performance monitoring + +
+ +## Deployment Options + + + + ### Cloud Provider Options + + + ### Digital Ocean Managed Database + - Create new database cluster + - Choose PostgreSQL 13+ + - Select plan (minimum 2 vCPU, 4GB RAM) + - Enable connection pooling (recommended: 50 connections) + + ### Neon Serverless PostgreSQL + - Create new project + - Set up new database + - Enable connection pooling + - Note the connection string + + ### Other Providers + - Amazon RDS + - Google Cloud SQL + - Azure Database for PostgreSQL + + + + **Benefits** + - Automatic backups + - High availability + - Security patches + - Performance monitoring + + + + + ### Bitnami PostgreSQL Chart + + + ### Install PostgreSQL + ```bash + helm upgrade --install postgresql oci://registry-1.docker.io/bitnamicharts/postgresql \ + --namespace postgresql \ + --version 14.3.3 \ + --create-namespace \ + --set global.postgresql.auth.username=platform \ + --set global.postgresql.auth.password=your-secure-password \ + --set global.postgresql.auth.database=platform + ``` + + ### Wait for deployment + ```bash + kubectl -n postgresql get pods -w + ``` + + + + **For Production Use** + - Configure proper resource limits + - Set up regular backups + - Consider high availability setup + + + + +## Requirements + +
+ + ### Minimum Specifications + - PostgreSQL 13 or higher + - 2 vCPU cores + - 4GB RAM + - 20GB storage + + + + ### Recommended Features + - Connection pooling + - Automated backups + - Point-in-time recovery + - SSL/TLS encryption + +
+ +## Information Collection + + +### Required Values for Platform Installation + +- [ ] Database hostname +- [ ] Port number (default: 5432) +- [ ] Database name +- [ ] Username +- [ ] Password +- [ ] SSL mode (e.g., `require`) + +```yaml +postgresql: + host: 'your-db-host' + port: 5432 + user: 'platform' + password: 'your-secure-password' + database: 'platform' + sslMode: 'require' # or "disable" for local development +``` + + +## Validation + + + ### Test PostgreSQL connection + ```bash + # Using psql client + psql "postgres://username:password@hostname:5432/dbname?sslmode=require" + + # Or using connection string + psql "postgresql://username:password@hostname:5432/dbname?sslmode=require" + ``` + + +## Troubleshooting + +
+ + ### Connection Failures + - Verify credentials + - Check network/firewall rules + - Confirm SSL/TLS settings + - Validate connection string format + + + + ### Performance Issues + - Check connection pool settings + - Monitor resource usage + - Review query performance + - Verify index usage + +
+ +## Next Steps + + + ### Set up PostgreSQL database + ### Configure connection pooling + ### Proceed to [Redis Setup](/launching-the-platform/self-hosted/prerequisites/redis) + + + +Need help? Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. + \ No newline at end of file diff --git a/content/docs/launching-the-platform/self-hosted/prerequisites/redis.mdx b/content/docs/launching-the-platform/self-hosted/prerequisites/redis.mdx new file mode 100644 index 00000000..f84d0a1c --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/prerequisites/redis.mdx @@ -0,0 +1,215 @@ +--- +title: Redis Cache +description: Setup and configure Redis cache for your self-hosted platform +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + +## Overview + +
+ + ### Purpose + - Session management + - Real-time features + - Caching layer + - Performance optimization + + + + ### Key Features + - Fast in-memory storage + - Data persistence + - High availability + - Monitoring capabilities + +
+ +## Deployment Options + + + + ### Cloud Provider Options + + + ### Google Cloud Memorystore + - Go to [Google Cloud Console](https://console.cloud.google.com) + - Enable Memorystore for Redis API + - Create new Redis instance: + - Choose Basic tier for standard workloads + - Select region (same as your GKE cluster) + - Set memory capacity (minimum 1GB) + - Enable authentication (recommended) + - Configure VPC network and authorized networks + + ### Redis Cloud + - Create account at [Redis Cloud](https://app.redislabs.com) + - Create new subscription: + - Fixed plan (minimum 1GB) + - Choose region + - Enable password protection + - Create database with default settings + + ### Digital Ocean Redis + - Access Digital Ocean Console + - Create Database > Redis + - Configure: + - Choose smallest plan + - Select datacenter + - Enable eviction policy + + + + **Benefits** + - Automatic backups + - High availability + - Security patches + - Performance monitoring + + + + + ### Bitnami Redis Chart + + + ### Add repository + ```bash + helm repo add bitnami https://charts.bitnami.com/bitnami + helm repo update + ``` + + ### Install Redis + ```bash + helm upgrade --install redis oci://registry-1.docker.io/bitnamicharts/redis \ + --namespace redis \ + --version 18.19.2 \ + --create-namespace \ + --set architecture=standalone \ + --set global.redis.password=your-secure-password + ``` + + ### Wait for deployment + ```bash + kubectl -n redis get pods -w + ``` + + + + **For Production Use** + - Configure proper resource limits + - Set up persistence + - Consider high availability setup + + + + +## Requirements + +
+ + ### Minimum Specifications + - Redis 6.0 or higher + - 1GB memory + - Network access from platform + - Password protection enabled + + + + ### Recommended Features + - Persistence enabled + - Automatic backups + - Monitoring setup + - Eviction policies configured + +
+ +## Information Collection + + +### Required Values for Platform Installation + +- [ ] Redis hostname/endpoint +- [ ] Port number (default: 6379) +- [ ] Password (if authentication enabled) +- [ ] TLS enabled/disabled + +```yaml +redis: + host: '' # Redis host collected in prerequisites + port: 6379 # Redis port collected in prerequisites + password: '' # Redis password collected in prerequisites + prefix: 'sm' # In shared redis servers, this separates queues + tls: false # Set to true to use TLS mode +``` + + +When using Google Memorystore: +1. Enable only one Redis solution (`redis.enabled` or `redis.memorystore.enabled`) +2. Ensure your GKE cluster has access to the Memorystore instance +3. Configure the same region as your GKE cluster + + + +## Validation + + + + ```bash + # Get the Memorystore instance connection details + REDIS_HOST=$(gcloud redis instances describe [INSTANCE_ID] \ + --region=[REGION] --format='get(host)') + REDIS_PORT=$(gcloud redis instances describe [INSTANCE_ID] \ + --region=[REGION] --format='get(port)') + + # Test connection using redis-cli + redis-cli -h $REDIS_HOST -p $REDIS_PORT ping + ``` + + + + ```bash + # Using redis-cli + redis-cli -h your-redis-host -p 6379 -a your-password ping + + # Expected response + PONG + ``` + + + +## Troubleshooting + +
+ + ### Connection Failures + - Verify credentials + - Check network/firewall rules + - Confirm TLS settings + - Validate endpoint format + - For Memorystore: verify VPC peering + + + + ### Performance Issues + - Monitor memory usage + - Check eviction policies + - Review connection limits + - Verify resource allocation + - For Memorystore: check instance tier + +
+ +## Next Steps + + + ### Set up Redis instance + ### Configure security settings + ### Proceed to [S3 Compatible Storage Setup](/launching-the-platform/self-hosted/prerequisites/s3-compatible-storage) + + + +Need help? Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. + \ No newline at end of file diff --git a/content/docs/launching-the-platform/self-hosted/prerequisites/s3-compatible-storage.mdx b/content/docs/launching-the-platform/self-hosted/prerequisites/s3-compatible-storage.mdx new file mode 100644 index 00000000..ed94468f --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/prerequisites/s3-compatible-storage.mdx @@ -0,0 +1,355 @@ +--- +title: S3-Compatible Storage +description: Setup and configure S3-compatible storage for your self-hosted platform +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + +## Overview + +
+ + ### Purpose + - Platform assets storage + - Blockchain data persistence + - File management + - State storage + + + + ### Key Features + - Built-in redundancy + - Automatic scaling + - Global availability + - Integrated monitoring + +
+ +## Deployment Options + + + + ### AWS S3 (Native) + + + ### Create S3 bucket + - Choose region + - Enable versioning + - Configure default encryption + + ### Create IAM user + - Generate access key and secret + - Attach minimal required permissions + + + ### Digital Ocean Spaces + + + ### Setup Spaces + - Access Digital Ocean Console + - Create new Spaces bucket: + - Choose datacenter region + - Configure CDN (optional) + - Create Spaces access key + + + ### Azure Blob Storage + + + ### Create Storage Account + - Go to Azure Portal + - Create new Storage Account + - Select performance tier and redundancy + - Enable hierarchical namespace (recommended) + + ### Create Container + - Navigate to Storage Account + - Create new container + - Set access level (private recommended) + + ### Get Access Credentials + - Generate Shared Access Signature (SAS) + - Or use Storage Account access keys + - Note the connection string + + + + **Azure Blob Storage offers:** + - Geo-redundant storage options + - Integration with Azure AD + - Built-in disaster recovery + - Pay-as-you-go pricing + + + ### Google Cloud Storage + + + ### Create Storage Bucket + - Go to Google Cloud Console + - Create new bucket + - Choose location type + - Set storage class + - Configure access control + + ### Set up Service Account + - Create new service account + - Generate JSON key file + - Assign Storage Object Admin role + - Download credentials + + + + **GCP Storage benefits:** + - Multi-regional deployment + - Object lifecycle management + - Strong consistency + - Integrated security controls + + + + + ### MinIO Installation + + + ### Install MinIO + ```bash + helm upgrade --install minio oci://registry-1.docker.io/bitnamicharts/minio \ + --namespace minio \ + --version 13.8.4 \ + --create-namespace \ + --set defaultBuckets=platform-bucket \ + --set auth.rootUser=admin \ + --set auth.rootPassword=your-secure-password \ + --set provisioning.enabled=true \ + --set "provisioning.config[0].name=region" \ + --set "provisioning.config[0].options.name=us-east-1" + ``` + + ### Create Service Account + ```bash + mc admin user svcacct add minio platform-user + ``` + + + + **For Production Use:** + - Configure proper storage class + - Set up backup procedures + - Enable encryption + - Configure monitoring + + + + +## State Encryption + + + ### Generate encryption key + ```bash + openssl rand -base64 32 + ``` + + + +Store this encryption key securely - it's used to protect platform state data. + + +## Information Collection + + +### Required Values for Platform Installation + + + + - [ ] S3 endpoint URL (e.g., s3.amazonaws.com) + - [ ] Bucket name + - [ ] Access key ID + - [ ] Secret access key + - [ ] Region (e.g., us-east-1) + - [ ] State encryption key + + + + - [ ] Storage account name + - [ ] Container name + - [ ] Storage account key + - [ ] State encryption key + + + + - [ ] Project ID + - [ ] Bucket name + - [ ] Service account credentials (JSON) + - [ ] State encryption key + + + + - [ ] MinIO endpoint URL + - [ ] Bucket name + - [ ] Access key + - [ ] Secret key + - [ ] Region + - [ ] State encryption key + + + +```yaml +deploymentEngine: + state: + # AWS S3 + connectionUrl: 's3://bucket-name?region=us-east-1&endpoint=s3.amazonaws.com' + + # Azure Blob Storage + connectionUrl: 'azblob://' + + # Google Cloud Storage + connectionUrl: 'gs://bucket-name' + + credentials: + encryptionKey: 'your-generated-key' # From openssl command + + # AWS Credentials + aws: + accessKeyId: 'your-access-key' + secretAccessKey: 'your-secret-key' + region: 'us-east-1' + + # Azure Credentials + azure: + storageAccount: 'storage-account-name' + storageKey: 'storage-account-key' + + # GCP Credentials + google: + project: 'project-id' + credentials: | + { + "type": "service_account", + "project_id": "your-project", + "private_key_id": "key-id", + "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n", + "client_email": "service-account@project.iam.gserviceaccount.com", + "client_id": "client-id", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/service-account@project.iam.gserviceaccount.com" + } +``` + + +## Validation + + + ### Test AWS S3 + ```bash + aws s3 ls s3://your-bucket \ + --endpoint-url your-endpoint \ + --access-key your-access-key \ + --secret-key your-secret-key + ``` + + ### Test Azure Storage + ```bash + az storage blob list \ + --container-name your-container \ + --account-name your-storage-account \ + --account-key your-storage-key + ``` + + ### Test Google Cloud Storage + ```bash + gsutil ls gs://your-bucket + ``` + + + +Make sure you have installed and configured the respective CLI tools: +- AWS CLI: `aws configure` +- Azure CLI: `az login` +- Google Cloud CLI: `gcloud auth login` + + +## Troubleshooting + +
+ + ### Access Denied + **AWS S3:** + - Verify IAM credentials + - Check bucket policies + - Confirm IAM role permissions + - Validate endpoint URL format + + **Azure Blob Storage:** + - Check storage account access keys + - Verify container access level + - Confirm SAS permissions + - Check firewall settings + + **Google Cloud Storage:** + - Verify service account permissions + - Check IAM roles + - Validate JSON credentials + - Confirm project access + + + + ### Connection Issues + **AWS S3:** + - Check endpoint accessibility + - Verify region setting + - Confirm VPC endpoints + - Check SSL/TLS requirements + + **Azure Blob Storage:** + - Verify network access rules + - Check private endpoints + - Confirm account status + - Validate VNET settings + + **Google Cloud Storage:** + - Check VPC Service Controls + - Verify network connectivity + - Confirm regional availability + - Check firewall rules + +
+ +
+ + ### Performance Issues + **AWS S3:** + - Check transfer acceleration + - Review bucket region + - Monitor request rates + + **Azure Blob Storage:** + - Verify account tier + - Check geo-replication + - Monitor bandwidth metrics + + + + ### Storage Issues + **Google Cloud Storage:** + - Review storage class + - Check bucket location + - Monitor throughput metrics + +
+ +## Next Steps + + + ### Set up S3-compatible storage + ### Generate encryption key + ### Proceed to [Secret Management Setup](/launching-the-platform/self-hosted/prerequisites/secret-management) + + + +Need help? Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. + \ No newline at end of file diff --git a/content/docs/launching-the-platform/self-hosted/prerequisites/secret-management.mdx b/content/docs/launching-the-platform/self-hosted/prerequisites/secret-management.mdx new file mode 100644 index 00000000..853d4a83 --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/prerequisites/secret-management.mdx @@ -0,0 +1,307 @@ +--- +title: Secret Management +description: Configure secret management for your self-hosted platform +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + +## Overview + +
+ + ### Platform Options + - HashiCorp Vault + - Google Secret Manager + + + + ### Key Features + - Secrets management + - Encryption key storage + - Secure credentials handling + - Private key management + +
+ +## Deployment Options + + + + ### Google Secret Manager Setup + + + ### Enable the Secret Manager API + - Go to [Google Cloud Console](https://console.cloud.google.com) + - Navigate to Secret Manager + - Enable the Secret Manager API for your project + + ### Create Service Account + - Navigate to IAM & Admin > Service Accounts + - Create a new service account + - Grant the following roles: + - `Secret Manager Admin` + + ### Download Credentials + - Create and download a JSON key for the service account + - Keep this file secure - you'll need it during platform installation + + + + **Google Secret Manager provides:** + - Fully managed service + - Automatic replication + - Fine-grained IAM controls + - Audit logging + + + + **Helm Chart Values:** + ```yaml + # values.yaml for Helm installation + googleSecretManager: + # -- Enable Google Secret Manager integration + enabled: true + # -- The Google Cloud project ID + projectId: "your-project-id" + # -- The Google Cloud service account credentials JSON + credentials: | + { + // Your service account JSON key + } + ``` + + + + Make sure to: + 1. Enable Google Secret Manager in your Helm values + 2. Use the same project ID and credentials as in your platform configuration + 3. Properly format the service account JSON credentials + + + + + ### HashiCorp Cloud Platform Setup + + + ### Create Vault Cluster + - Sign up for [HashiCorp Cloud](https://portal.cloud.hashicorp.com) + - Choose Development tier (sufficient for most setups) + - Select "Start from Scratch" template + - Pick your preferred region + + ### Configure Secret Engines + ```bash + vault secrets enable -path=ethereum kv-v2 + vault secrets enable -path=ipfs kv-v2 + vault secrets enable -path=fabric kv-v2 + ``` + + ### Set Up Authentication + ```bash + # Enable AppRole auth method + vault auth enable approle + + # Create platform policy + vault policy write btp - < + + + **TTL Configuration** + - `token_ttl`: How long tokens are valid (e.g., `1h`, `24h`, `30m`) + - `token_max_ttl`: Maximum token lifetime including renewals + - `secret_id_ttl`: How long secret IDs remain valid + - Set to `0` for non-expiring secret IDs + - Or specify duration like `6h`, `24h`, `168h` (1 week) + + + + **HCP Vault provides:** + - Managed infrastructure + - Automatic updates + - Built-in high availability + - Professional support + + + + + ### Helm Chart Installation + + + ### Install Vault + ```bash + helm upgrade --install vault vault \ + --repo https://helm.releases.hashicorp.com \ + --namespace vault \ + --create-namespace + ``` + + ### Initialize Vault + ```bash + # Initialize and save keys + kubectl exec vault-0 -n vault -- vault operator init \ + -key-shares=1 \ + -key-threshold=1 + + # Unseal Vault (replace with your key) + kubectl exec vault-0 -n vault -- vault operator unseal $VAULT_UNSEAL_KEY + ``` + + ### Configure Vault + Follow the same configuration steps as HCP Vault (steps 2-5) after logging in with the root token. + + + + **For Production Use:** + - Use multiple key shares + - Configure proper storage backend + - Set up high availability + - Implement proper unsealing strategy + + + + +## Information Collection + + +### Required Values for Platform Installation + +Choose one of the following configurations for your Helm values: + +**For Google Secret Manager:** +- [ ] GCP Project ID +- [ ] Service Account JSON key + +```yaml +# values.yaml +vault: + enabled: false + +googleSecretManager: + enabled: true + projectId: 'your-project-id' + credentials: | + { + // Your service account JSON key + } +``` + +**For HashiCorp Vault:** +- [ ] Vault address/endpoint +- [ ] Role ID +- [ ] Secret ID +- [ ] Namespace (if using HCP Vault: `admin`) + +```yaml +# values.yaml +googleSecretManager: + enabled: false + +vault: + enabled: true + address: 'https://vault-cluster.hashicorp.cloud:8200' + namespace: 'admin' # Required for HCP Vault + roleId: 'your-role-id' + secretId: 'your-secret-id' +``` + + +Make sure to: +1. Enable only one secret management solution (`vault` or `googleSecretManager`) +2. Disable the other option by setting `enabled: false` +3. Provide all required values for your chosen solution + + + +## Validation + + + + ```bash + # Set environment variables + export GOOGLE_APPLICATION_CREDENTIALS="path/to/service-account.json" + export PROJECT_ID="your-project-id" + + # Verify access + gcloud secrets list --project=$PROJECT_ID + ``` + + + + ```bash + # Set environment variables + export VAULT_ADDR="your-vault-address" + export VAULT_NAMESPACE="admin" # For HCP Vault + export VAULT_ROLE_ID="your-role-id" + export VAULT_SECRET_ID="your-secret-id" + + # Verify access + vault write auth/approle/login \ + role_id=$VAULT_ROLE_ID \ + secret_id=$VAULT_SECRET_ID + ``` + + + +## Troubleshooting + +
+ + ### Google Secret Manager Issues + - Verify service account permissions + - Check credentials file format + - Confirm API is enabled + - Validate project ID + + + + ### Vault Issues + - Verify Vault address + - Check network access + - Confirm TLS settings + - Validate namespace (HCP) + +
+ +## Next Steps + + + ### Set up secret management service + ### Configure authentication + ### Proceed to [Metrics and Logs Setup](/launching-the-platform/self-hosted/prerequisites/metrics-and-logs) + + + +Need help? Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. + \ No newline at end of file diff --git a/content/docs/launching-the-platform/self-hosted/prerequisites/terraform.mdx b/content/docs/launching-the-platform/self-hosted/prerequisites/terraform.mdx new file mode 100644 index 00000000..f38caa43 --- /dev/null +++ b/content/docs/launching-the-platform/self-hosted/prerequisites/terraform.mdx @@ -0,0 +1,188 @@ +--- +title: Terraform Installation (Optional) +description: Optional quick setup using Terraform for testing environments +--- + +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' +import { Steps } from 'fumadocs-ui/components/steps' +import { Card } from 'fumadocs-ui/components/card' + + +### Quick Setup Only +This Terraform-based installation is designed for quick setup and testing environments only. For production deployments, we strongly recommend following the manual installation process to properly configure and secure each component according to your organization's requirements. + +**Key limitations:** +- Components run locally in the cluster without High Availability +- Basic security configurations +- Limited customization options +- Not suitable for production workloads + + +## Prerequisites + +
+ + ### Hashicorp Terraform + ```bash + brew tap hashicorp/tap + brew install hashicorp/tap/terraform + ``` + + + + ### Google Cloud Platform + ```bash + brew cask install google-cloud-sdk + gcloud auth application-default login + ``` + +
+ +## Required APIs + + + ### Enable Container API + Visit: `https://console.developers.google.com/apis/api/container.googleapis.com/overview?project=` + + ### Enable Cloud KMS API + Visit: `https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview?project=` + + +## IAM Permissions + + + + ### Recommended for Quick Setup + - `Owner` role + + + + ### Required Roles + - `Editor` + - `Cloud KMS Admin` + - `Project IAM Admin` + - `Kubernetes Engine Admin` + - `Service Account Admin` + + + +## Installation Steps + + + ### Clone Repository + ```bash + git clone git@github.com:settlemint/tutorial-btp-on-gcp.git + ``` + + ### Set Environment Variables + ```bash + # DNS zone (subdomain) for platform access + export TF_VAR_gcp_dns_zone='YOUR_DNS_ZONE' + + # Your GCP project ID + export TF_VAR_gcp_project_id='YOUR_GCP_PROJECT_ID' + + # Target GCP region + export TF_VAR_gcp_region='YOUR_GCP_REGION' + + # OAuth credentials + export TF_VAR_gcp_client_id='YOUR_GCP_CLIENT_ID' + export TF_VAR_gcp_client_secret='YOUR_GCP_CLIENT_SECRET' + + # Registry credentials (provided by SettleMint) + export TF_VAR_oci_registry_username='YOUR_REGISTRY_USERNAME' + export TF_VAR_oci_registry_password='YOUR_REGISTRY_PASSWORD' + export TF_VAR_btp_version='BTP_VERSION' + ``` + + +## DNS Zone Setup + + + ### Navigate to DNS Zone Directory + ```bash + cd tutorial-btp-on-gcp/00_dns_zone + ``` + + ### Create DNS Zone + ```bash + terraform init + terraform apply + ``` + + ### Configure Domain Registrar + Add NS records for your subdomain (e.g., btp.settlemint.com) pointing to Google nameservers: + - ns-cloud-a1.googledomains.com + - ns-cloud-a2.googledomains.com + - ns-cloud-a3.googledomains.com + - ns-cloud-a4.googledomains.com + + ### Verify DNS Delegation + ```bash + dig NS btp.settlemint.com + ``` + + +## Platform Infrastructure Setup + + + ### Navigate to Infrastructure Directory + ```bash + cd ../01_infrastructure + ``` + + ### Deploy Infrastructure + ```bash + terraform init + terraform apply + ``` + + +## Cleanup + + + ### Remove Resources + ```bash + terraform destroy + ``` + + + You may need to run the destroy command twice if the first attempt fails. + + + +## Next Steps + + + ### Access Platform + Visit `https://btp.` + + ### Complete Setup + Follow the initial setup wizard + + ### Review Documentation + Check the [platform documentation](/launching-the-platform/self-hosted/introduction) + + +## Troubleshooting + +
+ + ### Common Issues + - Verify all environment variables are set correctly + - Ensure DNS delegation is complete (can take up to 48 hours) + - Check Terraform logs for specific error messages + + + + ### Get Help + - Review error messages in detail + - Check GCP quotas and limits + - Contact [support@settlemint.com](mailto:support@settlemint.com) + +
+ + +The Terraform installation is designed for demonstration and testing. For production deployments, we recommend following the manual installation process to configure each component according to your specific requirements. + \ No newline at end of file diff --git a/content/docs/meta.json b/content/docs/meta.json new file mode 100644 index 00000000..c895c1df --- /dev/null +++ b/content/docs/meta.json @@ -0,0 +1,5 @@ + { + "title": "Meta", + "icon": "Grid2x2Plus", + "pages": ["about-settlemint", "launching-the-platform" ,"building-with-settlemint","developer-guides","blockchain-guides","support","account-billing","releases","reference","terms-and-policies","security" ] +} diff --git a/docs/reference/.gitignore b/content/docs/reference/.gitignore similarity index 100% rename from docs/reference/.gitignore rename to content/docs/reference/.gitignore diff --git a/content/docs/reference/meta.json b/content/docs/reference/meta.json new file mode 100644 index 00000000..742f76aa --- /dev/null +++ b/content/docs/reference/meta.json @@ -0,0 +1,5 @@ +{ + "title": "Reference", + "icon": "Library", + "position": 9 +} diff --git a/docs/reference/service-requirements.md b/content/docs/reference/service-requirements.mdx similarity index 95% rename from docs/reference/service-requirements.md rename to content/docs/reference/service-requirements.mdx index 40f80d22..8642b472 100644 --- a/docs/reference/service-requirements.md +++ b/content/docs/reference/service-requirements.mdx @@ -1,16 +1,18 @@ --- title: Service Requirements -sidebar_position: 3 description: Resource requirements for blockchain services that can be deployed on the platform --- +import { Tabs, Tab } from 'fumadocs-ui/components/tabs' +import { Callout } from 'fumadocs-ui/components/callout' + # Service Requirements This document outlines the resource requirements for various services that can be deployed on the platform. Each service is available in different tiers and deployment modes to suit your needs. -:::info Self-Hosted Installations + For self-hosted installations, when calculating infrastructure requirements, you should only consider the **Dedicated** mode specifications. Shared mode is only applicable for cloud-hosted deployments. -::: + ## Deployment Modes @@ -25,17 +27,22 @@ Each mode comes in three sizes: - **Medium**: For production environments with moderate load - **Large**: For high-performance production environments -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - - + + ## Public Networks ### Avalanche -- **Mainnet Node** +**Mainnet Node** | Size | Mode | CPU (cores) | Memory (GB) | Storage (GB) | RPS | | ------ | --------- | ----------- | ----------- | ------------ | --- | @@ -210,9 +217,9 @@ import TabItem from '@theme/TabItem'; | Small | Dedicated | 0.75 | 1.25 | 10 | 10 | | Medium | Dedicated | 1.5 | 2.5 | 100 | 20 | | Large | Dedicated | 2.25 | 3.75 | 500 | 30 | + - - + ### Solidity Smart Contract Set @@ -224,9 +231,9 @@ import TabItem from '@theme/TabItem'; | Small | Shared | 2.0 | 1.0 | 10 | - | | Medium | Shared | 4.0 | 2.0 | 20 | - | | Large | Shared | 6.0 | 3.0 | 30 | - | + - - + ### Attestation Indexer @@ -271,9 +278,9 @@ import TabItem from '@theme/TabItem'; | Small | Shared | 0.25 | 0.25 | 5 | 20 | | Medium | Shared | 0.5 | 0.5 | 10 | 30 | | Large | Shared | 0.75 | 0.75 | 20 | 40 | + - - + ### Integration Studio @@ -296,9 +303,9 @@ import TabItem from '@theme/TabItem'; | Small | Shared | 1.0 | 2.0 | 20 | 10 | | Medium | Shared | 2.0 | 4.0 | 50 | 20 | | Large | Shared | 3.0 | 6.0 | 100 | 30 | + - - + ### Blocksout Explorer @@ -321,9 +328,9 @@ import TabItem from '@theme/TabItem'; | Small | Shared | 0.75 | 1.25 | 10 | 10 | | Medium | Shared | 1.5 | 2.5 | 100 | 20 | | Large | Shared | 2.25 | 3.75 | 500 | 30 | + - - + ### Custom Deployments @@ -335,9 +342,9 @@ import TabItem from '@theme/TabItem'; | Small | Shared | 0.5 | 0.5 | - | 50 | | Medium | Shared | 1.0 | 1.0 | - | 100 | | Large | Shared | 2.0 | 2.0 | - | 150 | + - - + ### Minio Storage @@ -360,12 +367,9 @@ import TabItem from '@theme/TabItem'; | Small | Shared | 0.5 | 1.0 | 10 | 10 | | Medium | Shared | 1.0 | 2.0 | 50 | 20 | | Large | Shared | 1.5 | 3.0 | 100 | 30 | - - + ---- - ## Resource Allocation Notes - CPU resources are measured in cores @@ -374,10 +378,10 @@ import TabItem from '@theme/TabItem'; - RPS indicates Requests Per Second capacity - Some services don't require persistent storage (indicated by "-") -:::tip Sizing Recommendation + For production environments, we recommend: - Starting with Medium size for moderate workloads - Using Dedicated mode for critical infrastructure - Planning for 30% additional capacity for growth - ::: + diff --git a/content/docs/releases/2024.mdx b/content/docs/releases/2024.mdx new file mode 100644 index 00000000..16940556 --- /dev/null +++ b/content/docs/releases/2024.mdx @@ -0,0 +1,319 @@ +--- +title: "2024" +--- + +## Introducing the SettleMint SDK + + + +We're excited to announce the release of the **SettleMint SDK**, a powerful toolkit designed to streamline blockchain integration into modern applications. This comprehensive solution provides developers with everything needed to build and integrate blockchain solutions effectively. + +**Key Features** + +- **Comprehensive Integration**: Complete suite of tools for interacting with SettleMint's blockchain platform services including Smart Contracts, Smart Contract Portal Middleware, The Graph Middleware, IPFS, MinIO, and Blockchain Explorer +- **Modular Architecture**: Specialized packages that let you pick and choose the exact blockchain functionalities your application needs +- **Developer Experience**: Rich development tools with CLI capabilities and extensive documentation to accelerate your development process +- **Enterprise Ready**: Production-grade components with built-in support for Next.js, GraphQL, and other enterprise technologies +- **Type Safety**: Full TypeScript support across all packages, ensuring strong typing and modern development patterns + +The SDK simplifies blockchain development by providing pre-built components, utilities, and integrations while maintaining high standards for type safety, performance, and developer experience. Whether you're building a new blockchain application or integrating blockchain capabilities into an existing system, the SettleMint SDK provides the tools you need. + +The SDK is open source and available under the FSL Software License. To get started, visit our [SDK documentation](/docs/using-platform/dev-tools/SDK/) or explore the [SDK GitHub repository](https://github.com/settlemint/sdk). + +> This is just the beginning! We'll be continuously expanding the SDK's capabilities based on developer feedback and needs. Stay tuned for more updates and features. + +## Introducing Dev Tools + +![Changelog Image](./assets/dev-tools.png) + +We've made some exciting changes to improve your development experience: + +**What's New** + +- We've introduced a new **Dev Tools** section that will host various services aimed at making the development of decentralized applications easier +- The first tool we're launching is **Code Studio** - our Integrated Development Environment (IDE) based on Visual Studio Code +- Smart contract sets are now available as the first type of Code Studio +- For more information on Dev Tools, please refer to the [Dev Tools documentation](/docs/using-platform/dev-tools/) + +**What's Changed** + +- The "Smart contract sets" service has moved into Dev Tools +- Don't worry - all the same great features of Smart contract sets are still there, just in a new home! + +**Coming Soon** + +Stay tuned for more types of Code Studios that will make building decentralized applications even easier! + +--- + +**Note**: All existing Smart contract sets functionality remains unchanged - we've just reorganized things to make room for more developer tools. + +## Zeto Smart Contract Set + +We're excited to introduce the Zeto Smart Contract Set, bringing comprehensive zero-knowledge token capabilities to the SettleMint platform. + +### Token Types + +#### Fungible Tokens + +1. **Zeto_Anon** + + - Basic anonymous transfers + - Privacy-preserving transactions + - Standard fungible features + +2. **Zeto_AnonEnc** + + - Encrypted anonymous transfers + - Enhanced privacy features + - Encrypted transaction data + +3. **Zeto_AnonNullifier** + + - Anonymous with nullifiers + - Prevents double-spending + - Transaction tracking without revealing details + +4. **Zeto_AnonNullifierKyc** + + - KYC-enabled anonymous transfers + - Regulatory compliance features + - Identity verification while maintaining privacy + +5. **Zeto_AnonEncNullifier** + + - Encrypted transfers with nullifiers + - Combined encryption and tracking + - Maximum privacy with spending controls + +6. **Zeto_AnonEncNullifierKyc** + - KYC-enabled encrypted transfers + - Full suite of privacy features + - Compliant with regulatory requirements + +#### Non-Fungible Tokens + +1. **Zeto_NfAnon** + + - Basic anonymous NFTs + - Private ownership + - Hidden transfer history + +2. **Zeto_NfAnonNullifier** + - NFTs with nullifiers + - Trackable unique assets + - Privacy-preserving ownership transfers + +### Zero-Knowledge DVP (Delivery vs Payment) + +- Atomic swaps between any token types +- Private order matching +- Secure settlement verification + +### Testing, Deployment & Trusted Setup + +- Fast test deployments with pre-configured environments +- Local development setup +- Production deployment helpers & MPC trusted setup guides + +### Subgraph Integration + +Pre-configured subgraph templates for all contracts + +### Open Source Zeto Deployment + +- Zeto smart contracts repository: [github.com/settlemint/solidity-zeto](https://github.com/settlemint/solidity-zeto) + +## Simplified Subgraph Deployments + +We've significantly simplified the subgraph deployment process. Here's what's changed: + +**Previously:** + +- Required deploying a smart contract set +- Required IPFS deployment +- Middleware needed explicit connections to both smart contract set and IPFS +- Subgraphs could only be deployed to middlewares from their connected smart contract set + +**Now:** + +- Deploy middlewares independently without a smart contract set or IPFS required +- Deploy subgraphs from any smart contract set to any middleware within an application + +**Key Benefits:** + +- Simplified architecture: Reduced deployment complexity and dependencies +- Cost efficiency: Reuse graph middlewares across different smart contract sets +- Enhanced flexibility: Freedom to deploy subgraphs from any smart contract set to any middleware + +## Run anything as a custom deployment + +![Changelog Image](./assets/run-anything-as-a-custom-deployment.png) + +SettleMint is excited to announce a powerful new feature: **Run Anything with Custom Deployments**! This feature revolutionizes how users can deploy decentralized applications (dApps) on our platform, offering unprecedented flexibility and control. Whether you’re developing a fintech platform, an NFT marketplace, or a DeFi solution, Custom Deployments let you seamlessly integrate your custom-built front-end and web technologies while leveraging the robust blockchain backend that SettleMint provides. + +With **Custom Deployments**, you now have the freedom to design applications according to your specific needs. This includes using custom domains for a more professional appearance, integrating advanced functionalities, and selecting the best infrastructure for your use case. The platform allows for flexible application design, which means you can use your preferred frameworks, programming languages, and design architectures without limitations. For instance, a fintech company developing a peer-to-peer lending platform can now deploy a user-friendly interface that meets their precise user requirements, streamlining the entire deployment process. + +Moreover, this feature unlocks enhanced scalability and security for your dApps. With SettleMint’s scalable infrastructure, you can handle high traffic and performance peaks seamlessly, ensuring your application grows as your user base expands. Additionally, our secure environment ensures your deployments meet the highest security standards, making Custom Deployments perfect for businesses that need to maintain trust and reliability with their users, such as investment firms launching asset tokenization platforms or DeFi platforms managing cross-chain transfers. + +## Integration of external consortia + +![Changelog Image](./assets/integration-of-external-consortia.png) + +We’re excited to introduce a new feature in SettleMint that lets you connect directly to existing Hyperledger Besu and Quorum blockchain networks run by other organizations. This is a big win for businesses already involved in blockchain consortia or those looking to join one. With this feature, you can create nodes on the SettleMint platform and easily integrate with these permissioned networks, making collaboration with external partners more streamlined and secure. + +For companies working within consortia, this feature simplifies the process of joining networks that are already up and running. Whether you’re part of a supply chain network, a financial services consortium, or any other multi-party blockchain setup, you can now seamlessly connect without needing to build or manage the entire network yourself. This opens the door to stronger collaboration and more efficient operations, as all members of the consortium can easily contribute while maintaining control over their own nodes. + +By allowing organizations to integrate into these existing networks, this feature helps businesses accelerate their blockchain journey. It’s a powerful tool for enhancing transparency, security, and trust between partners in a consortium. With SettleMint, you can now tap into the benefits of shared blockchain networks with minimal setup, helping your enterprise grow and innovate alongside trusted collaborators. + +## Support the Soneium Network + +![Changelog Image](./assets/support-the-soneium-network.png) + +SettleMint’s support for the Soneium testnet is a significant boost for developers wanting to build on this efficient blockchain platform. Soneium is designed for scalability and offers a great environment for testing decentralized applications (dApps) before going live. With this integration, developers can take advantage of SettleMint’s powerful tools while experimenting with Soneium’s features, like low transaction costs and high processing speed. This makes it easier for teams to test their applications effectively and make quick adjustments as needed. + +By supporting the Soneium testnet, SettleMint improves the development experience by providing a secure and flexible space for developers to refine their applications. Users can easily deploy their dApps on the Soneium testnet, benefiting from its advanced features while using SettleMint’s straightforward interface and tools. This partnership not only encourages innovation but also helps developers create more reliable and efficient blockchain solutions, supporting the growth and adoption of the Soneium ecosystem. + +SettleMint is also committed to supporting the Soneium mainnet as soon as it goes live. This means that developers who have been testing their applications on the Soneium testnet can seamlessly transition to the mainnet without any disruptions. By providing immediate support for the mainnet, SettleMint ensures that developers can launch their dApps confidently, leveraging the full capabilities of the Soneium blockchain from day one. This approach not only streamlines the deployment process but also allows teams to continue building on the solid foundation they established during their testing phase, making it easier to bring innovative solutions to the market. + +## User Wallet Manager + +![Changelog Image](./assets/user-wallet-manager.png) + +The User Wallet Manager feature within SettleMint provides a sophisticated and elegant solution for account management and identity masking through the use of Hierarchical Deterministic (HD) wallets. These HD wallets generate a structured hierarchy of private/public key pairs from a single master seed, allowing users to create a unique address for every transaction. This approach not only enhances privacy and security—since the addresses are related but not publicly linked—but also streamlines the management of keys. Users can efficiently create multiple child wallets under a single parent wallet, making it easy to categorize funds and back up their assets securely. + +One of the most significant benefits of the User Wallet Manager is its ability to mask user identity on a per-transaction basis. This feature provides an unlimited supply of account addresses, each with its own unique, untraceable private key. Organizations can manage different transaction classes or allocate accounts for various end users, significantly enhancing operational flexibility. This capability is especially beneficial for businesses that require distinct accounts for different functions, enabling them to avoid key reuse and duplicate signing, which can pose security risks. + +Moreover, the User Wallet Manager’s HD wallet functionality greatly simplifies asset management for both individuals and enterprises. By allowing businesses to partition separate wallets within their organization, it enhances organizational efficiency and security. The ability to recover entire wallet structures from a single master seed minimizes the risk associated with losing individual keys, making it an attractive option for financial services looking to deliver a secure blockchain solution. + +## Customize Kubernetes deployment settings + +![Changelog Image](./assets/customize-kubernetes-deployment-settings.png) + +The feature to customize Kubernetes deployment settings within SettleMint offers users an intuitive user interface (UI) that simplifies the management of deployed services in self-managed installations. This UI provides a comprehensive set of options for adjusting key deployment parameters, such as annotations, labels, tolerations, affinity, and node selectors. By making these customization options readily accessible, SettleMint enables users to tailor their Kubernetes configurations to better align with their specific operational needs and infrastructure requirements, fostering a more efficient and optimized deployment process. + +One of the standout benefits of this feature is its ability to facilitate seamless integration into existing infrastructure. Organizations often have unique requirements based on their operational environment, and the customization options provided by SettleMint empower users to implement any necessary settings effortlessly. This flexibility ensures that deployments can adhere to organizational policies and best practices while maintaining compatibility with the broader Kubernetes ecosystem. By allowing users to specify their desired configurations directly through the UI, SettleMint reduces the complexity typically associated with Kubernetes management, allowing teams to focus on their core business objectives. + +Moreover, the customization of deployment settings significantly enhances the scalability and resilience of services within the Kubernetes environment. By leveraging advanced features like affinity and tolerations, users can optimize resource allocation and improve workload distribution across nodes, leading to better performance and reliability. The ability to modify labels and annotations also aids in effective resource management, enabling users to implement advanced monitoring, logging, and orchestration strategies tailored to their needs. Overall, this feature empowers users to harness the full potential of their Kubernetes deployments, ensuring they can operate efficiently and effectively within their own customized infrastructure. + +## Support QBFT for Besu + +![Changelog Image](./assets/support-qbft-for-besu.png) + +QBFT (Quorum Byzantine Fault Tolerance) is the latest consensus algorithm now available in Hyperledger Besu on the SettleMint platform. This proof-of-authority consensus mechanism is designed to provide enhanced security, scalability, and performance for enterprise blockchain networks. QBFT ensures that all participating nodes in the network agree on the state of the blockchain, even in the presence of potentially malicious actors or network failures. By utilizing a leader-based system with rotating block proposers, QBFT maintains network integrity while allowing for efficient transaction processing. + +Compared to its predecessor, IBFTv2, QBFT offers several significant improvements. First and foremost, QBFT provides immediate transaction finality, meaning that once a block is added to the chain, it's considered final and cannot be reversed. This feature is particularly crucial for financial applications where transaction certainty is paramount. Additionally, QBFT boasts enhanced performance metrics, with faster block times and higher transaction throughput. The algorithm also incorporates improved security measures, including protection against certain types of attacks that could potentially compromise IBFTv2 networks. These enhancements make QBFT a more robust and efficient choice for enterprise-grade blockchain deployments. + +We're excited to announce that QBFT is now the default consensus algorithm for all new Hyperledger Besu networks deployed on the SettleMint platform. This means that users can immediately take advantage of QBFT's benefits when launching their blockchain projects. + +## Attestation Service + +![Changelog Image](./assets/attestation-service.png) + +The Attestation Service is a groundbreaking framework designed to facilitate the creation, management, and verification of attestations on EVM cpmpatible blockchains (public or cosortium). By leveraging the decentralized and immutable nature of blockchain technology, it allows individuals and organizations to issue verifiable statements of fact, which can include anything from identity verification to compliance with regulatory standards. This service empowers users to maintain control over their data while providing transparency and trustworthiness to various processes. + +One of the most remarkable aspects of the Attestation Service is its potential to streamline numerous processes across various industries. For instance, in the realm of education, institutions can issue verified diplomas and certifications that are tamper-proof, ensuring that employers can trust the qualifications of job candidates. In healthcare, medical professionals can share validated credentials, thus enhancing patient safety and care quality. The Attestation Service also plays a crucial role in compliance-related scenarios, allowing businesses to demonstrate adherence to regulations and standards seamlessly, reducing the burden of paperwork and audits. + +The versatility of the Attestation Service extends to a wide array of use cases, making it an invaluable tool for both individuals and enterprises. Beyond identity verification and compliance, EAS can be applied to create transparent voting systems, enhance reputation management in decentralized finance (DeFi), and even support peer-to-peer lending by validating the creditworthiness of borrowers. Moreover, in the realm of environmental sustainability, it can help track and verify carbon credits, ensuring that claims about carbon offsets are accurate and trustworthy. Overall, the Ethereum Attestation Service stands as a transformative solution, unlocking new possibilities for trust and verification in our increasingly digital world. + +## Customize Genesis, Bootnode lists and key material + +![Changelog Image](./assets/customize-genesis-bootnode-lists-and-key-material.png) + +You can now create new consortium networks where you have the capability to customize literally everything. + +1. You can build your own genesis files, +2. Import them from external sources +3. Customize boot node lists and the key material used for your nodes + +This allows you to do a variety of use cases that were impossible before. + +For example, you can migrate between different networks and different instances of the SettleMint platform. You can execute your own hard forks, customize settings that are not customizable via the UI, join external consortia that are restricted by identity or just in general join any external network you want. + +## Audit logs + +![Changelog Image](./assets/audit-logs.png) + +Every application and organization/workspace now has full access to the audit log. This will help you ensure maximum compliance in enterprise environments. + +## Smart Contract Portal + +![Changelog Image](./assets/smart-contract-set-portal.png) + +The Smart Contract Portal is a middleware which creates an easy to use api on top of your smart contracts. It can be used with all EVM-compatible chains like Ethereum, Hyperledger Besu, Polygon, Binance Smart Chain, Avalanche, etc. You can run it on your own blockchain nodes (both public and permissioned) or on a Load Balancer. +Benefits of using the smart contract portal: + +1. Simplified Integration: APIs allow developers to interact with complex smart contract functions through familiar interfaces, reducing the need to understand blockchain-specific languages and [protocols.](http://protocols.Data) + +2. Data Aggregation: APIs can consolidate data from multiple smart contracts, providing a unified view. + +3. Improved Performance: GraphQL optimizes data fetching, ensuring that clients retrieve only the necessary data in a single request, reducing network load and improving performance. + +4. Stack agnostic: Teams are free to choose their own technology stack. + +## Installation guide for GCP + +![Changelog Image](./assets/installation-guide-for-google-cloud-platform.png) + +Getting started with the self-managed platform might seem daunting, but in practice it is not that complex. To showcase this we have open-sourced a complete guide and Terraform module to do so on GCP. From 0 to hero in about 30 minutes! + +Get started today on [https://github.com/settlemint/tutorial-btp-on-gcp ](https://github.com/settlemint/tutorial-btp-on-gcp) + +## Hashgraph Hedera + +![Changelog Image](./assets/hashgraph-hedera.png) + +Hedera is a public distributed ledger technology (DLT) network that was launched in August 2018 by Hedera Hashgraph, LLC. It uses the Hashgraph consensus algorithm, which is a unique and novel approach to achieving consensus in a distributed network. + +Hedera's native cryptocurrency is called HBAR, and it is used to power the network’s services, including smart contracts, file storage, and regular transactions. + +Hedera focuses on providing high throughput, low latency, and fair transaction ordering, making it suitable for enterprise-grade applications. Unlike blockchain-based systems, Hedera’s Hashgraph algorithm ensures fast, fair, and secure transactions without compromising decentralization. We support, the Hedera Mainnet and the Hedera Testnet. + +## Embedded o11y infrastructure + +![Changelog Image](./assets/embedded-o11y-infrastructure.png) + +The platform now includes a complete observability suite. It powers the resource metrics and logs in the platform UI, and includes a Grafana instance for operation personel to track any metric they wish to follow. + +## Polygon Amoy + +![Changelog Image](./assets/polygon-amoy.png) + +The beloved and widely used Mumbai testnet for Polygon PoS uses Ethereum Goerli testnet as its root chain. This means Mumbai counts on Goerli for block production.  +But Goerli is currently scheduled for deprecation, by the end of Q1 2024. The Amoy testnet for Polygon PoS is the replacement and has been launched, a new testnet that provides a low-stakes environment to build, test, and break things.  +Amoy will use Ethereum Sepolia testnet as the root (L1) chain. Developers deploying on Amoy can continue to count on the availability of essential validators, infra, faucets, tooling, and more, in a sustainable and future-proof environment. +Now available in the SettleMint platform. + +> Any Mumbai nodes will cease to function in the near future, please migrate your applications as soon as possible. + +## Managed Platform v7 + +![Changelog Image](./assets/managed-platform-v7.png) + +The managed platform has been upgraded to the same codebase as the earlier Self-Managed release, providing a secure and more importantly, low barrier entry to transofring your organisation with Blockchain + +## Self-Managed platform v7 + +![Changelog Image](./assets/self-managed-platform-v7.png) + +Fully modular overhaul of the self managed platform to enable maximum flexibility in its deployment and feature parity with the Managed Platform + +- New and improved Helm chart to deploy the platform on your own infrastructure + +- Fully customisable and configurable via the Helm values + +- Complete feature parity, from services to service deployment with the Managed platform (same codebase and helm chart) + +- Dramatically improved performance in restrictive environments + +- [Open-Source Smart Contract](https://github.com/settlemint) sets and the ability to build custom sets from these templates and add them as default options in the platform + +Get in touch with your SettleMint contact to upgrade or start a trial diff --git a/static/img/releases/attestation-service.png b/content/docs/releases/assets/attestation-service.png similarity index 100% rename from static/img/releases/attestation-service.png rename to content/docs/releases/assets/attestation-service.png diff --git a/static/img/releases/audit-logs.png b/content/docs/releases/assets/audit-logs.png similarity index 100% rename from static/img/releases/audit-logs.png rename to content/docs/releases/assets/audit-logs.png diff --git a/static/img/releases/customize-genesis-bootnode-lists-and-key-material.png b/content/docs/releases/assets/customize-genesis-bootnode-lists-and-key-material.png similarity index 100% rename from static/img/releases/customize-genesis-bootnode-lists-and-key-material.png rename to content/docs/releases/assets/customize-genesis-bootnode-lists-and-key-material.png diff --git a/static/img/releases/customize-kubernetes-deployment-settings.png b/content/docs/releases/assets/customize-kubernetes-deployment-settings.png similarity index 100% rename from static/img/releases/customize-kubernetes-deployment-settings.png rename to content/docs/releases/assets/customize-kubernetes-deployment-settings.png diff --git a/static/img/releases/dev-tools.png b/content/docs/releases/assets/dev-tools.png similarity index 100% rename from static/img/releases/dev-tools.png rename to content/docs/releases/assets/dev-tools.png diff --git a/static/img/releases/embedded-o11y-infrastructure.png b/content/docs/releases/assets/embedded-o11y-infrastructure.png similarity index 100% rename from static/img/releases/embedded-o11y-infrastructure.png rename to content/docs/releases/assets/embedded-o11y-infrastructure.png diff --git a/static/img/releases/hashgraph-hedera.png b/content/docs/releases/assets/hashgraph-hedera.png similarity index 100% rename from static/img/releases/hashgraph-hedera.png rename to content/docs/releases/assets/hashgraph-hedera.png diff --git a/static/img/releases/installation-guide-for-google-cloud-platform.png b/content/docs/releases/assets/installation-guide-for-google-cloud-platform.png similarity index 100% rename from static/img/releases/installation-guide-for-google-cloud-platform.png rename to content/docs/releases/assets/installation-guide-for-google-cloud-platform.png diff --git a/static/img/releases/integration-of-external-consortia.png b/content/docs/releases/assets/integration-of-external-consortia.png similarity index 100% rename from static/img/releases/integration-of-external-consortia.png rename to content/docs/releases/assets/integration-of-external-consortia.png diff --git a/static/img/releases/managed-platform-v7.png b/content/docs/releases/assets/managed-platform-v7.png similarity index 100% rename from static/img/releases/managed-platform-v7.png rename to content/docs/releases/assets/managed-platform-v7.png diff --git a/static/img/releases/polygon-amoy.png b/content/docs/releases/assets/polygon-amoy.png similarity index 100% rename from static/img/releases/polygon-amoy.png rename to content/docs/releases/assets/polygon-amoy.png diff --git a/static/img/releases/run-anything-as-a-custom-deployment.png b/content/docs/releases/assets/run-anything-as-a-custom-deployment.png similarity index 100% rename from static/img/releases/run-anything-as-a-custom-deployment.png rename to content/docs/releases/assets/run-anything-as-a-custom-deployment.png diff --git a/static/img/releases/self-managed-platform-v7.png b/content/docs/releases/assets/self-managed-platform-v7.png similarity index 100% rename from static/img/releases/self-managed-platform-v7.png rename to content/docs/releases/assets/self-managed-platform-v7.png diff --git a/static/img/releases/smart-contract-set-portal.png b/content/docs/releases/assets/smart-contract-set-portal.png similarity index 100% rename from static/img/releases/smart-contract-set-portal.png rename to content/docs/releases/assets/smart-contract-set-portal.png diff --git a/static/img/releases/support-qbft-for-besu.png b/content/docs/releases/assets/support-qbft-for-besu.png similarity index 100% rename from static/img/releases/support-qbft-for-besu.png rename to content/docs/releases/assets/support-qbft-for-besu.png diff --git a/static/img/releases/support-the-soneium-network.png b/content/docs/releases/assets/support-the-soneium-network.png similarity index 100% rename from static/img/releases/support-the-soneium-network.png rename to content/docs/releases/assets/support-the-soneium-network.png diff --git a/static/img/releases/user-wallet-manager.png b/content/docs/releases/assets/user-wallet-manager.png similarity index 100% rename from static/img/releases/user-wallet-manager.png rename to content/docs/releases/assets/user-wallet-manager.png diff --git a/content/docs/releases/meta.json b/content/docs/releases/meta.json new file mode 100644 index 00000000..8ecc2d8b --- /dev/null +++ b/content/docs/releases/meta.json @@ -0,0 +1,4 @@ +{ + "title": "Release Notes", + "icon": "PackagePlus" +} diff --git a/docs/security/4_application_security.md b/content/docs/security/application-security.mdx similarity index 97% rename from docs/security/4_application_security.md rename to content/docs/security/application-security.mdx index 25e0392f..e58cf7ce 100644 --- a/docs/security/4_application_security.md +++ b/content/docs/security/application-security.mdx @@ -1,10 +1,7 @@ --- -id: application-security title: Application Security --- -# Application Security - Our development process integrates security at every stage. We follow best practices and employ advanced tools to ensure the security of our applications. ## Secure Software Development Lifecycle (SDLC) diff --git a/docs/security/2_compliance-and-certifications.md b/content/docs/security/compliance-and-certifications.mdx similarity index 97% rename from docs/security/2_compliance-and-certifications.md rename to content/docs/security/compliance-and-certifications.mdx index cabef2d5..c6edc7c8 100644 --- a/docs/security/2_compliance-and-certifications.md +++ b/content/docs/security/compliance-and-certifications.mdx @@ -1,10 +1,7 @@ --- -id: compliance-and-certifications title: Compliance and Certifications --- -# Compliance and Certifications - SettleMint is committed to maintaining compliance with industry standards and regulations. We have obtained several certifications that demonstrate our dedication to security and quality. ## Industry Standards and Certifications diff --git a/docs/security/5_data_security.md b/content/docs/security/data-security.mdx similarity index 97% rename from docs/security/5_data_security.md rename to content/docs/security/data-security.mdx index f9fab251..048bd734 100644 --- a/docs/security/5_data_security.md +++ b/content/docs/security/data-security.mdx @@ -1,10 +1,7 @@ --- -id: data-security title: Data Security --- -# Data Security - We employ advanced encryption techniques and data protection measures to ensure the security of data at all times. ## Data Encryption diff --git a/docs/security/6_incident_response.md b/content/docs/security/incident-response.mdx similarity index 96% rename from docs/security/6_incident_response.md rename to content/docs/security/incident-response.mdx index 3bae7807..13bfe3ad 100644 --- a/docs/security/6_incident_response.md +++ b/content/docs/security/incident-response.mdx @@ -1,10 +1,7 @@ --- -id: incident-response title: Incident Response --- -# Incident Response - We have a detailed incident response plan in place to address security incidents promptly and effectively. ## Incident Detection diff --git a/docs/security/0_introduction.md b/content/docs/security/index.mdx similarity index 97% rename from docs/security/0_introduction.md rename to content/docs/security/index.mdx index 5b419b36..877e332a 100644 --- a/docs/security/0_introduction.md +++ b/content/docs/security/index.mdx @@ -1,10 +1,7 @@ --- -id: introduction title: Introduction --- -# Introduction - At SettleMint, we prioritize the security of our clients' data and systems. Our comprehensive security posture encompasses policies, procedures, and technologies designed to protect against a wide range of threats. This document outlines the key elements of our security strategy and demonstrates our commitment to maintaining the highest standards of security. ## Our Commitment to Security diff --git a/docs/security/3_infrastructure_security.md b/content/docs/security/infrastructure-security.mdx similarity index 98% rename from docs/security/3_infrastructure_security.md rename to content/docs/security/infrastructure-security.mdx index 0ef523b8..ffd1ce36 100644 --- a/docs/security/3_infrastructure_security.md +++ b/content/docs/security/infrastructure-security.mdx @@ -1,10 +1,7 @@ --- -id: infrastructure-security title: Infrastructure Security --- -# Infrastructure Security - Our infrastructure is designed with multiple layers of security to protect against various threats. We employ advanced technologies and best practices to ensure the security and resilience of our systems. ## Cloud Security diff --git a/content/docs/security/meta.json b/content/docs/security/meta.json new file mode 100644 index 00000000..04081c2e --- /dev/null +++ b/content/docs/security/meta.json @@ -0,0 +1,13 @@ +{ + "title": "Security", + "icon": "ShieldCheck", + "pages": [ + "security-policies", + "compliance-and-certifications", + "infrastructure-security", + "application-security", + "data-security", + "incident-response", + "security-scanners" + ] +} diff --git a/docs/security/1_security-policies.md b/content/docs/security/security-policies.mdx similarity index 98% rename from docs/security/1_security-policies.md rename to content/docs/security/security-policies.mdx index 35998827..0c7666a4 100644 --- a/docs/security/1_security-policies.md +++ b/content/docs/security/security-policies.mdx @@ -1,10 +1,7 @@ --- -id: security-policies title: Security Policies --- -# Security Policies - SettleMint has established comprehensive security policies to safeguard our systems and data. These policies are designed to ensure the confidentiality, integrity, and availability of information. ## Data Protection and Privacy diff --git a/docs/security/7_security_scanners.md b/content/docs/security/security-scanners.mdx similarity index 91% rename from docs/security/7_security_scanners.md rename to content/docs/security/security-scanners.mdx index dd45e713..8d4ddeb5 100644 --- a/docs/security/7_security_scanners.md +++ b/content/docs/security/security-scanners.mdx @@ -1,10 +1,7 @@ --- -id: security-scanners title: Security Scanners --- -# Security Scanners - SettleMint uses advanced security scanners to maintain the integrity and security of our codebase and dependencies. This page provides detailed information about the scanners we use, including Aikido, TruffleHog, and Renovate. ## Aikido @@ -46,10 +43,6 @@ Renovate is a dependency management tool that automates the process of updating - **Pull Request Creation**: Automatically generates pull requests for updates, simplifying the update process. - **Compatibility Checks**: Ensures that updates are compatible with the existing codebase, reducing the risk of breaking changes. -## Chainguard Docker Images - -We use Chainguard Docker images for most of the images we use. Chainguard images are known for their enhanced security features, which further strengthens our overall security posture. However, it's important to note that Chainguard does not provide images for everything, so we complement them with other solutions as needed. - ## Integration with CI/CD Pipeline These security scanners are integrated into our CI/CD pipeline to provide continuous security checks and ensure that vulnerabilities are identified and addressed promptly. diff --git a/content/docs/support/meta.json b/content/docs/support/meta.json new file mode 100644 index 00000000..0f08152f --- /dev/null +++ b/content/docs/support/meta.json @@ -0,0 +1,5 @@ +{ + "label": "Get Support", + "position": 5, + "icon": "LifeBuoy" +} diff --git a/docs/support/support.md b/content/docs/support/support.md similarity index 89% rename from docs/support/support.md rename to content/docs/support/support.md index 06d46d82..3b093f67 100644 --- a/docs/support/support.md +++ b/content/docs/support/support.md @@ -1,3 +1,7 @@ +--- +title: "Get Support" +--- + # Contact Us We are here to provide support for all your troubleshooting and technical questions. diff --git a/docs/terms-and-policies/1_cookie-policy.md b/content/docs/terms-and-policies/cookie-policy.mdx similarity index 98% rename from docs/terms-and-policies/1_cookie-policy.md rename to content/docs/terms-and-policies/cookie-policy.mdx index b8e209d4..702da401 100644 --- a/docs/terms-and-policies/1_cookie-policy.md +++ b/content/docs/terms-and-policies/cookie-policy.mdx @@ -1,4 +1,6 @@ -# Cookie policy +--- +title: Cookie Policy +--- ## 1. What are cookies? diff --git a/docs/terms-and-policies/3_gdpr_guide.md b/content/docs/terms-and-policies/gdpr-guide.mdx similarity index 97% rename from docs/terms-and-policies/3_gdpr_guide.md rename to content/docs/terms-and-policies/gdpr-guide.mdx index ec4dcbb6..aae55987 100644 --- a/docs/terms-and-policies/3_gdpr_guide.md +++ b/content/docs/terms-and-policies/gdpr-guide.mdx @@ -1,4 +1,6 @@ -# GDPR Compliance for Blockchain Applications: A Guide for European Companies +--- +title: "GDPR Compliance for Blockchain Applications: A Guide for European Companies" +--- ## Introduction diff --git a/content/docs/terms-and-policies/meta.json b/content/docs/terms-and-policies/meta.json new file mode 100644 index 00000000..c746c3c0 --- /dev/null +++ b/content/docs/terms-and-policies/meta.json @@ -0,0 +1,5 @@ +{ + "title": "Terms & Policies", + "icon": "Scale", + "pages": ["terms-of-service", "cookie-policy", "privacy-policy", "gdpr-guide"] +} diff --git a/docs/terms-and-policies/2_privacy-policy.md b/content/docs/terms-and-policies/privacy-policy.mdx similarity index 98% rename from docs/terms-and-policies/2_privacy-policy.md rename to content/docs/terms-and-policies/privacy-policy.mdx index 72dfb4f8..f9595942 100644 --- a/docs/terms-and-policies/2_privacy-policy.md +++ b/content/docs/terms-and-policies/privacy-policy.mdx @@ -1,4 +1,6 @@ -# Privacy policy +--- +title: Privacy Policy +--- ## 1. Who we are @@ -9,8 +11,8 @@ Your privacy is important to us, therefore we've developed this Privacy Policy, Personal data are all data that can be traced back to individual persons and identify them directly or indirectly; such as a name, phone number, location, email or home address. Should you have any questions, concerns or complaints regarding this Privacy Policy or our processing of your personal data; or you wish to submit a request to exercise your rights as set out by the GDPR, you can contact us: -(a) Via mail: privacy@settlemint.com. -(b) By post: 7Tuinen, Building B, Arnould Nobelstraat 38, 3000 Leuven, Belgium to the attention of our Data Protection Officer. +- Via mail: privacy@settlemint.com. +- By post: Arnould Nobelstraat 30, 3000 Leuven, Belgium to the attention of our Data Protection Officer. This Privacy Policy was revised last on February 21, 2021. @@ -31,7 +33,7 @@ For this purpose, we collect the following data: - Phone number - Any additional information you provide to us regarding your project -Alternatively, you can contact us by email via hello@settlemint.com, hello@certimint.com or hello@databroker.global. +Alternatively, you can contact us by email via hello@settlemint.com. We process this information based on your consent as you provided this information freely to us. ### 2.2 Newsletter diff --git a/docs/terms-and-policies/0_terms-of-service.md b/content/docs/terms-and-policies/terms-of-service.mdx similarity index 95% rename from docs/terms-and-policies/0_terms-of-service.md rename to content/docs/terms-and-policies/terms-of-service.mdx index 86a842ca..add58719 100644 --- a/docs/terms-and-policies/0_terms-of-service.md +++ b/content/docs/terms-and-policies/terms-of-service.mdx @@ -1,22 +1,24 @@ -# Terms of service +--- +title: Terms of Service +--- -SettleMint Blockchain-as-a-Service (BaaS) Platform -- Terms of Service +SettleMint Platform -- Terms of Service -DISCLAIMER: Please read these Terms of Service carefully before using the SettleMint BaaS Platform (as defined below). By clicking the "I agree" button, you agree that your use of the SettleMint BaaS Platform shall be governed by these Terms of Service. +DISCLAIMER: Please read these Terms of Service carefully before using the SettleMint Platform (as defined below). By using the platform, you agree that your use of the SettleMint Platform shall be governed by these Terms of Service. Version 2.0 -- October 15, 2021 -If you have any questions about the SettleMint BaaS Platform or these Terms of Service, please contact us at hello@settlemint.com. +If you have any questions about the SettleMint Platform or these Terms of Service, please contact us at hello@settlemint.com. -The SettleMint BaaS Platform (as defined herafter) is operated and managed by SettleMint, a limited liability company (naamloze vennootschap) having its registered office at 7Tuinen, Building B, Arnould Nobelstraat 38, 3000 Leuven (Belgium) and registered with the Crossroads Bank of Enterprises (Kruispuntbank van Ondernemingen) under company number 0661.674.810 (RLE Leuven) ("SettleMint" or "we"). +The SettleMint Platform (as defined herafter) is operated and managed by SettleMint, a limited liability company (naamloze vennootschap) having its registered office at 7Tuinen, Building B, Arnould Nobelstraat 38, 3000 Leuven (Belgium) and registered with the Crossroads Bank of Enterprises (Kruispuntbank van Ondernemingen) under company number 0661.674.810 (RLE Leuven) ("SettleMint" or "we"). -These terms of service (the "Terms of Service") describe the terms and conditions under which user(s) ("User(s)" or "you") can access and use the SettleMint BaaS Platform) except when other contractual arrangements are expressly made between SettleMint and User. The general terms and conditions of the User are not applicable and are therefore expressly excluded, even if such general terms and conditions would contain a similar clause. In the event of any conflict or inconsistency between the provisions of these Terms of Service and the provisions of any contractual arrangements between SettleMint and User, the provisions of the latter shall prevail. +These terms of service (the "Terms of Service") describe the terms and conditions under which user(s) ("User(s)" or "you") can access and use the SettleMint Platform) except when other contractual arrangements are expressly made between SettleMint and User. The general terms and conditions of the User are not applicable and are therefore expressly excluded, even if such general terms and conditions would contain a similar clause. In the event of any conflict or inconsistency between the provisions of these Terms of Service and the provisions of any contractual arrangements between SettleMint and User, the provisions of the latter shall prevail. SettleMint and the User are hereinafter jointly referred to as "Parties" and each individually as a "Party". -## 1. DESCRIPTION OF THE SettleMint BAAS PLATFORM +## 1. DESCRIPTION OF THE SettleMint PLATFORM -The SettleMint BaaS Platform is a cloud-based blockchain application building, integration and hosting platform allowing developers to build and integrate blockchain applications available at ``(the "Platform"). +The SettleMint Platform is a cloud-based blockchain application building, integration and hosting platform allowing developers to build and integrate blockchain applications available at https://console.settlemint.com (the "Platform"). ## 2. APPLICABILITY diff --git a/static/img/about-settlemint/192shots_so.png b/content/img/about-settlemint/192shots_so.png similarity index 100% rename from static/img/about-settlemint/192shots_so.png rename to content/img/about-settlemint/192shots_so.png diff --git a/static/img/about-settlemint/Blockchain Certification.png b/content/img/about-settlemint/Blockchain Certification.png similarity index 100% rename from static/img/about-settlemint/Blockchain Certification.png rename to content/img/about-settlemint/Blockchain Certification.png diff --git a/static/img/about-settlemint/ISO_27001.png b/content/img/about-settlemint/ISO_27001.png similarity index 100% rename from static/img/about-settlemint/ISO_27001.png rename to content/img/about-settlemint/ISO_27001.png diff --git a/static/img/about-settlemint/ISO_9001.png b/content/img/about-settlemint/ISO_9001.png similarity index 100% rename from static/img/about-settlemint/ISO_9001.png rename to content/img/about-settlemint/ISO_9001.png diff --git a/static/img/about-settlemint/SM_blockchain-made-easy.png b/content/img/about-settlemint/SM_blockchain-made-easy.png similarity index 100% rename from static/img/about-settlemint/SM_blockchain-made-easy.png rename to content/img/about-settlemint/SM_blockchain-made-easy.png diff --git a/static/img/about-settlemint/SOC2_type2.png b/content/img/about-settlemint/SOC2_type2.png similarity index 100% rename from static/img/about-settlemint/SOC2_type2.png rename to content/img/about-settlemint/SOC2_type2.png diff --git a/static/img/about-settlemint/add-load.png b/content/img/about-settlemint/add-load.png similarity index 100% rename from static/img/about-settlemint/add-load.png rename to content/img/about-settlemint/add-load.png diff --git a/static/img/about-settlemint/add-member.png b/content/img/about-settlemint/add-member.png similarity index 100% rename from static/img/about-settlemint/add-member.png rename to content/img/about-settlemint/add-member.png diff --git a/static/img/about-settlemint/add-network.png b/content/img/about-settlemint/add-network.png similarity index 100% rename from static/img/about-settlemint/add-network.png rename to content/img/about-settlemint/add-network.png diff --git a/static/img/about-settlemint/add-node.png b/content/img/about-settlemint/add-node.png similarity index 100% rename from static/img/about-settlemint/add-node.png rename to content/img/about-settlemint/add-node.png diff --git a/static/img/about-settlemint/aikido-icon.png b/content/img/about-settlemint/aikido-icon.png similarity index 100% rename from static/img/about-settlemint/aikido-icon.png rename to content/img/about-settlemint/aikido-icon.png diff --git a/static/img/about-settlemint/blockchain-application.png b/content/img/about-settlemint/blockchain-application.png similarity index 100% rename from static/img/about-settlemint/blockchain-application.png rename to content/img/about-settlemint/blockchain-application.png diff --git a/static/img/about-settlemint/blockchain-logos/arbitrum-logo.png b/content/img/about-settlemint/blockchain-logos/arbitrum-logo.png similarity index 100% rename from static/img/about-settlemint/blockchain-logos/arbitrum-logo.png rename to content/img/about-settlemint/blockchain-logos/arbitrum-logo.png diff --git a/static/img/about-settlemint/blockchain-logos/avalanche-logo.png b/content/img/about-settlemint/blockchain-logos/avalanche-logo.png similarity index 100% rename from static/img/about-settlemint/blockchain-logos/avalanche-logo.png rename to content/img/about-settlemint/blockchain-logos/avalanche-logo.png diff --git a/static/img/about-settlemint/blockchain-logos/besu-logo.png b/content/img/about-settlemint/blockchain-logos/besu-logo.png similarity index 100% rename from static/img/about-settlemint/blockchain-logos/besu-logo.png rename to content/img/about-settlemint/blockchain-logos/besu-logo.png diff --git a/static/img/about-settlemint/blockchain-logos/bnb-logo.png b/content/img/about-settlemint/blockchain-logos/bnb-logo.png similarity index 100% rename from static/img/about-settlemint/blockchain-logos/bnb-logo.png rename to content/img/about-settlemint/blockchain-logos/bnb-logo.png diff --git a/static/img/about-settlemint/blockchain-logos/edge-logo.png b/content/img/about-settlemint/blockchain-logos/edge-logo.png similarity index 100% rename from static/img/about-settlemint/blockchain-logos/edge-logo.png rename to content/img/about-settlemint/blockchain-logos/edge-logo.png diff --git a/static/img/about-settlemint/blockchain-logos/eth-logo.png b/content/img/about-settlemint/blockchain-logos/eth-logo.png similarity index 100% rename from static/img/about-settlemint/blockchain-logos/eth-logo.png rename to content/img/about-settlemint/blockchain-logos/eth-logo.png diff --git a/static/img/about-settlemint/blockchain-logos/fabric-logo.png b/content/img/about-settlemint/blockchain-logos/fabric-logo.png similarity index 100% rename from static/img/about-settlemint/blockchain-logos/fabric-logo.png rename to content/img/about-settlemint/blockchain-logos/fabric-logo.png diff --git a/static/img/about-settlemint/blockchain-logos/hedera-logo.png b/content/img/about-settlemint/blockchain-logos/hedera-logo.png similarity index 100% rename from static/img/about-settlemint/blockchain-logos/hedera-logo.png rename to content/img/about-settlemint/blockchain-logos/hedera-logo.png diff --git a/static/img/about-settlemint/blockchain-logos/optimism-logo.png b/content/img/about-settlemint/blockchain-logos/optimism-logo.png similarity index 100% rename from static/img/about-settlemint/blockchain-logos/optimism-logo.png rename to content/img/about-settlemint/blockchain-logos/optimism-logo.png diff --git a/static/img/about-settlemint/blockchain-logos/polygon-edge.png b/content/img/about-settlemint/blockchain-logos/polygon-edge.png similarity index 100% rename from static/img/about-settlemint/blockchain-logos/polygon-edge.png rename to content/img/about-settlemint/blockchain-logos/polygon-edge.png diff --git a/static/img/about-settlemint/blockchain-logos/polygon-logo.webp b/content/img/about-settlemint/blockchain-logos/polygon-logo.webp similarity index 100% rename from static/img/about-settlemint/blockchain-logos/polygon-logo.webp rename to content/img/about-settlemint/blockchain-logos/polygon-logo.webp diff --git a/static/img/about-settlemint/blockchain-logos/Quorum-logo.png b/content/img/about-settlemint/blockchain-logos/quorum-logo.png similarity index 100% rename from static/img/about-settlemint/blockchain-logos/Quorum-logo.png rename to content/img/about-settlemint/blockchain-logos/quorum-logo.png diff --git a/static/img/about-settlemint/blockchain-logos/zkevm-logo.png b/content/img/about-settlemint/blockchain-logos/zkevm-logo.png similarity index 100% rename from static/img/about-settlemint/blockchain-logos/zkevm-logo.png rename to content/img/about-settlemint/blockchain-logos/zkevm-logo.png diff --git a/static/img/about-settlemint/create-app.png b/content/img/about-settlemint/create-app.png similarity index 100% rename from static/img/about-settlemint/create-app.png rename to content/img/about-settlemint/create-app.png diff --git a/static/img/about-settlemint/create-org.png b/content/img/about-settlemint/create-org.png similarity index 100% rename from static/img/about-settlemint/create-org.png rename to content/img/about-settlemint/create-org.png diff --git a/static/img/about-settlemint/discord-icon.png b/content/img/about-settlemint/discord-icon.png similarity index 100% rename from static/img/about-settlemint/discord-icon.png rename to content/img/about-settlemint/discord-icon.png diff --git a/static/img/about-settlemint/discord-icon.webp b/content/img/about-settlemint/discord-icon.webp similarity index 100% rename from static/img/about-settlemint/discord-icon.webp rename to content/img/about-settlemint/discord-icon.webp diff --git a/static/img/about-settlemint/integration.png b/content/img/about-settlemint/integration.png similarity index 100% rename from static/img/about-settlemint/integration.png rename to content/img/about-settlemint/integration.png diff --git a/static/img/about-settlemint/jira-icon.webp b/content/img/about-settlemint/jira-icon.webp similarity index 100% rename from static/img/about-settlemint/jira-icon.webp rename to content/img/about-settlemint/jira-icon.webp diff --git a/static/img/about-settlemint/manage-network.png b/content/img/about-settlemint/manage-network.png similarity index 100% rename from static/img/about-settlemint/manage-network.png rename to content/img/about-settlemint/manage-network.png diff --git a/static/img/about-settlemint/manage-org.png b/content/img/about-settlemint/manage-org.png similarity index 100% rename from static/img/about-settlemint/manage-org.png rename to content/img/about-settlemint/manage-org.png diff --git a/static/img/about-settlemint/middleware.png b/content/img/about-settlemint/middleware.png similarity index 100% rename from static/img/about-settlemint/middleware.png rename to content/img/about-settlemint/middleware.png diff --git a/static/img/about-settlemint/network-node.png b/content/img/about-settlemint/network-node.png similarity index 100% rename from static/img/about-settlemint/network-node.png rename to content/img/about-settlemint/network-node.png diff --git a/static/img/about-settlemint/platform-screenshot.png b/content/img/about-settlemint/platform-screenshot.png similarity index 100% rename from static/img/about-settlemint/platform-screenshot.png rename to content/img/about-settlemint/platform-screenshot.png diff --git a/static/img/about-settlemint/platform.png b/content/img/about-settlemint/platform.png similarity index 100% rename from static/img/about-settlemint/platform.png rename to content/img/about-settlemint/platform.png diff --git a/static/img/about-settlemint/platformModel.png b/content/img/about-settlemint/platformModel.png similarity index 100% rename from static/img/about-settlemint/platformModel.png rename to content/img/about-settlemint/platformModel.png diff --git a/static/img/about-settlemint/platformModelBlue.png b/content/img/about-settlemint/platformModelBlue.png similarity index 100% rename from static/img/about-settlemint/platformModelBlue.png rename to content/img/about-settlemint/platformModelBlue.png diff --git a/static/img/about-settlemint/platformModelWhite.png b/content/img/about-settlemint/platformModelWhite.png similarity index 100% rename from static/img/about-settlemint/platformModelWhite.png rename to content/img/about-settlemint/platformModelWhite.png diff --git a/static/img/about-settlemint/platformScreenshot.webp b/content/img/about-settlemint/platformScreenshot.webp similarity index 100% rename from static/img/about-settlemint/platformScreenshot.webp rename to content/img/about-settlemint/platformScreenshot.webp diff --git a/static/img/about-settlemint/sign-up.png b/content/img/about-settlemint/sign-up.png similarity index 100% rename from static/img/about-settlemint/sign-up.png rename to content/img/about-settlemint/sign-up.png diff --git a/static/img/about-settlemint/smart-contract.png b/content/img/about-settlemint/smart-contract.png similarity index 100% rename from static/img/about-settlemint/smart-contract.png rename to content/img/about-settlemint/smart-contract.png diff --git a/static/img/about-settlemint/storage.png b/content/img/about-settlemint/storage.png similarity index 100% rename from static/img/about-settlemint/storage.png rename to content/img/about-settlemint/storage.png diff --git a/static/img/about-settlemint/support-icon.png b/content/img/about-settlemint/support-icon.png similarity index 100% rename from static/img/about-settlemint/support-icon.png rename to content/img/about-settlemint/support-icon.png diff --git a/static/img/about-settlemint/trial-status.png b/content/img/about-settlemint/trial-status.png similarity index 100% rename from static/img/about-settlemint/trial-status.png rename to content/img/about-settlemint/trial-status.png diff --git a/static/img/about-settlemint/zoom-icon.png b/content/img/about-settlemint/zoom-icon.png similarity index 100% rename from static/img/about-settlemint/zoom-icon.png rename to content/img/about-settlemint/zoom-icon.png diff --git a/static/img/account-billing/Client-Partner.png b/content/img/account-billing/Client-Partner.png similarity index 100% rename from static/img/account-billing/Client-Partner.png rename to content/img/account-billing/Client-Partner.png diff --git a/static/img/account-billing/Partner-Client.png b/content/img/account-billing/Partner-Client.png similarity index 100% rename from static/img/account-billing/Partner-Client.png rename to content/img/account-billing/Partner-Client.png diff --git a/static/img/blockchain-guide/Hasura_Import.png b/content/img/blockchain-guide/Hasura_Import.png similarity index 100% rename from static/img/blockchain-guide/Hasura_Import.png rename to content/img/blockchain-guide/Hasura_Import.png diff --git a/static/img/blockchain-guide/IDE.png b/content/img/blockchain-guide/IDE.png similarity index 100% rename from static/img/blockchain-guide/IDE.png rename to content/img/blockchain-guide/IDE.png diff --git a/static/img/deploy-scs/foundry-build.png b/content/img/deploy-scs/foundry-build.png similarity index 100% rename from static/img/deploy-scs/foundry-build.png rename to content/img/deploy-scs/foundry-build.png diff --git a/static/img/deploy-scs/hardhat-build.png b/content/img/deploy-scs/hardhat-build.png similarity index 100% rename from static/img/deploy-scs/hardhat-build.png rename to content/img/deploy-scs/hardhat-build.png diff --git a/static/img/deploy-scs/hardhat-deploy-local-network.png b/content/img/deploy-scs/hardhat-deploy-local-network.png similarity index 100% rename from static/img/deploy-scs/hardhat-deploy-local-network.png rename to content/img/deploy-scs/hardhat-deploy-local-network.png diff --git a/static/img/deploy-scs/hardhat-deploy-local-success.png b/content/img/deploy-scs/hardhat-deploy-local-success.png similarity index 100% rename from static/img/deploy-scs/hardhat-deploy-local-success.png rename to content/img/deploy-scs/hardhat-deploy-local-success.png diff --git a/static/img/deploy-scs/hardhat-deploy-remote-select-node.png b/content/img/deploy-scs/hardhat-deploy-remote-select-node.png similarity index 100% rename from static/img/deploy-scs/hardhat-deploy-remote-select-node.png rename to content/img/deploy-scs/hardhat-deploy-remote-select-node.png diff --git a/static/img/deploy-scs/hardhat-deploy-remote-select-private-key.png b/content/img/deploy-scs/hardhat-deploy-remote-select-private-key.png similarity index 100% rename from static/img/deploy-scs/hardhat-deploy-remote-select-private-key.png rename to content/img/deploy-scs/hardhat-deploy-remote-select-private-key.png diff --git a/static/img/deploy-scs/hardhat-deploy-remote-success.png b/content/img/deploy-scs/hardhat-deploy-remote-success.png similarity index 100% rename from static/img/deploy-scs/hardhat-deploy-remote-success.png rename to content/img/deploy-scs/hardhat-deploy-remote-success.png diff --git a/static/img/deploy-scs/hardhat-deploy-remote.png b/content/img/deploy-scs/hardhat-deploy-remote.png similarity index 100% rename from static/img/deploy-scs/hardhat-deploy-remote.png rename to content/img/deploy-scs/hardhat-deploy-remote.png diff --git a/static/img/deploy-scs/hardhat-start-local-network.png b/content/img/deploy-scs/hardhat-start-local-network.png similarity index 100% rename from static/img/deploy-scs/hardhat-start-local-network.png rename to content/img/deploy-scs/hardhat-start-local-network.png diff --git a/static/img/deploy-scs/open-ide.png b/content/img/deploy-scs/open-ide.png similarity index 100% rename from static/img/deploy-scs/open-ide.png rename to content/img/deploy-scs/open-ide.png diff --git a/static/img/deploy-scs/settlemint-login.png b/content/img/deploy-scs/settlemint-login.png similarity index 100% rename from static/img/deploy-scs/settlemint-login.png rename to content/img/deploy-scs/settlemint-login.png diff --git a/static/img/deploy-scs/task-manager.png b/content/img/deploy-scs/task-manager.png similarity index 100% rename from static/img/deploy-scs/task-manager.png rename to content/img/deploy-scs/task-manager.png diff --git a/static/img/developer-guides/access-token.png b/content/img/developer-guides/access-token.png similarity index 100% rename from static/img/developer-guides/access-token.png rename to content/img/developer-guides/access-token.png diff --git a/static/img/developer-guides/asset-tokenization/access-token-node-storage.png b/content/img/developer-guides/asset-tokenization/access-token-node-storage.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/access-token-node-storage.png rename to content/img/developer-guides/asset-tokenization/access-token-node-storage.png diff --git a/static/img/developer-guides/asset-tokenization/add-ipfs.png b/content/img/developer-guides/asset-tokenization/add-ipfs.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/add-ipfs.png rename to content/img/developer-guides/asset-tokenization/add-ipfs.png diff --git a/static/img/developer-guides/asset-tokenization/add-to-ipfs.png b/content/img/developer-guides/asset-tokenization/add-to-ipfs.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/add-to-ipfs.png rename to content/img/developer-guides/asset-tokenization/add-to-ipfs.png diff --git a/static/img/developer-guides/asset-tokenization/asset-debug.png b/content/img/developer-guides/asset-tokenization/asset-debug.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/asset-debug.png rename to content/img/developer-guides/asset-tokenization/asset-debug.png diff --git a/static/img/developer-guides/asset-tokenization/asset-imported.png b/content/img/developer-guides/asset-tokenization/asset-imported.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/asset-imported.png rename to content/img/developer-guides/asset-tokenization/asset-imported.png diff --git a/static/img/developer-guides/asset-tokenization/asset.png b/content/img/developer-guides/asset-tokenization/asset.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/asset.png rename to content/img/developer-guides/asset-tokenization/asset.png diff --git a/static/img/developer-guides/asset-tokenization/assetname.gif b/content/img/developer-guides/asset-tokenization/assetname.gif similarity index 100% rename from static/img/developer-guides/asset-tokenization/assetname.gif rename to content/img/developer-guides/asset-tokenization/assetname.gif diff --git a/static/img/developer-guides/asset-tokenization/compile-contract.png b/content/img/developer-guides/asset-tokenization/compile-contract.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/compile-contract.png rename to content/img/developer-guides/asset-tokenization/compile-contract.png diff --git a/static/img/developer-guides/asset-tokenization/configure-besu.png b/content/img/developer-guides/asset-tokenization/configure-besu.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/configure-besu.png rename to content/img/developer-guides/asset-tokenization/configure-besu.png diff --git a/static/img/developer-guides/asset-tokenization/contract-address.png b/content/img/developer-guides/asset-tokenization/contract-address.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/contract-address.png rename to content/img/developer-guides/asset-tokenization/contract-address.png diff --git a/static/img/developer-guides/asset-tokenization/create-a-network.gif b/content/img/developer-guides/asset-tokenization/create-a-network.gif similarity index 100% rename from static/img/developer-guides/asset-tokenization/create-a-network.gif rename to content/img/developer-guides/asset-tokenization/create-a-network.gif diff --git a/static/img/developer-guides/asset-tokenization/create-an-application.png b/content/img/developer-guides/asset-tokenization/create-an-application.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/create-an-application.png rename to content/img/developer-guides/asset-tokenization/create-an-application.png diff --git a/static/img/developer-guides/asset-tokenization/create-an-integration.png b/content/img/developer-guides/asset-tokenization/create-an-integration.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/create-an-integration.png rename to content/img/developer-guides/asset-tokenization/create-an-integration.png diff --git a/static/img/developer-guides/asset-tokenization/create-asset-contract.png b/content/img/developer-guides/asset-tokenization/create-asset-contract.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/create-asset-contract.png rename to content/img/developer-guides/asset-tokenization/create-asset-contract.png diff --git a/static/img/developer-guides/asset-tokenization/create-empty-smart-contract.png b/content/img/developer-guides/asset-tokenization/create-empty-smart-contract.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/create-empty-smart-contract.png rename to content/img/developer-guides/asset-tokenization/create-empty-smart-contract.png diff --git a/static/img/developer-guides/asset-tokenization/create-key.png b/content/img/developer-guides/asset-tokenization/create-key.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/create-key.png rename to content/img/developer-guides/asset-tokenization/create-key.png diff --git a/static/img/developer-guides/asset-tokenization/deploy-integration.png b/content/img/developer-guides/asset-tokenization/deploy-integration.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/deploy-integration.png rename to content/img/developer-guides/asset-tokenization/deploy-integration.png diff --git a/static/img/developer-guides/asset-tokenization/edit-deploy.png b/content/img/developer-guides/asset-tokenization/edit-deploy.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/edit-deploy.png rename to content/img/developer-guides/asset-tokenization/edit-deploy.png diff --git a/static/img/developer-guides/asset-tokenization/generate-key.png b/content/img/developer-guides/asset-tokenization/generate-key.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/generate-key.png rename to content/img/developer-guides/asset-tokenization/generate-key.png diff --git a/static/img/developer-guides/asset-tokenization/globalvariables-settings.png b/content/img/developer-guides/asset-tokenization/globalvariables-settings.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/globalvariables-settings.png rename to content/img/developer-guides/asset-tokenization/globalvariables-settings.png diff --git a/static/img/developer-guides/asset-tokenization/import-integration.png b/content/img/developer-guides/asset-tokenization/import-integration.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/import-integration.png rename to content/img/developer-guides/asset-tokenization/import-integration.png diff --git a/static/img/developer-guides/asset-tokenization/json-rpc.png b/content/img/developer-guides/asset-tokenization/json-rpc.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/json-rpc.png rename to content/img/developer-guides/asset-tokenization/json-rpc.png diff --git a/static/img/developer-guides/asset-tokenization/name-the-application.png b/content/img/developer-guides/asset-tokenization/name-the-application.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/name-the-application.png rename to content/img/developer-guides/asset-tokenization/name-the-application.png diff --git a/static/img/developer-guides/asset-tokenization/network-success.png b/content/img/developer-guides/asset-tokenization/network-success.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/network-success.png rename to content/img/developer-guides/asset-tokenization/network-success.png diff --git a/static/img/developer-guides/asset-tokenization/open-fullscreen.png b/content/img/developer-guides/asset-tokenization/open-fullscreen.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/open-fullscreen.png rename to content/img/developer-guides/asset-tokenization/open-fullscreen.png diff --git a/static/img/developer-guides/asset-tokenization/open-integration.png b/content/img/developer-guides/asset-tokenization/open-integration.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/open-integration.png rename to content/img/developer-guides/asset-tokenization/open-integration.png diff --git a/static/img/developer-guides/asset-tokenization/set-global-variables.gif b/content/img/developer-guides/asset-tokenization/set-global-variables.gif similarity index 100% rename from static/img/developer-guides/asset-tokenization/set-global-variables.gif rename to content/img/developer-guides/asset-tokenization/set-global-variables.gif diff --git a/static/img/developer-guides/asset-tokenization/set-local-node.png b/content/img/developer-guides/asset-tokenization/set-local-node.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/set-local-node.png rename to content/img/developer-guides/asset-tokenization/set-local-node.png diff --git a/static/img/developer-guides/asset-tokenization/set-pinning.png b/content/img/developer-guides/asset-tokenization/set-pinning.png similarity index 100% rename from static/img/developer-guides/asset-tokenization/set-pinning.png rename to content/img/developer-guides/asset-tokenization/set-pinning.png diff --git a/static/img/developer-guides/choose-network.png b/content/img/developer-guides/choose-network.png similarity index 100% rename from static/img/developer-guides/choose-network.png rename to content/img/developer-guides/choose-network.png diff --git a/static/img/developer-guides/choose-tempalte.png b/content/img/developer-guides/choose-tempalte.png similarity index 100% rename from static/img/developer-guides/choose-tempalte.png rename to content/img/developer-guides/choose-tempalte.png diff --git a/static/img/developer-guides/connect-frontend-erc20-template.png b/content/img/developer-guides/connect-frontend-erc20-template.png similarity index 100% rename from static/img/developer-guides/connect-frontend-erc20-template.png rename to content/img/developer-guides/connect-frontend-erc20-template.png diff --git a/static/img/developer-guides/copy-abi.png b/content/img/developer-guides/copy-abi.png similarity index 100% rename from static/img/developer-guides/copy-abi.png rename to content/img/developer-guides/copy-abi.png diff --git a/static/img/developer-guides/create-application.png b/content/img/developer-guides/create-application.png similarity index 100% rename from static/img/developer-guides/create-application.png rename to content/img/developer-guides/create-application.png diff --git a/static/img/developer-guides/deploy-contract.png b/content/img/developer-guides/deploy-contract.png similarity index 100% rename from static/img/developer-guides/deploy-contract.png rename to content/img/developer-guides/deploy-contract.png diff --git a/static/img/developer-guides/front-end.png b/content/img/developer-guides/front-end.png similarity index 100% rename from static/img/developer-guides/front-end.png rename to content/img/developer-guides/front-end.png diff --git a/static/img/developer-guides/metamask.png b/content/img/developer-guides/metamask.png similarity index 100% rename from static/img/developer-guides/metamask.png rename to content/img/developer-guides/metamask.png diff --git a/static/img/developer-guides/open-ide.png b/content/img/developer-guides/open-ide.png similarity index 100% rename from static/img/developer-guides/open-ide.png rename to content/img/developer-guides/open-ide.png diff --git a/static/img/developer-guides/openai-node.png b/content/img/developer-guides/openai-node copy.png similarity index 100% rename from static/img/developer-guides/openai-node.png rename to content/img/developer-guides/openai-node copy.png diff --git a/content/img/developer-guides/openai-node.png b/content/img/developer-guides/openai-node.png new file mode 100644 index 00000000..49a531f4 Binary files /dev/null and b/content/img/developer-guides/openai-node.png differ diff --git a/static/img/developer-guides/polygon-faucet.png b/content/img/developer-guides/polygon-faucet.png similarity index 100% rename from static/img/developer-guides/polygon-faucet.png rename to content/img/developer-guides/polygon-faucet.png diff --git a/static/img/developer-guides/project-id.png b/content/img/developer-guides/project-id.png similarity index 100% rename from static/img/developer-guides/project-id.png rename to content/img/developer-guides/project-id.png diff --git a/static/img/developer-guides/tokens-sent.png b/content/img/developer-guides/tokens-sent.png similarity index 100% rename from static/img/developer-guides/tokens-sent.png rename to content/img/developer-guides/tokens-sent.png diff --git a/static/img/document360/Files/Cookie Policy SettleMint - February 2021.pdf b/content/img/document360/Files/Cookie Policy SettleMint - February 2021.pdf similarity index 100% rename from static/img/document360/Files/Cookie Policy SettleMint - February 2021.pdf rename to content/img/document360/Files/Cookie Policy SettleMint - February 2021.pdf diff --git a/static/img/document360/Images/Blockscout 1.png b/content/img/document360/Images/Blockscout 1.png similarity index 100% rename from static/img/document360/Images/Blockscout 1.png rename to content/img/document360/Images/Blockscout 1.png diff --git a/static/img/document360/Images/Blockscout 2.png b/content/img/document360/Images/Blockscout 2.png similarity index 100% rename from static/img/document360/Images/Blockscout 2.png rename to content/img/document360/Images/Blockscout 2.png diff --git a/static/img/document360/Images/Blockscout 3.png b/content/img/document360/Images/Blockscout 3.png similarity index 100% rename from static/img/document360/Images/Blockscout 3.png rename to content/img/document360/Images/Blockscout 3.png diff --git a/static/img/document360/Images/HLF connect to a node.png b/content/img/document360/Images/HLF connect to a node.png similarity index 100% rename from static/img/document360/Images/HLF connect to a node.png rename to content/img/document360/Images/HLF connect to a node.png diff --git a/static/img/document360/Images/aiko-1.png b/content/img/document360/Images/aiko-1.png similarity index 100% rename from static/img/document360/Images/aiko-1.png rename to content/img/document360/Images/aiko-1.png diff --git a/static/img/document360/Images/blockchain-integration-studio.webp b/content/img/document360/Images/blockchain-integration-studio.webp similarity index 100% rename from static/img/document360/Images/blockchain-integration-studio.webp rename to content/img/document360/Images/blockchain-integration-studio.webp diff --git a/static/img/document360/Images/ethers-project-import.png b/content/img/document360/Images/ethers-project-import.png similarity index 100% rename from static/img/document360/Images/ethers-project-import.png rename to content/img/document360/Images/ethers-project-import.png diff --git a/static/img/document360/Images/thumbzup_419.png b/content/img/document360/Images/thumbzup_419.png similarity index 100% rename from static/img/document360/Images/thumbzup_419.png rename to content/img/document360/Images/thumbzup_419.png diff --git a/static/img/guides/asset-tokenization.png b/content/img/guides/asset-tokenization.png similarity index 100% rename from static/img/guides/asset-tokenization.png rename to content/img/guides/asset-tokenization.png diff --git a/static/img/guides/connect-frontend.png b/content/img/guides/connect-frontend.png similarity index 100% rename from static/img/guides/connect-frontend.png rename to content/img/guides/connect-frontend.png diff --git a/static/img/quickstart/HelloWorld.png b/content/img/quickstart/HelloWorld.png similarity index 100% rename from static/img/quickstart/HelloWorld.png rename to content/img/quickstart/HelloWorld.png diff --git a/static/img/quickstart/addsmartcontractset.png b/content/img/quickstart/addsmartcontractset.png similarity index 100% rename from static/img/quickstart/addsmartcontractset.png rename to content/img/quickstart/addsmartcontractset.png diff --git a/static/img/quickstart/allkeysettingsselected.png b/content/img/quickstart/allkeysettingsselected.png similarity index 100% rename from static/img/quickstart/allkeysettingsselected.png rename to content/img/quickstart/allkeysettingsselected.png diff --git a/static/img/quickstart/callcontractsecond.png b/content/img/quickstart/callcontractsecond.png similarity index 100% rename from static/img/quickstart/callcontractsecond.png rename to content/img/quickstart/callcontractsecond.png diff --git a/static/img/quickstart/choosetemplate.png b/content/img/quickstart/choosetemplate.png similarity index 100% rename from static/img/quickstart/choosetemplate.png rename to content/img/quickstart/choosetemplate.png diff --git a/static/img/quickstart/complieanddeploy.png b/content/img/quickstart/complieanddeploy.png similarity index 100% rename from static/img/quickstart/complieanddeploy.png rename to content/img/quickstart/complieanddeploy.png diff --git a/static/img/quickstart/contractAddress.png b/content/img/quickstart/contractAddress.png similarity index 100% rename from static/img/quickstart/contractAddress.png rename to content/img/quickstart/contractAddress.png diff --git a/static/img/quickstart/contractAddressPasted.png b/content/img/quickstart/contractAddressPasted.png similarity index 100% rename from static/img/quickstart/contractAddressPasted.png rename to content/img/quickstart/contractAddressPasted.png diff --git a/static/img/quickstart/copyjsonrpc.png b/content/img/quickstart/copyjsonrpc.png similarity index 100% rename from static/img/quickstart/copyjsonrpc.png rename to content/img/quickstart/copyjsonrpc.png diff --git a/static/img/quickstart/copyprivatekey.png b/content/img/quickstart/copyprivatekey.png similarity index 100% rename from static/img/quickstart/copyprivatekey.png rename to content/img/quickstart/copyprivatekey.png diff --git a/static/img/quickstart/createAPIKey1.png b/content/img/quickstart/createAPIKey1.png similarity index 100% rename from static/img/quickstart/createAPIKey1.png rename to content/img/quickstart/createAPIKey1.png diff --git a/static/img/quickstart/createanapp2 1.png b/content/img/quickstart/createanapp2-1.png similarity index 100% rename from static/img/quickstart/createanapp2 1.png rename to content/img/quickstart/createanapp2-1.png diff --git a/static/img/quickstart/createorg.png b/content/img/quickstart/createorg.png similarity index 100% rename from static/img/quickstart/createorg.png rename to content/img/quickstart/createorg.png diff --git a/static/img/quickstart/deploy.png b/content/img/quickstart/deploy.png similarity index 100% rename from static/img/quickstart/deploy.png rename to content/img/quickstart/deploy.png diff --git a/static/img/quickstart/deploychanges.png b/content/img/quickstart/deploychanges.png similarity index 100% rename from static/img/quickstart/deploychanges.png rename to content/img/quickstart/deploychanges.png diff --git a/static/img/quickstart/deploymentplan.png b/content/img/quickstart/deploymentplan.png similarity index 100% rename from static/img/quickstart/deploymentplan.png rename to content/img/quickstart/deploymentplan.png diff --git a/static/img/quickstart/helloworldcontracteditor.png b/content/img/quickstart/helloworldcontracteditor.png similarity index 100% rename from static/img/quickstart/helloworldcontracteditor.png rename to content/img/quickstart/helloworldcontracteditor.png diff --git a/static/img/quickstart/hyperledgerbesu.png b/content/img/quickstart/hyperledgerbesu.png similarity index 100% rename from static/img/quickstart/hyperledgerbesu.png rename to content/img/quickstart/hyperledgerbesu.png diff --git a/static/img/quickstart/integrationstudioimport.png b/content/img/quickstart/integrationstudioimport.png similarity index 100% rename from static/img/quickstart/integrationstudioimport.png rename to content/img/quickstart/integrationstudioimport.png diff --git a/static/img/quickstart/integrationstudiointerface.png b/content/img/quickstart/integrationstudiointerface.png similarity index 100% rename from static/img/quickstart/integrationstudiointerface.png rename to content/img/quickstart/integrationstudiointerface.png diff --git a/static/img/quickstart/integrationstudiosetup.png b/content/img/quickstart/integrationstudiosetup.png similarity index 100% rename from static/img/quickstart/integrationstudiosetup.png rename to content/img/quickstart/integrationstudiosetup.png diff --git a/static/img/quickstart/intergrationstudio-deployed.png b/content/img/quickstart/intergrationstudio-deployed.png similarity index 100% rename from static/img/quickstart/intergrationstudio-deployed.png rename to content/img/quickstart/intergrationstudio-deployed.png diff --git a/static/img/quickstart/intergrationstudio-interface.png b/content/img/quickstart/intergrationstudio-interface.png similarity index 100% rename from static/img/quickstart/intergrationstudio-interface.png rename to content/img/quickstart/intergrationstudio-interface.png diff --git a/static/img/quickstart/jsonrpcpasted.png b/content/img/quickstart/jsonrpcpasted.png similarity index 100% rename from static/img/quickstart/jsonrpcpasted.png rename to content/img/quickstart/jsonrpcpasted.png diff --git a/static/img/quickstart/networkingdeploying.png b/content/img/quickstart/networkingdeploying.png similarity index 100% rename from static/img/quickstart/networkingdeploying.png rename to content/img/quickstart/networkingdeploying.png diff --git a/static/img/quickstart/pastedAPIKey.png b/content/img/quickstart/pastedAPIKey.png similarity index 100% rename from static/img/quickstart/pastedAPIKey.png rename to content/img/quickstart/pastedAPIKey.png diff --git a/static/img/quickstart/pasteprivatekey.png b/content/img/quickstart/pasteprivatekey.png similarity index 100% rename from static/img/quickstart/pasteprivatekey.png rename to content/img/quickstart/pasteprivatekey.png diff --git a/static/img/quickstart/privatekey.png b/content/img/quickstart/privatekey.png similarity index 100% rename from static/img/quickstart/privatekey.png rename to content/img/quickstart/privatekey.png diff --git a/static/img/quickstart/privatekeycreated.png b/content/img/quickstart/privatekeycreated.png similarity index 100% rename from static/img/quickstart/privatekeycreated.png rename to content/img/quickstart/privatekeycreated.png diff --git a/static/img/quickstart/renamecontract.png b/content/img/quickstart/renamecontract.png similarity index 100% rename from static/img/quickstart/renamecontract.png rename to content/img/quickstart/renamecontract.png diff --git a/static/img/quickstart/settinginformation.png b/content/img/quickstart/settinginformation.png similarity index 100% rename from static/img/quickstart/settinginformation.png rename to content/img/quickstart/settinginformation.png diff --git a/static/img/quickstart/terminalsuccess.png b/content/img/quickstart/terminalsuccess.png similarity index 100% rename from static/img/quickstart/terminalsuccess.png rename to content/img/quickstart/terminalsuccess.png diff --git a/static/img/quickstart/writefunctioncomplete.png b/content/img/quickstart/writefunctioncomplete.png similarity index 100% rename from static/img/quickstart/writefunctioncomplete.png rename to content/img/quickstart/writefunctioncomplete.png diff --git a/static/img/smart-contract-sets/click-continue.png b/content/img/smart-contract-sets/click-continue.png similarity index 100% rename from static/img/smart-contract-sets/click-continue.png rename to content/img/smart-contract-sets/click-continue.png diff --git a/static/img/smart-contract-sets/confirm.png b/content/img/smart-contract-sets/confirm.png similarity index 100% rename from static/img/smart-contract-sets/confirm.png rename to content/img/smart-contract-sets/confirm.png diff --git a/static/img/smart-contract-sets/empty-dev-tools.png b/content/img/smart-contract-sets/empty-dev-tools.png similarity index 100% rename from static/img/smart-contract-sets/empty-dev-tools.png rename to content/img/smart-contract-sets/empty-dev-tools.png diff --git a/static/img/smart-contract-sets/enter-name-user.png b/content/img/smart-contract-sets/enter-name-user.png similarity index 100% rename from static/img/smart-contract-sets/enter-name-user.png rename to content/img/smart-contract-sets/enter-name-user.png diff --git a/static/img/smart-contract-sets/select-code-studio.png b/content/img/smart-contract-sets/select-code-studio.png similarity index 100% rename from static/img/smart-contract-sets/select-code-studio.png rename to content/img/smart-contract-sets/select-code-studio.png diff --git a/static/img/smart-contract-sets/select-smart-contract-set.png b/content/img/smart-contract-sets/select-smart-contract-set.png similarity index 100% rename from static/img/smart-contract-sets/select-smart-contract-set.png rename to content/img/smart-contract-sets/select-smart-contract-set.png diff --git a/static/img/smart-contract-sets/select-template.png b/content/img/smart-contract-sets/select-template.png similarity index 100% rename from static/img/smart-contract-sets/select-template.png rename to content/img/smart-contract-sets/select-template.png diff --git a/docs/developer-guides/user-wallet-scp-images/image1.png b/content/img/user-wallet-scp-images/image1.png similarity index 100% rename from docs/developer-guides/user-wallet-scp-images/image1.png rename to content/img/user-wallet-scp-images/image1.png diff --git a/docs/developer-guides/user-wallet-scp-images/image2.png b/content/img/user-wallet-scp-images/image2.png similarity index 100% rename from docs/developer-guides/user-wallet-scp-images/image2.png rename to content/img/user-wallet-scp-images/image2.png diff --git a/docs/developer-guides/user-wallet-scp-images/image3.png b/content/img/user-wallet-scp-images/image3.png similarity index 100% rename from docs/developer-guides/user-wallet-scp-images/image3.png rename to content/img/user-wallet-scp-images/image3.png diff --git a/docs/developer-guides/user-wallet-scp-images/image4.png b/content/img/user-wallet-scp-images/image4.png similarity index 100% rename from docs/developer-guides/user-wallet-scp-images/image4.png rename to content/img/user-wallet-scp-images/image4.png diff --git a/docs/developer-guides/user-wallet-scp-images/image5.png b/content/img/user-wallet-scp-images/image5.png similarity index 100% rename from docs/developer-guides/user-wallet-scp-images/image5.png rename to content/img/user-wallet-scp-images/image5.png diff --git a/docs/developer-guides/user-wallet-scp-images/image6.png b/content/img/user-wallet-scp-images/image6.png similarity index 100% rename from docs/developer-guides/user-wallet-scp-images/image6.png rename to content/img/user-wallet-scp-images/image6.png diff --git a/docs/developer-guides/user-wallet-scp-images/image7.png b/content/img/user-wallet-scp-images/image7.png similarity index 100% rename from docs/developer-guides/user-wallet-scp-images/image7.png rename to content/img/user-wallet-scp-images/image7.png diff --git a/docs/developer-guides/user-wallet-scp-images/image8.png b/content/img/user-wallet-scp-images/image8.png similarity index 100% rename from docs/developer-guides/user-wallet-scp-images/image8.png rename to content/img/user-wallet-scp-images/image8.png diff --git a/static/img/using-the-platform/add-user-wallet.png b/content/img/using-the-platform/add-user-wallet.png similarity index 100% rename from static/img/using-the-platform/add-user-wallet.png rename to content/img/using-the-platform/add-user-wallet.png diff --git a/static/img/using-the-platform/audit-logs.png b/content/img/using-the-platform/audit-logs.png similarity index 100% rename from static/img/using-the-platform/audit-logs.png rename to content/img/using-the-platform/audit-logs.png diff --git a/static/img/using-the-platform/create-user-wallet-form.png b/content/img/using-the-platform/create-user-wallet-form.png similarity index 100% rename from static/img/using-the-platform/create-user-wallet-form.png rename to content/img/using-the-platform/create-user-wallet-form.png diff --git a/static/img/using-the-platform/create-user-wallet.png b/content/img/using-the-platform/create-user-wallet.png similarity index 100% rename from static/img/using-the-platform/create-user-wallet.png rename to content/img/using-the-platform/create-user-wallet.png diff --git a/static/img/using-the-platform/eas-graphql.png b/content/img/using-the-platform/eas-graphql.png similarity index 100% rename from static/img/using-the-platform/eas-graphql.png rename to content/img/using-the-platform/eas-graphql.png diff --git a/static/img/using-the-platform/eas-indexer.png b/content/img/using-the-platform/eas-indexer.png similarity index 100% rename from static/img/using-the-platform/eas-indexer.png rename to content/img/using-the-platform/eas-indexer.png diff --git a/static/img/using-the-platform/loadbalancer.png b/content/img/using-the-platform/loadbalancer.png similarity index 100% rename from static/img/using-the-platform/loadbalancer.png rename to content/img/using-the-platform/loadbalancer.png diff --git a/static/img/using-the-platform/resource-usage-1.png b/content/img/using-the-platform/resource-usage-1.png similarity index 100% rename from static/img/using-the-platform/resource-usage-1.png rename to content/img/using-the-platform/resource-usage-1.png diff --git a/static/img/using-the-platform/resource-usage-2.png b/content/img/using-the-platform/resource-usage-2.png similarity index 100% rename from static/img/using-the-platform/resource-usage-2.png rename to content/img/using-the-platform/resource-usage-2.png diff --git a/static/img/using-the-platform/resource-usage-cpu.png b/content/img/using-the-platform/resource-usage-cpu.png similarity index 100% rename from static/img/using-the-platform/resource-usage-cpu.png rename to content/img/using-the-platform/resource-usage-cpu.png diff --git a/static/img/using-the-platform/resource-usage.png b/content/img/using-the-platform/resource-usage.png similarity index 100% rename from static/img/using-the-platform/resource-usage.png rename to content/img/using-the-platform/resource-usage.png diff --git a/static/img/using-the-platform/scp-graphql.png b/content/img/using-the-platform/scp-graphql.png similarity index 100% rename from static/img/using-the-platform/scp-graphql.png rename to content/img/using-the-platform/scp-graphql.png diff --git a/static/img/using-the-platform/scp-rest.png b/content/img/using-the-platform/scp-rest.png similarity index 100% rename from static/img/using-the-platform/scp-rest.png rename to content/img/using-the-platform/scp-rest.png diff --git a/static/img/using-the-platform/scp-transactions-api.png b/content/img/using-the-platform/scp-transactions-api.png similarity index 100% rename from static/img/using-the-platform/scp-transactions-api.png rename to content/img/using-the-platform/scp-transactions-api.png diff --git a/static/img/using-the-platform/scp-update-abis.png b/content/img/using-the-platform/scp-update-abis.png similarity index 100% rename from static/img/using-the-platform/scp-update-abis.png rename to content/img/using-the-platform/scp-update-abis.png diff --git a/static/img/using-the-platform/scp-webhooks.png b/content/img/using-the-platform/scp-webhooks.png similarity index 100% rename from static/img/using-the-platform/scp-webhooks.png rename to content/img/using-the-platform/scp-webhooks.png diff --git a/static/img/using-the-platform/user-wallet-details.png b/content/img/using-the-platform/user-wallet-details.png similarity index 100% rename from static/img/using-the-platform/user-wallet-details.png rename to content/img/using-the-platform/user-wallet-details.png diff --git a/static/img/using-the-platform/user-wallet-list.png b/content/img/using-the-platform/user-wallet-list.png similarity index 100% rename from static/img/using-the-platform/user-wallet-list.png rename to content/img/using-the-platform/user-wallet-list.png diff --git a/docs/about-settlemint/0_intro.mdx b/docs/about-settlemint/0_intro.mdx deleted file mode 100644 index 7d2c8177..00000000 --- a/docs/about-settlemint/0_intro.mdx +++ /dev/null @@ -1,89 +0,0 @@ ---- -custom_edit_url: null -title: Platform Overview -description: Overview of the SettleMint Platform -sidebar_position: 1 ---- - -# Platform Overview - -import ContentCard from '@site/src/components/ContentCard'; - -SettleMint makes it easy for any developer to build, deploy and integrate blockchain applications rapidly. How? By radically simplifying the entire blockchain development process through our Blockchain Transformation platform. This drastically reduces the complexity and the time needed for each step in the blockchain development process. - -## Getting Started - -Learn how to get started building blockchain applications on SettleMint - -
-
- -
- -
- -
-
- -
-
- -
- -
- -
-
- -## Start Building - -Follow these developer guides to start building on SettleMint - -
-
- -
- -
- -
-
- -
-
- -
-
diff --git a/docs/about-settlemint/1_supported-blockchains.mdx b/docs/about-settlemint/1_supported-blockchains.mdx deleted file mode 100644 index 1e62ac4c..00000000 --- a/docs/about-settlemint/1_supported-blockchains.mdx +++ /dev/null @@ -1,172 +0,0 @@ -# Supported Blockchains - -When launching a blockchain development project, the selection of a blockchain protocol is one of the most important decisions that has to be made. Protocols matter because they determine the scope of functionality your application can provide. - -SettleMint currently supports the following protocols: - - - -## Permissioned Blockchains - - - - - -## Public Blockchains - - - - - - - - diff --git a/docs/about-settlemint/4_components.mdx b/docs/about-settlemint/4_components.mdx deleted file mode 100644 index 7dfc8158..00000000 --- a/docs/about-settlemint/4_components.mdx +++ /dev/null @@ -1,101 +0,0 @@ ---- -custom_edit_url: null -title: SettleMint Components -description: Overview of the SettleMint components and tools available to build blockchain applications -sidebar_position: 1 ---- - -# SettleMint Components - -This guide will explain each of the tools and services on SettleMint and how they connect to build a blockchain application. - -## The Blockchain Application - -Blockchain Application - -The first step to building anything on SettleMint is to [create an application](../../using-platform/create-an-application). You can think of an application as the collection of resources that you need to build your blockchain application. This includes a blockchain network, smart contracts, middleware, storage, integrations, and insights. - -## Add a Blockchain Network and Node - -Blockchain Network and Node - -After creating a blockchain application, you now need to [add a blockchain network](../../using-platform/add-a-network-to-an-application) and node to your application. SettleMint offers a variety of different [blockchain networks](../supported-blockchains) to choose from whatever your usecase may be. - -## Create a Smart Contract - -Smart Contract - -## Add a Middleware - -Middleware -Blockchain applications produce data that lives on the blockchain, but we need -to be able to access that data in order to use it. Creating a -[middleware](../../using-platform/middleware/) allows us to do so. SettleMint -currently offers three middleware services: The Graph, Smart Contract Portal -Middleware and Firefly Fabconnect. - -## Add Storage - -Storage -Your blockchain application may need to store data. Blockchains are good for -running different processes in a decentralized way but can be costly to store -large amounts of data. SettleMint offers [two storage -options](../../using-platform/storage/): IPFS (decentralized) and MinIO -(centralized) S3 storage. - -## Add an Integration - -Integration -Blockchains are not the only technology that your blockchain application may -need to interact with. SettleMint offers an [Integration -Studio](../../using-platform/integration-studio) which allows you connect your -blockchain application to other technologies such as databases, APIs, and more. -This tool is a low-code to which also offers a visualization of any business -logic included in your integration. - -## Add a Custom Deployment - -Your blockchain application may require custom components or frontend applications that are not provided by the standard SettleMint platform offerings. The [Custom Deployment](../../using-platform/custom-deployment/) feature allows you to deploy your own Docker images on the SettleMint platform. This provides the flexibility to integrate custom solutions, such as frontend applications, within your blockchain-based projects, enhancing the overall functionality and user experience of your application. - -## Getting Started - -Ready to build? Head over to: - -- [Building with SettleMint](using-platform/1_add-a-network-to-an-application.md) for detailed platform instructions -- [Developer Guides](developer-guides/guide-library.mdx) for step-by-step tutorials on common use cases diff --git a/docs/about-settlemint/_category_.json b/docs/about-settlemint/_category_.json deleted file mode 100644 index ebdc40a9..00000000 --- a/docs/about-settlemint/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "About SettleMint", - "position": 1 -} diff --git a/docs/account-billing/_category_.json b/docs/account-billing/_category_.json deleted file mode 100644 index e8911443..00000000 --- a/docs/account-billing/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Account and Billing", - "position": 7 -} diff --git a/docs/blockchain-guides/12_Soneium/_category_.json b/docs/blockchain-guides/12_Soneium/_category_.json deleted file mode 100644 index d0ccdacf..00000000 --- a/docs/blockchain-guides/12_Soneium/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Soneium", - "position": 11 -} diff --git a/docs/blockchain-guides/_category_.json b/docs/blockchain-guides/_category_.json deleted file mode 100644 index 1e003a05..00000000 --- a/docs/blockchain-guides/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Blockchain Guides", - "position": 5 -} diff --git a/docs/developer-guides/1.png b/docs/developer-guides/1.png deleted file mode 100644 index 865fdfb3..00000000 Binary files a/docs/developer-guides/1.png and /dev/null differ diff --git a/docs/developer-guides/_category_.json b/docs/developer-guides/_category_.json deleted file mode 100644 index e421f4c8..00000000 --- a/docs/developer-guides/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Developer Guides", - "position": 4 -} diff --git a/docs/developer-guides/guide-library.mdx b/docs/developer-guides/guide-library.mdx deleted file mode 100644 index d9aaa0cd..00000000 --- a/docs/developer-guides/guide-library.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Guide Library -description: A Guide to Connecting a Frontend to Your Blockchain Application -sidebar_position: 1 ---- - -import { ArticleCard } from '@site/src/components/BlogArticleComponent'; - -## Application Development - -These guides will help you in your blockchain application development process. - - - -## Blockchain Use-Cases - -These guides will show you how to build blockchain applications for popular use-cases. - - diff --git a/docs/developer-guides/mermaid-diagram.png b/docs/developer-guides/mermaid-diagram.png deleted file mode 100644 index f25b5331..00000000 Binary files a/docs/developer-guides/mermaid-diagram.png and /dev/null differ diff --git a/docs/launch-platform/_category_.json b/docs/launch-platform/_category_.json deleted file mode 100644 index 5aaa6209..00000000 --- a/docs/launch-platform/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Launching the Platform", - "position": 2 -} diff --git a/docs/launch-platform/managed-cloud-deployment/0_supported-cloud-providers.md b/docs/launch-platform/managed-cloud-deployment/0_supported-cloud-providers.md deleted file mode 100644 index 8bc42d64..00000000 --- a/docs/launch-platform/managed-cloud-deployment/0_supported-cloud-providers.md +++ /dev/null @@ -1,44 +0,0 @@ -# Supported cloud providers - -When launching a blockchain development project, you need to decide where your project will be stored. SettleMint offers you the flexibility to deploy in the cloud of your choice, and easily build cross-cloud provider and cross-geographical region networks. - -Every deployment uses Kubernetes as an orchestration layer for all the different services. Kubernetes is a widely used open-source system for automating the deployment, scaling, and management of containerized applications. By leveraging managed Kubernetes services by cloud providers, our platform can offer affordable, stable, and scalable environments to run the blockchain nodes and additional services. - -SettleMint supports all leading cloud providers. - -## Amazon Web Services (AWS) - -Available regions: - -- Frankfurt -- Mumbai -- Singapore -- Ohio [Contact us](mailto:support@settlemint.com) -- Bahrain [Contact us](mailto:support@settlemint.com) -- Osaka [Contact us](mailto:support@settlemint.com) - -## Google Cloud - -Available regions: - -- Brussels -- Mumbai -- Singapore -- Tokyo -- Oregon [Contact us](mailto:support@settlemint.com) - -## Microsoft Azure - -Available regions: - -- Dubai -- Tokyo -- Amsterdam [Contact us](mailto:support@settlemint.com) -- Singapore [Contact us](mailto:support@settlemint.com) -- California [Contact us](mailto:support@settlemint.com) - -:::info Note - -We are continuously working on adding support for more cloud providers and regions. Do you have a request? Or do you want to learn more about 'on-premise' or 'Bring Your Own Cloud' setups? Feel free to [contact us](mailto:support@settlemint.com). - -::: diff --git a/docs/launch-platform/managed-cloud-deployment/_category_.json b/docs/launch-platform/managed-cloud-deployment/_category_.json deleted file mode 100644 index 1c56f12a..00000000 --- a/docs/launch-platform/managed-cloud-deployment/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Managed Cloud Deployment", - "position": 1 -} diff --git a/docs/launch-platform/self-hosted/_category_.json b/docs/launch-platform/self-hosted/_category_.json deleted file mode 100644 index 6cc2bb12..00000000 --- a/docs/launch-platform/self-hosted/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Self Hosted Deployment", - "position": 2 -} diff --git a/docs/launch-platform/self-hosted/backups/_category_.json b/docs/launch-platform/self-hosted/backups/_category_.json deleted file mode 100644 index 38fa63c1..00000000 --- a/docs/launch-platform/self-hosted/backups/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Backups", - "position": 4 -} diff --git a/docs/launch-platform/self-hosted/backups/velero-aws.md b/docs/launch-platform/self-hosted/backups/velero-aws.md deleted file mode 100644 index 86d54b15..00000000 --- a/docs/launch-platform/self-hosted/backups/velero-aws.md +++ /dev/null @@ -1,78 +0,0 @@ -# Velero Backups on AWS - -## Velero CLI Install - -Install velero cli binary from [VMWare](https://github.com/vmware-tanzu/velero/releases) - -``` -For Linux x86_64: -curl -LO https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz -tar zxvf velero-v1.10.1-linux-amd64.tar.gz -sudo mv velero-v1.10.1-linux-amd64/velero /usr/local/bin/velero -velero version -``` - -## AWS Install - -Install aws CLI tool from [Amazon](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). - -``` -For Linux x86_64: -curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" -unzip awscliv2.zip -sudo ./aws/install -``` - -### Prep Work: - -- Create S3 Bucket -- Create IAM User - -### Create a credential file to be used to install the velero-aws plugin: - -``` -[default] -aws_access_key_id= -aws_secret_access_key= -``` - -### Run the velero install command with these additional flags: - -### Velero 1.10 and later: - -Use the `--use-node-agent`, `--uploader-type=restic`, and `--use-volume-snapshots=false` flags. - -### Velero versions earlier than 1.10: - -Use the `--use-restic` and `--use-volume-snapshots=false` flags. - -Example: - -``` -export BUCKET= -export REGION= -velero install \ - --provider aws \ - --plugins velero/velero-plugin-for-aws:v1.6.0 \ - --bucket $BUCKET \ - --backup-location-config region=$REGION \ - --secret-file CREDS_FILE \ - --use-node-agent --uploader-type=restic \ - --use-volume-snapshots=false -``` - -### Application Admin Configuration - -- Navigate to Snapshots -- Select Settings & Schedule tab -- Change the Destination location to Amazon S3 -- Enter S3 Bucket Name, Region, and Path. -- Enter IAM User Access Key ID and Access Key Secret -- Click "Update storage settings" button. -- Start a Partial Snapshot (Application) or Full Snapshot (Instance) - -Optional: - -- Restore from Partial Snapshot (Application) or Full Snapshot (Instance) - -Sources: [Velero](https://github.com/vmware-tanzu/velero-plugin-for-aws#setup), [Replicated](https://docs.replicated.com/enterprise/snapshots-storage-destinations#configure-aws-storage-for-online-environments) diff --git a/docs/launch-platform/self-hosted/backups/velero-gcp.md b/docs/launch-platform/self-hosted/backups/velero-gcp.md deleted file mode 100644 index 0c36b4fb..00000000 --- a/docs/launch-platform/self-hosted/backups/velero-gcp.md +++ /dev/null @@ -1,60 +0,0 @@ -# Velero Backups on Google Cloud - -## Velero CLI Install - -Install velero cli binary from [VMWare](https://github.com/vmware-tanzu/velero/releases) - -``` -For Linux x86_64: -curl -LO https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz -tar zxvf velero-v1.10.1-linux-amd64.tar.gz -sudo mv velero-v1.10.1-linux-amd64/velero /usr/local/bin/velero -velero version -``` - -## GCP Install - -### Prep Work: - -- Create GCS Bucket -- Create IAM Service Account -- Download Service Account Credential JSON File - -### Run the velero install command with these additional flags: - -### Velero 1.10 and later: - -Use the `--use-node-agent`, `--uploader-type=restic`, and `--use-volume-snapshots=false` flags. - -### Velero versions earlier than 1.10: - -Use the `--use-restic` and `--use-volume-snapshots=false` flags. - -Example: - -``` -export BUCKET= -velero install \ - --provider gcp \ - --plugins velero/velero-plugin-for-gcp:v1.6.0 \ - --bucket $BUCKET \ - --secret-file ./CREDS_FILE - --use-node-agent --uploader-type=restic \ - --use-volume-snapshots=false -``` - -### Application Admin Configuration - -- Navigate to Snapshots -- Select Settings & Schedule tab -- Change the Destination location to Google Cloud Storage -- Enter Bucket Name and Path. -- Copy/Paste the information from the Service Account Credential JSON File -- Click "Update storage settings" button. -- Start a Partial Snapshot (Application) or Full Snapshot (Instance) - -Optional: - -- Restore from Partial Snapshot (Application) or Full Snapshot (Instance) - -Sources: [Velero](https://github.com/vmware-tanzu/velero-plugin-for-gcp#setup), [Replicated](https://docs.replicated.com/enterprise/snapshots-storage-destinations#configure-gcp-storage-for-online-environments) diff --git a/docs/launch-platform/self-hosted/backups/velero-hostpath.md b/docs/launch-platform/self-hosted/backups/velero-hostpath.md deleted file mode 100644 index f728a429..00000000 --- a/docs/launch-platform/self-hosted/backups/velero-hostpath.md +++ /dev/null @@ -1,72 +0,0 @@ -# Velero Backups with HostPaths - -## Velero CLI Install - -Install velero cli binary from [VMWare](https://github.com/vmware-tanzu/velero/releases) - -``` -For Linux x86_64: -curl -LO https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz -tar zxvf velero-v1.10.1-linux-amd64.tar.gz -sudo mv velero-v1.10.1-linux-amd64/velero /usr/local/bin/velero -velero version -``` - -## Hostpath Install - -### Prep Work: - -- The host path must be a dedicated directory. Do not use a partition used by a service like Docker or Kubernetes for ephemeral storage. -- The host path must exist and be writable by the `user:group 1001:1001` on all nodes in the cluster. For example, in a Linux environment you might run `sudo chown -R 1001:1001 /backups` to change the `user:group` permissions. - -### Additional Prep Info: - -If you use a mounted directory for the storage destination, such as one that is created with the Common Internet File System (CIFS) or Server Message Block (SMB) protocols, ensure that you configure the user:group 1001:1001 permissions on all nodes in the cluster and from the server side as well. - -You cannot change the permissions of a mounted network shared filesystem from the client side. To reassign the user:group to 1001:1001 for a directory that is already mounted, you must remount the directory. For example, for a CIFS mounted directory, specify the `uid=1001,gid=1001` mount options in the CIFS mount command. - -### Run the velero install command with these additional flags: - -### Velero 1.10 and later: - -Use the `--use-node-agent`, `--uploader-type=restic`, and `--use-volume-snapshots=false` flags. - -### Velero versions earlier than 1.10: - -Use the `--use-restic` and `--use-volume-snapshots=false` flags. - -Example: - -``` -velero install \ ---no-default-backup-location \ ---no-secret \ ---use-node-agent --uploader-type=restic \ ---use-volume-snapshots=false -``` - -### Run command to set host path storage location - -``` -kubectl kots velero configure-hostpath --namespace NAME --hostpath /PATH -``` - -Replace: - -- NAME with the namespace where the admin console is installed and running -- PATH with the path to the directory where the backups will be stored - -### Application Admin Configuration - -- Navigate to Snapshots -- Select Settings & Schedule tab -- Change the Destination location to Host Path -- Enter Host Path. -- Click "Update storage settings" button. -- Start a Partial Snapshot (Application) or Full Snapshot (Instance) - -Optional: - -- Restore from Partial Snapshot (Application) or Full Snapshot (Instance) - -Sources: [Velero](https://docs.replicated.com/enterprise/snapshots-velero-cli-installing), [Replicated](https://docs.replicated.com/enterprise/snapshots-configuring-hostpath) diff --git a/docs/launch-platform/self-hosted/backups/velero-internal.md b/docs/launch-platform/self-hosted/backups/velero-internal.md deleted file mode 100644 index 6148f935..00000000 --- a/docs/launch-platform/self-hosted/backups/velero-internal.md +++ /dev/null @@ -1,33 +0,0 @@ -# Velero Backups on Internal Storage - -## Velero CLI Install - -Install velero cli binary from [VMWare](https://github.com/vmware-tanzu/velero/releases) - -``` -For Linux x86_64: -curl -LO https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz -tar zxvf velero-v1.10.1-linux-amd64.tar.gz -sudo mv velero-v1.10.1-linux-amd64/velero /usr/local/bin/velero -velero version -``` - -## Local Storage Install - -### Prep Work: - -- Ensure there is enough disk space for application and backups - -### Application Admin Configuration - -- Navigate to Snapshots -- Select Settings & Schedule tab -- Change the Destination location to Internal Storage (Default) -- Click "Update storage settings" button. -- Start a Partial Snapshot (Application) or Full Snapshot (Instance) - -Optional: - -- Restore from Partial Snapshot (Application) or Full Snapshot (Instance) - -Sources: [Replicated](https://docs.replicated.com/enterprise/snapshots-config-workflow) diff --git a/docs/launch-platform/self-hosted/installation-guide/_category_.json b/docs/launch-platform/self-hosted/installation-guide/_category_.json deleted file mode 100644 index c2fa6220..00000000 --- a/docs/launch-platform/self-hosted/installation-guide/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Installation Guide", - "position": 1 -} diff --git a/docs/launch-platform/self-hosted/installation-guide/infrastructure-requirements.md b/docs/launch-platform/self-hosted/installation-guide/infrastructure-requirements.md deleted file mode 100644 index 9f85e0cb..00000000 --- a/docs/launch-platform/self-hosted/installation-guide/infrastructure-requirements.md +++ /dev/null @@ -1,365 +0,0 @@ ---- -title: Infrastructure Requirements -sidebar_position: 2 -description: Infrastructure requirements for self-hosting the platform ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Infrastructure Requirements - -:::caution -The requirements listed below are for the core platform components only. Additional resources will be needed for prerequisites and services you plan to deploy. -::: - -## Compute Resources - - - - -- **CPU**: 4 cores -- **RAM**: 16GB -- **Storage**: 100GB SSD - -:::note -Minimum requirements are suitable for testing and development environments only. -::: - - - - -- **CPU**: 8+ cores -- **RAM**: 32GB -- **Storage**: 250GB+ SSD - -:::tip -These specifications provide headroom for growth and better performance. -::: - - - - -## Network Requirements - -The platform requires specific network configurations to ensure secure and reliable communication between components: - -
-
- -### Connectivity - -- **Internet Access**: Required for pulling container images and updates -- **Load Balancer**: For distributing traffic across nodes -- **Ingress Controller**: For routing external traffic -- **SSL/TLS**: Valid certificates for secure communication - -
-
- -### Required Ports - -- **80/443**: HTTP/HTTPS traffic -- **6443**: Kubernetes API server -- **30000-32767**: NodePort services range -- **10250**: Kubelet API -- **179**: Calico BGP (if using Calico) - -
-
- -:::note Network Security -We recommend implementing network policies and security groups to control traffic flow between components. -::: - -## Storage Requirements - -Proper storage configuration is crucial for platform stability and performance. Consider the following requirements: - -
-
- -### Performance Requirements - -- **Type**: SSD storage required for all components -- **IOPS**: Minimum 3000 IOPS for database volumes -- **Latency**: < 10ms average latency -- **Throughput**: 125MB/s minimum for database volumes - -
-
- -### Capacity Planning - -- **Initial Allocation**: Start with recommended sizes -- **Growth Buffer**: Plan for 30% annual growth -- **Backup Storage**: Equal to primary storage -- **Monitoring**: Implement storage usage alerts - -
-
- -:::tip Storage Best Practices - -- Use separate volumes for different components -- Implement regular backup procedures -- Monitor storage performance metrics -- Set up alerts for capacity thresholds - ::: - -## Prerequisites Resource Requirements - -:::info Prerequisites Impact -When hosting prerequisites on the same infrastructure, these requirements must be added to the base platform specifications. Each component can be hosted separately or together depending on your architecture. -::: - - - - -### PostgreSQL - -
-
- -#### Resource Requirements - -- **CPU**: 2 cores -- **RAM**: 4GB -- **Storage**: 50GB SSD - -
-
- -#### Recommendations - -- High IOPS SSD storage -- Regular backups -- Consider high availability setup - -
-
- -### Redis - -
-
- -#### Resource Requirements - -- **CPU**: 2 cores -- **RAM**: 4GB -- **Storage**: 20GB SSD - -
-
- -#### Recommendations - -- In-memory performance -- Persistence configuration -- Consider clustering for HA - -
-
- -
- - -### MinIO - -
-
- -#### Resource Requirements - -- **CPU**: 2 cores -- **RAM**: 8GB -- **Storage**: 100GB+ SSD - -
-
- -#### Recommendations - -- Scalable storage setup -- Regular capacity monitoring -- Backup strategy required - -
-
- -
- - -### HashiCorp Vault - -
-
- -#### Resource Requirements - -- **CPU**: 2 cores -- **RAM**: 4GB -- **Storage**: 20GB SSD - -
-
- -#### Recommendations - -- High availability setup -- Auto-unsealing configuration -- Regular key rotation - -
-
- -
-
- -
-

Production Considerations

-

-These are baseline requirements. For production environments, consider: -

-
    -
  • High availability configurations may require 2-3x these resources
  • -
  • Monitoring and logging overhead
  • -
  • Backup storage requirements
  • -
  • Scaling headroom for growth
  • -
-
- -### Total Resource Summary - -For a production setup hosting both platform and prerequisites: - -
-
- -### CPU - -- Platform: 8 cores -- Prerequisites: 8 cores -- **Total: 16+ cores** - -
-
- -### RAM - -- Platform: 32GB -- Prerequisites: 20GB -- **Total: 52GB+** - -
-
- -### Storage - -- Platform: 250GB -- Prerequisites: 190GB -- **Total: 440GB+** - -
-
- -## Service Requirements - -The platform allows you to deploy services in two ways: - -1. On the same cluster as the platform -2. On separate target clusters - -
-
- -### Same Cluster Deployment - -If you plan to deploy services on the same cluster as the platform: - -- Add service requirements to the platform requirements -- Include them in capacity planning -- Account for resource overhead -- Plan for scaling headroom - -
-
- -### Target Cluster Deployment - -Using separate target clusters for services: - -- Keeps platform and service workloads isolated -- Requires separate infrastructure planning -- Can be optimized for specific service needs -- Enables geographic distribution - -
-
- -:::tip Infrastructure Planning Strategy -We recommend: - -1. List all services you plan to deploy -2. Decide on deployment strategy (same cluster or target clusters) -3. For same cluster: Add service requirements to platform requirements -4. For target clusters: Plan separate infrastructure -5. Include 30% buffer for growth and peak loads - ::: - -:::info Example Calculation -Let's calculate requirements for a setup with: - -- 2 Polygon nodes (Mainnet & Mumbai) -- 1 Hyperledger Besu node -- 1 Smart Contract Portal -- 1 Integration Studio -- 1 Blocksout Explorer - -**Service Requirements (Medium size, Dedicated mode):** - -- Polygon Nodes (2x): - - - CPU: 2 × 1.5 cores = 3 cores - - RAM: 2 × 1.0 GB = 2 GB - - Storage: Minimal - -- Besu Node (1x): - - - CPU: 1.5 cores - - RAM: 2.5 GB - - Storage: 100 GB - -- Smart Contract Portal: - - - CPU: 2.0 cores - - RAM: 2.0 GB - - Storage: 10 GB - -- Integration Studio: - - - CPU: 2.0 cores - - RAM: 4.0 GB - - Storage: 10 GB - -- Blocksout Explorer: - - CPU: 2.0 cores - - RAM: 4.0 GB - - Storage: 50 GB - -**Same Cluster Approach:** - -- Total CPU: 27+ cores (16 platform/prereqs + 11 services) -- Total RAM: 67GB+ (52GB platform/prereqs + 15GB services) -- Total Storage: 620GB+ (440GB platform/prereqs + 180GB services) - -**Target Cluster Approach:** - -- Platform Cluster: 16+ cores, 52GB+ RAM, 440GB+ storage -- Service Cluster: 11+ cores, 15GB+ RAM, 180GB+ storage - ::: - -:::tip Service Requirements Reference -For detailed specifications of all available services and their resource requirements, please refer to our [Service Requirements Documentation](/documentation/docs/reference/service-requirements). -::: diff --git a/docs/launch-platform/self-hosted/installation-guide/prerequisites/_category_.json b/docs/launch-platform/self-hosted/installation-guide/prerequisites/_category_.json deleted file mode 100644 index d3a1d385..00000000 --- a/docs/launch-platform/self-hosted/installation-guide/prerequisites/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Prerequisites", - "position": 2 -} diff --git a/docs/launch-platform/self-hosted/installation-guide/prerequisites/domain-and-tls.md b/docs/launch-platform/self-hosted/installation-guide/prerequisites/domain-and-tls.md deleted file mode 100644 index 395b42f0..00000000 --- a/docs/launch-platform/self-hosted/installation-guide/prerequisites/domain-and-tls.md +++ /dev/null @@ -1,256 +0,0 @@ ---- -title: Domain and TLS Configuration -sidebar_position: 3 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Domain and TLS Configuration - -## Overview - -
-
- -### Purpose - -- Secure platform access -- Service-to-service communication -- API endpoint security -- User authentication - -
-
- -### Requirements - -- Registered domain name -- DNS management access -- Ability to create DNS records -- TLS certificate provider - -
-
- -## Domain Configuration - - - - -### 1. Configure Main Domain - -- Create an A record pointing to your ingress controller IP -- Example: `platform.company.com → 203.0.113.1` - -### 2. Add Wildcard Subdomain - -- Create a CNAME record for all subdomains -- Pattern: `*.platform.company.com → platform.company.com` - - - - -### DNS Resolution Tests - -```bash -# Check A record -dig +short platform.company.com - -# Check CNAME record -dig +short test.platform.company.com - -# Verify IP matches ingress -kubectl -n ingress-nginx get svc ingress-nginx-controller \ - -o jsonpath='{.status.loadBalancer.ingress[0].ip}' -``` - - - - -## TLS Configuration - - - - -### Quick Setup with Cloudflare - -1. **Add Domain to Cloudflare** - - - Transfer DNS management - - Update nameservers - -2. **Configure SSL/TLS** - - Purchase Advanced Certificate Manager (ACM) - - Enable Total TLS - - Set SSL/TLS mode to Full (Strict) - -:::tip Benefits - -- Automatic certificate management -- DDoS protection included -- Easy wildcard certificate support -- Global CDN - ::: - - - - -### Setup with cert-manager - -1. **Install cert-manager** - -```bash -helm repo add jetstack https://charts.jetstack.io --force-update -helm repo update -helm upgrade --install \ - cert-manager jetstack/cert-manager \ - --namespace cert-manager \ - --create-namespace \ - --set installCRDs=true -``` - -2. **Configure DNS Provider** - -```bash -# Create API token secret -kubectl apply -n cert-manager -f - < -EOF -``` - -3. **Create ClusterIssuer** - -```bash -kubectl apply -f - < - - -## Information Collection - -
- -### Required Values for Platform Installation - -- [ ] Domain name (e.g., `platform.company.com`) -- [ ] Ingress annotations (if using cert-manager: `cert-manager.io/cluster-issuer: "letsencrypt"`) -- [ ] TLS secret name for the certificate -- [ ] SSL redirect setting (`true` or `false`) - -:::note Example Configuration - -```yaml -ingress: - enabled: true - className: nginx - host: 'platform.company.com' - annotations: - cert-manager.io/cluster-issuer: 'letsencrypt' - nginx.ingress.kubernetes.io/ssl-redirect: 'false' - tls: - - secretName: 'tls-secret' - hosts: - - 'platform.company.com' - - '*.platform.company.com' - -deploymentEngine: - platform: - domain: - hostname: 'platform.company.com' - clusterManager: - domain: - hostname: 'platform.company.com' - targets: - - clusters: - - domains: - service: - tls: true - hostname: 'platform.company.com' - ingress: - ingressClass: 'nginx' -``` - -::: - -
- -## Troubleshooting - -
-
- -### DNS Issues - -- **Not Resolving** - - - Verify A record IP - - Check CNAME configuration - - Allow DNS propagation (48h max) - -- **Wrong IP** - - Confirm ingress controller IP - - Update DNS records - - Clear local DNS cache - -
-
- -### Certificate Issues - -- **cert-manager** - - - Check issuer status - - Verify DNS01 challenge - - Review cert-manager logs - -- **Cloudflare** - - Verify SSL/TLS mode - - Check certificate status - - Confirm proxy status - -
-
- -## Next Steps - -1. ✅ Verify DNS resolution -2. ✅ Confirm TLS certificate issuance -3. ➡️ Proceed to [OAuth Provider Setup](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/oauth) - -:::tip Need Help? -Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. -::: diff --git a/docs/launch-platform/self-hosted/installation-guide/prerequisites/ingress-controller.md b/docs/launch-platform/self-hosted/installation-guide/prerequisites/ingress-controller.md deleted file mode 100644 index 180a4adf..00000000 --- a/docs/launch-platform/self-hosted/installation-guide/prerequisites/ingress-controller.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Ingress Controller -sidebar_position: 2 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Ingress Controller Setup - -## Overview - -The ingress controller is responsible for: - -- Managing external access to services -- Load balancing -- SSL/TLS termination -- Routing rules - -## Deployment Options - - - - -### Install with Helm - -```bash -helm upgrade --install ingress-nginx ingress-nginx \ - --repo https://kubernetes.github.io/ingress-nginx \ - --namespace ingress-nginx \ - --create-namespace -``` - -Wait for the load balancer IP to be assigned: - -```bash -kubectl get service -n ingress-nginx ingress-nginx-controller \ - --output jsonpath='{.status.loadBalancer.ingress[0].ip}' -``` - - - - -### Cloud Provider Marketplaces - -Choose your cloud provider's marketplace offering: - -- **Digital Ocean**: - - - Install "NGINX Ingress Controller" from marketplace - - Automatically configures load balancer - -- **CIVO**: - - - Enable "Nginx ingress controller" during cluster creation - - Or add from marketplace post-creation - -- **Other Providers**: - - Most cloud providers offer similar marketplace solutions - - Follow provider-specific installation steps - - - - -## Validation - -Verify your installation: - -```bash -# Check pods are running -kubectl get pods -n ingress-nginx - -# Verify service and IP allocation -kubectl get svc -n ingress-nginx -``` - -## Information Collection - -
- -### Required Values for Platform Installation - -- [ ] Ingress class name (default: `nginx`) -- [ ] Load balancer IP address -- [ ] Ingress controller namespace - -:::note Example Configuration - -```yaml -ingress: - enabled: true - className: nginx - # Other ingress settings will be configured in Domain & TLS section -``` - -::: - -
- -## Troubleshooting - -Common issues and solutions: - -1. **No Load Balancer IP** - -- Verify cloud provider load balancer service is running -- Check cloud provider quotas -- Ensure correct service annotations - -2. **Controller Not Ready** - -- Check pod logs: `kubectl logs -n ingress-nginx ` -- Verify resource requirements are met -- Check network policies - -## Next Steps - -1. ✅ Verify ingress controller is running -2. ✅ Note down the load balancer IP -3. ➡️ Proceed to [Domain and TLS Setup](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/domain-and-tls) - -:::tip Need Help? -Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. -::: diff --git a/docs/launch-platform/self-hosted/installation-guide/prerequisites/metrics-and-logs.md b/docs/launch-platform/self-hosted/installation-guide/prerequisites/metrics-and-logs.md deleted file mode 100644 index f626d056..00000000 --- a/docs/launch-platform/self-hosted/installation-guide/prerequisites/metrics-and-logs.md +++ /dev/null @@ -1,191 +0,0 @@ ---- -title: Metrics and Logs -sidebar_position: 8 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Metrics and Logs Setup - -## Overview - -The monitoring stack consists of: - -- Metrics collection (Prometheus/VictoriaMetrics) -- Log aggregation (Loki) -- Metrics server for resource metrics -- Kube-state-metrics for cluster state - -## Deployment Options - - - - -### VictoriaMetrics + Loki Setup - -1. **Install VictoriaMetrics** - -```bash -helm upgrade --install victoria-metrics victoria-metrics-single \ - --repo https://victoriametrics.github.io/helm-charts/ \ - --namespace observability \ - --create-namespace \ - --set server.scrape.enabled=true -``` - -2. **Install Loki and Promtail** - -```bash -helm install loki loki \ - --repo https://grafana.github.io/helm-charts \ - --namespace observability \ - --create-namespace \ - --set loki.auth_enabled=false \ - --set loki.commonConfig.replication_factor=1 \ - --set loki.storage.type=filesystem -``` - -3. **Install kube-state-metrics** - -```bash -helm install kube-state-metrics kube-state-metrics \ - --repo https://prometheus-community.github.io/helm-charts \ - --namespace observability \ - --create-namespace -``` - -:::tip -This setup provides: - -- Efficient resource usage -- Simple maintenance -- Sufficient monitoring capabilities -- Easy scalability - ::: - - - - -### Prometheus + Grafana + Loki - -1. **Install Prometheus Stack** - -```bash -helm upgrade --install monitoring prometheus-community/kube-prometheus-stack \ - --namespace observability \ - --create-namespace -``` - -2. **Install Loki Stack** - -```bash -helm install loki grafana/loki-stack \ - --namespace observability \ - --set grafana.enabled=false -``` - -:::caution -Full stack requires: - -- More resources -- Additional configuration -- Regular maintenance - ::: - - - - -## Requirements - -
-
- -### Minimum Specifications - -- Storage for metrics retention -- Storage for log retention -- Network access from platform -- Basic authentication - -
-
- -### Optional Features - -- Long-term storage -- Alerting setup -- Dashboard configuration -- High availability - -
-
- -## Information Collection - -
- -### Required Values for Platform Installation - -- [ ] Metrics endpoint URL -- [ ] Logs endpoint URL -- [ ] Authentication details (if enabled) - -:::note Example Configuration - -```yaml -features: - observability: - metrics: - enabled: true - apiUrl: 'http://victoria-metrics-victoria-metrics-single-server.observability.svc.cluster.local:8428/prometheus/api/v1' - logs: - enabled: true - apiUrl: 'http://loki-gateway.observability.svc.cluster.local/loki/api/v1' -``` - -::: - -
- -## Validation - -Test your monitoring setup: - -```bash -# Check VictoriaMetrics -curl -f "http://victoria-metrics:8428/health" - -# Check Loki -curl -f "http://loki:3100/ready" - -# Verify kube-state-metrics -kubectl get --raw /metrics -``` - -## Troubleshooting - -Common issues and solutions: - -1. **Metrics Not Collecting** - - - Verify service endpoints - - Check scrape configurations - - Review service monitors - - Validate permissions - -2. **Log Issues** - - Check Loki status - - Verify storage configuration - - Review retention settings - - Check network policies - -## Next Steps - -1. ✅ Set up metrics collection -2. ✅ Configure log aggregation -3. ➡️ Ready for [Platform Installation](/documentation/docs/launch-platform/self-hosted/installation-guide/platform-installation) - -:::tip Need Help? -Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. -::: diff --git a/docs/launch-platform/self-hosted/installation-guide/prerequisites/oauth.md b/docs/launch-platform/self-hosted/installation-guide/prerequisites/oauth.md deleted file mode 100644 index 010f942f..00000000 --- a/docs/launch-platform/self-hosted/installation-guide/prerequisites/oauth.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: OAuth Provider -sidebar_position: 3 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# OAuth Provider Setup - -## Overview - -The SettleMint Platform requires OAuth authentication for: - -- User authentication -- Access control -- Single sign-on capabilities -- Identity management - -## Provider Options - - - - -### Google OAuth Setup - -1. **Access Google Cloud Console** - - - Go to [Google Cloud Console](https://console.developers.google.com/apis/credentials) - - Select or create a project - -2. **Create OAuth Client** - - - Click `+ CREATE CREDENTIALS` - - Select `OAuth client ID` - - Choose `Web application` type - -3. **Configure OAuth Client** - - Add Authorized JavaScript origins: - ``` - https://your-domain.com - ``` - - Add Authorized redirect URIs: - ``` - https://your-domain.com/api/auth/callback/google - ``` - -:::tip -Make sure to replace `your-domain.com` with your actual platform domain. -::: - - - - -### Azure Active Directory Setup - -1. **Access Azure Portal** - - - Go to Azure Active Directory - - Register a new application - -2. **Configure Application** - - - Add redirect URIs - - Set up platform configurations - - Configure authentication settings - -3. **Set Required Permissions** - - OpenID Connect permissions - - User.Read permissions - - Additional scopes as needed - - - - -### Custom OIDC Provider - -For enterprise setups, you can use any OpenID Connect compliant provider: - -- Okta -- Auth0 -- Keycloak -- Other OIDC-compliant providers - -Required provider capabilities: - -- OpenID Connect support -- OAuth 2.0 compliance -- User profile information -- Email verification - - - - -## JWT Configuration - -Generate a secure signing key for JWT tokens: - -```bash -openssl rand -base64 32 -``` - -:::caution -Store this key securely - it's used to sign user sessions. -::: - -## Information Collection - -
- -### Required Values for Platform Installation - -- [ ] OAuth Client ID -- [ ] OAuth Client Secret -- [ ] JWT signing key -- [ ] Configured redirect URI - -:::note Example Configuration - -```yaml -auth: - jwtSigningKey: 'your-generated-key' # From openssl command - providers: - google: - enabled: true - clientID: 'your-client-id' # From OAuth provider - clientSecret: 'your-secret' # From OAuth provider -``` - -::: - -
- -## Validation - -Before proceeding, verify: - -1. OAuth client is properly configured -2. Redirect URIs match your domain -3. JWT signing key is generated and saved -4. Required scopes are enabled - -## Troubleshooting - -Common issues and solutions: - -1. **Invalid Redirect URI** - - - Verify exact URI match - - Check for protocol (https) mismatch - - Confirm domain spelling - -2. **Authentication Failures** - - Verify client credentials - - Check scope configurations - - Validate JWT signing key - -## Next Steps - -1. ✅ Configure OAuth provider -2. ✅ Generate JWT signing key -3. ➡️ Proceed to [PostgreSQL Setup](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/postgresql) - -:::tip Need Help? -Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. -::: diff --git a/docs/launch-platform/self-hosted/installation-guide/prerequisites/overview.md b/docs/launch-platform/self-hosted/installation-guide/prerequisites/overview.md deleted file mode 100644 index 74bbe68e..00000000 --- a/docs/launch-platform/self-hosted/installation-guide/prerequisites/overview.md +++ /dev/null @@ -1,178 +0,0 @@ ---- -title: Overview -sidebar_position: 1 -description: Complete guide to setting up prerequisites for the SettleMint Platform installation ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Prerequisites Overview - -Before installing the SettleMint Platform, you'll need to set up several core services. This guide will walk you through each prerequisite and help you collect the necessary information for installation. - -:::tip Quick Navigation -Use the sidebar to navigate between different prerequisites. We recommend following them in order, but you can skip to specific sections if needed. -::: - -## How to Use This Section - -1. Review each prerequisite service -2. Choose your preferred deployment method for each service -3. Follow the setup instructions -4. Record the required information in a secure location -5. Proceed to the next prerequisite - -:::caution Important -Make sure to complete **all** prerequisites before proceeding with the platform installation. Missing or incorrectly configured services can cause installation failures. -::: - -## Required Services - - - - -#### Ingress Controller - -- Traffic management and load balancing -- SSL/TLS termination -- [Setup Guide](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/ingress-controller) - -#### Domain and TLS - -- Domain name configuration -- SSL/TLS certificates -- [Setup Guide](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/domain-and-tls) - -#### Metrics and Logs - -- Prometheus metrics collection -- Grafana visualization -- Loki log aggregation -- [Setup Guide](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/metrics-and-logs) - - - - -#### PostgreSQL Database - -- Primary platform database -- Stores user data and configurations -- Minimum version: PostgreSQL 13+ -- [Setup Guide](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/postgresql) - -#### Redis Cache - -- Session management -- Real-time features -- Performance optimization -- [Setup Guide](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/redis) - - - - -#### S3-Compatible Storage - -- Platform assets storage -- Blockchain data persistence -- [Setup Guide](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/s3-compatible-storage) - -#### Secrets management - -- Secrets management -- Encryption keys -- [Setup Guide](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/secret-management) - -#### OAuth Provider - -- Authentication service -- User identity management -- [Setup Guide](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/oauth) - - - - -## Deployment Options - -Each prerequisite service can be deployed in multiple ways: - -
-
- -### Self-Hosted - -- ✅ Full control -- ✅ Data sovereignty -- ⚠️ Higher maintenance -- ⚠️ Requires expertise - -
-
- -### Managed Services - -- ✅ Lower maintenance -- ✅ Managed updates -- ⚠️ Limited customization -- ⚠️ Higher costs - -
-
- -:::info -Choose deployment options based on your: - -- Security requirements -- Infrastructure capabilities -- Operational expertise -- Budget constraints - ::: - -## Information Collection - -As you complete each prerequisite, you'll need to collect specific information required for the platform installation. - -
- -### Information Collection Checklist - -- ✅ Domain and TLS certificates -- ✅ Database connection strings -- ✅ Redis credentials -- ✅ S3 bucket details -- ✅ Vault access tokens -- ✅ OAuth client credentials -- ✅ Metrics endpoints - -
- -## Next Steps - -1. Start with the [Ingress Controller](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/ingress-controller) setup -2. Follow each prerequisite guide in order -3. Validate your configurations -4. Proceed to [Platform Installation](/documentation/docs/launch-platform/self-hosted/installation-guide/platform-installation) - -## Need Help? - -
-
- -### Documentation - -- Review the prerequisites guides -- Check troubleshooting sections -- Follow best practices -- Consult platform architecture - -
-
- -### Support - -- Email: support@settlemint.com -- Schedule technical consultation -- Contact your account manager - -
-
diff --git a/docs/launch-platform/self-hosted/installation-guide/prerequisites/postgresql.md b/docs/launch-platform/self-hosted/installation-guide/prerequisites/postgresql.md deleted file mode 100644 index c74228f6..00000000 --- a/docs/launch-platform/self-hosted/installation-guide/prerequisites/postgresql.md +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: PostgreSQL Database -sidebar_position: 4 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# PostgreSQL Database Setup - -## Overview - -PostgreSQL serves as the primary database for: - -- User data and configurations -- Platform state -- Application data -- Minimum version required: PostgreSQL 13+ - -## Deployment Options - - - - -### Cloud Provider Options - -#### Digital Ocean Managed Database - -1. Create new database cluster - - Choose PostgreSQL 13+ - - Select plan (minimum 2 vCPU, 4GB RAM) - - Enable connection pooling (recommended: 50 connections) - -#### Neon Serverless PostgreSQL - -1. Create new project -2. Set up new database -3. Enable connection pooling -4. Note the connection string - -#### Other Providers - -- Amazon RDS -- Google Cloud SQL -- Azure Database for PostgreSQL - -:::tip -Managed services handle: - -- Automatic backups -- High availability -- Security patches -- Performance monitoring - ::: - - - - -### Bitnami PostgreSQL Chart - -1. Install PostgreSQL: - -```bash -helm upgrade --install postgresql oci://registry-1.docker.io/bitnamicharts/postgresql \ - --namespace postgresql \ - --version 14.3.3 \ - --create-namespace \ - --set global.postgresql.auth.username=platform \ - --set global.postgresql.auth.password=your-secure-password \ - --set global.postgresql.auth.database=platform -``` - -2. Wait for deployment: - -```bash -kubectl -n postgresql get pods -w -``` - -:::caution -For production use: - -- Configure proper resource limits -- Set up regular backups -- Consider high availability setup - ::: - - - - -## Requirements - -
-
- -### Minimum Specifications - -- PostgreSQL 13 or higher -- 2 vCPU cores -- 4GB RAM -- 20GB storage - -
-
- -### Recommended Features - -- Connection pooling -- Automated backups -- Point-in-time recovery -- SSL/TLS encryption - -
-
- -## Information Collection - -
- -### Required Values for Platform Installation - -- [ ] Database hostname -- [ ] Port number (default: 5432) -- [ ] Database name -- [ ] Username -- [ ] Password -- [ ] SSL mode (e.g., `require`) - -:::note Example Configuration - -```yaml -postgresql: - host: 'your-db-host' - port: 5432 - user: 'platform' - password: 'your-secure-password' - database: 'platform' - sslMode: 'require' # or "disable" for local development -``` - -::: - -
- -## Validation - -Test your PostgreSQL connection: - -```bash -# Using psql client -psql "postgres://username:password@hostname:5432/dbname?sslmode=require" - -# Or using connection string -psql "postgresql://username:password@hostname:5432/dbname?sslmode=require" -``` - -## Troubleshooting - -Common issues and solutions: - -1. **Connection Failures** - - - Verify credentials - - Check network/firewall rules - - Confirm SSL/TLS settings - - Validate connection string format - -2. **Performance Issues** - - Check connection pool settings - - Monitor resource usage - - Review query performance - - Verify index usage - -## Next Steps - -1. ✅ Set up PostgreSQL database -2. ✅ Configure connection pooling -3. ➡️ Proceed to [Redis Setup](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/redis) - -:::tip Need Help? -Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. -::: diff --git a/docs/launch-platform/self-hosted/installation-guide/prerequisites/redis.md b/docs/launch-platform/self-hosted/installation-guide/prerequisites/redis.md deleted file mode 100644 index 6a02b918..00000000 --- a/docs/launch-platform/self-hosted/installation-guide/prerequisites/redis.md +++ /dev/null @@ -1,227 +0,0 @@ ---- -title: Redis Cache -sidebar_position: 5 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Redis Cache Setup - -## Overview - -Redis serves as a critical component for: - -- Session management -- Real-time features -- Caching layer -- Performance optimization - -## Deployment Options - - - - -### Cloud Provider Options - -#### Google Cloud Memorystore - -1. **Enable and Configure** - - Go to [Google Cloud Console](https://console.cloud.google.com) - - Enable Memorystore for Redis API - - Create new Redis instance: - - Choose Basic tier for standard workloads - - Select region (same as your GKE cluster) - - Set memory capacity (minimum 1GB) - - Enable authentication (recommended) - - Configure VPC network and authorized networks - -#### Redis Cloud - -1. Create account at [Redis Cloud](https://app.redislabs.com) -2. Create new subscription: - - Fixed plan (minimum 1GB) - - Choose region - - Enable password protection -3. Create database with default settings - -#### Digital Ocean Redis - -1. Access Digital Ocean Console -2. Create Database > Redis -3. Configure: - - Choose smallest plan - - Select datacenter - - Enable eviction policy - -:::tip -Managed services provide: - -- Automatic backups -- High availability -- Security patches -- Performance monitoring - ::: - - - - -### Bitnami Redis Chart - -1. Add repository: - -```bash -helm repo add bitnami https://charts.bitnami.com/bitnami -helm repo update -``` - -2. Install Redis: - -```bash -helm upgrade --install redis oci://registry-1.docker.io/bitnamicharts/redis \ - --namespace redis \ - --version 18.19.2 \ - --create-namespace \ - --set architecture=standalone \ - --set global.redis.password=your-secure-password -``` - -3. Wait for deployment: - -```bash -kubectl -n redis get pods -w -``` - -:::caution -For production use: - -- Configure proper resource limits -- Set up persistence -- Consider high availability setup - ::: - - - - -## Requirements - -
-
- -### Minimum Specifications - -- Redis 6.0 or higher -- 1GB memory -- Network access from platform -- Password protection enabled - -
-
- -### Recommended Features - -- Persistence enabled -- Automatic backups -- Monitoring setup -- Eviction policies configured - -
-
- -## Information Collection - -
- -### Required Values for Platform Installation - -- [ ] Redis hostname/endpoint -- [ ] Port number (default: 6379) -- [ ] Password (if authentication enabled) -- [ ] TLS enabled/disabled - -:::note Example Helm Values -```yaml -# values.yaml -redis: - # -- The redis host you collected in the prerequisites - host: '' - # -- The redis port you collected in the prerequisites - port: 6379 - # -- The redis password you collected in the prerequisites - password: '' - # -- In shared redis servers, this prefix will separate out all queues - prefix: 'sm' - # -- Set to true if you want to use the TLS mode - tls: false - -``` -::: - -:::tip -When using Google Memorystore: -1. Enable only one Redis solution (`redis.enabled` or `redis.memorystore.enabled`) -2. Ensure your GKE cluster has access to the Memorystore instance -3. Configure the same region as your GKE cluster -::: - -
- -## Validation - -Test your Redis connection: - - - - -```bash -# Get the Memorystore instance connection details -REDIS_HOST=$(gcloud redis instances describe [INSTANCE_ID] \ - --region=[REGION] --format='get(host)') -REDIS_PORT=$(gcloud redis instances describe [INSTANCE_ID] \ - --region=[REGION] --format='get(port)') - -# Test connection using redis-cli -redis-cli -h $REDIS_HOST -p $REDIS_PORT ping -``` - - - - -```bash -# Using redis-cli -redis-cli -h your-redis-host -p 6379 -a your-password ping - -# Expected response -PONG -``` - - - - -## Troubleshooting - -Common issues and solutions: - -1. **Connection Failures** - - Verify credentials - - Check network/firewall rules - - Confirm TLS settings - - Validate endpoint format - - For Memorystore: verify VPC peering - -2. **Performance Issues** - - Monitor memory usage - - Check eviction policies - - Review connection limits - - Verify resource allocation - - For Memorystore: check instance tier - -## Next Steps - -1. ✅ Set up Redis instance -2. ✅ Configure security settings -3. ➡️ Proceed to [S3 Compatible Storage Setup](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/s3-compatible-storage) - -:::tip Need Help? -Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. -::: diff --git a/docs/launch-platform/self-hosted/installation-guide/prerequisites/s3-compatible-storage.md b/docs/launch-platform/self-hosted/installation-guide/prerequisites/s3-compatible-storage.md deleted file mode 100644 index 3ce97a70..00000000 --- a/docs/launch-platform/self-hosted/installation-guide/prerequisites/s3-compatible-storage.md +++ /dev/null @@ -1,345 +0,0 @@ ---- -title: S3-Compatible Storage -sidebar_position: 6 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# S3-Compatible Storage Setup - -## Overview - -S3-compatible storage is used for: - -- Platform assets storage -- Blockchain data persistence -- File management -- State storage - -## Deployment Options - - - - -### AWS S3 (Native) - -1. Create new S3 bucket: - - Choose region - - Enable versioning - - Configure default encryption -2. Create IAM user: - - Generate access key and secret - - Attach minimal required permissions - -### Digital Ocean Spaces - -1. Access Digital Ocean Console -2. Create new Spaces bucket: - - Choose datacenter region - - Configure CDN (optional) -3. Create Spaces access key - -### Azure Blob Storage - -1. Create Storage Account: - - Go to Azure Portal - - Create new Storage Account - - Select performance tier and redundancy - - Enable hierarchical namespace (recommended) - -2. Create Container: - - Navigate to Storage Account - - Create new container - - Set access level (private recommended) - -3. Get Access Credentials: - - Generate Shared Access Signature (SAS) - - Or use Storage Account access keys - - Note the connection string - -:::tip -Azure Blob Storage offers: -- Geo-redundant storage options -- Integration with Azure AD -- Built-in disaster recovery -- Pay-as-you-go pricing -::: - -### Google Cloud Storage - -1. Create Storage Bucket: - - Go to Google Cloud Console - - Create new bucket - - Choose location type - - Set storage class - - Configure access control - -2. Set up Service Account: - - Create new service account - - Generate JSON key file - - Assign Storage Object Admin role - - Download credentials - -:::tip -GCP Storage benefits: -- Multi-regional deployment -- Object lifecycle management -- Strong consistency -- Integrated security controls -::: - -:::tip -Managed services provide: - -- Built-in redundancy -- Automatic scaling -- Global availability -- Integrated monitoring -::: - - - - -### MinIO Installation - -1. Install MinIO: - -```bash -helm upgrade --install minio oci://registry-1.docker.io/bitnamicharts/minio \ - --namespace minio \ - --version 13.8.4 \ - --create-namespace \ - --set defaultBuckets=platform-bucket \ - --set auth.rootUser=admin \ - --set auth.rootPassword=your-secure-password \ - --set provisioning.enabled=true \ - --set "provisioning.config[0].name=region" \ - --set "provisioning.config[0].options.name=us-east-1" -``` - -2. Create service account: - -```bash -# Generate access credentials -mc admin user svcacct add minio platform-user -``` - -:::caution -For production use: - -- Configure proper storage class -- Set up backup procedures -- Enable encryption -- Configure monitoring -::: - - - - -## State Encryption - -Generate an encryption key for state data: - -```bash -openssl rand -base64 32 -``` - -:::caution Important -Store this encryption key securely - it's used to protect platform state data. -::: - -## Information Collection - -
- -### Required Values for Platform Installation - - - - -- [ ] S3 endpoint URL (e.g., s3.amazonaws.com) -- [ ] Bucket name -- [ ] Access key ID -- [ ] Secret access key -- [ ] Region (e.g., us-east-1) -- [ ] State encryption key - - - - -- [ ] Storage account name -- [ ] Container name -- [ ] Storage account key -- [ ] State encryption key - - - - -- [ ] Project ID -- [ ] Bucket name -- [ ] Service account credentials (JSON) -- [ ] State encryption key - - - - -- [ ] MinIO endpoint URL -- [ ] Bucket name -- [ ] Access key -- [ ] Secret key -- [ ] Region -- [ ] State encryption key - - - - -:::note Example Configuration - -```yaml -deploymentEngine: - state: - # AWS S3 - connectionUrl: 's3://bucket-name?region=us-east-1&endpoint=s3.amazonaws.com' - - # Azure Blob Storage - connectionUrl: 'azblob://' - - # Google Cloud Storage - connectionUrl: 'gs://bucket-name' - - credentials: - encryptionKey: 'your-generated-key' # From openssl command - - # AWS Credentials - aws: - accessKeyId: 'your-access-key' - secretAccessKey: 'your-secret-key' - region: 'us-east-1' - - # Azure Credentials - azure: - storageAccount: 'storage-account-name' - storageKey: 'storage-account-key' - - # GCP Credentials - google: - project: 'project-id' - credentials: | - { - "type": "service_account", - "project_id": "your-project", - "private_key_id": "key-id", - "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n", - "client_email": "service-account@project.iam.gserviceaccount.com", - "client_id": "client-id", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/service-account@project.iam.gserviceaccount.com" - } -``` -::: - -
- -## Validation - -Test your storage configuration: - -```bash -# Using AWS CLI -aws s3 ls s3://your-bucket \ - --endpoint-url your-endpoint \ - --access-key your-access-key \ - --secret-key your-secret-key - -# Using Azure CLI -az storage blob list \ - --container-name your-container \ - --account-name your-storage-account \ - --account-key your-storage-key - -# Using Google Cloud CLI -gsutil ls gs://your-bucket - -# Expected: List of objects or empty result -``` - -:::tip -Make sure you have installed and configured the respective CLI tools: -- AWS CLI: `aws configure` -- Azure CLI: `az login` -- Google Cloud CLI: `gcloud auth login` -::: - -## Troubleshooting - -Common issues and solutions: - -1. **Access Denied** - - AWS S3: - - Verify IAM credentials - - Check bucket policies - - Confirm IAM role permissions - - Validate endpoint URL format - - Azure Blob Storage: - - Check storage account access keys - - Verify container access level - - Confirm Shared Access Signature (SAS) permissions - - Check storage account firewall settings - - Google Cloud Storage: - - Verify service account permissions - - Check IAM roles (Storage Object Admin) - - Validate JSON credentials file - - Confirm project access - -2. **Connection Issues** - - AWS S3: - - Check endpoint accessibility - - Verify region setting - - Confirm VPC endpoints (if applicable) - - Check SSL/TLS requirements - - Azure Blob Storage: - - Verify network access rules - - Check private endpoints configuration - - Confirm storage account status - - Validate VNET settings (if applicable) - - Google Cloud Storage: - - Check VPC Service Controls - - Verify network connectivity - - Confirm regional availability - - Check firewall rules - -3. **Performance Issues** - - AWS S3: - - Check transfer acceleration settings - - Review bucket region location - - Monitor request rates - - Azure Blob Storage: - - Verify storage account tier - - Check geo-replication status - - Monitor bandwidth metrics - - Google Cloud Storage: - - Review storage class settings - - Check bucket location - - Monitor throughput metrics - -## Next Steps - -1. ✅ Set up S3-compatible storage -2. ✅ Generate encryption key -3. ➡️ Proceed to [Secret Management Setup](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/secret-management) - -:::tip Need Help? -Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. -::: diff --git a/docs/launch-platform/self-hosted/installation-guide/prerequisites/secret-management.md b/docs/launch-platform/self-hosted/installation-guide/prerequisites/secret-management.md deleted file mode 100644 index 5dded980..00000000 --- a/docs/launch-platform/self-hosted/installation-guide/prerequisites/secret-management.md +++ /dev/null @@ -1,326 +0,0 @@ ---- -title: Secret Management -sidebar_position: 7 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Secret Management Setup - -## Overview - -Our platform supports two options for secret management: -- HashiCorp Vault -- Google Secret Manager - -Both services are used for: -- Secrets management -- Encryption key storage -- Secure credentials handling -- Private key management - -## Deployment Options - - - - -### Google Secret Manager Setup - -1. **Enable the Secret Manager API** - - Go to [Google Cloud Console](https://console.cloud.google.com) - - Navigate to Secret Manager - - Enable the Secret Manager API for your project - -2. **Create Service Account** - - Navigate to IAM & Admin > Service Accounts - - Create a new service account - - Grant the following roles: - - `Secret Manager Admin` - -3. **Download Credentials** - - Create and download a JSON key for the service account - - Keep this file secure - you'll need it during platform installation - -:::tip -Google Secret Manager provides: -- Fully managed service -- Automatic replication -- Fine-grained IAM controls -- Audit logging -::: - -**Helm Chart Values:** -```yaml -# values.yaml for Helm installation -googleSecretManager: - # -- Enable Google Secret Manager integration - enabled: true - # -- The Google Cloud project ID - projectId: "your-project-id" - # -- The Google Cloud service account credentials JSON - credentials: | - { - // Your service account JSON key - } -``` -::: - -:::tip -Make sure to: -1. Enable Google Secret Manager in your Helm values -2. Use the same project ID and credentials as in your platform configuration -3. Properly format the service account JSON credentials -::: - - - - - -### HashiCorp Cloud Platform Setup - -1. **Create Vault Cluster** - - - Sign up for [HashiCorp Cloud](https://portal.cloud.hashicorp.com) - - Choose Development tier (sufficient for most setups) - - Select "Start from Scratch" template - - Pick your preferred region - -2. **Configure Secret Engines** - - - Create KV secret engines: - ```bash - vault secrets enable -path=ethereum kv-v2 - vault secrets enable -path=ipfs kv-v2 - vault secrets enable -path=fabric kv-v2 - ``` - -3. **Set Up Authentication** - - - Enable AppRole auth method: - ```bash - vault auth enable approle - ``` - - Create platform policy: - ```bash - vault policy write btp - < - - - -### Helm Chart Installation - -1. **Install Vault** - -```bash -helm upgrade --install vault vault \ - --repo https://helm.releases.hashicorp.com \ - --namespace vault \ - --create-namespace -``` - -2. **Initialize Vault** - -```bash -# Initialize and save keys -kubectl exec vault-0 -n vault -- vault operator init \ - -key-shares=1 \ - -key-threshold=1 - -# Unseal Vault (replace with your key) -kubectl exec vault-0 -n vault -- vault operator unseal $VAULT_UNSEAL_KEY -``` - -3. **Configure Vault** - Follow the same configuration steps as HCP Vault (steps 2-5) after logging in with the root token. - -:::caution -For production: - -- Use multiple key shares -- Configure proper storage backend -- Set up high availability -- Implement proper unsealing strategy - ::: - - - - -## Information Collection - -
- -### Required Values for Platform Installation - -Choose one of the following configurations for your Helm values: - -**For Google Secret Manager:** -- [ ] GCP Project ID -- [ ] Service Account JSON key - -:::note Example Helm Values for GSM -```yaml -# values.yaml -vault: - enabled: false - -googleSecretManager: - # -- Enable Google Secret Manager integration - enabled: true - # -- The Google Cloud project ID - projectId: 'your-project-id' - # -- The Google Cloud service account credentials JSON - credentials: | - { - // Your service account JSON key - } -``` -::: - -**For HashiCorp Vault:** -- [ ] Vault address/endpoint -- [ ] Role ID -- [ ] Secret ID -- [ ] Namespace (if using HCP Vault: `admin`) - -:::note Example Helm Values for Vault -```yaml -# values.yaml -googleSecretManager: - enabled: false - -vault: - # -- Enable Hashicorp Vault integration - enabled: true - # -- The vault address you collected in the prerequisites - address: 'https://vault-cluster.hashicorp.cloud:8200' - # -- The vault namespace you collected in the prerequisites - namespace: 'admin' # Required for HCP Vault - # -- The AppRole roleId you collected in the prerequisites - roleId: 'your-role-id' - # -- The AppRole secretId you collected in the prerequisites - secretId: 'your-secret-id' -``` -::: - -:::important -Make sure to: -1. Enable only one secret management solution (`vault` or `googleSecretManager`) -2. Disable the other option by setting `enabled: false` -3. Provide all required values for your chosen solution -::: - -
- -## Validation - -Test your secret management configuration: - - - - -```bash -# Set environment variables -export GOOGLE_APPLICATION_CREDENTIALS="path/to/service-account.json" -export PROJECT_ID="your-project-id" - -# Verify access -gcloud secrets list --project=$PROJECT_ID -``` - - - - -Test your Vault configuration: - -```bash -# Set environment variables -export VAULT_ADDR="your-vault-address" -export VAULT_NAMESPACE="admin" # For HCP Vault -export VAULT_ROLE_ID="your-role-id" -export VAULT_SECRET_ID="your-secret-id" - -# Verify access -vault write auth/approle/login \ - role_id=$VAULT_ROLE_ID \ - secret_id=$VAULT_SECRET_ID -``` - - - - -## Troubleshooting - -Common issues and solutions: - -1. **Google Secret Manager Issues** - - Verify service account permissions - - Check credentials file format - - Confirm API is enabled - - Validate project ID - -2. **Vault Issues** - - Verify Vault address - - Check network access - - Confirm TLS settings - - Validate namespace (HCP) - -## Next Steps - -1. ✅ Set up secret management service -2. ✅ Configure authentication -3. ➡️ Proceed to [Metrics and Logs Setup](/documentation/docs/launch-platform/self-hosted/installation-guide/prerequisites/metrics-and-logs) - -:::tip Need Help? -Contact [support@settlemint.com](mailto:support@settlemint.com) if you encounter any issues. -::: diff --git a/docs/launch-platform/self-hosted/installation-guide/prerequisites/terraform.md b/docs/launch-platform/self-hosted/installation-guide/prerequisites/terraform.md deleted file mode 100644 index 0bebb145..00000000 --- a/docs/launch-platform/self-hosted/installation-guide/prerequisites/terraform.md +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Terraform Installation (Optional) -sidebar_position: 9 ---- - -# Terraform Installation - -:::caution Quick Setup Only -This Terraform-based installation is designed for quick setup and testing environments only. For production deployments, we strongly recommend following the manual installation process to properly configure and secure each component according to your organization's requirements. - -**Key limitations of Terraform setup:** - -- Components run locally in the cluster without High Availability -- Basic security configurations -- Limited customization options -- Not suitable for production workloads - ::: - -For a quick deployment of the SettleMint Platform and all its prerequisites on Google Cloud Platform (GCP), we provide a Terraform-based installation method. This is optional - you can skip this if you prefer to set up the prerequisites manually. - -## Prerequisites - -### Hashicorp Terraform - -Install [Terraform](https://developer.hashicorp.com/terraform/tutorials/gcp-get-started/install-cli): - -```sh -brew tap hashicorp/tap -brew install hashicorp/tap/terraform -``` - -### Google Cloud Platform Setup - -1. Create a [Google Cloud Platform account](https://console.cloud.google.com/freetrial/) if you don't have one -2. Install the gcloud CLI: - -```sh -brew cask install google-cloud-sdk -gcloud auth application-default login -``` - -3. Enable required APIs for your project: - - - Container API: `https://console.developers.google.com/apis/api/container.googleapis.com/overview?project=` - - Cloud KMS API: `https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview?project=` - -4. Configure IAM permissions. Your GCP user needs either: - - - `Owner` role (recommended for quick setup) - - OR all of these roles: - - - `Editor` - - `Cloud KMS Admin` - - `Project IAM Admin` - - `Kubernetes Engine Admin` - - `Service Account Admin` - -## Installation Steps - -1. Clone the installation repository: - -```sh -git clone git@github.com:settlemint/tutorial-btp-on-gcp.git -``` - -2. Set required environment variables: - -```sh -# DNS zone (subdomain) for platform access (e.g., btp.settlemint.com) -export TF_VAR_gcp_dns_zone='YOUR_DNS_ZONE' - -# Your GCP project ID -export TF_VAR_gcp_project_id='YOUR_GCP_PROJECT_ID' - -# Target GCP region -export TF_VAR_gcp_region='YOUR_GCP_REGION' - -# OAuth credentials (from prerequisites/oauth.md) -export TF_VAR_gcp_client_id='YOUR_GCP_CLIENT_ID' -export TF_VAR_gcp_client_secret='YOUR_GCP_CLIENT_SECRET' - -# Registry credentials (provided by SettleMint) -export TF_VAR_oci_registry_username='YOUR_REGISTRY_USERNAME' -export TF_VAR_oci_registry_password='YOUR_REGISTRY_PASSWORD' -export TF_VAR_btp_version='BTP_VERSION' -``` - -### DNS Zone Setup - -1. Navigate to the DNS zone setup directory: - -```sh -cd tutorial-btp-on-gcp/00_dns_zone -``` - -2. Create the DNS zone: - -```sh -terraform init -terraform apply -``` - -3. Configure your domain registrar with the nameservers from the Terraform output. For example, in Cloudflare: - - - Add NS records for your subdomain (e.g., btp.settlemint.com) - - Point to the Google nameservers (ns-cloud-aX.googledomains.com) - -4. Verify DNS delegation: - -```sh -dig NS btp.settlemint.com -``` - -Expected output should show Google nameservers: - -``` -;; ANSWER SECTION: -btp.settlemint.com. 300 IN NS ns-cloud-a4.googledomains.com. -btp.settlemint.com. 300 IN NS ns-cloud-a1.googledomains.com. -btp.settlemint.com. 300 IN NS ns-cloud-a2.googledomains.com. -btp.settlemint.com. 300 IN NS ns-cloud-a3.googledomains.com. -``` - -### Platform Infrastructure Setup - -1. Navigate to the infrastructure directory: - -```sh -cd ../01_infrastructure -``` - -2. Deploy the infrastructure: - -```sh -terraform init -terraform apply -``` - -This will create: - -- GKE cluster -- All required prerequisites -- The SettleMint Platform installation - -## Cleanup - -To remove all created resources: - -```sh -terraform destroy -``` - -Note: You may need to run the destroy command twice if the first attempt fails. - -## Next Steps - -After the Terraform deployment completes: - -1. Access the platform at `https://btp.` -2. Follow the initial setup wizard -3. Review the [platform documentation](../introduction.md) for next steps - -## Troubleshooting - -If you encounter issues: - -1. Verify all environment variables are set correctly -2. Ensure DNS delegation is complete (can take up to 48 hours) -3. Check the Terraform logs for specific error messages -4. Contact [support@settlemint.com](mailto:support@settlemint.com) if you need assistance - -**Note:** The Terraform installation is designed for demonstration and testing. For production deployments, we recommend following the manual installation process to configure each component according to your specific requirements. diff --git a/docs/reference/14_statuses.md b/docs/reference/14_statuses.md deleted file mode 100644 index db9ff41a..00000000 --- a/docs/reference/14_statuses.md +++ /dev/null @@ -1,18 +0,0 @@ -# Statuses - -You can view the status of each service (e.g. network, node, smart contract set, etc.) on the **service's overview page and detail pages**. - -## Status list - -The following service statuses are defined: - -- **Waiting** - The service is waiting to be deployed. This will only take seconds. -- **Deploying** - The service is being deployed. This will only take minutes. -- **Running** - The service is running without any issues. -- **Warning** - The service is still running, but suboptimal as the resources are no longer sufficient. -- **Error** - The service is facing issues. The error message will provide information about the type of issue and the action you can take to fix it. -- **Restarting** - The service is restarting. -- **Deleting** - The service is being deleted. -- **Scaling** - The resource pack for the service is scaling. - -In relation to the resource usage of your services, specific [resource usage statuses](../using-platform/19_resource-usage.md) are defined. diff --git a/docs/reference/_category_.json b/docs/reference/_category_.json deleted file mode 100644 index 04b7db94..00000000 --- a/docs/reference/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Reference", - "position": 9 -} diff --git a/docs/security/_category_.json b/docs/security/_category_.json deleted file mode 100644 index e88c8702..00000000 --- a/docs/security/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Security", - "position": 11 -} diff --git a/docs/support/_category_.json b/docs/support/_category_.json deleted file mode 100644 index 2a82c4c8..00000000 --- a/docs/support/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Get Support", - "position": 5 -} diff --git a/docs/terms-and-policies/_category_.json b/docs/terms-and-policies/_category_.json deleted file mode 100644 index 986ea3ce..00000000 --- a/docs/terms-and-policies/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Terms & policies", - "position": 10 -} diff --git a/docs/using-platform/0_create-an-application.md b/docs/using-platform/0_create-an-application.md deleted file mode 100644 index 18a063ac..00000000 --- a/docs/using-platform/0_create-an-application.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: Create an Application -description: Guide to creating a blockchain application on SettleMint -sidebar_position: 1 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Create an application - -An application is the context in which you organize your networks, nodes, smart contract sets and any other related blockchain resource. - -:::info Note -You will always need to create an application before you can deploy or join networks, and add nodes. -::: - -## How to create a new application - - - - -![Create an App](../../static/img/about-settlemint/create-app.png) - -1. In the upper right corner of any page, click the **grid icon**. -2. Navigate to your workspace and click **Create new application**. -3. Choose a **name** for your application. -4. Click **Confirm** to create the application. - - - - -First, install the [SDK CLI](https://github.com/settlemint/sdk/blob/main/sdk/cli/README.md#usage) as a global dependency. - -Then, ensure you're authenticated. For more information on authentication, see the [SDK CLI documentation](https://github.com/settlemint/sdk/blob/main/sdk/cli/README.md#login-to-the-platform). -```bash -settlemint login -``` - -Create an application: -```bash -settlemint platform create application -``` - - - - -```typescript -import { createSettleMintClient } from '@settlemint/sdk-js'; - -const client = createSettleMintClient({ - accessToken: 'your_access_token', - instance: 'https://console.settlemint.com' -}); - -// Create application -const createApp = async () => { - const result = await client.application.create({ - workspaceUniqueName: "your-workspace", - name: "myApp" - }); - console.log('Application created:', result); -}; - -// List applications -const listApps = async () => { - const apps = await client.application.list("your-workspace"); - console.log('Applications:', apps); -}; - -// Read application details -const readApp = async () => { - const app = await client.application.read("app-unique-name"); - console.log('Application details:', app); -}; - -// Delete application -const deleteApp = async () => { - await client.application.delete("application-unique-name"); -}; -``` - -:::tip -Get your access token from the Platform UI under User Settings → API Tokens. -::: - - - - -## Manage an application - - - - -Navigate to your application and click **Manage app** to see available actions: -- View application details -- Update application name -- Delete application - - - - -```bash -# List applications -settlemint platform list applications - -# Delete application -settlemint platform delete application -``` - - - - -```typescript -// List applications -await client.application.list("your-workspace"); - -// Read application -await client.application.read("app-unique-name"); - -// Delete application -await client.application.delete("app-unique-name"); -``` - - - - -:::info Note -All operations require appropriate permissions in your workspace. -::: diff --git a/docs/using-platform/10_insights.md b/docs/using-platform/10_insights.md deleted file mode 100644 index 4aafcc1b..00000000 --- a/docs/using-platform/10_insights.md +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: Insights -description: Guide to using blockchain explorers in SettleMint ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Insights - -To view and inspect transactions in your blockchain application, SettleMint provides insightful dashboards via integrated blockchain explorers: -- **Blockscout** - For EVM compatible networks (Besu, Polygon Edge) -- **Hyperledger Explorer** - For Fabric networks -- **Otterscan** - Alternative EVM explorer with advanced features - -## Add Blockchain Explorer - - - - -Navigate to the **application** where you want to add a blockchain explorer. Click **Insights** in the left navigation, and then click **Add Insights**. This opens a form. - -Follow these steps: -1. Select **Blockchain Explorer** -2. Select the target **blockchain node** and click **Continue** -3. Enter a **name** for your explorer instance -4. Configure deployment settings (provider, region, size) -5. Click **Confirm** to add the explorer - - - - -First ensure you're authenticated: -```bash -settlemint login -``` - -Create blockchain explorer: -```bash -# Create blockchain explorer -settlemint platform create insights blockscout - -# Get information about the command and all available options -settlemint platform create insights blockscout --help -``` - - - - -For a full example of how to create a blockchain explorer using the SDK, see the [Blockscout SDK API Reference](https://www.npmjs.com/package/@settlemint/sdk-blockscout#api-reference). - - - - -## Manage Explorer - - - - -Navigate to your explorer and click **Manage insights** to: -- View explorer details and status -- Monitor health status -- Access the explorer interface -- Update configurations - -Current status values: -- `DEPLOYING` - Initial deployment in progress -- `COMPLETED` - Running normally -- `FAILED` - Deployment or operation failed -- `PAUSED` - Explorer is paused -- `RESTARTING` - Explorer is restarting - -Health status indicators: -- `HEALTHY` - Operating normally -- `HAS_INDEXING_BACKLOG` - Processing backlog -- `NOT_HA` - High availability issue -- `NO_PEERS` - Network connectivity issue - - - - -```bash -# List explorers -settlemint platform list services --type insights - -# Restart explorer -settlemint platform restart insights blockscout -``` - - - - -```typescript -// List explorers -const listExplorers = async () => { - const explorers = await client.insights.list("your-app"); - console.log('Explorers:', explorers); -}; - -// Get explorer details -const getExplorer = async () => { - const explorer = await client.insights.read("explorer-unique-name"); - console.log('Explorer details:', explorer); -}; - -// Restart explorer -const restartExplorer = async () => { - await client.insights.restart("explorer-unique-name"); -}; -``` - - - - -## Using the Explorer - -When the blockchain explorer is deployed and running successfully, you can: - -1. Access the web interface through the **Interface tab** -2. View in fullscreen mode for better visibility -3. Inspect blocks, transactions, addresses and balances - -Key features: -- View latest blocks and transactions -- Search by block number, transaction hash, or address -- Inspect transaction details and status -- View account balances and token transfers -- Monitor smart contract interactions - -![Blockscout Interface](../../static/img/document360/Images/Blockscout%201.png) - -### Transaction Details -Click a Transaction hash to see detailed information including: -- Gas usage and fees -- Input data and events -- Status and confirmations -- Related addresses - -![Transaction View](../../static/img/document360/Images/Blockscout%202.png) - -### Address Details -Click an Account address to view: -- Balance and token holdings -- Transaction history -- Contract interactions -- Analytics and graphs - -![Address View](../../static/img/document360/Images/Blockscout%203.png) - -:::info Note -All operations require appropriate permissions in your workspace. -::: diff --git a/docs/using-platform/11_storage.md b/docs/using-platform/11_storage.md deleted file mode 100644 index 1e579bdb..00000000 --- a/docs/using-platform/11_storage.md +++ /dev/null @@ -1,155 +0,0 @@ ---- -title: Storage -description: Guide to using storage solutions in SettleMint ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Storage - -Managing complex or large data in decentralized systems can be a challenge. To securely store and share your files and data, SettleMint offers two storage solutions that can interact with the blockchain: **IPFS (decentralized)** and **MinIO (centralized)**. - -## Add Storage - - - - -Navigate to the **application** where you want to add storage. Click **Storage** in the left navigation, and then click **Add storage**. This opens a form. - -Follow these steps: -1. Choose storage type (IPFS or MinIO) -2. Choose a **Storage name** -3. Configure deployment settings -4. Click **Confirm** - - - - -First ensure you're authenticated: -```bash -settlemint login -``` - -Create storage: -```bash -# Get the list of available storage types -settlemint platform create storage --help - -# Create storage -settlemint platform create storage - -# Get information about the command and all available options -settlemint platform create storage --help -``` - - - - -For a full example of how to connect to a storage using the SDK, see the [MinIO SDK API Reference](https://www.npmjs.com/package/@settlemint/sdk-minio#api-reference) or [IPFS SDK API Reference](https://www.npmjs.com/package/@settlemint/sdk-ipfs#api-reference). - -:::tip -Get your access token from the Platform UI under User Settings → API Tokens. -::: - -:::tip -The SDK enables you to: -- Use IPFS for decentralized storage - check out the [IPFS SDK documentation](https://github.com/settlemint/sdk/tree/main/sdk/ipfs) -- Use MinIO for S3-compatible storage - check out the [MinIO SDK documentation](https://github.com/settlemint/sdk/tree/main/sdk/minio) -::: - - - - -## Manage Storage - - - - -Navigate to your storage and click **Manage storage** to: -- View storage details and status -- Monitor health -- Access storage interface -- Update configurations - - - - -```bash -# List storage instances -settlemint platform list storage --application - -# Get storage details -settlemint platform read storage - -# Delete storage -settlemint platform delete storage -``` - - - - -```typescript -// List storage instances -const listStorage = async () => { - const storages = await client.storage.list("your-app-id"); - console.log('Storage instances:', storages); -}; - -// Get storage details -const getStorage = async () => { - const storage = await client.storage.read("storage-unique-name"); - console.log('Storage details:', storage); -}; - -// Delete storage -const deleteStorage = async () => { - await client.storage.delete("storage-unique-name"); -}; -``` - - - - -## About IPFS (decentralized) - -The InterPlanetary File System (IPFS) is a peer-to-peer network for storing and sharing data in a distributed file system. When uploading a file to IPFS it generates a unique fingerprint (hash). Later when querying that data it will use that fingerprint to find nodes storing the data behind this fingerprint. This means that this hash is not only a key used to retrieve a file, but it also serves as a proof of integrity. Often such fingerprints will be stored on chain in order to act as a bridge between the blockchain and IPFS. - -[Learn more on IPFS here](https://docs.ipfs.tech/concepts/) - -## About MinIO (centralized - S3 compatible) - -For private or confidential data, MinIO would be your preferred option. - -[Learn more on MinIO here](https://min.io/) - -MinIO is S3-compatible. If you want to **set up a MinIO client for AWS S3**, you need these parameters: - -**endPoint** -The endpoint is the URL to object storage service. Example value: example-minio-123a.settlemint.com, unique-name.settlemint.com (you can get the unique name from the Details tab) - -**accessKey** -The access key is like a user ID that uniquely identifies your account. You can get your access key under the **Connect tab** - -**secretKey** -The secret key is like the password to your account. You can get your secret key under the **Connect tab**. - -```js -var Minio = require('minio'); - -var s3Client = new Minio.Client({ - endPoint: 'your-minio-instance.settlemint.com', - accessKey: 'YOUR-ACCESSKEYID', - secretKey: 'YOUR-SECRETACCESSKEY' -}); -``` - -You can now use the s3Client object to call methods like `makeBucket`, `getObject`, and [many more methods which you can find here](https://docs.min.io/docs/javascript-client-api-reference.html). - -:::info Note -MinIO client can also be configured in Python, .NET, Java, Golang, Haskell. You can follow the [quickstart guides provided by MinIO here](https://docs.min.io/docs/java-client-quickstart-guide.html) for more information. -::: - -:::info Note -All operations require appropriate permissions in your workspace. -::: diff --git a/docs/using-platform/12_private-keys.md b/docs/using-platform/12_private-keys.md deleted file mode 100644 index 2fd94ca2..00000000 --- a/docs/using-platform/12_private-keys.md +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Private Keys -description: Guide to managing private keys on SettleMint -sidebar_position: 12 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Private Keys - -To send transactions to a blockchain network, you need a private key to sign these transactions, and the private key should contain enough funds to cover the gas price for the transaction. - -You can sign transactions with private keys you created outside SettleMint with e.g. MetaMask or other wallet solutions. SettleMint however provides an option to **create and manage private keys within the platform**. - -When you deploy a blockchain node it contains a signing proxy that captures the eth_sendTransaction call, uses the appropriate key from the private key section to sign it, and sends it onwards to the blockchain node. You can use this proxy directly via the nodes JSON-RPC endpoints ([https://eth.wiki/json-rpc/API](https://eth.wiki/json-rpc/API)) and via tools like Hardhat ([https://hardhat.org/config/#json-rpc-based-networks](https://hardhat.org/config/#json-rpc-based-networks)) configured to use the "remote" default option for signing. - -## Create a private key - - - - -Navigate to your **application**, click **Private keys** in the left navigation, and then click **Create a private key**. This opens a form. - -Follow these steps to create the private key: - -1. Choose a **private key type**: - - **Accessible ECDSA P256**: Standard Ethereum-style private keys with exposed mnemonic - - **HD ECDSA P256**: Hierarchical Deterministic keys for advanced key management - - **HSM ECDSA P256**: Hardware Security Module protected keys for maximum security - -2. Choose a **name** for your private key -3. Select the **nodes** on which you want the key to be active -4. Click **Confirm** to create the key - - - - -```bash -# Create Accessible ECDSA P256 key -settlemint platform create private-key accessible-ecdsa-p256 my-key \ - --application my-app \ - --blockchain-node node-123 - -# Create HD ECDSA P256 key -settlemint platform create private-key hd-ecdsa-p256 my-key \ - --application my-app - -# Create HSM ECDSA P256 key -settlemint platform create private-key hsm-ecdsa-p256 my-key \ - --application my-app -``` - - - - -```typescript -import { createSettleMintClient } from '@settlemint/sdk-js'; - -const client = createSettleMintClient({ - accessToken: 'your_access_token', - instance: 'https://console.settlemint.com' -}); - -// Create private key -const createKey = async () => { - const result = await client.privateKey.create({ - name: "my-key", - applicationUniqueName: "my-app", - privateKeyType: "ACCESSIBLE_ECDSA_P256", // or "HD_ECDSA_P256" or "HSM_ECDSA_P256" - blockchainNodeUniqueNames: ["node-123"] // optional - }); - console.log('Private key created:', result); -}; -``` - - - - -## Manage private keys - - - - -1. Navigate to your application's **Private keys** section -2. Click on a private key to: - - View details and status - - Manage node associations - - Check balances - - Fund the key - - - - -```bash -# List all private keys -settlemint platform list private-keys --application - -# View specific key details -settlemint platform read private-key - -# Restart a private key -settlemint platform restart private-key -``` - - - - -```typescript -// List private keys -const listKeys = async () => { - const keys = await client.privateKey.list("your-app-name"); -}; - -// Get key details -const getKey = async () => { - const key = await client.privateKey.read("key-unique-name"); -}; - -// Restart key -const restartKey = async () => { - await client.privateKey.restart("key-unique-name"); -}; -``` - - - - -## Fund the private key - -For networks that require gas to perform a transaction, your private key should contain enough funds to cover the gas price. - -1. Click the **private key** in the overview to see detailed information -2. Open the **Balances tab** -3. Click **Fund** -4. Scan the **QR code** with your wallet/exchange to fund the key - -:::info Note -Ensure your private key has sufficient funds before attempting transactions on networks that require gas fees. -::: diff --git a/docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/3_add-smart-contract-set.md b/docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/3_add-smart-contract-set.md deleted file mode 100644 index fb9949b9..00000000 --- a/docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/3_add-smart-contract-set.md +++ /dev/null @@ -1,198 +0,0 @@ ---- -title: Add a Smart Contract Set -description: Add a Smart Contract Set using Platform UI, SDK CLI, or SDK JS ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Add a Smart Contract Set - -Smart contract sets allow you to incorporate **business logic** into your application by deploying smart contracts that run on the blockchain. You can add a smart contract set via different methods as part of your development workflow. - -:::info Note -You must have an existing application before you add a smart contract set. -::: - - - - - Follow these steps to add a smart contract set through the Platform UI: - - 1. Navigate to the **application** where you want to add the smart contract set. - 2. Open **Dev tools** and click on **Add a Dev tool**. - - ![Dev tools](../../../../../static/img/smart-contract-sets/empty-dev-tools.png) - - 3. Select **Code Studio** as the Dev tool type. - - ![Select Code Studio](../../../../../static/img/smart-contract-sets/select-code-studio.png) - - 4. Then choose **Smart Contract Set**. - - ![Select Smart Contract Set](../../../../../static/img/smart-contract-sets/select-smart-contract-set.png) - - 5. Pick a **template**; the Code Studio will load with your chosen smart contract template. - - ![Select Template](../../../../../static/img/smart-contract-sets/select-template.png) - - 6. Click **Continue** to enter details such as the Dev tool name, user, and deployment plan. - - ![Click Continue](../../../../../static/img/smart-contract-sets/click-continue.png) - - 7. Confirm the resource cost and click **Confirm** to add the smart contract set. - - You can now further configure and eventually deploy your smart contracts. - - - - - - First, ensure you are authenticated: - - ```bash - settlemint login - ``` - - You can create a smart contract set either on the platform or locally: - - ### Create on Platform - - Then create a smart contract set with the following command (refer to the - [CLI docs](/docs/using-platform/15_dev-tools/1_SDK.md) for more details): - - ```bash - settlemint platform create smart-contract-set \ - --application \ - --template \ - --deployment-plan - ``` - - For example: - - ```bash - settlemint platform create smart-contract-set my-scset \ - --application my-app \ - --template default \ - --deployment-plan starter - ``` - - ### Working with Smart Contract Sets Locally - - You can also work with smart contract sets in your local development environment. This is useful for development and testing before deploying to the platform. - - To create a smart contract set locally: - - ```bash - # Create a new smart contract set - settlemint scs create - - # You'll see the SettleMint ASCII art and then be prompted: - ✔ What is the name of your new SettleMint project? my awesome project - - # Choose from available templates: - ❯ ERC20 token - Empty typescript - Empty typescript with PDC - ERC1155 token - ERC20 token with crowdsale mechanism - ERC20 token with MetaTx - ERC721 - # ... and more - ``` - - Once created, you can use these commands to work with your local smart contract set: - - ```bash - settlemint scs -h # Show all available commands - - # Main commands: - settlemint scs create # Create a new smart contract set - settlemint scs foundry # Foundry commands for building and testing - settlemint scs hardhat # Hardhat commands for building, testing and deploying - settlemint scs subgraph # Commands for managing TheGraph subgraphs - ``` - - The scaffolded project includes everything you need to start developing smart contracts: - - Contract templates - - Testing framework - - Deployment scripts - - Development tools configuration - - ### Managing Platform Smart Contract Sets - - Manage your platform smart contract sets with: - - ```bash - # List smart contract sets - settlemint platform list smart-contract-sets --application - - # Read smart contract set details - settlemint platform read smart-contract-set - - # Delete a smart contract set - settlemint platform delete smart-contract-set - ``` - - - - - - You can also add a smart contract set programmatically using the JS SDK. The API follows the same pattern as for applications and blockchain networks: - - ```typescript - import { createSettleMintClient } from '@settlemint/sdk-js'; - - const client = createSettleMintClient({ - accessToken: process.env.SETTLEMENT_ACCESS_TOKEN!, - instance: 'https://console.settlemint.com' - }); - - // Create a Smart Contract Set - const createSmartContractSet = async () => { - const result = await client.smartContractSet.create({ - applicationUniqueName: "your-app", // Your application unique name - name: "my-smart-contract-set", // The smart contract set name - template: "default" // Template to use (choose from available templates) - }); - console.log('Smart Contract Set created:', result); - }; - - // List Smart Contract Sets - const listSmartContractSets = async () => { - const sets = await client.smartContractSet.list("your-app"); - console.log('Smart Contract Sets:', sets); - }; - - // Read Smart Contract Set details - const readSmartContractSet = async () => { - const details = await client.smartContractSet.read("smart-contract-set-unique-name"); - console.log('Smart Contract Set details:', details); - }; - - // Delete a Smart Contract Set - const deleteSmartContractSet = async () => { - await client.smartContractSet.delete("smart-contract-set-unique-name"); - console.log('Smart Contract Set deleted'); - }; - ``` - - :::tip - Get your access token from the Platform UI under **User Settings → API Tokens**. - ::: - - - - -:::info Note -All operations require that you have the necessary permissions in your workspace. -::: - - -For protocol-specific information, please refer to the relevant section in our blockchain guides: - -- [Hyperledger Besu Smart Contracts IDE](/docs/blockchain-guides/1_Hyperledger-Besu/6_enterprise-ethereum-integration-tools.md) -- [Ethereum Smart Contracts IDE](/docs/blockchain-guides/0_Ethereum/5_ethereum-integration-tools.md) -- [Avalanche Smart Contracts IDE](/docs/blockchain-guides/2_Avalanche/5_avalanche-integration-tools.md) -- [Polygon Smart Contracts IDE](/docs/blockchain-guides/4_Polygon/5_polygon-integration-tools.md) -- [Hyperledger Fabric Smart Contracts IDE](/docs/blockchain-guides/5_Hyperledger-Fabric/6_hyperledger-fabric-integration-tools.md) \ No newline at end of file diff --git a/docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/4_deploying-a-contract.md b/docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/4_deploying-a-contract.md deleted file mode 100644 index ace39b19..00000000 --- a/docs/using-platform/15_dev-tools/0_code-studio/1_smart-contract-sets/4_deploying-a-contract.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Deploying a smart contract -description: Deploying a smart contract using Platform UI or SDK CLI ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Deploying a smart contract - -You can deploy your contracts to a network in the platform or a local development network. This guide covers both Platform UI and SDK CLI approaches. - - - - - Follow these steps to deploy your smart contract through the Platform UI: - - 1. Open the IDE by clicking on your smart contract set. - - ![Open IDE](../../../../../static/img/deploy-scs/open-ide.png) - - 2. Click on the **Task Manager** button. - - ![Task Manager](../../../../../static/img/deploy-scs/task-manager.png) - - 3. First compile your contract by running either: - - **Hardhat - Build** task - ![Hardhat compile task manager](../../../../../static/img/deploy-scs/hardhat-build.png) - - **Foundry - Build** task - ![Foundry compile task manager](../../../../../static/img/deploy-scs/foundry-build.png) - - 4. To deploy to a platform network: - - Run the **SettleMint - Login** task - ![SettleMint login](../../../../../static/img/deploy-scs/settlemint-login.png) - - Run the **Hardhat - Deploy to platform network** task - ![Hardhat deploy remote task manager](../../../../../static/img/deploy-scs/hardhat-deploy-remote.png) - - Select your node and private key when prompted - ![Hardhat deploy remote select node](../../../../../static/img/deploy-scs/hardhat-deploy-remote-select-node.png) - - 5. To deploy locally: - - Run the **Hardhat - Start local network** task - ![Hardhat start local network](../../../../../static/img/deploy-scs/hardhat-start-local-network.png) - - Run the **Hardhat - Deploy to local network** task - ![Hardhat deploy local network](../../../../../static/img/deploy-scs/hardhat-deploy-local-network.png) - - - - - - ## Prerequisites - - First, authenticate yourself and connect to your application: - - ```bash - # Login to the platform - settlemint login - - # Connect to your application - settlemint connect - ``` - - ## Using Hardhat - - Hardhat provides a complete development environment. Here's how to use it: - - ```bash - # Step 1: Build your smart contracts - settlemint scs hardhat build - - # Step 2: Choose your deployment target - # For local development: - settlemint scs hardhat network # Start a local network - settlemint scs hardhat deploy local # Deploy to local network - - # For production: - settlemint scs hardhat deploy remote # Deploy to platform network - - # Development tools: - settlemint scs hardhat test # Run your test suite - settlemint scs hardhat script # Execute deployment scripts - ``` - - ## Using Foundry - - Foundry offers fast compilation and testing. Here's how to use it: - - ```bash - # Step 1: Build your smart contracts - settlemint scs foundry build - - # Step 2: Test and format - settlemint scs foundry test # Run your test suite - settlemint scs foundry format # Format your contract code - - # Step 3: Local development - settlemint scs foundry network # Start a local network for testing - ``` - - ## Working with Subgraphs - - If you need to index your smart contract data: - - ```bash - # Step 1: Generate TypeScript types from your schema - settlemint scs subgraph codegen - - # Step 2: Build the subgraph - settlemint scs subgraph build - - # Step 3: Deploy to the Graph node - settlemint scs subgraph deploy [subgraph-name] - ``` - - :::note Important - Before deployment, ensure: - - You're authenticated (`settlemint login`) - - You're connected to your application (`settlemint connect`) - - Your smart contracts are compiled - - For remote deployment: you have a running node and sufficient funds - ::: - - ### Environment Configuration - - When using `settlemint connect`, you'll be prompted to configure: - - Workspace selection - - Application selection - - Blockchain node selection - - The Graph instance selection - - HD Private Key selection - - Application access token creation - - This configuration is stored locally and used for subsequent commands. - - - - -## Project Structure - -The typical folder structure of a SettleMint smart contract set includes: - -- **`contracts/`**: Contains the Solidity smart contracts -- **`test/`**: Contains both Hardhat (TypeScript) and Foundry (Solidity) tests -- **`script/`**: Deployment and interaction scripts -- **`lib/`**: Optional Solidity libraries -- **`ignitions/`**: Hardhat deployment configurations -- **`out/`**: Compilation artifacts -- **`foundry.toml`**: Foundry configuration -- **`hardhat.config`**: Hardhat configuration -- **`subgraphs/`**: The Graph indexing configurations - -## Customize smart contracts - -You can customize your smart contracts using the built-in IDE. The smart contract sets include a Generative AI plugin to assist with development. [Learn more about the AI plugin here.](./5_AI_plugin.md) diff --git a/docs/using-platform/15_dev-tools/15_dev-tools.md b/docs/using-platform/15_dev-tools/15_dev-tools.md deleted file mode 100644 index cb48ecf2..00000000 --- a/docs/using-platform/15_dev-tools/15_dev-tools.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Dev Tools -description: Dev tools introduction -sidebar_position: 0 ---- - -# Dev Tools - -## Introduction - -To make development easier, we offer Development tools. These tools are designed to help you build your decentralized application (dApp) faster, whether it is smart contract, frontend or backend development. - -We offer the following tools: - -## Code studio - -The Code studio is an Integrated Development Environment (IDE). Currently, we offer the following types of Code studio: - -- [Smart contract sets](./0_code-studio/1_smart-contract-sets/1_smart-contract-sets.md) - This is an IDE you can launch with a pre-built smart contract template. You can choose a template from our open-source [template library](./0_code-studio/1_smart-contract-sets/2_smart-contract-templates.md). - -## SDK - -The [SDK](./1_SDK.md) is a powerful toolkit designed to streamline blockchain integration into modern applications. diff --git a/docs/using-platform/18_audit_logs.md b/docs/using-platform/18_audit_logs.md deleted file mode 100644 index c88267d7..00000000 --- a/docs/using-platform/18_audit_logs.md +++ /dev/null @@ -1,19 +0,0 @@ -# Audit Logs - -Audit logs provide a detailed record of activities in any application deployed on the SettleMint Blockchain Transformation Platform. These logs provide the following key benefits: - -- Compliance: Ensure adherence to regulatory requirements and industry standards. -- Accountability: Maintain a clear record of actions and changes made by users for transparency. -- Troubleshooting: Facilitate the identification and resolution of issues by tracking system activity. -- Data integrity: Provide a reliable trail of data access and modifications, protecting against data tampering - -Audit logs can be accessed from the application menu, on the left. - -![Audit Logs](../../static/img/using-the-platform/audit-logs.png) - -Four filters are available to find specific entries in the logs: - -- Timestamp: select a time range or a day for which you want to get the logs. -- Service: choose the service you want to analyze. -- User: select a user from your application to see their actions. -- Action: filter based on a specific action (e.g. create, delete, pause,...). diff --git a/docs/using-platform/1_add-a-network-to-an-application.md b/docs/using-platform/1_add-a-network-to-an-application.md deleted file mode 100644 index 513d5fea..00000000 --- a/docs/using-platform/1_add-a-network-to-an-application.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Add a Blockchain Network -description: Guide to adding a Blockchain Network to your application -sidebar_position: 2 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Add a network to an application - -Before setting up a blockchain network, ensure you have an application in place. You must always [create an application](0_create-an-application.md) first, as this provides the context for organizing networks, nodes, dev tools, etc. - -## How to add a blockchain network - - - - -![Add A Blockchain Network](../../static/img/about-settlemint/add-network.png) - -Navigate to the **application** where you will create the network. Click **Add blockchain network** to open a form. - -Follow these steps: -1. **Select the protocol** of your choice and click **Continue**. -2. Choose a **network name** and a **node name**. -3. Configure your deployment settings and network parameters. -4. Click **Confirm** to add the network. - - - - -First ensure you're authenticated: -```bash -settlemint login -``` - -Create a blockchain network: -```bash -settlemint platform create blockchain-network besu \ - --node-name - -# Get information about the command and all available options -settlemint platform create blockchain-network besu --help -``` - - - - -```typescript -import { createSettleMintClient } from '@settlemint/sdk-js'; - -const client = createSettleMintClient({ - accessToken: 'your_access_token', - instance: 'https://console.settlemint.com' -}); - -// Create network -const createNetwork = async () => { - const result = await client.blockchainNetwork.create({ - applicationUniqueName: "your-app", - name: "my-network", - nodeName: "validator-1", - consensusAlgorithm: "BESU_QBFT", - provider: "GKE", // GKE, EKS, AKS - region: "EUROPE" - }); - console.log('Network created:', result); -}; - -// List networks -const listNetworks = async () => { - const networks = await client.blockchainNetwork.list("your-app"); - console.log('Networks:', networks); -}; - -// Get network details -const getNetwork = async () => { - const network = await client.blockchainNetwork.read("network-unique-name"); - console.log('Network details:', network); -}; - -// Delete network -const deleteNetwork = async () => { - await client.blockchainNetwork.delete("network-unique-name"); -}; - -// Restart network -const restartNetwork = async () => { - await client.blockchainNetwork.restart("network-unique-name"); -}; -``` - -:::tip -Get your access token from the Platform UI under User Settings → API Tokens. -::: - - - - -## Manage a network - - - - -![Manage Network](../../static/img/about-settlemint/manage-network.png) - -Navigate to your network and click **Manage network** to see available actions: -- View network details and status -- Monitor network health -- Restart network operations - - - - -```bash -# List networks -settlemint platform list blockchain-networks --application - -# Get network details -settlemint platform read blockchain-network - -# Delete network -settlemint platform delete blockchain-network - -# Restart network -settlemint platform restart blockchain-network -``` - - - - -```typescript -// List networks -await client.blockchainNetwork.list("your-app"); - -// Get network details -await client.blockchainNetwork.read("network-unique-name"); - -// Delete network -await client.blockchainNetwork.delete("network-unique-name"); - -// Restart network -await client.blockchainNetwork.restart("network-unique-name"); -``` - - - - -:::info Note -All operations require appropriate permissions in your workspace. -::: diff --git a/docs/using-platform/21_deployment-plans.md b/docs/using-platform/21_deployment-plans.md deleted file mode 100644 index 7bca7c51..00000000 --- a/docs/using-platform/21_deployment-plans.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Deployment Plans -description: A list of the available Deployment Plans for SettleMint ---- - -# Deployment plans - -For each service you deploy (network, node, smart contract set, etc.) you need to select a deployment plan. The deployment plan defines the infrastructure type, the cloud provider and region of your choice, and the resources (memory, vCPU and disk space) that will be allocated to your service. - -## Infrastructure type - -Not all applications are equal. Some are for experimentation, some are pilots, while others are high volume and mission critical. We make it easy to match the infrastructure to the scale of the project. - -- **Shared** - This is typically the most cost-effective deployment configuration. Resources are deployed in a shared cluster. The performance will vary based on the demand from other services sharing the infrastructure. This configuration is like living on an island with other inhabitants with whom you need to share limited resources. -- **Dedicated** - This configuration offers the highest specifications without requiring additional technical overhead. Your service runs on its own exclusively-used cloud infrastructure, meaning it can't be impacted by others. To continue the metaphor, with this configuration you choose the size of the island based on your needs, and you don't share its resources with anyone else. - -**On-premise** and **Bring Your Own Cloud (BYOC)** are also supported. Feel free [contact us](mailto:support@settlemint.com) to discuss these options. - -## Cloud provider and region - -We offer you the flexibility to deploy your services in the cloud of your choice, and easily build cross-cloud provider and cross-geographical region networks. All leading cloud providers are supported and we are continously working on adding support for more regions. - -[Discover all supported cloud providers and available regions](../launch-platform/managed-cloud-deployment/0_supported-cloud-providers.md) - -## Resource pack - -The resource pack refers to the memory, vCPU, and disk space allocated to your service. You can choose between **small, medium, and large** options. You can proactively scale the resource pack if you anticipate that current resource usage might approach its limit, which could potentially impact service performance. - -## Recommended setup - -- Non-production application or Proof of Concept: shared infrastructure and small resource pack -- Application in production mode: dedicated infrastructure and medium resource pack diff --git a/docs/using-platform/2_invite-network-participants.md b/docs/using-platform/2_invite-network-participants.md deleted file mode 100644 index 968f9942..00000000 --- a/docs/using-platform/2_invite-network-participants.md +++ /dev/null @@ -1,45 +0,0 @@ -# Invite network participants - -Permissioned networks, although started by a single organization, allow multiple organizations with a shared business goal to come together and form the consortium. The different organizations transacting with each other in a permissioned network are called **network participants**. The organization who created the network, i.e. the owner, can invite network participants and set specific permissions for the organizations joining the network. - -Depending on how you organize your work, you can grow the network with new participants in two ways: - -- **Invite an organization** to join the SettleMint platform so they can join the network (e.g. if the organization itself is responsible for adding and managing their nodes) -- **Add an organization** to the network yourself (e.g. if the organization is your client and you are managing the project for them) - -## Invite an organization - -Navigate to the relevant **application**, and click **Blockchain network** in the left navigation. - -Open the **Participants** tab and click **Invite organization**. This opens a form. - -Follow these steps to invite an organization to join the SettleMint platform, and join the network: - -1. Enter the **email address** of the contact person from the organization you want to invite. -2. Set the **permissions** for this new network participant. You can change these permissions at any time. -3. Optionally, you can add a **message** to be included in the invitation email. -4. Click **Confirm** to go to the list of organizations participating in the network. Your email invitation has now been sent, and you see in the list that it is pending. - -The invitation email includes a code that the recipient can use to get access to the network. - -## Add an organization - -Navigate to the relevant **application**, and click **Blockchain network** in the left navigation. - -Open the **Participants** tab and click **Add organization**. This opens a form. - -Follow these steps to add an organization to the network yourself: - -1. Define the **organization**. You can select an organization you already have in place, or create a new one and choose a name for this new organization. Separate invoices are generated for each organization, so creating a new organization might be more convenient if you need to separate invoices. -2. Enter **billing information** if you created a new organization. SettleMint creates a billing account for this organization. You will be billed monthly for the resources you use within this organization. -3. Define the **application**. You can select an application you already created, or create a new one and choose a name for this new application. -4. Set the **permissions** for this new network participant. You can change these permissions at any time. -5. Click **Confirm** to go to the list of organizations participating in the network. You see the new participant added to the list. - -## Manage a network participant - -Navigate to the relevant **application**, and click **Blockchain network** in the left navigation. - -Open the **Participants** tab and click **Manage participant** to see available actions. You can only perform these actions if you have administrator rights. - -**Change permissions** - Changes the network participant's permissions with immediate effect. diff --git a/docs/using-platform/3_join-a-network-by-invitation.md b/docs/using-platform/3_join-a-network-by-invitation.md deleted file mode 100644 index a7bc4e65..00000000 --- a/docs/using-platform/3_join-a-network-by-invitation.md +++ /dev/null @@ -1,14 +0,0 @@ -# Join a network by invitation - -In a permissioned blockchain network (often called a consortium network), participants need to be invited by the network's owner to join the network. - -Follow these steps if you received an invitation to join a blockchain network: - -1. [Log in](https://console.settlemint.com/) to SettleMint, or [create an account](../launch-platform/managed-cloud-deployment/1_create-an-account.md). -2. Navigate to an existing blockchain application, or create a new one. -3. Click **Blockchain network** in the left navigation. -4. Click **Add a blockchain network**. This will open a form. -5. Choose **Join by invitation code**, and then click **Continue**. -6. Enter the **invitation code** included in the email you received, and click **Confirm**. The network now appears in the overview. Click to see more details of the network. - -You can now start [adding nodes to the network](4_add-a-node-to-a-network.md). diff --git a/docs/using-platform/4_add-a-node-to-a-network.md b/docs/using-platform/4_add-a-node-to-a-network.md deleted file mode 100644 index 0ea96b4a..00000000 --- a/docs/using-platform/4_add-a-node-to-a-network.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: Add a Blockchain Node -description: Guide to adding a Blockchain Node to a Network -sidebar_position: 3 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Add a node to a network - -Once you have deployed a permissioned network or joined a public network, you can add more nodes to it. The number of nodes needed depends on your network's protocol. - -## How to add a node - - - - -![Add a Node](../../static/img/about-settlemint/add-node.png) - -Navigate to the **application** that includes the network to which you want to add nodes. -Click **Blockchain nodes** in the left navigation, then click **Add a blockchain node**. - -Follow these steps: -1. Select the **blockchain network** to add this node to -2. Choose a **node name** -3. Select **node type** (VALIDATOR/NON_VALIDATOR for permissioned networks) -4. Configure deployment settings -5. Click **Confirm** to add the node - - - - -First ensure you're authenticated: -```bash -settlemint login -``` - -Create a blockchain node: -```bash -settlemint platform create blockchain-node besu \ - --blockchain-network \ - --node-type \ - --provider \ - --region -``` - - - - -```typescript -import { createSettleMintClient } from '@settlemint/sdk-js'; - -const client = createSettleMintClient({ - accessToken: 'your_access_token', - instance: 'https://console.settlemint.com' -}); - -const createNode = async () => { - const result = await client.blockchainNode.create({ - applicationUniqueName: "your-application", - blockchainNetworkUniqueName: "your-network", - name: "my-node", - nodeType: "VALIDATOR", - provider: "provider", - region: "region" - }); - console.log('Node created:', result); -}; -``` - -:::tip -Get your access token from the Platform UI under User Settings → API Tokens. -::: - - - - -## Manage a node - - - - -Navigate to your node and click **Manage node** to see available actions: -- View node details and status -- Monitor node health -- Restart node operations - - - - -```bash -# List nodes -settlemint platform list services --application - -# Restart node -settlemint platform restart blockchain-node -``` - - - - -```typescript -// List nodes - -// List nodes -await client.blockchainNode.list("your-application"); - -// Delete node -await client.blockchainNode.read("node-unique-name"); - -// Restart node -await client.blockchainNode.restart("node-unique-name"); -``` - - - - -:::info Note -All operations require appropriate permissions in your workspace. -::: diff --git a/docs/using-platform/5_connect-to-a-node.md b/docs/using-platform/5_connect-to-a-node.md deleted file mode 100644 index e55311db..00000000 --- a/docs/using-platform/5_connect-to-a-node.md +++ /dev/null @@ -1,15 +0,0 @@ -# Connect to a node - -For an application to interact with a blockchain (e.g. by sending transactions/data to the network, or even just by reading data), it must connect to a node. - -To connect to a node, you use an endpoint, which is a URL that enables an API to gain access to the node. You interact with the node by sending requests to, and receiving responses from it via an API. - -You can find the endpoints on the **node detail page**, in the **Connect tab**, together with node interaction tools with playgrounds for real-time tryouts (e.g. JSON-RPC, GraphQL, etc.). - -For protocol-specific information about connecting to a node, refer to the relevant section in the blockchain guides: - -- [Connect to a Hyperledger Besu node](../blockchain-guides/1_Hyperledger-Besu/4_enterprise-ethereum-connect-to-a-node.md) -- [Connect to an Ethereum node](../blockchain-guides/0_Ethereum/3_ethereum-connect-to-a-node.md) -- [Connect to an Avalanche node](../blockchain-guides/2_Avalanche/3_avalanche-connect-to-a-node.md) -- [Connect to a Polygon node](../blockchain-guides/4_Polygon/3_polygon-connect-to-a-node.md) -- [Connect to a Hyperledger Fabric node](../blockchain-guides/5_Hyperledger-Fabric/3_hyperledger-fabric-node-types.md) diff --git a/docs/using-platform/9_hasura-backend-as-a-service.md b/docs/using-platform/9_hasura-backend-as-a-service.md deleted file mode 100644 index 0fff1258..00000000 --- a/docs/using-platform/9_hasura-backend-as-a-service.md +++ /dev/null @@ -1,359 +0,0 @@ ---- -title: Hasura - Backend-as-a-service -description: Guide to using Hasura in SettleMint ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Hasura - Backend-as-a-service - -Many dApps need more than just decentralized tools to build an end-to-end solution. The SettleMint Hasura SDK provides a seamless way to interact with Hasura GraphQL APIs for managing application data. - -## Add Hasura - - - - -Navigate to the **application** where you want to add Hasura. Click **Integration tools** in the left navigation, and then click **Add an integration tool**. This opens a form. - -Follow these steps to add Hasura: -1. Select **Hasura**, and click **Continue** -2. Choose a **name** for your backend-as-a-service -3. Choose a deployment plan (provider, region, resource pack) -4. Click **Confirm** to add it - - - - -First ensure you're authenticated: -```bash -settlemint login -``` - -Create Hasura instance: -```bash -settlemint platform create integration-tool hasura - -# Get information about the command and all available options -settlemint platform create integration-tool hasura --help -``` - - - - -For a full example of how to create a blockchain explorer using the SDK, see the [Hasura SDK API Reference](https://www.npmjs.com/package/@settlemint/sdk-hasura#api-reference). - -:::tip -The SDK enables you to easily query and mutate data stored in your SettleMint-powered PostgreSQL databases through a type-safe GraphQL interface. For detailed API reference, check out the [Hasura SDK documentation](https://github.com/settlemint/sdk/tree/main/sdk/hasura). -::: - - - - -## Some basic features - -- Under the data subtab you can create an arbitrary number of **schema's**. A schema is a collection of tables. -- In a schema you can create **tables**, choose which columns you want and define relations and indexes. -- You can add, edit and delete **data** in these columns as well. - [Learn more here](https://hasura.io/docs/latest/graphql/core/databases/postgres/schema/tables.html) - -Any table you make is instantly visible in the **API subtab**. Note that by using the **REST and Derive Action buttons** you can convert queries into REST endpoints if that fits your application better. Using the **Code Exporter button** you can get the actual code snippets you can use in your application or the integration studio. - -A bit more advanced are **actions**. Actions are custom queries or mutations that are resolved via HTTP handlers. Actions can be used to carry out complex data validations, data enrichment from external sources or execute just about any custom business logic. Actions can be kickstarted by using the **Derive Action button** in the **API subtab**. -[Learn more here.](https://hasura.io/docs/latest/graphql/core/actions/index.html) - -If you need to execute tasks based on changes to your database you can leverage **Events**. An **Event Trigger** atomically captures events (insert, update, delete) on a specified table and then reliably calls a HTTP webhook to run some custom business logic. -[Learn more here.](https://hasura.io/docs/latest/graphql/core/event-triggers/index.html) - -**Cron Triggers** can be used to reliably trigger HTTP endpoints to run some custom business logic periodically based on a cron schedule. - -**One-off Scheduled Events** are individual events that can be scheduled to reliably trigger a HTTP webhook to run some custom business logic at a particular timestamp. - -**Access to your database** can be handled all the way to the row level by using the authentication and authorisation options available in Hasura. -[Learn more here.](https://hasura.io/docs/latest/graphql/core/auth/index.html) - -This is of course on top of the [application access tokens](16_application-access-tokens.md) and [personal access tokens](17_personal-access-tokens.md) in the platform you can use to close off access to the entire API. - -## Backups - -You should take a backup of the following components: - -1. Hasura Database -2. Hasura Metadata - -### Steps for taking a backup of Hasura Database - -1. Install Hasura CLI (https://hasura.io/docs/latest/hasura-cli/install-hasura-cli/) -2. Run hasura init command to initiate a new Hasura project in the working directory. -3. Edit config.yaml file to configure remote Hasura instance. We need to generate an API Key in BPaaS and pass it with the endpoint. - -config.yaml example: - -``` -version: 3 - -endpoint: -admin_secret: - -metadata_directory: metadata -actions: - kind: synchronous - handler_webhook_baseurl: http://localhost:3000 -``` - -4. Run hasura console command. (this command will sync everything to your local hasura instance.) -5. Run this curl command to generate DB export: - -Curl Format - -``` -curl -d '{"opts": [ "-O", "-x", "--schema=public", "--inserts"], "clean_output": true, "source": "default"}' -H "x-hasura-admin-secret: " /v1alpha1/pg_dump > db.sql -``` - -Example Curl - -``` -curl -d '{"opts": [ "-O", "-x", "--schema=public", "--inserts"], "clean_output": true, "source": "default"}' -H "x-hasura-admin-secret:78b0e4618125322de0eb" https://fuchsiacapybara-7f70.gke-europe.settlemint.com/bpaas-1d79Acd6A2f112EA450F1C07a372a7D582E6121F/v1alpha1/pg_dump > db.sql -``` - -### Importing data into a new instance - -Please copy the content of the exported db.sql file, paste it and execute as a SQL statement. - -![Import](../../static/img/blockchain-guide/Hasura_Import.png) - -> More info on this and other commands can be found in the [Hasura docs](https://hasura.io/docs/latest/api-reference/pgdump/), please note to always add the x-auth-token header with an api key for your Hasura instance. - -### Steps for taking a backup of Hasura Metadata - -Hasura Metadata Export is a collection of yaml files which captures all the Metadata required by the GraphQL Engine. This includes info about tables that are tracked, permission rules, relationships, and event triggers that are defined on those tables. - -If you have already initialized your project via the Hasura CLI you should see the Metadata directory structure in your project directory. - -To export your entire Metadata using the Hasura CLI execute the following command in your terminal: - -``` -#in hasura CLI -hasura metadata export -``` - -This will export the Metadata as YAML files in the /metadata directory - -### Steps for importing or applying Hasura Metadata - -You can apply Metadata from one Hasura Server instance to another. You can also apply an older or modified version of an instance's Metadata onto itself to replace the existing Metadata. Applying or importing completely replaces the Metadata on that instance, i.e. you lose any Metadata that existed before applying. - -``` -#in hasura CLI -hasura metadata apply -``` - -### Reload Hasura Metadata - -In some cases, the Metadata can be out of sync with the database schema. For example, when a new column has been added to a table via an external tool. - -``` -#in hasura CLI -hasura metadata reload -``` - -For more on Hasura Metadata, refer: https://hasura.io/docs/latest/migrations-metadata-seeds/manage-metadata/ -For more on Hasura Migrations, refer: https://hasura.io/docs/latest/migrations-metadata-seeds/manage-migrations/ - -## Usage Examples - -You can interact with your Hasura database in two ways: through the GraphQL API (recommended) or directly via PostgreSQL connection. - - - - -```javascript -import fetch from 'node-fetch'; - -// Configure your authentication details -const HASURA_ENDPOINT = "YOUR_HASURA_ENDPOINT"; -const HASURA_ADMIN_SECRET = "YOUR_HASURA_ADMIN_SECRET"; // Found in the "Connect" tab of Hasura console -const APP_ACCESS_TOKEN = "YOUR_APP_ACCESS_TOKEN"; // Generated following the Application Access Tokens guide - -// Reusable function to make GraphQL requests -async function fetchGraphQL(operationsDoc, operationName, variables) { - try { - const result = await fetch( - HASURA_ENDPOINT, - { - method: "POST", - headers: { - 'Content-Type': 'application/json', - 'x-hasura-admin-secret': HASURA_ADMIN_SECRET, - 'x-auth-token': APP_ACCESS_TOKEN - }, - body: JSON.stringify({ - query: operationsDoc, - variables: variables, - operationName: operationName - }) - } - ); - - if (!result.ok) { - const text = await result.text(); - throw new Error(`HTTP error! status: ${result.status}, body: ${text}`); - } - - return await result.json(); - } catch (error) { - console.error('Request failed:', error); - throw error; - } -} - -// Query to fetch verification records -const operationsDoc = ` - query MyQuery { - verification { - id - } - } -`; - -// Mutation to insert a new verification record -const insertOperationDoc = ` - mutation InsertVerification($name: String!, $status: String!) { - insert_verification_one(object: {name: $name, status: $status}) { - id - name - status - } - } -`; - -// Function to fetch verification records -async function main() { - try { - const { errors, data } = await fetchGraphQL(operationsDoc, "MyQuery", {}); - - if (errors) { - console.error('GraphQL Errors:', errors); - return; - } - - console.log('Data:', data); - } catch (error) { - console.error('Failed:', error); - } -} - -// Function to insert a new verification record -async function insertWithGraphQL() { - try { - const { errors, data } = await fetchGraphQL( - insertOperationDoc, - "InsertVerification", - { - name: "Test User", - status: "pending" - } - ); - - if (errors) { - console.error('GraphQL Errors:', errors); - return; - } - - console.log('Inserted Data:', data); - } catch (error) { - console.error('Failed:', error); - } -} - -// Execute both query and mutation -main(); -insertWithGraphQL(); -``` - - - - -```javascript -import pkg from 'pg'; -const { Pool } = pkg; - -// Initialize PostgreSQL connection (get connection string from Hasura console -> "Connect" tab) -const pool = new Pool({ - connectionString: 'YOUR_POSTGRES_CONNECTION_STRING' -}); - -// Simple query to read all records from verification table -const readData = async () => { - const query = 'SELECT * FROM verification'; - const result = await pool.query(query); - console.log('Current Data:', result.rows); -}; - -// Insert a new verification record with sample data -const insertData = async () => { - const query = ` - INSERT INTO verification (id, identifier, value, created_at, expires_at) - VALUES ($1, $2, $3, $4, $5) - RETURNING *`; - - // Sample values - modify according to your needs - const values = [ - 'test-id-123', - 'test-identifier', - 'test-value', - new Date(), - new Date(Date.now() + 24 * 60 * 60 * 1000) // Sets expiry to 24h from now - ]; - - const result = await pool.query(query, values); - console.log('Inserted:', result.rows[0]); -}; - -// Update an existing record by ID -const updateData = async () => { - const query = ` - UPDATE verification - SET value = $1, updated_at = $2 - WHERE id = $3 - RETURNING *`; - - const values = ['updated-value', new Date(), 'test-id-123']; - const result = await pool.query(query, values); - console.log('Updated:', result.rows[0]); -}; - -// Execute all operations in sequence -async function main() { - try { - await readData(); - await insertData(); - await updateData(); - await readData(); - } finally { - await pool.end(); // Close database connection - } -} - -main(); -``` - - - - -### Authentication Setup - -To run these examples, you'll need the following: - -For GraphQL API: -1. **Hasura Admin Secret**: Found in the "Connect" tab of Hasura console -2. **Application Access Token**: Generate this by following our [Application Access Tokens guide](16_application-access-tokens.md) - -For PostgreSQL: -1. **PostgreSQL Connection String**: Found in the "Connect" tab of Hasura console under "Database URL" - - -:::warning -Always keep your credentials secure and never expose them in client-side code. Use environment variables or a secure configuration management system in production environments. -::: diff --git a/docs/using-platform/_category_.json b/docs/using-platform/_category_.json deleted file mode 100644 index 7a059946..00000000 --- a/docs/using-platform/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Building with SettleMint", - "position": 3 -} diff --git a/docusaurus.config.ts b/docusaurus.config.ts deleted file mode 100644 index 439eab93..00000000 --- a/docusaurus.config.ts +++ /dev/null @@ -1,166 +0,0 @@ -import type * as Preset from '@docusaurus/preset-classic'; -import type { Config } from '@docusaurus/types'; -import path from 'path'; -import { themes } from 'prism-react-renderer'; - -const config: Config = { - title: 'SettleMint Developer Hub', - tagline: - 'The Blockchain Transformation Platform for developers to rapidly build blockchain applications', - url: 'https://console.settlemint.com', - baseUrl: '/documentation/', - onBrokenLinks: 'throw', - onBrokenMarkdownLinks: 'throw', - trailingSlash: true, - favicon: 'img/favicon.ico', - organizationName: 'settlemint', // Usually your GitHub org/user name. - projectName: 'btp-docs', // Usually your repo name. - plugins: [ - require.resolve('docusaurus-lunr-search'), - [ - '@docusaurus/plugin-content-blog', - { - id: 'releases', - routeBasePath: 'releases', - path: './releases', - blogSidebarCount: 'ALL', - onUntruncatedBlogPosts: 'ignore' - } - ], - [ - '@docusaurus/plugin-ideal-image', - { - quality: 70, - max: 1030, // max resized image's size. - min: 640, // min resized image's size. if original is lower, use that size. - steps: 2, // the max number of images generated between min and max (inclusive) - disableInDev: false, - }, - ], - path.resolve(__dirname, 'src/plugins/docusaurus-llms-plugin'), - ], - presets: [ - [ - 'classic', - { - sitemap: { - lastmod: 'date', - changefreq: 'weekly', - priority: 0.5, - ignorePatterns: ['/tags/**'], - filename: 'sitemap.xml', - createSitemapItems: async (params) => { - const {defaultCreateSitemapItems, ...rest} = params; - const items = await defaultCreateSitemapItems(rest); - return items.filter((item) => !item.url.includes('/page/')); - }, - }, - docs: { - sidebarPath: require.resolve('./sidebars.js') - }, - gtag: { - trackingID: 'G-N1MMHFDVZZ', - anonymizeIP: false - }, - blog: { - showReadingTime: true, - blogTitle: 'Developer Blog', - sortPosts: 'descending', - onUntruncatedBlogPosts: 'ignore' - }, - theme: { - customCss: require.resolve('./src/css/custom.css') - } - - } satisfies Preset.Options - ] - ], - - themeConfig: { - navbar: { - title: '', - logo: { - alt: 'SettleMint', - src: 'img/settlemint-hub-black.png', - srcDark: 'img/settlemint-hub-white.png' - }, - items: [ - { - type: 'doc', - docId: 'about-settlemint/intro', - position: 'left', - label: 'Docs' - }, - { - to: '/docs/developer-guides/guide-library', - label: 'Guides', - position: 'left' - }, - { to: '/blog/', label: 'Developer Blog', position: 'left' }, - { - href: '/releases', - label: 'Releases', - position: 'right' - }, - { - href: 'https://settlemint.com', - label: 'Website', - position: 'right' - }, - { - href: 'https://console.settlemint.com/documentation/llms.txt', - label: 'llms.txt', - position: 'right' - } - ] - }, - footer: { - style: 'dark', - links: [ - { - title: 'Docs', - items: [ - { - label: 'About SettleMint', - to: '/docs/about-settlemint/intro' - } - ] - }, - { - title: 'Community', - items: [ - { - label: 'SettleMint Platform', - href: 'https://console.settlemint.com' - }, - { - label: 'Twitter', - href: 'https://twitter.com/settlemintcom' - } - ] - }, - { - title: 'More', - items: [ - { - label: 'Developer Blog', - to: '/blog' - }, - { - label: 'Website', - href: 'https://settlemint.com' - } - ] - } - ], - copyright: `Copyright © ${new Date().getFullYear()} SettleMint.` - }, - prism: { - theme: themes.github, - darkTheme: themes.dracula, - additionalLanguages: ['solidity'] - } - } satisfies Preset.ThemeConfig -}; - -module.exports = config; diff --git a/next.config.mjs b/next.config.mjs new file mode 100644 index 00000000..a8ea6bf9 --- /dev/null +++ b/next.config.mjs @@ -0,0 +1,27 @@ +import { createMDX } from 'fumadocs-mdx/next'; + +const withMDX = createMDX(); + +/** @type {import('next').NextConfig} */ +const config = { + reactStrictMode: true, + output: 'standalone', + basePath: '/documentation', + serverExternalPackages: ['oxc-transform'], + eslint: { + ignoreDuringBuilds: true, + }, + images: { + remotePatterns: [], + unoptimized: false, + formats: ['image/webp'], + deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840], + imageSizes: [16, 32, 48, 64, 96, 128, 256, 384], + }, + experimental: { + inlineCss: true, + reactCompiler: true, + }, +}; + +export default withMDX(config); diff --git a/nginx.conf b/nginx.conf deleted file mode 100644 index da60c04d..00000000 --- a/nginx.conf +++ /dev/null @@ -1,53 +0,0 @@ -worker_processes auto; - -error_log /var/log/nginx/error.log notice; -pid /tmp/nginx.pid; - - -events { - worker_connections 1024; -} - - -http { - proxy_temp_path /tmp/proxy_temp; - client_body_temp_path /tmp/client_temp; - fastcgi_temp_path /tmp/fastcgi_temp; - uwsgi_temp_path /tmp/uwsgi_temp; - scgi_temp_path /tmp/scgi_temp; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - log_format nginxlog_json escape=json '{ "timestamp": "$time_iso8601", ' - '"remote_addr": "$remote_addr", ' - '"body_bytes_sent": $body_bytes_sent, ' - '"request_time": $request_time, ' - '"response_status": $status, ' - '"request": "$request", ' - '"request_method": "$request_method", ' - '"host": "$host",' - '"upstream_addr": "$upstream_addr",' - '"http_x_forwarded_for": "$http_x_forwarded_for",' - '"http_referrer": "$http_referer", ' - '"http_user_agent": "$http_user_agent", ' - '"http_version": "$server_protocol", ' - '"nginx_access": true }'; - - map $request_uri $loggable { - "/metrics" 0; - default 1; - } - - access_log /dev/stdout nginxlog_json if=$loggable; - - - sendfile on; - #tcp_nopush on; - - keepalive_timeout 65; - - #gzip on; - - include /etc/nginx/conf.d/*.conf; -} diff --git a/nginx.default.conf b/nginx.default.conf deleted file mode 100644 index 8b310607..00000000 --- a/nginx.default.conf +++ /dev/null @@ -1,50 +0,0 @@ -server { - listen 8080; - server_name localhost; - absolute_redirect off; - - #access_log /var/log/nginx/host.access.log main; - - location ~* "^/nginx_status(/(.*)|$)" { - access_log off; - allow all; - stub_status on; - } - - location / { - root /usr/share/nginx/html; - index index.html index.htm; - } - - #error_page 404 /404.html; - - # redirect server error pages to the static page /50x.html - # - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /usr/share/nginx/html; - } - - # proxy the PHP scripts to Apache listening on 127.0.0.1:80 - # - #location ~ \.php$ { - # proxy_pass http://127.0.0.1; - #} - - # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 - # - #location ~ \.php$ { - # root html; - # fastcgi_pass 127.0.0.1:9000; - # fastcgi_index index.php; - # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; - # include fastcgi_params; - #} - - # deny access to .htaccess files, if Apache's document root - # concurs with nginx's one - # - #location ~ /\.ht { - # deny all; - #} -} diff --git a/package.json b/package.json index 97b6a544..8412f1ef 100644 --- a/package.json +++ b/package.json @@ -1,58 +1,46 @@ { "name": "docs", - "version": "0.0.0", + "version": "7.0.0", "private": true, "scripts": { - "docusaurus": "docusaurus", - "start": "docusaurus start --port 8080 --host 0.0.0.0", - "build": "docusaurus build", - "swizzle": "docusaurus swizzle", - "deploy": "docusaurus deploy", - "clear": "docusaurus clear", - "serve": "docusaurus serve --port 8080 --host 0.0.0.0", - "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids", - "typecheck": "tsc", - "docker": "bash -c \"docker buildx build . --provenance true --sbom true --platform=linux/amd64,linux/arm64 -t ghcr.io/settlemint/btp-docs:${VERSION:-7.0.0-dev.$(date +%s)} --push --progress=plain\"", - "cosign": "cosign sign --yes ghcr.io/settlemint/btp-docs:${VERSION:-7.0.0-dev.$(date +%s)}", - "format": "bunx prettier --write ." + "build": "next build", + "dev": "next dev", + "start": "next start", + "postinstall": "fumadocs-mdx", + "docker": "bash -c \"docker buildx build . --provenance true --sbom true --platform=linux/amd64,linux/arm64 -t ghcr.io/settlemint/btp-docs:${VERSION:-7.0.0-dev.$(date +%s)} --push --progress=plain\"" }, "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/faster": "3.7.0", - "@docusaurus/plugin-ideal-image": "3.7.0", - "@docusaurus/plugin-sitemap": "3.7.0", - "@docusaurus/preset-classic": "3.7.0", - "@fontsource/figtree": "5.1.2", - "@mdx-js/react": "3.1.0", - "clsx": "2.1.1", - "docusaurus-lunr-search": "3.6.0", - "gray-matter": "4.0.3", - "prism-react-renderer": "2.4.1", - "react": "19.0.0", - "react-dom": "19.0.0" + "@biomejs/biome": "^1.9.4", + "@next/third-parties": "^15.1.7", + "@theguild/remark-mermaid": "^0.2.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "fumadocs-core": "15.0.9", + "fumadocs-docgen": "^1.3.7", + "fumadocs-mdx": "11.5.6", + "fumadocs-twoslash": "^3.0.0", + "fumadocs-ui": "15.0.9", + "lucide-react": "^0.475.0", + "next": "15.1.7", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "tailwind-merge": "^3.0.1", + "tailwindcss-animate": "^1.0.7", + "ultracite": "^4.1.20" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.7.0", - "@docusaurus/tsconfig": "3.7.0", - "@docusaurus/types": "3.7.0", - "graphql-request": "7.1.2", - "typescript": "5.7.3" + "@fumadocs/cli": "^0.0.8", + "@tailwindcss/postcss": "^4.0.6", + "@types/mdx": "^2.0.13", + "@types/node": "22.13.4", + "@types/react": "^19.0.9", + "@types/react-dom": "^19.0.3", + "babel-plugin-react-compiler": "^19.0.0-beta-21e868a-20250216", + "eslint": "^8", + "eslint-config-next": "15.1.7", + "postcss": "^8.5.2", + "tailwindcss": "^4.0.6", + "typescript": "^5.7.3" }, - "browserslist": { - "production": [ - ">0.5%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 3 chrome version", - "last 3 firefox version", - "last 5 safari version" - ] - }, - "packageManager": "bun@1.1.42", - "engines": { - "node": "22.14.0" - } + "trustedDependencies": ["@biomejs/biome"] } diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 00000000..a34a3d56 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,5 @@ +export default { + plugins: { + '@tailwindcss/postcss': {}, + }, +}; diff --git a/releases/2024-03-22-self-managed-platform-v7.md b/releases/2024-03-22-self-managed-platform-v7.md deleted file mode 100644 index b93c4e19..00000000 --- a/releases/2024-03-22-self-managed-platform-v7.md +++ /dev/null @@ -1,17 +0,0 @@ -# Self-Managed platform v7 - -![Changelog Image](../static/img/releases/self-managed-platform-v7.png) - -Fully modular overhaul of the self managed platform to enable maximum flexibility in its deployment and feature parity with the Managed Platform - -- New and improved Helm chart to deploy the platform on your own infrastructure - -- Fully customisable and configurable via the Helm values - -- Complete feature parity, from services to service deployment with the Managed platform (same codebase and helm chart) - -- Dramatically improved performance in restrictive environments - -- [Open-Source Smart Contract](https://github.com/settlemint) sets and the ability to build custom sets from these templates and add them as default options in the platform - -Get in touch with your SettleMint contact to upgrade or start a trial diff --git a/releases/2024-04-02-managed-platform-v7.md b/releases/2024-04-02-managed-platform-v7.md deleted file mode 100644 index 1fd57b9b..00000000 --- a/releases/2024-04-02-managed-platform-v7.md +++ /dev/null @@ -1,5 +0,0 @@ -# Managed Platform v7 - -![Changelog Image](../static/img/releases/managed-platform-v7.png) - -The managed platform has been upgraded to the same codebase as the earlier Self-Managed release, providing a secure and more importantly, low barrier entry to transofring your organisation with Blockchain diff --git a/releases/2024-04-02-polygon-amoy.md b/releases/2024-04-02-polygon-amoy.md deleted file mode 100644 index 70a2558a..00000000 --- a/releases/2024-04-02-polygon-amoy.md +++ /dev/null @@ -1,9 +0,0 @@ -# Polygon Amoy - -![Changelog Image](../static/img/releases/polygon-amoy.png) - -The beloved and widely used Mumbai testnet for Polygon PoS uses Ethereum’s Goerli testnet as its root chain. This means Mumbai counts on Goerli for block production.  -But Goerli is currently scheduled for deprecation, by the end of Q1 2024. The Amoy testnet for Polygon PoS is the replacement and has been launched, a new testnet that provides a low-stakes environment to build, test, and break things.  -Amoy will use Ethereum’s Sepolia testnet as the root (L1) chain. Developers deploying on Amoy can continue to count on the availability of essential validators, infra, faucets, tooling, and more, in a sustainable and future-proof environment. -Now available in the SettleMint platform. -Note: Any Mumbai nodes will cease to function in the near future, please migrate your applications as soon as possible. diff --git a/releases/2024-04-22-embedded-o11y-infrastructure.md b/releases/2024-04-22-embedded-o11y-infrastructure.md deleted file mode 100644 index 30aa43dd..00000000 --- a/releases/2024-04-22-embedded-o11y-infrastructure.md +++ /dev/null @@ -1,5 +0,0 @@ -# Embedded o11y infrastructure - -![Changelog Image](../static/img/releases/embedded-o11y-infrastructure.png) - -The platform now includes a complete observability suite. It powers the resource metrics and logs in the platform UI, and includes a Grafana instance for operation personel to track any metric they wish to follow. diff --git a/releases/2024-06-27-hashgraph-hedera.md b/releases/2024-06-27-hashgraph-hedera.md deleted file mode 100644 index e5bcf00c..00000000 --- a/releases/2024-06-27-hashgraph-hedera.md +++ /dev/null @@ -1,11 +0,0 @@ -# Hashgraph Hedera - -![Changelog Image](../static/img/releases/hashgraph-hedera.png) - -Hedera is a public distributed ledger technology (DLT) network that was launched in August 2018 by Hedera Hashgraph, LLC. It uses the Hashgraph consensus algorithm, which is a unique and novel approach to achieving consensus in a distributed network. - -Hedera’s native cryptocurrency is called HBAR, and it is used to power the network’s services, including smart contracts, file storage, and regular transactions. - -Hedera focuses on providing high throughput, low latency, and fair transaction ordering, making it suitable for enterprise-grade applications. Unlike blockchain-based systems, Hedera’s Hashgraph algorithm ensures fast, fair, and secure transactions without compromising decentralization. We support, the Hedera Mainnet and the Hedera Testnet. - -Read more on [https://console.settlemint.com/documentation/docs/blockchain-guides/Hedera/hedera-the-basics/](https://console.settlemint.com/documentation/docs/blockchain-guides/Hedera/hedera-the-basics/) diff --git a/releases/2024-07-10-installation-guide-for-google-cloud-platform.md b/releases/2024-07-10-installation-guide-for-google-cloud-platform.md deleted file mode 100644 index 50325108..00000000 --- a/releases/2024-07-10-installation-guide-for-google-cloud-platform.md +++ /dev/null @@ -1,7 +0,0 @@ -# Installation guide for Google Cloud Platform - -![Changelog Image](../static/img/releases/installation-guide-for-google-cloud-platform.png) - -Getting started with the self-managed platform might seem daunting, but in practice it is not that complex. To showcase this we have open-sourced a complete guide and Terraform module to do so on GCP. From 0 to hero in about 30 minutes! - -Get started today on [https://github.com/settlemint/tutorial-btp-on-gcp ](https://github.com/settlemint/tutorial-btp-on-gcp) diff --git a/releases/2024-07-23-smart-contract-set-portal.md b/releases/2024-07-23-smart-contract-set-portal.md deleted file mode 100644 index 2dcc0a25..00000000 --- a/releases/2024-07-23-smart-contract-set-portal.md +++ /dev/null @@ -1,16 +0,0 @@ -# Smart Contract Set Portal - -![Changelog Image](../static/img/releases/smart-contract-set-portal.png) - -The Smart Contract Portal is a middleware which creates an easy to use api on top of your smart contracts. It can be used with all EVM-compatible chains like Ethereum, Hyperledger Besu, Polygon, Binance Smart Chain, Avalanche, etc. You can run it on your own blockchain nodes (both public and permissioned) or on a Load Balancer. -Benefits of using the smart contract portal: - -1. Simplified Integration: APIs allow developers to interact with complex smart contract functions through familiar interfaces, reducing the need to understand blockchain-specific languages and [protocols.](http://protocols.Data) - -2. Data Aggregation: APIs can consolidate data from multiple smart contracts, providing a unified view. - -3. Improved Performance: GraphQL optimizes data fetching, ensuring that clients retrieve only the necessary data in a single request, reducing network load and improving performance. - -4. Stack agnostic: Teams are free to choose their own technology stack. - -More information on [https://console.settlemint.com/documentation/docs/using-platform/middleware/#the-smart-contract-portal-middleware](https://console.settlemint.com/documentation/docs/using-platform/middleware/#the-smart-contract-portal-middleware) diff --git a/releases/2024-07-30-audit-logs.md b/releases/2024-07-30-audit-logs.md deleted file mode 100644 index 67ac42f0..00000000 --- a/releases/2024-07-30-audit-logs.md +++ /dev/null @@ -1,5 +0,0 @@ -# Audit logs - -![Changelog Image](../static/img/releases/audit-logs.png) - -Every application and organization/workspace now has full access to the audit log. This will help you ensure maximum compliance in enterprise environments. diff --git a/releases/2024-08-01-customize-genesis-bootnode-lists-and-key-material.md b/releases/2024-08-01-customize-genesis-bootnode-lists-and-key-material.md deleted file mode 100644 index 86c39dd4..00000000 --- a/releases/2024-08-01-customize-genesis-bootnode-lists-and-key-material.md +++ /dev/null @@ -1,15 +0,0 @@ -# Customize Genesis, Bootnode lists and key material - -![Changelog Image](../static/img/releases/customize-genesis-bootnode-lists-and-key-material.png) - -You can now create new consortium networks where you have the capability to customize literally everything. - -1. You can build your own genesis files, - -2. import them from external sources, - -3. customize boot node lists and the key material used for your nodes - -This allows you to do a variety of use cases that were impossible before. - -For example, you can migrate between different networks and different instances of the SettleMint platform. You can execute your own hard forks, customize settings that are not customizable via the UI, join external consortia that are restricted by identity or just in general join any external network you want. diff --git a/releases/2024-08-23-attestation-service.md b/releases/2024-08-23-attestation-service.md deleted file mode 100644 index aca65bc5..00000000 --- a/releases/2024-08-23-attestation-service.md +++ /dev/null @@ -1,9 +0,0 @@ -# Attestation Service - -![Changelog Image](../static/img/releases/attestation-service.png) - -The Attestation Service is a groundbreaking framework designed to facilitate the creation, management, and verification of attestations on EVM cpmpatible blockchains (public or cosortium). By leveraging the decentralized and immutable nature of blockchain technology, it allows individuals and organizations to issue verifiable statements of fact, which can include anything from identity verification to compliance with regulatory standards. This service empowers users to maintain control over their data while providing transparency and trustworthiness to various processes. - -One of the most remarkable aspects of the Attestation Service is its potential to streamline numerous processes across various industries. For instance, in the realm of education, institutions can issue verified diplomas and certifications that are tamper-proof, ensuring that employers can trust the qualifications of job candidates. In healthcare, medical professionals can share validated credentials, thus enhancing patient safety and care quality. The Attestation Service also plays a crucial role in compliance-related scenarios, allowing businesses to demonstrate adherence to regulations and standards seamlessly, reducing the burden of paperwork and audits. - -The versatility of the Attestation Service extends to a wide array of use cases, making it an invaluable tool for both individuals and enterprises. Beyond identity verification and compliance, EAS can be applied to create transparent voting systems, enhance reputation management in decentralized finance (DeFi), and even support peer-to-peer lending by validating the creditworthiness of borrowers. Moreover, in the realm of environmental sustainability, it can help track and verify carbon credits, ensuring that claims about carbon offsets are accurate and trustworthy. Overall, the Ethereum Attestation Service stands as a transformative solution, unlocking new possibilities for trust and verification in our increasingly digital world. diff --git a/releases/2024-08-29-support-qbft-for-besu.md b/releases/2024-08-29-support-qbft-for-besu.md deleted file mode 100644 index bc04dc86..00000000 --- a/releases/2024-08-29-support-qbft-for-besu.md +++ /dev/null @@ -1,9 +0,0 @@ -# Support QBFT for Besu - -![Changelog Image](../static/img/releases/support-qbft-for-besu.png) - -QBFT (Quorum Byzantine Fault Tolerance) is the latest consensus algorithm now available in Hyperledger Besu on the SettleMint platform. This proof-of-authority consensus mechanism is designed to provide enhanced security, scalability, and performance for enterprise blockchain networks. QBFT ensures that all participating nodes in the network agree on the state of the blockchain, even in the presence of potentially malicious actors or network failures. By utilizing a leader-based system with rotating block proposers, QBFT maintains network integrity while allowing for efficient transaction processing. - -Compared to its predecessor, IBFTv2, QBFT offers several significant improvements. First and foremost, QBFT provides immediate transaction finality, meaning that once a block is added to the chain, it's considered final and cannot be reversed. This feature is particularly crucial for financial applications where transaction certainty is paramount. Additionally, QBFT boasts enhanced performance metrics, with faster block times and higher transaction throughput. The algorithm also incorporates improved security measures, including protection against certain types of attacks that could potentially compromise IBFTv2 networks. These enhancements make QBFT a more robust and efficient choice for enterprise-grade blockchain deployments. - -We're excited to announce that QBFT is now the default consensus algorithm for all new Hyperledger Besu networks deployed on the SettleMint platform. This means that users can immediately take advantage of QBFT's benefits when launching their blockchain projects. diff --git a/releases/2024-09-25-customize-kubernetes-deployment-settings.md b/releases/2024-09-25-customize-kubernetes-deployment-settings.md deleted file mode 100644 index 1b0a883a..00000000 --- a/releases/2024-09-25-customize-kubernetes-deployment-settings.md +++ /dev/null @@ -1,9 +0,0 @@ -# Customize Kubernetes deployment settings - -![Changelog Image](../static/img/releases/customize-kubernetes-deployment-settings.png) - -The feature to customize Kubernetes deployment settings within SettleMint offers users an intuitive user interface (UI) that simplifies the management of deployed services in self-managed installations. This UI provides a comprehensive set of options for adjusting key deployment parameters, such as annotations, labels, tolerations, affinity, and node selectors. By making these customization options readily accessible, SettleMint enables users to tailor their Kubernetes configurations to better align with their specific operational needs and infrastructure requirements, fostering a more efficient and optimized deployment process. - -One of the standout benefits of this feature is its ability to facilitate seamless integration into existing infrastructure. Organizations often have unique requirements based on their operational environment, and the customization options provided by SettleMint empower users to implement any necessary settings effortlessly. This flexibility ensures that deployments can adhere to organizational policies and best practices while maintaining compatibility with the broader Kubernetes ecosystem. By allowing users to specify their desired configurations directly through the UI, SettleMint reduces the complexity typically associated with Kubernetes management, allowing teams to focus on their core business objectives. - -Moreover, the customization of deployment settings significantly enhances the scalability and resilience of services within the Kubernetes environment. By leveraging advanced features like affinity and tolerations, users can optimize resource allocation and improve workload distribution across nodes, leading to better performance and reliability. The ability to modify labels and annotations also aids in effective resource management, enabling users to implement advanced monitoring, logging, and orchestration strategies tailored to their needs. Overall, this feature empowers users to harness the full potential of their Kubernetes deployments, ensuring they can operate efficiently and effectively within their own customized infrastructure. diff --git a/releases/2024-09-27-user-wallet-manager.md b/releases/2024-09-27-user-wallet-manager.md deleted file mode 100644 index 9c3ac3db..00000000 --- a/releases/2024-09-27-user-wallet-manager.md +++ /dev/null @@ -1,9 +0,0 @@ -# User Wallet Manager - -![Changelog Image](../static/img/releases/user-wallet-manager.png) - -The User Wallet Manager feature within SettleMint provides a sophisticated and elegant solution for account management and identity masking through the use of Hierarchical Deterministic (HD) wallets. These HD wallets generate a structured hierarchy of private/public key pairs from a single master seed, allowing users to create a unique address for every transaction. This approach not only enhances privacy and security—since the addresses are related but not publicly linked—but also streamlines the management of keys. Users can efficiently create multiple child wallets under a single parent wallet, making it easy to categorize funds and back up their assets securely. - -One of the most significant benefits of the User Wallet Manager is its ability to mask user identity on a per-transaction basis. This feature provides an unlimited supply of account addresses, each with its own unique, untraceable private key. Organizations can manage different transaction classes or allocate accounts for various end users, significantly enhancing operational flexibility. This capability is especially beneficial for businesses that require distinct accounts for different functions, enabling them to avoid key reuse and duplicate signing, which can pose security risks. - -Moreover, the User Wallet Manager’s HD wallet functionality greatly simplifies asset management for both individuals and enterprises. By allowing businesses to partition separate wallets within their organization, it enhances organizational efficiency and security. The ability to recover entire wallet structures from a single master seed minimizes the risk associated with losing individual keys, making it an attractive option for financial services looking to deliver a secure blockchain solution. diff --git a/releases/2024-10-02-support-the-soneium-network.md b/releases/2024-10-02-support-the-soneium-network.md deleted file mode 100644 index 4ba55b48..00000000 --- a/releases/2024-10-02-support-the-soneium-network.md +++ /dev/null @@ -1,9 +0,0 @@ -# Support the Soneium Network - -![Changelog Image](../static/img/releases/support-the-soneium-network.png) - -SettleMint’s support for the Soneium testnet is a significant boost for developers wanting to build on this efficient blockchain platform. Soneium is designed for scalability and offers a great environment for testing decentralized applications (dApps) before going live. With this integration, developers can take advantage of SettleMint’s powerful tools while experimenting with Soneium’s features, like low transaction costs and high processing speed. This makes it easier for teams to test their applications effectively and make quick adjustments as needed. - -By supporting the Soneium testnet, SettleMint improves the development experience by providing a secure and flexible space for developers to refine their applications. Users can easily deploy their dApps on the Soneium testnet, benefiting from its advanced features while using SettleMint’s straightforward interface and tools. This partnership not only encourages innovation but also helps developers create more reliable and efficient blockchain solutions, supporting the growth and adoption of the Soneium ecosystem. - -SettleMint is also committed to supporting the Soneium mainnet as soon as it goes live. This means that developers who have been testing their applications on the Soneium testnet can seamlessly transition to the mainnet without any disruptions. By providing immediate support for the mainnet, SettleMint ensures that developers can launch their dApps confidently, leveraging the full capabilities of the Soneium blockchain from day one. This approach not only streamlines the deployment process but also allows teams to continue building on the solid foundation they established during their testing phase, making it easier to bring innovative solutions to the market. diff --git a/releases/2024-10-04-integration-of-external-consortia.md b/releases/2024-10-04-integration-of-external-consortia.md deleted file mode 100644 index b3a180b5..00000000 --- a/releases/2024-10-04-integration-of-external-consortia.md +++ /dev/null @@ -1,9 +0,0 @@ -# Integration of external consortia - -![Changelog Image](../static/img/releases/integration-of-external-consortia.png) - -We’re excited to introduce a new feature in SettleMint that lets you connect directly to existing Hyperledger Besu and Quorum blockchain networks run by other organizations. This is a big win for businesses already involved in blockchain consortia or those looking to join one. With this feature, you can create nodes on the SettleMint platform and easily integrate with these permissioned networks, making collaboration with external partners more streamlined and secure. - -For companies working within consortia, this feature simplifies the process of joining networks that are already up and running. Whether you’re part of a supply chain network, a financial services consortium, or any other multi-party blockchain setup, you can now seamlessly connect without needing to build or manage the entire network yourself. This opens the door to stronger collaboration and more efficient operations, as all members of the consortium can easily contribute while maintaining control over their own nodes. - -By allowing organizations to integrate into these existing networks, this feature helps businesses accelerate their blockchain journey. It’s a powerful tool for enhancing transparency, security, and trust between partners in a consortium. With SettleMint, you can now tap into the benefits of shared blockchain networks with minimal setup, helping your enterprise grow and innovate alongside trusted collaborators. diff --git a/releases/2024-10-11-run-anything-as-a-custom-deployment.md b/releases/2024-10-11-run-anything-as-a-custom-deployment.md deleted file mode 100644 index 4bc36279..00000000 --- a/releases/2024-10-11-run-anything-as-a-custom-deployment.md +++ /dev/null @@ -1,9 +0,0 @@ -# Run anything as a custom deployment - -![Changelog Image](../static/img/releases/run-anything-as-a-custom-deployment.png) - -SettleMint is excited to announce a powerful new feature: **Run Anything with Custom Deployments**! This feature revolutionizes how users can deploy decentralized applications (dApps) on our platform, offering unprecedented flexibility and control. Whether you’re developing a fintech platform, an NFT marketplace, or a DeFi solution, Custom Deployments let you seamlessly integrate your custom-built front-end and web technologies while leveraging the robust blockchain backend that SettleMint provides. - -With **Custom Deployments**, you now have the freedom to design applications according to your specific needs. This includes using custom domains for a more professional appearance, integrating advanced functionalities, and selecting the best infrastructure for your use case. The platform allows for flexible application design, which means you can use your preferred frameworks, programming languages, and design architectures without limitations. For instance, a fintech company developing a peer-to-peer lending platform can now deploy a user-friendly interface that meets their precise user requirements, streamlining the entire deployment process. - -Moreover, this feature unlocks enhanced scalability and security for your dApps. With SettleMint’s scalable infrastructure, you can handle high traffic and performance peaks seamlessly, ensuring your application grows as your user base expands. Additionally, our secure environment ensures your deployments meet the highest security standards, making Custom Deployments perfect for businesses that need to maintain trust and reliability with their users, such as investment firms launching asset tokenization platforms or DeFi platforms managing cross-chain transfers. diff --git a/releases/2025-01-02-simplified-subgraph-deployment.md b/releases/2025-01-02-simplified-subgraph-deployment.md deleted file mode 100644 index 961f15c4..00000000 --- a/releases/2025-01-02-simplified-subgraph-deployment.md +++ /dev/null @@ -1,21 +0,0 @@ -# Simplified Subgraph Deployments - -We've significantly simplified the subgraph deployment process. Here's what's changed: - -**Previously:** - -- Required deploying a smart contract set -- Required IPFS deployment -- Middleware needed explicit connections to both smart contract set and IPFS -- Subgraphs could only be deployed to middlewares from their connected smart contract set - -**Now:** - -- Deploy middlewares independently without a smart contract set or IPFS required -- Deploy subgraphs from any smart contract set to any middleware within an application - -**Key Benefits:** - -- Simplified architecture: Reduced deployment complexity and dependencies -- Cost efficiency: Reuse graph middlewares across different smart contract sets -- Enhanced flexibility: Freedom to deploy subgraphs from any smart contract set to any middleware diff --git a/releases/2025-01-03-zeto-smart-contract-set.md b/releases/2025-01-03-zeto-smart-contract-set.md deleted file mode 100644 index 4565684b..00000000 --- a/releases/2025-01-03-zeto-smart-contract-set.md +++ /dev/null @@ -1,75 +0,0 @@ -# Zeto Smart Contract Set - -We're excited to introduce the Zeto Smart Contract Set, bringing comprehensive zero-knowledge token capabilities to the SettleMint platform. - -## Token Types - -### Fungible Tokens - -1. **Zeto_Anon** - - - Basic anonymous transfers - - Privacy-preserving transactions - - Standard fungible features - -2. **Zeto_AnonEnc** - - - Encrypted anonymous transfers - - Enhanced privacy features - - Encrypted transaction data - -3. **Zeto_AnonNullifier** - - - Anonymous with nullifiers - - Prevents double-spending - - Transaction tracking without revealing details - -4. **Zeto_AnonNullifierKyc** - - - KYC-enabled anonymous transfers - - Regulatory compliance features - - Identity verification while maintaining privacy - -5. **Zeto_AnonEncNullifier** - - - Encrypted transfers with nullifiers - - Combined encryption and tracking - - Maximum privacy with spending controls - -6. **Zeto_AnonEncNullifierKyc** - - KYC-enabled encrypted transfers - - Full suite of privacy features - - Compliant with regulatory requirements - -### Non-Fungible Tokens - -1. **Zeto_NfAnon** - - - Basic anonymous NFTs - - Private ownership - - Hidden transfer history - -2. **Zeto_NfAnonNullifier** - - NFTs with nullifiers - - Trackable unique assets - - Privacy-preserving ownership transfers - -## Zero-Knowledge DVP (Delivery vs Payment) - -- Atomic swaps between any token types -- Private order matching -- Secure settlement verification - -## Testing, Deployment & Trusted Setup - -- Fast test deployments with pre-configured environments -- Local development setup -- Production deployment helpers & MPC trusted setup guides - -## Subgraph Integration - -Pre-configured subgraph templates for all contracts - -## Open Source Zeto Deployment - -- Zeto smart contracts repository: [github.com/settlemint/solidity-zeto](https://github.com/settlemint/solidity-zeto) diff --git a/releases/2025-01-08-dev-tools.md b/releases/2025-01-08-dev-tools.md deleted file mode 100644 index bf89c157..00000000 --- a/releases/2025-01-08-dev-tools.md +++ /dev/null @@ -1,25 +0,0 @@ -# Introducing Dev Tools - -![Changelog Image](../static/img/releases/dev-tools.png) - -We've made some exciting changes to improve your development experience: - -**What's New** - -- We've introduced a new **Dev Tools** section that will host various services aimed at making the development of decentralized applications easier -- The first tool we're launching is **Code Studio** - our Integrated Development Environment (IDE) based on Visual Studio Code -- Smart contract sets are now available as the first type of Code Studio -- For more information on Dev Tools, please refer to the [Dev Tools documentation](/docs/using-platform/dev-tools/) - -**What's Changed** - -- The "Smart contract sets" service has moved into Dev Tools -- Don't worry - all the same great features of Smart contract sets are still there, just in a new home! - -**Coming Soon** - -Stay tuned for more types of Code Studios that will make building decentralized applications even easier! - ---- - -**Note**: All existing Smart contract sets functionality remains unchanged - we've just reorganized things to make room for more developer tools. diff --git a/releases/2025-01-28-sdk.md b/releases/2025-01-28-sdk.md deleted file mode 100644 index 594f8e0c..00000000 --- a/releases/2025-01-28-sdk.md +++ /dev/null @@ -1,30 +0,0 @@ -# Introducing the SettleMint SDK - - - -We're excited to announce the release of the **SettleMint SDK**, a powerful toolkit designed to streamline blockchain integration into modern applications. This comprehensive solution provides developers with everything needed to build and integrate blockchain solutions effectively. - -**Key Features** - -- **Comprehensive Integration**: Complete suite of tools for interacting with SettleMint's blockchain platform services including Smart Contracts, Smart Contract Portal Middleware, The Graph Middleware, IPFS, MinIO, and Blockchain Explorer -- **Modular Architecture**: Specialized packages that let you pick and choose the exact blockchain functionalities your application needs -- **Developer Experience**: Rich development tools with CLI capabilities and extensive documentation to accelerate your development process -- **Enterprise Ready**: Production-grade components with built-in support for Next.js, GraphQL, and other enterprise technologies -- **Type Safety**: Full TypeScript support across all packages, ensuring strong typing and modern development patterns - -The SDK simplifies blockchain development by providing pre-built components, utilities, and integrations while maintaining high standards for type safety, performance, and developer experience. Whether you're building a new blockchain application or integrating blockchain capabilities into an existing system, the SettleMint SDK provides the tools you need. - -The SDK is open source and available under the FSL Software License. To get started, visit our [SDK documentation](/docs/using-platform/dev-tools/SDK/) or explore the [SDK GitHub repository](https://github.com/settlemint/sdk). - ---- - -**Note**: This is just the beginning! We'll be continuously expanding the SDK's capabilities based on developer feedback and needs. Stay tuned for more updates and features. diff --git a/releases/2025-02-15-security-storage-updates.md b/releases/2025-02-15-security-storage-updates.md deleted file mode 100644 index b1da00da..00000000 --- a/releases/2025-02-15-security-storage-updates.md +++ /dev/null @@ -1,45 +0,0 @@ -# Enhanced Security Storage and Backend Options - -We're excited to announce expanded support for security storage solutions and backend services: - -**What's New** - -- **Enhanced Security Key Management** - - Added support for Google Secret Manager as an alternative to HashiCorp Vault - - You can now securely store private keys and sensitive data in either service - - Flexible configuration options to choose your preferred key management solution - -- **New Backend Storage Options** - - Google Cloud Storage (GCS) is now supported as a backend for Pulumi state storage - - This provides more flexibility in how you manage your infrastructure state - -- **Additional Cache Provider** - - Google Cloud Memorystore for Redis is now available as an alternative to self-hosted Redis - - Seamlessly switch between Redis implementations based on your infrastructure needs - -**Breaking Changes** - -- **Helm Values Configuration Update** - - The Pulumi state connection URL configuration has been renamed: - - Old: `deploymentEngine.state.s3connectionUrl` - - New: `deploymentEngine.state.connectionUrl` - - Action Required: Update your Helm values to use the new variable name when upgrading - -**How to Get Started** - -- Upgrade to the latest Helm chart version of our platform to enable these new features -- Update your Helm values to use the new connection URL variable name -- To use Google Secret Manager, update your security configuration in the platform settings -- For GCS backend storage, specify GCS as your Pulumi state backend in your configuration -- To utilize Google Memorystore, configure it as your cache provider in the platform settings - -**What's Changed** - -- Added new configuration options for security storage providers -- Extended backend storage capabilities -- Expanded cache provider options -- Renamed Pulumi state connection URL configuration variable - ---- - -**Note**: Existing configurations using HashiCorp Vault, default Pulumi backends, or Redis will continue to work without any changes. However, if you're using S3 for Pulumi state storage, you must update your Helm values to use the new connection URL variable name. \ No newline at end of file diff --git a/sidebars.ts b/sidebars.ts deleted file mode 100644 index a4536bfc..00000000 --- a/sidebars.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type { SidebarsConfig } from '@docusaurus/plugin-content-docs'; - -/** - * Creating a sidebar enables you to: - - create an ordered group of docs - - render a sidebar for each doc of that group - - provide next/previous navigation - - The sidebars can be generated from the filesystem, or explicitly defined here. - - Create as many sidebars as you want. - */ -const sidebars: SidebarsConfig = { - 'Developer Blog': [{ type: 'autogenerated', dirName: '.' }], - // By default, Docusaurus generates a sidebar from the docs folder structure - tutorialSidebar: [{ type: 'autogenerated', dirName: '.' }] - - // But you can create a sidebar manually - /* - tutorialSidebar: [ - 'intro', - 'hello', - { - type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], - }, - ], - */ -}; - -export default sidebars; diff --git a/smart-contract-templates.ts b/smart-contract-templates.ts deleted file mode 100644 index 07f2d410..00000000 --- a/smart-contract-templates.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { gql, GraphQLClient } from 'graphql-request'; -type SmartContractTemplate = { - id: string; - name: string; - featureflagged: boolean; -}; - -type SmartContractTemplateResult = { - config: { - smartContractSets: { - id: string; - sets: SmartContractTemplate[]; - }; - }; -}; -const GRAPHQL_ENDPOINT = 'https://console.settlemint.com/api/graphql'; - -const query = gql` - query platformConfig { - config { - smartContractSets { - id - sets { - id - name - featureflagged - __typename - } - __typename - } - __typename - } - } -`; - -async function generateMarkdownTemplates() { - const client = new GraphQLClient(GRAPHQL_ENDPOINT); - - try { - const response = await client.request(query); - - // Generate markdown for each set - const markdownStrings = response.config.smartContractSets.sets - .filter(set => !set.featureflagged) // Optional: skip feature flagged items - .map( - set => ` -- [${set.name}](https://github.com/settlemint/${set.id}) -` - ) - .join('\n'); - - console.log('Generated Markdown:'); - console.log(markdownStrings); - return markdownStrings; - } catch (error) { - console.error('Error generating markdown:', error); - throw error; - } -} - -// Call the function -generateMarkdownTemplates(); diff --git a/source.config.ts b/source.config.ts new file mode 100644 index 00000000..6a96bc11 --- /dev/null +++ b/source.config.ts @@ -0,0 +1,22 @@ +import { remarkMermaid } from '@theguild/remark-mermaid'; +import { rehypeCodeDefaultOptions, remarkAdmonition } from 'fumadocs-core/mdx-plugins'; +import { remarkInstall } from 'fumadocs-docgen'; +import { defineConfig, defineDocs } from 'fumadocs-mdx/config'; +import { transformerTwoslash } from 'fumadocs-twoslash'; + +export const docs = defineDocs({ + dir: 'content/docs', +}); + +export default defineConfig({ + mdxOptions: { + remarkPlugins: [remarkInstall, remarkAdmonition, remarkMermaid], + rehypeCodeOptions: { + themes: { + light: 'github-light', + dark: 'github-dark', + }, + transformers: [...(rehypeCodeDefaultOptions.transformers ?? []), transformerTwoslash()], + }, + }, +}); diff --git a/src/app/(docs)/[[...slug]]/page.tsx b/src/app/(docs)/[[...slug]]/page.tsx new file mode 100644 index 00000000..76471222 --- /dev/null +++ b/src/app/(docs)/[[...slug]]/page.tsx @@ -0,0 +1,59 @@ +import { metadataImage } from '@/lib/metadata'; +import { source } from '@/lib/source'; +import { Popup, PopupContent, PopupTrigger } from 'fumadocs-twoslash/ui'; +import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; +import defaultMdxComponents from 'fumadocs-ui/mdx'; +import { DocsBody, DocsDescription, DocsPage, DocsTitle } from 'fumadocs-ui/page'; +import { notFound } from 'next/navigation'; + +export default async function Page(props: { + params: Promise<{ slug?: string[] }>; +}) { + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) { + notFound(); + } + + const MDX = page.data.body; + + return ( + + {page.data.title} + {page.data.description} + + + + + ); +} + +// biome-ignore lint/suspicious/useAwait: +export async function generateStaticParams() { + return source.generateParams(); +} + +export async function generateMetadata(props: { + params: Promise<{ slug?: string[] }>; +}) { + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) { + notFound(); + } + + return metadataImage.withImage(page.slugs, { + title: page.data.title, + description: page.data.description, + metadataBase: new URL('https://console.settlemint.com/documentation'), + }); +} diff --git a/src/app/(docs)/layout.tsx b/src/app/(docs)/layout.tsx new file mode 100644 index 00000000..b86ec786 --- /dev/null +++ b/src/app/(docs)/layout.tsx @@ -0,0 +1,16 @@ +import { baseOptions } from '@/app/layout.config'; +import { source } from '@/lib/source'; +import { DocsLayout } from 'fumadocs-ui/layouts/notebook'; +import type { ReactNode } from 'react'; + +export default function Layout({ + children, +}: { + children: ReactNode; +}) { + return ( + + {children} + + ); +} diff --git a/src/app/api/search/route.ts b/src/app/api/search/route.ts new file mode 100644 index 00000000..df889626 --- /dev/null +++ b/src/app/api/search/route.ts @@ -0,0 +1,4 @@ +import { source } from '@/lib/source'; +import { createFromSource } from 'fumadocs-core/search/server'; + +export const { GET } = createFromSource(source); diff --git a/src/app/apple-touch.png b/src/app/apple-touch.png new file mode 100644 index 00000000..a3e174f7 Binary files /dev/null and b/src/app/apple-touch.png differ diff --git a/src/app/docs-og/[...slug]/route.tsx b/src/app/docs-og/[...slug]/route.tsx new file mode 100644 index 00000000..33d9cfa0 --- /dev/null +++ b/src/app/docs-og/[...slug]/route.tsx @@ -0,0 +1,16 @@ +import { metadataImage } from '@/lib/metadata'; +import { generateOGImage } from 'fumadocs-ui/og'; + +export const GET = metadataImage.createAPI((page) => { + return generateOGImage({ + title: page.data.title, + description: page.data.description, + site: 'SettleMint', + primaryColor: '#292929', + primaryTextColor: '#e5e7eb', + }); +}); + +export function generateStaticParams() { + return metadataImage.generateParams(); +} diff --git a/static/img/favicon.ico b/src/app/favicon.ico similarity index 100% rename from static/img/favicon.ico rename to src/app/favicon.ico diff --git a/src/app/global.css b/src/app/global.css new file mode 100644 index 00000000..db468ae3 --- /dev/null +++ b/src/app/global.css @@ -0,0 +1,226 @@ +@import "tailwindcss"; +@import "fumadocs-ui/css/preset.css"; +@import "fumadocs-twoslash/twoslash.css"; + +@plugin 'tailwindcss-animate'; +@custom-variant dark (&:is(.dark *)); + +@source '../../node_modules/fumadocs-ui/dist/**/*.js'; + +:root { + --button-hover-accent: 221 83% 95%; + --background: 222.86 87.5% 96.86%; + --foreground: 240 10% 3.9%; + --card: 0 0% 100%; + --card-foreground: 240 10% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 240 10% 3.9%; + --primary: 221 84.5% 56.9%; + --primary-foreground: 0 0% 98%; + --secondary: 240 4.8% 95.9%; + --secondary-foreground: 240 5.9% 10%; + --muted: 240 4.8% 95.9%; + --muted-foreground: 240 3.8% 46.1%; + --accent: 220 77% 57%; + --accent-foreground: 240 4.8% 95.9%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --warning: 27 87% 67%; + --warning-foreground: 0 0% 98%; + --success: 173 58% 39%; + --success-foreground: 0 0% 98%; + --border: 240 5.9% 90%; + --input: 0 0% 80%; + --ring: 221.2 83.2% 53.3%; + --radius: 0.5rem; + --chart-1: 12 76% 61%; + --chart-2: 173 58% 39%; + --chart-3: 197 37% 24%; + --chart-4: 43 74% 66%; + --chart-5: 27 87% 67%; + --sidebar-background: 220.71 87.5% 93.73%; + --sidebar-foreground: 240 5.3% 26.1%; + --sidebar-primary: 240 5.9% 10%; + --sidebar-primary-foreground: 0 0% 98%; + --sidebar-accent: 240 4.8% 95.9%; + --sidebar-accent-foreground: 240 5.9% 10%; + --sidebar-border: 220 13% 91%; + --sidebar-ring: 217.2 91.2% 59.8%; + --theme-accent-background: 221 83% 95%; + --theme-accent-foreground: 221 85% 57%; +} + +.dark { + --background: 0 0% 16%; + --foreground: 0 0% 98%; + --card: 0 0% 22%; + --card-foreground: 0 0% 98%; + --popover: 0 0% 22%; + --popover-foreground: 0 0% 98%; + --primary: 219 71% 41%; + --primary-foreground: 240 5.9% 10%; + --secondary: 240 3.7% 15.9%; + --secondary-foreground: 0 0% 98%; + --muted: 240 3.7% 15.9%; + --muted-foreground: 240 5% 64.9%; + --accent: 221 84.5% 56.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --warning: 30 80% 55%; + --warning-foreground: 0 0% 98%; + --success: 160 60% 45%; + --success-foreground: 0 0% 98%; + --border: 240 3.7% 25.9%; + --input: 0 0% 30%; + --ring: 224.3 76.3% 48%; + --chart-1: 220 70% 50%; + --chart-2: 160 60% 45%; + --chart-3: 30 80% 55%; + --chart-4: 280 65% 60%; + --chart-5: 340 75% 55%; + --sidebar-background: 0 0% 11%; + --sidebar-foreground: 240 4.8% 95.9%; + --sidebar-primary: 224.3 76.3% 48%; + --sidebar-primary-foreground: 0 0% 100%; + --sidebar-accent: 240 3.7% 15.9%; + --sidebar-accent-foreground: 240 4.8% 95.9%; + --sidebar-border: 240 3.7% 15.9%; + --sidebar-ring: 217.2 91.2% 59.8%; + --theme-accent-background: 240 3.7% 15.9%; + --theme-accent-foreground: 221 85% 57%; + --theme-sidebar-accent: 0 0% 16%; +} + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} + +@theme { + --color-fd-muted: hsl(var(--muted)); + --color-fd-popover: hsl(var(--popover)); + --color-fd-popover-foreground: hsl(var(--popover-foreground)); + --color-fd-card-foreground: hsl(var(--card-foreground)); + --color-fd-border: hsl(var(--border)); + --color-fd-primary-foreground: hsl(var(--primary-foreground)); + --color-fd-secondary-foreground: hsl(var(--secondary-foreground)); + --color-fd-accent: hsl(var(--accent)); + --color-fd-ring: hsl(var(--ring)); + --color-fd-background: hsl(var(--background)); + --color-fd-card: hsl(var(--card)); + --color-fd-foreground: hsl(var(--foreground)); + --color-fd-muted-foreground: hsl(var(--muted-foreground)); + --color-fd-secondary: hsl(var(--secondary)); + --color-fd-accent-foreground: hsl(var(--accent-foreground)); + --color-fd-primary: hsl(var(--primary)); + --bg-nd-sidebar: hsl(var(--sidebar-background)); +} + +.dark { + --color-fd-ring: hsl(var(--ring)); + --color-fd-primary: hsl(var(--primary)); + --color-fd-secondary-foreground: hsl(var(--secondary-foreground)); + --color-fd-card-foreground: hsl(var(--card-foreground)); + --color-fd-background: hsl(var(--background)); + --color-fd-foreground: hsl(var(--foreground)); + --color-fd-popover: hsl(var(--popover)); + --color-fd-popover-foreground: hsl(var(--popover-foreground)); + --color-fd-primary-foreground: hsl(var(--primary-foreground)); + --color-fd-card: hsl(var(--card)); + --color-fd-muted: hsl(var(--muted)); + --color-fd-border: hsl(var(--border)); + --color-fd-accent: hsl(var(--accent)); + --color-fd-secondary: hsl(var(--secondary)); + --color-fd-accent-foreground: hsl(var(--accent-foreground)); + --color-fd-muted-foreground: hsl(var(--muted-foreground)); +} + +.prose { + --tw-prose-body: color-mix(in oklab, var(--color-fd-foreground) 85%, transparent); + --tw-prose-headings: color-mix(in oklab, var(--color-fd-foreground) 85%, transparent); + --tw-prose-links: var(--color-fd-primary); + --tw-prose-code: var(--color-fd-primary); +} + +.prose :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border: none; + background-color: color-mix(in oklab, var(--color-fd-primary) 10%, transparent); +} + +#nd-sidebar { + background-color: hsl(var(--sidebar-background)); +} + +#nd-page { + background-color: hsl(var(--background)); + @apply rounded-t-lg; +} + +#nd-sidebar > div { + border-color: transparent; +} + +#nd-subnav { + background-color: hsl(var(--sidebar-background)); +} + +#nd-toc { + background-color: hsl(var(--sidebar-background)); +} + +#nd-subnav > div { + border-color: transparent; +} + +button[data-search-full] { + background-color: var(--color-fd-background); +} + +.bg-fd-card { + background-color: hsl(var(--card)); + border: 0; +} + +.dark a.text-fd-primary { + color: hsl(var(--sidebar-primary-foreground)); +} + +.dark a.text-fd-primary:hover { + color: hsl(var(--sidebar-primary)); +} diff --git a/src/app/icon.svg b/src/app/icon.svg new file mode 100644 index 00000000..958e0238 --- /dev/null +++ b/src/app/icon.svg @@ -0,0 +1,666 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/layout.config.tsx b/src/app/layout.config.tsx new file mode 100644 index 00000000..0cf976b9 --- /dev/null +++ b/src/app/layout.config.tsx @@ -0,0 +1,42 @@ +import { Logo } from '@/components/logo/logo'; +import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared'; + +/** + * Shared layout configurations + * + * you can customise layouts individually from: + * Home Layout: app/(home)/layout.tsx + * Docs Layout: app/docs/layout.tsx + */ +export const baseOptions: BaseLayoutProps = { + nav: { + title: , + }, + links: [ + { + text: 'Home', + url: 'https://settlemint.com', + active: 'nested-url', + }, + { + text: 'Platform', + url: 'https://console.settlemint.com', + active: 'nested-url', + }, + { + text: 'SDK', + url: 'https://gitbub.com/settlemint/sdk', + active: 'nested-url', + }, + { + text: 'Documentation', + url: '/', + active: 'nested-url', + }, + { + text: 'llms.txt', + url: '/llms.txt', + active: 'nested-url', + }, + ], +}; diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 00000000..1a5ea67d --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,30 @@ +import { GoogleAnalytics } from '@next/third-parties/google'; +import { RootProvider } from 'fumadocs-ui/provider'; +import type { Viewport } from 'next'; +import { Figtree } from 'next/font/google'; +import type { ReactNode } from 'react'; +import './global.css'; + +const figtree = Figtree({ + subsets: ['latin'], +}); + +export const viewport: Viewport = { + width: 'device-width', + initialScale: 1, + themeColor: [ + { media: '(prefers-color-scheme: light)', color: 'white' }, + { media: '(prefers-color-scheme: dark)', color: 'black' }, + ], +}; + +export default function Layout({ children }: { children: ReactNode }) { + return ( + + + {children} + + + + ); +} diff --git a/src/app/llms.txt/route.ts b/src/app/llms.txt/route.ts new file mode 100644 index 00000000..16177f19 --- /dev/null +++ b/src/app/llms.txt/route.ts @@ -0,0 +1,49 @@ +import fg from 'fast-glob'; +import { remarkAdmonition } from 'fumadocs-core/mdx-plugins'; +import { remarkInstall } from 'fumadocs-docgen'; +import { remarkInclude } from 'fumadocs-mdx/config'; +import matter from 'gray-matter'; +import * as fs from 'node:fs/promises'; +import { remark } from 'remark'; +import remarkGfm from 'remark-gfm'; +import remarkMdx from 'remark-mdx'; +import remarkStringify from 'remark-stringify'; + +export const revalidate = false; + +export async function GET() { + // all scanned content + const files = await fg(['./content/docs/**/*.mdx']); + + const scan = files.map(async (file) => { + const fileContent = await fs.readFile(file); + const { content, data } = matter(fileContent.toString()); + + const processed = await processContent(content); + return `file: ${file} +meta: ${JSON.stringify(data, null, 2)} + +${processed}`; + }); + + const scanned = await Promise.all(scan); + + return new Response(scanned.join('\n\n')); +} + +async function processContent(content: string): Promise { + const file = await remark() + .use(remarkMdx) + // https://fumadocs.vercel.app/docs/mdx/include + .use(remarkInclude) + // gfm styles + .use(remarkGfm) + // your remark plugins + .use(remarkInstall, { persist: { id: 'package-manager' } }) + .use(remarkAdmonition) + // to string + .use(remarkStringify) + .process(content); + + return String(file); +} diff --git a/src/app/robots.ts b/src/app/robots.ts new file mode 100644 index 00000000..79cdaba1 --- /dev/null +++ b/src/app/robots.ts @@ -0,0 +1,11 @@ +import type { MetadataRoute } from 'next'; + +export default function robots(): MetadataRoute.Robots { + return { + rules: { + userAgent: '*', + allow: '/', + }, + sitemap: 'https://console.settlemint.com/documentation/sitemap.xml', + }; +} diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts new file mode 100644 index 00000000..ea018afc --- /dev/null +++ b/src/app/sitemap.ts @@ -0,0 +1,18 @@ +import { source } from '@/lib/source'; +import type { MetadataRoute } from 'next'; +import { join } from 'node:path'; + +export default async function sitemap(): Promise { + const url = (path: string): string => + new URL(join('documentation', path), 'https://console.settlemint.com').toString(); + + return [ + ...source.getPages().map((page) => { + return { + url: url(page.url), + changeFrequency: 'weekly', + priority: 1, + } as MetadataRoute.Sitemap[number]; + }), + ]; +} diff --git a/src/components/BlogArticleComponent.tsx b/src/components/BlogArticleComponent.tsx deleted file mode 100644 index a35e1717..00000000 --- a/src/components/BlogArticleComponent.tsx +++ /dev/null @@ -1,27 +0,0 @@ -export function ArticleCard({ - icon, - title, - description, - articleLink -}: { - icon?: string; - title: string; - description: string; - articleLink: string; -}) { - return ( - -
-
-
- {title} -

{title}

-
-
-

{description}

-
-
-
-
- ); -} diff --git a/src/components/CardComponents.tsx b/src/components/CardComponents.tsx deleted file mode 100644 index afab23dc..00000000 --- a/src/components/CardComponents.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import Link from '@docusaurus/Link'; -import clsx from 'clsx'; -import { PropsWithChildren, ReactNode } from 'react'; - -export function CardSection({ - id, - title, - children, - description, - className, - hasSubSections = false, - HeadingTag = 'h3' -}: { - id?: string; - title: string; - children: ReactNode; - description?: ReactNode; - hasSubSections?: boolean; - HeadingTag?: React.ElementType; - className?: string; -}) { - return ( -
- {title && {title}} - {description &&

{description}

} -
{children}
-
- ); -} - -export function Card({ - id, - icon, - title, - description, - to, - tag -}: PropsWithChildren<{ - id?: string; - icon?: ReactNode; - title: string; - description?: string; - to: string; - tag?: { - label: string; - color: string; - description: string; - }; -}>) { - return ( -
- - {icon &&
{icon}
} -
-
- {title} -
- {description &&
{description}
} -
- {tag && ( -
- - {tag.label} - -
- )} - -
- ); -} diff --git a/src/components/ContentCard.module.css b/src/components/ContentCard.module.css deleted file mode 100644 index f57a6666..00000000 --- a/src/components/ContentCard.module.css +++ /dev/null @@ -1,76 +0,0 @@ -.riContainer { - border: 1px solid #346eee; /* Add border */ - border-radius: var(--ifm-global-radius); - display: flex; /* Change to flex */ - flex-direction: column; /* Stack children vertically */ - align-items: center; /* Center children horizontally */ - justify-content: center; /* Center children vertically */ - padding: 0.75rem; - margin-bottom: 1rem; - position: relative; /* Add this line */ - transition: box-shadow 0.3s ease; /* Add transition for smooth hover effect */ - width: 400px; - height: 200px; -} - -.riContainer:hover { - box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.15); /* Add drop shadow on hover */ -} - -.riDescriptionShort { - display: flex; -} - -a:hover { - text-decoration: none; /* Remove underline on hover */ -} - -.riDetail { - display: block; -} - -.riIcon { - color: var(--ifm-color-primary); - font-size: 2rem; - line-height: 2rem; - margin: 0.25rem 0.75rem auto 0; -} - -.riDescription { - font-size: 0.9 rem; - color: var(--ifm-font-color-secondary); - text-align: center; /* Center the text */ - word-wrap: break-word; - margin-top: 5px; -} - -.riTitle { - padding-top: 5px; /* Adjust this value as needed */ - margin-top: 5px; -} - -.riTitle { - font-weight: 600; - font-size: 1.2rem; - text-align: center; /* Center the text */ -} - -.riImage { - width: 100px; /* Adjust the size */ - height: 100px; /* Adjust the size */ - border-radius: var(--ifm-global-radius); - margin-bottom: 0px; /* Add some space below the image */ - margin-right: 0px; /* Reduce the right margin */ - margin-left: 5px; /* Reduce the left margin */ -} -/* CSS */ - -@media (min-width: 500px) and (max-width: 1024px) { - .riTitle { - font-size: 1.5rem; /* Adjust the font size on tablet screens */ - } - - .riDescription { - font-size: 1rem; /* Adjust the font size on tablet screens */ - } -} diff --git a/src/components/ContentCard.tsx b/src/components/ContentCard.tsx deleted file mode 100644 index 0426c4b1..00000000 --- a/src/components/ContentCard.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import clsx from 'clsx'; -import { Children, PropsWithChildren, useState } from 'react'; -import styles from './ContentCard.module.css'; - -export interface ContentCardProps { - page: string; - title: string; - description: string; - image?: string; -} - -const ContentCard = (props: PropsWithChildren) => { - const [displayLong, setDisplayLong] = useState(false); - - return ( - -
-
- {props.image && ( - {props.title} - )} - - -
-
-
{props.title}
-
- {props.description} - {Children.count(props.children) > 0 && ( - setDisplayLong(!displayLong)} - /> - )} -
-
-
-
- ); -}; - -export default ContentCard; diff --git a/src/components/HomepageFeatures.module.css b/src/components/HomepageFeatures.module.css deleted file mode 100644 index b248eb2e..00000000 --- a/src/components/HomepageFeatures.module.css +++ /dev/null @@ -1,11 +0,0 @@ -.features { - display: flex; - align-items: center; - padding: 2rem 0; - width: 100%; -} - -.featureSvg { - height: 200px; - width: 200px; -} diff --git a/src/components/HomepageFeatures.tsx b/src/components/HomepageFeatures.tsx deleted file mode 100644 index 038d810c..00000000 --- a/src/components/HomepageFeatures.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import clsx from 'clsx'; -import type { JSX, ReactNode } from 'react'; -import styles from './HomepageFeatures.module.css'; - -type FeatureItem = { - title: string; - image: string; - description: ReactNode; -}; - -const FeatureList: FeatureItem[] = [ - { - title: 'Quickstart', - image: '/img/undraw_docusaurus_mountain.svg', - description: ( - <> - Get your blockchain network, nodes and smart contract sets up and - running in no time.{' '} - - Follow our quickstart - - - ) - }, - { - title: 'Feature overview', - image: '/img/undraw_docusaurus_tree.svg', - description: ( - <> - View a summary of SettleMint features and ready-to-use tools, and how to - use them.{' '} - - Discover features - - - ) - } -]; - -function Feature({ title, image, description }: FeatureItem) { - return ( -
-
-

{title}

-

{description}

-
-
- ); -} - -export default function HomepageFeatures(): JSX.Element { - return ( -
-
-
- {FeatureList.map((props, idx) => ( - - ))} -
-
-
- ); -} diff --git a/src/components/logo/logo.tsx b/src/components/logo/logo.tsx new file mode 100644 index 00000000..7390ef70 --- /dev/null +++ b/src/components/logo/logo.tsx @@ -0,0 +1,52 @@ +'use client'; + +import { Skeleton } from '@/components/ui/skeleton'; +import { cn } from '@/lib/utils'; +import { useTheme } from 'next-themes'; +import Image from 'next/image'; +import type { PropsWithChildren } from 'react'; +import { useEffect, useState } from 'react'; +import LogoHorizontalDark from './logos/settlemint-logo-h-dm.svg'; +import LogoHorizontalLight from './logos/settlemint-logo-h-lm.svg'; +import LogoIconDark from './logos/settlemint-logo-i-dm.svg'; +import LogoIconLight from './logos/settlemint-logo-i-lm.svg'; +import LogoVerticalDark from './logos/settlemint-logo-v-dm.svg'; +import LogoVerticalLight from './logos/settlemint-logo-v-lm.svg'; + +interface LogoProps { + className?: string; + variant?: 'horizontal' | 'vertical' | 'icon'; +} + +export function Logo({ className = '', variant = 'horizontal' }: PropsWithChildren) { + const { resolvedTheme } = useTheme(); + const [mounted, setMounted] = useState(false); + + useEffect(() => { + setMounted(true); + }, []); + + if (!mounted) { + return ; + } + + const getLogoSrc = () => { + const isDark = resolvedTheme === 'dark'; + switch (variant) { + case 'horizontal': + return isDark ? LogoHorizontalDark : LogoHorizontalLight; + case 'vertical': + return isDark ? LogoVerticalDark : LogoVerticalLight; + case 'icon': + return isDark ? LogoIconDark : LogoIconLight; + default: + return LogoHorizontalLight; + } + }; + + return ( +
+ SettleMint +
+ ); +} diff --git a/src/components/logo/logos/settlemint-background-dm.svg b/src/components/logo/logos/settlemint-background-dm.svg new file mode 100644 index 00000000..c4f661dd --- /dev/null +++ b/src/components/logo/logos/settlemint-background-dm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/logo/logos/settlemint-background-lm.svg b/src/components/logo/logos/settlemint-background-lm.svg new file mode 100644 index 00000000..1a9f6aea --- /dev/null +++ b/src/components/logo/logos/settlemint-background-lm.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/logo/logos/settlemint-logo-h-dm.svg b/src/components/logo/logos/settlemint-logo-h-dm.svg new file mode 100644 index 00000000..bcdd15ac --- /dev/null +++ b/src/components/logo/logos/settlemint-logo-h-dm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/logo/logos/settlemint-logo-h-lm.svg b/src/components/logo/logos/settlemint-logo-h-lm.svg new file mode 100644 index 00000000..cac29ac1 --- /dev/null +++ b/src/components/logo/logos/settlemint-logo-h-lm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/logo/logos/settlemint-logo-i-dm.svg b/src/components/logo/logos/settlemint-logo-i-dm.svg new file mode 100644 index 00000000..958e0238 --- /dev/null +++ b/src/components/logo/logos/settlemint-logo-i-dm.svg @@ -0,0 +1,666 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/logo/logos/settlemint-logo-i-lm.svg b/src/components/logo/logos/settlemint-logo-i-lm.svg new file mode 100644 index 00000000..958e0238 --- /dev/null +++ b/src/components/logo/logos/settlemint-logo-i-lm.svg @@ -0,0 +1,666 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/logo/logos/settlemint-logo-v-dm.svg b/src/components/logo/logos/settlemint-logo-v-dm.svg new file mode 100644 index 00000000..32bdc798 --- /dev/null +++ b/src/components/logo/logos/settlemint-logo-v-dm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/logo/logos/settlemint-logo-v-lm.svg b/src/components/logo/logos/settlemint-logo-v-lm.svg new file mode 100644 index 00000000..25bc1b84 --- /dev/null +++ b/src/components/logo/logos/settlemint-logo-v-lm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/ui/skeleton.tsx b/src/components/ui/skeleton.tsx new file mode 100644 index 00000000..6915144a --- /dev/null +++ b/src/components/ui/skeleton.tsx @@ -0,0 +1,13 @@ +import { cn } from "@/lib/utils" + +function Skeleton({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { Skeleton } diff --git a/src/css/custom.css b/src/css/custom.css deleted file mode 100644 index f08ead12..00000000 --- a/src/css/custom.css +++ /dev/null @@ -1,330 +0,0 @@ -/** - * Any CSS included here will be global. The classic template - * bundles Infima by default. Infima is a CSS framework designed to - * work well for content-centric websites. - */ - -/* You can override the default Infima variables here. */ - -@import url('https://fonts.googleapis.com/css2?family=Figtree&display=swap'); - -@tailwind base; -@tailwind components; -@tailwind utilities; - -:root { - --ifm-color-primary: #4d80f0; - --ifm-color-primary-dark: rgb(33, 175, 144); - --ifm-color-primary-darker: rgb(31, 165, 136); - --ifm-color-primary-darkest: rgb(26, 136, 112); - --ifm-color-primary-light: rgb(70, 203, 174); - --ifm-color-primary-lighter: rgb(102, 212, 189); - --ifm-color-primary-lightest: rgb(146, 224, 208); - --docs-color-text-400: 71 71 71; - - --ifm-code-font-size: 95%; -} -html[data-theme='dark'] { - --docs-color-text: #00000; -} - -.docusaurus-highlight-code-line { - background-color: rgba(0, 0, 0, 0.1); - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); -} - -html[data-theme='dark'] .docusaurus-highlight-code-line { - background-color: rgba(0, 0, 0, 0.3); -} - -[data-theme='dark'] g { - color: #ffff; -} - -[data-theme='light'] body { - background-color: #ffff; -} - -main[data-theme='dark'] { - color: white; -} - -[data-theme='dark'] h1, -[data-theme='dark'] h2, -[data-theme='dark'] h3, -[data-theme='dark'] p { - color: white; -} - -[data-theme='light'] h1, -[data-theme='light'] h2, -[data-theme='light'] h3, -[data-theme='light'] p { - color: #1c1c1c; -} - -nav.navbar { - height: 80px; - padding: 1rem; - font-family: 'Figtree', sans-serif; -} - -[data-theme='dark'] button { - color: #ffff; -} - -body { - font-family: 'Figtree', sans-serif; -} -h1, -h2, -h3 { - font-family: 'Figtree', sans-serif; -} - -h1 { - font-size: 62px; -} - -.footer { - background-color: #1c1c1c; - font-size: 0.9375rem; - font-family: 'Figtree', sans-serif; -} - -.main { - padding: 0px; -} - -@media (max-width: 768px) { - .navbar__logo { - width: 200px; - height: 20px; - } -} - -.homepage section, -.homepage section * { - @apply box-border; - text-align: center; -} - -.section-description { - color: var(--docs-color-text-100); - margin: 0rem 0 1.25rem 0; - margin-top: -0.5rem; -} - -.has-sub-sections > .section-content .section-description { - font-size: 14px; -} - -.homepage-card-container { - display: flex !important; - flex-wrap: wrap !important; - justify-content: center !important; -} - -.homepage-card { - flex: 0 0 calc(50% - 10px); /* Adjust the width here */ - margin-bottom: 2%; - - align-items: flex-start; - gap: 10px; - padding: 0.75rem; - text-decoration: none; - color: #346eee; - background-color: #ffffff !important; - --ifm-link-hover-decoration: none; - --ifm-link-hover-color: inherit; - cursor: pointer; - border-width: 1px; - transition-property: background-color, color; - border: 1px solid #346eee; - border-radius: 8px; - position: relative; - overflow: hidden; - margin-bottom: 10px; - text-align: center; -} - -@media (max-width: 768px) { - .homepage-card { - width: 100%; - } -} - -[data-theme='dark'] .homepage-card { - flex: 0 0 calc(50% - 10px); /* Adjust the width here */ - margin-bottom: 2%; - align-items: flex-start; - gap: 10px; - padding: 0.75rem; - text-decoration: none; - color: #ffff; - background-color: #346eee !important; - --ifm-link-hover-decoration: none; - --ifm-link-hover-color: inherit; - cursor: pointer; - border-width: 1px; - transition-property: background-color, color; - border: 1px solid #346eee; - border-radius: 8px; - position: relative; - overflow: hidden; - margin-bottom: 10px; - text-align: center; -} - -.homepage-card:hover { - opacity: 80%; -} - -.card-content { - display: flex; - flex-direction: column; - gap: 4px; -} - -.card-content .title { - font-size: 16px; - letter-spacing: -0.5px; - font-weight: 600; -} - -.card-content .description { - font-size: 14px; - color: var(--docs-color-text-100); - line-height: 1.5; -} - -.homepage-card .tag { - font-size: 12px; - padding: 0.25rem 0.5rem; - border-radius: 4px; - font-weight: 500; - position: absolute; -} - -section-content { - display: flex; - flex-wrap: wrap; - justify-content: space-between; -} - -.has-sub-sections > h3 { - margin-bottom: 1.5rem; -} - -.has-sub-sections > .section-content { - grid-template-columns: repeat(1, minmax(0, 1fr)); -} -.has-sub-sections > .section-content > .homepage-section { - margin-bottom: 1rem; - grid-template-columns: repeat(1, minmax(0, 1fr)); -} - -.blog-article-container { - display: flex; - flex-wrap: wrap; - justify-content: center; -} - -.blog-article-card { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding: 1rem; - background-color: #ffff; - border: 1px solid #346eee; - border-radius: 8px; - box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1); - transition: box-shadow 0.2s ease-in-out; - width: 50%; - max-width: 500px; - margin-bottom: 10px; -} - -[data-theme='dark'] .blog-article-card { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding: 1rem; - background-color: #346eee; - border: 1px solid #ffff; - - border-radius: 8px; - box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1); - transition: box-shadow 0.2s ease-in-out; - width: calc(50% - 5px); - margin-bottom: 10px; -} - -@media (max-width: 768px) { - .blog-article-card { - width: 100%; - } -} - -.blog-article-card:hover { - box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); -} - -.blog-article-card-header { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1rem; -} - -.blog-article-card-header img { - width: 100%; - height: 100%; -} - -.blog-article-card-header h2 { - font-size: 1.3rem; - font-weight: bold; - text-align: center; - margin: 0; -} - -.blog-article-card-body { - margin-bottom: 1rem; -} - -.blog-article-card-body p { - font-size: 1rem; - margin: 0; - text-align: center; -} - -.blog-article-card-footer { - display: flex; - justify-content: space-between; - width: 100%; -} - -.blog-article-card-footer a { - color: #346eee; - text-decoration: none; - font-size: 1rem; - font-weight: bold; - transition: color 0.2s ease-in-out; -} - -[data-theme='dark'] .blog-article-card-footer a { - color: #000000; - text-decoration: none; - font-size: 1rem; - font-weight: bold; - transition: color 0.2s ease-in-out; -} - -.blog-article-card-footer a:hover { - color: #000000; -} diff --git a/src/lib/metadata.ts b/src/lib/metadata.ts new file mode 100644 index 00000000..3c6612b7 --- /dev/null +++ b/src/lib/metadata.ts @@ -0,0 +1,7 @@ +import { createMetadataImage } from 'fumadocs-core/server'; +import { source } from './source'; + +export const metadataImage = createMetadataImage({ + imageRoute: '/docs-og', + source, +}); diff --git a/src/lib/source.ts b/src/lib/source.ts new file mode 100644 index 00000000..1d49d230 --- /dev/null +++ b/src/lib/source.ts @@ -0,0 +1,19 @@ +import { docs } from '@/.source'; +import { loader } from 'fumadocs-core/source'; +import { icons } from 'lucide-react'; +import { createElement } from 'react'; + +export const source = loader({ + baseUrl: '/', + source: docs.toFumadocsSource(), + icon(icon) { + if (!icon) { + // You may set a default icon + return; + } + + if (icon in icons) { + return createElement(icons[icon as keyof typeof icons]); + } + }, +}); diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 00000000..bd0c391d --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/src/pages/index.module.css b/src/pages/index.module.css deleted file mode 100644 index 18848b10..00000000 --- a/src/pages/index.module.css +++ /dev/null @@ -1,110 +0,0 @@ -/** - * CSS files with the .module.css suffix will be treated as CSS modules - * and scoped locally. - */ - -@import url('https://fonts.googleapis.com/css2?family=Figtree&display=swap'); - -.heroBanner { - padding: 4rem 0; - text-align: center; - position: relative; - overflow: hidden; - background-image: url(../../static/img/hero-background/Gradient-Banner.png); - background-repeat: no-repeat; - background-size: cover; - font-family: 'Figtree', sans-serif; -} - -[data-theme='dark'] .heroBanner { - color: #ffff; -} - -[data-theme='light'] .heroBanner { - color: #1c1c1c; -} - -.title { - font-size: 62px; - font-weight: 300px; -} - -.subtitle { - font-size: 20px; - font-weight: 300px; - color: #ffff !important; -} - -@media screen and (max-width: 966px) { - .heroBanner { - padding: 2rem; - } -} - -.buttons { - display: flex; - align-items: center; - justify-content: center; -} - -[data-theme='dark'] .mainButton { - background-color: #346eee; -} - -.mainButton { - background-color: #ffffff; - color: #346eee; - border: solid 0.5px #346eee; - padding: 0.8rem 1.25rem; - border-radius: 6px; - transition: all 0.3s ease-in-out; - font-family: 'Figtree', sans-serif; - font-weight: 700; - font-size: 0.9375rem; - text-transform: uppercase; - line-height: 1.5; - text-align: center; - vertical-align: middle; - margin: 10px; -} - -.mainButton:hover { - opacity: 0.8; -} - -.secondaryButton { - background-color: transparent; - padding: 0.8rem 1.25rem; - border-radius: 6px; - transition: all 0.3s ease-in-out; - font-family: 'Figtree', sans-serif; - font-size: 0.9375rem; - font-weight: 700; - text-transform: uppercase; - line-height: 1.5; - text-align: center; - vertical-align: middle; -} - -[data-theme='dark'] .secondaryButton { - color: #ffffff; - border: 1px solid #ffffff; -} - -[data-theme='light'] .secondaryButton { - color: #1c1c1c; - border: 1px solid #1c1c1c; -} - -.secondaryButton:hover { - opacity: 0.8; -} - -@media (max-width: 768px) { - .mainButton, - .secondaryButton { - display: block; - margin: 0 auto; - margin-top: 1rem; - } -} diff --git a/src/pages/index.tsx b/src/pages/index.tsx deleted file mode 100644 index caed0ad3..00000000 --- a/src/pages/index.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import Head from '@docusaurus/Head'; -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import Navigation from '@site/theme'; -import Layout from '@theme/Layout'; -import styles from './index.module.css'; - -function HomepageHeader() { - const { siteConfig } = useDocusaurusContext(); - return ( -
-
-
{siteConfig.title}
-

{siteConfig.tagline}

- - - - - - -
-
- ); -} - -export default function Home() { - const { siteConfig } = useDocusaurusContext(); - return ( - - - {siteConfig.title} - - -
- - - ); -} diff --git a/src/plugins/docusaurus-llms-plugin/index.ts b/src/plugins/docusaurus-llms-plugin/index.ts deleted file mode 100644 index 841327d4..00000000 --- a/src/plugins/docusaurus-llms-plugin/index.ts +++ /dev/null @@ -1,228 +0,0 @@ -import type { LoadContext, Plugin } from '@docusaurus/types'; -import fs from 'fs'; -import path from 'path'; - -interface PluginOptions { - // Add any plugin-specific options here -} - -interface ContentItem { - title: string; - description?: string; - permalink: string; - sectionNesting: number; -} - -interface DocusaurusPlugin { - loadVersions: () => Promise; - loadDocs: (version: string) => Promise>; - loadBlog: () => Promise>; -} - -// Helper function to recursively get all markdown files -function getMarkdownFiles(dir: string): string[] { - const files: string[] = []; - const items = fs.readdirSync(dir, { withFileTypes: true }); - - for (const item of items) { - const fullPath = path.join(dir, item.name); - if (item.isDirectory()) { - files.push(...getMarkdownFiles(fullPath)); - } else if (item.name.endsWith('.md') || item.name.endsWith('.mdx')) { - files.push(fullPath); - } - } - - return files; -} - -// Changed to module.exports for Docusaurus plugin compatibility -module.exports = function ( - context: LoadContext, - options: PluginOptions -): Plugin { - return { - name: 'docusaurus-llms-plugin', - - async loadContent(): Promise { - console.log('Loading content...'); - const items: ContentItem[] = []; - - try { - // Load docs - const docsRouteBasePath = 'docs'; - const docsDir = path.join(context.siteDir, docsRouteBasePath); - - if (fs.existsSync(docsDir)) { - const docFiles = getMarkdownFiles(docsDir); - console.log('Found doc files:', docFiles.length); - - for (const file of docFiles) { - const content = fs.readFileSync(file, 'utf8'); - const relativePath = path.relative(docsDir, file); - const fileNameMatch = file.match(/([^/]+)\.mdx?$/); - const fileName = fileNameMatch ? fileNameMatch[1] : ''; - - const matter = require('gray-matter'); - const { data: frontmatter, content: markdownContent } = matter(content); - - let title = frontmatter.title; - if (!title) { - const headerMatch = markdownContent.match(/^#\s+(.+)$/m); - title = headerMatch ? headerMatch[1].trim() : fileName; - } - - items.push({ - title, - description: frontmatter.description || '', - permalink: `/${docsRouteBasePath}/${relativePath.replace(/\.mdx?$/, '')}/`, - sectionNesting: (relativePath.match(/\//g) || []).length - }); - } - } - - // Load blog posts - const blogDir = path.join(context.siteDir, 'blog'); - if (fs.existsSync(blogDir)) { - const blogFiles = getMarkdownFiles(blogDir); - console.log('Found blog files:', blogFiles.length); - - for (const file of blogFiles) { - const content = fs.readFileSync(file, 'utf8'); - const relativePath = path.relative(blogDir, file); - const fileNameMatch = file.match(/([^/]+)\.mdx?$/); - const fileName = fileNameMatch ? fileNameMatch[1] : ''; - - const matter = require('gray-matter'); - const { data: frontmatter, content: markdownContent } = matter(content); - - let title = frontmatter.title; - if (!title) { - const headerMatch = markdownContent.match(/^#\s+(.+)$/m); - title = headerMatch ? headerMatch[1].trim() : fileName; - } - - items.push({ - title, - description: frontmatter.description || '', - permalink: `/blog/${relativePath.replace(/\.mdx?$/, '')}/`, - sectionNesting: 0 - }); - } - } - - // Load releases - const releasesDir = path.join(context.siteDir, 'releases'); - if (fs.existsSync(releasesDir)) { - const releaseFiles = getMarkdownFiles(releasesDir); - console.log('Found release files:', releaseFiles.length); - - for (const file of releaseFiles) { - const content = fs.readFileSync(file, 'utf8'); - const relativePath = path.relative(releasesDir, file); - const fileNameMatch = file.match(/([^/]+)\.mdx?$/); - const fileName = fileNameMatch ? fileNameMatch[1] : ''; - - const matter = require('gray-matter'); - const { data: frontmatter, content: markdownContent } = matter(content); - - let title = frontmatter.title; - if (!title) { - const headerMatch = markdownContent.match(/^#\s+(.+)$/m); - title = headerMatch ? headerMatch[1].trim() : fileName; - } - - items.push({ - title, - description: frontmatter.description || '', - permalink: `/releases/${relativePath.replace(/\.mdx?$/, '')}/`, - sectionNesting: 0 - }); - } - } - - } catch (error) { - console.error('Error loading content:', error); - } - - console.log('Total items collected:', items.length); - return items; - }, - - async contentLoaded({ content, actions }): Promise { - console.log('Content loaded, storing content...'); - console.log('Content array?', Array.isArray(content)); - console.log('Content length:', content?.length); - this.content = content; - }, - - async postBuild({ outDir }): Promise { - console.log('Post build starting...'); - console.log('Content array?', Array.isArray(this.content)); - console.log('Content length:', this.content?.length); - - if (!Array.isArray(this.content)) { - console.log('No content available'); - return; - } - - // Sort docs by permalink for consistent ordering - this.content.sort((a, b) => a.permalink.localeCompare(b.permalink)); - - // Create markdown content - let markdownContent = `# SettleMint Developer Documentation - -This file contains links to all documentation pages, blog posts, and other content from the SettleMint Developer Hub. - -## Documentation - -`; - - // Add docs without indentation - this.content.forEach(doc => { - if (doc.permalink.startsWith('/docs/')) { - markdownContent += `- [${doc.title}](${context.siteConfig.url}${context.siteConfig.baseUrl}${doc.permalink})\n`; - if (doc.description) { - markdownContent += ` ${doc.description}\n`; - } - } - }); - - // Add Developer Blog section - markdownContent += `\n## Developer Blog\n\n`; - this.content.forEach(doc => { - if (doc.permalink.startsWith('/blog/')) { - markdownContent += `- [${doc.title}](${context.siteConfig.url}${context.siteConfig.baseUrl}${doc.permalink})\n`; - if (doc.description) { - markdownContent += ` ${doc.description}\n`; - } - } - }); - - // Add Releases section - markdownContent += `\n## Releases\n\n`; - this.content.forEach(doc => { - if (doc.permalink.startsWith('/releases/')) { - markdownContent += `- [${doc.title}](${context.siteConfig.url}${context.siteConfig.baseUrl}${doc.permalink})\n`; - if (doc.description) { - markdownContent += ` ${doc.description}\n`; - } - } - }); - - // Write directly to the output directory - const path = require('path'); - fs.writeFileSync(path.join(outDir, 'llms.txt'), markdownContent); - console.log('Generated llms.txt file for LLM indexing'); - } - }; -} \ No newline at end of file diff --git a/src/plugins/docusaurus-llms-plugin/package.json b/src/plugins/docusaurus-llms-plugin/package.json deleted file mode 100644 index f80906ad..00000000 --- a/src/plugins/docusaurus-llms-plugin/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "docusaurus-llms-plugin", - "version": "1.0.0", - "main": "index.ts", - "dependencies": { - "@docusaurus/types": "3.7.0" - } -} \ No newline at end of file diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts deleted file mode 100644 index 01a344b3..00000000 --- a/src/react-app-env.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare module '*.png'; -declare module '*.svg'; -declare module '*.jpeg'; -declare module '*.jpg'; -declare module '*.webp'; -declare module '@docusaurus/theme-common'; -declare module '@theme/hooks/useThemeContext'; diff --git a/static/.nojekyll b/static/.nojekyll deleted file mode 100644 index e69de29b..00000000 diff --git a/static/google71a728fce2df2454.html b/static/google71a728fce2df2454.html deleted file mode 100644 index 77e235c9..00000000 --- a/static/google71a728fce2df2454.html +++ /dev/null @@ -1 +0,0 @@ -google-site-verification: google71a728fce2df2454.html diff --git a/static/img/android-chrome-192x192.png b/static/img/android-chrome-192x192.png deleted file mode 100644 index 97eb0d23..00000000 Binary files a/static/img/android-chrome-192x192.png and /dev/null differ diff --git a/static/img/android-chrome-512x512.png b/static/img/android-chrome-512x512.png deleted file mode 100644 index c5f94982..00000000 Binary files a/static/img/android-chrome-512x512.png and /dev/null differ diff --git a/static/img/apple-touch-icon.png b/static/img/apple-touch-icon.png deleted file mode 100644 index 90800ff5..00000000 Binary files a/static/img/apple-touch-icon.png and /dev/null differ diff --git a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.01.152x.png b/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.01.152x.png deleted file mode 100644 index cd434fe7..00000000 Binary files a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.01.152x.png and /dev/null differ diff --git a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.01.292x.png b/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.01.292x.png deleted file mode 100644 index d509c93e..00000000 Binary files a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.01.292x.png and /dev/null differ diff --git a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.01.522x.png b/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.01.522x.png deleted file mode 100644 index d7d49dfd..00000000 Binary files a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.01.522x.png and /dev/null differ diff --git a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.05.312x.png b/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.05.312x.png deleted file mode 100644 index f2941b12..00000000 Binary files a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.05.312x.png and /dev/null differ diff --git a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.51.302x.png b/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.51.302x.png deleted file mode 100644 index eacce219..00000000 Binary files a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_13.51.302x.png and /dev/null differ diff --git a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_14.05.302x.png b/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_14.05.302x.png deleted file mode 100644 index 96fac75e..00000000 Binary files a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_14.05.302x.png and /dev/null differ diff --git a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_16.52.342x (1).png b/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_16.52.342x (1).png deleted file mode 100644 index 340e4947..00000000 Binary files a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_16.52.342x (1).png and /dev/null differ diff --git a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_16.52.342x.png b/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_16.52.342x.png deleted file mode 100644 index 340e4947..00000000 Binary files a/static/img/completing-setup-and-deploying/CleanShot_2022-10-01_at_16.52.342x.png and /dev/null differ diff --git a/static/img/favicon-16x16.png b/static/img/favicon-16x16.png deleted file mode 100644 index 0d374c7b..00000000 Binary files a/static/img/favicon-16x16.png and /dev/null differ diff --git a/static/img/favicon-32x32.png b/static/img/favicon-32x32.png deleted file mode 100644 index a185cf37..00000000 Binary files a/static/img/favicon-32x32.png and /dev/null differ diff --git a/static/img/hero-background/Gradient-Banner.jpg b/static/img/hero-background/Gradient-Banner.jpg deleted file mode 100644 index 5b7e1b4a..00000000 Binary files a/static/img/hero-background/Gradient-Banner.jpg and /dev/null differ diff --git a/static/img/hero-background/Gradient-Banner.png b/static/img/hero-background/Gradient-Banner.png deleted file mode 100644 index f30967ce..00000000 Binary files a/static/img/hero-background/Gradient-Banner.png and /dev/null differ diff --git a/static/img/installing-on-an-existing-cluster/CleanShot_2022-10-01_at_16.52.342x.png b/static/img/installing-on-an-existing-cluster/CleanShot_2022-10-01_at_16.52.342x.png deleted file mode 100644 index 340e4947..00000000 Binary files a/static/img/installing-on-an-existing-cluster/CleanShot_2022-10-01_at_16.52.342x.png and /dev/null differ diff --git a/static/img/installing-on-an-existing-cluster/images.md b/static/img/installing-on-an-existing-cluster/images.md deleted file mode 100644 index e4948f42..00000000 --- a/static/img/installing-on-an-existing-cluster/images.md +++ /dev/null @@ -1,36 +0,0 @@ -# Container images - -The following images are part of the SettleMint platform. - -| Image | Registry | Repository | Tag | -| ----------------------- | --------- | ------------------------------------------------------ | ---------------------------- | -| deployer | ghcr.io | settlemint/bpaas-onprem/deployer | 4.0.0-1665790989 | -| kotsadm-migrations | docker.io | kotsadm/kotsadm-migrations | v1.87.0 | -| kotsadm | docker.io | kotsadm/kotsadm | v1.87.0 | -| reloader | docker.io | stakater/reloader | v0.0.124 | -| vault-k8s | docker.io | hashicorp/vault-k8s | 1.0.0 | -| vault | ghcr.io | settlemint/bpaas/containers/vault | 1.3.1 | -| firefly-signer | ghcr.io | hyperledger/firefly-signer | v1.1.1 | -| besu | docker.io | hyperledger/besu | 22.7.6-graalvm | -| dshackle | docker.io | emeraldpay/dshackle | 0.13.1 | -| blockscout | ghcr.io | settlemint/blockscout | 4.1.10 | -| dashboard-app | ghcr.io | settlemint/bpaas-console-onprem | 5.29.0-alpha.104 | -| dashboard-api | ghcr.io | settlemint/bpaas-onprem-api | 5.29.0-alpha.104 | -| hasura | docker.io | hasura/graphql-engine | v2.13.0 | -| base-ide | ghcr.io | settlemint/bpaas-smartcontractsets-base-ide | 5.29.0-alpha.104 | -| template-solidity-empty | ghcr.io | settlemint/bpaas-smartcontractsets-solidity-empty | 5.29.0-alpha.104 | -| integration-studio | ghcr.io | settlemint/bpaas/containers/integration-studio-subpath | 1.3.1 | -| keycloak | ghcr.io | zcube/bitnami-compat/keycloak | 19.0.2-debian-11-r29 | -| keycloak-config-cli | ghcr.io | zcube/bitnami-compat/keycloak-config-cli | 5.3.1-debian-11-r29 | -| minio | docker.io | minio/minio | RELEASE.2022-10-08T20-11-00Z | -| oauth2-proxy | quay.io | oauth2-proxy/oauth2-proxy | v7.3.0 | -| postgresql | docker.io | postgres | 14.5 | -| postgres-exporter | ghcr.io | zcube/bitnami-compat/postgres-exporter | 0.11.1-debian-11-r29 | -| bitnami-shell | ghcr.io | zcube/bitnami-compat/bitnami-shell | 11.0.0-debian-11-r29 | -| redis | ghcr.io | zcube/bitnami-compat/redis | 7.0.5-debian-11-r29 | -| redis-exporter | ghcr.io | zcube/bitnami-compat/redis-exporter | 1.44.0-debian-11-r29 | -| kubo | docker.io | ipfs/kubo | v0.16.0 | -| ipfs-cluster | docker.io | ipfs/ipfs-cluster | 1.0.4 | -| ipfs-cli | ghcr.io | settlemint/bpaas-ipfs-cli | 5.29.0-alpha.104 | -| ipfs-webui | ghcr.io | settlemint/ipfs-webui | ocbc15 | -| busybox | docker.io | busybox | 1.35.0 | diff --git a/static/img/installing-on-an-existing-cluster/preload.md b/static/img/installing-on-an-existing-cluster/preload.md deleted file mode 100644 index 37982dca..00000000 --- a/static/img/installing-on-an-existing-cluster/preload.md +++ /dev/null @@ -1,37 +0,0 @@ -# Preloading all images (speed and airgap installs) - -To speed up installs or to install in airgap environments, it is possible to load all the images into the cluster or a local repository. Save the snippet below as `preload.sh`, modify the tag and push parts to match your environment and run `./preload.sh artifactory.some-big-bank-com` - -```sh -#!/bin/bash -x -docker pull "ghcr.io/settlemint/bpaas-onprem/deployer:4.0.0-1665790989" && docker tag "$1/settlemint/bpaas-onprem/deployer:4.0.0-1665790989" && docker push "$1/settlemint/bpaas-onprem/deployer:4.0.0-1665790989" -docker pull "docker.io/kotsadm/kotsadm-migrations:v1.87.0" && docker tag "$1/kotsadm/kotsadm-migrations:v1.87.0" && docker push "$1/kotsadm/kotsadm-migrations:v1.87.0" -docker pull "docker.io/kotsadm/kotsadm:v1.87.0" && docker tag "$1/kotsadm/kotsadm:v1.87.0" && docker push "$1/kotsadm/kotsadm:v1.87.0" -docker pull "docker.io/stakater/reloader:v0.0.124" && docker tag "$1/stakater/reloader:v0.0.124" && docker push "$1/stakater/reloader:v0.0.124" -docker pull "docker.io/hashicorp/vault-k8s:1.0.0" && docker tag "$1/hashicorp/vault-k8s:1.0.0" && docker push "$1/hashicorp/vault-k8s:1.0.0" -docker pull "ghcr.io/settlemint/bpaas/containers/vault:1.3.1" && docker tag "$1/settlemint/bpaas/containers/vault:1.3.1" && docker push "$1/settlemint/bpaas/containers/vault:1.3.1" -docker pull "ghcr.io/hyperledger/firefly-signer:v1.1.1" && docker tag "$1/hyperledger/firefly-signer:v1.1.1" && docker push "$1/hyperledger/firefly-signer:v1.1.1" -docker pull "docker.io/hyperledger/besu:22.7.6-graalvm" && docker tag "$1/hyperledger/besu:22.7.6-graalvm" && docker push "$1/hyperledger/besu:22.7.6-graalvm" -docker pull "docker.io/emeraldpay/dshackle:0.13.1" && docker tag "$1/emeraldpay/dshackle:0.13.1" && docker push "$1/emeraldpay/dshackle:0.13.1" -docker pull "ghcr.io/settlemint/blockscout:4.1.10" && docker tag "$1/settlemint/blockscout:4.1.10" && docker push "$1/settlemint/blockscout:4.1.10" -docker pull "ghcr.io/settlemint/bpaas-console-onprem:5.29.0-alpha.104" && docker tag "$1/settlemint/bpaas-console-onprem:5.29.0-alpha.104" && docker push "$1/settlemint/bpaas-console-onprem:5.29.0-alpha.104" -docker pull "ghcr.io/settlemint/bpaas-onprem-api:5.29.0-alpha.104" && docker tag "$1/settlemint/bpaas-onprem-api:5.29.0-alpha.104" && docker push "$1/settlemint/bpaas-onprem-api:5.29.0-alpha.104" -docker pull "docker.io/hasura/graphql-engine:v2.13.0" && docker tag "$1/hasura/graphql-engine:v2.13.0" && docker push "$1/hasura/graphql-engine:v2.13.0" -docker pull "ghcr.io/settlemint/bpaas-smartcontractsets-base-ide:5.29.0-alpha.104" && docker tag "$1/settlemint/bpaas-smartcontractsets-base-ide:5.29.0-alpha.104" && docker push "$1/settlemint/bpaas-smartcontractsets-base-ide:5.29.0-alpha.104" -docker pull "ghcr.io/settlemint/bpaas-smartcontractsets-solidity-empty:5.29.0-alpha.104" && docker tag "$1/settlemint/bpaas-smartcontractsets-solidity-empty:5.29.0-alpha.104" && docker push "$1/settlemint/bpaas-smartcontractsets-solidity-empty:5.29.0-alpha.104" -docker pull "ghcr.io/settlemint/bpaas/containers/integration-studio-subpath:1.3.1" && docker tag "$1/settlemint/bpaas/containers/integration-studio-subpath:1.3.1" && docker push "$1/settlemint/bpaas/containers/integration-studio-subpath:1.3.1" -docker pull "ghcr.io/zcube/bitnami-compat/keycloak:19.0.2-debian-11-r29" && docker tag "$1/zcube/bitnami-compat/keycloak:19.0.2-debian-11-r29" && docker push "$1/zcube/bitnami-compat/keycloak:19.0.2-debian-11-r29" -docker pull "ghcr.io/zcube/bitnami-compat/keycloak-config-cli:5.3.1-debian-11-r29" && docker tag "$1/zcube/bitnami-compat/keycloak-config-cli:5.3.1-debian-11-r29" && docker push "$1/zcube/bitnami-compat/keycloak-config-cli:5.3.1-debian-11-r29" -docker pull "docker.io/minio/minio:RELEASE.2022-10-08T20-11-00Z" && docker tag "$1/minio/minio:RELEASE.2022-10-08T20-11-00Z" && docker push "$1/minio/minio:RELEASE.2022-10-08T20-11-00Z" -docker pull "quay.io/oauth2-proxy/oauth2-proxy:v7.3.0" && docker tag "$1/oauth2-proxy/oauth2-proxy:v7.3.0" && docker push "$1/oauth2-proxy/oauth2-proxy:v7.3.0" -docker pull "docker.io/postgres:14.5" && docker tag "$1/postgres:14.5" && docker push "$1/postgres:14.5" -docker pull "ghcr.io/zcube/bitnami-compat/postgres-exporter:0.11.1-debian-11-r29" && docker tag "$1/zcube/bitnami-compat/postgres-exporter:0.11.1-debian-11-r29" && docker push "$1/zcube/bitnami-compat/postgres-exporter:0.11.1-debian-11-r29" -docker pull "ghcr.io/zcube/bitnami-compat/bitnami-shell:11.0.0-debian-11-r29" && docker tag "$1/zcube/bitnami-compat/bitnami-shell:11.0.0-debian-11-r29" && docker push "$1/zcube/bitnami-compat/bitnami-shell:11.0.0-debian-11-r29" -docker pull "ghcr.io/zcube/bitnami-compat/redis:7.0.5-debian-11-r29" && docker tag "$1/zcube/bitnami-compat/redis:7.0.5-debian-11-r29" && docker push "$1/zcube/bitnami-compat/redis:7.0.5-debian-11-r29" -docker pull "ghcr.io/zcube/bitnami-compat/redis-exporter:1.44.0-debian-11-r29" && docker tag "$1/zcube/bitnami-compat/redis-exporter:1.44.0-debian-11-r29" && docker push "$1/zcube/bitnami-compat/redis-exporter:1.44.0-debian-11-r29" -docker pull "docker.io/ipfs/kubo:v0.16.0" && docker tag "$1/ipfs/kubo:v0.16.0" && docker push "$1/ipfs/kubo:v0.16.0" -docker pull "docker.io/ipfs/ipfs-cluster:1.0.4" && docker tag "$1/ipfs/ipfs-cluster:1.0.4" && docker push "$1/ipfs/ipfs-cluster:1.0.4" -docker pull "ghcr.io/settlemint/bpaas-ipfs-cli:5.29.0-alpha.104" && docker tag "$1/settlemint/bpaas-ipfs-cli:5.29.0-alpha.104" && docker push "$1/settlemint/bpaas-ipfs-cli:5.29.0-alpha.104" -docker pull "ghcr.io/settlemint/ipfs-webui:ocbc15" && docker tag "$1/settlemint/ipfs-webui:ocbc15" && docker push "$1/settlemint/ipfs-webui:ocbc15" -docker pull "docker.io/busybox:1.35.0" && docker tag "$1/busybox:1.35.0" && docker push "$1/busybox:1.35.0" -``` diff --git a/static/img/installing-on-an-existing-cluster/resources.md b/static/img/installing-on-an-existing-cluster/resources.md deleted file mode 100644 index b367c6f0..00000000 --- a/static/img/installing-on-an-existing-cluster/resources.md +++ /dev/null @@ -1,33 +0,0 @@ -# Resources - -## CPU/Memory resources - -| Module | Image | CPU Request | CPU Limit | Memory Request | Memory Limit | -| ----------------- | ------------------- | ----------- | --------- | -------------- | ------------ | -| reloader | reloader | 250m | 1 | 256Mi | 1024Mi | -| vault | vault | 250m | 1 | 256Mi | 1024Mi | -| postgresql | postgresql | 250m | 1 | 256Mi | 1024Mi | -| postgresql | postgres-exporter | 100m | 200m | 128Mi | 256Mi | -| redis | redis-exporter | 250m | 1 | 256Mi | 1024Mi | -| redis | redis | 250m | 1 | 256Mi | 1024Mi | -| keycloak | keycloak | 250m | 1 | 256Mi | 1024Mi | -| keycloak | keycloak-config-cli | 250m | 1 | 256Mi | 1024Mi | -| hasura | hasura | 100m | 1 | 128Mi | 1024Mi | -| integrationStudio | integration-studio | 250m | 1 | 256Mi | 1024Mi | -| dashboard | dashboard-app | 100m | 1 | 128Mi | 256Mi | -| dashboard | dashboard-api | 100m | 1 | 128Mi | 256Mi | -| besu | besu | 250m | 1 | 256Mi | 1024Mi | -| dshackle | dshackle | 100m | 1 | 512Mi | 1024Mi | -| ide | base-ide | 250m | 2 | 256Mi | 2048Mi | -| minio | minio | 250m | 1 | 256Mi | 1024Mi | -| oauth2Proxy | oauth2-proxy | 100m | 1 | 128Mi | 256Mi | - -## Disk resources - -| Module | Image | Size | -| ----------------- | ------------------ | ---- | -| vault | vault | 5Gi | -| postgresql | postgresql | 5Gi | -| redis | postgresql | 5Gi | -| integrationStudio | integration-studio | 5Gi | -| besu | besu | 5Gi | diff --git a/static/img/mstile-150x150.png b/static/img/mstile-150x150.png deleted file mode 100644 index b91dc5ba..00000000 Binary files a/static/img/mstile-150x150.png and /dev/null differ diff --git a/static/img/reference/dr-diagram1.png b/static/img/reference/dr-diagram1.png deleted file mode 100644 index fb2d1f41..00000000 Binary files a/static/img/reference/dr-diagram1.png and /dev/null differ diff --git a/static/img/reference/dr-diagram2.png b/static/img/reference/dr-diagram2.png deleted file mode 100644 index f98ea563..00000000 Binary files a/static/img/reference/dr-diagram2.png and /dev/null differ diff --git a/static/img/safari-pinned-tab.svg b/static/img/safari-pinned-tab.svg deleted file mode 100644 index 68b68d1b..00000000 --- a/static/img/safari-pinned-tab.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/img/settlemint-hub-black.png b/static/img/settlemint-hub-black.png deleted file mode 100644 index 52362e66..00000000 Binary files a/static/img/settlemint-hub-black.png and /dev/null differ diff --git a/static/img/settlemint-hub-white.png b/static/img/settlemint-hub-white.png deleted file mode 100644 index baa1b4a5..00000000 Binary files a/static/img/settlemint-hub-white.png and /dev/null differ diff --git a/static/img/settlemint-icon-new.svg b/static/img/settlemint-icon-new.svg deleted file mode 100644 index 5c70ebe6..00000000 --- a/static/img/settlemint-icon-new.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/img/settlemint-icon-white.svg b/static/img/settlemint-icon-white.svg deleted file mode 100644 index 28e4ff7d..00000000 --- a/static/img/settlemint-icon-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/img/settlemint-icon.svg b/static/img/settlemint-icon.svg deleted file mode 100644 index 49804b11..00000000 --- a/static/img/settlemint-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/img/settlemint-logo-lm.png b/static/img/settlemint-logo-lm.png deleted file mode 100644 index 22a808b6..00000000 Binary files a/static/img/settlemint-logo-lm.png and /dev/null differ diff --git a/static/img/settlemint-logo-redesign.png b/static/img/settlemint-logo-redesign.png deleted file mode 100644 index 9ffcb612..00000000 Binary files a/static/img/settlemint-logo-redesign.png and /dev/null differ diff --git a/theme/index.tsx b/theme/index.tsx deleted file mode 100644 index e497fc2b..00000000 --- a/theme/index.tsx +++ /dev/null @@ -1,174 +0,0 @@ -import '@fontsource/figtree'; -import '@fontsource/figtree/300.css'; -import '@fontsource/figtree/400.css'; -import '@fontsource/figtree/700.css'; -import '@fontsource/figtree/900.css'; -import styles from './styles.module.css'; - -function Navigation() { - return ( -
-
-
-
-
- SettleMint Platform -
-
-
-

- Build on -
- The SettleMint Platform -

-

- The SettleMint platform solves the problem of the
{' '} - fragmented blockchain tooling ecosystem. -

-

- It offers a unified developer experience for building blockchain - applications
- through a combination of familiar and custom tools.{' '} -

-

- You can host the platform on a managed cloud, your own cloud, or - on-premises
to meet your performance and security needs. -

-

- Get started on your blockchain transformation by building your - first application: -

- - - -
-
-
- -
-
-
- SettleMint Platform -
-
-
-

- Explore -
- The SettleMint Platform -

-

-

- The SettleMint Platform enables the developers to execute - faster.
Directly from the platform you can deploy: -

-
    -
  • - Blockchain Networks including Hyperledger Besu,
    Polygon - Edge and Ethereum -
  • -
  • - Custom smart contracts or templates
    like ERC-20 and - ERC-721 -
  • -
  • Middleware including The Graph
  • -
  • Storage solutions including IPFS and S3-compatible
  • -
  • Integrations to existing business logic
  • -
- - - -
-
-
-
- -
-
-
-
-
-

We're here to help

-

- We are here to help you on your Blockchain Transformation - Journey -
- Our team of experts are here to answer your blockchain - questions both large and small! -

-
-
- -
-
- SettleMint Platform -

Contact Support

-

- Have a question or need assistance? -
- Email us at{' '} - - support@settlemint.com - -

-
- -
- SettleMint Platform -

Aikido Security

-

Aikido Security Audit Report

- - Request Security Report - -
-
-
-
-
-
- ); -} - -export default Navigation; diff --git a/theme/styles.module.css b/theme/styles.module.css deleted file mode 100644 index 1bb0df43..00000000 --- a/theme/styles.module.css +++ /dev/null @@ -1,553 +0,0 @@ -.hero { - margin-top: -63px; - padding: 100px 0 100px; - border-radius: 0 0 10px 10px; -} - -main { - flex-grow: 1; - overflow: hidden; - position: relative; - z-index: 2; -} - -main:after { - content: ''; - opacity: 0; - position: absolute; - z-index: 2; -} - -.container { - display: flex; - margin-top: 4rem; - flex-flow: row wrap; -} - -.twoColumnText { - width: 100%; - margin-top: 1rem; -} - -.twoColumnImage { - width: 100%; -} - -.contactSupport { - margin-top: 10px; -} - -@media (min-width: 768px) { - .twoColumn { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - } - - .twoColumnImage { - width: 50%; - max-width: 100%; - } - - .twoColumnText { - width: 50%; - margin-top: 0; - margin-left: 1rem; - } - - .row { - flex-direction: row; - justify-content: center; - } - - .col-12 { - width: 80%; - } - - .col-12 > div { - margin-right: 1rem; - margin-left: 1rem; - } - .contactSupport { - margin-top: 20px; - } -} - -/* @media (min-width: 992px) { - .container { - max-width: 992px; - } - } - @media (min-width: 1200px) { - .container{ - max-width: 1200px; - } - } - @media (min-width: 1400px) { - .container { - max-width: 1220px; - } - } */ - -.row { - --bs-gutter-x: 30px; - --bs-gutter-y: 0; - display: flex; - flex-wrap: wrap; - margin-left: calc(var(--bs-gutter-x) * -0.5); - margin-right: calc(var(--bs-gutter-x) * -0.5); - margin-top: calc(var(--bs-gutter-y) * -1); -} -.row > * { - flex-shrink: 0; - margin-top: var(--bs-gutter-y); - max-width: 100%; - padding-left: calc(var(--bs-gutter-x) * 0.5); - padding-right: calc(var(--bs-gutter-x) * 0.5); - width: 100%; -} -.col { - flex: 1 0 0%; -} -.row-cols-auto > * { - flex: 0 0 auto; - width: auto; -} -.row-cols-1 > * { - flex: 0 0 auto; - width: 100%; -} -.row-cols-2 > * { - flex: 0 0 auto; - width: 50%; -} -.row-cols-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; -} -.row-cols-4 > * { - flex: 0 0 auto; - width: 25%; -} -.row-cols-5 > * { - flex: 0 0 auto; - width: 20%; -} -.row-cols-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; -} -.col-auto { - flex: 0 0 auto; - width: auto; -} -.col-1 { - flex: 0 0 auto; - width: 8.33333333%; -} -.col-2 { - flex: 0 0 auto; - width: 16.66666667%; -} -.col-3 { - flex: 0 0 auto; - width: 25%; -} -.col-4 { - flex: 0 0 auto; - width: 33.33333333%; -} -.col-5 { - flex: 0 0 auto; - width: 41.66666667%; -} -.col-6 { - flex: 0 0 auto; - width: 50%; -} -.col-7 { - flex: 0 0 auto; - width: 58.33333333%; -} -.col-8 { - flex: 0 0 auto; - width: 66.66666667%; -} -.col-9 { - flex: 0 0 auto; - width: 75%; -} -.col-10 { - flex: 0 0 auto; - width: 83.33333333%; -} -.col-11 { - flex: 0 0 auto; - width: 91.66666667%; -} -.col-12 { - flex: 0 0 auto; - width: 100%; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-md-between { - justify-content: space-between !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.align-items-center { - align-items: center !important; -} - -.text-center { - text-align: center !important; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - color: #1c1c1c; - font-family: Figtree, Arial, sans-serif; - font-weight: 400; - line-height: 110%; - margin-bottom: 1rem; -} -.h2, -h2 { - font-size: calc(1.39375rem + 1.725vw); - line-height: 125%; - margin-bottom: 1.5rem; -} - -@media (max-width: 768px) { - .flex-row-reverse { - flex-direction: column-reverse; - } - .contentImage { - margin-top: 2rem; - } -} - -@media (min-width: 1200px) { - .h2, - h2 { - font-size: 2.6875rem; - } -} -@media (min-width: 576px) { - .h2, - h2 { - font-size: calc(1.40625rem + 1.875vw); - } -} -@media (min-width: 576px) and (min-width: 1200px) { - .h2, - h2 { - font-size: 2.8125rem; - } -} -@media (min-width: 768px) { - .h2, - h2 { - margin-bottom: 2rem; - } -} -@media (min-width: 1200px) { - .h2, - h2 { - font-size: calc(1.4375rem + 2.25vw); - } -} -@media (min-width: 1200px) and (min-width: 1200px) { - .h2, - h2 { - font-size: 3.125rem; - } -} -@media (min-width: 768px) { - .has-introtext .h2, - .has-introtext h2 { - margin-bottom: 1rem; - } -} - -.container { - --bs-gutter-x: 30px; - --bs-gutter-y: 0; - margin-left: auto; - margin-right: auto; - padding-left: calc(var(--bs-gutter-x) * 0.5); - padding-right: calc(var(--bs-gutter-x) * 0.5); - width: 100%; - max-width: 1200px; -} - -.secondaryButton { - background-color: #ffffff; - color: #346eee; - border: solid 0.5px #346eee; - padding: 0.8rem 1.25rem; - border-radius: 6px; - transition: all 0.3s ease-in-out; - font-family: 'Figtree', sans-serif; - font-weight: 700; - font-size: 0.9375rem; - text-transform: uppercase; - line-height: 1.5; - text-align: center; - vertical-align: middle; - margin: 10px; -} - -.secondaryButton:hover { - opacity: 60%; -} - -.btnLink { - text-decoration: underline; - font-weight: 500; - margin-bottom: 3px; - color: #346eee; - padding: 1px; - font-size: 1.25rem; - text-underline-offset: 5px; - transition: text-decoration-color 0.3s; - text-align: left; -} - -.btnLink:hover { - text-decoration: none; -} - -h3 { - font-size: calc(1.325rem + 0.9vw); - line-height: 120%; - font-weight: 400; - margin-top: 0; -} - -p { - display: block; - margin-block-start: 1em; - margin-block-end: 1em; - margin-inline-start: 0px; - margin-inline-end: 0px; - font-size: 1.125rem; -} - -.icons img { - width: 30px; - height: 100px; -} - -img { - height: auto; -} - -h3 { - font-weight: 400; - margin-top: 0; - display: block; - margin-block-start: 1em; - margin-block-end: 1em; - margin-inline-start: 0px; - margin-inline-end: 0px; -} - -@media only screen and (min-width: 1000px) and (max-width: 1000px) { - .hero { - padding-left: 30px; - padding-right: 30px; - } - - .hero .row { - flex-wrap: nowrap; - } - - .hero .col--7 { - min-width: 1500px; - } - - .hero .col--5 { - flex: 1 !important; - max-width: none !important; - } -} - -.boxes { - display: flex; - margin-top: 42px; -} - -@media only screen and (max-width: 767px) { - .hero { - padding: 71px 0 62px; - } -} - -@media only screen and (max-width: 767px) { - .boxes .box .text { - padding-bottom: 25px; - } -} - -.boxes .box .text .title { - margin: 0; - line-height: 1.5; - font-size: 25px; - font-weight: bold; - color: #4d80f0; -} - -.contentRow { - display: 'flex'; - flex-direction: 'row'; -} - -@media only screen and (max-width: 767px) { - .boxes .box .text .title { - text-align: center; - line-height: 1.2; - font-size: 30px; - } -} - -.boxes .box .text .description { - margin: 10px 0 0 0; - line-height: 1.5; - font-size: 14.5px; - color: #1c1c1c; -} - -.boxes .box .text .description:hover { - color: #4d80f0; - margin: 10px 0 0 0; - line-height: 1.5; - font-size: 14.5px; -} - -@media only screen and (max-width: 767px) { - .boxes .box .text .description { - margin-top: 10px; - text-align: center; - line-height: 1.6; - font-size: 16px; - color: #1c1c1c; - } - .boxes .box .text .description:hover { - color: #4d80f0; - margin: 10px 0 0 0; - line-height: 1.5; - font-size: 14.5px; - } -} - -.boxes .box .text .more { - display: flex; - align-items: center; - margin-top: 14px; - line-height: 1.2; - font-size: 14.5px; - font-weight: 700; - color: #1c1c1c; -} - -.boxes .box .text .more:hover { - color: #4d80f0; - display: flex; - align-items: center; - margin-top: 14px; - line-height: 1.2; - font-size: 14.5px; - font-weight: 700; -} - -@media only screen and (max-width: 767px) { - .boxes .box .text .more { - justify-content: center; - font-size: 16px; - color: #1c1c1c; - } -} - -.boxes .box .text .more svg { - margin-left: 8px; - flex: 0 0 14px; -} - -.boxes .box:hover .text .more svg path { - fill: #ffff; -} - -.boxes .box .link { - z-index: 5; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - overflow: hidden; - text-indent: -9999px; - cursor: pointer; -} - -.hero .row { - align-items: center; -} - -.hero .row .col { - display: flex; - flex-direction: column; -} - -.hero .row .col:first-child { - order: 2; -} - -.hero .row .col:last-child { - order: 1; -} - -.hero-title { - font-size: 62px; -} - -.hero .hero-title { - margin: 0; - line-height: 1.1; -} - -.hero .hero-title { - text-align: center; - font-weight: 300; -} - -.hero .hero-subtitle { - margin: 17px 0 0 0; -} - -.hero .hero-subtitle { - text-align: center; -} - -[data-theme='dark'] .mainButton { - background-color: #346eee; - color: #ffffff; -} - -[data-theme='dark'] .secondaryButton { - background-color: transparent; - color: #ffffff; - border-color: #ffffff; -} diff --git a/tsconfig.json b/tsconfig.json index 314eab8a..504b2911 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,45 @@ { - // This file is not used in compilation. It is here just for a nice editor experience. - "extends": "@docusaurus/tsconfig", "compilerOptions": { - "baseUrl": "." - } -} + "baseUrl": ".", + "target": "ESNext", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "paths": { + "@/.source": [ + "./.source/index.ts" + ], + "@/*": [ + "./src/*" + ] + }, + "plugins": [ + { + "name": "next" + } + ] + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} \ No newline at end of file