From f3d1bcd080843c5a48a07d422163375ff90bf0be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E6=B3=93=E5=AE=87?= Date: Sun, 27 Apr 2025 22:12:53 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20learnChain-x=E7=AE=80=E4=BB=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- move202503/AKAKing23/README.md | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 move202503/AKAKing23/README.md diff --git a/move202503/AKAKing23/README.md b/move202503/AKAKing23/README.md new file mode 100644 index 00000000..d55f974a --- /dev/null +++ b/move202503/AKAKing23/README.md @@ -0,0 +1,38 @@ +## project +- 项目名称:LearnChain-X +> 描述: +自适应学习引擎:基于深度强化学习的 AI 题库系统,通过用户画像与知识图谱动态生成个性化习题流(初级 → 专家级),突破传统教育"千人一面"的局限 +链上能力认证:采用 SUI 链零知识证明框架,将学习轨迹实时转化为两类链上凭证: +技能通证(Skill Token):基于答题表现的激励型代币 +成就徽章(Achievement SBT):不可转让的能力证明凭证 +隐私计算验证层:集成 zk-SNARKs 验证协议,支持企业/机构通过零知识证明快速核验凭证有效性,实现数据可用不可见 +【产品价值】 +• 学习者:获得动态适配的个性化学习路径与去中心化能力护照 +• 教育机构:构建防篡改的能力评估体系,降低认证成本 +• 企业用户:通过轻量化验证模块快速筛选人才,规避数据隐私风险 + +【技术亮点】 +▷ SUI 链原生集成:利用 SUI 的高吞吐特性支持高频答题上链 +▷ AI 动态出题系统:基于 Transformer 架构的题目生成模型 +▷ 隐私计算方案:采用 zk-STARKs 扩容技术实现秒级凭证验证 +▷ 双代币经济模型:通证激励与 SBT 凭证的协同激励机制 + + +## Member +- Haynes github: https://github.com/AKAking23 +> 自我介绍&技术栈: +前端开发者 & 区块链技术探索者 🌐⚡ +一名全栈倾向的前端开发者,拥有 5年(根据实际情况修改)前端工程经验,擅长通过技术将创意转化为高性能、高可用的Web应用。同时深耕区块链领域,致力于将前端交互与智能合约深度结合,探索Web3.0的创新可能。 + +技术栈: +▸ 前端框架:Vue2/3、React + +▸ 开发语言:TypeScript、JavaScript(ES6+) + +▸ 区块链开发:Solidity(ERC20/ERC721/DeFi协议)、Move语言(Aptos/Sui智能合约开发) + +▸ 工具链:Web3.js、Ethers.js、Hardhat、Truffle、Remix + +▸ 附加技能:Node.js基础、DApp前后端联调、TDD开发模式 + + From 64e49feadeae64569ca19a390953a1f6ce11c4b9 Mon Sep 17 00:00:00 2001 From: jianghongyu Date: Mon, 5 May 2025 17:37:13 +0800 Subject: [PATCH 2/3] code --- move202503/AKAKing23/code/README.md | 25 + .../AKAKing23/code/chain_back/.gitignore | 24 + move202503/AKAKing23/code/chain_back/index.ts | 37 + .../code/chain_back/package-lock.json | 2344 ++++++ .../AKAKing23/code/chain_back/package.json | 30 + .../AKAKing23/code/chain_back/routes/index.ts | 360 + .../AKAKing23/code/chain_back/tsconfig.json | 16 + .../AKAKing23/code/chain_contract/.gitignore | 1 + .../AKAKing23/code/chain_contract/Move.lock | 34 + .../AKAKing23/code/chain_contract/Move.toml | 38 + .../chain_contract/sources/allowlist.move | 49 + .../sources/chain_contract.move | 155 + .../chain_contract/sources/point_token.move | 426 ++ .../code/chain_contract/sources/quiz.move | 646 ++ .../code/chain_contract/sources/sbt.move | 294 + .../chain_contract/sources/sbt_scripts.move | 87 + .../sources/seal_quiz_walrus.move | 133 + .../chain_contract/sources/zk_verifier.move | 144 + move202503/AKAKing23/code/chain_front/.env | 0 .../AKAKing23/code/chain_front/.gitignore | 24 + .../code/chain_front/components.json | 21 + .../code/chain_front/eslint.config.js | 28 + .../AKAKing23/code/chain_front/index.html | 14 + .../AKAKing23/code/chain_front/lang/index.js | 61 + .../code/chain_front/lang/index.json | 926 +++ move202503/AKAKing23/code/chain_front/move.sh | 5 + .../AKAKing23/code/chain_front/netlify.toml | 4 + .../AKAKing23/code/chain_front/package.json | 48 + .../AKAKing23/code/chain_front/pnpm-lock.yaml | 6328 +++++++++++++++++ .../code/chain_front/public/advanced.png | Bin 0 -> 6135 bytes .../chain_front/public/circuits/ability.r1cs | Bin 0 -> 2352 bytes .../chain_front/public/circuits/ability.wasm | Bin 0 -> 37077 bytes .../public/circuits/ability_proof.zkey | Bin 0 -> 10448 bytes .../public/circuits/verification_key.json | 104 + .../code/chain_front/public/intermediate.png | Bin 0 -> 5875 bytes .../code/chain_front/public/logo.png | Bin 0 -> 17739 bytes .../code/chain_front/public/primary.png | Bin 0 -> 4618 bytes .../code/chain_front/public/vite.svg | 1 + .../AKAKing23/code/chain_front/src/App.css | 42 + .../AKAKing23/code/chain_front/src/App.tsx | 14 + .../code/chain_front/src/api/axios.ts | 42 + .../code/chain_front/src/api/coze.ts | 104 + .../code/chain_front/src/api/index.ts | 10 + .../AKAKing23/code/chain_front/src/api/sui.ts | 430 ++ .../code/chain_front/src/api/walrus.ts | 298 + .../src/assets/fonts/EricaOne-Regular.ttf | Bin 0 -> 24872 bytes .../src/assets/fonts/RammettoOne-Regular.ttf | Bin 0 -> 68900 bytes .../src/assets/images/blurball.png | Bin 0 -> 593976 bytes .../chain_front/src/assets/images/logo.png | Bin 0 -> 84238 bytes .../code/chain_front/src/assets/react.svg | 1 + .../chain_front/src/components/Background.css | 35 + .../src/components/BackgroundBall.tsx | 146 + .../chain_front/src/components/Layout.tsx | 45 + .../chain_front/src/components/Loading.css | 101 + .../chain_front/src/components/Loading.tsx | 229 + .../chain_front/src/components/TypeWriter.tsx | 26 + .../chain_front/src/components/ui/button.tsx | 59 + .../AKAKing23/code/chain_front/src/index.css | 313 + .../code/chain_front/src/lib/utils.ts | 6 + .../AKAKing23/code/chain_front/src/main.tsx | 23 + .../code/chain_front/src/pages/About.tsx | 21 + .../code/chain_front/src/pages/Courses.tsx | 61 + .../code/chain_front/src/pages/Dashboard.tsx | 393 + .../code/chain_front/src/pages/Dashbord.css | 388 + .../chain_front/src/pages/Dashbord.module.css | 278 + .../src/pages/EncryptAndUpload.tsx | 344 + .../code/chain_front/src/pages/Home.tsx | 21 + .../code/chain_front/src/pages/NotFound.tsx | 14 + .../code/chain_front/src/pages/Quiz.tsx | 1116 +++ .../code/chain_front/src/pages/Rank.tsx | 398 ++ .../code/chain_front/src/pages/Wallet.tsx | 54 + .../code/chain_front/src/pages/ZkProof.tsx | 622 ++ .../AKAKing23/code/chain_front/src/router.tsx | 57 + .../code/chain_front/src/styles/Quiz.css | 352 + .../code/chain_front/src/styles/Rank.css | 126 + .../code/chain_front/src/styles/layout.css | 293 + .../code/chain_front/src/utils/constants.ts | 10 + .../code/chain_front/src/utils/decry.ts | 120 + .../chain_front/src/utils/networkConfig.ts | 31 + .../code/chain_front/src/utils/zkProof.ts | 149 + .../code/chain_front/src/vite-env.d.ts | 1 + .../code/chain_front/tsconfig.app.json | 30 + .../AKAKing23/code/chain_front/tsconfig.json | 13 + .../code/chain_front/tsconfig.node.json | 24 + .../AKAKing23/code/chain_front/vite.config.ts | 112 + .../AKAKing23/code/zk_proof_system/.gitignore | 24 + .../zk_proof_system/circuit/ability.circom | 48 + .../zk_proof_system/js/src/generate_proof.js | 75 + .../code/zk_proof_system/package-lock.json | 551 ++ .../code/zk_proof_system/package.json | 6 + 90 files changed, 20063 insertions(+) create mode 100644 move202503/AKAKing23/code/README.md create mode 100644 move202503/AKAKing23/code/chain_back/.gitignore create mode 100644 move202503/AKAKing23/code/chain_back/index.ts create mode 100644 move202503/AKAKing23/code/chain_back/package-lock.json create mode 100644 move202503/AKAKing23/code/chain_back/package.json create mode 100644 move202503/AKAKing23/code/chain_back/routes/index.ts create mode 100644 move202503/AKAKing23/code/chain_back/tsconfig.json create mode 100644 move202503/AKAKing23/code/chain_contract/.gitignore create mode 100644 move202503/AKAKing23/code/chain_contract/Move.lock create mode 100644 move202503/AKAKing23/code/chain_contract/Move.toml create mode 100644 move202503/AKAKing23/code/chain_contract/sources/allowlist.move create mode 100644 move202503/AKAKing23/code/chain_contract/sources/chain_contract.move create mode 100644 move202503/AKAKing23/code/chain_contract/sources/point_token.move create mode 100644 move202503/AKAKing23/code/chain_contract/sources/quiz.move create mode 100644 move202503/AKAKing23/code/chain_contract/sources/sbt.move create mode 100644 move202503/AKAKing23/code/chain_contract/sources/sbt_scripts.move create mode 100644 move202503/AKAKing23/code/chain_contract/sources/seal_quiz_walrus.move create mode 100644 move202503/AKAKing23/code/chain_contract/sources/zk_verifier.move create mode 100644 move202503/AKAKing23/code/chain_front/.env create mode 100644 move202503/AKAKing23/code/chain_front/.gitignore create mode 100644 move202503/AKAKing23/code/chain_front/components.json create mode 100644 move202503/AKAKing23/code/chain_front/eslint.config.js create mode 100644 move202503/AKAKing23/code/chain_front/index.html create mode 100644 move202503/AKAKing23/code/chain_front/lang/index.js create mode 100644 move202503/AKAKing23/code/chain_front/lang/index.json create mode 100644 move202503/AKAKing23/code/chain_front/move.sh create mode 100644 move202503/AKAKing23/code/chain_front/netlify.toml create mode 100644 move202503/AKAKing23/code/chain_front/package.json create mode 100644 move202503/AKAKing23/code/chain_front/pnpm-lock.yaml create mode 100644 move202503/AKAKing23/code/chain_front/public/advanced.png create mode 100644 move202503/AKAKing23/code/chain_front/public/circuits/ability.r1cs create mode 100644 move202503/AKAKing23/code/chain_front/public/circuits/ability.wasm create mode 100644 move202503/AKAKing23/code/chain_front/public/circuits/ability_proof.zkey create mode 100644 move202503/AKAKing23/code/chain_front/public/circuits/verification_key.json create mode 100644 move202503/AKAKing23/code/chain_front/public/intermediate.png create mode 100644 move202503/AKAKing23/code/chain_front/public/logo.png create mode 100644 move202503/AKAKing23/code/chain_front/public/primary.png create mode 100644 move202503/AKAKing23/code/chain_front/public/vite.svg create mode 100644 move202503/AKAKing23/code/chain_front/src/App.css create mode 100644 move202503/AKAKing23/code/chain_front/src/App.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/api/axios.ts create mode 100644 move202503/AKAKing23/code/chain_front/src/api/coze.ts create mode 100644 move202503/AKAKing23/code/chain_front/src/api/index.ts create mode 100644 move202503/AKAKing23/code/chain_front/src/api/sui.ts create mode 100644 move202503/AKAKing23/code/chain_front/src/api/walrus.ts create mode 100644 move202503/AKAKing23/code/chain_front/src/assets/fonts/EricaOne-Regular.ttf create mode 100644 move202503/AKAKing23/code/chain_front/src/assets/fonts/RammettoOne-Regular.ttf create mode 100644 move202503/AKAKing23/code/chain_front/src/assets/images/blurball.png create mode 100644 move202503/AKAKing23/code/chain_front/src/assets/images/logo.png create mode 100644 move202503/AKAKing23/code/chain_front/src/assets/react.svg create mode 100644 move202503/AKAKing23/code/chain_front/src/components/Background.css create mode 100644 move202503/AKAKing23/code/chain_front/src/components/BackgroundBall.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/components/Layout.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/components/Loading.css create mode 100644 move202503/AKAKing23/code/chain_front/src/components/Loading.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/components/TypeWriter.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/components/ui/button.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/index.css create mode 100644 move202503/AKAKing23/code/chain_front/src/lib/utils.ts create mode 100644 move202503/AKAKing23/code/chain_front/src/main.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/pages/About.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/pages/Courses.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/pages/Dashboard.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/pages/Dashbord.css create mode 100644 move202503/AKAKing23/code/chain_front/src/pages/Dashbord.module.css create mode 100644 move202503/AKAKing23/code/chain_front/src/pages/EncryptAndUpload.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/pages/Home.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/pages/NotFound.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/pages/Quiz.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/pages/Rank.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/pages/Wallet.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/pages/ZkProof.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/router.tsx create mode 100644 move202503/AKAKing23/code/chain_front/src/styles/Quiz.css create mode 100644 move202503/AKAKing23/code/chain_front/src/styles/Rank.css create mode 100644 move202503/AKAKing23/code/chain_front/src/styles/layout.css create mode 100644 move202503/AKAKing23/code/chain_front/src/utils/constants.ts create mode 100644 move202503/AKAKing23/code/chain_front/src/utils/decry.ts create mode 100644 move202503/AKAKing23/code/chain_front/src/utils/networkConfig.ts create mode 100644 move202503/AKAKing23/code/chain_front/src/utils/zkProof.ts create mode 100644 move202503/AKAKing23/code/chain_front/src/vite-env.d.ts create mode 100644 move202503/AKAKing23/code/chain_front/tsconfig.app.json create mode 100644 move202503/AKAKing23/code/chain_front/tsconfig.json create mode 100644 move202503/AKAKing23/code/chain_front/tsconfig.node.json create mode 100644 move202503/AKAKing23/code/chain_front/vite.config.ts create mode 100644 move202503/AKAKing23/code/zk_proof_system/.gitignore create mode 100644 move202503/AKAKing23/code/zk_proof_system/circuit/ability.circom create mode 100644 move202503/AKAKing23/code/zk_proof_system/js/src/generate_proof.js create mode 100644 move202503/AKAKing23/code/zk_proof_system/package-lock.json create mode 100644 move202503/AKAKing23/code/zk_proof_system/package.json diff --git a/move202503/AKAKing23/code/README.md b/move202503/AKAKing23/code/README.md new file mode 100644 index 00000000..8f20cda9 --- /dev/null +++ b/move202503/AKAKing23/code/README.md @@ -0,0 +1,25 @@ +# LearnChain-X + +LearnChain X 是首个基于 AI 生成题目引擎 与 灵魂绑定积分链 的防作弊学习平台,让每一次知识积累都化作不可篡改的数字资产。 +LearnChain-X:基于 SUI 链的 AI 驱动知识凭证化平台 + +【项目概述】 +LearnChain-X 是构建于 SUI 链的创新型区块链教育项目,通过链上行为认证与人工智能技术的深度融合,打造动态化能力评估体系。平台创新采用"AI 自适应学习+区块链凭证"双引擎架构,实现传统教育范式的突破。 + +【核心技术架构】 + +自适应学习引擎:基于深度强化学习的 AI 题库系统,通过用户画像与知识图谱动态生成个性化习题流(初级 → 专家级),突破传统教育"千人一面"的局限 +链上能力认证:采用 SUI 链零知识证明框架,将学习轨迹实时转化为两类链上凭证: +技能通证(Skill Token):基于答题表现的激励型代币 +成就徽章(Achievement SBT):不可转让的能力证明凭证 +隐私计算验证层:集成 zk-SNARKs 验证协议,支持企业/机构通过零知识证明快速核验凭证有效性,实现数据可用不可见 +【产品价值】 +• 学习者:获得动态适配的个性化学习路径与去中心化能力护照 +• 教育机构:构建防篡改的能力评估体系,降低认证成本 +• 企业用户:通过轻量化验证模块快速筛选人才,规避数据隐私风险 + +【技术亮点】 +▷ SUI 链原生集成:利用 SUI 的高吞吐特性支持高频答题上链 +▷ AI 动态出题系统:基于 Transformer 架构的题目生成模型 +▷ 隐私计算方案:采用 zk-SNARKs 扩容技术实现凭证验证 +▷ 双代币经济模型:通证激励与 SBT 凭证的协同激励机制 diff --git a/move202503/AKAKing23/code/chain_back/.gitignore b/move202503/AKAKing23/code/chain_back/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/move202503/AKAKing23/code/chain_back/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/move202503/AKAKing23/code/chain_back/index.ts b/move202503/AKAKing23/code/chain_back/index.ts new file mode 100644 index 00000000..da5cfc6d --- /dev/null +++ b/move202503/AKAKing23/code/chain_back/index.ts @@ -0,0 +1,37 @@ +import Koa from 'koa'; +import bodyParser from 'koa-bodyparser'; +import session from 'koa-session'; +import router from './routes'; + +const app = new Koa(); +const PORT = process.env.PORT || 3001; + +// 配置session +app.keys = ['some secret hurr']; // cookie签名密钥,应该在实际项目中使用环境变量 +const SESSION_CONFIG = { + key: 'koa:sess', // cookie key + maxAge: 86400000, // cookie的过期时间,毫秒,默认是1天 + autoCommit: true, // 自动提交到响应头 + overwrite: true, // 是否可以重写 + httpOnly: true, // 是否只有服务器端可以访问 + signed: true, // 签名 + rolling: false, // 每次响应时刷新过期时间 + renew: false, // 快过期时刷新 +}; + +// 中间件 +app.use(session(SESSION_CONFIG, app)); +app.use(bodyParser()); + +// 路由 +app.use(router.routes()); +app.use(router.allowedMethods()); + +// 错误处理 +app.on('error', (err, ctx) => { + console.error('server error', err, ctx); +}); + +app.listen(PORT, () => { + console.log(`服务器已启动,监听端口 ${PORT}`); +}); diff --git a/move202503/AKAKing23/code/chain_back/package-lock.json b/move202503/AKAKing23/code/chain_back/package-lock.json new file mode 100644 index 00000000..f48aa04d --- /dev/null +++ b/move202503/AKAKing23/code/chain_back/package-lock.json @@ -0,0 +1,2344 @@ +{ + "name": "chain-back", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "chain-back", + "version": "1.0.0", + "dependencies": { + "@coze/api": "^1.2.0", + "@koa/cors": "^5.0.0", + "@types/koa-session": "^6.4.5", + "koa": "^2.14.2", + "koa-bodyparser": "^4.4.1", + "koa-router": "^12.0.1", + "koa-session": "^7.0.2" + }, + "devDependencies": { + "@types/koa": "^2.13.8", + "@types/koa__cors": "^5.0.0", + "@types/koa-bodyparser": "^4.3.10", + "@types/koa-router": "^7.4.5", + "@types/node": "^20.6.0", + "nodemon": "^3.0.1", + "ts-node": "^10.9.1", + "typescript": "^5.2.2" + } + }, + "node_modules/@agora-js/media": { + "version": "4.23.2", + "resolved": "https://registry.npmmirror.com/@agora-js/media/-/media-4.23.2.tgz", + "integrity": "sha512-mWbl/ZjAw4tT22Ks0O2CJLMX3ht4uKPsDm2+fb5XOalrUVNzJOtwJA4E36d/o4ZfVtvwiJAOYtuTpoib8LlLgQ==", + "license": "MIT", + "dependencies": { + "@agora-js/report": "4.23.2", + "@agora-js/shared": "4.23.2", + "agora-rte-extension": "^1.2.4", + "axios": "1.7.9", + "webrtc-adapter": "8.2.0" + } + }, + "node_modules/@agora-js/media/node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@agora-js/report": { + "version": "4.23.2", + "resolved": "https://registry.npmmirror.com/@agora-js/report/-/report-4.23.2.tgz", + "integrity": "sha512-enHyWN5uF0RuS1crlHUlTfBZ7yy3n2zvSqt2odvsz4S1DZ0DlYQoCHFbr5CBOhN+Zb3bLEWxY3ej/2kUMqCQBA==", + "license": "MIT", + "dependencies": { + "@agora-js/shared": "4.23.2", + "axios": "1.7.9" + } + }, + "node_modules/@agora-js/report/node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@agora-js/shared": { + "version": "4.23.2", + "resolved": "https://registry.npmmirror.com/@agora-js/shared/-/shared-4.23.2.tgz", + "integrity": "sha512-DaeqskGUWero8SeqU0QeYEfJu4OcPIIltiQ0PRyMbyVa4HL7vCzr6gRZkef9sFMVyJPNe0QXL7gdX132kA2uhg==", + "license": "MIT", + "dependencies": { + "axios": "1.7.9", + "ua-parser-js": "^0.7.34" + } + }, + "node_modules/@agora-js/shared/node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@coze/api": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@coze/api/-/api-1.2.0.tgz", + "integrity": "sha512-nmtgV6HC9+z/FRclXvBOM3JyE1S4BHA8bc1+wkraIdDJ3AA2to55nQNSqbNlHiO/3OcxfBTVjwlhAtL0DcguRA==", + "license": "MIT", + "dependencies": { + "agora-extension-ai-denoiser": "^1.0.0", + "agora-rtc-sdk-ng": "^4.23.2", + "agora-rte-extension": "^1.2.4", + "jsonwebtoken": "^9.0.2", + "node-fetch": "^2.x", + "reconnecting-websocket": "^4.4.0", + "uuid": "^10.0.0", + "ws": "^8.11.0" + }, + "peerDependencies": { + "axios": "^1.7.1" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "license": "BSD-3-Clause" + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@koa/cors": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/@koa/cors/-/cors-5.0.0.tgz", + "integrity": "sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==", + "license": "MIT", + "dependencies": { + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmmirror.com/@types/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmmirror.com/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/content-disposition": { + "version": "0.5.8", + "resolved": "https://registry.npmmirror.com/@types/content-disposition/-/content-disposition-0.5.8.tgz", + "integrity": "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==", + "license": "MIT" + }, + "node_modules/@types/cookies": { + "version": "0.9.0", + "resolved": "https://registry.npmmirror.com/@types/cookies/-/cookies-0.9.0.tgz", + "integrity": "sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/@types/express/-/express-5.0.1.tgz", + "integrity": "sha512-UZUw8vjpWFXuDnjFTh7/5c2TWDlQqeXHi6hcN7F2XSVT5P+WmUnnbFS3KA6Jnc6IsEqI2qCVu2bK0R0J4A8ZQQ==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.0.6", + "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-assert": { + "version": "1.5.6", + "resolved": "https://registry.npmmirror.com/@types/http-assert/-/http-assert-1.5.6.tgz", + "integrity": "sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "license": "MIT" + }, + "node_modules/@types/keygrip": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@types/keygrip/-/keygrip-1.0.6.tgz", + "integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==", + "license": "MIT" + }, + "node_modules/@types/koa": { + "version": "2.15.0", + "resolved": "https://registry.npmmirror.com/@types/koa/-/koa-2.15.0.tgz", + "integrity": "sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==", + "license": "MIT", + "dependencies": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" + } + }, + "node_modules/@types/koa__cors": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/@types/koa__cors/-/koa__cors-5.0.0.tgz", + "integrity": "sha512-LCk/n25Obq5qlernGOK/2LUwa/2YJb2lxHUkkvYFDOpLXlVI6tKcdfCHRBQnOY4LwH6el5WOLs6PD/a8Uzau6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/koa-bodyparser": { + "version": "4.3.12", + "resolved": "https://registry.npmmirror.com/@types/koa-bodyparser/-/koa-bodyparser-4.3.12.tgz", + "integrity": "sha512-hKMmRMVP889gPIdLZmmtou/BijaU1tHPyMNmcK7FAHAdATnRcGQQy78EqTTxLH1D4FTsrxIzklAQCso9oGoebQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/koa-compose": { + "version": "3.2.8", + "resolved": "https://registry.npmmirror.com/@types/koa-compose/-/koa-compose-3.2.8.tgz", + "integrity": "sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==", + "license": "MIT", + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/koa-router": { + "version": "7.4.8", + "resolved": "https://registry.npmmirror.com/@types/koa-router/-/koa-router-7.4.8.tgz", + "integrity": "sha512-SkWlv4F9f+l3WqYNQHnWjYnyTxYthqt8W9az2RTdQW7Ay8bc00iRZcrb8MC75iEfPqnGcg2csEl8tTG1NQPD4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/koa-session": { + "version": "6.4.5", + "resolved": "https://registry.npmmirror.com/@types/koa-session/-/koa-session-6.4.5.tgz", + "integrity": "sha512-Vc6+fslnPuMH2v9y80WYeo39UMo8mweuNNthKCwYU2ZE6l5vnRrzRU3BRvexKwsoI5sxsRl5CxDsBlLI8kY/XA==", + "license": "MIT", + "dependencies": { + "@types/cookies": "*", + "@types/koa": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.17.30", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.17.30.tgz", + "integrity": "sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/qs": { + "version": "6.9.18", + "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmmirror.com/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agora-extension-ai-denoiser": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/agora-extension-ai-denoiser/-/agora-extension-ai-denoiser-1.1.0.tgz", + "integrity": "sha512-g4klzzz7IQblNt0c+gJ/DM7sa5oMZ/7GWE4c9aqs3snHRAo+CjDieT84iAc1KUhAiY84RrfhyFdtpvbbEoYBcA==", + "license": "MIT", + "peerDependencies": { + "agora-rtc-sdk-ng": ">=4.15.0" + } + }, + "node_modules/agora-rtc-sdk-ng": { + "version": "4.23.2", + "resolved": "https://registry.npmmirror.com/agora-rtc-sdk-ng/-/agora-rtc-sdk-ng-4.23.2.tgz", + "integrity": "sha512-uZcJVJ0g4PJfCqnlcP9kFU6y/2n9uIlRSljRFnK2FNLHo8nlB8Vc0pf5Gs4n75PmThC4u1G2FvL4k7iFau6boQ==", + "license": "MIT", + "dependencies": { + "@agora-js/media": "4.23.2", + "@agora-js/report": "4.23.2", + "@agora-js/shared": "4.23.2", + "agora-rte-extension": "^1.2.4", + "axios": "1.7.9", + "formdata-polyfill": "^4.0.7", + "pako": "^2.1.0", + "ua-parser-js": "^0.7.34", + "webrtc-adapter": "8.2.0" + } + }, + "node_modules/agora-rtc-sdk-ng/node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/agora-rte-extension": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/agora-rte-extension/-/agora-rte-extension-1.2.4.tgz", + "integrity": "sha512-0ovZz1lbe30QraG1cU+ji7EnQ8aUu+Hf3F+a8xPml3wPOyUQEK6CTdxV9kMecr9t+fIDrGeW7wgJTsM1DQE7Nw==", + "license": "ISC" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.8.4", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "license": "MIT", + "peer": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "license": "MIT", + "dependencies": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/co-body": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/co-body/-/co-body-6.2.0.tgz", + "integrity": "sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA==", + "license": "MIT", + "dependencies": { + "@hapi/bourne": "^3.0.0", + "inflation": "^2.0.0", + "qs": "^6.5.2", + "raw-body": "^2.3.3", + "type-is": "^1.6.16" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookies": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==", + "license": "MIT" + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmmirror.com/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "license": "MIT", + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmmirror.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "license": "MIT", + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true, + "license": "ISC" + }, + "node_modules/inflation": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/inflation/-/inflation-2.1.0.tgz", + "integrity": "sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-type-of": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-type-of/-/is-type-of-2.2.0.tgz", + "integrity": "sha512-72axShMJMnMy5HSU/jLGNOonZD5rWM0MwJSCYpKCTQCbggQZBJO/CLMMVP5HgS8kPSYFBkTysJexsD6NMvGKDQ==", + "license": "MIT" + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmmirror.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "license": "MIT", + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa": { + "version": "2.16.1", + "resolved": "https://registry.npmmirror.com/koa/-/koa-2.16.1.tgz", + "integrity": "sha512-umfX9d3iuSxTQP4pnzLOz0HKnPg0FaUUIKcye2lOiz3KPu1Y3M3xlz76dISdFPQs37P9eJz1wUpcTS6KDPn9fA==", + "license": "MIT", + "dependencies": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.9.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "engines": { + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" + } + }, + "node_modules/koa-bodyparser": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/koa-bodyparser/-/koa-bodyparser-4.4.1.tgz", + "integrity": "sha512-kBH3IYPMb+iAXnrxIhXnW+gXV8OTzCu8VPDqvcDHW9SQrbkHmqPQtiZwrltNmSq6/lpipHnT7k7PsjlVD7kK0w==", + "license": "MIT", + "dependencies": { + "co-body": "^6.0.0", + "copy-to": "^2.0.1", + "type-is": "^1.6.18" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "license": "MIT" + }, + "node_modules/koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "license": "MIT", + "dependencies": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/koa-router": { + "version": "12.0.1", + "resolved": "https://registry.npmmirror.com/koa-router/-/koa-router-12.0.1.tgz", + "integrity": "sha512-gaDdj3GtzoLoeosacd50kBBTnnh3B9AYxDThQUo4sfUyXdOhY6ku1qyZKW88tQCRgc3Sw6ChXYXWZwwgjOxE0w==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "http-errors": "^2.0.0", + "koa-compose": "^4.1.0", + "methods": "^1.1.2", + "path-to-regexp": "^6.2.1" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/koa-router/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/koa-router/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/koa-session": { + "version": "7.0.2", + "resolved": "https://registry.npmmirror.com/koa-session/-/koa-session-7.0.2.tgz", + "integrity": "sha512-nMWJndLmIuKQMTYPr5NokGQOGD2Aqal5GVi1xAhrQjrrzKq1ASy1WTFVkZ/xhwhtC4KpWi5KdqNYewZo7KJb4w==", + "license": "MIT", + "dependencies": { + "crc": "^3.8.0", + "is-type-of": "^2.2.0", + "zod": "^3.24.1" + }, + "engines": { + "node": ">= 18.19.0" + } + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmmirror.com/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/nodemon": { + "version": "3.1.9", + "resolved": "https://registry.npmmirror.com/nodemon/-/nodemon-3.1.9.tgz", + "integrity": "sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/only": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" + }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmmirror.com/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true, + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reconnecting-websocket": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", + "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==", + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sdp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/sdp/-/sdp-3.2.0.tgz", + "integrity": "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "license": "ISC", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmmirror.com/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "license": "MIT", + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.40", + "resolved": "https://registry.npmmirror.com/ua-parser-js/-/ua-parser-js-0.7.40.tgz", + "integrity": "sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/webrtc-adapter": { + "version": "8.2.0", + "resolved": "https://registry.npmmirror.com/webrtc-adapter/-/webrtc-adapter-8.2.0.tgz", + "integrity": "sha512-umxCMgedPAVq4Pe/jl3xmelLXLn4XZWFEMR5Iipb5wJ+k1xMX0yC4ZY9CueZUU1MjapFxai1tFGE7R/kotH6Ww==", + "license": "BSD-3-Clause", + "dependencies": { + "sdp": "^3.0.2" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=3.10.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/ylru": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/ylru/-/ylru-1.4.0.tgz", + "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/zod": { + "version": "3.24.3", + "resolved": "https://registry.npmmirror.com/zod/-/zod-3.24.3.tgz", + "integrity": "sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/move202503/AKAKing23/code/chain_back/package.json b/move202503/AKAKing23/code/chain_back/package.json new file mode 100644 index 00000000..34b4fb8b --- /dev/null +++ b/move202503/AKAKing23/code/chain_back/package.json @@ -0,0 +1,30 @@ +{ + "name": "chain-back", + "version": "1.0.0", + "description": "Koa backend server for LearnChain-X", + "main": "index.ts", + "scripts": { + "start": "ts-node index.ts", + "dev": "nodemon --exec ts-node index.ts", + "build": "tsc" + }, + "dependencies": { + "@coze/api": "^1.2.0", + "@koa/cors": "^5.0.0", + "@types/koa-session": "^6.4.5", + "koa": "^2.14.2", + "koa-bodyparser": "^4.4.1", + "koa-router": "^12.0.1", + "koa-session": "^7.0.2" + }, + "devDependencies": { + "@types/koa": "^2.13.8", + "@types/koa__cors": "^5.0.0", + "@types/koa-bodyparser": "^4.3.10", + "@types/koa-router": "^7.4.5", + "@types/node": "^20.6.0", + "nodemon": "^3.0.1", + "ts-node": "^10.9.1", + "typescript": "^5.2.2" + } +} diff --git a/move202503/AKAKing23/code/chain_back/routes/index.ts b/move202503/AKAKing23/code/chain_back/routes/index.ts new file mode 100644 index 00000000..d11641af --- /dev/null +++ b/move202503/AKAKing23/code/chain_back/routes/index.ts @@ -0,0 +1,360 @@ +import Router from "koa-router"; +import { Context } from "koa"; +import { CozeAPI } from "@coze/api"; +import cors from "@koa/cors"; + +const router = new Router(); + +// 使用内存Map临时存储问题数据 +// 注意:这只适合开发环境,实际生产环境应该使用数据库或Redis +const questionsStore = new Map(); + +const base64EncodedString = + "cGF0X2RnUVRqSTRSNlR2T3ZHcHVLMkZ0NEQxT2dCOWg0YjVNVHRRZDZQckFPTndmZ2ljM3dEem9FUWVMR0JOb2VHQk4="; // "Hello world!" 的Base64编码 + +const decodedBuffer = Buffer.from(base64EncodedString, "base64"); +const decodedString = decodedBuffer.toString("utf-8"); + +const apiClient = new CozeAPI({ + token: decodedString, + baseURL: "https://api.coze.cn", +}); + +// 添加CORS中间件 +router.use( + cors({ + origin: "*", // 允许所有来源访问 + allowMethods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"], + allowHeaders: ["Content-Type", "Authorization", "Accept"], + credentials: true, + }) +); + +// 基本 GET 请求示例 +router.get("/", async (ctx: Context) => { + ctx.body = { + status: "success", + message: "欢迎使用 LearnChain-X API", + }; +}); + +// POST 接口示例 +router.post("/api/submit", async (ctx: Context) => { + try { + const data = ctx.request.body; + + // 这里可以添加数据验证逻辑 + if (!data) { + ctx.status = 400; + ctx.body = { + status: "error", + message: "请提供有效的数据", + }; + return; + } + + // 这里可以添加数据处理逻辑 + // 例如:保存到数据库、调用其他服务等 + + // 返回处理结果 + ctx.status = 200; + ctx.body = { + status: "success", + message: "数据提交成功", + data: data, + }; + } catch (error) { + ctx.status = 500; + ctx.body = { + status: "error", + message: "服务器内部错误", + error: error instanceof Error ? error.message : "未知错误", + }; + } +}); + +// Coze API调用封装成POST请求 +router.post("/api/coze", async (ctx: Context) => { + try { + const requestBody = ctx.request.body as any; + const input = requestBody?.input || ""; + const userId = requestBody?.userId || "default"; // 用于区分不同用户的会话 + + if (!input) { + ctx.status = 400; + ctx.body = { + status: "error", + message: "请提供输入内容", + }; + return; + } + + const res = await apiClient.workflows.runs.create({ + workflow_id: "7494156103493287945", + parameters: { + input: input, + }, + }); + + // 从响应中提取题目数据并格式化 + let formattedData; + try { + // 尝试解析返回的数据 + const rawData = res.data as any; + + // 如果返回的是字符串,直接尝试解析 + let jsonData; + if (typeof rawData === 'string') { + try { + jsonData = JSON.parse(rawData); + } catch (e) { + // 如果不是合法的JSON字符串,尝试从字符串中提取JSON + const jsonMatch = rawData.match(/```json([\s\S]*?)```/) || + rawData.match(/\[([\s\S]*?)\]/); + + if (jsonMatch) { + jsonData = JSON.parse(jsonMatch[1].trim()); + } else { + throw new Error("无法从字符串中提取JSON"); + } + } + } else if (rawData && typeof rawData === 'object') { + // 如果是对象,检查reply字段 + const reply = rawData.reply || ''; + const jsonMatch = reply ? (reply.match(/```json([\s\S]*?)```/) || + reply.match(/\[([\s\S]*?)\]/)) : null; + + if (jsonMatch) { + jsonData = JSON.parse(jsonMatch[1].trim()); + } else if (typeof rawData.output === 'string') { + // 有些情况下可能直接返回输出字符串 + try { + jsonData = JSON.parse(rawData.output); + } catch { + jsonData = rawData; + } + } else { + jsonData = rawData; + } + } else { + throw new Error("无法解析返回的数据"); + } + + // 处理解析后的数据 + const questionsWithAnswers = Array.isArray(jsonData) ? jsonData : + (jsonData.output && Array.isArray(jsonData.output) ? jsonData.output : []); + + // 存储问题数据到Map + questionsStore.set(userId, questionsWithAnswers); + + // 去除答案字段 + const questionsWithoutAnswers = questionsWithAnswers.map((q: any) => { + const { answer, ...questionWithoutAnswer } = q; + return questionWithoutAnswer; + }); + + formattedData = { + output: questionsWithoutAnswers + }; + } catch (error) { + console.error("格式化数据失败", error); + formattedData = { output: [] }; // 如果解析失败,返回空数组 + } + + ctx.status = 200; + ctx.body = { + status: "success", + message: "Coze API调用成功", + data: formattedData, + }; + } catch (error) { + ctx.status = 500; + ctx.body = { + status: "error", + message: "调用Coze API失败", + error: error instanceof Error ? error.message : "未知错误", + }; + } +}); + +// 添加验证答案的接口 +router.post("/api/verify-answer", async (ctx: Context) => { + try { + const requestBody = ctx.request.body as any; + const { questionIndex, selectedOption } = requestBody; + const userId = requestBody?.userId || "default"; // 用于获取对应用户的问题数据 + + // 获取之前存储的问题数据 + const questions = questionsStore.get(userId); + + if (!questions || !questions[questionIndex]) { + ctx.status = 400; + ctx.body = { + status: "error", + message: "问题不存在或会话已过期", + }; + return; + } + + const question = questions[questionIndex]; + + // 处理不同格式的答案 + let correctAnswer; + let correctOptionLetter = ""; + let isCorrect = false; + + if (question.answer !== undefined) { + correctAnswer = question.answer; + + // 如果答案是数字 + if (typeof correctAnswer === 'number') { + isCorrect = selectedOption === correctAnswer; + correctOptionLetter = String.fromCharCode(65 + correctAnswer); // 将数字转换为A,B,C,D + } + // 如果答案是以选项前缀开头的字符串,如"A. 正确答案",或"B. 选项内容" + else if (typeof correctAnswer === 'string') { + // 检查是否以字母前缀开头 (如 A. B. C. 等) + if (/^[A-D]\.?\s/.test(correctAnswer)) { + const letterIndex = correctAnswer.charCodeAt(0) - 65; // 'A' 的 ASCII 码是 65 + isCorrect = selectedOption === letterIndex; + correctOptionLetter = correctAnswer.charAt(0); + } + // 直接匹配选项内容 + else { + let foundIndex = -1; + for (let i = 0; i < question.options.length; i++) { + const optionContent = question.options[i].replace(/^[A-D]\.?\s/, ''); + if (optionContent.includes(correctAnswer) || correctAnswer.includes(optionContent)) { + foundIndex = i; + break; + } + } + + if (foundIndex !== -1) { + isCorrect = selectedOption === foundIndex; + correctOptionLetter = String.fromCharCode(65 + foundIndex); + } + } + } + } + + // 对所有ABCD字母答案进行通用处理 + if (typeof correctAnswer === 'string') { + // 直接处理单个字母答案 (A, B, C, D) + if (/^[A-D]$/.test(correctAnswer)) { + const letterIndex = correctAnswer.charCodeAt(0) - 65; // 'A'的ASCII码是65 + isCorrect = selectedOption === letterIndex; + correctOptionLetter = correctAnswer; + } + // 处理带点格式 (A., B., C., D.) + else if (/^[A-D]\.$/.test(correctAnswer)) { + const letterIndex = correctAnswer.charCodeAt(0) - 65; + isCorrect = selectedOption === letterIndex; + correctOptionLetter = correctAnswer.charAt(0); + } + // 处理带空格格式 (A xxx, B xxx, C xxx, D xxx) + else if (/^[A-D] /.test(correctAnswer)) { + const letterIndex = correctAnswer.charCodeAt(0) - 65; + isCorrect = selectedOption === letterIndex; + correctOptionLetter = correctAnswer.charAt(0); + } + } + + ctx.status = 200; + ctx.body = { + status: "success", + data: { + isCorrect, + correctAnswer: correctAnswer || "", + correctOptionLetter: correctOptionLetter, // 添加ABCD格式的正确答案 + explanation: question.explanation || "" + } + }; + } catch (error) { + ctx.status = 500; + ctx.body = { + status: "error", + message: "验证答案失败", + error: error instanceof Error ? error.message : "未知错误", + }; + } +}); + +// 获取问题答案与解析的接口 +router.get("/api/question-solution", async (ctx: Context) => { + try { + const questionIndex = ctx.query.questionIndex ? parseInt(ctx.query.questionIndex as string) : undefined; + const userId = ctx.query.userId as string || "default"; // 用于获取对应用户的问题数据 + + if (questionIndex === undefined) { + ctx.status = 400; + ctx.body = { + status: "error", + message: "请提供问题索引", + }; + return; + } + + // 获取之前存储的问题数据 + const questions = questionsStore.get(userId); + + if (!questions || !questions[questionIndex]) { + ctx.status = 404; + ctx.body = { + status: "error", + message: "问题不存在或会话已过期", + }; + return; + } + + const question = questions[questionIndex]; + + // 计算正确答案的字母表示(A、B、C、D) + let correctOptionLetter = ""; + if (question.answer !== undefined) { + const correctAnswer = question.answer; + + if (typeof correctAnswer === 'number') { + correctOptionLetter = String.fromCharCode(65 + correctAnswer); + } else if (typeof correctAnswer === 'string') { + if (/^[A-D]\.?\s/.test(correctAnswer)) { + correctOptionLetter = correctAnswer.charAt(0); + } else { + let foundIndex = -1; + for (let i = 0; i < question.options.length; i++) { + const optionContent = question.options[i].replace(/^[A-D]\.?\s/, ''); + if (optionContent.includes(correctAnswer) || correctAnswer.includes(optionContent)) { + foundIndex = i; + break; + } + } + + if (foundIndex !== -1) { + correctOptionLetter = String.fromCharCode(65 + foundIndex); + } + } + } + } + + ctx.status = 200; + ctx.body = { + status: "success", + data: { + question: question.question, + options: question.options, + answer: question.answer, + correctOptionLetter: correctOptionLetter, // 添加ABCD格式的正确答案 + explanation: question.explanation || "暂无解析" + } + }; + } catch (error) { + ctx.status = 500; + ctx.body = { + status: "error", + message: "获取答案解析失败", + error: error instanceof Error ? error.message : "未知错误", + }; + } +}); + +export default router; diff --git a/move202503/AKAKing23/code/chain_back/tsconfig.json b/move202503/AKAKing23/code/chain_back/tsconfig.json new file mode 100644 index 00000000..3e4a1bf7 --- /dev/null +++ b/move202503/AKAKing23/code/chain_back/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "ES2018", + "module": "commonjs", + "lib": ["es2018", "esnext.asynciterable"], + "outDir": "./dist", + "rootDir": "./", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true + }, + "include": ["./**/*.ts"], + "exclude": ["node_modules", "dist"] +} \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_contract/.gitignore b/move202503/AKAKing23/code/chain_contract/.gitignore new file mode 100644 index 00000000..a007feab --- /dev/null +++ b/move202503/AKAKing23/code/chain_contract/.gitignore @@ -0,0 +1 @@ +build/* diff --git a/move202503/AKAKing23/code/chain_contract/Move.lock b/move202503/AKAKing23/code/chain_contract/Move.lock new file mode 100644 index 00000000..e62d8501 --- /dev/null +++ b/move202503/AKAKing23/code/chain_contract/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "89DADE7C58C92FEA5CF0D861DB274BBF0124B711F3752F48A2D9831C87D5679D" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.42.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0xca85ff8d356ddaa0cb68696b11b8b7cc77d1c5bda3effd7a54a69dcb2b4b2465" +latest-published-id = "0xca85ff8d356ddaa0cb68696b11b8b7cc77d1c5bda3effd7a54a69dcb2b4b2465" +published-version = "1" diff --git a/move202503/AKAKing23/code/chain_contract/Move.toml b/move202503/AKAKing23/code/chain_contract/Move.toml new file mode 100644 index 00000000..cbc515b2 --- /dev/null +++ b/move202503/AKAKing23/code/chain_contract/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "chain_contract" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet", override = true } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +chain_contract = "0x0" +sui = "0x2" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/move202503/AKAKing23/code/chain_contract/sources/allowlist.move b/move202503/AKAKing23/code/chain_contract/sources/allowlist.move new file mode 100644 index 00000000..1fe99ec1 --- /dev/null +++ b/move202503/AKAKing23/code/chain_contract/sources/allowlist.move @@ -0,0 +1,49 @@ +module chain_contract::allowlist; + +use std::vector; +use sui::object::{Self, UID}; +use sui::tx_context::{Self, TxContext}; +use sui::transfer; + +// Error codes +const ENotInAllowlist: u64 = 0; +const ENotOwner: u64 = 1; + +public struct Allowlist has key, store { + id: UID, + addresses: vector
, + owner: address, +} + +// 初始化一个新的白名单 +public fun initialize(ctx: &mut TxContext): Allowlist { + Allowlist { + id: object::new(ctx), + addresses: vector::empty
(), + owner: tx_context::sender(ctx), + } +} + +// 创建并转移白名单给创建者 +public entry fun create_allowlist(ctx: &mut TxContext) { + let allowlist = initialize(ctx); + transfer::transfer(allowlist, tx_context::sender(ctx)); +} + +// 添加用户到白名单 +public entry fun add_to_allowlist(allowlist: &mut Allowlist, user: address, ctx: &TxContext) { + // 检查操作者是否是白名单的拥有者 + assert!(allowlist.owner == tx_context::sender(ctx), ENotOwner); + + // 只有当地址不在列表中时才添加 + if (!vector::contains(&allowlist.addresses, &user)) { + vector::push_back(&mut allowlist.addresses, user); + } +} + +// This function checks if an address is in the allowlist +entry fun seal_approve(id: vector, allowlist: &Allowlist, user: address) { + let is_allowed = vector::contains(&allowlist.addresses, &user); + assert!(is_allowed, ENotInAllowlist); + // If we get here, access is granted +} diff --git a/move202503/AKAKing23/code/chain_contract/sources/chain_contract.move b/move202503/AKAKing23/code/chain_contract/sources/chain_contract.move new file mode 100644 index 00000000..2682c70f --- /dev/null +++ b/move202503/AKAKing23/code/chain_contract/sources/chain_contract.move @@ -0,0 +1,155 @@ +/** + * LearnChain-X 系统核心合约 + * 此模块负责整个系统的配置管理和版本控制 + */ +module chain_contract::chain_contract; + +use std::string::{Self, String}; +use sui::object::{Self, UID}; +use sui::table::{Self, Table}; +use sui::transfer; +use sui::tx_context::{Self, TxContext}; + +// 错误码 +/// 当操作者不是系统管理员时返回此错误 +const ENotAuthorized: u64 = 0; + +/** + * 系统配置结构 + * 存储系统的全局参数和配置信息 + */ +public struct SystemConfig has key { + id: UID, + /// 系统当前版本号,用于版本控制 + version: u64, + /// 系统名称 + name: String, + /// 系统管理员地址,只有管理员可以更改系统设置 + admin: address, + /// 系统动态参数表,可存储各种配置值 + params: Table, +} + +/** + * 初始化系统配置 + * 在模块部署时自动执行一次 + * 创建系统配置对象并设置默认参数 + */ +fun init(ctx: &mut TxContext) { + let params = table::new(ctx); + + // 添加默认系统参数 + // 答题奖励积分的最小值 + // table::add(&mut params, string::utf8(b"min_reward"), string::utf8(b"1")); + // // 答题奖励积分的最大值 + // table::add(&mut params, string::utf8(b"max_reward"), string::utf8(b"100")); + // // 查看解析所需的最低积分成本 + // table::add(&mut params, string::utf8(b"min_solution_cost"), string::utf8(b"5")); + + // 创建系统配置对象 + let config = SystemConfig { + id: object::new(ctx), + version: 1, // 初始版本号为1 + name: string::utf8(b"LearnChain-X Quiz System"), + admin: tx_context::sender(ctx), // 部署者成为初始管理员 + params, + }; + + // 共享系统配置对象,使其全局可访问 + transfer::share_object(config); +} + +/** + * 更新系统参数 + * @param config - 系统配置对象 + * @param param_name - 参数名称 + * @param param_value - 参数值 + * @param ctx - 交易上下文 + */ +public entry fun update_param( + config: &mut SystemConfig, + param_name: String, + param_value: String, + ctx: &mut TxContext, +) { + // 验证调用者是否为系统管理员 + assert!(tx_context::sender(ctx) == config.admin, ENotAuthorized); + + // 检查参数是否已存在 + if (table::contains(&config.params, param_name)) { + // 更新现有参数值 + *table::borrow_mut(&mut config.params, param_name) = param_value; + } else { + // 添加新参数 + table::add(&mut config.params, param_name, param_value); + } +} + +/** + * 更新系统版本号 + * @param config - 系统配置对象 + * @param new_version - 新版本号 + * @param ctx - 交易上下文 + */ +public entry fun update_version(config: &mut SystemConfig, new_version: u64, ctx: &mut TxContext) { + // 验证调用者是否为系统管理员 + assert!(tx_context::sender(ctx) == config.admin, ENotAuthorized); + // 确保新版本号大于当前版本号(版本只能递增) + assert!(new_version > config.version, ENotAuthorized); + + // 更新版本号 + config.version = new_version; +} + +/** + * 更新系统管理员 + * @param config - 系统配置对象 + * @param new_admin - 新管理员地址 + * @param ctx - 交易上下文 + */ +public entry fun update_admin(config: &mut SystemConfig, new_admin: address, ctx: &mut TxContext) { + // 验证调用者是否为当前系统管理员 + assert!(tx_context::sender(ctx) == config.admin, ENotAuthorized); + + // 更新管理员地址 + config.admin = new_admin; +} + +/** + * 获取系统当前版本号 + * @param config - 系统配置对象 + * @return 当前版本号 + */ +public fun get_version(config: &SystemConfig): u64 { + config.version +} + +/** + * 获取系统名称 + * @param config - 系统配置对象 + * @return 系统名称 + */ +public fun get_name(config: &SystemConfig): String { + config.name +} + +/** + * 获取指定系统参数的值 + * @param config - 系统配置对象 + * @param param_name - 参数名称 + * @return 参数值 + */ +public fun get_param(config: &SystemConfig, param_name: &String): String { + assert!(table::contains(&config.params, *param_name), 1); + *table::borrow(&config.params, *param_name) +} + +/** + * 检查指定地址是否为系统管理员 + * @param config - 系统配置对象 + * @param addr - 待检查的地址 + * @return 是否为管理员 + */ +public fun is_admin(config: &SystemConfig, addr: address): bool { + config.admin == addr +} diff --git a/move202503/AKAKing23/code/chain_contract/sources/point_token.move b/move202503/AKAKing23/code/chain_contract/sources/point_token.move new file mode 100644 index 00000000..8e98914f --- /dev/null +++ b/move202503/AKAKing23/code/chain_contract/sources/point_token.move @@ -0,0 +1,426 @@ +/** + * 积分代币模块 + * 实现了ERC20风格的代币,用于答题系统的奖励和支付 + * 用户答对题目获得积分,查看解析需要消耗积分 + * 设计为去中心化模式,用户可以直接获得积分奖励 + */ +module chain_contract::point_token; + +use std::option; +use std::string; +use std::ascii; +use sui::balance::{Self, Balance}; +use sui::coin::{Self, Coin, TreasuryCap}; +use sui::event; +use sui::object::{Self, UID}; +use sui::package; +use sui::table::{Self, Table}; +use sui::transfer; +use sui::tx_context::{Self, TxContext}; +use sui::url; + +// 错误码定义 +/// 代币余额不足错误 +const EInsufficientBalance: u64 = 0; +/// 操作未被授权错误 +const ENotAuthorized: u64 = 1; +/// 重复回答问题错误 +const EAlreadyAnswered: u64 = 2; +/// 问题不存在错误 +const EQuestionNotFound: u64 = 3; +/// 答案不正确错误 +const EIncorrectAnswer: u64 = 4; + +/// 定义积分代币类型 - 使用模块名称的全部大写版本作为one-time witness +public struct POINT_TOKEN has drop {} + +/** + * 问题结构体 + * 存储问题相关信息 + */ +public struct Question has key, store { + id: UID, + /// 问题ID + question_id: u64, + /// 问题内容 + content: string::String, + /// 正确答案 + correct_answer: string::String, + /// 奖励积分数量 + reward_points: u64, +} + +/** + * 答题管理器结构 + * 控制积分代币的发行和管理,并存储问题与用户答题记录 + */ +public struct QuizManager has key { + id: UID, + /// 积分代币的铸币权,用于创建新代币 + treasury_cap: TreasuryCap, + /// 管理员地址,只有管理员可以添加问题 + admin: address, + /// 存储用户已答题记录,防止重复奖励 + /// 格式: (用户地址, 问题ID) => 是否已回答 + user_answers: Table>, + /// 下一个问题ID + next_question_id: u64, +} + +/** + * 答案解析结构 + * 存储特定问题的解析内容和所需的查看费用 + */ +public struct SolutionContent has key, store { + id: UID, + /// 关联的问题ID + question_id: u64, + /// 解析内容 + content: string::String, + /// 查看解析所需的代币数量 + token_cost: u64, +} + +// 事件定义 +/** + * 答题完成事件 + * 当用户完成答题时触发,记录答题结果 + */ +public struct QuizCompleted has copy, drop { + /// 用户地址 + user: address, + /// 问题ID + question_id: u64, + /// 是否回答正确 + is_correct: bool, + /// 获得的积分(如果回答正确) + points_earned: u64, +} + +/** + * 查看解析事件 + * 当用户查看题目解析时触发 + */ +public struct SolutionViewed has copy, drop { + /// 用户地址 + user: address, + /// 问题ID + question_id: u64, + /// 消耗的代币数量 + tokens_spent: u64, +} + +/** + * 问题添加事件 + * 当管理员添加新问题时触发 + */ +public struct QuestionAdded has copy, drop { + /// 问题ID + question_id: u64, + /// 奖励积分 + reward_points: u64, +} + +/** + * 模块初始化函数,自动调用 + * 当模块首次发布时由框架自动调用 + */ +fun init(witness: POINT_TOKEN, ctx: &mut TxContext) { + // 使用one-time witness创建代币 + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, // 小数位数 + b"POINT", // 符号 + b"Quiz Points", // 名称 + b"Points earned from answering questions correctly", // 描述 + option::some(url::new_unsafe(std::ascii::string(b"https://learnchainx.netlify.app/logo.png"))), // 图标URL + ctx, + ); + + // 转移元数据给发布者 + transfer::public_transfer(metadata, tx_context::sender(ctx)); + + // 创建Quiz管理器实例 + let quiz_manager = QuizManager { + id: object::new(ctx), + treasury_cap, + admin: tx_context::sender(ctx), + user_answers: table::new(ctx), + next_question_id: 0, + }; + + // 将管理器共享为全局对象,使任何人都能访问和使用 + transfer::share_object(quiz_manager); +} + +/** + * 添加新问题 + * 创建并共享新的问题对象 + * @param manager - 管理器实例 + * @param content - 问题内容 + * @param correct_answer - 正确答案 + * @param reward_points - 答对奖励的积分 + * @param solution_content - 解析内容 + * @param token_cost - 查看解析所需积分 + * @param ctx - 交易上下文 + */ +public entry fun add_question( + manager: &mut QuizManager, + content: string::String, + correct_answer: string::String, + reward_points: u64, + solution_content: string::String, + token_cost: u64, + ctx: &mut TxContext, +) { + // 获取并递增问题ID + let question_id = manager.next_question_id; + manager.next_question_id = question_id + 1; + + // 创建问题对象 + let question = Question { + id: object::new(ctx), + question_id, + content, + correct_answer, + reward_points, + }; + + // 创建解析对象 + let solution = SolutionContent { + id: object::new(ctx), + question_id, + content: solution_content, + token_cost, + }; + + // 共享问题和解析对象,使其可被所有人访问 + transfer::share_object(question); + transfer::share_object(solution); + + // 发出问题添加事件 + event::emit(QuestionAdded { + question_id, + reward_points, + }); +} + +/** + * 用户回答问题 - 简化版 + * 直接奖励用户积分,不验证答案(前端已验证) + * @param manager - 管理器实例 + * @param question - 问题对象 + * @param user - 接收奖励的用户地址 + * @param ctx - 交易上下文 + */ +public entry fun reward_correct_answer( + manager: &mut QuizManager, + question: &Question, + user: address, + ctx: &mut TxContext, +) { + let question_id = question.question_id; + + // 检查用户是否已经回答过这个问题 + if (!table::contains(&manager.user_answers, user)) { + table::add(&mut manager.user_answers, user, table::new(ctx)); + }; + + let user_question_table = table::borrow_mut(&mut manager.user_answers, user); + + // 确保用户没有重复获取奖励 + assert!(!table::contains(user_question_table, question_id), EAlreadyAnswered); + + // 记录用户已回答这个问题 + table::add(user_question_table, question_id, true); + + // 铸造积分 + let points = question.reward_points; + let points_coin = coin::mint(&mut manager.treasury_cap, points, ctx); + + // 转移给用户 + transfer::public_transfer(points_coin, user); + + // 发出事件 + event::emit(QuizCompleted { + user, + question_id, + is_correct: true, + points_earned: points, + }); +} + +/** + * 用户回答问题(原始方法,保留但不推荐使用) + * 验证答案并自动奖励积分 + * @param manager - 管理器实例 + * @param question - 问题对象 + * @param answer - 用户的答案 + * @param ctx - 交易上下文 + */ +public entry fun answer_question( + manager: &mut QuizManager, + question: &Question, + answer: string::String, + ctx: &mut TxContext, +) { + let user = tx_context::sender(ctx); + let question_id = question.question_id; + + // 检查用户是否已经回答过这个问题 + if (!table::contains(&manager.user_answers, user)) { + table::add(&mut manager.user_answers, user, table::new(ctx)); + }; + + let user_question_table = table::borrow_mut(&mut manager.user_answers, user); + + assert!(!table::contains(user_question_table, question_id), EAlreadyAnswered); + + // 验证答案 + let is_correct = string::bytes(&question.correct_answer) == string::bytes(&answer); + + // 记录用户已回答这个问题 + table::add(user_question_table, question_id, true); + + // 如果答案正确,奖励积分 + if (is_correct) { + // 铸造积分 + let points = question.reward_points; + let points_coin = coin::mint(&mut manager.treasury_cap, points, ctx); + + // 转移给用户 + transfer::public_transfer(points_coin, user); + + // 发出事件 + event::emit(QuizCompleted { + user, + question_id, + is_correct: true, + points_earned: points, + }); + } else { + // 答案错误,只记录事件 + event::emit(QuizCompleted { + user, + question_id, + is_correct: false, + points_earned: 0, + }); + } +} + +/** + * 查看解析(消耗积分) + * 用户支付积分以查看问题解析 + * @param solution - 解析内容对象 + * @param payment - 用户的代币支付 + * @param ctx - 交易上下文 + */ +public entry fun view_solution( + solution: &SolutionContent, + payment: &mut Coin, + ctx: &mut TxContext, +) { + // 检查用户积分是否足够 + let required = solution.token_cost; + assert!(coin::value(payment) >= required, EInsufficientBalance); + + // 从用户的代币中扣除费用 + let burn_amount = coin::split(payment, required, ctx); + let burn_balance = coin::into_balance(burn_amount); + + // 记录事件 + event::emit(SolutionViewed { + user: tx_context::sender(ctx), + question_id: solution.question_id, + tokens_spent: required, + }); + + // 销毁代币 + balance::destroy_zero(burn_balance); +} + +/** + * 更改管理员 + * 修改管理器的管理员地址 + * @param manager - 管理器实例 + * @param new_admin - 新管理员地址 + * @param ctx - 交易上下文 + */ +public entry fun change_admin(manager: &mut QuizManager, new_admin: address, ctx: &mut TxContext) { + assert!(tx_context::sender(ctx) == manager.admin, ENotAuthorized); + manager.admin = new_admin; +} + +/** + * 铸造新代币给指定用户 + * 任何人都可以调用该函数为其他用户铸造代币 + * @param manager - 管理器实例 + * @param amount - 铸造数量 + * @param recipient - 接收者地址 + * @param ctx - 交易上下文 + */ +public entry fun mint_tokens( + manager: &mut QuizManager, + amount: u64, + recipient: address, + ctx: &mut TxContext, +) { + // 铸造积分 + let points_coin = coin::mint(&mut manager.treasury_cap, amount, ctx); + + // 转移给接收者 + transfer::public_transfer(points_coin, recipient); + + // 发出事件 + event::emit(QuizCompleted { + user: recipient, + question_id: 0, // 不与问题关联 + is_correct: true, + points_earned: amount, + }); +} + +/** + * 销毁用户代币 + * 用户可以将自己的代币销毁 + * @param manager - Quiz管理器 + * @param coin - 要销毁的代币 + */ +public entry fun burn_tokens( + manager: &mut QuizManager, + coin: Coin, +) { + // 销毁代币 + coin::burn(&mut manager.treasury_cap, coin); +} + +// Getter 函数 +public fun get_question_content(question: &Question): string::String { + question.content +} + +public fun get_question_id(question: &Question): u64 { + question.question_id +} + +public fun get_question_reward(question: &Question): u64 { + question.reward_points +} + +public fun get_solution_content(solution: &SolutionContent): string::String { + solution.content +} + +public fun get_solution_cost(solution: &SolutionContent): u64 { + solution.token_cost +} + +public fun has_answered_question(manager: &QuizManager, user: address, question_id: u64): bool { + if (!table::contains(&manager.user_answers, user)) { + return false + }; + + let user_question_table = table::borrow(&manager.user_answers, user); + table::contains(user_question_table, question_id) +} diff --git a/move202503/AKAKing23/code/chain_contract/sources/quiz.move b/move202503/AKAKing23/code/chain_contract/sources/quiz.move new file mode 100644 index 00000000..e25917c7 --- /dev/null +++ b/move202503/AKAKing23/code/chain_contract/sources/quiz.move @@ -0,0 +1,646 @@ +/** + * 答题系统核心模块 + * 实现问题管理、用户答题记录以及查看解析的核心功能 + * 设计为去中心化模式,用户可以直接获得积分奖励 + */ +module chain_contract::quiz; + +use chain_contract::point_token::{Self, QuizManager, POINT_TOKEN, Question as TokenQuestion}; +use std::string::{Self, String}; +use std::vector; +use sui::coin::{Self, Coin}; +use sui::event; +use sui::object::{Self, UID}; +use sui::table::{Self, Table}; +use sui::transfer; +use sui::tx_context::{Self, TxContext}; + +// 错误码 +/// 未授权操作错误 +const ENotAuthorized: u64 = 0; +/// 问题不存在错误 +const EQuestionNotFound: u64 = 1; +/// 已回答过此问题错误 +const EAlreadyAnswered: u64 = 2; +/// 积分不足错误 +const EInsufficientBalance: u64 = 3; + +/// Quiz系统的one-time witness +public struct QUIZ has drop {} + +/** + * 问题结构 + * 存储问题内容、选项和答案 + */ +public struct Question has key, store { + id: UID, + /// 问题内容 + content: String, + /// 问题选项列表 + options: vector, + /// 正确答案的索引 + correct_answer: u64, + /// 答对可获得的积分 + points_reward: u64, + /// 查看解析的积分花费 + solution_cost: u64, + /// 答案解析内容 + solution: String, +} + +/** + * 问题注册表 + * 管理系统中的所有问题 + */ +public struct QuestionRegistry has key { + id: UID, + /// 问题ID到问题的映射表 + questions: Table, + /// 下一个问题ID,用于自增 + next_question_id: u64, + /// 管理员地址 + admin: address, +} + +/** + * 用户答题记录 + * 记录用户回答问题的历史和查看解析的历史 + */ +public struct UserAnswerRecord has key { + id: UID, + /// 用户地址 + user: address, + /// 用户已回答问题记录,问题ID -> 是否回答正确 + answered_questions: Table, + /// 用户查看解析记录,问题ID -> 是否查看过解析 + viewed_solutions: Table, +} + +// 事件定义 +/** + * 问题创建事件 + * 当新问题被添加时触发 + */ +public struct QuestionCreated has copy, drop { + /// 问题ID + question_id: u64, + /// 问题内容 + content: String, + /// 回答正确可获得的积分 + points_reward: u64, +} + +/** + * 问题回答事件 + * 当用户回答问题时触发 + */ +public struct QuestionAnswered has copy, drop { + /// 用户地址 + user: address, + /// 问题ID + question_id: u64, + /// 是否回答正确 + is_correct: bool, +} + +/** + * 解析查看事件 + * 当用户付费查看解析时触发 + */ +public struct SolutionViewed has copy, drop { + /// 用户地址 + user: address, + /// 问题ID + question_id: u64, + /// 消费的代币数量 + tokens_spent: u64, +} + +/** + * 模块初始化函数 + * 将由sui框架在部署时自动调用 + */ +fun init(witness: QUIZ, ctx: &mut TxContext) { + // 创建问题注册表对象 + let registry = QuestionRegistry { + id: object::new(ctx), + questions: table::new(ctx), + next_question_id: 0, + admin: tx_context::sender(ctx), + }; + + // 共享问题注册表,使其全局可访问 + transfer::share_object(registry); +} + +/** + * 为用户创建答题记录 + * 每个用户需要创建自己的答题记录来跟踪答题历史 + * @param ctx - 交易上下文 + */ +public entry fun create_user_record(ctx: &mut TxContext) { + // 创建用户答题记录对象 + let record = UserAnswerRecord { + id: object::new(ctx), + user: tx_context::sender(ctx), + answered_questions: table::new(ctx), + viewed_solutions: table::new(ctx), + }; + + // 将记录直接转移给创建者 + transfer::transfer(record, tx_context::sender(ctx)); +} + +/** + * 添加新问题 + * 管理员添加新问题到系统中,同时在积分系统中注册 + * @param registry - 问题注册表 + * @param manager - Quiz管理器 + * @param content - 问题内容 + * @param options - 问题选项 + * @param correct_answer - 正确答案索引 + * @param correct_answer_str - 正确答案字符串 + * @param points_reward - 回答正确的积分奖励 + * @param solution_cost - 查看解析所需积分 + * @param solution - 解析内容 + * @param ctx - 交易上下文 + */ +public entry fun add_question( + registry: &mut QuestionRegistry, + manager: &mut QuizManager, + content: String, + options: vector, + correct_answer: u64, + correct_answer_str: String, + points_reward: u64, + solution_cost: u64, + solution: String, + ctx: &mut TxContext, +) { + // 只有管理员可以添加问题 + assert!(tx_context::sender(ctx) == registry.admin, ENotAuthorized); + + // 创建问题对象 + let question = Question { + id: object::new(ctx), + content, + options, + correct_answer, + points_reward, + solution_cost, + solution, + }; + + // 获取并保存问题ID + let question_id = registry.next_question_id; + + // 添加到问题列表 + table::add(&mut registry.questions, question_id, question); + + // 更新下一个问题ID(自增) + registry.next_question_id = question_id + 1; + + // 同时在积分系统中添加问题 + point_token::add_question( + manager, + content, + correct_answer_str, + points_reward, + solution, + solution_cost, + ctx, + ); + + // 触发问题创建事件 + emit_question_created(question_id, content, points_reward); +} + +/** + * 简化的用户回答问题处理 - 前端验证后直接调用 + * 不需要验证答案,直接发放奖励 + * @param manager - Quiz管理器 + * @param token_question - 积分系统中的问题对象 + * @param user_record - 用户的答题记录 + * @param question_id - 问题ID + * @param ctx - 交易上下文 + */ +public entry fun reward_answer( + registry: &QuestionRegistry, + manager: &mut QuizManager, + token_question: &TokenQuestion, + user_record: &mut UserAnswerRecord, + question_id: u64, + ctx: &mut TxContext, +) { + // 确保是用户自己的记录 + let user = tx_context::sender(ctx); + assert!(user_record.user == user, ENotAuthorized); + + // 检查问题是否存在 + assert!(table::contains(®istry.questions, question_id), EQuestionNotFound); + + // 检查是否已经回答过 + assert!(!table::contains(&user_record.answered_questions, question_id), EAlreadyAnswered); + + // 记录用户的回答结果为正确 (直接假设正确,因为前端已验证) + table::add(&mut user_record.answered_questions, question_id, true); + + // 调用积分系统的奖励方法 + point_token::reward_correct_answer( + manager, + token_question, + user, + ctx, + ); + + // 触发问题回答事件 + emit_question_answered(user_record.user, question_id, true); +} + +/** + * 用户回答问题(原始方法,保留但不推荐使用) + * 处理用户的答题请求,检验答案并记录结果 + * @param registry - 问题注册表 + * @param manager - Quiz管理器 + * @param token_question - 积分系统中的问题对象 + * @param user_record - 用户的答题记录 + * @param question_id - 问题ID + * @param answer - 用户提交的答案索引 + * @param ctx - 交易上下文 + */ +public entry fun answer_question( + registry: &QuestionRegistry, + manager: &mut QuizManager, + token_question: &TokenQuestion, + user_record: &mut UserAnswerRecord, + question_id: u64, + answer: u64, + ctx: &mut TxContext, +) { + // 确保是用户自己的记录 + assert!(user_record.user == tx_context::sender(ctx), ENotAuthorized); + + // 检查问题是否存在 + assert!(table::contains(®istry.questions, question_id), EQuestionNotFound); + + // 检查是否已经回答过 + assert!(!table::contains(&user_record.answered_questions, question_id), EAlreadyAnswered); + + // 获取问题 + let question = table::borrow(®istry.questions, question_id); + + // 判断答案是否正确 + let is_correct = question.correct_answer == answer; + + // 记录用户的回答结果 + table::add(&mut user_record.answered_questions, question_id, is_correct); + + // 获取选项文本作为答案 + let options = &question.options; + let answer_str = *vector::borrow(options, answer); + + // 调用积分系统的答题方法 + point_token::answer_question( + manager, + token_question, + answer_str, + ctx, + ); + + // 触发问题回答事件 + emit_question_answered(user_record.user, question_id, is_correct); +} + +/** + * 查看问题解析(需要花费积分) + * 用户使用积分购买解析的查看权限 + * @param registry - 问题注册表 + * @param manager - Quiz管理器 + * @param user_record - 用户的答题记录 + * @param payment - 用户的积分代币 + * @param question_id - 问题ID + * @param ctx - 交易上下文 + */ +public entry fun view_solution( + registry: &QuestionRegistry, + manager: &mut QuizManager, + user_record: &mut UserAnswerRecord, + payment: &mut Coin, + question_id: u64, + ctx: &mut TxContext, +) { + // 确保是用户自己的记录 + assert!(user_record.user == tx_context::sender(ctx), ENotAuthorized); + + // 检查问题是否存在 + assert!(table::contains(®istry.questions, question_id), EQuestionNotFound); + + // 获取问题 + let question = table::borrow(®istry.questions, question_id); + + // 检查用户积分是否足够 + assert!(coin::value(payment) >= question.solution_cost, EInsufficientBalance); + + // 如果是第一次查看,需要支付积分 + if (!table::contains(&user_record.viewed_solutions, question_id)) { + // 从代币中分割出需要销毁的数量 + let burn_amount = coin::split(payment, question.solution_cost, ctx); + + // 销毁代币 + point_token::burn_tokens(manager, burn_amount); + + // 记录已查看标记,后续可免费查看 + table::add(&mut user_record.viewed_solutions, question_id, true); + + // 触发解析查看事件 + emit_solution_viewed(user_record.user, question_id, question.solution_cost); + } + // 如果已经查看过,不需要再次支付 +} + +/** + * 获取问题解析(仅当已经支付过可以免费查看) + * 查询已付费解析的内容 + * @param registry - 问题注册表 + * @param user_record - 用户的答题记录 + * @param question_id - 问题ID + * @return 解析内容 + */ +public fun get_solution( + registry: &QuestionRegistry, + user_record: &UserAnswerRecord, + question_id: u64, +): String { + // 检查问题是否存在 + assert!(table::contains(®istry.questions, question_id), EQuestionNotFound); + + // 检查是否已经支付过查看费用 + assert!(table::contains(&user_record.viewed_solutions, question_id), ENotAuthorized); + + // 获取问题 + let question = table::borrow(®istry.questions, question_id); + // 返回解析内容 + question.solution +} + +/** + * 更改管理员 + * 修改问题注册表的管理员地址 + * @param registry - 问题注册表 + * @param manager - Quiz管理器 + * @param new_admin - 新管理员地址 + * @param ctx - 交易上下文 + */ +public entry fun change_admin( + registry: &mut QuestionRegistry, + manager: &mut QuizManager, + new_admin: address, + ctx: &mut TxContext, +) { + assert!(tx_context::sender(ctx) == registry.admin, ENotAuthorized); + registry.admin = new_admin; + + // 同时更新积分系统的管理员 + point_token::change_admin(manager, new_admin, ctx); +} + +// 简化版:直接发放奖励,无需任何ID +/** + * 直接奖励用户 - 最简化版本 + * 不需要问题ID或记录,直接奖励用户指定数量的代币 + * @param manager - Quiz管理器 + * @param recipient - 接收代币的用户地址 + * @param amount - 奖励数量 + * @param ctx - 交易上下文 + */ +public entry fun direct_reward( + manager: &mut QuizManager, + recipient: address, + amount: u64, + ctx: &mut TxContext, +) { + // 调用积分系统的铸币方法 + point_token::mint_tokens( + manager, + amount, + recipient, + ctx, + ); +} + +// ===== 内部事件函数 ===== +/** + * 封装问题创建事件发送函数 + * 避免直接使用event::emit导致的linter错误 + */ +fun emit_question_created(question_id: u64, content: String, points_reward: u64) { + event::emit(QuestionCreated { + question_id, + content, + points_reward, + }); +} + +/** + * 封装问题回答事件发送函数 + * 避免直接使用event::emit导致的linter错误 + */ +fun emit_question_answered(user: address, question_id: u64, is_correct: bool) { + event::emit(QuestionAnswered { + user, + question_id, + is_correct, + }); +} + +/** + * 封装解析查看事件发送函数 + * 避免直接使用event::emit导致的linter错误 + */ +fun emit_solution_viewed(user: address, question_id: u64, tokens_spent: u64) { + event::emit(SolutionViewed { + user, + question_id, + tokens_spent, + }); +} + +// Getter 函数 +public fun get_question_content(registry: &QuestionRegistry, question_id: u64): String { + assert!(table::contains(®istry.questions, question_id), EQuestionNotFound); + let question = table::borrow(®istry.questions, question_id); + question.content +} +/** +* 获取问题选项 +* @param registry - 问题注册表 +* @param question_id - 问题ID +* @return 问题选项列表 +*/ +public fun get_question_options(registry: &QuestionRegistry, question_id: u64): vector { + assert!(table::contains(®istry.questions, question_id), EQuestionNotFound); + let question = table::borrow(®istry.questions, question_id); + question.options +} + +/** +* 获取问题奖励积分 +* @param registry - 问题注册表 +* @param question_id - 问题ID +* @return 答对可获得的积分 +*/ +public fun get_question_reward(registry: &QuestionRegistry, question_id: u64): u64 { + assert!(table::contains(®istry.questions, question_id), EQuestionNotFound); + let question = table::borrow(®istry.questions, question_id); + question.points_reward +} +/** +* 获取解析所需积分 +* @param registry - 问题注册表 +* @param question_id - 问题ID +* @return 查看解析所需积分 +*/ +public fun get_solution_cost(registry: &QuestionRegistry, question_id: u64): u64 { + assert!(table::contains(®istry.questions, question_id), EQuestionNotFound); + let question = table::borrow(®istry.questions, question_id); + question.solution_cost +} +/** +* 获取用户是否回答过特定问题 +* @param user_record - 用户的答题记录 +* @param question_id - 问题ID +* @return 是否已回答 +*/ +public fun has_answered(user_record: &UserAnswerRecord, question_id: u64): bool { + table::contains(&user_record.answered_questions, question_id) +} +/** +* 获取用户回答是否正确 +* @param user_record - 用户的答题记录 +* @param question_id - 问题ID +* @return 回答是否正确 +*/ +public fun is_answer_correct(user_record: &UserAnswerRecord, question_id: u64): bool { + assert!(table::contains(&user_record.answered_questions, question_id), EQuestionNotFound); + *table::borrow(&user_record.answered_questions, question_id) +} +/** +* 获取用户是否已查看解析 +* @param user_record - 用户的答题记录 +* @param question_id - 问题ID +* @return 是否已查看解析 +*/ +public fun has_viewed_solution(user_record: &UserAnswerRecord, question_id: u64): bool { + table::contains(&user_record.viewed_solutions, question_id) +} + +/** + * 添加新问题(不包含答案和解析) + * 只上传问题内容和选项,不上传答案和解析,适用于前端验证答案的场景 + * @param registry - 问题注册表 + * @param content - 问题内容 + * @param options - 问题选项 + * @param ctx - 交易上下文 + * @return 新问题的ID + */ +public entry fun add_question_without_solution( + registry: &mut QuestionRegistry, + content: String, + options: vector, + ctx: &mut TxContext, +): u64 { + // 创建问题对象,使用占位符值 + let question = Question { + id: object::new(ctx), + content, + options, + correct_answer: 0, // 占位符,不存储真实答案 + points_reward: 0, // 不设置奖励 + solution_cost: 0, // 不设置解析费用 + solution: string::utf8(b""), // 空解析 + }; + + // 获取并保存问题ID + let question_id = registry.next_question_id; + + // 添加到问题列表 + table::add(&mut registry.questions, question_id, question); + + // 更新下一个问题ID(自增) + registry.next_question_id = question_id + 1; + + // 发出问题创建事件 + emit_question_created(question_id, content, 0); + + // 返回问题ID + question_id +} + +/** + * 添加简化问题(只有内容,没有选项、答案和解析) + * 适用于前端处理选项和验证答案的场景 + * @param registry - 问题注册表 + * @param content - 问题内容 + * @param ctx - 交易上下文 + * @return 新问题的ID + */ +public entry fun add_simple_question( + registry: &mut QuestionRegistry, + content: String, + ctx: &mut TxContext, +): u64 { + // 创建问题对象,使用空选项和占位符值 + let empty_options = vector::empty(); + + let question = Question { + id: object::new(ctx), + content, + options: empty_options, + correct_answer: 0, // 占位符,不存储真实答案 + points_reward: 0, // 不设置奖励 + solution_cost: 0, // 不设置解析费用 + solution: string::utf8(b""), // 空解析 + }; + + // 获取并保存问题ID + let question_id = registry.next_question_id; + + // 添加到问题列表 + table::add(&mut registry.questions, question_id, question); + + // 更新下一个问题ID(自增) + registry.next_question_id = question_id + 1; + + // 发出问题创建事件 + emit_question_created(question_id, content, 0); + + // 返回问题ID + question_id +} + +/** + * 简化版查看解析(不需要问题ID) + * 用户直接支付一定数量的积分,不关联特定问题 + * @param manager - Quiz管理器 + * @param payment - 用户的积分代币 + * @param amount - 要销毁的积分数量 + * @param ctx - 交易上下文 + */ +public entry fun view_solution_simple( + manager: &mut QuizManager, + payment: &mut Coin, + amount: u64, + ctx: &mut TxContext, +) { + // 检查用户积分是否足够 + assert!(coin::value(payment) >= amount, EInsufficientBalance); + + // 从代币中分割出需要销毁的数量 + let burn_amount = coin::split(payment, amount, ctx); + + // 销毁代币 + point_token::burn_tokens(manager, burn_amount); + + // 触发解析查看事件,使用0作为占位符问题ID + emit_solution_viewed(tx_context::sender(ctx), 0, amount); +} \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_contract/sources/sbt.move b/move202503/AKAKing23/code/chain_contract/sources/sbt.move new file mode 100644 index 00000000..a784d41e --- /dev/null +++ b/move202503/AKAKing23/code/chain_contract/sources/sbt.move @@ -0,0 +1,294 @@ +/** + * 灵魂绑定代币(SBT)模块 + * 实现不可转让的数字凭证,用于证明用户身份或成就 + */ +module chain_contract::sbt; + +use std::string::{Self, String}; +use sui::display; +use sui::event; +use sui::object::{Self, UID}; +use sui::package; +use sui::table::{Self, Table}; +use sui::transfer; +use sui::tx_context::{Self, TxContext}; + +// ===== 错误代码 ===== +/// SBT不允许转移错误 +const ESoulboundTransferNotAllowed: u64 = 1; +/// 非拥有者操作错误 +const ENotOwner: u64 = 2; +/// 未达到铸造条件 +const EConditionNotMet: u64 = 3; + +// ===== 类型定义 ===== +/** + * SBT主对象,由用户拥有 + * 代表一个不可转让的灵魂绑定代币 + */ +// public struct SoulboundToken has key, store { +public struct SoulboundToken has key { + id: UID, + /// SBT名称 + name: String, + /// SBT描述 + description: String, + /// 元数据URL(如图像) + url: String, + /// 发行者地址 + issuer: address, + /// 其他自定义属性 + attributes: Table, +} + +/** + * 发布者凭证,用于验证发布者身份 + * 持有此凭证的地址有权铸造新的SBT + */ +public struct IssuerCap has key, store { + id: UID, + /// 发行者地址 + issuer: address, +} + +/** + * 一次性见证对象,用于初始化 + * 仅在模块部署时使用一次 + */ +public struct SBT has drop {} + +// ===== 事件 ===== +/** + * 当SBT被铸造时发出的事件 + * 记录铸造情况供链下应用查询 + */ +public struct SBTMinted has copy, drop { + /// 代币ID(对象地址) + id: address, + /// 接收者地址 + recipient: address, + /// 代币名称 + name: String, +} + +// ===== 模块初始化 ===== +/** + * 初始化SBT模块 + * 在部署时执行一次,设置显示规则并创建发行者凭证 + * @param otw - 一次性见证对象 + * @param ctx - 交易上下文 + */ +fun init(otw: SBT, ctx: &mut TxContext) { + let publisher = package::claim(otw, ctx); + + // 创建显示信息字段 + let keys = vector[ + string::utf8(b"name"), + string::utf8(b"description"), + string::utf8(b"image_url"), + string::utf8(b"issuer"), + ]; + + // 创建显示信息的值映射 + let values = vector[ + string::utf8(b"{name}"), + string::utf8(b"{description}"), + string::utf8(b"{url}"), + string::utf8(b"{issuer}"), + ]; + + // 创建Display对象,用于NFT展示 + let mut display_obj = display::new_with_fields( + &publisher, + keys, + values, + ctx, + ); + display::update_version(&mut display_obj); + transfer::public_transfer(display_obj, tx_context::sender(ctx)); + + // 转移发布者对象,使其不再可访问 + transfer::public_transfer(publisher, tx_context::sender(ctx)); + + // 创建并转移发行者凭证给模块部署者 + let issuer_cap = IssuerCap { + id: object::new(ctx), + issuer: tx_context::sender(ctx), + }; + transfer::transfer(issuer_cap, tx_context::sender(ctx)); +} + +// ===== 公共函数 ===== +/** + * 铸造一个新的SBT + * 只有发行者能铸造SBT,代币直接转移给接收者 + * @param issuer_cap - 发行者凭证 + * @param name - SBT名称 + * @param description - SBT描述 + * @param url - 元数据URL + * @param recipient - 接收者地址 + * @param ctx - 交易上下文 + */ +public entry fun mint( + issuer_cap: &IssuerCap, + name: String, + description: String, + url: String, + recipient: address, + ctx: &mut TxContext, +) { + // 创建属性表 + let attributes = table::new(ctx); + + // 创建SBT对象 + let sbt = SoulboundToken { + id: object::new(ctx), + name, + description, + url, + issuer: issuer_cap.issuer, + attributes, + }; + + // 发出铸造事件 + event::emit(SBTMinted { + id: object::uid_to_address(&sbt.id), + recipient, + name: sbt.name, + }); + + // 直接转移给接收者 + transfer::transfer(sbt, recipient); +} + +/** + * 用户自助铸造成就SBT + * 允许用户在完成所有测验后自己铸造成就SBT + * 此函数不需要IssuerCap,但需要传入quiz_score和total_questions以验证条件 + * + * @param name - SBT名称 + * @param description - SBT描述 + * @param url - 元数据URL + * @param quiz_score - 用户的测验得分 + * @param total_questions - 测验的总题目数 + * @param ctx - 交易上下文 + */ +public entry fun self_mint_achievement( + name: String, + description: String, + url: String, + quiz_score: u64, + total_questions: u64, + ctx: &mut TxContext, +) { + // 验证条件:分数必须等于总题目数(即全部答对) + assert!(quiz_score == total_questions && total_questions > 0, EConditionNotMet); + + // 创建属性表 + let mut attributes = table::new(ctx); + + // 添加成就相关属性(使用预定义的字符串值,而不是尝试转换数字) + table::add(&mut attributes, string::utf8(b"quiz_score"), string::utf8(b"perfect_score")); + table::add(&mut attributes, string::utf8(b"total_questions"), string::utf8(b"all_correct")); + table::add(&mut attributes, string::utf8(b"achievement_type"), string::utf8(b"quiz_master")); + + // 获取交易发送者 + let recipient = tx_context::sender(ctx); + + // 创建SBT对象 + let sbt = SoulboundToken { + id: object::new(ctx), + name, + description, + url, + issuer: recipient, // 自助铸造的情况下,发行者就是用户自己 + attributes, + }; + + // 发出铸造事件 + event::emit(SBTMinted { + id: object::uid_to_address(&sbt.id), + recipient, + name: sbt.name, + }); + + // 直接转移给用户自己 + transfer::transfer(sbt, recipient); +} + +/** + * 添加SBT属性,仅所有者可调用 + * @param sbt - SBT对象 + * @param name - 属性名称 + * @param value - 属性值 + * @param ctx - 交易上下文 + */ +public entry fun add_attribute( + sbt: &mut SoulboundToken, + name: String, + value: String, + ctx: &mut TxContext, +) { + // 由于无法直接获取对象所有者,我们使用交易发送者作为授权 + // 这里的前提是交易必须由SBT所有者发起 + let _sender = tx_context::sender(ctx); + + // 添加或更新属性 + table::add(&mut sbt.attributes, name, value); +} + +/** + * 查询SBT的属性值 + * @param sbt - SBT对象 + * @param name - 属性名称 + * @return 属性值 + */ +public fun get_attribute(sbt: &SoulboundToken, name: &String): String { + *table::borrow(&sbt.attributes, *name) +} + +/** + * 验证是否存在某个属性 + * @param sbt - SBT对象 + * @param name - 属性名称 + * @return 是否存在该属性 + */ +public fun has_attribute(sbt: &SoulboundToken, name: &String): bool { + table::contains(&sbt.attributes, *name) +} + +/** + * 获取SBT的名称 + * @param sbt - SBT对象 + * @return SBT名称 + */ +public fun name(sbt: &SoulboundToken): String { + sbt.name +} + +/** + * 获取SBT的描述 + * @param sbt - SBT对象 + * @return SBT描述 + */ +public fun description(sbt: &SoulboundToken): String { + sbt.description +} + +/** + * 获取SBT的URL + * @param sbt - SBT对象 + * @return SBT的元数据URL + */ +public fun url(sbt: &SoulboundToken): String { + sbt.url +} + +/** + * 获取SBT的发行者 + * @param sbt - SBT对象 + * @return 发行者地址 + */ +public fun issuer(sbt: &SoulboundToken): address { + sbt.issuer +} diff --git a/move202503/AKAKing23/code/chain_contract/sources/sbt_scripts.move b/move202503/AKAKing23/code/chain_contract/sources/sbt_scripts.move new file mode 100644 index 00000000..299ccca4 --- /dev/null +++ b/move202503/AKAKing23/code/chain_contract/sources/sbt_scripts.move @@ -0,0 +1,87 @@ +/** + * SBT批量操作脚本模块 + * 提供批量铸造SBT和批量添加属性的便捷功能 + */ +module chain_contract::sbt_scripts; + +use chain_contract::sbt::{Self, IssuerCap}; +use std::string::{Self, String}; +use std::vector; +use sui::tx_context::{Self, TxContext}; + +/** + * 使用发行者凭证批量铸造SBT给多个用户 + * 一次操作可以为多个接收者创建多个SBT,提高效率 + * + * @param cap - 发行者凭证,用于验证铸造权限 + * @param names - SBT名称列表 + * @param descriptions - SBT描述列表 + * @param urls - SBT图像URL列表 + * @param recipients - 接收者地址列表 + * @param ctx - 交易上下文 + */ +public entry fun batch_mint( + cap: &IssuerCap, + names: vector, + descriptions: vector, + urls: vector, + recipients: vector
, + ctx: &mut TxContext, +) { + let len = vector::length(&names); + + // 验证所有输入向量长度一致 + assert!( + vector::length(&descriptions) == len && + vector::length(&urls) == len && + vector::length(&recipients) == len, + 0, // 输入长度不一致错误 + ); + + // 循环为每个接收者铸造SBT + let mut i = 0; + while (i < len) { + sbt::mint( + cap, + *vector::borrow(&names, i), + *vector::borrow(&descriptions, i), + *vector::borrow(&urls, i), + *vector::borrow(&recipients, i), + ctx, + ); + i = i + 1; + } +} + +/** + * 为SBT添加多个属性 + * 批量为一个SBT添加多个名称-值对属性 + * + * @param token - 要添加属性的SBT + * @param names - 属性名称列表 + * @param values - 属性值列表 + * @param ctx - 交易上下文 + */ +public entry fun add_multiple_attributes( + token: &mut sbt::SoulboundToken, + names: vector, + values: vector, + ctx: &mut TxContext, +) { + let len = vector::length(&names); + + // 验证所有输入向量长度一致 + assert!(vector::length(&values) == len, 0); + + // 循环添加每个属性 + let mut i = 0; + while (i < len) { + sbt::add_attribute( + token, + *vector::borrow(&names, i), + *vector::borrow(&values, i), + ctx, + ); + i = i + 1; + } +} diff --git a/move202503/AKAKing23/code/chain_contract/sources/seal_quiz_walrus.move b/move202503/AKAKing23/code/chain_contract/sources/seal_quiz_walrus.move new file mode 100644 index 00000000..0e10afe5 --- /dev/null +++ b/move202503/AKAKing23/code/chain_contract/sources/seal_quiz_walrus.move @@ -0,0 +1,133 @@ +/** + * 基于SUI SEAL的题目信息加密存储模块 + * 提供题目数据的加密存储功能,使用Walrus存储加密数据 + */ +module chain_contract::seal_quiz_walrus { + use std::string::{Self, String}; + use sui::object::{Self, UID}; + use sui::transfer; + use sui::tx_context::{Self, TxContext}; + use sui::event; + + /// 错误码 + /// 未授权操作错误 + const ENotAuthorized: u64 = 0; + + /** + * 题目Blob引用结构 + * 关联题目数据和Walrus blobId + */ + public struct QuizBlobRef has key, store { + id: UID, + /// 创建者地址 + creator: address, + /// Walrus中的blobId + blob_id: String, + /// 题目难度级别 + difficulty: String, + /// 创建时间戳 + created_at: u64, + } + + /** + * 题目Blob发布事件 + * 当题目数据被加密并关联到链上时触发 + */ + public struct BlobPublished has copy, drop { + /// 创建者地址 + creator: address, + /// Walrus中的blobId + blob_id: String, + /// 题目难度级别 + difficulty: String, + } + + /** + * 发布题目Blob信息到链上 + * 基本版本,使用默认难度 + * @param sender_addr - 发送者地址 + * @param blob_id - Walrus中的blobId + * @param ctx - 交易上下文 + */ + public entry fun publish( + sender_addr: address, + blob_id: String, + ctx: &mut TxContext + ) { + // 使用默认难度 + let difficulty = string::utf8(b"default"); + + // 创建题目Blob引用 + let quiz_blob = QuizBlobRef { + id: object::new(ctx), + creator: sender_addr, + blob_id, + difficulty, + created_at: tx_context::epoch(ctx), + }; + + // 发布事件 + event::emit( + BlobPublished { + creator: sender_addr, + blob_id, + difficulty, + } + ); + + // 将对象转移给发送者 + transfer::transfer(quiz_blob, sender_addr); + } + + /** + * 发布题目Blob信息到链上,前端调用时默认使用此函数 + * 接收难度参数并处理 + * @param sender_addr - 发送者地址 + * @param blob_id - Walrus中的blobId + * @param difficulty - 题目难度级别 + * @param ctx - 交易上下文 + */ + public entry fun publish_with_difficulty( + sender_addr: address, + blob_id: String, + difficulty: String, + ctx: &mut TxContext + ) { + // 创建题目Blob引用 + let quiz_blob = QuizBlobRef { + id: object::new(ctx), + creator: sender_addr, + blob_id, + difficulty, + created_at: tx_context::epoch(ctx), + }; + + // 发布事件 + event::emit( + BlobPublished { + creator: sender_addr, + blob_id, + difficulty, + } + ); + + // 将对象转移给发送者 + transfer::transfer(quiz_blob, sender_addr); + } + + /** + * 查询指定难度下的所有题目Blob列表 + * 这个函数仅定义接口,实际实现需要在前端通过事件索引完成 + * @param difficulty - 题目难度级别 + * @param ctx - 交易上下文 + */ + public entry fun query_blobs_by_difficulty( + difficulty: String, + _ctx: &mut TxContext + ) { + // 实际查询通过前端事件索引实现 + // 此函数仅作为接口定义,不包含具体实现 + // 仅用于匹配前端调用需求 + let _d = difficulty; + } +} diff --git a/move202503/AKAKing23/code/chain_contract/sources/zk_verifier.move b/move202503/AKAKing23/code/chain_contract/sources/zk_verifier.move new file mode 100644 index 00000000..6f3aa59c --- /dev/null +++ b/move202503/AKAKing23/code/chain_contract/sources/zk_verifier.move @@ -0,0 +1,144 @@ +/** + * 零知识证明验证器 + * 用于验证用户的能力证明,而不暴露具体信息 + */ +module chain_contract::zk_verifier; + +use std::string::{Self, String}; +use sui::event; +use sui::object::{Self, UID}; +use sui::table::{Self, Table}; +use sui::transfer; +use sui::tx_context::{Self, TxContext}; + +// ===== 错误代码 ===== +/// 验证失败错误 +const EVerificationFailed: u64 = 1; +/// 非授权操作错误 +const ENotAuthorized: u64 = 2; +/// 验证密钥不存在错误 +const EVerificationKeyNotFound: u64 = 3; + +// ===== 类型定义 ===== + +/// 零知识证明验证器对象,用于存储和管理验证密钥 +public struct ZkVerifier has key { + id: UID, + /// 管理员地址 + admin: address, + /// 验证密钥,电路名称 -> 验证密钥JSON字符串 + verification_keys: Table, +} + +// ===== 事件 ===== + +/// 验证结果事件 +public struct VerificationResult has copy, drop { + /// 用户地址 + user: address, + /// 电路名称 + circuit_name: String, + /// 验证是否通过 + is_verified: bool, + /// 要求等级 + required_level: u64, +} + +/// 验证密钥添加事件 +public struct VerificationKeyAdded has copy, drop { + /// 管理员地址 + admin: address, + /// 电路名称 + circuit_name: String, +} + +// ===== 初始化 ===== + +/// 创建验证器对象 +public entry fun create_verifier(ctx: &mut TxContext) { + let verifier = ZkVerifier { + id: object::new(ctx), + admin: tx_context::sender(ctx), + verification_keys: table::new(ctx), + }; + + // 共享验证器对象,使其全局可访问 + transfer::share_object(verifier); +} +fun init(ctx: &mut TxContext) { + // 创建验证器对象并共享 + let verifier = ZkVerifier { + id: object::new(ctx), + // admin: tx_context::sender(ctx), + admin: @0xe75a090888082e699c99b6877f93aaacedba68cd172f32006605e76b99260bb8, + verification_keys: table::new(ctx), + }; + + transfer::share_object(verifier); +} +// ===== 公共函数 ===== + +/// 添加验证密钥 +/// @param verifier - 验证器对象 +/// @param circuit_name - 电路名称 +/// @param verification_key - 验证密钥JSON字符串 +/// @param ctx - 交易上下文 +public entry fun add_verification_key( + verifier: &mut ZkVerifier, + circuit_name: String, + verification_key: String, + ctx: &mut TxContext, +) { + // 验证调用者是管理员 + assert!(tx_context::sender(ctx) == verifier.admin, ENotAuthorized); + + // 添加验证密钥 + table::add(&mut verifier.verification_keys, circuit_name, verification_key); + + // 发出事件 + event::emit(VerificationKeyAdded { + admin: verifier.admin, + circuit_name, + }); +} + +/// 验证零知识证明 +/// @param verifier - 验证器对象 +/// @param circuit_name - 电路名称 +/// @param proof - 证明字符串 +/// @param public_inputs - 公共输入字符串,包含要求等级和挑战值 +/// @param ctx - 交易上下文 +public entry fun verify_proof( + verifier: &ZkVerifier, + circuit_name: String, + proof: String, + public_inputs: String, + required_level: u64, + ctx: &mut TxContext, +) { + // 验证密钥是否存在 + assert!(table::contains(&verifier.verification_keys, circuit_name), EVerificationKeyNotFound); + + // 此处应该调用原生函数进行实际验证 + // 由于Move不直接支持复杂的零知识证明验证,这里我们简化处理 + // 在实际生产环境中,应该通过Native函数调用或链下服务完成 + + // 模拟验证成功 + let is_verified = true; // 在实际环境中,这里应该是验证的结果 + + // 发出验证结果事件 + event::emit(VerificationResult { + user: tx_context::sender(ctx), + circuit_name, + is_verified, + required_level, + }); +} + +/// 获取验证密钥 +/// @param verifier - 验证器对象 +/// @param circuit_name - 电路名称 +/// @return 验证密钥JSON字符串 +public fun get_verification_key(verifier: &ZkVerifier, circuit_name: &String): String { + *table::borrow(&verifier.verification_keys, *circuit_name) +} \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/.env b/move202503/AKAKing23/code/chain_front/.env new file mode 100644 index 00000000..e69de29b diff --git a/move202503/AKAKing23/code/chain_front/.gitignore b/move202503/AKAKing23/code/chain_front/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/move202503/AKAKing23/code/chain_front/components.json b/move202503/AKAKing23/code/chain_front/components.json new file mode 100644 index 00000000..73afbdbc --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/index.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/move202503/AKAKing23/code/chain_front/eslint.config.js b/move202503/AKAKing23/code/chain_front/eslint.config.js new file mode 100644 index 00000000..092408a9 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/move202503/AKAKing23/code/chain_front/index.html b/move202503/AKAKing23/code/chain_front/index.html new file mode 100644 index 00000000..28abdcdf --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/index.html @@ -0,0 +1,14 @@ + + + + + + + + LearnChain-X + + +
+ + + diff --git a/move202503/AKAKing23/code/chain_front/lang/index.js b/move202503/AKAKing23/code/chain_front/lang/index.js new file mode 100644 index 00000000..4f2829c3 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/lang/index.js @@ -0,0 +1,61 @@ + + // 导入国际化JSON文件 + import langJSON from './index.json' + (function () { + // 定义翻译函数 + let $t = function (key, val, nameSpace) { + // 获取指定命名空间下的语言包 + const langPackage = $t[nameSpace]; + // 返回翻译结果,如果不存在则返回默认值 + return (langPackage || {})[key] || val; + }; + // 定义简单翻译函数,直接返回传入的值 + let $$t = function (val) { + return val; + }; + globalThis.$deepScan = function (val) { + return val; + }; + // 定义设置语言包的方法 + $t.locale = function (locale, nameSpace) { + // 将指定命名空间下的语言包设置为传入的locale + $t[nameSpace] = locale || {}; + }; + // 将翻译函数挂载到globalThis对象上,如果已经存在则使用已有的 + globalThis.$t = globalThis.$t || $t; + // 将简单翻译函数挂载到globalThis对象上 + globalThis.$$t = $$t; + // 定义从JSON文件中获取指定键的语言对象的方法 + globalThis._getJSONKey = function (key, insertJSONObj = undefined) { + // 获取JSON对象 + const JSONObj = insertJSONObj; + // 初始化语言对象 + const langObj = {}; + // 遍历JSON对象的所有键 + Object.keys(JSONObj).forEach((value) => { + // 将每个语言的对应键值添加到语言对象中 + langObj[value] = JSONObj[value][key]; + }); + // 返回语言对象 + return langObj; + }; + })(); + // 定义语言映射对象 + const langMap = { + 'en': (globalThis && globalThis.lang && globalThis.lang.en) ? globalThis.lang.en : globalThis._getJSONKey('en', langJSON), +'ko': (globalThis && globalThis.lang && globalThis.lang.ko) ? globalThis.lang.ko : globalThis._getJSONKey('ko', langJSON), +'ja': (globalThis && globalThis.lang && globalThis.lang.ja) ? globalThis.lang.ja : globalThis._getJSONKey('ja', langJSON), +'zhcn': (globalThis && globalThis.lang && globalThis.lang.zhcn) ? globalThis.lang.zhcn : globalThis._getJSONKey('zh-cn', langJSON) + }; + // 存储语言是否存在 + // 判断 globalThis.localStorage.getItem 是否为函数 + const isFunction = (fn) => { + return typeof fn === 'function'; + }; + const withStorageLang = isFunction && globalThis && globalThis.localStorage && + isFunction(globalThis.localStorage.getItem) && globalThis.localStorage.getItem('lang'); + // 从本地存储中获取当前语言,如果不存在则使用源语言 + const lang = withStorageLang ? globalThis.localStorage.getItem('lang') : 'zhcn'; + // 根据当前语言设置翻译函数的语言包 + globalThis.$t.locale(langMap[lang], 'lang'); + \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/lang/index.json b/move202503/AKAKing23/code/chain_front/lang/index.json new file mode 100644 index 00000000..3abb19ad --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/lang/index.json @@ -0,0 +1,926 @@ +{ + "nc8vrob": { + "zh-cn": "404 - 页面未找到", + "en": "404- Page not found", + "ko": "404 - 페이지를 찾을 수 없음", + "ja": "404-ページが見つかりません" + }, + "sq9zfxd": { + "zh-cn": "抱歉,您访问的页面不存在。", + "en": "Sorry, the page you visited does not exist.", + "ko": "죄송합니다. 방문한 페이지가 없습니다.", + "ja": "申し訳ありませんが、アクセスしたページは存在しません。" + }, + "iijhd54": { + "zh-cn": "返回首页", + "en": "homepage", + "ko": "첫 페이지로 돌아가기", + "ja": "トップページに戻る" + }, + "qylb2": { + "zh-cn": "首页", + "en": "home page", + "ko": "첫 페이지", + "ja": "トップページ" + }, + "ohcd2": { + "zh-cn": "课程", + "en": "course", + "ko": "과정", + "ja": "カリキュラム" + }, + "ea9n2": { + "zh-cn": "关于", + "en": "about", + "ko": "정보", + "ja": "について" + }, + "a6ttl24": { + "zh-cn": "个人中心", + "en": "Personal Center", + "ko": "개인 센터", + "ja": "パーソナルセンター" + }, + "boes5fl": { + "zh-cn": "LearnChain-X. 保留所有权利。", + "en": "LearnChain-X. All rights reserved.", + "ko": "LearnChain-X. 모든 권리를 보유합니다.", + "ja": "LearnChain-X.すべての権利を保持します。" + }, + "2g231m7": { + "zh-cn": "区块链基础入门", + "en": "Introduction to Blockchain Fundamentals", + "ko": "블록체인 기반 시작", + "ja": "ブロックチェーン基礎入門" + }, + "8wuwcui": { + "zh-cn": "了解区块链的基本概念、原理和应用场景", + "en": "Understand the basic concepts, principles, and application scenarios of blockchain", + "ko": "블록체인의 기본 개념, 원리와 응용 장면을 이해하다", + "ja": "ブロックチェーンの基本概念、原理、応用シーンを理解する" + }, + "enu22": { + "zh-cn": "初级", + "en": "primary", + "ko": "초급", + "ja": "初級" + }, + "isu6eda": { + "zh-cn": "以太坊与智能合约开发", + "en": "Ethereum and Smart Contract Development", + "ko": "이더리움과 스마트 계약 개발", + "ja": "エーテル坊とインテリジェント契約開発" + }, + "igmduhm": { + "zh-cn": "学习以太坊平台和Solidity智能合约开发", + "en": "Learn Ethereum platform and Solidity smart contract development", + "ko": "학습 이더리움 플랫폼 및 Solidity 스마트 계약 개발", + "ja": "イーサ坊プラットフォームとSolidityインテリジェント契約開発を学ぶ" + }, + "dzq22": { + "zh-cn": "中级", + "en": "intermediate", + "ko": "중급", + "ja": "中級" + }, + "4a0ra0a": { + "zh-cn": "DApp全栈开发实战", + "en": "DApp Full Stack Development Practice", + "ko": "DApp 전체 스택 개발 실전", + "ja": "DAppフルスタック開発の実戦" + }, + "r16pa5h": { + "zh-cn": "从前端到后端,完整开发去中心化应用", + "en": "Complete development of decentralized applications from front-end to back-end", + "ko": "프런트엔드에서 백엔드로 분산된 애플리케이션을 완벽하게 개발", + "ja": "フロントエンドからバックエンドまで、完全なデセンタリングアプリケーションの開発" + }, + "r1732": { + "zh-cn": "高级", + "en": "senior", + "ko": "고급", + "ja": "高級" + }, + "i5xola4": { + "zh-cn": "课程列表", + "en": "Course List", + "ko": "강좌 목록", + "ja": "カリキュラムリスト" + }, + "miyky3": { + "zh-cn": "难度:", + "en": "Difficulty:", + "ko": "난이도:", + "ja": "難易度:" + }, + "dluvhh4": { + "zh-cn": "查看详情", + "en": "View details", + "ko": "자세히 보기", + "ja": "詳細の表示" + }, + "glwp2": { + "zh-cn": "张三", + "en": "Zhang San", + "ko": "장 삼", + "ja": "張三" + }, + "2gbxpg7": { + "zh-cn": "区块链基础认证", + "en": "Blockchain Basic Authentication", + "ko": "블록체인 기반 인증", + "ja": "ブロックチェーン基礎認証" + }, + "f6qmm54": { + "zh-cn": "用户信息", + "en": "user information", + "ko": "사용자 정보", + "ja": "ユーザー情報" + }, + "djxsw3": { + "zh-cn": "姓名:", + "en": "full name:", + "ko": "이름:", + "ja": "名前:" + }, + "lrxlj3": { + "zh-cn": "邮箱:", + "en": "Email:", + "ko": "메일박스:", + "ja": "メールアドレス:" + }, + "cvbkio4": { + "zh-cn": "我的课程", + "en": "My courses", + "ko": "내 수업", + "ja": "マイレッスン" + }, + "14e734": { + "zh-cn": "% 完成", + "en": "%Completed", + "ko": "% 완료", + "ja": "%完了" + }, + "gj8zz44": { + "zh-cn": "继续学习", + "en": "Continue learning", + "ko": "계속 공부하다", + "ja": "勉強を続ける" + }, + "cvbafs4": { + "zh-cn": "我的证书", + "en": "My certificate", + "ko": "내 인증서", + "ja": "マイ証明書" + }, + "u9qfog5": { + "zh-cn": "获得日期:", + "en": "Date of Acquisition:", + "ko": "획득 날짜:", + "ja": "取得日:" + }, + "cg3pdz5": { + "zh-cn": "学习区块链", + "en": "Learn about blockchain technology", + "ko": "블록체인 학습", + "ja": "学習ブロックチェーン" + }, + "oqtkmww": { + "zh-cn": "欢迎来到LearnChain-X平台,这里提供区块链技术学习资源", + "en": "Welcome to LearnChain-X platform, which provides learning resources for blockchain technology", + "ko": "블록체인 기술 학습 리소스를 제공하는 LearnChain-X 플랫폼에 오신 것을 환영합니다.", + "ja": "ブロックチェーン技術学習リソースを提供するLearnChain-Xプラットフォームへようこそ" + }, + "alt7ee4": { + "zh-cn": "关于我们", + "en": "About Us", + "ko": "우리에 대해", + "ja": "私たちについて" + }, + "9g7okj1e": { + "zh-cn": "LearnChain-X是一个专注于区块链技术教育的平台,我们致力于帮助更多人了解和掌握区块链技术。", + "en": "LearnChain-X is a platform dedicated to blockchain technology education, and we are committed to helping more people understand and master blockchain technology.", + "ko": "LearnChain-X는 더 많은 사람들이 블록체인 기술을 이해하고 이해할 수 있도록 돕는 블록체인 기술 교육에 집중하는 플랫폼입니다.", + "ja": "LearnChain-Xはブロックチェーン技術教育に専念するプラットフォームであり、ブロックチェーン技術の理解と把握をより多くの人に支援することに力を入れています。" + }, + "6w5eu519": { + "zh-cn": "我们提供从入门到精通的系列课程,涵盖区块链基础知识、智能合约开发、DApp开发等多个方面。", + "en": "We offer a series of courses from beginner to master, covering various aspects such as blockchain fundamentals, smart contract development, DApp development, and more.", + "ko": "우리는 블록체인 기초 지식, 스마트 계약 개발, DApp 개발 등 다양한 방면을 포괄하는 입문부터 정통까지 일련의 과정을 제공한다.", + "ja": "ブロックチェーンの基礎知識、インテリジェント契約開発、DApp開発など、入門から精通までの一連のカリキュラムを提供しています。" + }, + "watri15": { + "zh-cn": "我们的使命", + "en": "Our mission", + "ko": "우리의 사명", + "ja": "私たちの使命" + }, + "hisk3xx": { + "zh-cn": "普及区块链知识,培养区块链技术人才,推动区块链技术在各行业的应用。", + "en": "Popularize blockchain knowledge, cultivate blockchain technology talents, and promote the application of blockchain technology in various industries.", + "ko": "블록체인지식을 보급하고 블록체인기술인재를 양성하며 블록체인기술의 각 업종에서의 응용을 추진한다.", + "ja": "ブロックチェーン知識を普及させ、ブロックチェーン技術の人材を育成し、各業界におけるブロックチェーン技術の応用を推進する。" + }, + "cvcu2v4": { + "zh-cn": "我的钱包", + "en": "my wallet", + "ko": "내 지갑", + "ja": "私の財布" + }, + "j407p74": { + "zh-cn": "钱包连接", + "en": "Wallet connection", + "ko": "지갑 연결", + "ja": "ウォレット接続" + }, + "ikk1174": { + "zh-cn": "连接钱包", + "en": "Connect wallet", + "ko": "지갑 연결", + "ja": "ウォレットの接続" + }, + "j3pb8i4": { + "zh-cn": "钱包信息", + "en": "Wallet information", + "ko": "지갑 정보", + "ja": "ウォレット情報" + }, + "d6kve3": { + "zh-cn": "地址:", + "en": "Address:", + "ko": "주소:", + "ja": "住所:" + }, + "cccwm3": { + "zh-cn": "余额:", + "en": "Balance:", + "ko": "잔액:", + "ja": "残高:" + }, + "27k1ha6": { + "zh-cn": "加载中...", + "en": "Loading", + "ko": "로드 중...", + "ja": "ロード中..." + }, + "d3jite": { + "zh-cn": "请连接您的钱包以查看详细信息", + "en": "Please connect your wallet to view detailed information", + "ko": "자세한 내용을 보려면 지갑에 연결하십시오.", + "ja": "財布に接続して詳細を表示してください" + }, + "dl4w3k4": { + "zh-cn": "最近交易", + "en": "RECENT TRANSACTIONS", + "ko": "최근 거래", + "ja": "最近の取引" + }, + "n0g51q6": { + "zh-cn": "暂无交易记录", + "en": "No transaction records available at the moment", + "ko": "거래 기록 없음", + "ja": "トランザクションは一時的にありません" + }, + "99puzt5": { + "zh-cn": "发送SUI", + "en": "Send SUI", + "ko": "SUI 보내기", + "ja": "SUIを送信" + }, + "ng1spz5": { + "zh-cn": "接收地址:", + "en": "Receiving address:", + "ko": "수신 주소:", + "ja": "受信アドレス:" + }, + "7u3bqc9": { + "zh-cn": "金额 (SUI):", + "en": "Amount (SUI):", + "ko": "금액(SUI):", + "ja": "金額(SUI):" + }, + "6kni416": { + "zh-cn": "发送中...", + "en": "Sending", + "ko": "보내는 중...", + "ja": "送信中..." + }, + "ydxt5p5": { + "zh-cn": "交易成功!", + "en": "Successful trade!", + "ko": "거래 성공!", + "ja": "取引成功!" + }, + "hd6r6e8": { + "zh-cn": "交易失败,请重试", + "en": "Transaction failed, please try again", + "ko": "거래 실패, 다시 시도하십시오.", + "ja": "取引に失敗しました。再試行してください" + }, + "aisqn74": { + "zh-cn": "使用说明", + "en": "instructions", + "ko": "사용 설명", + "ja": "使用方法" + }, + "wr0yq1m": { + "zh-cn": "1. 点击\"连接钱包\"按钮连接您的Sui钱包", + "en": "1. Click the \"Connect Wallet\" button to connect your Sui wallet", + "ko": "1.\"지갑 연결\"버튼을 클릭하여 Sui 지갑을 연결하십시오.", + "ja": "1.「ウォレットを接続する」ボタンをクリックしてSuiウォレットを接続します" + }, + "tk5vvbo": { + "zh-cn": "2. 连接成功后,将显示您的钱包地址和SUI余额", + "en": "After successful connection, your wallet address and SUI balance will be displayed", + "ko": "2. 연결에 성공하면 지갑 주소와 SUI 잔액이 표시됩니다.", + "ja": "2.接続が成功すると、ウォレットアドレスとSUI残高が表示されます" + }, + "chx5gbq": { + "zh-cn": "3. 您可以在Sui钱包中查看更多详细信息和执行交易", + "en": "3. You can view more detailed information and execute transactions in Sui wallet", + "ko": "3. Sui 지갑에서 자세한 내용을 확인하고 거래를 수행할 수 있습니다.", + "ja": "3.Suiウォレットで詳細を表示して取引を実行できます" + }, + "je57im9": { + "zh-cn": "知识上链,成就永恒", + "en": "Knowledge on the blockchain, achieving eternity", + "ko": "지식이 사슬에 걸려, 성과는 영원하다.", + "ja": "知識の連鎖、永遠の成果" + }, + "4tkkne1o": { + "zh-cn": "ChainLearn是一个区块链学习平台,通过AI出题和链上证书,让你的每一步学习成果都被永久记录,构建可信的能力档案。", + "en": "ChainLearn is a blockchain learning platform that uses AI generated questions and on chain certificates to permanently record every step of your learning and build a trusted competency profile.", + "ko": "ChainLearn은 AI 출제와 체인 인증서를 통해 각 단계의 학습 성과가 영구적으로 기록되도록 신뢰할 수 있는 역량 파일을 구축하는 블록체인 학습 플랫폼이다.", + "ja": "ChainLearnはブロックチェーン学習プラットフォームで、AIの出題とチェーン上の証明書を通じて、あなたの学習成果を永遠に記録し、信頼できる能力ファイルを構築します。" + }, + "bvab7j1q": { + "zh-cn": "ChainLearn-X是一个区块链学习平台,通过AI出题和链上证书,让你的每一步学习成果都被永久记录,构建可信的能力档案。", + "en": "ChainLearn-X is a blockchain learning platform that uses AI generated questions and on chain certificates to permanently record every step of your learning and build a trusted competency profile.", + "ko": "ChainLearn-X는 AI 출제와 체인 인증서를 통해 모든 단계의 학습 성과를 영구적으로 기록하고 신뢰할 수 있는 능력 파일을 구축하는 블록체인 학습 플랫폼이다.", + "ja": "ChainLearn-Xはブロックチェーン学習プラットフォームで、AI出題とチェーン上証明書を通じて、あなたの学習成果を永遠に記録し、信頼できる能力ファイルを構築します。" + }, + "ege0p3": { + "zh-cn": "已连接", + "en": "Connected", + "ko": "접속됨", + "ja": "接続済み" + }, + "g064o6y": { + "zh-cn": "请生成10道区块链相关的选择题,每道题有4个选项,格式为JSON数组", + "en": "Please generate 10 blockchain related multiple-choice questions, each with 4 options in JSON array format", + "ko": "10개의 블록체인 관련 선택 문제를 생성하십시오. 각 문제에는 4개의 옵션이 있습니다. 형식은 JSON 배열입니다.", + "ja": "10個のブロックチェーンに関する選択問題を生成してください。各問題には4つの選択肢があり、JSON配列をフォーマットしています" + }, + "30goiob": { + "zh-cn": "无法解析返回的JSON", + "en": "Unable to parse the returned JSON", + "ko": "반환된 JSON을 확인할 수 없습니다.", + "ja": "戻されたJSONを解析できません" + }, + "ghixcba": { + "zh-cn": "比特币的创始人是谁?", + "en": "Who is the founder of Bitcoin?", + "ko": "비트코인의 창시자는 누구입니까?", + "ja": "ビットコインの創始者は誰ですか。" + }, + "tbnil4l": { + "zh-cn": "以太坊网络中用于支付计算资源的货币单位是?", + "en": "What is the currency unit used to pay for computing resources in the Ethereum network?", + "ko": "이더리움 네트워크에서 결제 계산 자원에 사용되는 화폐 단위는?", + "ja": "Ethernetネットワークで計算リソースを支払うために使用される通貨単位は?" + }, + "5m1ovge": { + "zh-cn": "区块链的基本数据结构是什么?", + "en": "What is the basic data structure of blockchain?", + "ko": "블록체인의 기본 데이터 구조는 무엇입니까?", + "ja": "ブロックチェーンの基本的なデータ構造は何ですか。" + }, + "q3ai2": { + "zh-cn": "链表", + "en": "Linked list", + "ko": "체인 테이블", + "ja": "チェーンメータ" + }, + "hy6s2": { + "zh-cn": "数组", + "en": "array", + "ko": "배열", + "ja": "アレイ" + }, + "cvsmc3": { + "zh-cn": "哈希表", + "en": "Hashtable", + "ko": "해시 시계", + "ja": "ハッシュテーブル" + }, + "kdluls4": { + "zh-cn": "默克尔树", + "en": "Merkel tree", + "ko": "메르켈 트리", + "ja": "メルケルの木" + }, + "eabzesc": { + "zh-cn": "一大波题库正在来临...", + "en": "A large wave of question banks is coming", + "ko": "큰 문제집이 오고 있는데...", + "ja": "大きな問題群が来ている…" + }, + "l0ynuk5": { + "zh-cn": "测验完成!", + "en": "Test completed!", + "ko": "퀴즈 완료!", + "ja": "テスト完了!" + }, + "wysk5o5": { + "zh-cn": "您的分数:", + "en": "Your score:", + "ko": "점수:", + "ja": "スコア:" + }, + "itdrwu4": { + "zh-cn": "重新开始", + "en": "restart", + "ko": "다시 시작", + "ja": "再スタート" + }, + "6jz6oz7": { + "zh-cn": "区块链知识测验", + "en": "Blockchain Knowledge Test", + "ko": "블록체인 지식 퀴즈", + "ja": "ブロックチェーン知識試験" + }, + "qc8a2": { + "zh-cn": "问题", + "en": "problem", + "ko": "문제", + "ja": "問題" + }, + "dng21l4": { + "zh-cn": "检查答案", + "en": "check the answers", + "ko": "답안 검토", + "ja": "答えをチェック" + }, + "btmg33": { + "zh-cn": "下一题", + "en": "Next question", + "ko": "다음 문제", + "ja": "次の問題" + }, + "bykzad4": { + "zh-cn": "完成测验", + "en": "Complete the quiz", + "ko": "퀴즈 완료", + "ja": "テストを完了する" + }, + "9uocz89": { + "zh-cn": "测试你的区块链知识", + "en": "Test your blockchain knowledge", + "ko": "블록체인 지식 테스트", + "ja": "ブロックチェーンの知識をテスト" + }, + "jhg3zwn": { + "zh-cn": "完成我们的区块链选择题测验,检验你的学习成果!", + "en": "Complete our blockchain multiple-choice test to test your learning outcomes!", + "ko": "우리의 블록체인 선택 문제 퀴즈를 완성하고, 당신의 학습 성과를 검증합니다!", + "ja": "私たちのブロックチェーン選択問題のテストを完了して、あなたの学習成果を検証します!" + }, + "cd1tws4": { + "zh-cn": "开始测验", + "en": "Start the test", + "ko": "퀴즈 시작", + "ja": "テストを開始" + }, + "i7bwwmx": { + "zh-cn": "请生成3道区块链相关的选择题,每道题有4个选项,格式为JSON数组", + "en": "Please generate 3 blockchain related multiple-choice questions, each with 4 options in JSON array format", + "ko": "3개의 블록체인 관련 선택 문제를 생성하십시오. 각 문제에는 4개의 옵션이 있습니다. 형식은 JSON 배열입니다.", + "ja": "3つのブロックチェーンに関する選択問題を生成してください。各問題には4つの選択肢があり、JSON配列の形式になっています" + }, + "v1slm48": { + "zh-cn": "加载题目中...", + "en": "Loading the title", + "ko": "제목 로드 중...", + "ja": "タイトルをロード中..." + }, + "fonrv77": { + "zh-cn": "✓ 回答正确!", + "en": "✓ Correct answer!", + "ko": "♦ 정답!", + "ja": "$正解!" + }, + "3jc4307": { + "zh-cn": "✗ 回答错误!", + "en": "✗ Incorrect answer!", + "ko": "땡 땡!", + "ja": "❝答えが間違っている!" + }, + "jbaeav12": { + "zh-cn": "请生成3道初级Move语言相关的选择题,每道题有4个选项,格式为JSON数组", + "en": "Please generate 3 multiple-choice questions related to the beginner Move language, each with 4 options in JSON array format", + "ko": "JSON 배열 형식으로 4개의 옵션이 있는 3개의 기본 Move 언어 관련 선택 문제를 생성하십시오.", + "ja": "3つの初級Move言語に関する選択問題を生成してください。各問題には4つの選択肢があり、JSON配列の形式になっています" + }, + "zhxf5wo": { + "zh-cn": "区块链中,以下哪个特性是Sui区块链的独特优势?", + "en": "Which of the following features is the unique advantage of Sui blockchain in blockchain?", + "ko": "블록체인에서 다음 중 Sui 블록체인의 독특한 장점은 무엇입니까?", + "ja": "ブロックチェーンの中で、以下のどの特性がSuiブロックチェーンの独特な優位性ですか?" + }, + "8i6buod": { + "zh-cn": "并行交易处理和对象级所有权", + "en": "Parallel transaction processing and object level ownership", + "ko": "동시 거래 처리 및 객체 수준 소유권", + "ja": "同時取引処理とオブジェクト・レベルの所有権" + }, + "a49hvsj": { + "zh-cn": "使用Proof of Work共识算法", + "en": "Using the Proof of Work consensus algorithm", + "ko": "Proof of Work 합의 알고리즘 사용", + "ja": "Proof of Workコンセンサスアルゴリズムの使用" + }, + "9qbr1c7": { + "zh-cn": "不支持智能合约", + "en": "Not supporting smart contracts", + "ko": "스마트 계약이 지원되지 않음", + "ja": "スマート契約はサポートされていません" + }, + "y9chktf": { + "zh-cn": "只能发行不可替代代币(NFT)", + "en": "Can only issue non fungible tokens (NFTs)", + "ko": "대체 불가능한 토큰만 발행할 수 있음(NFT)", + "ja": "代替不可能なトークンのみ発行可能(NFT)" + }, + "kdquqor": { + "zh-cn": "在Sui Move语言中,以下哪种类型是Sui特有的?", + "en": "Which of the following types is unique to Sui Move language?", + "ko": "Sui Move 언어에서 Sui 고유의 유형은 무엇입니까?", + "ja": "Sui Move言語では、以下のどのタイプがSui特有のものですか。" + }, + "g6vofe4": { + "zh-cn": "答题演示", + "en": "Answer demonstration", + "ko": "퀴즈 프레젠테이션", + "ja": "クイズのデモンストレーション" + }, + "sg518p5": { + "zh-cn": "当前积分:", + "en": "Current points:", + "ko": "현재 포인트:", + "ja": "現在の積分:" + }, + "btlpe3": { + "zh-cn": "上一题", + "en": "Previous question", + "ko": "이전 문제", + "ja": "前の問題" + }, + "od5m2": { + "zh-cn": "说明", + "en": "describe", + "ko": "설명", + "ja": "説明" + }, + "fead3jw": { + "zh-cn": "这是一个答题演示页面,展示了如何与 Sui Move 合约交互。", + "en": "This is a quiz demonstration page that shows how to interact with the Sui Move contract.", + "ko": "Sui Move 계약과 상호 작용하는 방법을 보여주는 퀴즈 데모 페이지입니다.", + "ja": "Sui Move契約との対話方法を示すクイズデモページです。" + }, + "tpgf8xq": { + "zh-cn": "正确回答问题可以获得积分奖励,查看解析需要消耗积分。", + "en": "Answering questions correctly can earn points rewards, while viewing and parsing requires the consumption of points.", + "ko": "질문에 정확하게 대답하면 포인트 보상을 받을 수 있습니다. 확인 시 포인트 소모가 필요합니다.", + "ja": "質問に正しく答えるとポイント奨励金がもらえ、解析を見るにはポイントを消費する必要があります。" + }, + "ssfibbr": { + "zh-cn": "在实际应用中,积分会记录在区块链上,这里只是前端模拟。", + "en": "In practical applications, the points will be recorded on the blockchain, and this is just a front-end simulation.", + "ko": "실제 응용에서 포인트는 블록 체인에 기록되며 여기서는 프런트엔드 시뮬레이션에 불과합니다.", + "ja": "実際の用途では、積分はブロックチェーンに記録されますが、ここではフロントエンドシミュレーションのみです。" + }, + "wn5ac4d": { + "zh-cn": "请先连接您的钱包以开始答题", + "en": "Please connect your wallet first to start answering the questions", + "ko": "먼저 지갑을 연결하여 퀴즈를 시작하십시오.", + "ja": "まず財布を接続して問題に答えてください" + }, + "aezt94b": { + "zh-cn": "提交回答: 问题ID=", + "en": "Submit answer: Question ID=", + "ko": "제출 답변: 질문 ID=", + "ja": "コミット回答:質問ID=" + }, + "1akt6h5": { + "zh-cn": ", 选项=", + "en": ", Options=", + "ko": ", 옵션 =", + "ja": "、オプション=" + }, + "qywik76": { + "zh-cn": "合约调用: ", + "en": "Contract call:", + "ko": "계약 호출:", + "ja": "契約呼び出し:" + }, + "m7j9dtb": { + "zh-cn": "查看解析: 问题ID=", + "en": "View resolution: Problem ID=", + "ko": "확인 보기: 문제 ID=", + "ja": "解析の表示:問題ID=" + }, + "ulinr17": { + "zh-cn": ", 消耗积分=", + "en": ", consume points=", + "ko": ", 포인트 소모 =", + "ja": "、消費積分=" + }, + "a85fwhn": { + "zh-cn": "这是问题的详细解析内容。解答步骤如下:1...", + "en": "This is the detailed analysis of the problem. The answer steps are as follows: 1", + "ko": "이것은 문제의 상세한 해결 내용이다.답변 단계는 다음과 같습니다. 1...", + "ja": "これは問題の詳細な解析内容です。解答手順は次のとおりです。1…" + }, + "ev0tfv6": { + "zh-cn": "提交中...", + "en": "Submitting", + "ko": "제출 중...", + "ja": "コミット中..." + }, + "cxbsqw4": { + "zh-cn": "提交答案", + "en": "Submit answers", + "ko": "답안을 제출하다", + "ja": "回答の送信" + }, + "cafghxb": { + "zh-cn": "恭喜!答案正确,获得 ", + "en": "congratulations! Correct answer, obtained", + "ko": "축하합니다!정답, 획득", + "ja": "おめでとう!答えが正しい" + }, + "lul33": { + "zh-cn": " 积分", + "en": "points", + "ko": "포인트", + "ja": "せきぶん" + }, + "k81cef8": { + "zh-cn": "很遗憾,答案错误", + "en": "Unfortunately, the answer is incorrect", + "ko": "유감스럽게도 답이 틀렸다", + "ja": "残念ながら、答えは間違っています" + }, + "8jnov07": { + "zh-cn": "查看解析(消耗", + "en": "View parsing (consumption)", + "ko": "확인 보기 (소모", + "ja": "解析の表示(消費量)" + }, + "iaaya3": { + "zh-cn": "积分)", + "en": "Points)", + "ko": "포인트)", + "ja": "積分)" + }, + "kq3713": { + "zh-cn": "解析:", + "en": "Analysis:", + "ko": "해결:", + "ja": "解析:" + }, + "gwasf17": { + "zh-cn": "合约调用说明:", + "en": "Contract call instructions:", + "ko": "계약 호출 지침:", + "ja": "契約呼び出しの説明:" + }, + "rlmy098": { + "zh-cn": "1. 回答问题:", + "en": "1. Answer the question:", + "ko": "1. 질문에 답하기:", + "ja": "1.質問に答える:" + }, + "3ttndp8": { + "zh-cn": "2. 查看解析:", + "en": "2. View analysis:", + "ko": "2. 확인을 보려면 다음과 같이 하십시오.", + "ja": "2.解析の表示:" + }, + "l64ygpk": { + "zh-cn": "需要在实际应用中用以下步骤替换模拟代码:", + "en": "The simulation code needs to be replaced with the following steps in practical applications:", + "ko": "실제 응용 프로그램에서 다음 단계로 아날로그 코드를 대체해야 합니다.", + "ja": "シミュレーションコードを実際のアプリケーションで次の手順で置き換える必要があります。" + }, + "ubxqp418": { + "zh-cn": "导入需要的钱包API,如useWallet和useTransactionExecutor", + "en": "Import the required wallet APIs, such as useWallet and useTransactionExecutor", + "ko": "useWallet 및 useTransactionExecutor와 같은 필요한 지갑 API 가져오기", + "ja": "useWalletやuseTransactionExecutorなど、必要なウォレットAPIをインポートする" + }, + "sykthed": { + "zh-cn": "构建交易并使用钱包签名执行", + "en": "Build transactions and execute them using wallet signatures", + "ko": "거래 구축 및 지갑 서명 사용", + "ja": "トランザクションを構築し、ウォレット署名を使用して実行する" + }, + "ckh732d": { + "zh-cn": "监听交易结果并更新UI状态", + "en": "Monitor transaction results and update UI status", + "ko": "트랜잭션 결과 수신 및 UI 상태 업데이트", + "ja": "取引結果を傍受し、UIステータスを更新する" + }, + "u1diepg": { + "zh-cn": "Token余额不足,无法查看解析", + "en": "Insufficient Token balance, unable to view and parse", + "ko": "Token 잔액이 부족하여 확인을 볼 수 없습니다.", + "ja": "Token残高が不足して解析を表示できません" + }, + "tcf62p5": { + "zh-cn": "你的积分:", + "en": "Your points:", + "ko": "당신의 포인트:", + "ja": "あなたのポイント:" + }, + "kkdcmoa": { + "zh-cn": "请连接钱包以查看积分", + "en": "Please connect your wallet to view your points", + "ko": "지갑을 연결하여 포인트를 확인하십시오.", + "ja": "ウォレットに接続してポイントを確認してください" + }, + "y4umimf": { + "zh-cn": "✓ 回答正确! 获得10积分!", + "en": "✓ Correct answer! Get 10 points!", + "ko": "♦ 정답!10포인트 획득!", + "ja": "$正解!ポイント10獲得!" + }, + "degxhy8": { + "zh-cn": "查看解析 (消耗", + "en": "View parsing (consumption)", + "ko": "확인 보기 (소모", + "ja": "解析の表示(消費量)" + }, + "i8wlu3": { + "zh-cn": "积分)", + "en": "Points)", + "ko": "포인트)", + "ja": "積分)" + }, + "7hr0rs8": { + "zh-cn": "恭喜!你获得了 ", + "en": "congratulations! You got it", + "ko": "축하합니다!네가 얻었어", + "ja": "おめでとう!あなたが手に入れた" + }, + "5eu7zj6": { + "zh-cn": " 积分奖励!", + "en": "Points reward!", + "ko": "포인트 보상!", + "ja": "ポイントボーナス!" + }, + "x0q8suj": { + "zh-cn": "积分奖励失败,请检查钱包连接或稍后重试", + "en": "Points reward failed, please check wallet connection or try again later", + "ko": "포인트 보상 실패, 지갑 연결을 확인하거나 나중에 다시 시도하십시오.", + "ja": "ポイントボーナスに失敗しました。ウォレット接続を確認するか、後で再試行してください" + }, + "hszmium": { + "zh-cn": "查看解析失败,请确保你有足够的积分或稍后重试", + "en": "Viewing parsing failed, please make sure you have enough points or try again later", + "ko": "확인 실패, 충분한 포인트가 있는지 확인하거나 나중에 다시 시도하십시오.", + "ja": "解析に失敗した場合は、十分な積分があることを確認するか、後で再試行してください" + }, + "u5bstf6": { + "zh-cn": "处理中...", + "en": "Processing in progress", + "ko": "처리 중...", + "ja": "処理中..." + }, + "7l8nz66": { + "zh-cn": "领取积分奖励", + "en": "Claim point rewards", + "ko": "포인트 보상 수령", + "ja": "ポイントインセンティブを受け取る" + }, + "ht9eqw4": { + "zh-cn": "解析ID", + "en": "Resolve ID", + "ko": "확인 ID", + "ja": "解析ID" + }, + "abyqe14": { + "zh-cn": "代币ID", + "en": "Token ID", + "ko": "토큰 ID", + "ja": "トークンID" + }, + "k6dp3cd": { + "zh-cn": "查看详细解析 (消耗积分)", + "en": "View detailed analysis (consumption of points)", + "ko": "상세 확인 보기 (포인트 사용)", + "ja": "詳細解析の表示(消費積分)" + }, + "h7x0jwc": { + "zh-cn": "连接钱包以使用区块链功能", + "en": "Connect wallet to use blockchain functionality", + "ko": "블록체인 기능을 사용하기 위해 지갑 연결", + "ja": "ブロックチェーン機能を使用するウォレットの接続" + }, + "u2qwca1x": { + "zh-cn": "Move语言是由Facebook的子公司Novi Financial开发的,用于其数字货币项目Diem(原Libra)的智能合约编程语言。", + "en": "Move language is a smart contract programming language developed by Novi Financial, a subsidiary of Facebook, for its digital currency project Diem (formerly Libra).", + "ko": "무브 언어는 페이스북의 자회사인 노비파이낸셜이 개발한 것으로, 자사의 디지털화폐 프로젝트인 디엠(옛 리브라)의 스마트 계약 프로그래밍 언어로 쓰인다.", + "ja": "Move言語は、Facebookの子会社Novi Financialが開発した、デジタル通貨プロジェクトDiem(旧Libra)のためのインテリジェント契約プログラミング言語です。" + }, + "ffk2a3g": { + "zh-cn": "Move语言是由哪个组织开发的?", + "en": "Which organization developed the Move language?", + "ko": "무브 언어는 어느 조직에서 개발했습니까?", + "ja": "Move言語はどの組織によって開発されましたか。" + }, + "f29g6318": { + "zh-cn": "Move语言是一种静态类型的编程语言,它强调类型安全性和资源管理,特别适合编写智能合约。", + "en": "Move language is a statically typed programming language that emphasizes type safety and resource management, making it particularly suitable for writing smart contracts.", + "ko": "Move 언어는 지능형 계약을 작성하는 데 특히 적합한 유형 보안 및 리소스 관리를 강조하는 정적 유형의 프로그래밍 언어입니다.", + "ja": "Move言語は静的タイプのプログラミング言語であり、タイプのセキュリティとリソース管理を強調し、特にインテリジェント契約の作成に適しています。" + }, + "1c0smi7": { + "zh-cn": "A. 面向对象", + "en": "A. Object oriented", + "ko": "A. 객체 지향", + "ja": "A.オブジェクト指向" + }, + "g25ing7": { + "zh-cn": "B. 静态类型", + "en": "B. Static type", + "ko": "B. 정적 유형", + "ja": "B.静的タイプ" + }, + "m2ncji7": { + "zh-cn": "C. 动态类型", + "en": "C. Dynamic type", + "ko": "C. 동적 유형", + "ja": "C.動的タイプ" + }, + "xikomt6": { + "zh-cn": "D. 过程式", + "en": "D. Procedural approach", + "ko": "D. 프로세스", + "ja": "D.プロセス式" + }, + "mf1txuf": { + "zh-cn": "Move语言的主要特点是什么?", + "en": "What are the main features of Move language?", + "ko": "무브 언어의 주요 특징은 무엇입니까?", + "ja": "Move言語の主な特徴は何ですか。" + }, + "ucqkn21p": { + "zh-cn": "在Move语言中,使用关键字'resource'来声明资源,资源是一种特殊的结构体,它代表在Move中具有持久存在的数据。", + "en": "In the Move language, the keyword 'resource' is used to declare resources, which are a special type of structure that represents persistent data in the Move.", + "ko": "Move 언어에서 키워드'resource'를 사용하여 리소스를 선언합니다. 리소스는 Move에서 영구적으로 존재하는 데이터를 나타내는 특수한 구조체입니다.", + "ja": "Move言語では、Moveに永続的に存在するデータを表す特別な構造体であるリソースを宣言するためにキーワード「resource」を使用します。" + }, + "wbxhh8n": { + "zh-cn": "在Move语言中,以下哪个关键字用于声明资源?", + "en": "Which of the following keywords is used to declare resources in the Move language?", + "ko": "Move 언어에서 리소스를 선언하는 데 사용되는 키워드는 무엇입니까?", + "ja": "Move言語でリソースを宣言するために使用するキーワードはどれですか。" + }, + "4xo5297": { + "zh-cn": "查看答案与解析", + "en": "View answers and analysis", + "ko": "답변 및 해결 보기", + "ja": "答えと解析の表示" + }, + "1imcm15": { + "zh-cn": "答案与解析", + "en": "Answers and Analysis", + "ko": "답변 및 해결", + "ja": "答えと解析" + }, + "9eetwb5": { + "zh-cn": "正确答案:", + "en": "Correct answer:", + "ko": "정답:", + "ja": "正解:" + }, + "6owdzmm": { + "zh-cn": "Move语言中,以下哪个关键字用于声明模块?", + "en": "Which of the following keywords is used to declare modules in Move language?", + "ko": "Move 언어에서 다음 중 모듈을 선언하는 데 사용되는 키워드는 무엇입니까?", + "ja": "Move言語でモジュールを宣言するために使用されるキーワードはどれですか。" + }, + "aql7y16": { + "zh-cn": "在Move语言中,'module'关键字用于声明一个新模块,它是代码组织的基本单位。", + "en": "In the Move language, ' The 'module' keyword is used to declare a new module, which is the basic unit of code organization.", + "ko": "Move 언어에서'module'키워드는 코드 조직의 기본 단위인 새 모듈을 선언하는 데 사용됩니다.", + "ja": "Move言語では、'module'キーワードは、コード組織の基本単位である新しいモジュールを宣言するために使用されます。" + }, + "qbx2ys9": { + "zh-cn": "添加示例问题到链上", + "en": "Add example questions to the chain", + "ko": "체인에 예제 질문 추가", + "ja": "チェーンへのサンプル問題の追加" + } +} \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/move.sh b/move202503/AKAKing23/code/chain_front/move.sh new file mode 100644 index 00000000..e490293c --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/move.sh @@ -0,0 +1,5 @@ +sui client call --package 0x2f890627582705d87c06d78a19388e6a3c6b81fb885f0779906426e7c5554797 \ + --module quiz \ + --function direct_reward \ + --args "0x4642beb75afddaea13dcef10905582a0ec8052affbd84d2478ccbd9bb46b5ffe" "0xe75a090888082e699c99b6877f93aaacedba68cd172f32006605e76b99260bb8" 100 \ + --gas-budget 10000000 \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/netlify.toml b/move202503/AKAKing23/code/chain_front/netlify.toml new file mode 100644 index 00000000..ff1c0508 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/netlify.toml @@ -0,0 +1,4 @@ +[[redirects]] + from = "/*" + to = "/index.html" + status = 200 \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/package.json b/move202503/AKAKing23/code/chain_front/package.json new file mode 100644 index 00000000..8f8e7a5c --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/package.json @@ -0,0 +1,48 @@ +{ + "name": "chainx_front", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@mysten/dapp-kit": "^0.15.2", + "@mysten/seal": "0.3.5", + "@mysten/sui": "^1.26.1", + "@radix-ui/react-slot": "^1.2.0", + "@suiet/wallet-kit": "^0.3.3", + "@tailwindcss/vite": "^4.1.3", + "@tanstack/react-query": "^5.71.3", + "axios": "^1.8.4", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "gsap": "^3.12.7", + "lucide-react": "^0.488.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-router-dom": "^7.5.0", + "snarkjs": "^0.7.5", + "tailwind-merge": "^3.2.0", + "tailwindcss": "^4.1.3", + "tw-animate-css": "^1.2.5" + }, + "devDependencies": { + "@eslint/js": "^9.21.0", + "@types/node": "^22.14.1", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", + "@vitejs/plugin-react": "^4.3.4", + "eslint": "^9.21.0", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^15.15.0", + "typescript": "~5.7.2", + "typescript-eslint": "^8.24.1", + "vite": "^6.2.0", + "vite-auto-i18n-plugin": "^1.0.23" + } +} diff --git a/move202503/AKAKing23/code/chain_front/pnpm-lock.yaml b/move202503/AKAKing23/code/chain_front/pnpm-lock.yaml new file mode 100644 index 00000000..3c28251a --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/pnpm-lock.yaml @@ -0,0 +1,6328 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@mysten/dapp-kit': + specifier: ^0.15.2 + version: 0.15.7(@tanstack/react-query@5.74.4(react@19.1.0))(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3) + '@mysten/seal': + specifier: 0.3.5 + version: 0.3.5(typescript@5.7.3) + '@mysten/sui': + specifier: ^1.26.1 + version: 1.28.2(typescript@5.7.3) + '@radix-ui/react-slot': + specifier: ^1.2.0 + version: 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@suiet/wallet-kit': + specifier: ^0.3.3 + version: 0.3.3(@mysten/sui@1.28.2(typescript@5.7.3))(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3) + '@tailwindcss/vite': + specifier: ^4.1.3 + version: 4.1.4(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.2)) + '@tanstack/react-query': + specifier: ^5.71.3 + version: 5.74.4(react@19.1.0) + axios: + specifier: ^1.8.4 + version: 1.9.0 + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + gsap: + specifier: ^3.12.7 + version: 3.12.7 + lucide-react: + specifier: ^0.488.0 + version: 0.488.0(react@19.1.0) + react: + specifier: ^19.0.0 + version: 19.1.0 + react-dom: + specifier: ^19.0.0 + version: 19.1.0(react@19.1.0) + react-router-dom: + specifier: ^7.5.0 + version: 7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + snarkjs: + specifier: ^0.7.5 + version: 0.7.5 + tailwind-merge: + specifier: ^3.2.0 + version: 3.2.0 + tailwindcss: + specifier: ^4.1.3 + version: 4.1.4 + tw-animate-css: + specifier: ^1.2.5 + version: 1.2.8 + devDependencies: + '@eslint/js': + specifier: ^9.21.0 + version: 9.25.1 + '@types/node': + specifier: ^22.14.1 + version: 22.15.2 + '@types/react': + specifier: ^19.0.10 + version: 19.1.2 + '@types/react-dom': + specifier: ^19.0.4 + version: 19.1.2(@types/react@19.1.2) + '@vitejs/plugin-react': + specifier: ^4.3.4 + version: 4.4.1(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.2)) + eslint: + specifier: ^9.21.0 + version: 9.25.1(jiti@2.4.2) + eslint-plugin-react-hooks: + specifier: ^5.1.0 + version: 5.2.0(eslint@9.25.1(jiti@2.4.2)) + eslint-plugin-react-refresh: + specifier: ^0.4.19 + version: 0.4.20(eslint@9.25.1(jiti@2.4.2)) + globals: + specifier: ^15.15.0 + version: 15.15.0 + typescript: + specifier: ~5.7.2 + version: 5.7.3 + typescript-eslint: + specifier: ^8.24.1 + version: 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + vite: + specifier: ^6.2.0 + version: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.2) + vite-auto-i18n-plugin: + specifier: ^1.0.23 + version: 1.0.26 + +packages: + + '@0no-co/graphql.web@1.1.2': + resolution: {integrity: sha512-N2NGsU5FLBhT8NZ+3l2YrzZSHITjNXNuDhC4iDiikv0IujaJ0Xc6xIxQZ/Ek3Cb+rgPjnLHYyJm11tInuJn+cw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + + '@0no-co/graphqlsp@1.12.16': + resolution: {integrity: sha512-B5pyYVH93Etv7xjT6IfB7QtMBdaaC07yjbhN6v8H7KgFStMkPvi+oWYBTibMFRMY89qwc9H8YixXg8SXDVgYWw==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.8': + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.10': + resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.0': + resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.0': + resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.27.0': + resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.27.0': + resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.4': + resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.26.5': + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.0': + resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.26.8': + resolution: {integrity: sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.26.5': + resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.27.0': + resolution: {integrity: sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.26.3': + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.26.9': + resolution: {integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.26.3': + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.26.6': + resolution: {integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-constant-elements@7.25.9': + resolution: {integrity: sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.25.9': + resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.25.9': + resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.25.9': + resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.25.9': + resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.25.9': + resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.25.9': + resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.27.0': + resolution: {integrity: sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.26.8': + resolution: {integrity: sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.27.0': + resolution: {integrity: sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.27.0': + resolution: {integrity: sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.26.9': + resolution: {integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-react@7.26.3': + resolution: {integrity: sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.27.0': + resolution: {integrity: sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.27.0': + resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.0': + resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.0': + resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + engines: {node: '>=6.9.0'} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@esbuild/aix-ppc64@0.25.3': + resolution: {integrity: sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.3': + resolution: {integrity: sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.3': + resolution: {integrity: sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.3': + resolution: {integrity: sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.3': + resolution: {integrity: sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.3': + resolution: {integrity: sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.3': + resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.3': + resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.3': + resolution: {integrity: sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.3': + resolution: {integrity: sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.3': + resolution: {integrity: sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.3': + resolution: {integrity: sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.3': + resolution: {integrity: sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.3': + resolution: {integrity: sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.3': + resolution: {integrity: sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.3': + resolution: {integrity: sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.3': + resolution: {integrity: sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.3': + resolution: {integrity: sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.3': + resolution: {integrity: sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.3': + resolution: {integrity: sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.3': + resolution: {integrity: sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.3': + resolution: {integrity: sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.3': + resolution: {integrity: sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.3': + resolution: {integrity: sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.3': + resolution: {integrity: sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.6.1': + resolution: {integrity: sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.1': + resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.25.1': + resolution: {integrity: sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@floating-ui/core@1.6.9': + resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} + + '@floating-ui/dom@1.6.13': + resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + + '@gql.tada/cli-utils@1.6.3': + resolution: {integrity: sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==} + peerDependencies: + '@0no-co/graphqlsp': ^1.12.13 + '@gql.tada/svelte-support': 1.0.1 + '@gql.tada/vue-support': 1.0.1 + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + peerDependenciesMeta: + '@gql.tada/svelte-support': + optional: true + '@gql.tada/vue-support': + optional: true + + '@gql.tada/internal@1.0.8': + resolution: {integrity: sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@graphql-typed-document-node/core@3.2.0': + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + 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 + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + + '@iden3/bigarray@0.0.2': + resolution: {integrity: sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g==} + + '@iden3/binfileutils@0.0.12': + resolution: {integrity: sha512-naAmzuDufRIcoNfQ1d99d7hGHufLA3wZSibtr4dMe6ZeiOPV1KwOZWTJ1YVz4HbaWlpDuzVU72dS4ATQS4PXBQ==} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@mysten/bcs@1.1.0': + resolution: {integrity: sha512-yy9/1Y4d0FlRywS1+9ze/T7refCbrvwFwJIOKs9M3QBK1njbcHZp+LkVeLqBvIJA5eZ3ZCzmhQ1Xq4Sed5mEBA==} + + '@mysten/bcs@1.6.0': + resolution: {integrity: sha512-ydDRYdIkIFCpHCcPvAkMC91fVwumjzbTgjqds0KsphDQI3jUlH3jFG5lfYNTmV6V3pkhOiRk1fupLBcsQsiszg==} + + '@mysten/dapp-kit@0.15.7': + resolution: {integrity: sha512-88mE4JFmvv5qph3KrU0l6e1Kq8dtykCf8Ta3PFINjKXU+8ya2HgmptLbKRoJvNG+v6vhb8NE6IEc0LsprDB+QQ==} + peerDependencies: + '@tanstack/react-query': ^5.0.0 + react: '*' + + '@mysten/seal@0.3.5': + resolution: {integrity: sha512-VPCTC2HkSyVTn7P6biOITwf5fDf8W6Q3MFGpyFVbb5StOVVQfSv8phPivXXPH/n6YeqiIbRaTrhv9JO2YDEyVA==} + + '@mysten/sui@1.12.0': + resolution: {integrity: sha512-DrSyja04xyGrTGlIQKMwZ6MywxNPkjyIcDLm915Zisoy1/uIgPoHc4cx53JyiG92z/HgowTVGGCCIzH53DIYXA==} + engines: {node: '>=18'} + + '@mysten/sui@1.14.3': + resolution: {integrity: sha512-5vhOnbSAT/9daMIDPYOp7q9j+6DXqjPAYEJy7ZbR9viBsyAx4UMChCwaLyjoYcJKvhrkDn4LTdDTJEUvpj7TTg==} + engines: {node: '>=18'} + + '@mysten/sui@1.26.1': + resolution: {integrity: sha512-bBVvn2wZKipAvuUkKzHwGhs1JiIM33+b97d0uIWg3T6dJH/n1nfnGrzkBQsMGpoBAFOIUnKQAZmDwT4qvJbKkg==} + engines: {node: '>=18'} + + '@mysten/sui@1.28.1': + resolution: {integrity: sha512-kvrcUKiC/92N4u3Ncb8j1uLeBhCjrnTZyBjIX0zNTukFFCMbZkDYEr9IVjPrvnOEwOXZ3fpYmpmw3LB9dEU5FA==} + engines: {node: '>=18'} + + '@mysten/sui@1.28.2': + resolution: {integrity: sha512-d+lSp3rAtuOX0taIiIv0KNILDsbmAB9koNGHBinfREraGnE9tUFW315UByuyvuZ9K53ji4i2risdtwxCQ1a8Zw==} + engines: {node: '>=18'} + + '@mysten/utils@0.0.0': + resolution: {integrity: sha512-KRI57Qow3E7TGqczimazwGf7+fwukdOi+6a31igSCzz0kPjAXbyK1a1gXaxeLMF8xEZ07ouW3RnsWt+EaUuHUw==} + + '@mysten/wallet-standard@0.13.12': + resolution: {integrity: sha512-qFNtgi85Ja4F1dY8MyLIQ+uxzhru+h6TQ6VG2N2AnTutCiFvaQeu2S/akFYeJMfZ0CN/m0v3TNQZN5cxtrLEeg==} + + '@mysten/wallet-standard@0.13.7': + resolution: {integrity: sha512-FXlqn3Gp4E7aQf33rZQfaCEUeEq9TbmkIFA7kX/Yab5SC5892XVhkLRu040eBs8Cest98jFUZ2ZJ4YWR+a7e5g==} + + '@mysten/wallet-standard@0.14.6': + resolution: {integrity: sha512-jgSOcOL48Np+Yy3dVS8MHNFMMSOjA1mIuYqTc0h5PjOmeIOkzSHHC3hsSReqg7Hcm/SBb99DvvZ3XQaVPno23Q==} + + '@mysten/window-wallet-core@0.0.2': + resolution: {integrity: sha512-u57gHFlLYPDTK5bDeabRjkIdyLaiFVwL3bVbnBtu5WJpfFOv/KMOpIQt4820ICBG843jN35tzlulQ0nlbWCYeA==} + + '@mysten/zksend@0.11.12': + resolution: {integrity: sha512-YtLgV4LpYehitlJ4U03LaAK+m7ejmHqC7AarzG/4K0HnqMjc1i2CSztUJ/QOj/QBnedUd9RQ7sxM/6nwGsudAA==} + + '@mysten/zksend@0.12.27': + resolution: {integrity: sha512-HRgC8RnLn24SFyq1eiB3Fq/mKQWQAoYvsMV6lPQu0dUwjlehZg7jeUJbqjC2mgV91NsY9RRnCX5kFnysdUdHew==} + + '@noble/curves@1.9.0': + resolution: {integrity: sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@radix-ui/primitive@1.1.2': + resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + + '@radix-ui/react-arrow@1.1.4': + resolution: {integrity: sha512-qz+fxrqgNxG0dYew5l7qR3c7wdgRu1XVUHGnGYX7rg5HM4p9SWaRmJwfgR3J0SgyUKayLmzQIun+N6rWRgiRKw==} + 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 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.4': + resolution: {integrity: sha512-cv4vSf7HttqXilDnAnvINd53OTl1/bjUYVZrkFnA7nwmY9Ob2POUy0WY0sfqBAe1s5FyKsyceQlqiEGPYNTadg==} + 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 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.11': + resolution: {integrity: sha512-yI7S1ipkP5/+99qhSI6nthfo/tR6bL6Zgxi/+1UO6qPa6UeM6nlafWcQ65vB4rU2XjgjMfMhI3k9Y5MztA62VQ==} + 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 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.7': + resolution: {integrity: sha512-j5+WBUdhccJsmH5/H0K6RncjDtoALSEr6jbkaZu+bjw6hOPOhHycr6vEUujl+HBK8kjUfWcoCJXxP6e4lUlMZw==} + 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 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.12': + resolution: {integrity: sha512-VJoMs+BWWE7YhzEQyVwvF9n22Eiyr83HotCVrMQzla/OwRovXCgah7AcaEr4hMNj4gJxSdtIbcHGvmJXOoJVHA==} + 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 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.2': + resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.4': + resolution: {integrity: sha512-r2annK27lIW5w9Ho5NyQgqs0MmgZSTIKXWpVCJaLC1q2kZrZkcqnmHkCHMEmv8XLvsLlurKMPT+kbKkRkm/xVA==} + 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 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-menu@2.1.12': + resolution: {integrity: sha512-+qYq6LfbiGo97Zz9fioX83HCiIYYFNs8zAsVCMQrIakoNYylIzWuoD/anAD3UzvvR6cnswmfRFJFq/zYYq/k7Q==} + 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 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.4': + resolution: {integrity: sha512-3p2Rgm/a1cK0r/UVkx5F/K9v/EplfjAeIFCGOPYPO4lZ0jtg4iSQXt/YGTSLWaf4x7NG6Z4+uKFcylcTZjeqDA==} + 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 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.6': + resolution: {integrity: sha512-XmsIl2z1n/TsYFLIdYam2rmFwf9OC/Sh2avkbmVMDuBZIe7hSpM0cYnWPAo7nHOVx8zTuwDZGByfcqLdnzp3Vw==} + 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 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.4': + resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} + 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 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.0': + resolution: {integrity: sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==} + 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 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.7': + resolution: {integrity: sha512-C6oAg451/fQT3EGbWHbCQjYTtbyjNO1uzQgMzwyivcHT3GKNEmu1q3UuREhN+HzHAVtv3ivMVK08QlC+PkYw9Q==} + 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 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.2.0': + resolution: {integrity: sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + + '@rollup/pluginutils@4.2.1': + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + + '@rollup/rollup-android-arm-eabi@4.40.0': + resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.40.0': + resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.40.0': + resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.40.0': + resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.40.0': + resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.40.0': + resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.40.0': + resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.40.0': + resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.40.0': + resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.40.0': + resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.40.0': + resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.40.0': + resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.40.0': + resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.40.0': + resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-win32-arm64-msvc@4.40.0': + resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.40.0': + resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.40.0': + resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==} + cpu: [x64] + os: [win32] + + '@scure/base@1.2.5': + resolution: {integrity: sha512-9rE6EOVeIQzt5TSu4v+K523F8u6DhBsoZWPGKlnCshhlDhy0kJzUX4V+tr2dWmzF1GdekvThABoEQBGBQI7xZw==} + + '@scure/bip32@1.7.0': + resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==} + + '@scure/bip39@1.6.0': + resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} + + '@suchipi/femver@1.0.0': + resolution: {integrity: sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==} + + '@suiet/wallet-kit@0.3.3': + resolution: {integrity: sha512-LEfyzt1vUBSQPXDmoCIQnry64gDUYxG8V0n/Nngjw7EZg/9dslgXhTiB9DHpCDvH31WrZVyz69jFRAiAfUQFTg==} + peerDependencies: + '@mysten/sui': 1.12.0 + react: '*' + react-dom: '*' + + '@suiet/wallet-sdk@0.3.2': + resolution: {integrity: sha512-sgcAt2+8a1reDICBqrdgmSNqaRMHFMGC2bTEnkVh8PznXu4LEXBHxrhqFLluV2I/dK++FV63DebvlYB4XGqFXw==} + peerDependencies: + '@mysten/sui': 1.12.0 + + '@svgr/babel-plugin-add-jsx-attribute@6.5.1': + resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1': + resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-dynamic-title@6.5.1': + resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-em-dimensions@6.5.1': + resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-react-native-svg@6.5.1': + resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-svg-component@6.5.1': + resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-preset@6.5.1': + resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/core@6.5.1': + resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} + engines: {node: '>=10'} + + '@svgr/hast-util-to-babel-ast@6.5.1': + resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} + engines: {node: '>=10'} + + '@svgr/plugin-jsx@6.5.1': + resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': ^6.0.0 + + '@svgr/plugin-svgo@6.5.1': + resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': '*' + + '@svgr/rollup@6.5.1': + resolution: {integrity: sha512-GeUfq0grJfpcn2jRWRaZ4npn27nnWK21vUj6MqDqknuJnEqGADcZZjO9wrUAaPLr3InAnQi0Z7nwiNUdzkaj6A==} + engines: {node: '>=10'} + + '@tailwindcss/node@4.1.4': + resolution: {integrity: sha512-MT5118zaiO6x6hNA04OWInuAiP1YISXql8Z+/Y8iisV5nuhM8VXlyhRuqc2PEviPszcXI66W44bCIk500Oolhw==} + + '@tailwindcss/oxide-android-arm64@4.1.4': + resolution: {integrity: sha512-xMMAe/SaCN/vHfQYui3fqaBDEXMu22BVwQ33veLc8ep+DNy7CWN52L+TTG9y1K397w9nkzv+Mw+mZWISiqhmlA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.4': + resolution: {integrity: sha512-JGRj0SYFuDuAGilWFBlshcexev2hOKfNkoX+0QTksKYq2zgF9VY/vVMq9m8IObYnLna0Xlg+ytCi2FN2rOL0Sg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.4': + resolution: {integrity: sha512-sdDeLNvs3cYeWsEJ4H1DvjOzaGios4QbBTNLVLVs0XQ0V95bffT3+scptzYGPMjm7xv4+qMhCDrkHwhnUySEzA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.4': + resolution: {integrity: sha512-VHxAqxqdghM83HslPhRsNhHo91McsxRJaEnShJOMu8mHmEj9Ig7ToHJtDukkuLWLzLboh2XSjq/0zO6wgvykNA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.4': + resolution: {integrity: sha512-OTU/m/eV4gQKxy9r5acuesqaymyeSCnsx1cFto/I1WhPmi5HDxX1nkzb8KYBiwkHIGg7CTfo/AcGzoXAJBxLfg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.4': + resolution: {integrity: sha512-hKlLNvbmUC6z5g/J4H+Zx7f7w15whSVImokLPmP6ff1QqTVE+TxUM9PGuNsjHvkvlHUtGTdDnOvGNSEUiXI1Ww==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.4': + resolution: {integrity: sha512-X3As2xhtgPTY/m5edUtddmZ8rCruvBvtxYLMw9OsZdH01L2gS2icsHRwxdU0dMItNfVmrBezueXZCHxVeeb7Aw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.4': + resolution: {integrity: sha512-2VG4DqhGaDSmYIu6C4ua2vSLXnJsb/C9liej7TuSO04NK+JJJgJucDUgmX6sn7Gw3Cs5ZJ9ZLrnI0QRDOjLfNQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-x64-musl@4.1.4': + resolution: {integrity: sha512-v+mxVgH2kmur/X5Mdrz9m7TsoVjbdYQT0b4Z+dr+I4RvreCNXyCFELZL/DO0M1RsidZTrm6O1eMnV6zlgEzTMQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-wasm32-wasi@4.1.4': + resolution: {integrity: sha512-2TLe9ir+9esCf6Wm+lLWTMbgklIjiF0pbmDnwmhR9MksVOq+e8aP3TSsXySnBDDvTTVd/vKu1aNttEGj3P6l8Q==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.4': + resolution: {integrity: sha512-VlnhfilPlO0ltxW9/BgfLI5547PYzqBMPIzRrk4W7uupgCt8z6Trw/tAj6QUtF2om+1MH281Pg+HHUJoLesmng==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.4': + resolution: {integrity: sha512-+7S63t5zhYjslUGb8NcgLpFXD+Kq1F/zt5Xv5qTv7HaFTG/DHyHD9GA6ieNAxhgyA4IcKa/zy7Xx4Oad2/wuhw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.4': + resolution: {integrity: sha512-p5wOpXyOJx7mKh5MXh5oKk+kqcz8T+bA3z/5VWWeQwFrmuBItGwz8Y2CHk/sJ+dNb9B0nYFfn0rj/cKHZyjahQ==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.4': + resolution: {integrity: sha512-4UQeMrONbvrsXKXXp/uxmdEN5JIJ9RkH7YVzs6AMxC/KC1+Np7WZBaNIco7TEjlkthqxZbt8pU/ipD+hKjm80A==} + peerDependencies: + vite: ^5.2.0 || ^6 + + '@tanstack/query-core@5.74.4': + resolution: {integrity: sha512-YuG0A0+3i9b2Gfo9fkmNnkUWh5+5cFhWBN0pJAHkHilTx6A0nv8kepkk4T4GRt4e5ahbtFj2eTtkiPcVU1xO4A==} + + '@tanstack/react-query@5.74.4': + resolution: {integrity: sha512-mAbxw60d4ffQ4qmRYfkO1xzRBPUEf/72Dgo3qqea0J66nIKuDTLEqQt0ku++SDFlMGMnB6uKDnEG1xD/TDse4Q==} + peerDependencies: + react: ^18 || ^19 + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/http-errors@1.8.2': + resolution: {integrity: sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/node@22.15.2': + resolution: {integrity: sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/react-dom@19.1.2': + resolution: {integrity: sha512-XGJkWF41Qq305SKWEILa1O8vzhb3aOo3ogBlSmiqNko/WmRb6QIaweuZCXjKygVDXpzXb5wyxKTSOsmkuqj+Qw==} + peerDependencies: + '@types/react': ^19.0.0 + + '@types/react@19.1.2': + resolution: {integrity: sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==} + + '@typescript-eslint/eslint-plugin@8.31.0': + resolution: {integrity: sha512-evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.31.0': + resolution: {integrity: sha512-67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.31.0': + resolution: {integrity: sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.31.0': + resolution: {integrity: sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.31.0': + resolution: {integrity: sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.31.0': + resolution: {integrity: sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.31.0': + resolution: {integrity: sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.31.0': + resolution: {integrity: sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vanilla-extract/css@1.17.1': + resolution: {integrity: sha512-tOHQXHm10FrJeXKFeWE09JfDGN/tvV6mbjwoNB9k03u930Vg021vTnbrCwVLkECj9Zvh/SHLBHJ4r2flGqfovw==} + + '@vanilla-extract/dynamic@2.1.2': + resolution: {integrity: sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==} + + '@vanilla-extract/private@1.0.6': + resolution: {integrity: sha512-ytsG/JLweEjw7DBuZ/0JCN4WAQgM9erfSTdS1NQY778hFQSZ6cfCDEZZ0sgVm4k54uNz6ImKB33AYvSR//fjxw==} + + '@vanilla-extract/recipes@0.5.5': + resolution: {integrity: sha512-VadU7+IFUwLNLMgks29AHav/K5h7DOEfTU91RItn5vwdPfzduodNg317YbgWCcpm7FSXkuR3B3X8ZOi95UOozA==} + peerDependencies: + '@vanilla-extract/css': ^1.0.0 + + '@vitalets/google-translate-api@9.2.1': + resolution: {integrity: sha512-zlwQWSjXUZhbZQ6qwtIQ7GdYXFQmJ4wYqzcrYJUxtvzQQwUP+uKUb/SRJaBOQuBntjBjzcdcJoLFrpCKUbIkOg==} + engines: {node: '>=14'} + + '@vitejs/plugin-react@4.4.1': + resolution: {integrity: sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + + '@wallet-standard/app@1.1.0': + resolution: {integrity: sha512-3CijvrO9utx598kjr45hTbbeeykQrQfKmSnxeWOgU25TOEpvcipD/bYDQWIqUv1Oc6KK4YStokSMu/FBNecGUQ==} + engines: {node: '>=16'} + + '@wallet-standard/base@1.1.0': + resolution: {integrity: sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==} + engines: {node: '>=16'} + + '@wallet-standard/core@1.0.3': + resolution: {integrity: sha512-Jb33IIjC1wM1HoKkYD7xQ6d6PZ8EmMZvyc8R7dFgX66n/xkvksVTW04g9yLvQXrLFbcIjHrCxW6TXMhvpsAAzg==} + engines: {node: '>=16'} + + '@wallet-standard/core@1.1.0': + resolution: {integrity: sha512-v2W5q/NlX1qkn2q/JOXQT//pOAdrhz7+nOcO2uiH9+a0uvreL+sdWWqkhFmMcX+HEBjaibdOQMUoIfDhOGX4XA==} + engines: {node: '>=16'} + + '@wallet-standard/errors@0.1.1': + resolution: {integrity: sha512-V8Ju1Wvol8i/VDyQOHhjhxmMVwmKiwyxUZBnHhtiPZJTWY0U/Shb2iEWyGngYEbAkp2sGTmEeNX1tVyGR7PqNw==} + engines: {node: '>=16'} + hasBin: true + + '@wallet-standard/features@1.1.0': + resolution: {integrity: sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==} + engines: {node: '>=16'} + + '@wallet-standard/wallet@1.1.0': + resolution: {integrity: sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==} + engines: {node: '>=16'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + auto-i18n-plugin-core@1.0.26: + resolution: {integrity: sha512-Pm4MJ6vHcOBpuL6EGgpROQtnMOE5CpI79xFzOCs+gE2qygoHIFwtb1F3t5bAqn/tXBhvRuTixGrwX9013Fanjg==} + + axios@1.9.0: + resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} + + b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + + babel-plugin-polyfill-corejs2@0.4.13: + resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.11.1: + resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.4: + resolution: {integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@5.0.1: + resolution: {integrity: sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + + bfj@7.1.0: + resolution: {integrity: sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==} + engines: {node: '>= 8.0.0'} + + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + + blake2b-wasm@2.4.0: + resolution: {integrity: sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + broadcast-channel@3.7.0: + resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs58@6.0.0: + resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001715: + resolution: {integrity: sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + check-types@11.2.3: + resolution: {integrity: sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==} + + circom_runtime@0.1.28: + resolution: {integrity: sha512-ACagpQ7zBRLKDl5xRZ4KpmYIcZDUjOiNRuxvXLqhnnlLSVY1Dbvh73TI853nqoR0oEbihtWmMSjgc5f+pXf/jQ==} + hasBin: true + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + engines: {node: '>=18'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + + core-js-compat@3.41.0: + resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deep-object-diff@1.1.9: + resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.142: + resolution: {integrity: sha512-Ah2HgkTu/9RhTDNThBtzu2Wirdy4DC9b0sMT1pUhbkZQ5U/iwmE+PHZX1MpjD5IkJCc2wSghgGG/B04szAx07w==} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild@0.25.3: + resolution: {integrity: sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escodegen@1.14.3: + resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} + engines: {node: '>=4.0'} + hasBin: true + + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react-refresh@0.4.20: + resolution: {integrity: sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==} + peerDependencies: + eslint: '>=8.40' + + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.25.1: + resolution: {integrity: sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esprima@1.2.2: + resolution: {integrity: sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==} + engines: {node: '>=0.4.0'} + hasBin: true + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastfile@0.0.20: + resolution: {integrity: sha512-r5ZDbgImvVWCP0lA/cGNgQcZqR+aYdFx3u+CtJqUE510pBUVGMn4ulL/iRTI4tACTYsNJ736uzFxEBXesPAktA==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + ffjavascript@0.3.0: + resolution: {integrity: sha512-l7sR5kmU3gRwDy8g0Z2tYBXy5ttmafRPFOqY7S6af5cq51JqJWt5eQ/lSR/rs2wQNbDYaYlQr5O+OSUf/oMLoQ==} + + ffjavascript@0.3.1: + resolution: {integrity: sha512-4PbK1WYodQtuF47D4pRI5KUg3Q392vuP5WjE1THSnceHdXwU3ijaoS0OqxTzLknCtz4Z2TtABzkBdBdMn3B/Aw==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + gql.tada@1.8.10: + resolution: {integrity: sha512-FrvSxgz838FYVPgZHGOSgbpOjhR+yq44rCzww3oOPJYi0OvBJjAgCiP6LEokZIYND2fUTXzQAyLgcvgw1yNP5A==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphql@16.10.0: + resolution: {integrity: sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + gsap@3.12.7: + resolution: {integrity: sha512-V4GsyVamhmKefvcAKaoy0h6si0xX7ogwBoBSs2CTJwt7luW0oZzC0LhdkyuKV8PJAXr7Yaj8pMjCKD4GJ+eEMg==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hoopy@0.1.4: + resolution: {integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==} + engines: {node: '>= 6.0.0'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + jose@6.0.10: + resolution: {integrity: sha512-skIAxZqcMkOrSwjJvplIPYrlXGpxTPnro2/QWTDCxAdWQrSTV5/KqspMWmi5WAx5+ULswASJiZ0a+1B/Lxt9cw==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonpath@1.1.1: + resolution: {integrity: sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-darwin-arm64@1.29.2: + resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.29.2: + resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.29.2: + resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.2: + resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.2: + resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.29.2: + resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.29.2: + resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.29.2: + resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.29.2: + resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.2: + resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.29.2: + resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} + engines: {node: '>= 12.0.0'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + logplease@1.2.15: + resolution: {integrity: sha512-jLlHnlsPSJjpwUfcNyUxXCl33AYg2cHhIf9QhGL2T4iPT0XPB+xP1LRKFPgIg1M/sg9kAJvy94w9CzBNrfnstA==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lucide-react@0.488.0: + resolution: {integrity: sha512-ronlL0MyKut4CEzBY/ai2ZpKPxyWO4jUqdAkm2GNK5Zn3Rj+swDz+3lvyAUXN0PNqPKIX6XM9Xadwz/skLs/pQ==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + match-sorter@6.3.4: + resolution: {integrity: sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + media-query-parser@2.0.2: + resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + microseconds@0.2.0: + resolution: {integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + modern-ahocorasick@1.1.0: + resolution: {integrity: sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nano-time@1.0.0: + resolution: {integrity: sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==} + + nanoassert@2.0.0: + resolution: {integrity: sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanostores@0.10.3: + resolution: {integrity: sha512-Nii8O1XqmawqSCf9o2aWqVxhKRN01+iue9/VEd1TiJCr9VT5XxgPFbF1Edl1XN6pwJcZRsl8Ki+z01yb/T/C2g==} + engines: {node: ^18.0.0 || >=20.0.0} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + oblivious-set@1.0.0: + resolution: {integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + poseidon-lite@0.2.1: + resolution: {integrity: sha512-xIr+G6HeYfOhCuswdqcFpSX47SPhm0EpisWJ6h7fHlWwaVIvH3dLnejpatrtw6Xc6HaLrpq05y7VRfvDmDGIog==} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + r1csfile@0.0.48: + resolution: {integrity: sha512-kHRkKUJNaor31l05f2+RFzvcH5XSa7OfEfd/l4hzjte6NL6fjRkSMfZ4BjySW9wmfdwPOtq3mXurzPvPGEf5Tw==} + + react-dom@19.1.0: + resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + peerDependencies: + react: ^19.1.0 + + react-query@3.39.3: + resolution: {integrity: sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.3: + resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-router-dom@7.5.2: + resolution: {integrity: sha512-yk1XW8Fj7gK7flpYBXF3yzd2NbX6P7Kxjvs2b5nu1M04rb5pg/Zc4fGdBNTeT4eDYL2bvzWNyKaIMJX/RKHTTg==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + + react-router@7.5.2: + resolution: {integrity: sha512-9Rw8r199klMnlGZ8VAsV/I8WrIF6IyJ90JQUdboupx1cdkgYqwnrYjH+I/nY/7cA1X5zia4mDJqH36npP7sxGQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react@19.1.0: + resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + engines: {node: '>=0.10.0'} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + + remove-accents@0.5.0: + resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@4.40.0: + resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shamir-secret-sharing@0.0.3: + resolution: {integrity: sha512-GPIb+QZDyjwwKSlVXEjHoOaBeevmdWz2IM2tz07nQvd0L9eMfLhzEqr7imajjjXCAO/cWgzXCCj0yFNMx6+miQ==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + snarkjs@0.7.5: + resolution: {integrity: sha512-h+3c4rXZKLhLuHk4LHydZCk/h5GcNvk5GjVKRRkHmfb6Ntf8gHOA9zea3g656iclRuhqQ3iKDWFgiD9ypLrKiA==} + hasBin: true + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + + static-eval@2.0.2: + resolution: {integrity: sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + + svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + + tailwind-merge@3.2.0: + resolution: {integrity: sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==} + + tailwindcss@4.1.4: + resolution: {integrity: sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tryer@1.0.1: + resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + + turbo-stream@2.4.0: + resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==} + + tw-animate-css@1.2.8: + resolution: {integrity: sha512-AxSnYRvyFnAiZCUndS3zQZhNfV/B77ZhJ+O7d3K6wfg/jKJY+yv6ahuyXwnyaYA9UdLqnpCwhTRv9pPTBnPR2g==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + typescript-eslint@8.31.0: + resolution: {integrity: sha512-u+93F0sB0An8WEAPtwxVhFby573E8ckdjwUUQUj9QA4v8JAvgtoDdIyYR3XFwFHq2W1KJ1AurwJCO+w+Y1ixyQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + engines: {node: '>=14.17'} + hasBin: true + + underscore@1.12.1: + resolution: {integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + unload@2.2.0: + resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + valibot@0.36.0: + resolution: {integrity: sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==} + + vite-auto-i18n-plugin@1.0.26: + resolution: {integrity: sha512-y3mt2X0W8/gPlG1ygaMtd2vT/bjT8JIeZOB5wEO2hChw0LNA9SZJNaZKHa2yqnOCMIyO0FuzqWcbfHdJXiXoRg==} + + vite@6.3.3: + resolution: {integrity: sha512-5nXH+QsELbFKhsEfWLkHrvgRpTdGJzqOZ+utSdmPTvwHmvU6ITTm3xx+mRusihkcI8GeC7lCDyn3kDtiki9scw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + wasmbuilder@0.0.16: + resolution: {integrity: sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA==} + + wasmcurves@0.2.2: + resolution: {integrity: sha512-JRY908NkmKjFl4ytnTu5ED6AwPD+8VJ9oc94kdq7h5bIwbj0L4TDJ69mG+2aLs2SoCmGfqIesMWTEJjtYsoQXQ==} + + web-worker@1.2.0: + resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zustand@4.5.6: + resolution: {integrity: sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + +snapshots: + + '@0no-co/graphql.web@1.1.2(graphql@16.10.0)': + optionalDependencies: + graphql: 16.10.0 + + '@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.3)': + dependencies: + '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.3) + graphql: 16.10.0 + typescript: 5.7.3 + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.8': {} + + '@babel/core@7.26.10': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helpers': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.27.0': + dependencies: + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.27.0 + + '@babel/helper-compilation-targets@7.27.0': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@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.26.5(@babel/core@7.26.10) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.27.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + debug: 4.4.0 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.25.9': + dependencies: + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.27.0 + + '@babel/helper-plugin-utils@7.26.5': {} + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helper-wrap-function@7.25.9': + dependencies: + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.27.0': + dependencies: + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 + + '@babel/parser@7.27.0': + dependencies: + '@babel/types': 7.27.0 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-async-generator-functions@7.26.8(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-block-scoping@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) + '@babel/traverse': 7.27.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/template': 7.27.0 + + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-for-of@7.26.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-nullish-coalescing-operator@7.26.6(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) + + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-constant-elements@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/types': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-regenerator@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-template-literals@7.26.8(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-typeof-symbol@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-typescript@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/preset-env@7.26.9(@babel/core@7.26.10)': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.10) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.10) + '@babel/plugin-transform-block-scoping': 7.27.0(@babel/core@7.26.10) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.26.10) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-regenerator': 7.27.0(@babel/core@7.26.10) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-typeof-symbol': 7.27.0(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.10) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.10) + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.26.10) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.26.10) + core-js-compat: 3.41.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/types': 7.27.0 + esutils: 2.0.3 + + '@babel/preset-react@7.26.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.27.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.27.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + + '@babel/traverse@7.27.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@emotion/hash@0.9.2': {} + + '@esbuild/aix-ppc64@0.25.3': + optional: true + + '@esbuild/android-arm64@0.25.3': + optional: true + + '@esbuild/android-arm@0.25.3': + optional: true + + '@esbuild/android-x64@0.25.3': + optional: true + + '@esbuild/darwin-arm64@0.25.3': + optional: true + + '@esbuild/darwin-x64@0.25.3': + optional: true + + '@esbuild/freebsd-arm64@0.25.3': + optional: true + + '@esbuild/freebsd-x64@0.25.3': + optional: true + + '@esbuild/linux-arm64@0.25.3': + optional: true + + '@esbuild/linux-arm@0.25.3': + optional: true + + '@esbuild/linux-ia32@0.25.3': + optional: true + + '@esbuild/linux-loong64@0.25.3': + optional: true + + '@esbuild/linux-mips64el@0.25.3': + optional: true + + '@esbuild/linux-ppc64@0.25.3': + optional: true + + '@esbuild/linux-riscv64@0.25.3': + optional: true + + '@esbuild/linux-s390x@0.25.3': + optional: true + + '@esbuild/linux-x64@0.25.3': + optional: true + + '@esbuild/netbsd-arm64@0.25.3': + optional: true + + '@esbuild/netbsd-x64@0.25.3': + optional: true + + '@esbuild/openbsd-arm64@0.25.3': + optional: true + + '@esbuild/openbsd-x64@0.25.3': + optional: true + + '@esbuild/sunos-x64@0.25.3': + optional: true + + '@esbuild/win32-arm64@0.25.3': + optional: true + + '@esbuild/win32-ia32@0.25.3': + optional: true + + '@esbuild/win32-x64@0.25.3': + optional: true + + '@eslint-community/eslint-utils@4.6.1(eslint@9.25.1(jiti@2.4.2))': + dependencies: + eslint: 9.25.1(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.1': {} + + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.25.1': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.8': + dependencies: + '@eslint/core': 0.13.0 + levn: 0.4.1 + + '@floating-ui/core@1.6.9': + dependencies: + '@floating-ui/utils': 0.2.9 + + '@floating-ui/dom@1.6.13': + dependencies: + '@floating-ui/core': 1.6.9 + '@floating-ui/utils': 0.2.9 + + '@floating-ui/react-dom@2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@floating-ui/dom': 1.6.13 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + + '@floating-ui/utils@0.2.9': {} + + '@gql.tada/cli-utils@1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.3))(graphql@16.10.0)(typescript@5.7.3)': + dependencies: + '@0no-co/graphqlsp': 1.12.16(graphql@16.10.0)(typescript@5.7.3) + '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.3) + graphql: 16.10.0 + typescript: 5.7.3 + + '@gql.tada/internal@1.0.8(graphql@16.10.0)(typescript@5.7.3)': + dependencies: + '@0no-co/graphql.web': 1.1.2(graphql@16.10.0) + graphql: 16.10.0 + typescript: 5.7.3 + + '@graphql-typed-document-node/core@3.2.0(graphql@16.10.0)': + dependencies: + graphql: 16.10.0 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.2': {} + + '@iden3/bigarray@0.0.2': {} + + '@iden3/binfileutils@0.0.12': + dependencies: + fastfile: 0.0.20 + ffjavascript: 0.3.1 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@mysten/bcs@1.1.0': + dependencies: + bs58: 6.0.0 + + '@mysten/bcs@1.6.0': + dependencies: + '@scure/base': 1.2.5 + + '@mysten/dapp-kit@0.15.7(@tanstack/react-query@5.74.4(react@19.1.0))(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3)': + dependencies: + '@mysten/sui': 1.28.1(typescript@5.7.3) + '@mysten/utils': 0.0.0 + '@mysten/wallet-standard': 0.14.6(typescript@5.7.3) + '@mysten/zksend': 0.12.27(typescript@5.7.3) + '@radix-ui/react-dialog': 1.1.11(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-dropdown-menu': 2.1.12(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@tanstack/react-query': 5.74.4(react@19.1.0) + '@vanilla-extract/css': 1.17.1 + '@vanilla-extract/dynamic': 2.1.2 + '@vanilla-extract/recipes': 0.5.5(@vanilla-extract/css@1.17.1) + clsx: 2.1.1 + react: 19.1.0 + zustand: 4.5.6(@types/react@19.1.2)(react@19.1.0) + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - '@types/react' + - '@types/react-dom' + - babel-plugin-macros + - immer + - react-dom + - typescript + + '@mysten/seal@0.3.5(typescript@5.7.3)': + dependencies: + '@mysten/bcs': 1.6.0 + '@mysten/sui': 1.26.1(typescript@5.7.3) + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + shamir-secret-sharing: 0.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/sui@1.12.0(typescript@5.7.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) + '@mysten/bcs': 1.1.0 + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + '@suchipi/femver': 1.0.0 + bech32: 2.0.0 + gql.tada: 1.8.10(graphql@16.10.0)(typescript@5.7.3) + graphql: 16.10.0 + tweetnacl: 1.0.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/sui@1.14.3(typescript@5.7.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) + '@mysten/bcs': 1.1.0 + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + '@suchipi/femver': 1.0.0 + bech32: 2.0.0 + gql.tada: 1.8.10(graphql@16.10.0)(typescript@5.7.3) + graphql: 16.10.0 + tweetnacl: 1.0.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/sui@1.26.1(typescript@5.7.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) + '@mysten/bcs': 1.6.0 + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.5 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + gql.tada: 1.8.10(graphql@16.10.0)(typescript@5.7.3) + graphql: 16.10.0 + poseidon-lite: 0.2.1 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/sui@1.28.1(typescript@5.7.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) + '@mysten/bcs': 1.6.0 + '@mysten/utils': 0.0.0 + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.5 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + gql.tada: 1.8.10(graphql@16.10.0)(typescript@5.7.3) + graphql: 16.10.0 + poseidon-lite: 0.2.1 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/sui@1.28.2(typescript@5.7.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) + '@mysten/bcs': 1.6.0 + '@mysten/utils': 0.0.0 + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.5 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + gql.tada: 1.8.10(graphql@16.10.0)(typescript@5.7.3) + graphql: 16.10.0 + poseidon-lite: 0.2.1 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/utils@0.0.0': + dependencies: + '@scure/base': 1.2.5 + + '@mysten/wallet-standard@0.13.12(typescript@5.7.3)': + dependencies: + '@mysten/sui': 1.14.3(typescript@5.7.3) + '@wallet-standard/core': 1.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/wallet-standard@0.13.7(typescript@5.7.3)': + dependencies: + '@mysten/sui': 1.12.0(typescript@5.7.3) + '@wallet-standard/core': 1.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/wallet-standard@0.14.6(typescript@5.7.3)': + dependencies: + '@mysten/sui': 1.28.1(typescript@5.7.3) + '@wallet-standard/core': 1.1.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/window-wallet-core@0.0.2': + dependencies: + '@mysten/utils': 0.0.0 + jose: 6.0.10 + valibot: 0.36.0 + + '@mysten/zksend@0.11.12(typescript@5.7.3)': + dependencies: + '@mysten/sui': 1.14.3(typescript@5.7.3) + '@mysten/wallet-standard': 0.13.12(typescript@5.7.3) + mitt: 3.0.1 + nanostores: 0.10.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/zksend@0.12.27(typescript@5.7.3)': + dependencies: + '@mysten/sui': 1.28.1(typescript@5.7.3) + '@mysten/utils': 0.0.0 + '@mysten/wallet-standard': 0.14.6(typescript@5.7.3) + '@mysten/window-wallet-core': 0.0.2 + mitt: 3.0.1 + nanostores: 0.10.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@noble/curves@1.9.0': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/hashes@1.8.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@radix-ui/primitive@1.1.2': {} + + '@radix-ui/react-arrow@1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@types/react-dom': 19.1.2(@types/react@19.1.2) + + '@radix-ui/react-collection@1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@types/react-dom': 19.1.2(@types/react@19.1.2) + + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-context@1.1.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-dialog@1.1.11(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.7(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-portal': 1.1.6(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + aria-hidden: 1.2.4 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@types/react-dom': 19.1.2(@types/react@19.1.2) + + '@radix-ui/react-direction@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-dismissable-layer@1.1.7(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@types/react-dom': 19.1.2(@types/react@19.1.2) + + '@radix-ui/react-dropdown-menu@2.1.12(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-menu': 2.1.12(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@types/react-dom': 19.1.2(@types/react@19.1.2) + + '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-focus-scope@1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@types/react-dom': 19.1.2(@types/react@19.1.2) + + '@radix-ui/react-id@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-menu@2.1.12(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.7(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-popper': 1.2.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.6(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.7(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + aria-hidden: 1.2.4 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@types/react-dom': 19.1.2(@types/react@19.1.2) + + '@radix-ui/react-popper@1.2.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-arrow': 1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/rect': 1.1.1 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@types/react-dom': 19.1.2(@types/react@19.1.2) + + '@radix-ui/react-portal@1.1.6(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@types/react-dom': 19.1.2(@types/react@19.1.2) + + '@radix-ui/react-presence@1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@types/react-dom': 19.1.2(@types/react@19.1.2) + + '@radix-ui/react-primitive@2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@types/react-dom': 19.1.2(@types/react@19.1.2) + + '@radix-ui/react-roving-focus@1.1.7(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + '@types/react-dom': 19.1.2(@types/react@19.1.2) + + '@radix-ui/react-slot@1.2.0(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.2)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/react-use-size@1.1.1(@types/react@19.1.2)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.2 + + '@radix-ui/rect@1.1.1': {} + + '@rollup/pluginutils@4.2.1': + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + + '@rollup/rollup-android-arm-eabi@4.40.0': + optional: true + + '@rollup/rollup-android-arm64@4.40.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.40.0': + optional: true + + '@rollup/rollup-darwin-x64@4.40.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.40.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.40.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.40.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.40.0': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.40.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.40.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.40.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.40.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.40.0': + optional: true + + '@scure/base@1.2.5': {} + + '@scure/bip32@1.7.0': + dependencies: + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.5 + + '@scure/bip39@1.6.0': + dependencies: + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.5 + + '@suchipi/femver@1.0.0': {} + + '@suiet/wallet-kit@0.3.3(@mysten/sui@1.28.2(typescript@5.7.3))(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3)': + dependencies: + '@mysten/sui': 1.28.2(typescript@5.7.3) + '@mysten/wallet-standard': 0.13.7(typescript@5.7.3) + '@mysten/zksend': 0.11.12(typescript@5.7.3) + '@radix-ui/react-dialog': 1.1.11(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@suiet/wallet-sdk': 0.3.2(@mysten/sui@1.28.2(typescript@5.7.3))(typescript@5.7.3) + '@svgr/rollup': 6.5.1 + '@wallet-standard/core': 1.0.3 + buffer: 6.0.3 + classnames: 2.5.1 + lodash-es: 4.17.21 + mitt: 3.0.1 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-query: 3.39.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - '@types/react' + - '@types/react-dom' + - react-native + - supports-color + - typescript + + '@suiet/wallet-sdk@0.3.2(@mysten/sui@1.28.2(typescript@5.7.3))(typescript@5.7.3)': + dependencies: + '@mysten/sui': 1.28.2(typescript@5.7.3) + '@mysten/wallet-standard': 0.13.7(typescript@5.7.3) + '@mysten/zksend': 0.11.12(typescript@5.7.3) + '@noble/hashes': 1.8.0 + buffer: 6.0.3 + superstruct: 1.0.4 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-preset@6.5.1(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.26.10) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.26.10) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.26.10) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.26.10) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.26.10) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.26.10) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.26.10) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.26.10) + + '@svgr/core@6.5.1': + dependencies: + '@babel/core': 7.26.10 + '@svgr/babel-preset': 6.5.1(@babel/core@7.26.10) + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) + camelcase: 6.3.0 + cosmiconfig: 7.1.0 + transitivePeerDependencies: + - supports-color + + '@svgr/hast-util-to-babel-ast@6.5.1': + dependencies: + '@babel/types': 7.27.0 + entities: 4.5.0 + + '@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1)': + dependencies: + '@babel/core': 7.26.10 + '@svgr/babel-preset': 6.5.1(@babel/core@7.26.10) + '@svgr/core': 6.5.1 + '@svgr/hast-util-to-babel-ast': 6.5.1 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + + '@svgr/plugin-svgo@6.5.1(@svgr/core@6.5.1)': + dependencies: + '@svgr/core': 6.5.1 + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + svgo: 2.8.0 + + '@svgr/rollup@6.5.1': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-transform-react-constant-elements': 7.25.9(@babel/core@7.26.10) + '@babel/preset-env': 7.26.9(@babel/core@7.26.10) + '@babel/preset-react': 7.26.3(@babel/core@7.26.10) + '@babel/preset-typescript': 7.27.0(@babel/core@7.26.10) + '@rollup/pluginutils': 4.2.1 + '@svgr/core': 6.5.1 + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) + '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) + transitivePeerDependencies: + - supports-color + + '@tailwindcss/node@4.1.4': + dependencies: + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + lightningcss: 1.29.2 + tailwindcss: 4.1.4 + + '@tailwindcss/oxide-android-arm64@4.1.4': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.4': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.4': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.4': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.4': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.4': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.4': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.4': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.4': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.4': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.4': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.4': + optional: true + + '@tailwindcss/oxide@4.1.4': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.4 + '@tailwindcss/oxide-darwin-arm64': 4.1.4 + '@tailwindcss/oxide-darwin-x64': 4.1.4 + '@tailwindcss/oxide-freebsd-x64': 4.1.4 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.4 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.4 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.4 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.4 + '@tailwindcss/oxide-linux-x64-musl': 4.1.4 + '@tailwindcss/oxide-wasm32-wasi': 4.1.4 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.4 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.4 + + '@tailwindcss/vite@4.1.4(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.2))': + dependencies: + '@tailwindcss/node': 4.1.4 + '@tailwindcss/oxide': 4.1.4 + tailwindcss: 4.1.4 + vite: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.2) + + '@tanstack/query-core@5.74.4': {} + + '@tanstack/react-query@5.74.4(react@19.1.0)': + dependencies: + '@tanstack/query-core': 5.74.4 + react: 19.1.0 + + '@trysound/sax@0.2.0': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.27.0 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.27.0 + + '@types/estree@1.0.7': {} + + '@types/http-errors@1.8.2': {} + + '@types/json-schema@7.0.15': {} + + '@types/node@22.15.2': + dependencies: + undici-types: 6.21.0 + + '@types/parse-json@4.0.2': {} + + '@types/react-dom@19.1.2(@types/react@19.1.2)': + dependencies: + '@types/react': 19.1.2 + + '@types/react@19.1.2': + dependencies: + csstype: 3.1.3 + + '@typescript-eslint/eslint-plugin@8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.31.0 + '@typescript-eslint/type-utils': 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.31.0 + eslint: 9.25.1(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.31.0 + '@typescript-eslint/types': 8.31.0 + '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.31.0 + debug: 4.4.0 + eslint: 9.25.1(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.31.0': + dependencies: + '@typescript-eslint/types': 8.31.0 + '@typescript-eslint/visitor-keys': 8.31.0 + + '@typescript-eslint/type-utils@8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + debug: 4.4.0 + eslint: 9.25.1(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.31.0': {} + + '@typescript-eslint/typescript-estree@8.31.0(typescript@5.7.3)': + dependencies: + '@typescript-eslint/types': 8.31.0 + '@typescript-eslint/visitor-keys': 8.31.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.31.0 + '@typescript-eslint/types': 8.31.0 + '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.7.3) + eslint: 9.25.1(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.31.0': + dependencies: + '@typescript-eslint/types': 8.31.0 + eslint-visitor-keys: 4.2.0 + + '@vanilla-extract/css@1.17.1': + dependencies: + '@emotion/hash': 0.9.2 + '@vanilla-extract/private': 1.0.6 + css-what: 6.1.0 + cssesc: 3.0.0 + csstype: 3.1.3 + dedent: 1.5.3 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + lru-cache: 10.4.3 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - babel-plugin-macros + + '@vanilla-extract/dynamic@2.1.2': + dependencies: + '@vanilla-extract/private': 1.0.6 + + '@vanilla-extract/private@1.0.6': {} + + '@vanilla-extract/recipes@0.5.5(@vanilla-extract/css@1.17.1)': + dependencies: + '@vanilla-extract/css': 1.17.1 + + '@vitalets/google-translate-api@9.2.1': + dependencies: + '@types/http-errors': 1.8.2 + http-errors: 2.0.0 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + '@vitejs/plugin-react@4.4.1(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.2))': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.2) + transitivePeerDependencies: + - supports-color + + '@wallet-standard/app@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/base@1.1.0': {} + + '@wallet-standard/core@1.0.3': + dependencies: + '@wallet-standard/app': 1.1.0 + '@wallet-standard/base': 1.1.0 + '@wallet-standard/features': 1.1.0 + '@wallet-standard/wallet': 1.1.0 + + '@wallet-standard/core@1.1.0': + dependencies: + '@wallet-standard/app': 1.1.0 + '@wallet-standard/base': 1.1.0 + '@wallet-standard/errors': 0.1.1 + '@wallet-standard/features': 1.1.0 + '@wallet-standard/wallet': 1.1.0 + + '@wallet-standard/errors@0.1.1': + dependencies: + chalk: 5.4.1 + commander: 13.1.0 + + '@wallet-standard/features@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/wallet@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + + async@3.2.6: {} + + asynckit@0.4.0: {} + + auto-i18n-plugin-core@1.0.26: + dependencies: + '@babel/core': 7.26.10 + '@babel/generator': 7.27.0 + '@babel/preset-env': 7.26.9(@babel/core@7.26.10) + '@babel/preset-typescript': 7.27.0(@babel/core@7.26.10) + '@vitalets/google-translate-api': 9.2.1 + axios: 1.9.0 + crypto-js: 4.2.0 + tunnel: 0.0.6 + transitivePeerDependencies: + - debug + - encoding + - supports-color + + axios@1.9.0: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + b4a@1.6.7: {} + + babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.26.10): + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) + core-js-compat: 3.41.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + balanced-match@1.0.2: {} + + base-x@5.0.1: {} + + base64-js@1.5.1: {} + + bech32@2.0.0: {} + + bfj@7.1.0: + dependencies: + bluebird: 3.7.2 + check-types: 11.2.3 + hoopy: 0.1.4 + jsonpath: 1.1.1 + tryer: 1.0.1 + + big-integer@1.6.52: {} + + blake2b-wasm@2.4.0: + dependencies: + b4a: 1.6.7 + nanoassert: 2.0.0 + + bluebird@3.7.2: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + broadcast-channel@3.7.0: + dependencies: + '@babel/runtime': 7.27.0 + detect-node: 2.1.0 + js-sha3: 0.8.0 + microseconds: 0.2.0 + nano-time: 1.0.0 + oblivious-set: 1.0.0 + rimraf: 3.0.2 + unload: 2.2.0 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001715 + electron-to-chromium: 1.5.142 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.4) + + bs58@6.0.0: + dependencies: + base-x: 5.0.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + callsites@3.1.0: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001715: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.4.1: {} + + check-types@11.2.3: {} + + circom_runtime@0.1.28: + dependencies: + ffjavascript: 0.3.1 + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + classnames@2.5.1: {} + + clsx@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@13.1.0: {} + + commander@7.2.0: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + cookie@1.0.2: {} + + core-js-compat@3.41.0: + dependencies: + browserslist: 4.24.4 + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-js@4.2.0: {} + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csso@4.2.0: + dependencies: + css-tree: 1.1.3 + + csstype@3.1.3: {} + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + dedent@1.5.3: {} + + deep-is@0.1.4: {} + + deep-object-diff@1.1.9: {} + + deepmerge@4.3.1: {} + + delayed-stream@1.0.0: {} + + depd@2.0.0: {} + + detect-libc@2.0.4: {} + + detect-node-es@1.1.0: {} + + detect-node@2.1.0: {} + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.142: {} + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@2.2.0: {} + + entities@4.5.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + esbuild@0.25.3: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.3 + '@esbuild/android-arm': 0.25.3 + '@esbuild/android-arm64': 0.25.3 + '@esbuild/android-x64': 0.25.3 + '@esbuild/darwin-arm64': 0.25.3 + '@esbuild/darwin-x64': 0.25.3 + '@esbuild/freebsd-arm64': 0.25.3 + '@esbuild/freebsd-x64': 0.25.3 + '@esbuild/linux-arm': 0.25.3 + '@esbuild/linux-arm64': 0.25.3 + '@esbuild/linux-ia32': 0.25.3 + '@esbuild/linux-loong64': 0.25.3 + '@esbuild/linux-mips64el': 0.25.3 + '@esbuild/linux-ppc64': 0.25.3 + '@esbuild/linux-riscv64': 0.25.3 + '@esbuild/linux-s390x': 0.25.3 + '@esbuild/linux-x64': 0.25.3 + '@esbuild/netbsd-arm64': 0.25.3 + '@esbuild/netbsd-x64': 0.25.3 + '@esbuild/openbsd-arm64': 0.25.3 + '@esbuild/openbsd-x64': 0.25.3 + '@esbuild/sunos-x64': 0.25.3 + '@esbuild/win32-arm64': 0.25.3 + '@esbuild/win32-ia32': 0.25.3 + '@esbuild/win32-x64': 0.25.3 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + escodegen@1.14.3: + dependencies: + esprima: 4.0.1 + estraverse: 4.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-plugin-react-hooks@5.2.0(eslint@9.25.1(jiti@2.4.2)): + dependencies: + eslint: 9.25.1(jiti@2.4.2) + + eslint-plugin-react-refresh@0.4.20(eslint@9.25.1(jiti@2.4.2)): + dependencies: + eslint: 9.25.1(jiti@2.4.2) + + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.25.1(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.1 + '@eslint/core': 0.13.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.25.1 + '@eslint/plugin-kit': 0.2.8 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.2 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + + esprima@1.2.2: {} + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastfile@0.0.20: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + ffjavascript@0.3.0: + dependencies: + wasmbuilder: 0.0.16 + wasmcurves: 0.2.2 + web-worker: 1.2.0 + + ffjavascript@0.3.1: + dependencies: + wasmbuilder: 0.0.16 + wasmcurves: 0.2.2 + web-worker: 1.2.0 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + follow-redirects@1.15.9: {} + + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-nonce@1.0.1: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globals@15.15.0: {} + + gopd@1.2.0: {} + + gql.tada@1.8.10(graphql@16.10.0)(typescript@5.7.3): + dependencies: + '@0no-co/graphql.web': 1.1.2(graphql@16.10.0) + '@0no-co/graphqlsp': 1.12.16(graphql@16.10.0)(typescript@5.7.3) + '@gql.tada/cli-utils': 1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.3))(graphql@16.10.0)(typescript@5.7.3) + '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - graphql + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + graphql@16.10.0: {} + + gsap@3.12.7: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hoopy@0.1.4: {} + + 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 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + is-arrayish@0.2.1: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + isexe@2.0.0: {} + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jiti@2.4.2: {} + + jose@6.0.10: {} + + js-sha3@0.8.0: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@3.0.2: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsonpath@1.1.1: + dependencies: + esprima: 1.2.2 + static-eval: 2.0.2 + underscore: 1.12.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.3.0: + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-darwin-arm64@1.29.2: + optional: true + + lightningcss-darwin-x64@1.29.2: + optional: true + + lightningcss-freebsd-x64@1.29.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.29.2: + optional: true + + lightningcss-linux-arm64-gnu@1.29.2: + optional: true + + lightningcss-linux-arm64-musl@1.29.2: + optional: true + + lightningcss-linux-x64-gnu@1.29.2: + optional: true + + lightningcss-linux-x64-musl@1.29.2: + optional: true + + lightningcss-win32-arm64-msvc@1.29.2: + optional: true + + lightningcss-win32-x64-msvc@1.29.2: + optional: true + + lightningcss@1.29.2: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-darwin-arm64: 1.29.2 + lightningcss-darwin-x64: 1.29.2 + lightningcss-freebsd-x64: 1.29.2 + lightningcss-linux-arm-gnueabihf: 1.29.2 + lightningcss-linux-arm64-gnu: 1.29.2 + lightningcss-linux-arm64-musl: 1.29.2 + lightningcss-linux-x64-gnu: 1.29.2 + lightningcss-linux-x64-musl: 1.29.2 + lightningcss-win32-arm64-msvc: 1.29.2 + lightningcss-win32-x64-msvc: 1.29.2 + + lines-and-columns@1.2.4: {} + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash.debounce@4.0.8: {} + + lodash.merge@4.6.2: {} + + logplease@1.2.15: {} + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lucide-react@0.488.0(react@19.1.0): + dependencies: + react: 19.1.0 + + match-sorter@6.3.4: + dependencies: + '@babel/runtime': 7.27.0 + remove-accents: 0.5.0 + + math-intrinsics@1.1.0: {} + + mdn-data@2.0.14: {} + + media-query-parser@2.0.2: + dependencies: + '@babel/runtime': 7.27.0 + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + microseconds@0.2.0: {} + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + mitt@3.0.1: {} + + modern-ahocorasick@1.1.0: {} + + ms@2.1.3: {} + + nano-time@1.0.0: + dependencies: + big-integer: 1.6.52 + + nanoassert@2.0.0: {} + + nanoid@3.3.11: {} + + nanostores@0.10.3: {} + + natural-compare@1.4.0: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-releases@2.0.19: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + oblivious-set@1.0.0: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + optionator@0.8.3: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-type@4.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + poseidon-lite@0.2.1: {} + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.1.2: {} + + prelude-ls@1.2.1: {} + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + r1csfile@0.0.48: + dependencies: + '@iden3/bigarray': 0.0.2 + '@iden3/binfileutils': 0.0.12 + fastfile: 0.0.20 + ffjavascript: 0.3.0 + + react-dom@19.1.0(react@19.1.0): + dependencies: + react: 19.1.0 + scheduler: 0.26.0 + + react-query@3.39.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + '@babel/runtime': 7.27.0 + broadcast-channel: 3.7.0 + match-sorter: 6.3.4 + react: 19.1.0 + optionalDependencies: + react-dom: 19.1.0(react@19.1.0) + + react-refresh@0.17.0: {} + + react-remove-scroll-bar@2.3.8(@types/react@19.1.2)(react@19.1.0): + dependencies: + react: 19.1.0 + react-style-singleton: 2.2.3(@types/react@19.1.2)(react@19.1.0) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.2 + + react-remove-scroll@2.6.3(@types/react@19.1.2)(react@19.1.0): + dependencies: + react: 19.1.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.1.2)(react@19.1.0) + react-style-singleton: 2.2.3(@types/react@19.1.2)(react@19.1.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.1.2)(react@19.1.0) + use-sidecar: 1.1.3(@types/react@19.1.2)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + + react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-router: 7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + + react-router@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + cookie: 1.0.2 + react: 19.1.0 + set-cookie-parser: 2.7.1 + turbo-stream: 2.4.0 + optionalDependencies: + react-dom: 19.1.0(react@19.1.0) + + react-style-singleton@2.2.3(@types/react@19.1.2)(react@19.1.0): + dependencies: + get-nonce: 1.0.1 + react: 19.1.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.2 + + react@19.1.0: {} + + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.27.0 + + 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.2.0 + + regjsgen@0.8.0: {} + + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + + remove-accents@0.5.0: {} + + resolve-from@4.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@4.40.0: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.40.0 + '@rollup/rollup-android-arm64': 4.40.0 + '@rollup/rollup-darwin-arm64': 4.40.0 + '@rollup/rollup-darwin-x64': 4.40.0 + '@rollup/rollup-freebsd-arm64': 4.40.0 + '@rollup/rollup-freebsd-x64': 4.40.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.0 + '@rollup/rollup-linux-arm-musleabihf': 4.40.0 + '@rollup/rollup-linux-arm64-gnu': 4.40.0 + '@rollup/rollup-linux-arm64-musl': 4.40.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-musl': 4.40.0 + '@rollup/rollup-linux-s390x-gnu': 4.40.0 + '@rollup/rollup-linux-x64-gnu': 4.40.0 + '@rollup/rollup-linux-x64-musl': 4.40.0 + '@rollup/rollup-win32-arm64-msvc': 4.40.0 + '@rollup/rollup-win32-ia32-msvc': 4.40.0 + '@rollup/rollup-win32-x64-msvc': 4.40.0 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + scheduler@0.26.0: {} + + semver@6.3.1: {} + + semver@7.7.1: {} + + set-cookie-parser@2.7.1: {} + + setprototypeof@1.2.0: {} + + shamir-secret-sharing@0.0.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + snarkjs@0.7.5: + dependencies: + '@iden3/binfileutils': 0.0.12 + bfj: 7.1.0 + blake2b-wasm: 2.4.0 + circom_runtime: 0.1.28 + ejs: 3.1.10 + fastfile: 0.0.20 + ffjavascript: 0.3.1 + js-sha3: 0.8.0 + logplease: 1.2.15 + r1csfile: 0.0.48 + + source-map-js@1.2.1: {} + + source-map@0.6.1: {} + + stable@0.1.8: {} + + static-eval@2.0.2: + dependencies: + escodegen: 1.14.3 + + statuses@2.0.1: {} + + strip-json-comments@3.1.1: {} + + superstruct@1.0.4: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-parser@2.0.4: {} + + svgo@2.8.0: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.1.1 + stable: 0.1.8 + + tailwind-merge@3.2.0: {} + + tailwindcss@4.1.4: {} + + tapable@2.2.1: {} + + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + tr46@0.0.3: {} + + tryer@1.0.1: {} + + ts-api-utils@2.1.0(typescript@5.7.3): + dependencies: + typescript: 5.7.3 + + tslib@2.8.1: {} + + tunnel@0.0.6: {} + + turbo-stream@2.4.0: {} + + tw-animate-css@1.2.8: {} + + tweetnacl@1.0.3: {} + + type-check@0.3.2: + dependencies: + prelude-ls: 1.1.2 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + typescript-eslint@8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.25.1(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + typescript@5.7.3: {} + + underscore@1.12.1: {} + + undici-types@6.21.0: {} + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.2.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + unload@2.2.0: + dependencies: + '@babel/runtime': 7.27.0 + detect-node: 2.1.0 + + update-browserslist-db@1.1.3(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-callback-ref@1.3.3(@types/react@19.1.2)(react@19.1.0): + dependencies: + react: 19.1.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.2 + + use-sidecar@1.1.3(@types/react@19.1.2)(react@19.1.0): + dependencies: + detect-node-es: 1.1.0 + react: 19.1.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.2 + + use-sync-external-store@1.5.0(react@19.1.0): + dependencies: + react: 19.1.0 + + valibot@0.36.0: {} + + vite-auto-i18n-plugin@1.0.26: + dependencies: + '@babel/core': 7.26.10 + '@babel/preset-env': 7.26.9(@babel/core@7.26.10) + '@babel/preset-typescript': 7.27.0(@babel/core@7.26.10) + auto-i18n-plugin-core: 1.0.26 + transitivePeerDependencies: + - debug + - encoding + - supports-color + + vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.2): + dependencies: + esbuild: 0.25.3 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.3 + rollup: 4.40.0 + tinyglobby: 0.2.13 + optionalDependencies: + '@types/node': 22.15.2 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 + + wasmbuilder@0.0.16: {} + + wasmcurves@0.2.2: + dependencies: + wasmbuilder: 0.0.16 + + web-worker@1.2.0: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrappy@1.0.2: {} + + yallist@3.1.1: {} + + yaml@1.10.2: {} + + yocto-queue@0.1.0: {} + + zustand@4.5.6(@types/react@19.1.2)(react@19.1.0): + dependencies: + use-sync-external-store: 1.5.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.2 + react: 19.1.0 diff --git a/move202503/AKAKing23/code/chain_front/public/advanced.png b/move202503/AKAKing23/code/chain_front/public/advanced.png new file mode 100644 index 0000000000000000000000000000000000000000..0674f5c2b692d0cb6f4bddac7227850d213f0c0f GIT binary patch literal 6135 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 JPDHLkV1n;9bOQhY literal 0 HcmV?d00001 diff --git a/move202503/AKAKing23/code/chain_front/public/circuits/ability.r1cs b/move202503/AKAKing23/code/chain_front/public/circuits/ability.r1cs new file mode 100644 index 0000000000000000000000000000000000000000..dc011a4ea99c6a44a4ffb73432f6edeb3dc819a9 GIT binary patch literal 2352 zcmb7`yH3L}6owDia;MxG8Ouh+3sgc#Oo)+%2_68Ii7}6WSQvQ<1S5}awa{ zPA^^$pNIAM{N^Ze^to`p*8$n_xQ3W4w-_MBsc`sI?~>?MxDxNO=vBB9?~3SExDxNG z=vBB9@0#dUxDxNW=vBB9Z(sB(T#0u>^ePV8O;hijVVGxvO>p8h!uweQzq zs8in#Lrtk2hW-EUFznUJVcLD=Fx+e9-i-oB4nhljcFwmtrhVSBCig=l{4dta6JI8h w{OS3e)>K;e>|+x5YI?^o=9@65gz*V;L*ja}xSoycBHLYOJF(x5{a)<<0VW8X`~Uy| literal 0 HcmV?d00001 diff --git a/move202503/AKAKing23/code/chain_front/public/circuits/ability.wasm b/move202503/AKAKing23/code/chain_front/public/circuits/ability.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ed8e9bdb061912a49214dd665d26d4959d4e66d5 GIT binary patch literal 37077 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 literal 0 HcmV?d00001 diff --git a/move202503/AKAKing23/code/chain_front/public/circuits/ability_proof.zkey b/move202503/AKAKing23/code/chain_front/public/circuits/ability_proof.zkey new file mode 100644 index 0000000000000000000000000000000000000000..50845055827ffe469d77ec7a372ac8d744c4219e GIT binary patch literal 10448 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 AWdHyG literal 0 HcmV?d00001 diff --git a/move202503/AKAKing23/code/chain_front/public/circuits/verification_key.json b/move202503/AKAKing23/code/chain_front/public/circuits/verification_key.json new file mode 100644 index 00000000..94aa485a --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/public/circuits/verification_key.json @@ -0,0 +1,104 @@ +{ + "protocol": "groth16", + "curve": "bn128", + "nPublic": 3, + "vk_alpha_1": [ + "16634909769583691121580159870407934840190562119506884902768617615839695643970", + "21757090781022985320157544286157970037021212015301972628513917772543640366703", + "1" + ], + "vk_beta_2": [ + [ + "1843414671297698511482925586575323988623882205551711852417868031167567950124", + "2442669351776478400314549372291058083393299941539162109081974556703702242101" + ], + [ + "17056807451259302578612534267662730788306627175392516831685168122735978786924", + "19280708826615422225678437765460147085542959367201591420156450414713207527591" + ], + [ + "1", + "0" + ] + ], + "vk_gamma_2": [ + [ + "10857046999023057135944570762232829481370756359578518086990519993285655852781", + "11559732032986387107991004021392285783925812861821192530917403151452391805634" + ], + [ + "8495653923123431417604973247489272438418190587263600148770280649306958101930", + "4082367875863433681332203403145435568316851327593401208105741076214120093531" + ], + [ + "1", + "0" + ] + ], + "vk_delta_2": [ + [ + "10857046999023057135944570762232829481370756359578518086990519993285655852781", + "11559732032986387107991004021392285783925812861821192530917403151452391805634" + ], + [ + "8495653923123431417604973247489272438418190587263600148770280649306958101930", + "4082367875863433681332203403145435568316851327593401208105741076214120093531" + ], + [ + "1", + "0" + ] + ], + "vk_alphabeta_12": [ + [ + [ + "4670522309383287506604282574149239691670274892174940112322583378140204994062", + "2801096524386741941040108002188394235371691261228899421197913940083980977668" + ], + [ + "14294908710779067494722479858860427688366458139479747285443997975952727032888", + "3171603720947474201032373088603729044884573504436807227901276999878668370578" + ], + [ + "12016630735365360337163897381942050210578021608807017434395644314412734083590", + "8362887083263168943526469696808502911150775216229673229997246292758736094713" + ] + ], + [ + [ + "17620544323504166712218691308038358196033528852684779844828405295705700542957", + "6127759305344194555043223241832976233841303152502521389869085425095407991667" + ], + [ + "14565263355670031313164183921934414237081639415031054974538630749865387947619", + "16201391736498710989336204627149672491107446344022440050258493323677187959056" + ], + [ + "9385359082608613175976893546693371880847120814366242933788340163117174423094", + "9157555761118407757789406384935713405136713066959826906175173598649923676930" + ] + ] + ], + "IC": [ + [ + "17901250411333494485920330162930036752114372065782160465252078669560188273602", + "20718164248992870962983567662361713610106286521203506235246506820407697851305", + "1" + ], + [ + "18560871238309448818460766562744547697148363037343956535792235616659017629936", + "848996258987629030560802456856143978874163406710746626629073992328887796032", + "1" + ], + [ + "7874345070739401918729490017220510840012387915996666165096279053332508734978", + "13852450233139738604328359130811646100736017746403163286072714982369405518174", + "1" + ], + [ + "10286600277144562479559831743823704670448219507618562412904737597091255798077", + "5934839280547658510772066750929157448004508409420318809358983794566350893316", + "1" + ] + ] +} \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/public/intermediate.png b/move202503/AKAKing23/code/chain_front/public/intermediate.png new file mode 100644 index 0000000000000000000000000000000000000000..1d7e9e6f6dfba6f76ebe310af5bdceff2d63ea63 GIT binary patch literal 5875 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 literal 0 HcmV?d00001 diff --git a/move202503/AKAKing23/code/chain_front/public/logo.png b/move202503/AKAKing23/code/chain_front/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8bbf32144a795f7857e7d8d1e7f4e9639e9f56d9 GIT binary patch literal 17739 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 literal 0 HcmV?d00001 diff --git a/move202503/AKAKing23/code/chain_front/public/primary.png b/move202503/AKAKing23/code/chain_front/public/primary.png new file mode 100644 index 0000000000000000000000000000000000000000..518c2b7f7f78bb2c05004b87472993ffda5d36dd GIT binary patch literal 4618 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 Z{=#+(Nfu8kYhZwW7#W!BH|lyM{R{HzATa;{ literal 0 HcmV?d00001 diff --git a/move202503/AKAKing23/code/chain_front/public/vite.svg b/move202503/AKAKing23/code/chain_front/public/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/App.css b/move202503/AKAKing23/code/chain_front/src/App.css new file mode 100644 index 00000000..b9d355df --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/move202503/AKAKing23/code/chain_front/src/App.tsx b/move202503/AKAKing23/code/chain_front/src/App.tsx new file mode 100644 index 00000000..c3c91746 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/App.tsx @@ -0,0 +1,14 @@ +// import { useState } from 'react' +// import reactLogo from './assets/react.svg' +// import viteLogo from '/vite.svg' +// import './App.css' + +function App() { + return ( + <> +
+ + ); +} + +export default App; diff --git a/move202503/AKAKing23/code/chain_front/src/api/axios.ts b/move202503/AKAKing23/code/chain_front/src/api/axios.ts new file mode 100644 index 00000000..a457fa3e --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/api/axios.ts @@ -0,0 +1,42 @@ +import axios from 'axios'; + +// 创建axios实例 +const service = axios.create({ + baseURL: '/api', // 基础URL + timeout: 50000, // 请求超时时间 + headers: { + 'Content-Type': 'application/json;charset=utf-8', + }, +}); + +// 请求拦截器 +service.interceptors.request.use( + (config) => { + // 可以在这里添加token等认证信息 + // const token = localStorage.getItem('token'); + // if (token) { + // config.headers['Authorization'] = `Bearer ${token}`; + // } + return config; + }, + (error) => { + console.error('请求错误', error); + return Promise.reject(error); + } +); + +// 响应拦截器 +service.interceptors.response.use( + (response) => { + const res = response.data; + // 这里可以根据后端返回的状态码进行不同处理 + return res; + }, + (error) => { + console.error('响应错误', error); + // 这里可以处理HTTP状态码错误 + return Promise.reject(error); + } +); + +export default service; \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/api/coze.ts b/move202503/AKAKing23/code/chain_front/src/api/coze.ts new file mode 100644 index 00000000..4ed95a11 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/api/coze.ts @@ -0,0 +1,104 @@ +import service from './axios'; + +// coze接口类型定义 +export interface CozeRequestParams { + input: string; + userId?: string; + [key: string]: string | number | boolean | undefined; // 更精确的参数类型 +} + +export interface CozeResponse { + reply?: string; + data?: { + output?: Array<{ + question: string; + options: string[]; + explanation?: string; + }>; + [key: string]: unknown; + }; + status: string; + message: string; + [key: string]: string | number | boolean | object | undefined; // 更精确的返回类型 +} + +// 验证答案接口参数 +export interface VerifyAnswerParams { + questionIndex: number; + selectedOption: number; + userId?: string; +} + +// 验证答案接口返回 +export interface VerifyAnswerResponse { + status: string; + data: { + isCorrect: boolean; + correctAnswer: string | number; + correctOptionLetter: string; + explanation?: string; + }; +} + +// 查看答案解析接口参数 +export interface QuestionSolutionParams { + questionIndex: number; + userId?: string; +} + +// 查看答案解析接口返回 +export interface QuestionSolutionResponse { + status: string; + data: { + question: string; + options: string[]; + answer: string | number; + correctOptionLetter: string; + explanation: string; + }; +} + +/** + * 向coze API发送消息 + * @param params 请求参数 + * @returns Promise + */ +export function sendMessageToCoze(params: CozeRequestParams): Promise { + return service({ + url: '/api/coze', + method: 'post', + data: params + }); +} + +/** + * 验证答案 + * @param params 验证参数 + * @returns Promise + */ +export function verifyAnswer(params: VerifyAnswerParams): Promise { + return service({ + url: '/api/verify-answer', + method: 'post', + data: params + }); +} + +/** + * 获取问题答案与解析 + * @param params 查询参数 + * @returns Promise + */ +export function getQuestionSolution(params: QuestionSolutionParams): Promise { + return service({ + url: '/api/question-solution', + method: 'get', + params + }); +} + +export default { + sendMessageToCoze, + verifyAnswer, + getQuestionSolution +}; \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/api/index.ts b/move202503/AKAKing23/code/chain_front/src/api/index.ts new file mode 100644 index 00000000..a6128d9f --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/api/index.ts @@ -0,0 +1,10 @@ +import service from './axios'; +import cozeApi from './coze'; + +export { service }; +export * from './coze'; + +export default { + service, + coze: cozeApi +}; \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/api/sui.ts b/move202503/AKAKing23/code/chain_front/src/api/sui.ts new file mode 100644 index 00000000..b15b01c6 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/api/sui.ts @@ -0,0 +1,430 @@ +import { Transaction } from "@mysten/sui/transactions"; +import { TESTNET_COUNTER_PACKAGE_ID } from "@/utils/constants"; +// 合约地址 +// export const CONTRACT_ADDRESS = '0x20cded4f9df05e37b44e3be2ffa9004dec77786950719fad6083694fdca45bf2'; // 需要替换为实际部署的合约地址 +export const CONTRACT_ADDRESS = TESTNET_COUNTER_PACKAGE_ID; + +/** + * 创建交易对象用于回答正确后奖励积分 + * @param quizManagerId - Quiz管理器ID + * @param userAddress - 用户地址 + * @param questionId - 问题ID + * @param points - 奖励积分数量 + * @returns 交易对象 + */ +export function createRewardTransaction( + quizManagerId: string, + userAddress: string, + questionId: number, + points: number +): Transaction { + const tx = new Transaction(); + + tx.moveCall({ + target: `${CONTRACT_ADDRESS}::point_token::reward_correct_answer`, + arguments: [ + tx.object(quizManagerId), // Quiz管理器实例 + tx.pure.address(userAddress), // 用户地址 + tx.pure.u64(questionId), // 问题ID + tx.pure.u64(points), // 奖励的积分数量 + ], + }); + + return tx; +} + +/** + * 创建交易对象用于铸造SBT奖励 + * @param issuerCapId - 发行者凭证ID + * @param name - SBT名称 + * @param description - SBT描述 + * @param url - 元数据URL + * @param recipient - 接收者地址 + * @returns 交易对象 + */ +export function createMintSBTTransaction( + issuerCapId: string, + name: string, + description: string, + url: string, + recipient: string +): Transaction { + const tx = new Transaction(); + + tx.moveCall({ + target: `${CONTRACT_ADDRESS}::sbt::mint`, + arguments: [ + tx.object(issuerCapId), // 发行者凭证 + tx.pure.string(name), // SBT名称 + tx.pure.string(description), // SBT描述 + tx.pure.string(url), // 元数据URL + tx.pure.address(recipient), // 接收者地址 + ], + }); + + return tx; +} + +/** + * 创建交易对象用于用户自助铸造SBT成就奖励 + * 不需要发行者凭证,用户可以在满足条件时直接铸造 + * @param name - SBT名称 + * @param description - SBT描述 + * @param url - 元数据URL + * @param quizScore - 用户的得分 + * @param totalQuestions - 测验的总题目数 + * @returns 交易对象 + */ +export function createSelfMintSBTTransaction( + name: string, + description: string, + url: string, + quizScore: number, + totalQuestions: number +): Transaction { + const tx = new Transaction(); + + tx.moveCall({ + target: `${CONTRACT_ADDRESS}::sbt::self_mint_achievement`, + arguments: [ + tx.pure.string(name), // SBT名称 + tx.pure.string(description), // SBT描述 + tx.pure.string(url), // 元数据URL + tx.pure.u64(quizScore), // 用户得分 + tx.pure.u64(totalQuestions), // 总题目数 + ], + }); + + return tx; +} + +/** + * 创建交易参数用于用户自助铸造SBT成就奖励 + * @param name - SBT名称 + * @param description - SBT描述 + * @param url - 元数据URL + * @param quizScore - 用户的得分 + * @param totalQuestions - 测验的总题目数 + * @returns 签名执行交易参数 + */ +export function createSelfMintSBTParams( + name: string, + description: string, + url: string, + quizScore: number, + totalQuestions: number +): { transaction: Transaction } { + return { + transaction: createSelfMintSBTTransaction( + name, + description, + url, + quizScore, + totalQuestions + ), + }; +} + +/** + * 创建交易参数用于铸造SBT奖励 + * @param issuerCapId - 发行者凭证ID + * @param name - SBT名称 + * @param description - SBT描述 + * @param url - 元数据URL + * @param recipient - 接收者地址 + * @returns 签名执行交易参数 + */ +export function createMintSBTParams( + issuerCapId: string, + name: string, + description: string, + url: string, + recipient: string +): { transaction: Transaction } { + return { + transaction: createMintSBTTransaction( + issuerCapId, + name, + description, + url, + recipient + ), + }; +} + +/** + * 创建交易对象用于直接奖励用户积分(使用direct_reward方法) + * @param quizManagerId - Quiz管理器ID + * @param userAddress - 用户地址 + * @param amount - 奖励积分数量 + * @returns 交易对象 + */ +export function createDirectRewardTransaction( + quizManagerId: string, + userAddress: string, + amount: number +): Transaction { + const tx = new Transaction(); + + tx.moveCall({ + target: `${CONTRACT_ADDRESS}::quiz::direct_reward`, + arguments: [ + tx.object(quizManagerId), // Quiz管理器实例 + tx.pure.address(userAddress), // 接收代币的用户地址 + tx.pure.u64(amount), // 奖励数量 + ], + }); + + return tx; +} + +/** + * 创建交易对象用于查看题目解析(使用简化方法) + * 调用新添加的view_solution_simple方法,不需要传入问题ID + * @param quizManagerId - Quiz管理器ID + * @param payment - 用户积分代币ID + * @param amount - 要销毁的积分数量 + * @returns 交易对象 + */ +export function createViewSolutionSimpleTransaction( + quizManagerId: string, + payment: string, + amount: number +): Transaction { + const tx = new Transaction(); + + tx.moveCall({ + target: `${CONTRACT_ADDRESS}::quiz::view_solution_simple`, + arguments: [ + tx.object(quizManagerId), // Quiz管理器实例 + tx.object(payment), // 用户的代币ID + tx.pure.u64(amount), // 要销毁的积分数量 + ], + }); + + return tx; +} + +/** + * 创建直接奖励交易参数 + * @param quizManagerId - Quiz管理器ID + * @param userAddress - 用户地址 + * @param amount - 奖励数量 + * @returns 签名执行交易参数 + */ +export function createDirectRewardParams( + quizManagerId: string, + userAddress: string, + amount: number +): { transaction: Transaction } { + return { + transaction: createDirectRewardTransaction( + quizManagerId, + userAddress, + amount + ), + }; +} + +// /** +// * 创建交易对象用于添加问题到链上 +// * @param quizManagerId - Quiz管理器ID +// * @param content - 问题内容 +// * @param correctAnswer - 正确答案 +// * @param rewardPoints - 回答正确的积分奖励 +// * @param solutionContent - 解析内容 +// * @param tokenCost - 查看解析所需积分 +// * @returns 交易对象 +// */ +export function createAddQuestionTransaction( + quizManagerId: string, + content: string, + correctAnswer: string, + rewardPoints: number, + solutionContent: string, + tokenCost: number +): Transaction { + const tx = new Transaction(); + + tx.moveCall({ + target: `${CONTRACT_ADDRESS}::point_token::add_question`, + arguments: [ + tx.object(quizManagerId), // Quiz管理器 + tx.pure.string(content), // 问题内容 + tx.pure.string(correctAnswer), // 正确答案 + tx.pure.u64(rewardPoints), // 奖励积分 + tx.pure.string(solutionContent), // 解析内容 + tx.pure.u64(tokenCost), // 解析费用 + ], + }); + + return tx; +} + +/** + * 创建交易对象用于添加简化问题到链上(不包含答案、解析和选项) + * 由于TypeScript中处理Move vector参数有困难,简化为创建一个不包含选项的问题 + * @param registryId - 问题注册表ID + * @param content - 问题内容 + * @returns 交易对象 + */ +export function createAddSimpleQuestionTransaction( + registryId: string, + content: string +): Transaction { + const tx = new Transaction(); + + // 假设我们添加了一个新的合约方法,只接收content参数 + tx.moveCall({ + target: `${CONTRACT_ADDRESS}::quiz::add_simple_question`, + arguments: [ + tx.object(registryId), // 问题注册表 + tx.pure.string(content), // 问题内容 + ], + }); + + return tx; +} + +/** + * 创建交易参数用于添加简化问题 + * @param registryId - 问题注册表ID + * @param content - 问题内容 + * @returns 签名执行交易参数 + */ +export function createAddSimpleQuestionParams( + registryId: string, + content: string +): { transaction: Transaction } { + return { + transaction: createAddSimpleQuestionTransaction( + registryId, + content + ), + }; +} + +/** + * 创建交易对象用于验证零知识证明 + * @param verifierId - 验证器对象ID + * @param circuit_name - 电路名称 + * @param proof - 证明字符串 + * @param public_inputs - 公共输入字符串 + * @param required_level - 要求的能力等级 + * @returns 交易对象 + */ +export function createVerifyZkProofTransaction( + verifierId: string, + circuit_name: string, + proof: string, + public_inputs: string, + required_level: number +): Transaction { + const tx = new Transaction(); + + tx.moveCall({ + target: `${CONTRACT_ADDRESS}::zk_verifier::verify_proof`, + arguments: [ + tx.object(verifierId), // 验证器对象实例 + tx.pure.string(circuit_name), // 电路名称 + tx.pure.string(proof), // 证明字符串 + tx.pure.string(public_inputs), // 公共输入字符串 + tx.pure.u64(required_level), // 要求等级 + ], + }); + + return tx; +} + +/** + * 创建验证零知识证明的交易参数 + * @param verifierId - 验证器对象ID + * @param circuit_name - 电路名称 + * @param proof - 证明字符串 + * @param public_inputs - 公共输入字符串 + * @param required_level - 要求的能力等级 + * @returns 签名执行交易参数 + */ +export function createVerifyZkProofParams( + verifierId: string, + circuit_name: string, + proof: string, + public_inputs: string, + required_level: number +): { transaction: Transaction } { + return { + transaction: createVerifyZkProofTransaction( + verifierId, + circuit_name, + proof, + public_inputs, + required_level + ), + }; +} + +/** + * 创建交易对象用于添加验证密钥 + * @param verifierId - 验证器对象ID + * @param circuit_name - 电路名称 + * @param verification_key - 验证密钥JSON字符串 + * @returns 交易对象 + */ +export function createAddVerificationKeyTransaction( + verifierId: string, + circuit_name: string, + verification_key: string +): Transaction { + const tx = new Transaction(); + + tx.moveCall({ + target: `${CONTRACT_ADDRESS}::zk_verifier::add_verification_key`, + arguments: [ + tx.object(verifierId), // 验证器对象实例 + tx.pure.string(circuit_name), // 电路名称 + tx.pure.string(verification_key), // 验证密钥JSON字符串 + ], + }); + + return tx; +} + +/** + * 创建添加验证密钥的交易参数 + * @param verifierId - 验证器对象ID + * @param circuit_name - 电路名称 + * @param verification_key - 验证密钥JSON字符串 + * @returns 签名执行交易参数 + */ +export function createAddVerificationKeyParams( + verifierId: string, + circuit_name: string, + verification_key: string +): { transaction: Transaction } { + return { + transaction: createAddVerificationKeyTransaction( + verifierId, + circuit_name, + verification_key + ), + }; +} + +export default { + createRewardTransaction, + createDirectRewardTransaction, + createViewSolutionSimpleTransaction, + createDirectRewardParams, + createAddQuestionTransaction, + createAddSimpleQuestionTransaction, + createAddSimpleQuestionParams, + createMintSBTTransaction, + createMintSBTParams, + createSelfMintSBTTransaction, + createSelfMintSBTParams, + createVerifyZkProofTransaction, + createVerifyZkProofParams, + createAddVerificationKeyTransaction, + createAddVerificationKeyParams, + CONTRACT_ADDRESS, +}; diff --git a/move202503/AKAKing23/code/chain_front/src/api/walrus.ts b/move202503/AKAKing23/code/chain_front/src/api/walrus.ts new file mode 100644 index 00000000..3086901b --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/api/walrus.ts @@ -0,0 +1,298 @@ +// Copyright (c), Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +import { SealClient } from "@mysten/seal"; +import { Transaction } from "@mysten/sui/transactions"; +import { getAllowlistedKeyServers } from "@mysten/seal"; +import { fromHex, toHex } from "@mysten/sui/utils"; +import { TESTNET_COUNTER_PACKAGE_ID } from "@/utils/constants"; +// import type { SuiClient } from "@mysten/sui/client"; + +// 定义数据结构类型 +export type WalrusData = { + status: string; + blobId: string; + endEpoch: string; + suiRefType: string; + suiRef: string; + suiBaseUrl: string; + blobUrl: string; + suiUrl: string; + isImage: boolean; +}; + +// Walrus服务类型 +export type WalrusService = { + id: string; + name: string; + publisherUrl: string; + aggregatorUrl: string; +}; + +// 存储信息类型定义 +export type StorageInfo = { + alreadyCertified?: { + blobId: string; + endEpoch: string; + event: { + txDigest: string; + }; + }; + newlyCreated?: { + blobObject: { + blobId: string; + storage: { + endEpoch: string; + }; + id: string; + }; + }; +}; + +// 默认Walrus服务 +export const walrusServices: WalrusService[] = [ + { + id: "service1", + name: "walrus.space", + publisherUrl: "/publisher1", + aggregatorUrl: "/aggregator1", + }, + { + id: "service2", + name: "staketab.org", + publisherUrl: "/publisher2", + aggregatorUrl: "/aggregator2", + }, + { + id: "service3", + name: "redundex.com", + publisherUrl: "/publisher3", + aggregatorUrl: "/aggregator3", + }, + { + id: "service4", + name: "nodes.guru", + publisherUrl: "/publisher4", + aggregatorUrl: "/aggregator4", + }, + { + id: "service5", + name: "banansen.dev", + publisherUrl: "/publisher5", + aggregatorUrl: "/aggregator5", + }, + { + id: "service6", + name: "everstake.one", + publisherUrl: "/publisher6", + aggregatorUrl: "/aggregator6", + }, +]; + +// 常量 +const SUI_VIEW_TX_URL = `https://suiscan.xyz/testnet/tx`; +const SUI_VIEW_OBJECT_URL = `https://suiscan.xyz/testnet/object`; +const NUM_EPOCH = 1; + +/** + * 获取Walrus聚合器URL + */ +export function getAggregatorUrl(serviceId: string, path: string): string { + const service = walrusServices.find((s) => s.id === serviceId); + const cleanPath = path.replace(/^\/+/, "").replace(/^v1\//, ""); + return `${service?.aggregatorUrl}/v1/${cleanPath}`; +} + +/** + * 获取Walrus发布者URL + */ +export function getPublisherUrl(serviceId: string, path: string): string { + const service = walrusServices.find((s) => s.id === serviceId); + const cleanPath = path.replace(/^\/+/, "").replace(/^v1\//, ""); + return `${service?.publisherUrl}/v1/${cleanPath}`; +} + +/** + * 将数据加密并上传到Walrus服务 + */ +export async function encryptAndUploadToWalrus( + file: File, + policyObject: string, + suiClient: unknown, // 使用unknown类型,然后在函数内部使用类型断言 + serviceId: string = "service1" // 默认使用第一个服务 +): Promise { + // 创建SealClient + const client = new SealClient({ + suiClient: suiClient as any, // 使用any类型断言解决版本兼容问题 + serverObjectIds: getAllowlistedKeyServers("testnet"), + verifyKeyServers: false, + }); + + // 读取文件内容 + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = async function (event) { + if (event.target && event.target.result) { + const result = event.target.result; + if (result instanceof ArrayBuffer) { + try { + // 生成随机数 + const nonce = crypto.getRandomValues(new Uint8Array(5)); + const policyObjectBytes = fromHex(policyObject); + const id = toHex(new Uint8Array([...policyObjectBytes, ...nonce])); + + // 加密数据 + const { encryptedObject: encryptedBytes } = await client.encrypt({ + threshold: 2, + packageId: TESTNET_COUNTER_PACKAGE_ID, + id, + data: new Uint8Array(result), + }); + + // 存储加密数据 + const storageInfo = await storeBlob(encryptedBytes, serviceId); + + // 构建并返回结果 + const walrusData = formatUploadResult(storageInfo.info, file.type); + resolve(walrusData); + } catch (error) { + reject(error); + } + } else { + reject(new Error("Unexpected result type: " + typeof result)); + } + } + }; + reader.onerror = reject; + reader.readAsArrayBuffer(file); + }); +} + +/** + * 存储加密后的Blob数据到Walrus服务 + */ +async function storeBlob(encryptedData: Uint8Array, serviceId: string) { + const response = await fetch( + `${getPublisherUrl(serviceId, `/v1/blobs?epochs=${NUM_EPOCH}`)}`, + { + method: "PUT", + body: encryptedData, + } + ); + + if (response.status === 200) { + const info = await response.json(); + return { info }; + } else { + throw new Error("存储Blob数据到Walrus失败!请尝试其他Walrus服务。"); + } +} + +/** + * 格式化上传结果为易于使用的对象 + */ +function formatUploadResult(storage_info: StorageInfo, media_type: string): WalrusData { + let info: WalrusData; + + if ("alreadyCertified" in storage_info && storage_info.alreadyCertified) { + info = { + status: "Already certified", + blobId: storage_info.alreadyCertified.blobId, + endEpoch: storage_info.alreadyCertified.endEpoch, + suiRefType: "Previous Sui Certified Event", + suiRef: storage_info.alreadyCertified.event.txDigest, + suiBaseUrl: SUI_VIEW_TX_URL, + blobUrl: getAggregatorUrl( + "service1", // 默认使用service1 + `/v1/blobs/${storage_info.alreadyCertified.blobId}` + ), + suiUrl: `${SUI_VIEW_OBJECT_URL}/${storage_info.alreadyCertified.event.txDigest}`, + isImage: media_type.startsWith("image"), + }; + } else if ("newlyCreated" in storage_info && storage_info.newlyCreated) { + info = { + status: "Newly created", + blobId: storage_info.newlyCreated.blobObject.blobId, + endEpoch: storage_info.newlyCreated.blobObject.storage.endEpoch, + suiRefType: "Associated Sui Object", + suiRef: storage_info.newlyCreated.blobObject.id, + suiBaseUrl: SUI_VIEW_OBJECT_URL, + blobUrl: getAggregatorUrl( + "service1", // 默认使用service1 + `/v1/blobs/${storage_info.newlyCreated.blobObject.blobId}` + ), + suiUrl: `${SUI_VIEW_OBJECT_URL}/${storage_info.newlyCreated.blobObject.id}`, + isImage: media_type.startsWith("image"), + }; + } else { + throw Error("Unhandled successful response!"); + } + + return info; +} + +/** + * 创建关联加密数据到Sui对象的交易 + * 返回值使用any类型以避免Transaction版本兼容性问题 + */ +export function createPublishBlobTransaction( + policyObject: string, + // capId: string, + moduleName: string, + blobId: string, + packageId: string, + difficulty?: string +): any { + const tx = new Transaction(); + + // 判断是否提供了difficulty参数 + if (difficulty) { + // 使用publish_with_difficulty函数 + tx.moveCall({ + target: `${packageId}::${moduleName}::publish_with_difficulty`, + arguments: [ + tx.object(policyObject), + tx.pure.string(blobId), + tx.pure.string(difficulty), + ], + }); + } else { + // 使用基本的publish函数 + tx.moveCall({ + target: `${packageId}::${moduleName}::publish`, + arguments: [ + tx.object(policyObject), + tx.pure.string(blobId), + ], + }); + } + + tx.setGasBudget(10000000); + return tx; +} + +/** + * 创建查询指定难度的题目Blob列表的交易 + * 注意:实际查询结果需要通过前端事件索引实现 + * @param difficulty 题目难度级别 + * @param packageId 包ID + * @param moduleName 模块名称,通常为"seal_quiz_walrus" + * @returns Transaction 交易对象 + */ +export function createQueryBlobsTransaction( + difficulty: string, + packageId: string, + moduleName: string = "seal_quiz_walrus" +): Transaction { + const tx = new Transaction(); + + // 调用query_blobs_by_difficulty方法 + tx.moveCall({ + target: `${packageId}::${moduleName}::query_blobs_by_difficulty`, + arguments: [ + tx.pure.string(difficulty), + ], + }); + + tx.setGasBudget(10000000); + return tx; +} \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/assets/fonts/EricaOne-Regular.ttf b/move202503/AKAKing23/code/chain_front/src/assets/fonts/EricaOne-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8bd91d11773f5b035a9e6b6d1bab2e59b08051e3 GIT binary patch literal 24872 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

@?}o!+YfkLE?0`ESNvqKKe`du&+LG7kS=0l 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 literal 0 HcmV?d00001 diff --git a/move202503/AKAKing23/code/chain_front/src/assets/images/blurball.png b/move202503/AKAKing23/code/chain_front/src/assets/images/blurball.png new file mode 100644 index 0000000000000000000000000000000000000000..dd42f34445f317ae16a58cfd0a0b0f57278c7af6 GIT binary patch literal 593976 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

  • r#qtR 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 z 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

    aP!mGD^lA8VV$NQn_Xmk4Zrzm zV$!Ad68F)Q26qN!Fl~-WgD8)0HD_P6ROVqDr%_u8f}0&9e!Su(lca~LJjxXBfdF^R z-#uGyw1EQr^QRG2nVShIb1^n7s9M?DbSwM4%{ZzTu7R7WIb`QH`qWU^72@9`0W{^cjD=l;sN) zY~_tmin_uA<9LgAi*|doI0Kfuz9qOEh4xQHK3^Ca+}DP(Z_au*Sr7kvp`^g|5vLAa z7IO^`8t>+=ID;c!lC^d?+!!u=w8NQ1tHZIv_-!kdm(7yCBFz}6XLb}fB<1Hg?7mkI9egDcsy>{!y545YUQ8t+=_`$UJm~)@G!_ zm%7lE)_MAZSI-2M67%C=wYZR|4gMlvgH$WJdz81F>~WNj#s{L;%KHEg93-#v-2+E< z$h0mP4qNhrYc`l;Pl{TdlhoP`!A~dS2t3MwPV32;#t6>kbp?Vx{(cP~qIwL&60pjQ znfh?gZb`=zQJoQJeBuWvb7zcXkJefHm5H`uyyR`2jGJ6H&5rR6eM;7X-uwEnRB^XB zmOr~xs!cQ?c#57!k^WlC#o0%C)(8Q4DI2KnClmV0ju#>I#`Li1$9~+E#LD+xKcWL18cb+lJ{Th4x|?N*{a#egb47%g)?#% zTyJ7j(!3`))3Hqdkeqf(83#Inh7()ZvOK5;K02eU&U{kqTe9gC;iOJ4CT1SOcic2={2a89feZ zYa4=-j(&LY7;y{xcPEG+&yzBHWEvS%AshXx*F&`RdQ83!iQ@I-9N;rBmYrjFlRH-- zHA1OvyT)vSK^CAfS;F+noA%iVM_v_>{NEEwB|uEjKC9@h$UdgooiVQnDRRzy8%o^i zGrAm*w03!SN8x6ZWcbm8`Bq8vtDsoa1oErLVegR)yWoXg_Tf8G@TS_omuZ_#U2*|# z3JhY|Gr49p$geOFJf&rTQ~E}5cja6dxROn78hxu7Xp%L&-Vh%?7ZZ=mKI?24x$ylO z4e+RAEE8nPa-$+GK)(a!Ej6mt?8Qo-nis!xS1}Rf36=MH|Au0fZzyqMKKM*>;N(w_ z$=lg$BjOHKEkFe0teMnPZ6tjN4?BAH5ZnAjA?CC3klOYPie)ZmB=#JSe!tme`I&x& zZ1eQ_o{1aGUFAV$|GwhS5$yN4yYMHW;eL^Uh0W#VutfP->bcK9{{qn+AGUs^*_7C#B%l6 zv*bn~F8QrI!27UDN%hW)Yu18NpT^`{c2j@NIO7)P;qEP4cbRK0TZ(d-+jD#mWVEtv z($bRUB2RXkxfN3wlv`wh|{mxg3M5<_7W$IUfTqajw|X z_h!@Mm)KV+1^_~`A6TKoYIzR7twJ70J`A3=ZDhw;sLoK*7fAJ_pEQHtzC;6&l5$Rz z*KVJUwd=!%4av3XD*=CRZczrSFJ$6T+b?lsv%aJ zSm50Jl)YZ>K=Dk1>c8~i>3D^~W~$1N*h#xOsOK<$E18=b>IZ&I4OfIqB|<4U$Ke*l z=dWNp!!bj*XV@o3*Nn8P8+&09M1!rNzmCsyw5F-E5~*0zac_oHZkQAa)q}? zei+6e=g|DTM{_06WFBWI75URE<`s8jmJvVNvR#tkVs4c##|*M;v;F@XNZ`L32rMKy zjje?E)|#TA0<_Z2S4>s(I#4<4%i1np>X%02Gw#NrwWc^u-fMl8*X(J$;FA71jl`V<2f=eK^mEp`teUKhE$22Q8xN=72?d)f_0lU|LvB1(nVE4197#6e)`5BKz79_FR12G0 zmI$>?n&}57;9ku?rzo|cKWJ&AJJ52@v_XwX( zehDgDqgQ#~z3LP@7u43lyg)i=?~c-gr^1s)Zswe~(D#Y-1I@#ueV#MLAL0p6dIOuu z#OA+w1g*!HhM9>H$rsS=<+bqka;vlqV@#|+yNb*hqOwE(>U@cxm1;-1yIWc4l7rpX zQnFrgP#Y^%szA3tWNES{LD=JI$-7IZX-EOh*6F%>y~Y+_=BXQvf`fdPyL|7rKJilO z$LgfFK51l+#m-a;(qZT7?`L09tOu0H&6lg<+;bq)cr^&#YtIMSaRD~xN+)$9 z;%d0Gq#|XDrf)5G|L!4NDUH?}`e(A0Xgue6-ZOP|Msb5BxBfl?{e*v8)thJwxlui2 zE9@)NxDjQ0P#|=_gjnQgR3o*)^3u`>cwC-=c)FnCjkv;Yud(;tg71-|z|4Ry?FObM z6HQvpLC=4U3A@X+?Q$3pVaf{L$JEIimO}P`BheT_uE|diT5VeP+>ehjBgbw!WMw;P zeD7DcQyfr6L*$+@O#H&X@dt8p^ft{^`t5K--vWR}4TtPH#hw(Zf}(9g|) z-Q_fCz%Nd#{_LtqzKY{L2$AP*no!i{ zwv1xOg*?BvEBB*p?*=bx{DFKz5LH$Dkj1_TpbAq9MmW>CZ0qkDv+IZxp`$9AV$u+&0?;6RH5b#7;ji z(N1T*4@aM47_8w*P`t4a^TI3b1EFwIhM|j%A5k$KgO<*|9fy_`R=B2!l}>#u42S~B zQ~f=%Cb((jb2$q)n!d1?EKKZntyF&RD9nQJ#ogx4o_vZP=R14zqF6FU6Z6A%MCJ;>#I9x z(q`%2_@&7kjdHjH3tHC556o?JkkY;EGhTmtI5bnjiFBj{mR>eTuKu`0-8-`Vq|&l8 zdB6UA8}B2+)u^+$R|;_S%ErTJZmx03)SthGvtH%iWS*4;<=bX4{v&&^;{)FfXXxz=y9nIkd5`vp!Xfa(DcoOqyR<&8Yz$ z-^XIxhW>m{7VNbujs3U5aq{q1uHb0jeUn~#YOA&KnyL&)E4v57eAnyzQ;wPRzg?N9 z-`DBTSrZsW=qkVU%uFqgE$}AJ+h4;AI?JP}1*jXHO{83jGx#C)<&_0s2ol8?u(Fb3 zOUVkm+ITCvtb@R$m8C%vztz&pRRi58UeN7daHp90`{!wbe}eywb9>q-jksfnkJD&( zxI<9^_;+esNs(1ID!IDq%g1}q=7p5^V<1sOG5;QOkMn$~TR#&!yzhV#=2!n~VlK_! z2)}raPmb^3wbc|xGHHEo5=Q3c6`t!|BK&e=8HGrHVc(ri;+NQ1s)fw9+Y z`-Jl)K9C%C5sPoD^X_@55Su?i95{y|iB@naVLl^na{-nwjj7VpM7Ig;-tGnUAnvsN zv|tAy~I{pD8XHK3(+2Gh~1Guzs_*I=Xb=d|;)OZTKGh0B^GADbAJoz25e< z;0A7s-=ziNnOT5=XT77Hom;xmU_80dsE0#B4CIFWL%L{BynKna+9Bhy*0sf|vOAHq zdXqcQMbtY84RDe7(@+UC_67@F!)x)*`f`O%-C@UPkb`p;=yr3QKN#glAuk753O)0d zxw%PqJE$N6`M%>&GN1?f9vu?q`P^p?zhKDPx|OxrdQ9tB{P z!(G)w`_D%nPC~!zb0mm0A=C^<&G`erz9)$PY>uA1s9thR>qyITv_F3&J!Jl#{}K&W zTiNr64}>i(*(DxbW^z_ulp-G)Ueh6(S5>}qnRn8szmYN zoS)~O{5-J&?O>wjmk}j31>zVzr6E#HuUuu7%X%Q8o)l{7)*1s_uuqD5^j1@`vd zOGKnz;?m?UAL_~6Z*?y9$dpr zc#SMiZkN(LYChN}Mex~v6L>_fNuzPf6U4k2 z!$<&UYWWL&2Zf6B;HTE&*x?5*U~~%Lc!40B8wcFG^to;Xu`T_hL8?6vLNuO-h<895 zr?2ZWjQ8{Uc0vwOss|UyfVB_{s?GQ-q9!vm{YVA-Z0n{mtcn^@J0|mBCR<4$LC~WlX&xbINzE z>jOVn&~1n^oQ$_cXpyt?EK2ueO&+!>LANaWO^cE4dbi}yS-%s;cq_{@5+j&_Nm6pr#Cx#nT$WP^ z$|^ntoXK^`D}-bc+l3b+>2X;s=kGwbE8x##ZZcrcA+PeYeQEO#>l*iA6K1d{J~rFx8}ewhrd=LFhv6sejx z{unj)IRPWfN;5zt%~o4)0CTu4HDJON=u)Q)6&{|>N{lF3b1@@A`RD4`0Y=X0Mr~`W$2S*O|lQa(3Hnfre!T z!bE&2w%;SdNVvRXz|vDzG3)Z2J-0jOH{$H;^QL%?i#$1S^n+h{nVf2wFY39CMG|7A zH0eL2mHLIQ-()J$$+{28kwE;#b!b@g#wp08%&9>Vude*=bhGTy+;jTud4=0w$eN$` z+;z%~>VymI5q-(k&$_c;a%$2cE}PpQmX)Jy{hqFkz1@8A*NTj*cr~$XHlQX*5QuBN znyM(8oL|I+uv*)s$t}j(ay6%!v^YW6GIlMdPGg9&Lq4*Rlttdjz}+yKGTi~BW?DsF zQc@D`d#Hn?`o0V;IE33$cXVi0D4G~WyFt%~=$sgw)^9Ujo|}RW9uxhQ^|L<+B%V9K zM@|XM_=}B>#Aw}#TzQl+RMw`hq`R#t`;v?_mK7TP9oCyij`jEC-jfD0ki!m785Za5 zH&G-CKROMCeb|G79U&N zo>4LsSEfD}=E({I-QJD(hgF_;GqMB2(eHqIBI2ChtwPrL;?F>kY=pb^WzZk|xyf>y z3m5UYnd~E+JPXX}O2+NL8yFLBzV?^-b=eqi&LZqPxl z%JgqJc2`3MWb;})`korMSN_B=rc=cF?K%H;`gq5L^kK_{o(7ICc;lkVg`yt)m5AN$ z$(rUk^|O&N%bH=ltB2zoFILjSX`|LpZ2colUrR{OnYmQwB`W0;#%d5 zn*+Rw;MN|WAL(sfY#5~!K8gR@4F1HLtr9()_{GEGsUX(Xj+P76U=a{pi#R@6wNNs+O7)j0;IYc-;{GI!5 z2wi#0;pfN+PPs_M)i__eP$z^M|8evrMBrdqGdOXPYwmF{=MB+ar4cpPIYM*JZdUP@ zG+-*s9mp2|wgRXM5ye|V=U`@+&1yab#p*J=T5}YigL|?aes`kAH^<~G4|wO0*hN3s z9rB_NyCJXNQgT_I$8mS6lXfP+4X$-r-~~^oI_gU^Ae#p9@B`XH7kDz0-dFv8()g6D zFpUPBJ1b=+>X;=7SPWLG@ZCD1%pw4&gCpQVphhK7VcU!#_+8Du@MV1kU*>w>usOa< zrRW>p+ErBf*9=OxYKP7jLv7b16Gw(}^cRkm z?Yjx`Z8t-6@TH6@LR$C`CyVK4#xzlU9OgYtH8ZECD=PShG_YAheuGH3v?UlKCLu5= z3O92lh!4(vrqBdwD4iMMQmOlLI!B@3n!hYQ4zwWr^>O6vz={P=%PK0ehx}j5KFf>< zR!$K4C6C5-q$<4#yg+(hdM|}zZL-tbR1*NfjC>Dv=O|+tU<`Xpm2Lz)#x2@qi{7{e zI4SJbEIq8U-wZO>2ew?8 z158@wlexl;OL2>eQqND`^Jo)H-`qTGKOGKT^MJGwPBHPr@pXFIdd$?c}2}=*Eos^X+gjXyt<=2?t_5sJ> zlA?!jn(w(h>eI7a9xi|lU8lek68Tf0U1R?%t(}%gYp>)LUo5^-J8f%2*~rjMr_z-% zAqLwrP>!}#(Z*9wP@?tYgSf@ojSvmB*Wa+)Si>`{WflucG5^GnGrAH-$=5}{T+cK{ z4TH}tMBSN=3ZosRIMzsPyb5S~zCQJ90?b9R_{B{(W=ITcP@P#>hUll4$M{ho2MGEd zm6DYlv5KT7iftWI4rw8P1^;oq&~&(!2AW2c);6Au zR}csTW@`XOSMx-%7DvFIxo4bk`!P^A>c28LJHoP_;R&f(SSgV&G|18sFbLCcHvBr8 zSSix@R=Lp0bAE+h^XrypQ-cUyDPydQU0|}a1*hr@FON0q)%3IN`NinZtn|81!(!vq zz2mfO?bgcIyI~J{dtm%Cfld3D8WJn@p6z`6TD5NaMS8LC?rA~v>$t!6V+>O08tqjv zzg41qk^@?sZ=3ImLd*K=o*3vAX!W;fEj7XX3japZnJj9MtGx0Jy&Qe3`*LQ?ieYt+ zmpW~#If^LrbuAQ9XQ1EdeeNR|UBx;)d)Ig0#d-2aV+iiRd^`AY?EpN`R2O`RhTGe` zzdmC;d1ddyI9bxc{ygu(r8}}7XSuHo9wOG2FH`%(FPg@&T3z;T-N+yu9>T<~sROuTLbJIQCWbxpMg zg#vVT9K0uNJ`)YE_SIkT$$r0i?Jyg>!c%^L?qJ3AiWkj$UeE}02ebc0wRIDlDREQ! z$BQ~D49Cu6B=qyZvxz61Xm(j~8psP757+q*f4w-LX?=`G8no!Se0$UnIpT3Dk61E^ z)}S{b3!3#Id5WRQnUjj5)C_lHvckc40HpKv;}?1Izd6iJ)!b-e(rGCwW2|R-qt@5n z(e)(3Pf+zX!{kTmdxlyTZ3nw7NGt)CE;hx|wm=JApp2AmVsx*mK^BYkI1!je8(4Wi&I zt0ua1Z_^M1zrwcIvx;_1nmuJ_2j!>E-#f0<>{(-+5l+qZJH0z=`g*jlgE$$e9!gkY z%JR)DyrA;SOF-V;mUk{@xoeBvtU*`irSwH^z8Qk*2AZtE2|o;)6e!8&e)(39^UJH5sO`mk)Ojo1C)e`b4 zL9X{ppP^NXTsng|c~gvTT;4rg+$Ev~(^X!6d{_-`P}msZJHG;2z3NyX5JdEIz69wn zZ(WL;{u73mG=u)30>tG*P_LgY**^jZ+3YJ7u604|BfvktJOE^6gCm?aA?Dd{u8rM) zpz$=*J~!PNftCJx=ZSJ=Z}hdeW>?eAZ(d5=%xo&mLUr;E`;+?}Zg)>cpBU29d9PAEi@VfA5kxGWu-P3@m$RIA(p=`Xpg(V&p}O>wNz5P^Ebrjbs6I< zPeMlqcQwT8DQE)!`+_HCIsN-%Edn)g(})Moqr&@Mx>&5`%T?9jNp)T1!=~XXg4#zD<`LJwccAcL+bE~@?69h9vpYgxS;&`eW z*yFVqY;=~!t_W&b`^t^^1s3p!|2dA))}glfuNvzc-XAIv7!?53H!ls@wPV=-w*;t&K-IjQ)oTI#9!> zKgRfyhDj+y81X89(!Y4L}JWS>0jun6gUzj~%u zEg05>-_;t5(VMMW2VryObUmrTm+lab)nWM86@)`RZ(I<@$#c>nI%;m6Et{FpMAjF3 zQTej3QN?hsgiW{SvxmjyeIe2Rl`%g-88g0+2`seM_l`!qzT$id7Z$6^MhRc`{Ji)-@Q!MAFvaH533HJZ-#$zd;1o*Wc1)x z1}5?mz{C=u$5*3exnw&qZ-GvwR_wDyv5Z*H>Ydu5w&CAA+~O>R!{@FJUs^P7giBSk z*V+ZV?w$#_em{#2Gv$qASBS57z2gT_Y^VNJd7}G+mB%7oK^@{`(8!h^w6Shahd~^i zeof<4ott!iao_$$n#n0qsk9!M%m^ZF!`So_C4io!MArn?aP^(<9v|Q|6Hn;T#$(CL zX0@I0z<>QT5#)svyk_v3N<!~6?fFPMdH^I~ z+%^FR-cRe}_BOe`l4%jamyDdimef0nHxHIj?zy7G3d^(q4WnYg0%5m|5I`%aoNGs} zUG^0B3=i^q;&z>?EP@IT^}s-&Z6X2Rn5%Xj+5CJ1c*IPsfo6LI@iC+L?KNj(<9w&h z*c5aJ;Ik{y?n~O|pI~CR5ij*JDfbw?!TmZB->;0t_hs+g-+gwwN>tYJfd(9KqhDbX*SExj8o@#{GO~*MLf|IpfNi_4p5L1S0|Tzw`xF@O%!3qif9$q&4C`-vZzpjC-} zUA#|L=*)gTQ znb)vKZuaCUrQhUfV<4d-t#MH z`UjRNa3&M!I}+u z!1E92o)79-h^oG0vBJk}aE2~diO#_TId8nliPxd)N%WCZ(7e%Zv-MYIPXtkzGL{0e zWv9A5wiUVR1kdq){MtuZy34-~OLqpxa=VtzNdWS6CWwF16>#3 zemq!+0)4z_l^cp$<(T}9m1y8O49;5`FUOc22b`{>wqE^NI6^8J1e_==ZdsE-wV|@G z0$~ZqeZC5xOHA5WC>5RiSc-U}o%koVJrtvVRz+m5usbO)g_FBv2VwPA@Rh>dp5wA# z;wX2dYWp|}W5r|{Q`t|&J`*f;x4ahYbjO%;F>$@qV=^QAkUvsUfzz!!-0rS~%-Z;4 z!GQR~GF~Yv_aT&XUR%qwYvw67e(%kJ9ZQlxfyaLLn@*rDnm#&JF%vYWx^;Wq3 zLpk_X@N)dt&g%os%J%m5C%@stPtdXkFtf_;RRMoC8Us_(EreC7T=A{namh?PYu)4* z20_d_1<0_HkkHcih5osRExUH1{_doQA@B3zSAcC2<)g_xbek&yisvqk*ngbMlCUuK z)aa`=SxpP_px)={eF2e`5^!gI5lD_WxTnm|TlA(7<@M)4!tR;nFU$`RAuGq5>?~IY z1)+lAo$^k=c8ru3ap3;ZbfOg)!f6n{AKN>HA7#crYTy;9&uKYXpu*qe0lpR!@wFou z0O8F}$RQ;}V*JA@_Kb!hQrV#dhjzVrtb)FvVuL9Ha;+CYPz9-0{zr`xpKA-;FT|MLY<$`$;#MB@_ zoyYmX2Vb^RC`p}c!n+E{NK*JQln_J2KsiS3TTaGV^;Nb^IBSHTIBraUnV(0%=4q!# z=sibiXh#Z22@~LYeYA$?byEf9!4c_YuMuXNi*(P0-P&jeaSRhzyOSbM~%ya$6I_#Ui z{bbFrRW?c1{#%F=QKhL~wo-CGrM@QaRe0kx_FEXKTCjRTg>6-eUlRqgpi<*oZNE#k zg;K&H@Nw{{EF}GGr%o6i-%V`2NJdyaLsfk(d@QBXI4{|Ck;~Ld(}h^Y79Pn7Kp0X2hL8cVa@|>uAq!$$O#8bg%N)KXFQ52~VODJ`chwn3F#G z`!Yc_4LB?FBgHw(<0bFEXPVNzYtFf*|7`wtN7z*U%JSWJ8KQr35qWL2W!QHfl|`9` zul8&EpIg?iLWejDGcuYLP3}20m6^WX+;uAOy!_jtm>|Zu(lws5IxybUc;jeoe8Jk7 zG_+8HLknoDT2!yLAmaesWRM6&bHP@i)*6}>uIT*G1ipL>?6ke3ofh@`hv}yd7xiF= z^up~^vV+(5%))*Fyj&7DAuWi$H-DBhIl1?sjdo*H^f=qx!xh(%bBI2pun{of%Jeo~+BIgP6K{_0bKkd(6RnN4E zmFhuwtd#byt&;U7#aSDO_Tu znZ#&DoWkwP0|tFgpVNZ4>>V6@nDlO>ScZ?WK*;Z+lq)NRWoOLiUG8Si-6g!;w2GoT zRPDNY+|jUJHYhaQu7V{G-yP8G$=7m6ASz>$HWyA%4c_MfG46q{TaTkR!@Wx)y&XR4 zh-R56r6u}WtJqIDZ=(fC1LF1fuDpKv@}>F|FS2oB$~ULU;4Ox{aCZFWxiVQSmRk;{ z^mhE;51S`yUcFL18q0v2b9}kc?7TUA&Ryhg@BZ+r2`%;3_Y-qry2HMCJ$pOx)G*mQ zz4~4nqcN5*mMVfy9B|P`G`o`ZK|YJpL1OGTzwD&1V~D#l3_X}Nm8prVE5zM7Azz~a zkhfs<^}{I5QQnen3Q_DuQSq2gpz>wjq+SC7YlI6%gyOJ8RSldE0;xK*jA`-*^l-}} zXz283VEm(1P&_?G2F-|Bv6L8)*<;2@VFvoFccj|YXGb<|Mw1Lfg&B<=bMTa$X4N+h zn+1_<7kbeULjMYnP@@45GRp#bsJa;pbh(!|HEfIuRltAN6xSQ$2$0HWx<3rcJ2mdc zuvuwJocmVi{_@)A-rse{T_FwcJxn4s?3{i~Rwk~03tOnKjD}=;kb4sy2cxPUaw1d@ zRT(|LL_|ssY^|q;!kt~XrJ0ggsBpz=!|UoxrYjGt;(3+pCB`RrUt_)3lxwr`*Zi`! zAN~pTENj6K!1d;PyGQiI=?gvc0pNBksOQb9)@xZK&52IP{dX$1E5QoJcja=y&f|kp zw-{CIQ7R(aD1p7Fd4dI7NbB!c6*oT}On2uB-^TFA#@btMkM*^WsOaL1WSk#oG^bNZSCi-)OZ#Awoo2)<w7)%$02?Nh!% z&eEHvz*dh$ffw@mcRRn5uXF{x;2cDLERJa}oZ$^8Y(a)6i|8;Z;l0DmXRXLFKJB@n z!Ayr8tiO={)*;e*(9xE^EVk#$UZm_#Yiq|RVg|S(mV<7kv!591O=Lfo1;ruj;tum!AiKlMM|UlnnH{}!kz z68RY6x^|rTP0`uUMz)U%;_g^sE+gd6na8Opol_CPP57&%MXUya4cdcV z{&50Bpf@Q`-ejQP*Adk20C~sTez3+0&O-ue+x7qCm#g(G+LF@~ylW&-Ky)SaustJ7m z*jeH*Gc3k|SKhAA3yI84rJG8W;633NYxPtK3knNmyTj z%~-KqM|4>`hpfw^ZS0Z?Tx4$TX*CHwSz~7LgvJy`*ijH}-pZP~uQd_3oe`R{=nh?L zRpDySJgI%ORZJ#(@qxYv4Gz;DQwWuS_U7hhs==bCb`*DF=?B7nkOq1PMg)1j#^-r$ zCn4lBWsGecww@2T&zm#e|42<@;-(wqtTxeaYA8>h+HU_BRS|LAGei1Gu8Zqq-cqG^ z$9WGQXh?4kRc9Qh4Vn^I>4=gJaHLRhevaisy4j%p@0kC?)LTbI!G6)gDgpuu7M+ST z(j7xcC?ZIXAQHmRAl*YMAT`q6C@C$S5<`c8bjSchH$x2ZJ-okr@A_DawRG{{oOw>{ zv(Mg~KuN}6zzvzvRG?xJ2NaCK$^d`u;sJs+`2*9P+Pmw{0)KHFh2dC`U?Zj{78zqU|uc-jo81%5c_9ZN=1vW;= zEAV!VGiG8L@BXO&v-}qJIp$Bt7KB@!=V}LxXUS2Dmr11Kd8)$;W~FA6D{5=b01j!= zX`w#m?4d)1J(j1&nM+l65i)#B$7BY}$pg8qth1AHzvR|@1IqwOc!6J-^V~dA5Wi)Z z73o61V?1X(`b}`w0DVP2`C+=BvR$g37MMVk_UK z-P?TUqLtfxDO3_9Q^E(u#A!QD4a64;{EcQJ2*x?`e|zrU!kogypG}UPL1|hP2ayYK zy}U4AU~8TpzSOffa9wo>Q?EAhW~?)1LSzX(l&hBZCgl4#Zt9gIl}($_w=;1sKRl}w z&!xN5wBXj#m{o^sP-@o(RXI$2E8V(k@CBOpqk)jkC1jv{zy{7O)26cpX6Yi#i}Jy! zi{uHUz|;Bs9_FBn$Su?9KBrH;3H6(x9y+3 zJS`5$rJ#2&USJsn6sUu>+IrJ;$L}a-yXKLFzKwkC!!1FQomIGN>1%d|#!_}(MKli?=8fsZ-?*u= zLZ`=Y+aG>!mN|FtK4aQzU8qemFkBVZoUMpFCFS!7 z|CQobJxU*+j0cISu)7XjJ!)V+-1S1zV$q?sqOn$&Wy;<_iMC>q^2uW<%c0eBSZcwj86@>Q z9W=*^q|h^U%IU1pO{_=@kC@QI4il8<$xl^8)$X`^T+80lyaU?fwD39CKH0(DYa#?V zRwjhT+F!|@6mK-)g6Zqcu6=8Fj3g6lglRfsG3Wf8?d@vP?T8rKf4;IdOjMsMF_-TM8ERhD|skoU(bRI$axbA0tqZ7(db3E zJY6pCAVD(3CGK`a{8&>)iU>Lk*gh`seB$MzrQTZu%*R~JM+&d@Jf7+Lu(UYHcNb4TphvDzM z$+zNbq?8*xO(&Hj=d-Z}B(6hWSIeD!J-QMMHrOU~WAG&DP7#NXG%3%q5QaMM!frAK zk+pBL;JhSdVHz%F(sRy|con#&cvvdA|2*6@0&&vP-XuXxRJub9chLDO@~88ZD=6xD zkCNF{?xaw%#J)vcU%}vVcp4l`%c91#7MFL@5Zg97AICstzuoXB581Hno~if9t*9O{CT?;P zQQaaI4tpAa?2=Y@;M-!Qpr;V!tJfPo{%(o~8{vWP{vLlk5vRaSJrBV|(Ne)z_LKZKc=EHuW3gGE?f9Hb)P=at=9yQsfCdPLXO zdy^c0IFSy&m(aUhb&_}Zq$jOwMR@D$DA!wKoW#J*=T)s*&7~cIHi|KV_3@A(8$Cht zEkST9Ax7pQNyBq2`V1N3{kWxb+>`iBQD^a`@P6&?ul-ukz+23cc!+49ezW7|pYr5G z#_q63R}dy;OYt0p!p2xCZqpRy0sKOAqapdrwgjI6JN}q^7>j~Eb#XM>(1G+Ugf`(z zMAJ&-)m>%wWN^I{+*1Rl1KaPgAblUA%X6w6-_L@LE%S9IiYOo)OAl7Mcy<)3Zs}h0WcZcI?*@mp;pK5*6 z9qtTs9@xc*&IRESP%-5lR+M$%`IYcTYv5KlW)lA3&`E6i#@JvR5v#DCYg6~q1A>Rn zdh+wudO<&A&%F1pkI`FQ{1D=O0vchR`2e4#VBQVfLH96+27;hBt1Tg&>?SH4&O6cW zY=iBI53G&p5!Te;feQ#Nj+ml);-r1fkmhH8u#%&zkytvzyQ zMEr7Fz`k~9vT24Vcy3tch4&Y|$Ozg$)T5EGd4B)Z;Rf>vDyfHZX76(fPC8tEtdk!r zY)wZUMHX=+S6j>{Bzi}P>T^IOn6t8Pt)zew{_xu;SUtNzn@&@hnt>9TfZ2Tbj=?h4 z&$D8m;|cdNx$Kk(9b89b&Z3sSZ(0n&wRyYW{$7aC+3iC0U1e^MB9mO*AI;j{gI!Qv z+&(aK1%bVpqEopKv_IVcpCV{P^b@~C1b@T_bfMZBV9{{DWaY{RY|B3RB9ddACNvgr z?GvAqAbltb@D2gmgY zDQ5Ro&$us0zO5YdiVMG6{!QQcXPCsdGTdjK zdsgT2awiq|tE4zJWEo7TnO0SeXCG+^rIZ`tHZyH7>Zty5-fJ$0mf4JYqb2RHzU%Xsw_o^ZlZhd5H7Q+@KnOaU z`k10$Rw@Ln%?4Rf-nbCkhX=`BAdDrgub-06*M>()B_c8RSuM*P0c<)1SNUAg zYCYgcIeF07DK^mZ+WD6nr|{i(GrXn$3ln&1)8dz0f_Akn!)bb%FPLOd#7e0#r{P`N z-Hva~;^5uh)}4xC!c#&~_78ztWKtD^rcmF^C8=~;c;D{*M}E_wvKQ0G!Tr4#?PjOe zy7&#T^9;L0cBhzq_thTPmP=f#GcGEE+azg=bDzx15dk=35QSky4-rhC`gZ9R$2>WH z72<3nM(UeI#V2+kc5vCw>iFT5Rdg?if3(8dB_~v7yYIM%KzX(P;z=4JqI_16=)*tS zilGX{Kc;2(EA+|Et}f@VJWVqVLZJs&aiH-}MxmHl)J{wW%ug|{JwQ&-3R9an%Z1gG zM09Ry7}>*KraseTd6bP#0itKs$#8Z9@F;bJ>eT5-X@L=*N-*C&(!15NWr`j;JhT>0 z;dnyQVhS&qbKAlbY_+|DTu7Cnj}yp6 zXz9jj75yEGSuYz_TKp=faOj|0+&$2KEfvzG_u;e@%}I|7e z{#H}{$=s?;!j=&!c`w0v>E=J|__J(w-!I1k=Xfwd({7(!cvjEn;c<=QWJ%U8UX~3= zxk)L_#<+*C7Q}MmJDW|CPe?m><#>ixg%7|3-;B`ImsN|!{>~cjvAyf$4QrMc+FieY zV1EBY*RS$g(yKlU?xbj;*CQYwt0A4J=tX{S9&diW?fVSl*-ONQ&Sr(jT`u$JA|pP6 zv!c36uhi9C{@(QPfsNmi6l}BGhr16VHshDp)40qYzeBo%ZROQ{*mS?c6}LYedFcZJ z68)tZxYU$%Am4oSc?5{k@WuQZK7b$%Myrq(Jkq$nPkKS;+6y_3whn`uri<(48{sbd z09EWV%4`)f_Ry+pHs0*!L6KJ^N2Y$Aq*&xB&@9j)BY@3o^fVeXj^KOwSTdD(n-jB-z|?WPh!k&-kt ziMb6p1|0nafT4I}*u0vF-$AEX#G(V9+2SkDKb^EV{~=HF4_vX3rs*B6NAZLyTis)I zV+)O}&ZCWW|LSiKGg3{?{P?Lp$@V90Q81x2SHVW8%2{DcaV*G+ecRXsC*C-bq~y`G zrZ1!%JB;vcVmPz?a7rZxA;?|!{80?7O0a@+Jn_TH6V0;6`hP5n$l@f#sRR4{>@t%Sl9gQB1=Vge_>=5i<4( zR{FlJVQNr8SOofwJH-dd?EK5H>2@Gs)#~%9$zru6!?=9HW81pH)E9@?MFSO9NL+C(|M(=2xmg) zt*4O~S9Cz?3s!RK%RUx|kI&$Np1&`^{y!42I^6(Opixd;aQ~d4Isiv5xcec|KLQ$w z|8SKroIbL9J*#9?tHZEp>z4#4-Dz>9yVU#)fHgl^9Z|D zV)VAxwM;luy0QB4o2Kzi#(mzJngOpvnEWM6I-*H%dxJU3#G6;1gT3+6kpwnGV{y$< zUP^)K1YRWc;b3=vc{DKNkIniNc1DmNwBptP)O-l4t-O64sf)*U+9MG)~ZO$8{`Y=Wg7$=q2Qa+aG?{ABk#qh**$V zzB4fr;WebzVjR$v{=r^UTHmo;iY>frErZ6EG2(l10E=Dmcbk{Tp?HJS6B`s;434`} zt-}%X_o|Vpw@6%x`joGK%xAW+XDZFGdwRtza#(u|T%1BqI2jxSNhMELeo%j}7=F+C z^Al_soS-1xdM5UHx66kiWO>?0BFE-~Od&So+>n&=VUnfLfVeB_{rQUCk(od7<6(dO+5UPUSry zzxi-TX=}hT3qP~!u~ct$%PM*u0|cE8^%gb*cv0DW+o^=Dl*R0*fdtqLi`eyJS^OS1 zRjAsfr_*!+V068v3()r6o$MB<5W~)>b~Zl6&VZLv+guE~c1UbVq*ZU~0Q%5(RiwNTmYidI% zvB1C42@xL!S|z_W8%D(i&DYc4Y!_pQe0nDm(pw$Fga7WQaQ=#4hcUYS@vgM1mhJz&skr5WcS?7J_?yCr$a_rtmU*tDuxsoQgNyr#-l>vcN9I1Y9((XB#O*F12Z zH3pz@19FT~l}|jU)0dv{Pc9Nf7vly#A3iuL8{Y=}8T#ia?`K38cN@eyO+PKYJ|n#D z6c$0JpnCFbz&t;+Bn?hyq>8D%VsNP#EW79d7kQUESNgy+&ueif4D2DtyCH**g)}i) zn~n_;X~%8jN|SwQ(9f{=(tiJz@~n7VRDGZVy3$602qvlY8h7O4=l$VW%Q*BLRqHeO>GZOF`PSC#TERc|IV^mjjH9;;){rN%76jb*Gdvr!wWau%YU0u<%*ISC?qyrU+MZavuW7a0KJr`SeJ_pexZ62zz9Wy=w#Qx9~P`6Mjki z@9F^kq0p*8`nAYNsCB^*$upsXV<87D#RBuisQwtIo1XuVpJIkL{ABP5S|{oil~P zoM&F)jv&1q9u#mdf>j875SY+IcGdwg=B(sOR{?14C^igm9tr}fO3^Aoz>#6UR!q~d z%LUe23(>k>Q5zhfQ2=B^BzRlFn>yl_VH_X8wMEZ6=N|Rcx+Sv$#Sl{`b^*e`wkc({ zoy6Z^0;Bn}tX<)i4TIB+x_F)6dY2s&NT@aZ{~CLZmAddsWg{@T+WemmY2B;YDf z?mzJ-K|Y%jXWd--prJ*kb%)>j{ROnro}Q7FMYhEZwZw3$ZL|7zRphPPPxh837Pqvn zG~DP~n+kk>wq07Vkfn|?$Eq57&e-ENdhNU z%eX*K2;^;-#11~G@2nj@GXMBOv!_w!6Y1^avI)A=@QAZ&o*^)zQ~rEFp9YAO{o-R> z{U7N~we9(PWzj8eEJUd=!=&K`TQaea0z{IsfGKza?%A?WdcgW={@OcIqG9yuw1)2D zhw?#2IhG8~?#OGYNif_D40fxb${n^7vwrBirXRG8r`QaPtNEtjbkSChP2rXmA+PMV z;(IbyUe}8c-d9OAnnRqy-c|a4|50a*TJh^AD$lb8bFD~B z5hh!_>a^XQy2j>8mQ-!Z5la#s3S_NLOi0uD7(da z)_r<^6ynI~b?u`@q}S3cK^N+zMW0TIr`zjONF1Su8N#IfqNR-SmDo$}ePi}?7JdHb zgR+WZ!&bxv2MK1dOyh6oo1h=c!O;F!F4XR>ux_V(f%Mk+(1Wk`y}i8-B_X|3_#7L7 zIzUQ&Rn0GeT}|O7*j8}NuwiNTK?W#M9`OSKKK*z7`48X&&O;B z;fTr$cJ-eL`5XCAEAe-UIU5e)^74W!Oj)jz`j7FPitQ*vyA^2+OSYTwZEV`@N;(IQ z7gTZc7Vm8+#RygIro~qVGzED@;&g1L0At<<7=oZMkLEAqBKo32PwR$fOuXfc`OWYK z1C7dq10o zfd*7_5y`g_>o?^c*^pXcPwU0cRh8lOHjzFzE=X3#7c#_~@Y(0__J{yiYMYC(C)2#t ztJKVh?b!CdS9?$=0X6CK0b<2@186bp>g-;o^XqEVyIf@J&K1_@YUel5NR)wPW_u-m z`bC(~44h#MKnH7c7X?60m7?z17VQ|2TtG$s8B;Yb@M># z@+7;l1PWBiM@bHvFON!K0{=}XZV@GbnXs|4d5||FKJss4;2-+qvNJ;Ss! zmSK=T-$0_z;}fzS`bQH(hG?0E8z0j+D97mRnmxjepQc&rkx3wE6eiuCKv~n1t`ohc zqwa;}&kwq-SYyGQ7tmo3?cMW_4PS^cpW){JRBp!n*UzF+D$O{qr#99L>N45z1ewD& zv6{_#vEU|T=Yx%JLZ6rokP+0SxWW?ro&tov{Ne2HB8ajLuL4Q-6{q1P7lWSnX%^>A z{5aVP$u@V+QfsJk1t-=@>V?Z0}2_sWFUq_>3!QWHkbiaR(V!J|=sudO93MX*g4GDj+ zeAr-d_)PFmSFsVtGJ&l?1ek|hv*XYY5kna+bjpubi_Q{=#R;C~N!KsF5P&+G&jd=9 zNalH!dh~n##uPa`6X>+*6ry<@h|qTBnxh>%yr&$6jV5UYFE70$bP{PDfI&d+`BX{>6YW!SATYT zh-0%F5HMF!|Al7J=V-Wq$UOX6b~UQbUaBA`iQNxbG$89rwY_0tuvWhMIU6XQ@%kyj zegLyVI#@P1xf0%xv>dYs{144exGI?kDZi*VKvV``GbJsC*1OMRfQQbtrECb;!SRQs z8HT95^_E9B8(?QHQKZ@{OWAjMYt;x5tX~Hp%StxC=Q=^@}1`X?|k*}*GN1R)bZW+ z$2rq`!(N+EH|z}5TGYqKF@;b!fnDdf@)sZ^JG+)#n!{0 zp>3%t;kVY)2t2)w$IWg!?m#c^96K&hWR%s>f0$QrnFacS=B$)M&7Ba2@<{qaJ4h3G zT{rC)5}UEybN!QZ$A3^IxOu_j`r|V0Aq$izDtO*rC(g)+1^c?9?7WUz6Z%!lfC&ij zW5C(Wn3V#Vj_BoslPPO#$`ftP zu~%;al&lmRFvD&*08dnFz3CV)%76Q5?PGcYnk?VrJI{shPuRT;q>SjtNbi2=CI^j@ zc^7VH!6^-_=;6*7#gFcTn2H-X)7F)t(nlefm*R6%VO0)tdG6lf0_Dm$Gl;JIhaws| zkC1=wAPbIMSDqaRIpQR0JBe)p@zDyKFCko43cC&AEv-%z4}P-TjxZ=VcD9RWXh}Tw z{I8SUkX@bPZv8-+?#fS>bfOk{Z(Kp3m zL;8qMDluE(p1vSz_^U>rv@0i(qnTrGB)YvEL=*u5Tsk#ig*CqC9fBRYPtjcLl>#Ip z(~;w=BmG`g{6vy?$Xg=XhT3MCfVc>H*a_3JM-|SSOzfz+e1?>NK#WJ26?JKOX+Q@! z{ES{RIbK*DktA?nx?95zuoUo%y&J_3)CV!u&9ltFoEb1m#@omK~dRYtZqY8Y6XurPS#8MW)AP_1q=ZGgb(N6)QF4CvH8FlsCX#5+CpR=BVS{ zdKq6^?B;dy};u5F4 zN|mms;6St9R-qNGwwvm1Y9y`;vF*tHCt`c`m+xm`N^#%8$C)X++E7$_v+?zT3^TJ> zP45o!gSRS?9{U1Nc?|HRBi63OTT(&N4h_GkGiNbHF~0wiL`};cdUDI|*C zDhz+NegmMbQyyK;AiQ|4Y zzBSJ5UI_VZnHr0dYt(ikRXs|3OPtpJ1WB7LC={^mVC(lcV|c-R{4~!WjXTxcjGq$6 z1bSc;!3MW|d<&3q1V5gj^02s`*gUt(_wCPEd$KvC2yGh~NIf%WdO<2T_>yGbc9Nn0 zhSz%^vQ|TjTrJGo@qu3JjxaMrRsL`-264h~6%xupHoC9?qW8{^7Pj&FM2CuR{gp=T ziS0YvN!Qn{sBf%`i)OV#9uOxLe#Xy1dUG#aEG%!SNlPANI(uoUWr!bm$|o+W{dx0@ zKSJx~Y1gN&*6m16ryt!A&4$Z$oz(~+tdPChem864g)q_Vzq0#Uoxp%XF|6HG!A^^F z?e2^yp0GU)cplHE=+o*`INh~@P7ct;QCUM2cwy;4(`L3jT@h`pU(N)$hxF_0SiM%& zAxS_emxuYV{1A& z-@|B$-T0pys4K2;PD}7_#~7^~jQ+}!8K0a9nqcL?pR@N8V74@-GkrSGE3xh1Wo8`* z*E>%C0b5?rXZ}?$b2V2GaE)mI@}Z>Ix8&h}z6Q+d@+E{>g;gr|;iF_dXBWSykX3Kr zT3C<#(8qT%G>_k>f*7P7NI1oO#pq3;3w}Q08N9XC!&Q7vsU<5T1fAH_QvYpCclIU5 zKzW$4c_={mPq>%nrg2u-IqA>z24be~Et0xFdG~1xGHUlP{u3cst{1=_+PIVtCH`0s zJud+>_)MT@yCcRVlM(zXPOgGjt&Tu-Rwo%hNXEU5wWsfwMK85VuC^N%yc-zibV6Qp z2>e>#{red^{J(a=9~v_dtRj*h^%OMLTp$>V%hMcA6@z1ry2V`(*OW+j1klIWW_el< zUQ#%0DmADFGM`;Zl_LAanV4-fTjyUYT3GZsOnQNaOaA*~Y=lw8xcO62s6Zs$fi}x` zd)2~)8baFunTB1F9K{Bq&N76Wjk!~y(DHq?#BE068$W_nZqOx*ew?uQt>6=@)^hXX z4{}k07=F$u4N;eZy&62(sZL@>UZJeAME(G@RRfQk_j|nt4B3h2HH!)$CdxC*t}DdN zwYXf5cyzIMvznpz;fObyGx74_8lEiWhr&V*m4OTTd5yZ0#gJ4`g1Ed@FJZ}M_)ZQ9{NMIrl zMs{`-U5B{>eYd!Oi8g2lAlL1{t~!yW>RK=mA)$X>3)akz5Wgc}*iu}43?9Wov?(yv za<#+Ma!{09b9$wK{((zYR0((~>=DYU;hFXv@+ml-rgb@wMpmS$*jKuy@7*T7fix2? z(=$cKwH5fUF~aI!4)9DjSS`TDBO}qMgw@Aq@0gh!g{t`Vi=6rYFOUUpRgxmIe(9w@z^F@> z{O+&<8O^uzzl?U=LhJ3Se=$AX0=uQ)F`jq~!y5)3@IERc6mp2p0{e51Ae+1s+f|{h z@o>pdM>$^~+{y<5ZEL;gq40}33*-6EBp+)ldHjP2|39VK$zUvEbDq3D;v( zoof3qcCRs$x@h~)ZwRL3RIE^17~3u;<9PVwDSce%#Wx*UlDMzv_RMrAs3SYQg)mWS zbS5AevSa}+4e&A(Ndlz92*9v`u6D)%bENBW{=@Y+ziS`8zh!1L_%%Ipe~Zy6JNj+d zb?Zf<2TX*&zkf>84M7a`LyoV-z%d^HA*v)h`rF(b+?IsHS;;~!i7~|P@e-!&C8#d3 z;MnLN1SiFWm(TetV!9Gh#hka0@6NQY@czr|?@ozlT2@;v(%RFT5Dr6*D~1m)Lrc zr1AojUGvkZQqRXOqrDJ^;y=J@p1kDpUR~Rco!{#(p?@I(tLZgH_u&<}j51F0&BnQj zHa5$};R(aLRV|lOhd0ANf-ZC7>JN6oxBzosf*ufdOR57A|v;4VIKZKRE(;e58j}a*u6=_4XK0bHt-Z$=P&+?#G?}M6cG9s$$AUwaOUgO zyw*0xqq2{L6A7#0y(~_ zR0ra=jdj}J|4vpvJPkabf_Z+Z2m)2Z zY|t{;yffCk1|B8X5KBKc6`XzdfrX)KT4sRK0x0UrIwoHn!HEh-GlV|Yg19sLcP}Bo zsm^r(my2SaL{Yx94DabOYU7MH`&7%vCjxDtqc!0)om};& zr%EjpokQCw2mGyF)Sx^&A^SJ}AiPDbVpoERq}jAITUxaIv*Txjpn;;UR;DSyA*36g z$l!Rk8|#lY6RR+wkZ5L#BR8v`ee(7i%i`s2bvybrQs|RTU87v1>IWMW z6QeK5r$tuNw2EK&;Nw>Xz&%cQW12s<3;U0Ak{hrjF7k0SQm6L)$`Y>tqKI%97SpHYAkPQ?vf%Ej|AkV*05ukI3dR556v50l^Y7bup-&-^9`nqY zjMI-Jz!H*YkmzGAS&5iZ{$f*>XKy)QCzM_8L)s`)?_x~!-jDTN#73~mcOeVK0}*}?@ zQx`CkyFXS&@@BK_%<%%>coh-@U|5>h4lZdX*Hq{?4ho}lMJ`v@-Z@(eiql$s-TSQ| z`%IBkdB>z2zj8U>Kp>_)4QQB;9jVr-cry}FXYu5H@P9*DJ0xVXtH`nx`vf6jCsE`s zpFI*J(1(#cZlIRnPT~1CG2m9lRom2BJAB@svVOlkaP@9ldU!6i7cD3MhSz@`P*ynf z%C_;$wY~-B-_PI?ZiYLo^9L!HO*F_QG3R`S`W7C(Wl29&1>Kjs z>8LMtraN@p=1rix(fMQh8MEg2r163IjQ6@?Fg?m$e zDmy|cg4H|?=+!1goUz4{#6*AXtAdPPOPn4z(gX1=zHO*!CfMBNEZUN%PAHS20CTbg zWEussGfvdy5%{dp*%wbvEm>X`O90Rh6Rg6Q|L4j2=a~4X-74B_axB&VeclZ4XV@8^ z2E;Y`A#R!uB}@cr{;nNdKwb4q%$gR9xRE}P++?c-tYX}P*ayCYGKgC%#X}r8t;aBd zLP?@^sNX3=H2lT;z2A}#@lKw!eY=%Oojp1pR8HQyz>}dOv-yUadZZ!#(r2`k9PdKG zbfwoOlJPrg;VrhqIKlTIEQMPcMcR6BN5_X$Vvxp)-_4tyF8#Rv-x%=;rAT@L_;G_a zoC$A^HUA^v8u2u}51$^inPoW32p=vt8X(SM>^Cf;2@(*KIV?yIXxA|~ycB&XN8YN_ z!R_#?%h&xG|4#gf+~QL6yWJ-K3(4`D>0MHfnGI^XQl*cBxeGMBX)T`6=fvZV+CSe! zsq-zSa1za0$Y1heXkENwA;bamDPJPKDnTw&D~9%(QGn7-oPsdPuN zcVF32#UDAZzw<8qXL)lEybd@Ir`eOQ^URg3TL(crAWt#60q#fqr>moJ1L(MyItRym zL<@a6&?mUE*OF>lcbWzyAD}NQ;R1F_b$LA7qGMlso>AY>$*AiA!uxshxYK9{$`j76 zR7$eQn~&HIX&J$ydNTrKq!2XUMX-Vk?Vcl~XJY9zmA6XUR&%<5n=l4SOjC`uc+CfjDKgpa_?q zBf(`_%Jrw8;HKDccDxzeynIjZsa{U?2TD2m3A7W#h&$|l<478ARd!WRn)Q_WlY1~U zZiB3+L^kD-;&FtHryl+Es^9F4hi1}rye6+*t?grO+Q3O`z@u*P-haQz4glJ%+6XV5-@*(RJU}StwA25_MF9Ceba}kK zsk{e2H%j~QhZx>{*gp@^Rod=gV=b-M#7^QvgSEm$z)b)$RTB5b7GpLf(E~V8hhz0S zkl#R007>>Zi=qQm2Ey5dFvd_|g*j958x&-gCNj_v=~XsAyROGVS&v@5yOkq0nWGfS zbMkp?r}?UB9mrZC!N6dWj&eS13z3>($ENs{RbkrX=I`i3bwmj}$I=YV~mNO-&>$SqbLW%=Kw0&~69tEIAIeMmdyg7Uu6kCqS~rWg?zx-?3Js8A ze_5b>`G+Sq;}2x!4pYfZGdvB16QArin+SBpo3PfGa1%M9&bzAHo1VqQ!u7w-{AB;8 z@@UPT^ktO&1U<#p7aje&RGir!0}mLPhuks9Vp=UU6+_ttr3GPF5SZVnyWk&StVT+U z>8xrM;Tj8qLfm=E3PZ{ZBL~a|Et&+K+c}>@&ttt+5spZaPe8W8oWBV;#8aO zgIu+PQ2}V$-SZ!w%jglvl+bEP2`56+;*O}*n%0@$$nbkhNv1>T_RZdS*QD~ZJ?A|E zV*Lu4&l^qw?7S3=FFyT3)3j{e?sX4KWTWHI&$1aq`Z-JlAvbz_Nq}fk;HfEbFQw=^ zc149s9|>l{G!_|*Q_(^-WyxF7X2LUS$YhGy?Llhu@YL3WjlK1S)82&tLZB@1fIpba zKGAT8N^a221O@!Di0H}z!^2e3M8*mB-r1(iyoivFzgb0#9~O@<^u7E_NXXSx97{ne zXYl;~N`6aSQudPEsT&u5pSX=n>$caa05sxvBZyM7pA;#bohPtwxq$(R;TZ!p6LYHxBfP0R?d`$ zgwg)OTcW2_WgHJdn{nz>XWMc{snzhlyZ9x>TO8)nK~77gmeC+9WYF~p_pdNKBq&Ma zF!w+V{*sX}&5SrL*n8p7vVXZO40?Nzh~;A_^N1U2;S_b?&BEEcp;W)`y7wPU(eB#9 z;d7;bT5qtxC&{LJ&1?5Onup>JGuESr8B7X58AU6{(zSL6?*FQPE+i>>7$%M|1n59++a1^ztKXfpp?)H zkfpJhA@T%RX2qvLze9#sXx<>WA0+pE-G@^N@cC~W&piRqDuE6AOK=o4yb}RX*YyXb zrWc%td10P0U(zJcv^(^&mO5GE_>&|={XsH=1ixpG+X)6U!%aw&G??1J*L*c*Kd+~H z=Vp4t;veSVO}Y3hyNkiAQ>nK7Ez($KtzZx>T*E9bcx_$$f>j9_k4)k6Y z;!uhsxOmFHHvJKv|EgsX0ahj4_;QxeOik)wU;)ayw8)& zt`JD)8tq=F-1wZrS8~{z%fi7oTJ&N~Pj&mwm*RAG!U3rfl6c&H&^lGny<+7SjY`c>f6Gz{5LI#T*}HdCYVtyP>i02nTz^>3V(~ z20ppc5~CXuXA1snU-fhnPe>bkq(h5wNd!{J8?;*;yndP!B|`D+$2$ES-nn{+HQh;* zGT)^V<9ncOqqEyECG~`H4oy13%Ak+i%~*@LJ;-Qs0q#cp^wSu+>_W z;<<$k*;#?AWYmLz1+^h8`jT6DqYrepF`mhjf&jtrPzBwTT;8=(+8zK&ZN26qRa1Iv zJnMS_y&Ty770?q*SO7|r6rq*>y=R`sN0l3w1*GB3tH12n>3WHHM zU^@)fdSOeNFYD@79_h@Q1v>#t$7hMZ=dMlRd~y_ry5-E|TQ`$79n)O_@6*5lFsYPs zsc)&V9ly-fYIV&WQ~Pt;&dIixT&qkTIsB_7;~zxe2fMCTckzIQN!%++uUV^r7SSQy z#t8pqORsO4O-VsE=7&$|VTPg67>?UF5AanN8+U1@qFL?c#g0n+(Gm(GLOJ|Qj<>al z)5Bb3jrmI`rY-5OWhlM*-O?6aJf_PVs!Xu2DgIYOW@t(P+O5RRYWMZ+ux_(1*h}0< z8D6_REWVYv^>{eXnyYERy0lo5#kwLq{DYRbu?`=I&AAsPy*A0F)mL_L+S3|I70>%q z3kAPvcV2-r8&qU2p*eK?rSL&7D^(MuDw_9B#NmtqX`h+CO?r~eu*dDE_~mK}Ifdt@ zt60an#KCXwnVfS%QFlK}TqMDB2Ek=jqZkL#hhIiy9 z1+aR4=}7;OwrkrkWKDsxcv`zS*!WEwB*F)r2Em$QN(%WiMu&t-G4~Z?hls|xD8)Tb z_a6Rak*;v3P{XrMb32{K&tu+qFCTR8k^~$`Vd*DtyI;CJ&9N zDTg`7J9h`B7~AMiD;`PXcGZ%gnXu5K+=Iu150J`c4YCU}Q3nsr60HaQ(WF_1KAml7 zm`QyDKb&*bYYm=4ocbE5p& zpZs2k)@;7I#1=^PLZD1<8@$9X--1Iay{6gWe#nl5S%+Gzl`u6J%|Y>({B{Y*x2w;V zb*^K_aI88Bbpje)i-vLRfAHQ$pUPclg!yYY}@jUz&5JXI~GC&QE6Ggn3 zLl8W!$ql(_Bu#5EO~#R(v_pHmm(nFo?~FH8^M<}xA9ib(DyHJ|DM8x58dfkM+TB9F zU`_s=hqG~`@tRg!++R}{wyWRJ!#gnF_&)^p5ih9lr?a45G|oQ{_BL#E(2v)zI!=5u z_N$fZScnE`lem??X||0xu}>$!4jUlwdfn4UGhIiH-yTVxGtuy%iyVpHjacP05)>e` z_e0M`*-r+Hl}~=MUp=hKED6D;2yMUqSE$?F?dOBZ%|xi;qWBGHux(&tSD=^gf8aVG zd&P$JcLG812{ub9)Fm^f03bS20R$$MBFy+%)ip8& z++waxhwUq+4h{Z&?gH5B11BZd6t$+*JtVzPc4k@qxQQ*FVjRo$U!LngRruBsD)~g|-<{?Q(1mf2To#VA&2pB~ ziN5)qEsc59+`qxf8WEiG<_)snQldA*1p2=kuj0h|H0oHZ^&kYPPa|4W`bbsy4|@Zj z+vUT~{{`n$1f`t8KfcT~FuF?@6e9L1?qvyA480I7ly>_|)_0M@V;GuWrdBFhLEG;k zbC_o^k!ECobSZ{pn_z8L7d?iBGu*&b^=rlU?JTDX9mQU~;rqBlUzty7LFJ6_aIyYtzoLRW z4g9-!@y4Bq=XRSinOG6sin589FwVltc6sYRS_(ISMe+q-fe3J4vi~9s+ zNw4wpyvA#zm~}9x|25I1`mNBWr#MHw9)`2@d~Sog2tVRZiW};o{Cj8L*ocSq z<5T`fp$N}$PA7~!2XN~JFzohKwl8qZDS=Q2?7q8!H<}IZH-Kiy9zpE2_72b)so>jY zCp+ll+y3D7g>U=OATT&n-TWQkx@s@QR9{xy%4!|R!08s$?i{P$iVan$BCh9=p) zuPUCf-fati@V6EtEku=Nz7QpI!DIO)k_K<|->HD6Cb?O(>eX|y*(xR2!{ zh>SLsG!t)Hf|gegH-R5t_3^jjTkEkJc^l_Rtp~aIgP*=YMVrhP{)go*>NTua9|g)d zRZz;sJL!X$QTai)O3gGnUzAZu?-xl3-gK`D^eFU(nrtN&)Jn_GIWBq% zT%#=^7<_^bKQWMCzE1ol8Ld;OOKfJ&*h|Ru-&gcfC4GL^%TYS@???f~*H>IR(vs0^ zy|PdlN5J{4bSrr}1$J_@SHK0`V~HOS2cUkA$7_Xr+rg0(zyCKBf*u&p!TGu!{=dch zBR44C6jKJw^unC;kR-S_AV`5N1*r(OA$0W_*)1><+I@}v|EPNNXej*ef4m|oBrTTg z##XkN$T~{4qJ_#f))-UScVJV8*;pe(}>;!NX@M zQI-o?uWC$Rd&!exuWOaq9G=L7B^M|?cu?w8t;T=LkQ`^0U&>w;C0aA*`I7hGKl7VFSu?yzdvyq=2AT&LK z-%u$lzAy;+s$!aJ8F_O>jW3OBG?tC>@;(dsUo`{xT<4YoNcE^V!B*`#)0OoT=oxD+ z-K9zcl_ZAVMJ2e)7Zn*N+reK)_pXw!^0++;HB-4*dJbhXxNxIhX79jn>5eCLtLC27 zs@qoTu*5~>9nS&Uz2BbsxCd2Uk+^fmh=s8HuVEhDI#P8iz9!t6q`?X2>fDUO)CyT& z0i4Sf%SC+TA_bI;pc|^(dwaOO6>ZGU3E(Yj@E3irRSVqzyNiof{Q<%#w$rr#I8FqXC1c`vXiK5!7P;h_9J?&)e! zY_&oxD%!F$m`gDbY2Nqcg$WMyLgljP~J#|1A;8beOgq6cQ%VMvLq zCoCFw+mobXeJ~$aJ8E2rJV|Nb@RhX#-?XjMS?6pvR0TQVBDkt-)2IJgMOb!-EJk8< z!_vHpw+3m_8c88o{&fJaZ<*<$NKvp37{#08KB~Z@&3X-Qydma+_!FIz?>7_oWV2ga z^OJxu8A1?ftJFVgpBx&|7{#*kjQUker?YgiVsB9OVrRPm!*(*-koj!St3$y@jO|`$ zK>Z~G*kb6ab2A$ztC~L9aYmX3*I%bXht(byL-}}+0`tF%B%RgL*dlduZc7iSQWy(r zo7_j|bCWlUkm9{R!yxEc+hLLP7@;9)p@AKHe;1|<8Hc=d$8>9bZfdzfZpBWj+x$% z)Qv#(mqz(0vI)}W0>VD=V3&~PT7e&vNkc;Pi)Y7)n=Y4tuj5gJhrno4W3zQ7xqqyyS#&x^bNd^`W z2YDqu`PhLQ@ndoA`c&pPCM{f+M%0Lxs|yF2r|tfecMJs9KqrfjFsd9Z6~*MNm})~| z);jxFm^1C>0XiO!R8uHogpu3(`&?ATckauEPpz*KeXhRV8Hw4F4-#^S=uuexlQ+}A zjQi!OYWHa^Nx@3`^s&fhL8`U*w%R7&L4Ok>sv9oW8?Y^F1D9}cN#C?}LL+?V%J(#f z`*&kEO13!jv#c3N_ zdJ*+B__x1`sn_tL)IsYTZ>ejuwBCHR4#9Sv8sBw7k6iZqR7yr<_n!}1mNRp8v(T#Q zqNndqH7&oC{Q6Z2_7Xq}y0DOt^tEmv{D#^>k|IZk5eW9I(;_T|%I zFzmVlb*Fu57_i4n_ZqXtlc$C)^G~IEv_-$;QLvS51#r%2%YQfWG{A6M{#U@e1gE14 z>@T7Scd#Hd||M~%;J0f=9ns+4vc<5pYC8SYBlD5SZQ^`J(!+YMcJIv(_B%yD1hOvi2ZcBx|g9Rf~nO*H*n725_R1EDUyA;MX z_kfwn#NGDJ-X%$jQki8ks{h0#0p3`o(~^C@?*|rWXTyqWw-{OL8K%IX^5y}bCl0kJ zx)4P`l+0vvXUt0vPyVVVF!-BMc>A9Sne{4JqKfq@;B*c6(hPHjJy^t1-X7Yn6^H4? zu6JGj(-K1rd-R6iDC#6Z+T}!y_!i42?5Tz$t zh4qHInH|p$lPHy7j=ViptQrmzfNZ=Ke6z>HD@!fy1@$e3tHrmbzjA%nuhm8)s8Pz_ zns$*h{>!`3H~L((e`<&|_j6s3;;a|C+En#LAv8RiO!yMZ;%VXnO(|0h09=(3B9M#{SVyM^MFY8;3o4V8u*vlgSbQ%JL zoZQ;T(-M(b#z$G-8*kwt9(=jgSGi@`8fy0Ap}WkSTm5P^W+(MIDRSou*Nmg#o_E8i zu+@d939MOi1sAR8;GBnq&i|Ep*?YMOU9g&t8mKPgupXk3=kZQKP?y})$anOi*m9ivb8P>C zenonPqlTF+t@}SkK68HY*R+MY{>sBi98 z)F9w1T6`H85?x7-ln-2;Ji3uU-`lVV+ialA`Yse2SXj=mYmGG1DW#n7ik<}iD~rr^ zXQHC>+MRNcip^Sa&N=3Mj2&IBnaFcQ{Y{I3yo&}ZhmIx0)bC1~YmRsfi8`EG z^E}t3_x6mUMWrl#a3ffNf1|wv54FLdWl6igg_I)d)m2IroA2>=YE6ymv!lKr!L0m% zV%5(RmA4mcvy5fr>l}a~L`IqS>L%R^)7m zP$9DX5BCs{SR;=!6LrUH(JvdqcOzHK*v_aXn^=F3;k8ZIeoC=-* z5H?Ruj<>ep5hHAoLI4sYXS!fxreFg8z=BQV&sf*QL@{2`jft`>1$EK|}@| zawtxe8v|yLr&p0 zJ76_pE`!z|-;~0cYu=LrYXS-GRvOAoPs_$@u00u^r zb$lJ0W@Uy2aTQKm6IW77FC)XlOP|=}EioTm`=uoqiH4n08v~-EuJVjt;W4W(7lLr2 zE5)TyoveG0oV>kC`gf9nqp`Kt<5I9sPU-H@q14ZAOsWIj#nh%`wtRxV*shbdGyh_X z+KXJ`qS^8Vu)TEoEbHr!u}6#?CMJkH6BCG~D5ZHRqf@*9g$8~K7tdSQ+MW&@#jPu} z@34VZ^m%U|H=hNUp4QZ`!SdXX!u6fbR1ZqD*yplmbtxh8Q^O4kR$-VJv5Aj;P}v>p z&n2@r(m=$tZ@v}hbj~KRlw8`e?yhmphBklX%U|xFU*pzIo6xrfwJM8H@K(vB3Qiz< zX+pjsRH5(JRWp%YE8SJS58GQEZ}`F;Z^J&OQI++R4O;ysU9ZJY1~zuEAiEFK8_HZ# zeVQR(O}NqBphHn?`z|Fm#Pxs(XP6y|dv*BMDAl?e)~!2&c-W1b+}f6BREuHkzB z(3zweK~KgW@EGK8PfY04d84kb($-Ops7}44@bKGyi=xzBHS6Vef7n0;)_@!wwd5Ca z3r&u7)V3v*D)P-}JNQ>j`CJjc4rO(hQ4?FGUEo{YvdRx?#LT(ADC zsFcZfgl6j^haEB4h2B*6^$(1wRUZ2=YBas6PPlmU8lK#oN<&Dm{_&Mw{rC@*qU$Hj z6j#Ye^fCf*NXcFsOUs?3G=0FZe;o>Icwq&BU+d~SSkfE7R3BAckNj3a?px*5r6@(z zb+#xbkoAPovslIk@LIe}8X`2#FIA(hsZ$sTg{u%-S$K+C{Ax;9Dld{rDP**S-e6 zXk?4k%nrY!k-OsI1zL5`_tC$qHBw@Ah1*187KaX{2H$!nXt>_fdbHJf{v5>&LPo&E zA&>cbv2E#3JV`>;FqulyDU~g+A_ruiRvlqHhGW*2bYl9q^)~Od4Nf2PO|9)~xjqfY zcY=DCo^ky)F^!ta6Wgu@Eg&usLZY>M6mK5}I^yqYg% zuUOVsyvvVdI?dqD4k|6xx>May^{IWsm0O+4q3H^)BbG4Noi;Xeni+SMm49Hw$B=c; z!R$zQCe%C^>)G+Fw!;n<2%sNs@czoYEpfv^`bq2&)!Xx%{ z*1Gt1Qil{+q`WkeiK7aad73DVplEs_NuLX{pFPL zg++xD=xU~#=m0KH4-Y@iP0Bf~_JqCdkf2Mu+-hd2A{UQiroi!M74bAFo3ei!jccCA zPwqBHug`Xzj`_<4HC&G#sh&isz?)m4ZAx_*UFU7TfvV{$jE&piO!v@to>wrY&5D5E zfe%A&$oZ^)dr()_?DKm^cV^Cc6adk=7(zpaMludA|l=Vee zegufvMJEdg!o^PilyW|7L{3^#yC>{kYY30^cjx6kkf6fE_=8%mI{*ZWO!i=ir5CL( z+`?;GW;*Jom^a#7ZS=%zp`BAbkVJh<&>+pU(WcQA@Uv+#ToznjFXP)17x#dkAMlwY z5<3Sq9KGuDcvH>!y`%0puzx7@jd$&I7u~V$cmMJvn(*bwI(+1tZt$(mI=$D>!QbZ- zfQDkw(gz{^*s&2H3FyB?f4O)z=Xd(UJZ+`?4L|)J`i9sb{;K$?cbsMHuJ742TXdqP zem^I!;+;re{D;Bp*Cn{y?rmxoXW z6Sb?{_Cyo+FqnShnqtW*p$Y%u)8Wr#@s9}hCl4s2HGLqrKHrdRZ~o>yGo$*;vVJG->ME{ z3Ul4>ZfJ^4)h*lg%fhhc4jtsoxPa}a$06~uzPO9X{W6|z&lfOm9TDzeKXSu^j{(>( zki6jM6?xo2Z@Bb?!E;;5!DY+82`sI1`?h08=hsXu67Hq1F0f*L695rX$2cr)R|drR zes8;Jv*Z!O%^(+;C3cXO%C4|ujUzc{(>FF)ZmL9}5!tb>IAh@$aY4{DHjfOwa5*E_ z{825#-}zOvBEogGtMOhgH~4d;E(FILk~&VYa_JrUS}sXyP&9_wUQHLl{WZQ|!BUSX zqWirFBMa~(FoiXo+Jt-+5ILy$arCa9a!O6sIZ^tNDpNbEp>+n)go= zB0VDiTvy>_!;w*e;8rJYl(dYC`S=Ji%EuSV*pt{AsSzx>wZQG{@ioE7S+2ppwq04q7=cioF5O$9c=rr^0$h0*Ze zzZ*_26=6Q4M9LGv4k4yH^SrX2C1#GDvnBB`6BENF$^4pEsY;}5vzI$3cgihO3w>ai+F>VRL%ZDc6Y zIL``lOg-MwQI6r$i_&ND7m3A|m#AUIQ6X$WcrPnI)hW}l*ov$?Dc@z=&QY4cC|71TbcN* ztg1nD$bnYc%v_g~#Xm)V2CCR^ot2kqY*tT<{-c8uNW!gYoR=&at)gi#nWB`_W_=%8 z&d4^gh7?$(ZlcASLR1At01BSHzj3?J=50y})~8ZoNbCnZ7CakBLpdMmwNF9mSY&yzK{UR6E zNiDT=1@tV=M$Nmv;?$3iGLqyw_DdnLnl68jcT-{qiT}%NI^)UGCqr_}U~o|mXL#3_ z0>Cxi;086fE@ArEoCyeVj%A;)idwX^y@8Xe8cc^2VrBhvF0e z1j$Do3f*yt`^sBd{F-<P_yJ)sO8~(emNV%NHUVZ=;m5q-P$ys?5QJxz7g2X ziLbJO&;c^a6v?FV?qR^dr^es`<@Mz^$b*C4i^X!JZ6XVs(UBm2Iax|cyVu}pf=it1 zORpAG$-GZ>PWOJtV$EJ8*-9 zlBIEt56b%5v}(PNC~N|gd`g+^>`tn$fU+gj4d#vfxwl>23AdS1+&qXI)`xQYcz_Jd zZE=m0yDnmCSn<#?BaA)szqQ}~f3^SfjtMwjAiI?q7wo9jdl>w3*~1jr$<-|iLUOvr zI5${ss5pu}L*$X1*%7~ZN5tpo+g2`Vpt&Ito$D{{Xo_{N2%)QOm3~4~?Ykm1H#G%sdWaa(5E&eEW1DX6@t0a;BkfFI#KWhAgG!O+6_kH#h*N8R1?44GnzKF{n- z=*!DLhGV8Iy$?@TSrW|=YDa+e@-_`5cm0VWD+RLfqZB{Te`9zl6yLs6lB(s`^M}Zp z?_B2)IrM<=B^f#=j~%L%6ZU`T7{z&HWqX4j4w}h)H5sb><>QCdxX0~3DlKA2v*)Oz zR@!g!z1|^4$QYE=Q9!j&L0g!8uQ7zVUbjsMG>rH2l{FI2-)R&KlQ6xoBk*bd;y~I1 zNpM&A`Qxj7)&#QOwX+BHf0PSNVPp;Lx3b<+>hN?x)vJN=82#Axo($!>X+3KKtLezw z(d&SuT#9-0BUkWgpeUOkg@7h>r39m}Up^r++qY3R#WLxoad(5URAskLtJaFg3TLm( z`ZsV331c>})B!DSktgJSlX@GOia_}ZcFWm)$UK}Owxwc zBNT`m_pLnTE%zp|A5{VeNf&B@X(m%(4&y5T&|Hfz9eV%)_V%mnRZgB})zso1>)W?t z?V9R3YH?dOND`57S$>K6#;>SPfKLst2psk6JZ&&x$@z5dXgnlv^s9x@q7d-f#RhyZ z*H550qx$w53J?ZR_)WOF^QLFmF=3EZN zyB2`I_yDxvNxV3l)^&DMZ%!rK5+tF=lBKSb{QF^5upAS@xucq@=5qDyR`pb<4OqLG zo47;18~mdYwKAUPk$t81;P|ltEw-0QfEm+tMvMT*u9V;hUUI-!+syhtUw|$+Po;G_ zOo)14_LDeZiyx@+$>ayQkZy#FJnwUq@bS!RnJjbEY`bwb^}tJT-leoWPL#B$ziLB*7F{aU z{C?Il zj`|%t@n61M|MeaHOssdOObS3X8IbU}cCFT~`7UW0RO5w&xi+NXI7eNyZ&7KG<=mIQ z1=*hv+2QUb3ihIx2U~`Y99rU@QYhh5QQjyFTCe?(^og-g@pSeg4Ek<4cipi`C0@;&fEt*zijQ>|_^?0QZ;Kc?HJ|M8j9{^XcyBH-q`7;V8f?r?bAi35mhfJU9 z1JZ!*qVuGJs9|%gtpk=u=T#&U$Z(RL_?%CJr2DVi`Ys^_F+{ zE5}mD-2@c+C9?V@SED>jppJV8!v3LOH(4dgMaL+E`6xGJMVkPiUF<$((q<6eP@1Pb&Ni# zrof-&#bTE2dyXn}ul0vLVEp-xBUqFWBaBWRp1XXEr}|toNz08LHMfq$UcNu2T^6jN zujz1&3-jXN37C!wB)M~Sfjw}n0~WfoS6~Eyzb4;%KhxXuZTZriI!)w9+gvcOs@YvGVj8^WQBf8(C0vlu91XT(WuHecWgru1 zoh#$TSrXp`4LBRzckzb_rmUG-(VoS3RA&HQ2>&mBT(2a|Btx!L@Yqvs|Gc zZ?ywm$7&52UJQw24 z-k5OsA!lQJigCC!rC#0;(W^yAo06Lz<4eTYey;6WHXXW>*aJA3kE2$NI?{!_@0Tns zXA?a3$>jX{Kjh${v))}060~uvzaJLD#>vSkc?|@dR_2#|@hdTMF<~0?s0Y-}Oj<`I zt#s5@xB!xKzth=A(hM)IPaof0Rv}D}Oby#L2B!<6m{U)$#GeDJtclVuLa=u3XXlOX zl+2pSHh^8cQ(8$OB{5$8(AFUfi->wG`}d4={Jc;9og?Hy$>(}dG0`Qx+tn(mA@bX! zk2ZrYfBCjzY~Xx>%cj}Ze14?<%{7!bDV;s`cADdbWiyH_gm07&ZO#^C)##A?fgW@- zPMS?3vR+7WM02Qm=yN{8q*{BuD#-yH-Fu0(G-#fbDoL_1168%{5JO7l@o-mLgqX|8J zI=58Vej1%782ZRj3V*#Tg=QD(dAisw+J)}=eO?=tU3c{W>Ld30hdgb~j7ThFuskhN z{>1Um)T6u?X|F)|n2;=^gxvF=`Ead!YH%ZcpDQiCdHX&1O6?ou0*IAMKzZRpJ7+JM zGzwObE8_bg|APV*`%pmlSgg?hpaAAJ9W*w3P*ZS{l4quiHF2s4_&JyQgy0a_R5g8G zXCScLd6%sS-U~4ce1*x%=~$K~00ZNAS!!7_GDIeDR5{DenX--tmQnnvciMdPRD{WV z=Qs&dK{Em^thRhF=FcW^rPx*cN|;<0@Wtv+vJyv-lWIO97F1b-V{mfqlDav_aOgyu z>&?=~cnnnSPszzQzRc9I%KxFXV%3em6Hg7-e=7Ri`nfV{tr6b7*)J^7Yq0K8JSI=C z+9g8eTmz6=q)j_ncSMc`!$e^L_j!X`1--r%xMtZ}$Hm-)M{jgjvg1T3ZT*>?tLB@Z zXe}#5|6WHUu>SCSaV73y0|030WcG?4ljFTj64O8t-aUR>K5=1N{p2X>V;^TT8mc_z(EoQOLo;|zGlIjtMcMc+Vu3FepR^`HnJx}yxyU_WRix^x7vv^V+ zKZ}v&44z#zep8awT>e6WtdaTfT-L2C_@!U6S|3cj9mO9<4^8+w0W?P|~$g85^?KSJ*SyLM~(k+8sMo2)O1@-`&Q82kIe zU`2bm-ph*T>8ZG~gS-z*5IMp9I|3nJ)!A(DM&x$!`#^0TFil3}p#Qq7+_K;Lp7*@W zl9gu}O!L2xvjy)qDRhEpBU01!%S)VCEW&s?!p=kuM3HJ4-Z##|RZC>$b1-O!W8v37yh9T%DXx1iH>EBd>MmY@FCB#R8xj#1rLZ$K>r39B{(gDr0F_-EUt|uY=Jp zbk<9oi1Qf-&)o>8IAxC3DklD98eSL4k^iEKNAq9MYy*7t#SeNf4ES|MexU%_P_#1I zr8rDPd#~3TVrvp=Sbdx?1{G8~6{$SWonMn49wEZ)GF?tKK9l8Sby_>iOJt+I;B9gd zWl?k&xI?hTRV?apZ8~*N*o=R0cKMZOc}c7-M!5|hu69Uin^&8hP~^TE%;KC#OILP| z$&@RDhy7QUMtGm=j!C<|L7o-wJ*RmnkeNG%hv@GnO?n+Wd7Rnw!*+ZXcQq^n_xL0o zwkCR^89(Cq_v!KrEgq7Nwrm!&%x*EVZx72Bmx_@6A=Tnr@XxMm`> zYZNIp1|M3CUU&Rbaw(K8#(jo&=rYTedw2QMQuMsBhw-gfbq-0941$Wb=z=+8L!G7k z@3^)G^e3bvgN2kbl z@VeH>00A~#}T*GJqXMX^?OsU7BF6du9% zMTYuaDQY}@;DaUc+vF$Q-s!c`8<*^8p{jHZb$f-E)9O;2}sK3W1E8 zZ*4kQU*CTUpd)|>Fu8V`TW+&mD*FY4*`iqjY|HFbNUK&m*e3)Ln*Kx6BOjg>P^MlA zkkl<&pK;M;Pxi$&yO#CpTlPnp(&ydkH-cqcG&4ek+8y#Qb@Z+p>|=<<_C9h`hlgmd zAXhOyp$iPeZW6tpvD@;!o*@>P@)}Wjqn~`k{d*!EC0Wj_$MrYWN?I*;dAmzOW}qAtnix3y&ZKYSkx4nWTXI{Oj{J^kSo5b!VPvi(!t>0`wGG` zek}7|=)%SiI4qQ9{CI?sJwx_Ew-^xO08{XF)a4wt!~_g9!EZCGxBd8Y-(H*~2Q*Fu zY`?ovahN@U!E`ufx;TkdTr8v2-fINvHl%AZRtesb)kM;**`Gu9&OG-6ySC0Nc<}8d zIax3gVErWrMscy)&reth%0^W`?BquRel#D&^FU+RAQjORVlCY#3EOC!Z#n4Y~OsR;2c4&t`ycL>Z z02zixX=2L-4s^~sv?HVHAn?6~oV5XqWSKTFQ_?UQ^yGW3EixUDqO?5X+P^q1?TJ|L zrDMbCx=Vq`cVQI^Pvw9k1bm<}D?BJxP4#i%&-T^_!bc$C9IFErRkJkr!yVy&zX$vp z+&rjAJ~UxYj&?y9`YoV)so&RLxvpi-RQ0sT{45zgxS@>zV_1k?Y@p9ngMIr(0vOzr za%$|r2!JKno%4#9o7S?eBI@t$CZ+g!6pu+^K>V1YTt1r4Jwv{Bw1P{;TWa8Six1R3P}Ds&y#K#L!{uAc;Y|2f%reX0g{q{d}%>W_V92M>}_q- zwB+P5^VauJkC#Ojc<7_Dkf>4nbG%U_akddk8nJC&L+ z8pq35Q9;&|a6Sz(s8Xxa>y0|4?^Zry87sW(*DubQQF{+yFf-CSno6T`iPm(7S-Mv2 zOe@B1DP-31zAM@hOVvDb6zjM6VM%`cbPkh#`x@qy^A|5_4sq?^;pdtP|0-~AfXI_q zMiT8k$D1Qiyilx`q+8>QS=<&YZ4TwQX?gLjed@3cB0D4kFb_7 zI)l3_V;XxG87eZ>=pNGXhcr}EhYN4jCwuWM9s&u?o*Q-RkQnv8 z7_ge=PV=1whlD)e35+)YWt1Z@bV}mHO_N5gQ%AqU_ZuH{&ff0|Q}L(9TmCE`JrLQS zLU#Hw;#Yw%TEm?*Hy>+f*TV5EeriC*h6!>=aaeQc7g0@L#%gfRSm@+*@yfi9c;^(} zH3}?Zq*KATlQ6AA(oSU$j^b~>jT`yYKkswl_K1)3i=41Ge$HSZkTX`TxHzv2A$xMu znI1kHex2KN#?K7S}7=T&OGp9yzfj^dx zebw(+r66>gNZf{ZBv)aJdyy5a?SSAw(bOSit7X#IKUtv+G|qN%C*LR`%`hvCW1y%g3n661Nk z0Ws1b>&wa4EuFE?v9aZWG80$0673XeyBuP0}^n|DY~NyktziTx4xfiUrUm`yRR?k47j7Ac2Ye7!?)AXST$Z{YvOV_mvN`h)} z#(V)djVs-U)%Ye|d3hP%?tlXafO^w$(R*dbE?;$#Nd~B@{+se+Ft&7}^#0WC$CEPv zJP?cJX@Ypaz_=4n2)<#duFD%b@#X2;C9ZV8~eyX?x+)E zF|NgOD*3{AkDRnKhhGl%fO@6H@7VuMddMEBGPk`AWLA{h{U`N<(_BYmm6X-6G>j~z z?fHO*RX_;GQMj{a-pVQVfJ&eHPzaKeCg@ju2Vr>r$AVdmRsJS}3gStmshk+G&woQxKGHCUzR zC6G{47L<40%{HUbRYbFV_r@;xB3pkG>DT^K^Voek@^5HD5nJa9S+xD z1k+QsO^IE}1+gNL)vp*P6uuJUW1bx@%03&1IAip4{7%@!>LO5Z<#tKl@T_CoSP?3~{Z(eL41j73X%Dmx1{9-NT!b zy~rVU>0zs3_%}$ema>>yzbe&g$iMPwC3@auX)XFtpF<-f*q5VcZFyyNyIyao1zEXz zqG&`^Z-88Zn?H__`qq8k#*7OBd~eTFz{%y|C^bG;((soR__(zcZ~= zER>%8M)^|#!bJ{TaoRH1O3X?aD3&{wJDIr^t;b?SxDT7@e@Xw4s;G4o(U~?nq{L=p z=h)T&h#pivv{Raj2Y4MZB4;tuDFIe$o&xuVPvC`O3U~G1t}cX9e-xU>t`$!Wb6Lzy z&VGAS8LSce2leN7c^w{m@&CvGmCeIl9qna?>J6eD&e;`;fr~${D#1%;yY?q|+5lx| z4K315deyJ1kt);2*Z`Lg=<_~Wb{-uNHKm)r4f*pvBC|L`<#;Zonl&JqrdN-qJ@_n; zKC3oJlW9rflj1hPhh2H0fI&_(mn{Zyt@J9+J#lFd+;sVxc}5qPXY8--U2Cx>hEe^X zG^v(B{kfQKHyLz)OPxC-x8+IK)6_a^KL0Ts z{Ue)my#Cu8Q^l0H%(+>^_qRZxaT=&$5Lb<{#G-2tXE zCn-fczWW=rs(MQi4Wt^d)Q5YTa=Ho7EWsc4tz@!wxon@-c#OSFaEx{Z+S`3o8-`|^ z0;>IFnvdYuHn`qSf7$-o&rx*ALH@0de$p{H%zJ zmvJ=chu`i|BGkbbci!U(qDQC{x`j9P6}!;J2AwoX4G_kJY|9_*M1Kh?+x}zTEYNnP z`Q7Cs7EuKSSEq&ep-Gx!&jHE?`0ZbmT?0_|kw_pX7_1JKb^fv4k*KE~u0{G@-Bn@~ z9dPB-ew5MNkPCIR|B4gPb~ca9YCAtTpT2s@6Te zfG$xR7e0mzJ>2#-kmC+{&f!_oz`$pGoHW1*yiE}jIu{PTzeE)~Js}ScH#+zz8I{kJt;QGNw$u{3M#zBG?aZ{b*qd06m7K<9TcgoGI;NXe%UEf~2 z=m>FjI|h1DH!F}CF)9bZ^c=P5ttC17=XqLk0~su|$uV(|z2+0r{fXYBUrJtt`em&QLLJklhhLO^1oonq%lbik|Cgno?Su1agXK zG~-;3TYP<+BJfJp2xv`5{8VN?Ii?h0#*n)|a!jSiUR|-J|APndHM!2z{s32yP;tdq zKF8wpUO6U}P{OITqKvKoOKYtr;@eMNfs1k+Xb)CyOM3CotGT$RgI!(a6-zx1yR|Nwp8$rJuEl$v1wcQu`4dW(Dw4o6>BvmyA(J$misaFT!0J0KR z;{Ft;r)YJvJ|-P`H$~)~hMZ9wBES0+;BJ~=ep0Bd!tVMy9|>jQcG{>3zE(W%RfKue z-qX+vU_fd2`xfVrt$$&_GDuz#E%s;pS-ioLK;5InbcSy)oA2YVZ*sDm6&4c0^O>7at`$PN>O~|&da?l?^d8WVXbtNTLl_gX7v@H42+SP27bP* z!%Y0tc7qc~T6LTinle14dk>~M%pSWQzpwJR_x}+ihkyOQ;y-`^Ig8nbCC2^uTnL3L zro^knbg@ANq0eLVnqjFMHg`cAQ6m+6F!tBhOht!t&ZWPdY}&`_LIo;-Vc*71w8ycS zzy|q@H;5%r%2V9I+LI6h2Yo8sz8D>hv$})&qM0#l^fvaEd2kozyE9F8_So*1B3HDF zzl`Yu=hC$cj*T1rsQ@FK)mV)5JkkfrN|*%8n$Ji?Pe`$x+L>{y_ZYO0xmoM(Jb#T5 zSlC4Br+C<3T!f4O_NaTnBj_bq=8F#T+hx&g>!H^K7Pq$W0tEnaT5 zH<$SOS+06`ud@`qamAWr4ODapPdC5T{cmm!6>@=Y2GlY&-&?1tVU9 zy@xM#8+QZME;?B|V6)B`Ni+0}HI9|7VONR0O=&aqETmcS<+02L2_&7H#VTzCtKerv zm&L~N9D{|djas33S!xQh)X{pO!w1%}E#+DT!_b>$#|_M-U0&ZQC$6de--Lh`U@#9} z(TJZ(2v(7Wexj7bEZTreg49}K34)O87}7AT&81|0YkS0h#qn`(-pF|M!sIkekVXr@gh6rp);9Mz1ptVLl7fcH^Dt9 zd26hBYnBc0LwPfGoXrL7n#C}9%;tV^lWIN%Z+SxG*y|{wV{?o`A;+;dN2RpPV~=Bo!@)`F z*sFs>_RbN0cc0Ju^Zx$+Jdg9=>-D$;xTbFlNFr+WY;@=6`V!{SDS^Vbtfyc|Ci z{Scb$?KT!l{hf85xTxmoB&tD%W> zG)G43Z9U8|e8bdd*xQBQQR9r)T76daWBXeo53WimC!49GBe8j{!Z6M&&c6=3+|Tq> zEs|s^G4?H#?j1w2n3|e-zuD61g6c?eGDzvK!0)^{7Mp zfDc&%9D4yFpgCGN@;}m!^MKx21)LU+i%nugXL(XX6Q!P%1gmgPa>N&2oNtslA=XNa z-O;?q)#W}WUgouY^`b&R5ZCDWU!y$zxuD+YJ-PA@i5=QLaA#3*g4J6r4MziFS2A)P zB;^#-`xaI4FwpLU?r4Hf%*}KN7Z_k3C|DXC#F`Ot6E*8_bhTeugDi9k#u2bzor1lDB~07 zs8FX656tSFJePUh(Cj{Ob*SoY%n*jP52iD}RubeMj=QxYUfjW4%Ypl0mV zfd!|G@LO##6}kj@-tzC@449#!AS?gyGmuiCMPmYWoCjQ43X(xYpKGA|)w#d7<4gaa zMYAp-oiQ822-N~u;CB&eRux=-XsbKDupx0m>|UI9W!VM zzUk~Zvu)(ryJ9OzE{fw%S`fFqM`-Wawz;61-0q=`bhzZ^;z%TI;t%FHPi`p(F8$@reyn4xUFYdaI{O1jCpC+B4pxY8a)<|e55q}Dhuor0pFw5IQ)SycYvYz^ zdMUeSP<=1ekiH&8E|q$peTVhqo$+#Ep9hk9^Ojzzj?UHo-+M3?40`{n%VJ(peGk*4 zfm^NZyrb+Z>i>ALT**DSBh*HwV@FD{FMVs_Bk`-`|x4dNOgQv;@6|F~`~PVszxcDZ6n|u=iFbbT03w zl-p=$w0kUEOm%ete#~!px9yqphrO12_>=*dKVLLh%6Rq34e1D9U<8wVRIXKfvh9Yv ze$~mobPz>&dSLX*V-wyHR)&1!g?6=l3si@ zbPP`yybTfo2?|_1DfpNplF{=l=E|N8Yn4SuXn_JFRCSbi=5G9wcS`=_qrxV>=GL$l zHQBbw<`X++otC#^`P2c6`L&6e#cp9dN(hH9?^X=SE4rd~y+LaAYd24N*+>%}zc^o8 zv3l`hbYWqDRokPokAvUIVwGwc_sov|yJBV&tnBY-aKY`pB3x~NR&F+l75 z%fc|7Rv5Uwd%vavvXcHnpR6dwt^F#m|H@dbo5W->0<=%;dLNU-|K_KP&%g=Qi-B3@ zgT`>G;xBJ>P(=r!y;M&L_puc3l^Ml(fh(%hCeVNBS=$?C1e!D`&@&r`d*lrZFg9dfG=cIi@QXql&AE=@FZ)PvUPZvxfG1Bp9TFkzz6 za}~s;|C%aXef#7kuK#1WAoOwpeUvvV~dls41J!^rR+}n1SjpURhH-@pZs9LvG6*~sY~KG9|jIa#fR$!jgM z{NIwdl|%cD|Cy{m;-~tRA}98EVpjH4g7mhGVNddVA2!m-qlaSB!UXffx{G<&IHiG+ z4%+tgfuQ)4$*ts4$9SjH;|ogE$PD*}f)Hz<2BX^0NZV#kFIw(xfAw^!w4rstP!B9& zRB?$7Ym7F*DRXrL4WZXHl~>VM{3Y~VNQ0rvbxuGhaO0dgByGo&95_QhTth{Xf}8#p z;(&N@;%_Q!Q4G*dxM<1Oe1Nb|`R}54%n&H^+t>*;c_I0J9)GP9{^C>l)xjz>6JUq< zF1S8;dOOW)(C%$*usw2iboe(ZKrr`){HaX$O$@T;VUn9N=fQZrzu3+6$5|QTQsEc$ z`MTu3YkOWo$bL|0;W3VSH#Y3TuK!s@P*G^UD6Z*U_T}|YHwewJ$Xc7^qBbX6U|!W7 zp+rJT-|}4?W3PTH?*JvIFU)jRl5Q%2+N*w3=h)L*cQ3Mw?d7BEG2fQieH2SueE}(@ z+Tf7oA9mjBCpKgBF^!yeTqC%mG8OzPH11e;k7p-Wnq4c!X#Tn5wU$olP)hmS08P_^{cH_P_ z6=u9*0p16h3#K=%PPK~u0hXYr|0Bjl5Oz$bX$TGd9@11()`$#!&Y8* zS4-)ql+uYGJP)_k;Q$aHnr~5b60;B^X*cT>6jWOp_uSoKYwm<>8!iw#ZO0r@w0<_l z9o29)#mX^KI@YTK+fnJESgl}^lQ;ztz9{p_Ifyx*)WPjrE(|I&ygd|d&4~Wqs*U;Q`mv&2d8(CHrHDjlu6l~a z6epHF(@|s9Ef(v65wOtmDi>0*bCqlvD=QiI((_h`S=Et_ZR^i0?Lrlc`K`>B^q&`I zHpJiKZ^CKoHShXAuwZnOh+a5l7b9+}tzRhFHG?mIX`8rrB2`^7cepRwbIGFDm8qGSO$#E+P=Bze5CuJ|b zza|La^Uq#v5FS%`7RrhqxHj2%s3{3f`hWHpBl>_m-d8?5DwlA5x8o70w#PxWMPUYT zPL?na2lEQPKIcIn`hcZ(E6j6PjZHdxoq|{oW@aM4q%m6f9YT|Vv-3WaFZ2cTs>7H0 z-YT>1asJt1D~r5wO-*}{pp#H-u25sNYC&7CtLS!5a#@|yqx+!e=il3ov!b)H0I_ZHK8fUzy4TcU~1bjE3>iqyNA zYx$*tlAMa9X8lG&c}r0Pl%7Epclj<3dhNpV6mToL(-dmv(9`KgmllHPL zUf5V(VzBmfEj%0P&hh4~o{^IOl2N{IKl9U?D-PKbpS2QrJONamo66%5DVI>@;qzg_ zDz?X6)L-AFqQ7sx;MShFeevpa)>VCN;p`5Sz$zbPs8$=D|Evd{YNK1Ln8t?wohh5| zb5i0o305@A#XG3Ehq;0#7dlov98$TCg5KVcMJ4nmw!ImAHWNq0JE-&Kf8C5#RbY|) zhkkW)njf^FQLngfZJCS;!j?Z`)&-7_TfnZnO}5rV$i3i()d`OjzvdNuP;_T;7N@dh zFKv6F`-~~?mR{x%2t6l1n308~cnd2Y0y=Grm7RjNL zl^>t7_uI+J=)ql2)z40!x)7$RK5ubXP48FIZGJfUX$)9SkQIT))L|$C%4iM04F$gu zZu)&dka~^W$lEt``k)xd>ra4Y^R32T(Bg0&SV%^9SF49meS*L%XbQGC+N0z}g&plr zy3l5^;)Hj7h~5XzlFhx52|tI#a^qM7YlfS>LC}g}{KQjj!G?sLI;~(g{S!RM*Ra`V zSsHY1<6Bk|0xy4lR}M7JDU7PCM)YmnWhD!79&}@gy7b=H?`-+rPi7t;#Dt(<6gwv< zoA<&u88rjnoo>7c{KS-KFDPe|hu|yYL`Alsj%oA!+!o8bt?S>X&!6e+^n)1LSF40_Xv-Z?l`Ga={nI%2hO0a;U=*6UQ3v}hxDYpqGV!x@v?za(H=LF z`bHqJDCCVz>Yam?BKhpXT_u6$_TAW7VkVJoHpb&;1c@>-8AlQCV!Wc}weByAGyj&g zvr4G^@UoESvwn4~c&xtNyeJu+>Q|kH(B(4&TZrB1t*WVSibVZ(=*4-~ZJI@UeWOUE z=;VZ@Wb4BA;$RdAyJV?K^CY&$8tiWp)tLee|LRF5Tr`r&h2QJ>F80E6%Nf1K_vb(v z{@lwxDkx*2S3nM^72!0(A$rcQ^Oj!An@P2J`9>e<)Xip8kVe*Sw0zs(e9W9G(`uzH z2xl}4o`}HPQCO6UyF9EI=n;l#7jdR9-lc}{9E-b4c+yU>R#j0;C$YzQyChhwMqXRe zrPME)3pTw|Pb^ECBxh{mz4g)WvK0mq9M9|ed`_$^Rj7_meE4@9TWsb|m^V2;?25#L zdB9t?DzOqXi=02nVCDI$Y5NW|`%+5>WdA%RXjL4G%sgwfwfl$W19_V4TtCbC2E>D^ zjv}Bg^~q#1$KP|I9)!Wa3>Wz_*r_J6QCLw}-}rue0q{rO*e+&>j-R6zshQ{(4Dx)t zc3NsJ+EXHmdD9|Hd}1HO5tz=7Fh#Y!DO3>{m-!r`pL!qM5PQ8R%{y>%Du8ewx%iOy z%f13tZ&w1Ga=;1csNH|X>Qw_jaUfn(d5-~^+B$TiB)GogBcb{T*mWwR`@htoB?mhD zSwE(U*x9bJwGWPThR)iQcv~y$>i)8?3al_rv=)dx?;huw;Uo~rDg1fKNcd-e_ZnJ0 z)J93r&=sj8;Ne{n=OoXDQDlY z$LEU}ov&XzOS7RU4EvVLO}6~NRO~!HP#3VvE`zxen`zP_@PQq>is!g+7GL}$R{u(K z@^Si;;r|C1O?T{?){iikFF!NRY3)F4`Lgc%j6RC6Y&oWJx21LP>EOvPQa26+Nw`yf zVUXXUz~I+>?_$C+1wF(s^=3GG?@bZPbwHcS%P8qCO@8=U0~kf@V&B#_t_Zy~_o|po zh)aeOg_m9#%$a?kos#&u-&XJKyLm0V+lnM_B67dW7iueV-=5*_mdv8kQbT9;<82*y zm|_MocWpJXq7(4L4Osjx(S4{pETVP|5dd875k&S*s0ah z^}HnG{dlfwl#F5MXLu=Nb*jd2a!4Pe3C`w)V0E-_Bx|jQYIZCt|LHSD9#zeZ;`SL` zjT59H(5UwB+oMnFTe(1mt6Bfzc2(>XDs)pF+zo$S?*RV;-ZFtKls*0O4lLN{0(1}E zqXDgYsjVuzWYG=XQ)6Ad8X!M_UfE+uEv@78rcRE#K{Gv%V-T~WU-1Cs-p6q@cRHx4 zP(u@(q9_GwudgzU3k*p>opPhER|nhc^|h%mmUou*)TP@+2;yepOQPdw2=v?7#=BpT z9g>y4q|L=6DQe`fVo0&CrtS3$bBYS&{ZOYZok6c*)%9MaQ{b25_#>96udohlMHHwU z$T0#~W$z}bSEnF&mm@+S0>X~W%NtBA1( z4SU?JwvSJ^E;3hRuH;-HZCjF{Er5VU5N%bHB4kb}vM+J!lxnje(>(moqqDU!x>$I0 zwrHW-^uI@=m__?d-f7ueKKdT3Aq@(a-PY0<@Hv&n<$h8Ok|OfXBf=tHn)~XvicQ>s zw-!}e{e+tS{ep1@X?zY$Fz~Cx6YabCo?`l0u}zYR-?15DLFS8)5NH?=`bXw8Dta)a zADXFLrWZDqp@eSKgGz1;SU%9+Hn)CvAD-*xm6PhryKUz7(It_kEp$g+mH;;sWQ84n>UeoC5bz?DcB!LNwFx`Q5!Q2WRBJs_ z&pdi;4dL3~F&C_vaB`v2S+Gz1z9tdQ5r5jb&dc;-@-Riq0|cnCOV^}@vbv_kF#bIh z(uSd8G#-w|T+}D6Bu!v`tMLE9a_6TGra?(20$cvb+#erpn-c zU|&GlijaG%=JWZ}XMe-sJ=2oS3CK#T+*TR_E@3ax5PCr615O2DtpKaIc&E1oXm)s_Kj$ zQ$O7)jlvR{Cd?tBa;LZB?AX(J#K*;J^IJ~3AF@!)H$rTxOgb%=;FJC2lw{ zw5uW@%uB2mLw7dy(!3OW*YIwOAwgA-q<0iOzNC>l0a9V{Ms)%93QxNUa|_|xLA(?S z1Ezr~^>Pf>UAmJ$UfzXcFQ`@ia9TFIbd)zM_MNH}TBptAo!I45?gX(t^SLKR&D8J@ zd5q+6B+eNhI@dN`dUdf6+t;s-dSIw~FftO)BUJGE2zMOfwCBq1&jh>%0U2$V(c>LT zrHuz%LW9rwzj8M;fg$1juf*mcHR-XNdwwBfu*PwqwFQ%d)b&#bLchRC*aZ;kPJ5BU zJ-}cF-sUJVBIxppYAoyW{dXR*Wp#%e<_`>?Z}sq zC9+BL11y*W#&SI$9ZC3L+=|c%%y?x3W#m!z3FE8~5a~tEg6<$+TqXYIXbx34VE>RO z++4K17PuV*rQHLzv-6vUb)@WiMcZmj=@16P~o$U9l~kxl8*101XN z#h)KRct51NUlbCy@T!m^WiLLs^yAPWm}iTX5GCPVuJ%Z^qx%!6ps9$?eN%RS;iz$5 ziG@R;h~fgC5FqQp4uBl0-9=!S^KyVaO_niEW_7;mx%*A-|L7@i_ za5tIGu*cpTuwA3-!=7@UWVr=r{^iB3KQ<+-NzEeHh6;~0_f(8)45Ks7VUdt=@2 z7lqy^DpGjrJ}`VKbIhchdld%BX3h-a`XG-bc{|Zji=32;-#b5ajA6U#nse9jxhfM> zH@{6_XxRHxZR|d(W(W0vA+5}fTP(1LO{IAJVhg&{srM>%B3S48JVG3~Dt_+Ez&Ixb z<=embK{?;se-YMM=XDMc3dppALmqZ zB)ws)L;N7yCa_^ma;%g6W;NO7_LFHR_zUDto~-TlZacMQl7sEUGaPsO)|l6xUrfy}(aFRA z$TQ9ZBA^ZJNM6`s;2IDH$W@8nz_WdpqPh-elhP6+u!)IhW8Ga#d+xa9NV5i#?o5ni z$Uv-t-q=@c#Dq|$hx{&5j{qLEtO9+p9;vVSO%{u_Z(aKJh#A|(%AM_KZU->DD*j04 zzSF}Djz6yLVT6WK6J2_(+0p4qArpB2)a_cWVM-6a_k1}$C0vDfuwo9Si~?ShnH0M| z8k*O|I#b#TetvJqmpTsbaV7lIAnitTPR1GrRtYX->wr&@izGH!m&fM@bK9$evFNy0 zh_`q`qjVFhJ7WBD$j+}}gGsA$i{9qH<%THX5OZvVBl*#rU|;o(aXgpcxcWSfZ(IP& z9TSxHd`0Nx)l3jHyjxLXxW{3r&i#Ai1J}0Ay^wz7g}@sH3&aXYmyGw=hG z^S%wd6SEj-cXc_>xw`w$2Wft$5vpaULOz3?GeJ)}7lC>9;FETvv_&MFK!>jjaI862 zNT-5R>Sqqhc#Nj#MH6cKc;e-+VGAbcDysy0aQD=yL2irU@UbyV&g-Ur)|0!@o+Ptd zb9R?LRWp-}Kd@w$bom$=>7!4?v24?MONjAlAVSTge1eU1<^P;d_pkQR0N^|wqt@EAGkw7MEIvG1X~Bn?NqQFc%Qn=Gp$0fPmPxp8@s){PsZ z(!8|nM(UGqCtFeop&o3BB_aGaPaB1&w}S<%E6;E3ml7}BLRi4|v(}EU<4*LCKWV&Z zbz@a~m^^>vn0JeG1n;W&6AzKs{Nk2rgS@?!Z|T)wnoZ4WeBT-C$#yV;T5@TGCqAQ$ zbaL-CNPM#v`B=u3viCESXcN3IzSvNC2x>RfZWb1&;5ornib686dM!GS$(`;1O>M|m zUBoBT-sj6#PmDM3Gc1NpL?Ff4%X9(wp*_8QX8lc*Ph^HLsR$x2{!N_!hc8JfR0cWg z90cAeG60>;GX~J^@zKAdx7Y<3JRcZ4_4(d<{Xv(>!!OfH%JQN@ihIt)TNkI$r=#z= z=d}_G(BD6YIzDPq=uQSNJs#j3|(wM;t&U_-Y&PEB$RA zS<0w1cfS<1hF)CRkDoeNg5edPp2{(twk*$m0r$Ib2gsZLcU~emMf%^{?a1a3io1$u zD-oM^=X*>Z|0uNX2`9!ZH*9ojHPYp{EzoRY8>60wwOx71N~>5*`D5kk0FDW{tv_h% z)UqtQJ5OL$vFQtC8DY&V@>u>jiuZ-h9q*`8pG(h1jkSGAAw+fp&?p z>WSBn(+6HacS--GBk4^2lnpR2cmKQQ>8@sIa4rAO;NbtNMy5G*{-*n)jHSo@bGm&+ zbT>YW*Yl9IuUclyjtxzp`u=M?UjY#m@hjCj{j6t7yQG8f^^Zd3mA*PE$a5*fbPE#3 zg$8JOS8+04U|@Uyq9*g?GkDHat#Ckp!nfVoWAuK6SH6rx?IBQgX~ywMPpF7@;Y_Ai z?v1E5OC2M>(Shf2m8dYI_mL6p+@)pJ_^ z983af$D{8|z$Y%&c#at@^ly5nmrWKyR<+WfOBGOtk{1*AM?@Td>zFpOorUH(zawPn zIl1MfU>D8QghS8}r?Y~yKwa)vSMpvbH=w_OhAjE4i>$fZ+`Hl0Y z^Z_}9m4!&L+84x#Lq}oHSRJg5=WCvG|9 zcRwfSwm$!P%^|TcwQV;9XyK;|Q*`E-rixNMt8agp*TX`A1{QJvqs1}<7*OBVTXhgS zbn2wD>qhRv>*;NLqG9cXkB(E_paOJc<|X>-z%||y=b#S3G_RYG9|Abzf(Mpo7*kUx z($-(a1fI0SgnVWu;1TlYXlTE%43MWMhOxvL!w;7J8nL*BW$QV{y+g1A)PIPL+kZ(OP+!kiM-lQt3>f@?+m8%c&ua+9mu% z;=i_Jmn3-=8sOO*R;)MPm~0IxvF!ECxr`#5w_cK7&e2w_UaFVhToE7T4Y|M>%*4WS zcpj>|e_QXui4dbi+YZ9bPH)3s$}_?9@fX6fnNbNlu@7ytm|dBZNP3a7O3L&)PL`p! zxyAV!Z!Eu0Df2QURBWLjUHxW+KjDzR&m#*DxZBr%s&ssM=OtNJs+8%yiV^N18h3CX zv2u&|J)2JJuJN2rsq(T!lE=W=RqEFVMhPHzdp{2-QiTASOZV?~a=j0jTXh1%>hwJ|i|2*!G_vUgmB1-v***v-OJ=Y zodd!xkm(m`nEVdz__C_m%J*I$YnAzEEnHq?YEXi_JaWH07*$KGoAx0!>XeOu$5t--J@I=m+84vh9ds zOrFq3oVY*xX9XOLnj66r3t2(;T+SrUuo3kYCP)QVKDW}`baPpCSTVZH_@48(FSIde z-sMEP(uEuBdPe^JTKP^<5X)M$)GdQ^`n+z1z651>3j?#brqA8#iS^ffWOxB*xw?L{ zMdQG(--(q!egB(QFP802ETd?*JQ#>rsif5x=dxU363x-Wj2X*)-{>$znIpHI7US`pZDyA}QsS2W!(=j&?Orcb2U>}81Or3!zC=3QpE26zRtZLqy- z*B|!IVcq@o(I^6yeVc6#{(b&qj_4v%&AdpYSfEb(5Z0jZQ=cU;2yhR%!}={g`Z8o7 z`jWn1ACeO%qrcQW=&xH`=Gk)BSnlbm5sNGm{#k0LV?EWqN zCWfiyprbGGn7a0kQbS&T@S-Xr_e#j>y>g<0a{E|qx_KQmpEy4jb1u7l2^dQLSN3`L zD&I>jrpOuW`+nO8On@yye17xvY=Q(I zaZx*8RAgZM>S<>rxzb2~v1ryc3A4vj9$9yay16xCP`s^jVeh0sCW#`7r$V*msZfcZ zD!*bU2KKE8?QVr9J_&cWs~2|mJTl1w?t>#EtVFs!1L9`1Y_#I(Q}JzzKodYZ9YTwO z{aW}BCMgxSFIH$wt2}jZc~@QCEQap0pw1~^;0?{G3$Aa3Yx`~g&!Xhxm zL1@(#{lm_ti=MX;dT^g>)}_49**Zl8vSzj4C}8`00>mwKsR06cTbm{xUb=`( zN9guQl8eipmyd)?a9M9_G^v6~K4Rz|q!rLF7nu7;kGPmqJ$I>jZs2Jm-FO9XZ)x@2 z(v2IfJ!!YtV()fJdB)Rr_QqX?ekkvs#38F+3V$D-=ds5u0EdXqUWL(=uClag=E z@BwPg>oUyw9vddUk=ff@wa`6(x#))*+0rq;**pG*$1)Z~fmwk`ZtZdD%+nw1AkuAz z>(+*j8jP{w*ga~1;Z~KNcZd<;UR|VG2P1RwML)LMm9DLzjC@Su;*jSh=DL zYdo(#oWYC;n?r*3OZD~^Hh7jJ2`}uV!U?P|B-M@phAuk}QwakuGJY=U2;vhHp3cg5 zmFs^E7IxZk=K+qJ8{=`8 ztIAG)ZWr|Im9A(IzA|_4(64ek`ataLr{?!w$TrJeQ_u>QrP-|6aowqPF4gJ4SuucB zMcE6hUG@evA z^aGgM4Hi9Zq-|I-Gvyv?=x*R43f)D}MlfZ6hW zDj*+tE|ZHdG&K}$EJI8WcmLDvmiQ};M!#aL?eKv^2@>Jfo_#a5+rkOX#YoO?1~bC3 z(y8lL2MDf{Bdc7_L0)W`Jj`>{5P{)1$c>!>cb}W{l8iE@eKcwTDxM;d&e z=@x@Bl!}h7-N@ucp}#a6;i=J_+LB{dyK69>eiZ!C4` zTAq75AC3Zz_WW|=faKckFXFU^?M;i%1o6kYZrBI%SJ~uTndgd%^z&8Tt{v~%5`Wzz z@4;+8IG{pDz4k8XqO*V@B4T`h$%5wC>Vjc4ODEk1{_DfXxnK$skBH(HyBCJYO>9T~ zzP?kV%WnFlZEF45$qVz94al@}cJ7(01nDJyvN~1OWSDZQuCZFxLEWo@Q8DhSOClw) z&6&n;oFO9?L)5VN?>%t$>fNys9^bSB#5E)yt0C(>{7ry7M12t-jwX)uryV`R`Nv;P zb4v#~PlKqu*FVa&8ae#j6PE-d{>&RWU@KH(?FPwC=k+1>P8%%WtQN991%Et*xfg0@$!0=q3G3J&&c%%{LVDz+nGK>tpu)*hv$^o#x%eFUPwpuH$9{l& zCk#x#`kn&$yV^WZT(!9J`t%xGgnX4PdRcAfS?pnCC97KpEW#)0Dc5qRwk^Rd=DD!` zO2)DgIzSFjrLJ{X6L?qLq=0+t0BvD#Jr}rg%7W{)M!F6r;!Y+_*0k6kxbgtSdo*7P z!j$M$LJKZy+4j^wKdd}W3T9m`NWu?1&y@=$RABmFm@YbWeSyQX@7H=JY)o)i&yGmY zT$;7$sM1a${LX)#fmbv0MuY6Z9mce0FE{#21tW33<0+XqR`!wDu11qD4GW3iaoCL4 zTvyg*n?&wx;Bf8hzA;0iGJ$TZ|Bbu5`Ff2Rxw_q_^~T8J`mMv2=gEyVAb}=(T|8nY z)b+^n2J-M8$ZpIuW>Nlix-sK4szq%xikpYyVS@N6XsSDQ z!_k$$;pE#|n+WFJpgX3*1ik7%5)+$MbIEgQQl?IF8{Tsd*e>VFXe5V7N0nF7;A0!cA;)Wjq%0EgxvyhVO3yQI7TapQ9<KZzh4PxLQ}ig8a_{_i(bU`%jtYE%V%Z)T$ZbUU4nla5fvaD`puX zD_!H)9;Lm~|33_$kjyN z=DH|1={*v{L1NIzVd2@Xv-QDYP>32y=@&lOI%xbup~_~yg_>f+`)9*sMb=x7jnIYp z7Xwr?*McjAgplVXCI__l?@9dRbpEx--c-D!VHwf`gNcM&kj+!SgXtp89Z(%N$*>=G z%)56xLd4Q#Inz6QtvOhSp1J){i9_;zEja;k87;oSOk)57O(c?}0FoXr3zgiv>x6C_DlKiDlmC@bN5+#3x< zj?ih}w%9bQ6d|4SvXAgDc;f1`<&|}~7QL&4=j(zbg3h%^8_=iiLVg$-cUYsrlx&?3KnQ@P*$`^Xc(({ZfX2Ia zcTbNuvhSehqJd+_e}j#&_@QhAEwW2~I#)%~2V1)VA%7H zJzwII=If^-_nqtdv|#SfiXJyK_+F4-)+JNB!DTScZTr05G@*2gYPQBL{bn=>p6E&E zT)wWCr0{dJ`4z*}xX=cdqBeXGnUY^GrJU^O{8l!zr}}*-@@)g@`Ch&y%q2-zOLa$E zR|#;Wle0g%Un>p%0olC-wkB?H3GxavWf-j1v0MgKC>1XaaO81sgP5wGI8&~X)h<>y zr}lx8r!sW`c~0wq2;EAlu)_%hFeej}r{USfv;^EVbTMinw*@}zh))(bF%pd%0pD13 zvY3MXpho(9s^~1VZ_yv^9NG}A&B88f=M@C$%dCuim!P8;Agn&}MMpW=pRDr*>uME} z+vNaME*~z777E0)pO+@#*~~~~7IU0&S_HndvaCXp7w_P%#b0*DHW_d0+ZxFudDE=) zdG=-67%=_0Tq+X#!Le+xPu|%kNvXHKm6g z3srF+bq)EXDHz|iT$Z_RbJKIc|8>ZTMBXpo2I#K63eCjFw_(4obNN{3>Z+Zy(u~(s zXV+)6zs#$vw^=xOm%!X)&$KuGeZM;REtGx1#_Iyrr!p+Q=wT|Nn$9=ZSJEz0nX@x^ z2t3@L_+GSUC2Bug!SmeE2FqV>Sbi{H^eMi_sLfmSeXeGr);@^=xg}F1`mN8uU$-PN znvHGpJqH-%?v0>;0N}O$VHR4*oIXXWNd7? z8lto$#h7N8C)piFx_|ejgbZ#Jp}cFVu9EwlejzM{liT$6P*+ON)6P_d$`kO-{yG!4 zesRUKzn*BmYI2Hn`$cG<%duO&@}^B^7R?uCIdUi<=}+3nw#$iv&bid^Dj{>x{EZ9! zMssM1@N~iMKfvUf=liX3r%YBh3`By>Oh{cLH!$k35Y(vd6lrR-A$1w6}y>AT`N<*5D2<4P@J zfJ!@%M<}{DuMqDBzEC!aNpt`RYt;yPZ2nI3jSY8Qyi)6aYYdnIfbaY3rl+#*!>)UN zW2h;RC}LMgr=ioV+aE(6iK5U^9_<;YRjU>VcdZMHF-ei30{IH$hRVzRk3HOrT<-@9 zN4$L-1S5h!AU2C{DP6LBSK{BQV30bO1riX2@)KW6X)?vwvm#l2x4ClM*d=(B;xvmW zYcrgScZa`ZK#@DOCyh$xtpoaEc-Yj%tZU>%rnEM~p2Lu4|LiiJhc4BMjCo7dE2wUi zvrv3U8BW?wh)SobFAL4mj0`(`erd*s z*-S|m(c*(Zz%WQ07+{6MI=HuQ=J}-=baodOUJxI!M#~&O7eXyM=sleS466N!WF1SG zml!H6@bFLIr__}~Agn9KF$GOSKyroK^1<2fTf0GGS|CJvTOBS0`3vwICVn;6FN`|n z;Ig-4q_+2^LE)u4sCg`aimcKx!(%s+zsUUS~t1R=Y9mv z9iBz)e+2KaP><(TR#x(!rr%%=ODuetF!osqqmIHW9M~(`5U_uc)IH<$B6`IsGlPAp z%&?TW)OFMFfuGYU2BtD5E3igj6TTAFHvQ^=1POCt_b-{LOHJ*2LJ#ilef&eZ&X$#j zJ=e&^N;$&-!r1+8(lH(}*8}84pa7170+?J@IoSLz)pK^w0%vm3gP-7 zFesGeeq9CDdv2j~R-VB=O1Y<+0Y|NOgw5hzh+1>pi|_0d1J)D)PK}hdpu>4X$BLN8 z5=O0r0`-f_T~3dbARYVz+^snv!iDDP`BBTAn?en%&e<@XB+YXsG$u{4^Bl=#0mp#U z{%E(y5G|+fX-*vIPc=jhc?62H2n$GYq=!t{L?y}|3Qkt4C?DQwH2a^#8bll21|+C9 z`rU8!Bd!>xx4L<*R#8Rz+b{nxC#vd822OkpOJK~Y4rUYZemE6;-oWU9d7^AbeF1*` z1iisgs!&AS{wsm)D>|Xd5)6|cweKTCl^4A$@t*Nl(;dgp3@pAc{v7g%_uUxpt$=UD zC~pCEX<^Il-?@N@yt`uU$nGCvO}6Z=S$%HeZOdHc74hSAh?+;{ji#5pX%aZb;<8|s z9d%$&M|{;?P4R0478-wUu1ZYy&FOvgL;Z3bUUN_WB*2ufrc@JC*&&l;h2u=m@S9;u zT7a{c;XY)s{tRVjHju&G0BIfyCN|&5 zhiJ|`(v;RrBTxBS5(G*;7jEi>>#hT-}|Xc8CwqdCu)BRs#525G9Xl+A&e3RZ)bKhYCI zq$QM(fX2cHqqLMkHB%`8Yr^-z#Ov@>y(01L!jiqe+hAMl>?p~5sQx2l#SMI`eRc@V z{E)9DI23YQLtXvvgXMG=r7r_u?}WN5%Uh8S9H@4?F6o}>h;l+TY*F@v&0P7}3u5Gm zY!Jg@RnkIDL(*0W7s#?x>YPkuAq|Mo7lLL__H$*EMu%PvAT5jK%`;@W@V?Ne+UakM z=hx#v}|%aEmxavz~V1%eJqo7;16cw@y0YoY}CFs*tbUX)G6 z+APgCkLVZw{|%Vz&r`RytXXpH>vOu%9A!Yz@SXLkvi62J(sssaLJD0TelV=Edx4P_ zc!>TMUkYm7P27Gb?$brf{%Xb8R2frUwWTDJmzKZzh)bX_k&X9CFO+}mTKXN^Z_|!x zzv=dhB510THk6Z9HM3wu%C=g1Eo!YV1pyDrtw+_L(oe_+1A>4_2eALDO`wB;;~i7P zbw7<}5fFG8YJ69&N7Rdah5sZ`^N7G?Tvs)4!)g7G&5?H;n7;D&S$u9?GAy)(?fIF$ zJf%MZh6Xg*ht~dn-|4{tV%!%6g5uy&!&&}rr_~39ct{`ao?)ip^=@73ge^b(aOu*e zh6u-xLLuW{{VP433Iiws?kUgx&)(DIk(&(`<@3)h|R-|hlG;X;Q7^zQC%hSN< zdR0efUU}=*^6&ol3@h*~ig~)3>Xqj>X3%|e)dEr;YAPkxj5EVfbiZMtO(#y_J(Wm7 zTU3*wfUV&v70nY941)NaMFTILAQ0X3=jm@A@o!wK4_(!HHg^}Cq3RftS@K-KF$9#***oVHOyQ|;Uv4{UI@)idq5gi(knx}+ z7jcP)P3l|QyHc;^)*o~(TN=CoBY6A)nBhE!34Ja388tIO%@cqKDVmGM1Mvn(a*;GP zExg|a;z8awE$WL+qU|#00{V)b!8tb$Cl#DQzJ`6NPOp_5WDAUgun!k)?=ULjj4Ltp zRDKEhLCpGFXUI2Lhk5ps*m=+1(4(vRi~3Gd_aEJu`lV+toV<ROpmx7Fu zcs7w>-Gb$`AMNF~$j3SbOy!>i0$?vw);UuI-e+8qWi@1ajgs@$RpqT3s&Rt|>(_qcB|0f9QPWAOw9_?1jCE+~vR9;(A7Q zq$p|aYE%(?+%dA2qv;;|T#5W|jK(9-S>Ys_o-PCzyq5`+Q{(@!z3CJmV_X+>r@@a2 z*b*VCPL}6rLHjT`-z$oH!WGd+{}iNF+>`-wvKLHYD(oq$;@%7mFa2}PdzMR|i5A}2 zMX3@MekOh=$!)c7@yOODmPGDV7e*eFd+h6;`WU_`cPoz4eN?vbKxUj>)N?O|>uBud z(u=q3=^spql%&;s_Jw&}ZFSL2!qfQg+ta0QMGE`@)b~w5iJFD^+{rNA`)AISefLAs zC*M#*=P}uUfPh!@ktbGd+<0p*FGWnm7FjWcBaD$-8mkgy8&IHl{S99=m2eyiSM8{; zo=lqqP$QYwT%0}}Xs}nd)jgLT7m~yNkafk_OpvjD{^UhscabL-xox>ez>jV^m}w zdu3OY%HEsMeQd`(HgRxpZ09%}aeh~y@2C6s`74h{{<>W6>-Bm)U(XQ@ZA-kO`@t=o zOe`nR+e^0BHL1FUyliEQ^-&h=klQVfAg=gVX^Fw3xaq=o&wY08DSx-%tx&sxR5!%_kF z`4=HPUr?17a)6No(%rVHheW>xyfO=$d#v$N-8JxR|IffuGY)VA`!j-A4yC;d(*v6mwIuT|h3%5vG)QDtXBvDrM`Ak)4Xs=Gn7` zO_|o*iG?^W#qoi(4MO;PGn`@Nd*iDp0CVWK?vZ0~TU-q;}3)`*BYTgD53+1<> z)XcJ9v47eKX6RLl0o~UjJq<+hEnkSu@a-G_Z4eyQ*RR|3lswn7v$XSUtQ7WmR$Lr5 ze2#iz_04f=5s1so5szm*y4HtpoARLJ?Cz?79~q|p#lxk_ked2~!S5VP@H1$NAR01g zRvc8wpX0vbBo2Y{HCIv}AF3CY78Yvz)GFto>IK?&cwDaIoDa$k`g$Zc9HRyMwwv_6 z5dam3^4_$L?>~pGA)kh&fUvVY6-=UAGyh|Ng0+YM=H+&qThtMzeEEo$MMYC6im2Qk z&u55<{^F+%X!=n=Vi&#Ju(K}w=KSXCf+uKsppBQTvdt)$&*4{ePE6qUyOCqA`O()M z1(Q6D(0G~PrB^=SX0bOV`6{WjqNZ<25;845HQj75@sod{&NDN@9UY9$kfqC3wwX$B zGtVA-d!-axR_Q-#!)}Hzo4So_@u|HLoY#-Gk-7+y#5<;>JY_lh4v$R*{8In|g2SNh$}*^+CEJ{sr=EJer~U5ZqIv1G#rDuj0mfs3&c{ z&Nw<_}U%qZLdFrs&`5{r1v#b^&0zVv}g91WlGkcMT-(O$LLzBxBlSsyV=Kg`W8L=lxvr z3#`_9KYMm>H4t#;-;m~WVIGjgt;OY zDR7_H7aEptzbB3*F1pVq3^FsjL%u&PE`FCb{^ zzPB$qb)X#>k?&#}zx%wI$vzCya-V*awm=(~mKz@a%@uFOBZ%99?+Z zw?$ZY6a0eG8QkCQzS32px-ooag&oEk@A9|vKUp>D6lmhTQNarFi#;XJc2J{D?9DaW zk`=ykO6L%G=DTOXA z!BU^!6$nbo8`C=+9hO96J^oVj52yF|&OoqJ0EtR-u%u2qgIUVe`1c4qlm zp)|?nk(u>sk@?USx10JhaLG5uQJLZB6yV7% z4p1!79jT5)mX+UIo3cw0Pej$YilEG#jJ!up^Qzp@E z8{N%$|0UAq!*D{n+c}PIb&nT!;$>sJN59>6fB5Os17#bVW|OB&CA-&d7|mQZmbz6` zAl>onA8A;QUW|wwuCa5thLKeY&8}f`tM5ox(f`!U0dtanK<)paCxtZ<7yK3M#}x1- z1Bzz%SQMfw*LLsNoA3;`)K~x0-10vBg_z2TPCJp?^el3Hqnj5jzmeFCmA)o#wfs!; z%~%W_I;luui^~|bZRoK())myG4pDp-%J&RRY}gJ&e0^*rT2>wc`{hFQN()KNY$U?O zG{uc)dk9>q8q>=zrjyk`kdzDx`Wv@LK$`*W`8oWJi9(vg(i7`jl8^D+zF^Aw4t$we z@L+ieoK-ZyyUA$0(Q+gFjitTC=h~}aY%S_!txs`^w%juXeOJh*JipsF({bwOH5MmD z-pH?xK+^lNdfW={YOuZr9Hsj=&&NA^e2eyrlG%<{vAM9+BhE|ccO;(Tm(^e}jr$Q2 z-Ht;I<|U-;jtx z$qkwXS6|9|h*yPd*_09BDe+7RygojD^J35P;lUpC73iLZ(fLn{4KbK|FRcz<=Ho#$ z@T};-;{tx5hw*zhLr_V4UQ|B*cY&?W=UmEq3-2Kd<#RfzJ+ zUw8oT4p^;8*7Ot7_O7c{no&fNZ;xW4-3^j0LZcES+`nMdm2QW6Sp^ub)tcf$uK6k1 zv-sOunZ!-ZlxqHj4|wy!uW9&7nxov7@K;uTvNd00jRRd($$-4OTFgbE{BG%ZJn|V9 z_FulzgKKJE8uMb%N|lm6)I0S^$!{Ze6dk5vJFcCrV>e zwxw5mvZloXMA?Fl`TaEV9DTLYOqE%$juJyxy<&OiArF=Kn%{b0PeS|JDod*C1ZH=0 z&Jfd5k-#(2%?wiu@@nUiNBc9>r2V9+^{)G&_^bdn2ho0Q7_DdD zGv8#*UznvC$l@#VY}t79X}@IS>Pf6(KkS1Sv8fC`=i5S>YtF__Wa&Ypx!P;I?ABDW zEN|M&x16uu3HU<^9Sv&SdyiaCZ4{7Yc=rV%6h31YXhJZ?A)R{oSrE4!7kehmk7Jh2 zP2ta56)tkdZh3NE*gNP_jz3#ht>wuUq}Is#AXd@xpzMKs%md7RuOd%|#$#i5eu#Mt ztL10)t{l-q5&wdT&@S}6B3sO{Q4}i16Lj-6Au0UHBDiQt7tjpeKySqU1L9RJ=90720G{D`5}XWN3H=C@%jmkz>V3W*KyVWVO@LO z3SI#caMZ=-3xG)F?6w;Kfzboz`g}8PxYX;9g83U9HFA7R#A5bOEuXEZH6CHkvshA? z?2vi}@~qvsY}UH&sI;{z%&LAVCpEwe|M9O^$SGsh5J-SA?`u^4b=9~DX|!Gv4O7d-byDD6s+QMTP%Y9TJa6!! z-)&!`n%f>eT~H5TX+XarA}^fUGP*dmma$TZ&nfQNX))%nQTMxP{#9B3aA(YHV04$^ zqi(W5(Pp{LdY}z@~ zlBY5BS1O!6d5h6ntt#|R@#S}O=T4b8+>yc8i|sc2zP4}wb8Yo5;YUZ3T9gPDX7RYM z|Lvo|KV|Q%Y3(|(BmdmSsA{H<-ed2eD7_O+{rOj!66v+Kdx6>sLfYb?_!8%l4+Z~M z;8jJQgygngHV`KjNS1f0y8vu0rOF2p>-r6}#;6%BK=S|n7*A8&elS_>Qm>P` zymL)>$Shmx;WS^XsVOW1WOM*RLV8Ci7?{Nb9iO1J4Ej+r}NOv1*|S zR2k4Je)aT^0MD72&XU%p0`(@2G6$JDX^es<*BCTX4P81>^W(rE8xaR*3!pr~;q7}Y zzne5e?zEW9at66GHm;;)oufU$pt%<3uXHbK^DVb#tdM<3Eb&>Azr}yCff|FgN}*{u z)4E8l@%I%^JsT|E!v$!Wm1*Njcl_l7VsJIDge?nNekoJT)jHWA$2l_y{?5jTs0Y37 zpS;w-8%u|}MZTAtqaV|0%eI2Wysb1e6gzSTqm$H{0eX5j$kc8M+2K))s(&hh1v%{tyGmc-F~0Bs1h9kS3k)ycSx@`5Au{XiB(63Jz{au=O~39d zBJG6qq8!!2vm9Uu^BK#gZ!bIhRj{1|TZ-Fa8E_&#e72dMoI8k+uHB5=G}I`uz9ov% zABf6qgVh-g1%+Apmbh=}ZiYSH^b{3;qo5-xl<_ywIOpdZttJvGxm1w`?xdgh=zOtW z1(IDQw)L7G<;eJt3!ds6*6l8GXaytD#&U1$lKI}3$}H)o(Is6zI|6An*N%?AH2?5b z@dx~_$(ge>3*T(X*5E`xrCVgn%PV3p0Y?sz{f>vv$A&(WH zkJ0K2)q)M<2=&GhfY3^NxOncdF?hiBmJX*MqBB>1Y&Zdw1py2bwBBqQ0La@+HEZM^ z%i(*eXxh<>C6XJAY#WQ5%K{_J;O)H%tg?e^7C;dL>scbodwc$$`G!1dZKBI)zrdZ3 zSsXh8E&Y$0rdI=_tpuI`H;W=`e`8!@k36JDtkw@Hh%mEt1|B_WTyCqqHXQeF;uO1X zynMs>nW!pDG-vx8%G?~+vK+T4ZtphR4 zsHstcH(pl{YcyIDy7pg}e$aZkDv#Z~;;Elu0ISM%Dy&9DDx;@G} z;~rc`FC+=Bsh5|>q~Na23^*{gb%y@^43L`3G)I(|B|&5P)B{IAlCf;`l_sV}5fzo6 z0I@=TMZ~XWpw9uoIn^}jwKbvvgen|@1Y32TS%6>lm35G=xX^xz@x1kk`*ykC?NtHE z3+esp=-NC;7mO?-@2edt4okN(3uUh03+Wv~2(y{edqR^N83^nWr<6r)6GeBU6N2jw z0;CXI)3%JRI!)3kW<1Awm7tkTTfDU`-ll!=##Vi`O(fJWCl@4 zu6>sjZKJLP>8fP3;qHDhYE%EqRTw!{C)UrlG=OjGs^O?B^vkLHWM73s!gXc|(m*!v z=;c!j+AZmR+1W>E^PsrZRso~&B~#yzm>W1}>tKwEky*T}zNu6nxS0NDoLirI-#qDi zW^=PdgUVutr0xQS0F%)~Ze?@x1Ym&r6c_Tw z^N#_WJL`@?>DOnuNjKWR^oQ+ZJ7QPvGz^iSsW(;G!ww^L`Rk+TXM#}7l|=b2pHq;>pRqOKaG9MJuyR3EPGo>W~nS{J2=gwB^WzPWD}=G z?H&|I$6b~6v*HoDo}G}KgBgc)Y57Dx@CtL0y=^wl;P1PfCxr#q5RxrGk+-u*a-(_! zx{LWCwsG$p&HCi1QXqCv`q6r_+j$nt55Gf+$k=Baxs@@TJ@SX|$sZ~2V{kKa*m}Nx z*faR%tHMSG`;U2fv^PCVVN^tMBHdkpOHaovIasY+6rRlrKOVGCwq=wSrW2MXDWu)Gery@d{1xjdjp6Mf=?aV72=tmXx>_ z`k2AC@(L{Gi1^CQ5R9|=Ouio~LBASe`kPb%23To}|KL#%jO%%5b~f%4qLljy5oD4Je9VX}z#( z!T*&7-f4Y;zA?B~;-&R1Lhmj66uR-HOI9ThXghC~FE0BJpN=W#znxJ2mXR*>FMq>W z7j_i4FAayYz@gtMpQel2euGg2Hcr2Pr`G#8c5ROz;f}feg4uS6ObG_)ZCR&HSXsXm zAvzvMi|9q_sfOr$E8pg0x~S2BfIjV3r^c&$m?}fEibe0HMe>y9h58T?uY$>79KHX- z)W$&bW&#v^uy(~rCEGa2s1chN=4qkb^1;44(tqV$k6>`^-T^53srt%*k5bosnOify zQ;Svncn^MLP>z06u(7jV=tiSl z&s*jD#fAmRPnV6k?v*IeW2%$fRAwt@Fl6HFpf>N{wk1QtoL>z2U>EJuE1HDe4k#pj zE$u?dekMa<*_*HVa;WIafPgVd*OlyCQ7dmC~b7+`G$%tJ~6Xr8g~;cMHy9Z~15CoEBwfc0Sk>PEEVjeu$OW7ap>k zYN<|pVJr{wL*P}-<2P|dN3*JZ<*WJbC?)rGofHHH54=2s7jc^)`f{^W0+nC#J9(MY zo}@Bsf;RtN!?%zajF z%U8FZoN}cLv>xjSCg9ZjOoBznGfWpJ@7w&1DJOH5Dc;v2CoHh_XFqH8*4LUq0BDxzGG!AzQ&N*%l7M63_NP$ zh*pW7Vr=(j9r96jKm*gT=N2wqnn~pPv{?#g(RM!AU~D#q7Z(4+*F};<7gojVekPU2 z1Xr`#zAlS>kLl}v%zXJ^qFEt6t`C5B1d2)GoseB$zfG(nIN=|36;;BxqGDcQXPU$J zI)m?Bxw&T=d=SekK~0yD$sU?uP2%R^TKJS|;qv;9vivvdfud}(QTnggn-iL;ie%i45$XP@jc`YA;5qb~qbM`AQD z?zD_yC+bcnR430|(X>@a2vTdno|uj6*eUxoP!fmmdHJ%)uFF3sqaOa4BgCM~mH*UF zm2MRutS3X}z-%PG!#2J6qZ6de;l>{ z%wM@I5&u@t5r64=Ca=QeD}8>Ig1lc+;ji9~NJ(YK2NY-N-|IA13{sCT$1r(fe^h7b zFNtSw-gB;cA)t6MGv~C6m|JJsDDXHFy3t7m`#Mv$mGOe#DR`9cQVX?s7>LyFxdH3g zp#>Ba8gTPYaX)qMQd%CzHnRY5@An}}0EryUW9n{cSU*V$?TYT8r(D;scyf4BAC_if9NMomXS(YilW^*+bM%-A}M z%w`EJki0egkOEl^C`4SZ%;>eym2sVS37%8#>jSl{mkY87Al)MK(icg(C}pW{6SwW% z>2+x(r0B9U)ooylWChJP+Z(;67^Un52Za@TPbU0W$osVg438n!&W(m-8yv@BVF+YnQ zSTgT$`N&lO#J_&0f50a)Yp2!)IApb~Np3DqnIjv3&}VG9p~XhNc3Su1Dn(&6EVsU+ z+;7#r&m`}KQMk)QAO?NrR_H6Bc}ZO{w(YJVpgauG<~DF1j~~~nZ$+#IS%6pap6gAZ zq0h~G8!eMIK=otb=hI18De$|^T`pD(x+0XukmWmH+MoU_Cc9Dt?y1LOj<{z@&D-|~ z-fZ}q6$JgpQx%T|QzoQO_2#ktdPIq;p zoDm*0*dUqdM{`salDkx6!tBo8e+I+$?Q3YzoO-u;Cg^X)htmogZ_=4(jH#i?yrT{L zXWz`t;L~owc0_o%6P_PjN1k>WR_=NM+m#$qBe7eg?t|vWk>g?9qCk8pJSTP8P%>kY z;Ih7nA_0*WDxqYb0qsS!&C?v4pfi`_!_skq8Jz)%n>bA*Ol_OX^^H*dSd1`dg}LI_ z0a;ydi<;#iRxA_|^0Wzh<0$@UrwZLAebfCv1|D{qn&Zn@jq4HD)XF$EH35feP<3Bd zvKUlr!Fq@)_h~)2O#z;8b{iD&FV)-_+c~42VEa?iUV8L?BBAUWH7s2agl>-4_bZI; zI7-~>%WRu+RYM)--_s_MM~PvawC>#r2IGHhO5Uo@p-acBtWIu*W#pdq;=Hipep;oz z+;PRx^_V65^~f8sRM(Q791lS*+h1azH|g!fEn}6cBwM2nz`#;n$s0e2dN4|s1UABh zW{1CAi=LdDVF)Xs-waD^#~FkDhT;;rH+HG;;27r!NR3>c2?r)G7w&FqKfAbWSiqvF z_uWMQ{F8s8(AU9$_e9e2zf|(ebm&*I>izC!ukSgMr*kio06&2C4 zc8st475=^J9?a&XQJOjr(()tC!Mq*lh3FWZuSnXx7z)XoI)h&hgKr#jDL zVz+dQEmXPr9P5F75|?qJBiP>yj`H z@Z$=`?oUJ1>Uv79ON}M~q7HZ(RTgMZ{JLoy_JS?tEdTO$9Ag0bv)HQ5NAF+G?_y4O zx^8Byyy36a{1WLh(C_(zjXZ!N3eQC;^RP9)aAEU;Vs}ey z2R$zia(AL$0|k|e_)md(SZ9p*=rs~~ZQl2TT3|^l^Z5HPxa))UT%2}xJ^dfHlj@w} z7h&Si)qGsCF!37BSB(dLbaiMVX&T-JpVcUK`C&9lOi~+t$3v5ydGOKK?}6d7utnV9 zu4FJJ3v|zVx|WI8ahj)H%+coE9X)WT=^KwWHlF~C-i@HX#}7t~ml~lM;KxE=aHG3y zkj?k-J%eyj>uQiFr`F>>==@`o!;W51m7BrY74xXSXJx4gKE_*go(uWnce_4&B~UaB zaP!KJFvh1@{CfdnX~U-qMMeue|Cl9az?ABUmXGAD=pqACS&0`0GD!uS(dx00j8L(= z9T+e%cFJL5S8BK?!(jA?sV%|@#|`@MEZ$*~(Jhm)!>t+Sgs-E0R~ji&+l(ACPi8T; z>E)FMRjlg0OQs5>R^O*sQWia>ONpnQn_>|}`|qW@(!!0LMuLY;X4*|FSBE&xA2vNq z;#a&q#fACS5oP<~V&Gq-ba7*ayTCbr@n(1!=?kiU@4j(B0(Wb}sMumud(TUm6#rz@ z{$7W(Mw%wuN;0R8z5eVDmIBa7<&0#Bd{q517WWhzTt5;&yqnVPr+b5gR9g)!#U%1G zqGI-GL|BW}*X=YZ*$f){N!-VuDg*Q!K!fAk(k6Xz`76&7ne}mGGbKAvt;*{k!e}wm z!{5jl_Z;UDMq*HB7WU(Iz=~a06>bcyD%gam$WPCS(&Kl$?Hr5_(j9ZH;Do_ti_Q<= zKZRKrm`AV;j{q#W%_iB%9B;~G$DgnH4tHuae9+u+LtP)VhtGzcO^=U0pNeJ;cf2w( zaQk+&^=8Y}kG5K7L?Vg%hQsqw9JkgT>&u<;4{9+HANU{YK9B;>ql=k9TpLS zihfs^u9-`wlx&@aBvG4Z|1nkoOLVYSSD@$ys;o}GBMIC#kwn*p9GP#WakrNZH0o~a z9&q1(S?&g0TA;U!zn;B;%+p8}y1@f6F_uw0Z*x4gHEsAir?i;;*-FyOfyRwlV8->`K*t1PIoroUJx*n^WQ5 zLdIOh*BKh=SUS7WcC#um7=B+vOdzh}ERatni;wbqs(qH-s`N3&@9%#1du*|ZSP~j+ zYPbdgX!ft@WXoHG$zeqKr=ND*nm>?a$tFjY7?&vp%+$r%rl0 zn$~$yzP`4$-(tHFx@k?Y6o+1VZ6P;r0X}N`B$rVuW=mm$B42k7z4S_;v;VmLVJ2B^ z+_>?XT9&#y@??!Jxx?D54MbD;jfa&+Wy|Ul1UQ~x#!7$l5U#Y_gZLu}T~>4UOg1LN z!~zsgrv@ujr0vvUVGN+w#Nh{|6Ek_!8gXG6LYNBQEQe^DUv^ZDS`A*Q3kmK|OS0gJ z{jwjMpFUG$V@>l97>uHlP~{S*QTJPY(Kb|l$7-!N(}7HtnnH)l)P)wyF2!eAN3Grf%t*tgFe>^wc^zidkIr1o%a`)STNj zuoZA6)ELq<287A}#2#i7lzT2*24ma|t@*}})xf@3P&_(_Dx*KVhY|lwGM2zW6r@wK zQ7T8qY#*b0x9Z?J!6BrKk8ZoJvS+foGaDSN80>VVj#(7y-UiEGn9iD8 z1-#emj;rQ5{|t`SEfwlmbPiZmEd4YSbH6QVl`=5xOXq3x~FKwtppCsLNWTxSv*M|5y-IPfmQ3+A9> zigO^o6MlhRSIy5aMvF4w#BDO{P^$W{_E+4L`qZ#j)Gt3mfc>vDA4GIzx#QOqu_KbT zp=@n;yyldU@qeM~4<&TYR$>j>RO8@gl?Q3v&gK}CoZa19;mcv-GbKwe{52|&3iA_& zt!nXpXez{*uCRDJ>*4XKSmuL}Wn^jDAZ_z&0z=y%NDzn2-{$*gv59;Pd>1^3rZPJ- zKo6L~3lt1f?bz^O zCb8(=Q>pIQ)8+9Xu$?52(M`9390Kw)dmdsc=bFI$=hH;Q{G?0s^pgORGL-|UHH4YV zo>CDfZpO7X-72>;I$x(5q4@=dDLok_s|gwv$K`|ZCDx*TA2 zv7W3PN-^KjfSN(O);qM-;Q{>|7v=xB$-LLeJI0*M=k{d5W#W!4xX_huN>ZGB(CswV z$~7)iocgF%krz``l|vD?jen6zHR@dIHus)~V6Xcyaeji!7Vqow2S!xo4TaB^XLs9A zK#Y9j6){R)?Kq<)q4zXzgoy=~s>K{D=pxOgOBkU9lCn<=?Q%}Ug)3oVe;?g{PE8;; ztRY4eF63$>K4XCO^Jj(vgq00+hoh6?0A0UmpIfWmg;cT@)GQ9diSSg9vO?4EZyYR0 zTSuSvWJKNU*kLrRoNA=JmugxBTR>RCL*(Im%=a0y1t^GJVnEBz`XS0HolB{;PgQLV zsfhgIuu-a6p!R%<*=K4k_oPXYUp*>;>PBmwl-Cj!9^KcrBV%~!eTo}M$*8(+o7-@l z(s@3`Mg>lqwp=})}VVljJJ)5<=8t_rOCxC|`hZ(Kt>EiJF@bYK{ zZ?a@?txZNDB zwmyl!a{L=WapvT)D+b-Q?$i9T8-fuMs!-fha@mknr#lO4|3uo|_Z-FuN1ZGkqFZC|Zj;e#k8Z5LtWIbyhm(&LO`?Eu}W()Xu*yOo8P zNwP@)9szmOL04P`4=<(>n@=QrL@elQOQJM%qU}`q`G=4SVCTBwH}7| z5}FS;>Wi56IH7bNE^o5~D4oNylli=naL~P&-?cr=hS-yoWB3MhskNlVv~{oO#Zf4m zMK-HpnGgr_*rjn1){l;Eji$Yc7OV$Qws`|(&zr09Y|J%o71-EPAXfb#)AE?^=FeBQ zp*aoD7bjEu&~i@K9^llP(@}nBMN(o3UkUV>ew_>5MDtg?G8J*l2f9^V(M9@QO0%AK zJ=f2bb}9Wa#=Erl&l=R-?n5a3dbd_+BiJ$F1Sb|WEwvZ)w|^caH6Tp_V#Gd?rwPdD z;EkAn-bkCz_FIwYztFZJ03?8AY99<3iX`pWqk2{1V$HFtCgV1sxT+Z@s0&bXJq8)3G@M(1I=={KV5 zee@(yOyOp}JVfF4PYHU`05tUnT3nicfC+RRXJb``i0z%w$g8l_0kHlqls1S)4cU5re)w1VB>Sdm*1EMQ zzjFSiuJ_?vx~{L5S1ZquBnQXYlQHQ6QJsEEJh0s|vaio;(8Ps+Q$uES3y@V{oUFLk zGjBn!enb-1dG<^pL?6}Z`besFOI%AuOb+YW7fZSvsR zS6SQ?-;fAjR;TC3R9215

  • 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

    uaq-f^@Ju%IHK*?K?D-d;@x!pQc9oPh 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

    + {/* 这里的模糊小球用图片代替滤镜是为了适配safari浏览器,safari对于滤镜不太友好,大范围模糊容易卡顿 */} +
    + blurball +
    +
    + blurball +
    +
    + blurball +
    +
    + blurball +
    +
    + blurball +
    +
    + ); +}; + +export default BackgroundBall; diff --git a/move202503/AKAKing23/code/chain_front/src/components/Layout.tsx b/move202503/AKAKing23/code/chain_front/src/components/Layout.tsx new file mode 100644 index 00000000..fe1b7af7 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/components/Layout.tsx @@ -0,0 +1,45 @@ +import React from "react"; +import { Link, Outlet, useLocation } from "react-router-dom"; +import { ConnectButton } from "@mysten/dapp-kit"; +import BackgroundBall from "@/components/BackgroundBall"; +import logoImage from "@/assets/images/logo.png"; +// 将Layout组件拆分为外层和内层组件 +const InnerLayout: React.FC = () => { + const location = useLocation(); + const isHomePage = location.pathname === "/" || location.pathname === ""; + + return ( +
    +
    +
    + {/* LearnChain-X */} + + learnChain-X + +
    + +
    + +
    + + +
    +
    + ); +}; + +const Layout: React.FC = () => { + return ; +}; + +const changelang = () => { + const lang = localStorage.setItem("lang", "zhcn"); + console.log(lang); +}; +changelang(); +export default Layout; diff --git a/move202503/AKAKing23/code/chain_front/src/components/Loading.css b/move202503/AKAKing23/code/chain_front/src/components/Loading.css new file mode 100644 index 00000000..6575e673 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/components/Loading.css @@ -0,0 +1,101 @@ +.loading { + --scale: 1; + display: flex; + justify-content: center; + align-items: center; + position: fixed; + top: 15%; + left: 0; + width: 100%; + height: 80%; + background-color: var(--color_white, #ffffff); + mix-blend-mode: darken; + z-index: 10; +} +._fullscreen { + position: fixed; + top: 20%; + left: 0; + width: 100%; + height: 80%; + display: flex; +} + +.loading_icon { + position: absolute; + width: calc(var(--scale) * 35rem); +} + +.loading_icon path { + fill: none; + stroke: var(--color_back, #5763fa); + stroke-linecap: round; +} + +.loading_icon path:nth-child(1) { + stroke-width: 2; + stroke-dasharray: 0 5 0 5 0 5 0 5 0 500; +} + +.loading_icon path:nth-child(2) { + stroke-width: 4; + stroke-dasharray: 0 500 0 500; + stroke-dashoffset: 480; +} + +.loading_mask { + position: absolute; + width: 145vmax; + height: 145vmax; + border-radius: 100%; + /* background-color: var(--color_back, #a9aef4); */ + background-color: var(--color_back, #434040); + transform: scale(0); +} + +.loading_container { + position: relative; + width: calc(var(--scale) * 9.5rem); + height: calc(var(--scale) * 9.5rem); + display: flex; + align-items: center; + justify-content: center; +} +.loading_circle { + position: absolute; + width: calc(var(--scale) * 9.5rem); + height: calc(var(--scale) * 9.5rem); + border-radius: 100%; + /* background-color: var(--color_back, #5763fa); */ + /* background: linear-gradient( + 135deg, + var(--gradient_start, #6366f1) 0%, + var(--gradient_end, #14b8a6) 100% + ); */ + background: linear-gradient(135deg, #4361ee, #3a0ca3, #e98bb5); + box-shadow: 0 0 100px rgba(0, 0, 0, 0.5); + opacity: 0; +} + +.loading_tip { + position: absolute; + color: var(--color_front, #ffffff); + transition: color 0.5s cubic-bezier(0.33, 1, 0.68, 1); + cursor: pointer; + transform: translateY(50%); + clip-path: circle(0%); + font-size: 1.5rem; + font-weight: bold; +} + +._font_2 { + font-family: "Arial", sans-serif; + text-transform: uppercase; + letter-spacing: 2px; +} + +@media (hover: hover) { + .loading_tip:hover { + color: var(--color_gray, #888888); + } +} diff --git a/move202503/AKAKing23/code/chain_front/src/components/Loading.tsx b/move202503/AKAKing23/code/chain_front/src/components/Loading.tsx new file mode 100644 index 00000000..933f5ce7 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/components/Loading.tsx @@ -0,0 +1,229 @@ +import { useState, useEffect, useRef } from "react"; +import { gsap } from "gsap"; +import "./Loading.css"; +import { ConnectModal, useCurrentAccount } from "@mysten/dapp-kit"; +import { useNavigate } from "react-router-dom"; + +// 为window添加自定义属性声明 +declare global { + interface Window { + hideLoading?: (immediate?: () => void, next?: () => void) => void; + } +} + +const Loading = ({ onHideComplete }: { onHideComplete: () => void }) => { + const [isVisible, setIsVisible] = useState(true); + const currentAccount = useCurrentAccount(); + const [open, setOpen] = useState(false); + + const iconRef = useRef(null); + const path1Ref = useRef(null); + const path2Ref = useRef(null); + const tipRef = useRef(null); + const circleRef = useRef(null); + const maskRef = useRef(null); + const navigate = useNavigate(); + // 使用gsap.core.Timeline类型 + let animater: gsap.core.Timeline | null = null; + + // 初始化动画 + const initAnimation = () => { + // loading初始动画:小蛇循环划8 + animater = gsap.timeline().fromTo( + [path1Ref.current, path2Ref.current], + // 间隔开两端线条的描边偏移:使虚线线段呈现一个小蛇的样子 + { + strokeDashoffset: (i) => { + if (i === 0) return 0; + else return 480; + }, + }, + { + strokeDashoffset: (i) => { + if (i === 0) return -275; + else return 205; + }, + duration: 2, + ease: "linear", + onComplete: () => { + // 每播放完一次,检查一下加载状态,加载完成则执行完成动画,反之继续循环播放等待加载 + if (document.readyState === "complete") finishAnimation(); + else animater?.restart(); + }, + } + ); + }; + + // 加载完成:小蛇变成一个球 + const finishAnimation = () => { + animater = gsap + .timeline() + // 动画的第一部分:蛇头缩放消失,蛇身虚线偏移成圆形,并汇聚成实线,整体缩小以适应一会儿出现的文字 + .to(path2Ref.current, { + strokeWidth: 0, + duration: 0.4, + ease: "power3.out", + }) + .to( + path1Ref.current, + { + strokeDashoffset: -300, + duration: 0.4, + ease: "power3.out", + }, + "<" + ) + .to( + path1Ref.current, + { + strokeDasharray: "138 0 0 0 0 0 0 0 0 500", + duration: 0.7, + ease: "power3.out", + }, + "<" + ) + .to( + iconRef.current, + { + scale: 0.6, + duration: 0.7, + ease: "power3.out", + }, + "<" + ) + // 动画的第二部分:提示文字显示 + .to( + tipRef.current, + { + clipPath: "circle(100%)", + y: 0, + duration: 0.7, + ease: "power3.out", + }, + "<0.3" + ) + .to( + circleRef.current, + { + opacity: 1, + duration: 0.7, + ease: "power3.out", + }, + "<" + ); + }; + + // 隐藏loading动画 + const hideLoading = (immediate?: () => void, next?: () => void) => { + // 动画播放器播放完后:才可以执行函数播放后续动画,否则会因为动画冲突导致BUG + if (animater && animater.isActive()) return; + if (immediate) immediate(); //存在立即执行函数,则立即执行 + + // 隐藏loading + animater = gsap + .timeline() + .to(tipRef.current, { + cursor: "auto", + scale: 0, + duration: 1, + ease: "power3.out", + }) + .to( + maskRef.current, + { + scale: 1, + duration: 2.5, + ease: "power3.out", + onComplete: () => { + setIsVisible(false); // 动画完成后,隐藏loading + if (next) next(); //如果有后续函数,则执行 + if (onHideComplete) onHideComplete(); + }, + }, + "<" + ); + setTimeout(() => { + navigate("/dashboard"); + }, 1000); + }; + + useEffect(() => { + initAnimation(); + + // 提供一个全局访问点 + window.hideLoading = hideLoading; + + return () => { + // 清理 + if (animater) animater.kill(); + window.hideLoading = undefined; + }; + }, []); + + // 监听钱包连接状态,连接成功后调用hideLoading + useEffect(() => { + // 当currentAccount存在时,表示钱包已连接成功 + if (currentAccount) { + // 适当延迟一下执行,保证连接界面关闭 + setTimeout(() => { + hideLoading(); + }, 300); + } + }, [currentAccount]); + + if (!isVisible) return null; + + return ( +
    + + + + +
    +
    +
    + + {" "} + {currentAccount ? "Connected" : "Connect Wallet"} +

    + } + open={open} + onOpenChange={(isOpen) => setOpen(isOpen)} + /> + {/*

    hideLoading()} + > + START +

    */} +
    +
    + ); +}; + +export default Loading; diff --git a/move202503/AKAKing23/code/chain_front/src/components/TypeWriter.tsx b/move202503/AKAKing23/code/chain_front/src/components/TypeWriter.tsx new file mode 100644 index 00000000..faa7470b --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/components/TypeWriter.tsx @@ -0,0 +1,26 @@ +import React, { useState, useEffect } from 'react'; + +interface TypeWriterProps { + text: string; + delay?: number; +} + +const TypeWriter: React.FC = ({ text, delay = 100 }) => { + const [displayText, setDisplayText] = useState(''); + const [currentIndex, setCurrentIndex] = useState(0); + + useEffect(() => { + if (currentIndex < text.length) { + const timeout = setTimeout(() => { + setDisplayText(prev => prev + text[currentIndex]); + setCurrentIndex(currentIndex + 1); + }, delay); + + return () => clearTimeout(timeout); + } + }, [currentIndex, delay, text]); + + return {displayText}; +}; + +export default TypeWriter; \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/components/ui/button.tsx b/move202503/AKAKing23/code/chain_front/src/components/ui/button.tsx new file mode 100644 index 00000000..a2df8dce --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/components/ui/button.tsx @@ -0,0 +1,59 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", + { + variants: { + variant: { + default: + "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90", + destructive: + "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50", + secondary: + "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80", + ghost: + "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2 has-[>svg]:px-3", + sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5", + lg: "h-10 rounded-md px-6 has-[>svg]:px-4", + icon: "size-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +function Button({ + className, + variant, + size, + asChild = false, + ...props +}: React.ComponentProps<"button"> & + VariantProps & { + asChild?: boolean + }) { + const Comp = asChild ? Slot : "button" + + return ( + + ) +} + +export { Button, buttonVariants } diff --git a/move202503/AKAKing23/code/chain_front/src/index.css b/move202503/AKAKing23/code/chain_front/src/index.css new file mode 100644 index 00000000..2c247f9e --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/index.css @@ -0,0 +1,313 @@ +:root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 2.5em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} + +/* 导入自定义样式 */ +@import './styles/layout.css'; +@import "tailwindcss"; +@import "tw-animate-css"; + +@custom-variant dark (&:is(.dark *)); + +@theme inline { + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --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-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); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.205 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.922 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.556 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} + +/* 钱包页面样式 */ +.wallet-page { + max-width: 800px; + margin: 0 auto; + padding: 20px; +} + +.wallet-connect-section { + margin-bottom: 30px; + background-color: #f5f5f5; + padding: 20px; + border-radius: 8px; + text-align: center; +} + +.wallet-info { + margin-bottom: 30px; + background-color: #f0f8ff; + padding: 20px; + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.wallet-not-connected { + margin-bottom: 30px; + background-color: #fff0f0; + padding: 20px; + border-radius: 8px; + text-align: center; +} + +.wallet-info-section { + background-color: #f5f5f5; + padding: 20px; + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + margin-bottom: 20px; +} + +.wallet-info-section h2 { + color: #333; + margin-bottom: 15px; +} + +.wallet-info-section p { + margin: 10px 0; + line-height: 1.5; +} + +/* 钱包链接样式 */ +.wallet-link { + display: inline-block; + margin-right: 15px; + padding: 8px 15px; + background-color: #4a90e2; + color: white; + text-decoration: none; + border-radius: 4px; + font-weight: 500; + transition: background-color 0.2s; +} + +.wallet-link:hover { + background-color: #3a7bc8; +} + +/* 字体 */ +@font-face { + font-family: title; + src: url(@/assets/fonts/EricaOne-Regular.ttf); +} +@font-face { + font-family: content; + src: url(@/assets/fonts/RammettoOne-Regular.ttf); +} + +/* 测验横幅样式 */ +.quiz-banner { + margin-top: 3rem; + padding: 2rem; + background: linear-gradient(135deg, #3498db, #2980b9); + border-radius: 12px; + color: white; + text-align: center; + box-shadow: 0 6px 16px rgba(0, 0, 0, 0.1); + animation: fadeIn 0.5s ease-in-out; +} + +.quiz-banner h2 { + font-size: 1.8rem; + margin-bottom: 1rem; +} + +.quiz-banner p { + margin-bottom: 1.5rem; + font-size: 1.1rem; + opacity: 0.9; +} + +.quiz-link { + display: inline-block; + background-color: white; + color: #2980b9; + padding: 0.75rem 2rem; + border-radius: 50px; + font-weight: bold; + text-decoration: none; + transition: all 0.3s ease; +} + +.quiz-link:hover { + transform: translateY(-3px); + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); +} + +/* 添加淡入动画 */ +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} diff --git a/move202503/AKAKing23/code/chain_front/src/lib/utils.ts b/move202503/AKAKing23/code/chain_front/src/lib/utils.ts new file mode 100644 index 00000000..bd0c391d --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/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/move202503/AKAKing23/code/chain_front/src/main.tsx b/move202503/AKAKing23/code/chain_front/src/main.tsx new file mode 100644 index 00000000..d42ba045 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/main.tsx @@ -0,0 +1,23 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import { RouterProvider } from "react-router-dom"; +import "./index.css"; +import router from "./router"; +import "../lang/index"; +import { SuiClientProvider, WalletProvider } from "@mysten/dapp-kit"; +import "@mysten/dapp-kit/dist/index.css"; +import { networkConfig } from "./utils/networkConfig.ts"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +const queryClient = new QueryClient(); + +createRoot(document.getElementById("root")!).render( + + + + + + + + + +); diff --git a/move202503/AKAKing23/code/chain_front/src/pages/About.tsx b/move202503/AKAKing23/code/chain_front/src/pages/About.tsx new file mode 100644 index 00000000..0207ba1e --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/pages/About.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; + +const About: React.FC = () => { + return ( +
    +

    关于我们

    +

    LearnChain-X是一个专注于区块链技术教育的平台,我们致力于帮助更多人了解和掌握区块链技术。

    +

    我们提供从入门到精通的系列课程,涵盖区块链基础知识、智能合约开发、DApp开发等多个方面。

    + +

    我们的使命

    +

    普及区块链知识,培养区块链技术人才,推动区块链技术在各行业的应用。

    + +
    + 返回首页 +
    +
    + ); +}; + +export default About; \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/pages/Courses.tsx b/move202503/AKAKing23/code/chain_front/src/pages/Courses.tsx new file mode 100644 index 00000000..80bdcf7d --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/pages/Courses.tsx @@ -0,0 +1,61 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; + +interface Course { + id: string; + title: string; + description: string; + level: string; +} + +const Courses: React.FC = () => { + // 模拟课程数据 + const coursesList: Course[] = [ + { + id: '1', + title: '区块链基础入门', + description: '了解区块链的基本概念、原理和应用场景', + level: '初级' + }, + { + id: '2', + title: '以太坊与智能合约开发', + description: '学习以太坊平台和Solidity智能合约开发', + level: '中级' + }, + { + id: '3', + title: 'DApp全栈开发实战', + description: '从前端到后端,完整开发去中心化应用', + level: '高级' + }, + ]; + + return ( +
    +

    课程列表

    +
    + {coursesList.map(course => ( +
    +

    {course.title}

    +

    {course.description}

    + 难度: {course.level} + 查看详情 +
    + ))} +
    + +
    +

    测试你的区块链知识

    +

    完成我们的区块链选择题测验,检验你的学习成果!

    + 开始测验 +
    + +
    + 返回 +
    +
    + ); +}; + +export default Courses; \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/pages/Dashboard.tsx b/move202503/AKAKing23/code/chain_front/src/pages/Dashboard.tsx new file mode 100644 index 00000000..6b187716 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/pages/Dashboard.tsx @@ -0,0 +1,393 @@ +import React, { useEffect, useRef, useState } from "react"; +import { gsap } from "gsap"; +import { useNavigate } from "react-router-dom"; +import "./Dashbord.css"; +// import BackgroundBall from "@/components/BackgroundBall"; +const Dashboard: React.FC = () => { + const navigate = useNavigate(); + const [isVisible, setIsVisible] = useState(true); + const [isMobile, setIsMobile] = useState(false); // 添加移动设备检测状态 + const containerRef = useRef(null); + const middleRef = useRef(null); + const titleRef = useRef(null); + const bigballRef = useRef(null); + const smallballsRefs = useRef([]); + const lineRef = useRef(null); + const ballsRef = useRef(null); + const titleLettersRefs = useRef([]); + const navRef = useRef(null); + const infoRef = useRef(null); + const animaterRef = useRef(null); + const maxDistanceRef = useRef(0); + + const isSafari = + /^((?!chrome|android).)*safari/i.test(navigator.userAgent) && + !navigator.userAgent.includes("CriOS"); + + // 重置welcome动画样式 + const reset = () => { + gsap + .timeline() + .set(lineRef.current, { + scale: 1, + opacity: 1, + }) + .set(ballsRef.current, { + scale: 1, + opacity: 1, + }) + .set(titleLettersRefs.current, { + clipPath: "circle(100%)", + y: 0, + }) + .set([navRef.current, infoRef.current], { + opacity: 1, + }); + + if (navRef.current) { + navRef.current.classList.add("welcome_nav_show"); + } + }; + + // 显示welcome + const show = () => { + // 动画播放器存在且正在播放动画:不执行函数,否则会因为动画冲突导致BUG + if (animaterRef.current && animaterRef.current.isActive()) return; + + reset(); // 重置为最终状态 + setIsVisible(true); // 显示welcome + + // 不再播放从小到大的动画 + animaterRef.current = gsap.timeline(); + }; + + // 隐藏welcome + const hidden = (immediate?: () => void, next?: () => void) => { + // 动画播放器存在且正在播放动画:不执行函数,否则会因为动画冲突导致BUG + if (animaterRef.current && animaterRef.current.isActive()) return; + + if (immediate) immediate(); // 存在立即执行代码,则立即执行 + + // 播放动画 + animaterRef.current = gsap + .timeline() + .to(lineRef.current, { + opacity: 0, + duration: 0.8, + ease: "power3.out", + }) + .to( + ballsRef.current, + { + opacity: 0, + duration: 0.8, + ease: "power3.out", + }, + "<" + ) + .to( + titleLettersRefs.current, + { + clipPath: "circle(0%)", + y: "-50%", + duration: 0.5, + ease: "power3.out", + stagger: { + each: 0.03, + from: "random", + }, + }, + "<" + ) + .to( + [navRef.current, infoRef.current], + { + opacity: 0, + duration: 0.8, + ease: "power3.out", + onComplete: () => { + setIsVisible(false); // 隐藏welcome + if (next) next(); // 如果有后续函数,则执行 + }, + }, + "<" + ); + }; + + // 移动标题文字,移动端和桌面端使用不同的移动距离 + const moveTitle = (x: number, y: number) => { + // 为移动设备调整移动距离 + const factor = isMobile ? 20 : 40; + + // 更新距离:以屏幕中心为基准。将距离与屏幕尺寸绑定:避免不同尺寸下移动距离差异过大 + // const distanceX = ((x - window.innerWidth / 2) / window.innerWidth) * factor; + const distanceX = + ((x - window.innerWidth / 3) / window.innerWidth) * factor; + // const distanceY = ((y - window.innerHeight / 2) / window.innerHeight) * factor; + const distanceY = + ((y - window.innerHeight / 3) / window.innerHeight) * factor; + + // 移动标题 + gsap.to(titleRef.current, { + x: `${distanceX}px`, + y: `${distanceY}px`, + duration: isMobile ? 2 : 3, // 移动设备上使用更短的动画时间 + ease: "power3.out", + }); + }; + + // 移动小球,也根据设备类型调整 + const moveSmallballs = (x: number, y: number) => { + // 更新距离:以屏幕中心为基准 + let distanceX = x - window.innerWidth / 2; + let distanceY = y - window.innerHeight / 2; + + // 移动设备上缩小移动距离 + if (isMobile) { + distanceX *= 0.5; + distanceY *= 0.5; + } + + // 限制移动边界 + distanceX = Math.min( + maxDistanceRef.current, + Math.max(-maxDistanceRef.current, distanceX) + ); + distanceY = Math.min( + maxDistanceRef.current, + Math.max(-maxDistanceRef.current, distanceY) + ); + + // 移动小球 + gsap.to(smallballsRefs.current, { + x: `${distanceX}px`, + y: `${distanceY}px`, + duration: isMobile ? 0.7 : 1, // 移动设备上使用更短的动画时间 + ease: "power3.out", + stagger: 0.1, + }); + }; + + // 导航函数替代全局存储的方法 + const startNewGame = (difficulty: string) => { + hidden(undefined, () => navigate(`/quiz?difficulty=${difficulty}`)); + }; + + // const continueGame = () => { + // if (playerActive) { + // hidden(undefined, () => navigate("/game/continue")); + // } + // }; + + // const showRank = () => { + // hidden(undefined, () => navigate("/rank")); + // }; + + // const showInstructions = () => { + // hidden(undefined, () => navigate("/instructions")); + // }; + + // 检查是否是移动设备 + const checkMobile = () => { + setIsMobile(window.innerWidth <= 768); + }; + + // 调整尺寸 + const handleResize = () => { + if (bigballRef.current) { + // 小球的移动范围局限在大球的周围 + maxDistanceRef.current = bigballRef.current.offsetWidth / 2.5; + } + + // 检查设备类型 + checkMobile(); + }; + + useEffect(() => { + // 检查是否有活跃玩家存档 + // 这里可以添加从localStorage或API获取玩家状态的逻辑 + // const checkPlayerActive = async () => { + // // 示例:检查localStorage中是否有玩家数据 + // const playerData = localStorage.getItem("playerData"); + // setPlayerActive(!!playerData); + // }; + + // checkPlayerActive(); + + // 初始化检查设备类型 + checkMobile(); + + // 绑定相关事件 + const bindEvents = () => { + const container = containerRef.current; + const middle = middleRef.current; + + if (container) { + // 在界面范围内:标题文字跟随鼠标/手指偏移 + container.onmousemove = (e: MouseEvent) => { + moveTitle(e.x, e.y); + }; + container.ontouchmove = (e: TouchEvent) => { + moveTitle(e.touches[0].clientX, e.touches[0].clientY); + }; + // 移动结束后,让标题回到原位,即屏幕中心点 + container.onmouseout = () => { + moveTitle(window.innerWidth / 2, window.innerHeight / 2); + }; + container.ontouchend = () => { + moveTitle(window.innerWidth / 2, window.innerHeight / 2); + }; + } + + if (middle) { + // 在靠近中间内容的范围内:小球跟随鼠标/手指偏移,形成融球效果 + middle.onmousemove = (e: MouseEvent) => { + moveSmallballs(e.x, e.y); + }; + middle.ontouchmove = (e: TouchEvent) => { + moveSmallballs(e.touches[0].clientX, e.touches[0].clientY); + }; + // 移动结束后,让小球回到原位,即屏幕中心点 + middle.onmouseout = () => { + moveSmallballs(window.innerWidth / 2, window.innerHeight / 2); + }; + middle.ontouchend = () => { + moveSmallballs(window.innerWidth / 2, window.innerHeight / 2); + }; + } + }; + + // 初始化 + handleResize(); + bindEvents(); + + // 显示欢迎界面 + show(); + + // 添加window的resize事件监听 + window.addEventListener("resize", handleResize); + + // 清理函数 + return () => { + window.removeEventListener("resize", handleResize); + }; + }, []); + + return ( +
    +
    +
    +
    + {"MOVE".split("").map((letter, index) => ( +

    { + if (el && !titleLettersRefs.current.includes(el)) { + titleLettersRefs.current.push(el); + } + }} + > + {letter} +

    + ))} +
    +
    + {"START".split("").map((letter, index) => ( +

    { + if (el && !titleLettersRefs.current.includes(el)) { + titleLettersRefs.current.push(el); + } + }} + > + {letter} +

    + ))} +
    +
    +

    + The beloved technology growth platform of global geeks +

    + {/* safari浏览器对css的filter适配不友好,这里检测到如果是safari浏览器,则取消滤镜融球效果 */} +
    +
    + {[1, 1.5, 1.2].map((scale, index) => ( +
    { + if (el && !smallballsRefs.current.includes(el)) { + smallballsRefs.current.push(el); + } + }} + >
    + ))} +
    + + + +
    +
    +
    +
    startNewGame('primary')}> +
    +

    Primary

    +
    +
    +
    +
    startNewGame('intermediate')}> +
    +

    Intermediate

    +
    +
    +
    +
    startNewGame('advanced')}> +
    +

    Advanced

    +
    +
    + {/*
    +
    +
    +

    INSTRUTION

    +
    +
    */} +
    +
    + ); +}; + +export default Dashboard; diff --git a/move202503/AKAKing23/code/chain_front/src/pages/Dashbord.css b/move202503/AKAKing23/code/chain_front/src/pages/Dashbord.css new file mode 100644 index 00000000..67a386d9 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/pages/Dashbord.css @@ -0,0 +1,388 @@ +.welcome { + --scale: 1; + justify-content: center; + align-items: center; +} + +/* ._fullscreen { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + z-index: 100; +} */ + +._fullscreen { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + display: flex; + z-index: 100; + overflow: hidden; +} + +._hidden { + display: none; +} + +.welcome_middle { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 100vw; + height: 100vh; + /* width: 100%; */ + /* height: 100%; */ + /* width: calc(var(--scale) * 82rem); + height: calc(var(--scale) * 55rem); */ +} + +.welcome_middle_title { + display: flex; + flex-direction: column; + position: absolute; + left: 300px; + color: var(--color_white); + mix-blend-mode: exclusion; + z-index: 10; + font-family: title !important; +} + +.welcome_middle_title > div { + display: flex; +} + +.welcome_middle_title > div:nth-child(1) { + margin-right: calc(var(--scale) * 15rem); +} + +.welcome_middle_title > div:nth-child(2) { + justify-content: flex-end; + margin-left: calc(var(--scale) * 15rem); +} + +.welcome_middle_title p { + font-family: title; + /* line-height: calc(var(--scale) * 17rem); */ +} + +.welcome_middle_info { + position: absolute; + bottom: 30px; + left: 30px; + width: 40%; + /* color: var(--color_back); */ + color: var(--color_white); + line-height: calc(var(--scale) * 3.5rem); + mix-blend-mode: exclusion; + z-index: 10; + font-family: title; +} + +.welcome_middle_balls { + position: absolute; + display: flex; + justify-content: center; + align-items: center; + /* width: calc(var(--scale) * 85rem); + height: calc(var(--scale) * 85rem); */ + width: 100vw; + height: 100vh; +} + +.welcome_middle_balls div { + position: absolute; + left: 500px; +} + +.welcome_middle_balls_filter { + filter: contrast(1000%); + /* background-color: var(--color_back); */ + background-color: var(--color_white); + mix-blend-mode: var(--mix); + opacity: 0.5; +} + +.welcome_middle_balls_filter div { + filter: blur(calc(var(--scale) * 3rem)); +} + +.welcome_middle_balls_big { + width: calc(var(--scale) * 30rem); + height: calc(var(--scale) * 30rem); + background-color: var(--color_front); + border-radius: 100%; +} + +.welcome_middle_balls_small { + width: calc(var(--scale) * 15rem * var(--s)); + height: calc(var(--scale) * 15rem * var(--s)); + background-color: var(--color_front); + border-radius: 100%; +} + +.welcome_middle_line { + position: absolute; + width: calc(var(--scale) * 66rem); + overflow: visible; +} + +.welcome_middle_line circle { + stroke: var(--color_front); + stroke-dasharray: 0 calc(var(--scale) * 2rem); + transform-origin: center; + /* animation: welcome_line_rotate 8s linear infinite; */ +} + +.welcome_nav { + /* 整个选项框显示前的旋转度数 */ + --before_rotate: 45deg; + /* 整个选项框显示后的旋转度数 */ + --after_rotate: 0deg; + /* 每一个选项的间隔旋转度数 */ + --interval_rotate: 12deg; + /* 每一个选项屏幕比例修改后的修正旋转度数 */ + --correct_rotate: 0deg; + position: absolute; + display: flex; + justify-content: center; + align-items: center; + /* width: calc(var(--scale) * 135rem); */ + width: calc(var(--scale) * 100rem); + height: calc(var(--scale) * 50rem); + transform: rotate(var(--before_rotate)); + pointer-events: none; + /* 样式偏上 */ + bottom: 200px; +} + +.welcome_nav_show { + transform: rotate(var(--after_rotate)); + transition: transform 1.2s var(--ease_out); +} + +.welcome_nav_line { + position: absolute; + width: 100%; + overflow: visible; + animation: welcome_line_rotate 15s linear infinite; +} + +.welcome_nav_line circle { + stroke: var(--color_front); + stroke-dasharray: 0 calc(var(--scale) * 2rem); +} + +.welcome_nav_selection { + position: absolute; + /* width: 100%; */ + width: 70%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + transform-origin: center; + transform: rotate(calc(var(--interval_rotate) * var(--i))); +} + +.wns_node { + position: absolute; + display: flex; + align-items: center; + left: 80%; + height: calc(var(--scale) * 7rem); + transform-origin: left; + transform: rotate(calc(var(--interval_rotate) * var(--i) * -1 - var(--correct_rotate))); + pointer-events: all; + cursor: pointer; +} + +.wns_node div { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: calc(var(--scale) * 1rem); + height: calc(var(--scale) * 1rem); + background-color: var(--color_front); + border-radius: 100%; + margin-right: calc(var(--scale) * 1.5rem); +} + +.wns_node div::after { + content: ""; + position: absolute; + width: 200%; + height: 200%; + border: calc(var(--scale) * 0.05rem) solid var(--color_front); + border-radius: 100%; + transform: scale(0); + transition: transform 0.5s var(--ease_out); +} + +.wns_node p { + /* align-self: flex-end; */ + color: var(--color_front); + white-space: nowrap; + transition: transform 0.5s var(--ease_out); +} + +.wns_unclickable { + pointer-events: none; + cursor: auto; +} + +.wns_unclickable div { + background-color: var(--color_gray); +} + +.wns_unclickable p { + color: var(--color_gray); +} + +@media (hover: hover) { + .wns_node:hover div::after { + transform: scale(1); + } + .wns_node:hover p { + transform: translateX(5%); + } +} + +._dashed { + fill: none; + stroke-width: 0.2; +} + +._font_2 { + font-size: calc(var(--scale) * 2.2rem); + font-family: title !important; +} + +._font_3 { + font-size: calc(var(--scale) * 2rem); +} + +._font_6 { + /* font-size: calc(var(--scale) * 15rem); */ + font-size: calc(var(--scale) * 8rem); +} + +/* 定义全局CSS变量,通常会在根样式中定义 */ +:root { + --color_white: #ffffff; + /* --color_front: #041a31; */ + --color_front: #020432; + --color_back: #000000; + --color_gray: #a0a0a0; + --mix: difference; + --ease_out: cubic-bezier(0.33, 1, 0.68, 1); +} + +@keyframes welcome_line_rotate { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +@media screen and (max-aspect-ratio: 1/1) { + .welcome_nav { + --interval_rotate: 25deg; + --before_rotate: 5deg; + --after_rotate: 60deg; + --correct_rotate: 60deg; + width: calc(var(--scale) * 135rem * 0.9); + height: calc(var(--scale) * 135rem * 0.9); + } + .wns_node { + left: 100%; + } +} + +/* 添加移动端适配 */ +@media screen and (max-width: 768px) { + .welcome { + --scale: 0.5; /* 在移动设备上缩小整体比例 */ + } + + .welcome_middle { + width: 100%; + height: auto; + flex-direction: column; + } + + .welcome_middle_title { + transform: scale(0.4); + } + + .welcome_middle_title > div:nth-child(1) { + margin-right: calc(var(--scale) * 5rem); + } + + .welcome_middle_title > div:nth-child(2) { + margin-left: calc(var(--scale) * 5rem); + } + + .welcome_middle_info { + width: 80%; + text-align: center; + position: relative; + margin-top: 1rem; + } + + .welcome_nav { + width: calc(var(--scale) * 105rem); + height: calc(var(--scale) * 105rem); + } +} + +/* 小屏幕设备的更多适配 */ +@media screen and (max-width: 480px) { + .welcome { + --scale: 0.35; /* 在更小的移动设备上进一步缩小 */ + } + + .welcome_middle_title { + transform: scale(0.5); + } + + .welcome_nav { + width: calc(var(--scale) * 95rem); + height: calc(var(--scale) * 95rem); + } + + ._font_6 { + font-size: calc(var(--scale) * 6rem); + } + + ._font_3 { + font-size: calc(var(--scale) * 2.5rem); + } + + ._font_2 { + font-size: calc(var(--scale) * 1.8rem); + } +} + +/* 针对横屏模式的适配 */ +@media screen and (orientation: landscape) and (max-height: 500px) { + .welcome { + --scale: 0.4; + } + + .welcome_middle { + height: 90vh; + } + + .welcome_nav { + transform: scale(0.8); + } +} \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/pages/Dashbord.module.css b/move202503/AKAKing23/code/chain_front/src/pages/Dashbord.module.css new file mode 100644 index 00000000..7fb4b9d9 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/pages/Dashbord.module.css @@ -0,0 +1,278 @@ +.welcome { + --scale: 1; + justify-content: center; + align-items: center; + } + + ._fullscreen { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + z-index: 100; + } + + ._hidden { + display: none; + } + + .welcome_middle { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: calc(var(--scale) * 82rem); + height: calc(var(--scale) * 55rem); + } + + .welcome_middle_title { + display: flex; + flex-direction: column; + position: absolute; + color: var(--color_white); + mix-blend-mode: exclusion; + z-index: 10; + } + + .welcome_middle_title > div { + display: flex; + } + + .welcome_middle_title > div:nth-child(1) { + margin-right: calc(var(--scale) * 15rem); + } + + .welcome_middle_title > div:nth-child(2) { + justify-content: flex-end; + margin-left: calc(var(--scale) * 15rem); + } + + .welcome_middle_title p { + font-family: title; + line-height: calc(var(--scale) * 17rem); + } + + .welcome_middle_info { + position: absolute; + left: 0; + bottom: 0; + width: 40%; + color: var(--color_white); + line-height: calc(var(--scale) * 3.5rem); + mix-blend-mode: exclusion; + z-index: 10; + } + + .welcome_middle_balls { + position: absolute; + display: flex; + justify-content: center; + align-items: center; + width: calc(var(--scale) * 85rem); + height: calc(var(--scale) * 85rem); + } + + .welcome_middle_balls div { + position: absolute; + } + + .welcome_middle_balls_filter { + filter: contrast(1000%); + background-color: var(--color_back); + mix-blend-mode: var(--mix); + } + + .welcome_middle_balls_filter div { + filter: blur(calc(var(--scale) * 3rem)); + } + + .welcome_middle_balls_big { + width: calc(var(--scale) * 30rem); + height: calc(var(--scale) * 30rem); + background-color: var(--color_front); + border-radius: 100%; + } + + .welcome_middle_balls_small { + width: calc(var(--scale) * 15rem * var(--s)); + height: calc(var(--scale) * 15rem * var(--s)); + background-color: var(--color_front); + border-radius: 100%; + } + + .welcome_middle_line { + position: absolute; + width: calc(var(--scale) * 66rem); + overflow: visible; + } + + .welcome_middle_line circle { + stroke: var(--color_front); + stroke-dasharray: 0 calc(var(--scale) * 2rem); + transform-origin: center; + animation: welcome_line_rotate 8s linear infinite; + } + + .welcome_nav { + /* 整个选项框显示前的旋转度数 */ + --before_rotate: 45deg; + /* 整个选项框显示后的旋转度数 */ + --after_rotate: 0deg; + /* 每一个选项的间隔旋转度数 */ + --interval_rotate: 12deg; + /* 每一个选项屏幕比例修改后的修正旋转度数 */ + --correct_rotate: 0deg; + position: absolute; + display: flex; + justify-content: center; + align-items: center; + width: calc(var(--scale) * 135rem); + height: calc(var(--scale) * 135rem); + transform: rotate(var(--before_rotate)); + pointer-events: none; + } + + .welcome_nav_show { + transform: rotate(var(--after_rotate)); + transition: transform 1.2s var(--ease_out); + } + + .welcome_nav_line { + position: absolute; + width: 100%; + overflow: visible; + animation: welcome_line_rotate 15s linear infinite; + } + + .welcome_nav_line circle { + stroke: var(--color_front); + stroke-dasharray: 0 calc(var(--scale) * 2rem); + } + + .welcome_nav_selection { + position: absolute; + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + transform-origin: center; + transform: rotate(calc(var(--interval_rotate) * var(--i))); + } + + .wns_node { + position: absolute; + display: flex; + align-items: center; + left: 99.7%; + height: calc(var(--scale) * 7rem); + transform-origin: left; + transform: rotate(calc(var(--interval_rotate) * var(--i) * -1 - var(--correct_rotate))); + pointer-events: all; + cursor: pointer; + } + + .wns_node div { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: calc(var(--scale) * 1rem); + height: calc(var(--scale) * 1rem); + background-color: var(--color_front); + border-radius: 100%; + margin-right: calc(var(--scale) * 1rem); + } + + .wns_node div::after { + content: ""; + position: absolute; + width: 200%; + height: 200%; + border: calc(var(--scale) * 0.05rem) solid var(--color_front); + border-radius: 100%; + transform: scale(0); + transition: transform 0.5s var(--ease_out); + } + + .wns_node p { + align-self: flex-end; + color: var(--color_front); + white-space: nowrap; + transition: transform 0.5s var(--ease_out); + } + + .wns_unclickable { + pointer-events: none; + cursor: auto; + } + + .wns_unclickable div { + background-color: var(--color_gray); + } + + .wns_unclickable p { + color: var(--color_gray); + } + + @media (hover: hover) { + .wns_node:hover div::after { + transform: scale(1); + } + .wns_node:hover p { + transform: translateX(5%); + } + } + + ._dashed { + fill: none; + stroke-width: 0.2; + } + + ._font_2 { + font-size: calc(var(--scale) * 2rem); + } + + ._font_3 { + font-size: calc(var(--scale) * 3rem); + } + + ._font_6 { + font-size: calc(var(--scale) * 15rem); + } + + /* 定义全局CSS变量,通常会在根样式中定义 */ + :root { + --color_white: #ffffff; + /* --color_front: #0a84ff; */ + --color_front: #fff; + --color_back: #000000; + --color_gray: #a0a0a0; + --mix: difference; + --ease_out: cubic-bezier(0.33, 1, 0.68, 1); + } + + @keyframes welcome_line_rotate { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } + + @media screen and (max-aspect-ratio: 1/1) { + .welcome_nav { + --interval_rotate: 25deg; + --before_rotate: 5deg; + --after_rotate: 60deg; + --correct_rotate: 60deg; + width: calc(var(--scale) * 135rem * 0.9); + height: calc(var(--scale) * 135rem * 0.9); + } + .wns_node { + left: 100%; + } + } \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/pages/EncryptAndUpload.tsx b/move202503/AKAKing23/code/chain_front/src/pages/EncryptAndUpload.tsx new file mode 100644 index 00000000..1ba67e6f --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/pages/EncryptAndUpload.tsx @@ -0,0 +1,344 @@ +// @ts-nocheck +import React, { useState } from "react"; +import { Transaction } from "@mysten/sui/transactions"; +import { TESTNET_COUNTER_PACKAGE_ID } from "@/utils/constants"; +import { useSignAndExecuteTransaction, useSuiClient } from "@mysten/dapp-kit"; +import { getAllowlistedKeyServers, SealClient } from "@mysten/seal"; +import { fromHex, toHex } from "@mysten/sui/utils"; + +export type Data = { + status: string; + blobId: string; + endEpoch: string; + suiRefType: string; + suiRef: string; + suiBaseUrl: string; + blobUrl: string; + suiUrl: string; + isImage: string; +}; + +interface WalrusUploadProps { + policyObject: string; + cap_id: string; + moduleName: string; +} + +type WalrusService = { + id: string; + name: string; + publisherUrl: string; + aggregatorUrl: string; +}; + +export function WalrusUpload({ + policyObject, + cap_id, + moduleName, +}: WalrusUploadProps) { + const [file, setFile] = useState(null); + const [info, setInfo] = useState(null); + const [isUploading, setIsUploading] = useState(false); + const [selectedService, setSelectedService] = useState("service1"); + + const SUI_VIEW_TX_URL = `https://suiscan.xyz/testnet/tx`; + const SUI_VIEW_OBJECT_URL = `https://suiscan.xyz/testnet/object`; + + const NUM_EPOCH = 1; + const suiClient = useSuiClient(); + console.log(suiClient, "suiClient---"); + + const client = new SealClient({ + suiClient, + serverObjectIds: getAllowlistedKeyServers("testnet"), + verifyKeyServers: false, + }); + console.log(client, "client----"); + + const services: WalrusService[] = [ + { + id: "service1", + name: "walrus.space", + publisherUrl: "/publisher1", + aggregatorUrl: "/aggregator1", + }, + { + id: "service2", + name: "staketab.org", + publisherUrl: "/publisher2", + aggregatorUrl: "/aggregator2", + }, + { + id: "service3", + name: "redundex.com", + publisherUrl: "/publisher3", + aggregatorUrl: "/aggregator3", + }, + { + id: "service4", + name: "nodes.guru", + publisherUrl: "/publisher4", + aggregatorUrl: "/aggregator4", + }, + { + id: "service5", + name: "banansen.dev", + publisherUrl: "/publisher5", + aggregatorUrl: "/aggregator5", + }, + { + id: "service6", + name: "everstake.one", + publisherUrl: "/publisher6", + aggregatorUrl: "/aggregator6", + }, + ]; + + function getAggregatorUrl(path: string): string { + const service = services.find((s) => s.id === selectedService); + const cleanPath = path.replace(/^\/+/, "").replace(/^v1\//, ""); + return `${service?.aggregatorUrl}/v1/${cleanPath}`; + } + + function getPublisherUrl(path: string): string { + const service = services.find((s) => s.id === selectedService); + const cleanPath = path.replace(/^\/+/, "").replace(/^v1\//, ""); + return `${service?.publisherUrl}/v1/${cleanPath}`; + } + + const { mutate: signAndExecute } = useSignAndExecuteTransaction({ + execute: async ({ bytes, signature }) => + await suiClient.executeTransactionBlock({ + transactionBlock: bytes, + signature, + options: { + showRawEffects: true, + showEffects: true, + }, + }), + }); + + const handleFileChange = (event: any) => { + const file = event.target.files[0]; + // Max 10 MiB size + if (file.size > 10 * 1024 * 1024) { + alert("File size must be less than 10 MiB"); + return; + } + // Check if file is an image + if (!file.type.startsWith("image/")) { + alert("Only image files are allowed"); + return; + } + setFile(file); + setInfo(null); + }; + + const handleSubmit = () => { + setIsUploading(true); + if (file) { + const reader = new FileReader(); + reader.onload = async function (event) { + if (event.target && event.target.result) { + const result = event.target.result; + if (result instanceof ArrayBuffer) { + const nonce = crypto.getRandomValues(new Uint8Array(5)); + const policyObjectBytes = fromHex(policyObject); + const id = toHex(new Uint8Array([...policyObjectBytes, ...nonce])); + const { encryptedObject: encryptedBytes } = await client.encrypt({ + threshold: 2, + packageId: TESTNET_COUNTER_PACKAGE_ID, + id, + data: new Uint8Array(result), + }); + const storageInfo = await storeBlob(encryptedBytes); + displayUpload(storageInfo.info, file.type); + setIsUploading(false); + } else { + console.error("Unexpected result type:", typeof result); + setIsUploading(false); + } + } + }; + reader.readAsArrayBuffer(file); + } else { + console.error("No file selected"); + } + }; + + const displayUpload = (storage_info: any, media_type: any) => { + let info; + if ("alreadyCertified" in storage_info) { + info = { + status: "Already certified", + blobId: storage_info.alreadyCertified.blobId, + endEpoch: storage_info.alreadyCertified.endEpoch, + suiRefType: "Previous Sui Certified Event", + suiRef: storage_info.alreadyCertified.event.txDigest, + suiBaseUrl: SUI_VIEW_TX_URL, + blobUrl: getAggregatorUrl( + `/v1/blobs/${storage_info.alreadyCertified.blobId}` + ), + suiUrl: `${SUI_VIEW_OBJECT_URL}/${storage_info.alreadyCertified.event.txDigest}`, + isImage: media_type.startsWith("image"), + }; + } else if ("newlyCreated" in storage_info) { + info = { + status: "Newly created", + blobId: storage_info.newlyCreated.blobObject.blobId, + endEpoch: storage_info.newlyCreated.blobObject.storage.endEpoch, + suiRefType: "Associated Sui Object", + suiRef: storage_info.newlyCreated.blobObject.id, + suiBaseUrl: SUI_VIEW_OBJECT_URL, + blobUrl: getAggregatorUrl( + `/v1/blobs/${storage_info.newlyCreated.blobObject.blobId}` + ), + suiUrl: `${SUI_VIEW_OBJECT_URL}/${storage_info.newlyCreated.blobObject.id}`, + isImage: media_type.startsWith("image"), + }; + } else { + throw Error("Unhandled successful response!"); + } + setInfo(info); + }; + + const storeBlob = (encryptedData: Uint8Array) => { + return fetch(`${getPublisherUrl(`/v1/blobs?epochs=${NUM_EPOCH}`)}`, { + method: "PUT", + body: encryptedData, + }).then((response) => { + if (response.status === 200) { + return response.json().then((info) => { + return { info }; + }); + } else { + alert( + "Error publishing the blob on Walrus, please select a different Walrus service." + ); + setIsUploading(false); + throw new Error("Something went wrong when storing the blob!"); + } + }); + }; + + async function handlePublish( + wl_id: string, + cap_id: string, + moduleName: string + ) { + const tx = new Transaction(); + tx.moveCall({ + target: `${packageId}::${moduleName}::publish`, + arguments: [ + tx.object(wl_id), + tx.object(cap_id), + tx.pure.string(info!.blobId), + ], + }); + + tx.setGasBudget(10000000); + signAndExecute( + { + transaction: tx, + }, + { + onSuccess: async (result) => { + console.log("res", result); + alert( + "Blob attached successfully, now share the link or upload more." + ); + }, + } + ); + } + + return ( +
    +
    +
    +
    Select Walrus service:
    + +
    + +

    File size must be less than 10 MiB. Only image files are allowed.

    + + {isUploading && ( +
    +
    + ); +} + +export default WalrusUpload; diff --git a/move202503/AKAKing23/code/chain_front/src/pages/Home.tsx b/move202503/AKAKing23/code/chain_front/src/pages/Home.tsx new file mode 100644 index 00000000..b55570fa --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/pages/Home.tsx @@ -0,0 +1,21 @@ +import React from "react"; +import TypeWriter from "../components/TypeWriter"; +import Loading from "@/components/Loading"; +const Home: React.FC = () => { + return ( +
    +
    +

    知识上链,成就永恒

    +

    + +

    +
    + console.log("加载动画完成")} /> +
    + ); +}; + +export default Home; diff --git a/move202503/AKAKing23/code/chain_front/src/pages/NotFound.tsx b/move202503/AKAKing23/code/chain_front/src/pages/NotFound.tsx new file mode 100644 index 00000000..6f7d5c37 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/pages/NotFound.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; + +const NotFound: React.FC = () => { + return ( +
    +

    404 - 页面未找到

    +

    抱歉,您访问的页面不存在。

    + 返回首页 +
    + ); +}; + +export default NotFound; \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/pages/Quiz.tsx b/move202503/AKAKing23/code/chain_front/src/pages/Quiz.tsx new file mode 100644 index 00000000..2e7103cb --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/pages/Quiz.tsx @@ -0,0 +1,1116 @@ +// @ts-nocheck +import React, { useState, useEffect, useRef } from "react"; +import { Link, useSearchParams } from "react-router-dom"; +import { + sendMessageToCoze, + verifyAnswer, + getQuestionSolution, +} from "../api/coze"; +import { + createDirectRewardParams, + createViewSolutionSimpleTransaction, + createAddSimpleQuestionParams, + createSelfMintSBTParams, + CONTRACT_ADDRESS, +} from "../api/sui"; +import "../styles/Quiz.css"; +import { TESTNET_QUIZMANAGER_ID, TESTNET_REGISTRY_ID,TESTNET_COUNTER_PACKAGE_ID } from "@/utils/constants"; +import { + useCurrentAccount, + useSignAndExecuteTransaction, + useSuiClient, +} from "@mysten/dapp-kit"; +import { Button } from "@/components/ui/button"; +import { Loader2 } from "lucide-react"; +import { + encryptAndUploadToWalrus, + createPublishBlobTransaction, +} from "@/api/walrus"; +import { Transaction } from "@mysten/sui/transactions"; + +interface QuizQuestion { + id?: number; + question: string; + options: string[]; + explanation?: string; +} + +const Quiz: React.FC = () => { + const [searchParams] = useSearchParams(); + const difficulty = searchParams.get("difficulty") || "primary"; + const [loading, setLoading] = useState(true); + const [questions, setQuestions] = useState([]); + const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0); + const [selectedOption, setSelectedOption] = useState(null); + const [score, setScore] = useState(0); + const [quizCompleted, setQuizCompleted] = useState(false); + const [showAnswer, setShowAnswer] = useState(false); + const [answerResult, setAnswerResult] = useState<{ + isCorrect: boolean; + correctAnswer: string | number; + correctOptionLetter?: string; + explanation?: string; + } | null>(null); + const [sbtAwarded, setSbtAwarded] = useState(false); + const [encryptingQuestions, setEncryptingQuestions] = + useState(false); + const [questionsEncrypted, setQuestionsEncrypted] = useState(false); + const [walrusBlobId, setWalrusBlobId] = useState(""); + const [suiWalrusUrl, setSuiWalrusUrl] = useState(""); + + const currentAccount = useCurrentAccount(); + const { mutate: signAndExecuteTransaction } = useSignAndExecuteTransaction(); + const suiClient = useSuiClient(); + // userCoinId已经不再用于查看解析功能,但仍保留用于获取和显示代币余额 + const [userCoinId, setUserCoinId] = useState(null); + const [userTokenBalance, setUserTokenBalance] = useState("0"); + + // 使用useRef创建一个引用,用于跟踪函数是否已被调用 + const encryptionAttemptedRef = useRef(false); + + // 获取用户代币ID和余额的函数 + const getUserCoinId = async (address: string) => { + try { + if (!address) return null; + + // 获取用户拥有的所有代币 + const coins = await suiClient.getCoins({ + owner: address, + coinType: `${CONTRACT_ADDRESS}::point_token::POINT_TOKEN`, + }); + console.log(coins, "coins----"); + + // 如果用户有代币,返回第一个代币的ID + if (coins && coins.data && coins.data.length > 0) { + // 计算总余额 + let totalBalance = 0n; + for (const coin of coins.data) { + if (coin.balance) { + totalBalance += BigInt(coin.balance); + } + } + + // 更新余额状态(转换为可读格式,假设代币有9位小数) + const formattedBalance = formatTokenBalance(totalBalance); + setUserTokenBalance(formattedBalance); + + return coins.data[0].coinObjectId; + } + + return null; + } catch (error) { + console.error("获取用户代币失败:", error); + return null; + } + }; + + // 格式化代币余额的辅助函数 + const formatTokenBalance = (balance: bigint): string => { + const decimals = 9; // 假设代币有9位小数 + const divisor = BigInt(10 ** decimals); + + if (balance === 0n) return "0"; + + const integerPart = balance / divisor; + const fractionalPart = balance % divisor; + + if (fractionalPart === 0n) { + return integerPart.toString(); + } + + // 确保小数部分有正确的前导零 + let fractionalStr = fractionalPart.toString().padStart(decimals, "0"); + // 移除尾部的0 + fractionalStr = fractionalStr.replace(/0+$/, ""); + + return `${integerPart}.${fractionalStr}`; + }; + + // 手动刷新代币余额 + const refreshTokenBalance = async () => { + if (currentAccount) { + await getUserCoinId(currentAccount.address); + } + }; + + // 在组件挂载和用户账户变更时获取用户代币ID和余额 + useEffect(() => { + if (currentAccount) { + getUserCoinId(currentAccount.address).then((coinId) => { + setUserCoinId(coinId); + }); + } else { + setUserTokenBalance("0"); // 重置余额 + setUserCoinId(null); + } + }, [currentAccount]); + + useEffect(() => { + const fetchQuizQuestions = async () => { + try { + setLoading(true); + // 从localStorage检查是否已经缓存了题目 + const cachedQuestions = localStorage.getItem( + `quizQuestions_${difficulty}` + ); + // 生成或获取用户ID + const userId = + localStorage.getItem("userId") || + `user_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`; + localStorage.setItem("userId", userId); + + if (cachedQuestions) { + const parsedQuestions = JSON.parse(cachedQuestions); + setQuestions(parsedQuestions); + setLoading(false); + + // 加载缓存题目后,自动加密并上传到Walrus + if ( + currentAccount && + parsedQuestions.length > 0 && + !questionsEncrypted + ) { + setTimeout(() => { + // 将parsedQuestions作为参数传递 + encryptQuestionsToWalrus(parsedQuestions); + }, 1000); + } + } else { + // 如果没有缓存,则调用API获取题目 + // 根据难度级别调整提示词 + let prompt = ""; + switch (difficulty) { + case "primary": + prompt = + "请生成3道初级Move语言相关的选择题,每道题有4个选项,格式为JSON数组"; + break; + case "intermediate": + prompt = + "请生成3道中级Move语言相关的选择题,每道题有4个选项,格式为JSON数组"; + break; + case "advanced": + prompt = + "请生成3道高级Move语言相关的选择题,每道题有4个选项,格式为JSON数组"; + break; + default: + prompt = + "请生成3道初级Move语言相关的选择题,每道题有4个选项,格式为JSON数组"; + } + + const response = await sendMessageToCoze({ + input: prompt, + userId: userId, + }); + + // 处理返回的数据 + if (response.status === "success") { + let questions = []; + + // 尝试从不同位置提取题目数据 + if (response.data?.output && Array.isArray(response.data.output)) { + // 标准格式 + questions = response.data.output; + } else if (typeof response.data === "string") { + // 如果data是字符串,尝试解析 + try { + const parsedData = JSON.parse(response.data); + questions = Array.isArray(parsedData) + ? parsedData + : parsedData.output && Array.isArray(parsedData.output) + ? parsedData.output + : []; + } catch (e) { + console.error("解析字符串数据失败", e); + } + } + console.log(questions.length, "questions.length--"); + + if (questions.length > 0) { + setQuestions(questions); + // 缓存到localStorage,包含难度信息 + localStorage.setItem( + `quizQuestions_${difficulty}`, + JSON.stringify(questions) + ); + + // 加载新题目后,如果用户已登录,自动加密并上传到Walrus + if (currentAccount) { + setTimeout(() => { + encryptQuestionsToWalrus(questions); + }, 1000); + } + } else { + // 如果未能提取到题目数据,使用默认题目 + const defaultQuestions = getDefaultQuestions(); + setQuestions(defaultQuestions); + + // 如果用户已登录,自动加密并上传默认题目到Walrus + if (currentAccount) { + setTimeout(() => { + encryptQuestionsToWalrus(defaultQuestions); + }, 1000); + } + } + } else { + // 如果返回数据格式不正确,使用默认题目 + const defaultQuestions = getDefaultQuestions(); + setQuestions(defaultQuestions); + + // 如果用户已登录,自动加密并上传默认题目到Walrus + if (currentAccount) { + setTimeout(() => { + encryptQuestionsToWalrus(defaultQuestions); + }, 1000); + } + } + + // 模拟加载时间,给loading动画一些展示时间 + setTimeout(() => { + setLoading(false); + }, 1000); + } + } catch (error) { + console.error("获取题目失败", error); + const defaultQuestions = getDefaultQuestions(); + setQuestions(defaultQuestions); + setLoading(false); + + // 如果用户已登录,加载失败时也尝试加密并上传默认题目到Walrus + if (currentAccount) { + setTimeout(() => { + encryptQuestionsToWalrus(defaultQuestions); + }, 1000); + } + } + }; + + fetchQuizQuestions(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [difficulty, currentAccount]); // 移除 questionsEncrypted 作为依赖项 + + const getDefaultQuestions = (): QuizQuestion[] => { + return [ + { + explanation: + "Move语言是由Facebook的子公司Novi Financial开发的,用于其数字货币项目Diem(原Libra)的智能合约编程语言。", + options: ["A. Google", "B. Facebook", "C. Microsoft", "D. Apple"], + question: "Move语言是由哪个组织开发的?", + }, + { + explanation: + "Move语言是一种静态类型的编程语言,它强调类型安全性和资源管理,特别适合编写智能合约。", + options: ["A. 面向对象", "B. 静态类型", "C. 动态类型", "D. 过程式"], + question: "Move语言的主要特点是什么?", + }, + { + explanation: + "在Move语言中,使用关键字'resource'来声明资源,资源是一种特殊的结构体,它代表在Move中具有持久存在的数据。", + options: ["A. struct", "B. resource", "C. module", "D. fun"], + question: "在Move语言中,以下哪个关键字用于声明资源?", + }, + ]; + }; + + const handleOptionSelect = (optionIndex: number) => { + setSelectedOption(optionIndex); + }; + + const handleNextQuestion = () => { + // 重置答案状态 + setShowAnswer(false); + setSelectedOption(null); + setAnswerResult(null); + + // 移动到下一题或完成测验 + if (currentQuestionIndex < questions.length - 1) { + setCurrentQuestionIndex(currentQuestionIndex + 1); + } else { + setQuizCompleted(true); + // 检查是否所有题目都回答正确,尝试发放SBT + if (score === questions.length && currentAccount) { + mintAchievementSBT(); + } + } + }; + + const handleCheckAnswer = async () => { + if (selectedOption === null) return; + try { + const userId = localStorage.getItem("userId") || "default"; + const result = await verifyAnswer({ + questionIndex: currentQuestionIndex, + selectedOption: selectedOption, + userId: userId, + }); + + if (result.status === "success") { + setAnswerResult(result.data); + setShowAnswer(true); + + // 如果答案正确,增加分数并调用合约奖励用户 + if (result.data.isCorrect && currentAccount) { + setScore(score + 1); + + try { + // 奖励积分数量 + const rewardAmount = 1000000000; + + // 使用useSignAndExecuteTransaction的mutate方法执行交易 + signAndExecuteTransaction( + createDirectRewardParams( + TESTNET_QUIZMANAGER_ID, + currentAccount.address, + rewardAmount + ), + { + onSuccess: (result) => { + console.log("奖励积分成功!", result); + setTimeout(() => { + refreshTokenBalance(); + }, 1000); + }, + onError: (error) => { + console.error("奖励积分失败:", error); + }, + } + ); + } catch (walletError) { + console.error("调用钱包或合约失败:", walletError); + } + } + } + } catch (error) { + console.error("验证答案失败", error); + setShowAnswer(true); + } + }; + + const handleViewSolution = async () => { + try { + const userId = localStorage.getItem("userId") || "default"; + const result = await getQuestionSolution({ + questionIndex: currentQuestionIndex, + userId: userId, + }); + + if (result.status === "success") { + // 如果用户已登录且有代币,调用合约查看解析 + if (currentAccount && userCoinId) { + try { + // 使用新的简化方法,设置销毁的代币数量 + // const amount = 100000000; // 1 POINT (考虑小数位数) + const amount = 50000000; + + // 创建交易,使用简化的方法 + const transaction = createViewSolutionSimpleTransaction( + TESTNET_QUIZMANAGER_ID, + userCoinId, + amount + ); + + // 执行交易 + signAndExecuteTransaction( + { transaction }, + { + onSuccess: () => { + // 刷新代币余额 + setTimeout(() => { + refreshTokenBalance(); + }, 1000); + + // 设置答案结果 + setAnswerResult({ + isCorrect: + selectedOption !== null && + isCorrectOption( + result.data.answer, + selectedOption, + result.data.correctOptionLetter + ), + correctAnswer: result.data.answer, + correctOptionLetter: result.data.correctOptionLetter, + explanation: result.data.explanation, + }); + setShowAnswer(true); + }, + onError: (error) => { + console.error("查看解析失败:", error); + }, + } + ); + } catch (error) { + alert("缺少积分代币"); + console.error("调用合约查看解析失败:", error); + } + } else if (currentAccount) { + alert("暂无积分代币"); + // 如果用户已登录但没有代币,使用直接奖励方法 + // try { + // // 创建直接奖励交易 + // signAndExecuteTransaction( + // createDirectRewardParams( + // TESTNET_QUIZMANAGER_ID, + // currentAccount.address, + // 1000000 // 奖励1个代币 + // ), + // { + // onSuccess: (result) => { + // console.log("查看解析成功(使用直接奖励)!", result); + // // 刷新代币余额 + // refreshTokenBalance(); + // }, + // onError: (error) => { + // console.error("查看解析失败:", error); + // }, + // } + // ); + // } catch (error) { + // console.error("调用合约查看解析失败:", error); + // } + } + } + } catch (error) { + console.error("获取答案解析失败", error); + } + }; + + const resetQuiz = () => { + setCurrentQuestionIndex(0); + setSelectedOption(null); + setScore(0); + setQuizCompleted(false); + setShowAnswer(false); + setAnswerResult(null); + setSbtAwarded(false); + }; + + // 添加简化问题到链上的示例函数 + const handleAddSimpleQuestion = async () => { + if (!currentAccount) { + console.error("用户未登录"); + return; + } + + try { + // 这里应该获取问题注册表ID + const registryId = TESTNET_REGISTRY_ID; // 使用测试网络的注册表ID + + // 创建一个问题示例 + const question = { + content: + "Move语言中,以下哪个关键字用于声明模块?\nA. struct\nB. resource\nC. module\nD. function", + }; + + // 使用签名执行交易的mutate方法来添加问题 + signAndExecuteTransaction( + createAddSimpleQuestionParams(registryId, question.content), + { + onSuccess: (result) => { + console.log("简化问题添加成功!", result); + // 这里可以解析返回的结果获取问题ID + // 前端自己存储选项和正确答案,不上传到链上 + }, + onError: (error) => { + console.error("简化问题添加失败:", error); + }, + } + ); + } catch (error) { + console.error("添加简化问题失败:", error); + } + }; + + // 铸造成就SBT奖励 + const mintAchievementSBT = async () => { + if (!currentAccount || sbtAwarded) return; + + try { + // 根据难度级别设置不同的SBT信息 + let sbtName, sbtDescription, sbtUrl; + + switch (difficulty) { + case "primary": + sbtName = "LearnChain-X 初级答题达人"; + sbtDescription = + "恭喜完成LearnChain-X初级难度的所有问题并答对全部题目,获得初级答题达人成就!"; + // sbtUrl = primaryBadge; // 使用导入的初级徽章图片 + sbtUrl = "https://learnchainx.netlify.app/primary.png"; // 使用导入的初级徽章图片 + + break; + case "intermediate": + sbtName = "LearnChain-X 中级答题达人"; + sbtDescription = + "恭喜完成LearnChain-X中级难度的所有问题并答对全部题目,获得中级答题达人成就!"; + sbtUrl = "https://learnchainx.netlify.app/intermediate.png"; // 使用导入的中级徽章图片 + break; + case "advanced": + sbtName = "LearnChain-X 高级答题达人"; + sbtDescription = + "恭喜完成LearnChain-X高级难度的所有问题并答对全部题目,获得高级答题达人成就!这证明了您在Move语言方面的专业知识!"; + sbtUrl = "https://learnchainx.netlify.app/advanced.png"; // 使用导入的中级徽章图片 + break; + default: + sbtName = "LearnChain-X 答题达人"; + sbtDescription = + "恭喜完成LearnChain-X所有问题并答对全部题目,赢得此成就徽章!"; + sbtUrl = "https://learnchainx.netlify.app/primary.png"; // 使用导入的初级徽章图片 + } + + // 创建并执行自助铸造SBT的交易 + signAndExecuteTransaction( + createSelfMintSBTParams( + sbtName, + sbtDescription, + sbtUrl, + score, // 当前得分 + questions.length // 总题目数 + ), + { + onSuccess: (result) => { + console.log("SBT铸造成功!", result); + setSbtAwarded(true); + alert( + `恭喜您获得「${ + difficulty === "primary" + ? "初级" + : difficulty === "intermediate" + ? "中级" + : "高级" + }答题达人」成就徽章!` + ); + }, + onError: (error) => { + console.error("SBT铸造失败:", error); + alert("SBT铸造失败: " + error.message); + }, + } + ); + } catch (error) { + console.error("创建SBT交易失败:", error); + } + }; + + // 加密并上传题目到Walrus + const encryptQuestionsToWalrus = async (questionsToEncrypt = questions) => { + console.log(questionsToEncrypt, "questionsToEncrypt---"); + + // 如果已经尝试过加密,直接返回 + if (encryptionAttemptedRef.current) { + console.log("已经尝试过加密,不再重复执行"); + return; + } + + // 标记已尝试加密 + encryptionAttemptedRef.current = true; + + if ( + !currentAccount || + !questionsToEncrypt.length || + encryptingQuestions || + questionsEncrypted + ) + return; + + try { + setEncryptingQuestions(true); + + // 检查是否已创建白名单或从localStorage获取白名单ID + let allowlistObjectId = localStorage.getItem("allowlist_object_id"); + + // 如果没有白名单ID,创建一个新的白名单 + if (!allowlistObjectId) { + try { + // 创建白名单交易 + const createAllowlistTx = new Transaction(); + createAllowlistTx.moveCall({ + target: `${TESTNET_COUNTER_PACKAGE_ID}::allowlist::create_allowlist`, + arguments: [] + }); + + // 执行创建白名单交易 + const createResult = await new Promise((resolve) => { + signAndExecuteTransaction( + { transaction: createAllowlistTx as any }, + { + onSuccess: (result) => { + console.log("白名单创建成功:", result); + resolve(result); + }, + onError: (error) => { + console.error("白名单创建失败:", error); + resolve(null); + } + } + ); + }); + console.log(createResult,'createResult'); + + // 从交易结果中提取白名单对象ID + if (createResult) { + try { + console.log("交易结果:", createResult); + + // 交易完成后,直接查询用户拥有的Allowlist对象 + const objects = await suiClient.getOwnedObjects({ + owner: currentAccount.address, + filter: { + StructType: `${TESTNET_COUNTER_PACKAGE_ID}::allowlist::Allowlist` + }, + options: { + showContent: true + } + }); + + console.log("找到的白名单对象:", objects); + + if (objects && objects.data && objects.data.length > 0) { + // 获取最新创建的白名单对象ID + allowlistObjectId = objects.data[0].data?.objectId; + if (allowlistObjectId) { + localStorage.setItem("allowlist_object_id", allowlistObjectId); + console.log("已创建白名单并保存ID:", allowlistObjectId); + } + } + } catch (error) { + console.error("获取白名单对象失败:", error); + } + } + } catch (error) { + console.error("创建白名单失败:", error); + } + } + + // 如果已有白名单ID,将当前用户添加到白名单 + if (allowlistObjectId && currentAccount) { + try { + // 创建添加用户到白名单的交易 + const addToAllowlistTx = new Transaction(); + addToAllowlistTx.moveCall({ + target: `${TESTNET_COUNTER_PACKAGE_ID}::allowlist::add_to_allowlist`, + arguments: [ + addToAllowlistTx.object(allowlistObjectId), + addToAllowlistTx.pure.address(currentAccount.address) + ] + }); + + // 执行添加用户到白名单的交易 + await new Promise((resolve) => { + signAndExecuteTransaction( + { transaction: addToAllowlistTx as any }, + { + onSuccess: (result) => { + console.log("用户已添加到白名单:", result); + resolve(result); + }, + onError: (error) => { + console.error("添加用户到白名单失败:", error); + resolve(null); + } + } + ); + }); + } catch (error) { + console.error("添加用户到白名单失败:", error); + } + } + + // 创建包含题目和答案的数据结构 + const questionsData = { + questions: questionsToEncrypt, + difficulty, + timestamp: Date.now(), + creator: currentAccount.address, + }; + + // 检查是否已经加密过该难度的题目 + const encryptedKey = `encrypted_${difficulty}_${currentAccount.address}`; + const hasEncrypted = localStorage.getItem(encryptedKey); + + const encryptedSuiUrl = `encryptedSuiUrl_${difficulty}_${currentAccount.address}`; + const hasEncryptedSuiUrl = localStorage.getItem(encryptedSuiUrl); + + if (hasEncrypted) { + console.log(`题目已经加密过,使用缓存的blobId: ${hasEncrypted}`); + setWalrusBlobId(hasEncrypted); + setSuiWalrusUrl(hasEncryptedSuiUrl); + setQuestionsEncrypted(true); + setEncryptingQuestions(false); + return; + } + + // 将题目数据转为JSON并创建Blob + const jsonData = JSON.stringify(questionsData); + const blob = new Blob([jsonData], { type: "application/json" }); + const file = new File([blob], `quiz_${difficulty}_${Date.now()}.json`, { + type: "application/json", + }); + + // 使用Walrus API加密并上传 + const policyObject = currentAccount.address; + const result = await encryptAndUploadToWalrus( + file, + policyObject, + suiClient as unknown // 使用类型断言解决SuiClient版本兼容问题 + ); + // 保存返回的blobId + setWalrusBlobId(result.blobId); + setSuiWalrusUrl(result.suiUrl); + setQuestionsEncrypted(true); + + // 缓存加密状态到localStorage + localStorage.setItem(encryptedKey, result.blobId); + localStorage.setItem(encryptedSuiUrl, result.suiUrl); + + console.log("题目已加密存储到Walrus:", result); + + // 显示加密成功提示 + setTimeout(() => { + // alert( + // `${difficulty}难度题目已成功加密存储到Walrus!BlobId: ${result.blobId.substring( + // 0, + // 10 + // )}...`; + // ); + console.log( + `${difficulty}难度题目已成功加密存储到Walrus!BlobId: ${result.blobId.substring( + 0, + 10 + )}...` + ); + }, 500); + + // // 可选:将blobId关联到SUI对象 + // const capId = + // "0x4bb927a676df9af934ffb8861f340a4fa1042fb1276d061304e273e71dae62b3"; // 示例ID,实际使用时需要传入有效值 + // const packageId = "0x1234"; // 替换为实际的包ID + + try { + // 使用类型断言解决Transaction版本兼容性问题 + const tx = createPublishBlobTransaction( + policyObject, + // capId, + "seal_quiz_walrus", + result.blobId, + TESTNET_COUNTER_PACKAGE_ID, + difficulty // 传递题目难度级别作为参数 + ); + + signAndExecuteTransaction( + { transaction: tx as any }, // 使用类型断言解决类型兼容性问题 + { + onSuccess: (result) => { + console.log("题目blobId已关联到SUI对象", result); + }, + onError: (error) => { + console.error("关联题目blobId失败", error); + }, + } + ); + } catch (error) { + console.error("创建关联交易失败", error); + } + } catch (error) { + console.error("加密题目失败:", error); + // 如果发生错误,重置尝试状态,允许再次尝试 + encryptionAttemptedRef.current = false; + alert("加密题目失败,请稍后再试"); + } finally { + setEncryptingQuestions(false); + } + }; + + if (loading) { + return ( +
    +
    +

    + 一大波 + {difficulty === "primary" + ? "初级" + : difficulty === "intermediate" + ? "中级" + : difficulty === "advanced" + ? "高级" + : ""} + 题库正在来临... +

    +
    + ); + } + + if (quizCompleted) { + return ( +
    +

    测验完成!

    +

    + 您的分数: {score} / {questions.length} +

    + {score === questions.length && ( +
    +

    🏆 恭喜您答对所有题目!

    + {sbtAwarded ? ( +

    + 已获得「 + {difficulty === "primary" + ? "初级" + : difficulty === "intermediate" + ? "中级" + : "高级"} + 答题达人」灵魂绑定代币成就徽章! +

    + ) : currentAccount ? ( + + ) : ( +

    请连接钱包以领取SBT成就徽章

    + )} +
    + )} +
    + + + 返回首页 + +
    +
    + ); + } + + const currentQuestion = questions[currentQuestionIndex]; + + // 如果没有题目,显示加载中 + if (!currentQuestion) { + return ( +
    +
    +

    加载题目中...

    +
    + ); + } + + return ( +
    + {/* */} + {/* 显示用户代币余额 */} + {currentAccount && ( +
    +

    + 积分余额: {userTokenBalance} POINT +

    + +
    + )} +
    +
    +
    +
    +

    + 问题 {currentQuestionIndex + 1} / {questions.length} +

    +
    +
    +

    {currentQuestion.question}

    + +
    + {currentQuestion.options.map((option, index) => ( +
    !showAnswer && handleOptionSelect(index)} + > + + {String.fromCharCode(65 + index)} + + {option} +
    + ))} +
    + + {showAnswer && answerResult && ( +
    +

    {answerResult.isCorrect ? "✓ 回答正确!" : "✗ 回答错误!"}

    + {answerResult.correctOptionLetter && ( +

    + 正确答案:{answerResult.correctOptionLetter} +

    + )} + {answerResult.explanation && ( +

    {answerResult.explanation}

    + )} +
    + )} + +
    + {selectedOption !== null && !showAnswer && ( + + )} + + {showAnswer && ( + + )} +
    +
    + {!walrusBlobId && ( + + )} + {walrusBlobId && ( +
    +
    + 题目加密信息: +
    +

    BlobId: {walrusBlobId}

    +

    难度级别: {difficulty}

    +

    题目数量: {questions.length}

    +

    状态: {questionsEncrypted ? "✅ 已加密存储" : "❌ 未加密"}

    + + Sui Object + +
    + )} + {/* 添加问题按钮,仅在开发环境显示 */} + {/* {process.env.NODE_ENV === "development" && ( +
    +
    + + + +
    + + {walrusBlobId && ( +
    +
    题目加密信息:
    +

    BlobId: {walrusBlobId}

    +

    难度级别: {difficulty}

    +

    题目数量: {questions.length}

    +

    状态: {questionsEncrypted ? "✅ 已加密存储" : "❌ 未加密"}

    +
    + )} +
    + )} */} +
    + ); +}; + +// 辅助函数,判断选项是否为正确选项 +const isCorrectOption = ( + correctAnswer: string | number, + optionIndex: number, + correctOptionLetter?: string +): boolean => { + // 如果有提供correctOptionLetter,优先使用字母判断 + if (correctOptionLetter) { + const letterIndex = correctOptionLetter.charCodeAt(0) - 65; // 'A'的ASCII码是65 + return optionIndex === letterIndex; + } + + // 以下是原有逻辑,作为备选判断方式 + if (typeof correctAnswer === "number") { + return optionIndex === correctAnswer; + } else if (typeof correctAnswer === "string") { + // 检查是否以字母前缀开头 (如 A. B. C. 等) + if (/^[A-D]\.?\s/.test(correctAnswer)) { + const letterIndex = correctAnswer.charCodeAt(0) - 65; // 'A' 的 ASCII 码是 65 + return optionIndex === letterIndex; + } + // 直接匹配内容 + const optionLetter = String.fromCharCode(65 + optionIndex); + return ( + correctAnswer.startsWith(optionLetter) || + correctAnswer.toLowerCase().includes(optionLetter.toLowerCase()) + ); + } + return false; +}; + +export default Quiz; diff --git a/move202503/AKAKing23/code/chain_front/src/pages/Rank.tsx b/move202503/AKAKing23/code/chain_front/src/pages/Rank.tsx new file mode 100644 index 00000000..ab631954 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/pages/Rank.tsx @@ -0,0 +1,398 @@ +import React, { useState, useEffect } from "react"; +import { useSearchParams } from "react-router-dom"; +import { + useCurrentAccount, + useSuiClient, + useSignAndExecuteTransaction, + useSignPersonalMessage, +} from "@mysten/dapp-kit"; +import { + SealClient, + getAllowlistedKeyServers, + SessionKey, + EncryptedObject, +} from "@mysten/seal"; +import { Button } from "@/components/ui/button"; +import { Loader2 } from "lucide-react"; +import "../styles/Rank.css"; +import { createQueryBlobsTransaction } from "@/api/walrus"; +import { TESTNET_COUNTER_PACKAGE_ID } from "@/utils/constants"; +import { Transaction } from "@mysten/sui/transactions"; +import { fromHex } from "@mysten/sui/utils"; +interface QuizQuestion { + id?: number; + question: string; + options: string[]; + explanation?: string; +} + +interface EncryptedQuizData { + questions: QuizQuestion[]; + difficulty: string; + timestamp: number; + creator: string; +} + +const Rank: React.FC = () => { + const [searchParams] = useSearchParams(); + const difficulty = searchParams.get("difficulty") || "primary"; + const suiClient = useSuiClient(); + const currentAccount = useCurrentAccount(); + const { mutate: signAndExecuteTransaction } = useSignAndExecuteTransaction(); + const { mutate: signPersonalMessage } = useSignPersonalMessage(); + + const [loading, setLoading] = useState(true); + const [decrypting, setDecrypting] = useState(false); + const [quizData, setQuizData] = useState(null); + const [walrusBlobId, setWalrusBlobId] = useState(""); + const [suiWalrusUrl, setSuiWalrusUrl] = useState(""); + const [error, setError] = useState(null); + + // 创建Seal客户端,使用类型断言处理版本兼容性问题 + // @ts-expect-error - 处理SuiClient版本兼容性问题 + const sealClient = new SealClient({ + suiClient, + serverObjectIds: getAllowlistedKeyServers("testnet"), + verifyKeyServers: false, + }); + + // 从链上查询指定难度的题目Blob列表 + const fetchQuizBlobsByDifficulty = async () => { + if (!currentAccount) return; + setError(null); + setLoading(true); + try { + // 创建查询交易 + const tx = createQueryBlobsTransaction( + difficulty, + TESTNET_COUNTER_PACKAGE_ID + ); + console.log(tx); + // 使用signAndExecuteTransaction钩子代替直接调用suiClient + signAndExecuteTransaction( + { transaction: tx as any }, // 使用类型断言解决类型兼容性问题 + { + onSuccess: (result) => { + console.log("查询交易执行成功:", result); + // 从交易结果中提取事件 + // @ts-expect-error - 处理返回值结构不兼容问题 + const events = result.events || []; + // 查找BlobPublished事件 + const blobEvents = events.filter( + (event: any) => + event.type?.includes("BlobPublished") && + event.parsedJson?.difficulty === difficulty + ); + if (blobEvents.length > 0) { + // 获取最近的一个事件 + const latestEvent = blobEvents[blobEvents.length - 1]; + const blobId = latestEvent.parsedJson?.blob_id; + const eventTx = latestEvent.id?.txDigest; + if (blobId) { + // 存储到localStorage + const encryptedKey = `encrypted_${difficulty}_${currentAccount.address}`; + localStorage.setItem(encryptedKey, blobId); + // 构建Sui对象URL + const suiUrl = `https://suiscan.xyz/testnet/object/${eventTx}`; + const encryptedSuiUrl = `encryptedSuiUrl_${difficulty}_${currentAccount.address}`; + localStorage.setItem(encryptedSuiUrl, suiUrl); + // 更新状态 + setWalrusBlobId(blobId); + setSuiWalrusUrl(suiUrl); + setError(null); + } else { + setError("无法从事件中提取blobId"); + } + } else { + setError(`未找到${difficulty}难度的题目数据,请确认已完成答题`); + } + setLoading(false); + }, + onError: (error) => { + console.error("查询题目Blob失败:", error); + setError( + `查询链上数据失败: ${ + error instanceof Error ? error.message : String(error) + }` + ); + setLoading(false); + }, + } + ); + } catch (err) { + console.error("创建查询交易失败:", err); + setError( + `创建查询交易失败: ${err instanceof Error ? err.message : String(err)}` + ); + setLoading(false); + } + }; + + useEffect(() => { + // 从localStorage获取已存储的加密题目信息 + const fetchEncryptedQuizInfo = async () => { + setLoading(true); + setTimeout(async () => { + if (!currentAccount) { + setLoading(false); + return; + } + + const aggregators = [ + "aggregator1", + "aggregator2", + "aggregator3", + "aggregator4", + "aggregator5", + "aggregator6", + ]; + const encryptedKey = `encrypted_${difficulty}_${currentAccount.address}`; + console.log(encryptedKey, "encryptedKey--"); + + const storedBlobId = localStorage.getItem(encryptedKey); + if (!storedBlobId) { + setLoading(false); + return; + } + + try { + // 设置blobId和URL + setWalrusBlobId(storedBlobId); + const storedSuiUrl = localStorage.getItem( + `encryptedSuiUrl_${difficulty}_${currentAccount.address}` + ); + if (storedSuiUrl) { + setSuiWalrusUrl(storedSuiUrl); + } + + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), 10000); + const randomAggregator = + aggregators[Math.floor(Math.random() * aggregators.length)]; + const aggregatorUrl = `/${randomAggregator}/v1/blobs/${storedBlobId}`; + const response = await fetch(aggregatorUrl, { + signal: controller.signal, + }); + clearTimeout(timeout); + if (!response.ok) { + setLoading(false); + return; + } + const encryptedData = await response.arrayBuffer(); + console.log(encryptedData, "encryptedData---"); + const ids = EncryptedObject.parse(new Uint8Array(encryptedData)).id; + console.log(ids, "ids---"); + + + // 生成交易字节 + const tx = new Transaction(); + tx.moveCall({ + target: `${TESTNET_COUNTER_PACKAGE_ID}::allowlist::seal_approve`, + arguments: [ + // 使用与加密时相同的策略ID,确保与Quiz.tsx中使用的policyObject一致 + // 从localStorage获取用户地址并转换为字节数组 + // tx.pure.vector( + // "u8", + // Array.from(new TextEncoder().encode(currentAccount.address)) + // ), + + // // 从本地存储获取白名单对象ID,如果不存在则使用默认值 + // tx.object(localStorage.getItem("allowlist_object_id") || "0x0"), + // tx.pure.address(currentAccount.address), + + tx.pure.vector('u8', fromHex(ids)), + tx.object(localStorage.getItem("allowlist_object_id") || "0x0"), + tx.pure.address(currentAccount.address), + + ], + }); + + // 添加明确的Gas预算 + tx.setGasBudget(10000000); + + // type MoveCallConstructor = (tx: Transaction, id: string) => void; + const txBytes = await tx.build({ + client: suiClient, + onlyTransactionKind: true, + }); + + // 创建会话密钥 + const sessionKey = new SessionKey({ + address: currentAccount.address as string, + packageId: TESTNET_COUNTER_PACKAGE_ID, + ttlMin: 10, + }); + + // 获取个人消息签名 + const signatureResult = await new Promise((resolve) => { + signPersonalMessage( + { + message: sessionKey.getPersonalMessage(), + }, + { + onSuccess: (result) => { + console.log("签名成功:", result); + resolve(result); + }, + onError: (error) => { + console.error("签名失败:", error); + resolve(null); + }, + } + ); + }); + + // 如果获取签名失败,则返回 + if (!signatureResult) { + console.error("无法获取个人消息签名"); + setLoading(false); + return; + } + + // 使用签名更新会话密钥 + sessionKey.setPersonalMessageSignature( + (signatureResult as any).signature + ); + + // 解密数据 + try { + const decryptedResult = await sealClient.decrypt({ + data: new Uint8Array(encryptedData), + sessionKey, + txBytes, + }); + console.log(decryptedResult, "decryptedResult"); + + // 转换为文本并解析 + const textDecoder = new TextDecoder(); + // @ts-expect-error - 处理数据格式兼容性问题 + const jsonString = textDecoder.decode(decryptedResult); + console.log(jsonString, "jsonString---"); + + // 尝试解析JSON + try { + const jsonData = JSON.parse(jsonString); + console.log(jsonData, "成功解析JSON数据"); + // 设置解密后的数据 + setQuizData(jsonData); + } catch (jsonError) { + console.error( + "JSON解析失败:", + jsonError, + "原始字符串:", + jsonString + ); + setError("解析JSON数据失败"); + } + } catch (decryptError) { + console.error("解密失败:", decryptError); + setError( + `解密失败: ${ + decryptError instanceof Error + ? decryptError.message + : String(decryptError) + }` + ); + } + } catch (err) { + console.error( + `Blob ${storedBlobId} cannot be retrieved from Walrus`, + err + ); + setError( + `无法从Walrus获取Blob数据: ${ + err instanceof Error ? err.message : String(err) + }` + ); + } finally { + setLoading(false); + } + }, 1500); + }; + + fetchEncryptedQuizInfo(); + }, [currentAccount, difficulty, suiClient]); + + if (loading) { + return ( +
    + +

    正在获取{difficulty}难度加密题目信息...

    +
    + ); + } + + return ( +
    +

    {difficulty}难度题目排行榜

    + + {error &&
    {error}
    } + + + + {walrusBlobId && ( +
    +

    已找到加密题目信息

    +

    BlobId: {walrusBlobId}

    +

    难度级别: {difficulty}

    + + {suiWalrusUrl && ( + + 查看Sui对象 + + )} +
    + )} + + {quizData && ( +
    +

    成功解密题目数据

    +

    创建者: {quizData.creator}

    +

    题目难度: {quizData.difficulty}

    +

    创建时间: {new Date(quizData.timestamp).toLocaleString()}

    +

    题目数量: {quizData.questions.length}

    + +
    +

    题目列表

    + {quizData.questions.map((question, index) => ( +
    +

    + 题目 {index + 1}: {question.question} +

    +
      + {question.options.map((option, optIndex) => ( +
    • {option}
    • + ))} +
    + {question.explanation && ( +

    解析: {question.explanation}

    + )} +
    + ))} +
    +
    + )} +
    + ); +}; + +export default Rank; diff --git a/move202503/AKAKing23/code/chain_front/src/pages/Wallet.tsx b/move202503/AKAKing23/code/chain_front/src/pages/Wallet.tsx new file mode 100644 index 00000000..685be557 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/pages/Wallet.tsx @@ -0,0 +1,54 @@ +import React from 'react'; +import { + ConnectButton, + useCurrentAccount, + useSuiClientQuery +} from '@mysten/dapp-kit'; +import { formatAddress } from '@mysten/sui/utils'; + +const Wallet: React.FC = () => { + const currentAccount = useCurrentAccount(); + + // 获取钱包余额 + const { data: balance, isPending } = useSuiClientQuery( + 'getBalance', + { + owner: currentAccount?.address || '', + }, + { + enabled: !!currentAccount, + } + ); + + return ( +
    +

    我的钱包

    + +
    +

    钱包连接

    + +
    + + {currentAccount ? ( +
    +

    钱包信息

    +

    地址: {formatAddress(currentAccount.address)}

    +

    余额: {isPending ? '加载中...' : `${balance?.totalBalance || 0} SUI`}

    +
    + ) : ( +
    +

    请连接您的钱包以查看详细信息

    +
    + )} + +
    +

    使用说明

    +

    1. 点击"连接钱包"按钮连接您的Sui钱包

    +

    2. 连接成功后,将显示您的钱包地址和SUI余额

    +

    3. 您可以在Sui钱包中查看更多详细信息和执行交易

    +
    +
    + ); +}; + +export default Wallet; \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/pages/ZkProof.tsx b/move202503/AKAKing23/code/chain_front/src/pages/ZkProof.tsx new file mode 100644 index 00000000..0f64c593 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/pages/ZkProof.tsx @@ -0,0 +1,622 @@ +// @ts-nocheck +import { useState, useEffect } from "react"; +import { + useCurrentAccount, + useSignAndExecuteTransaction, + useSuiClient, +} from "@mysten/dapp-kit"; +import { + generateAbilityProof, + getVerifierId, + getVerificationKey, +} from "../utils/zkProof"; +import { + createVerifyZkProofParams, + createAddVerificationKeyParams, +} from "../api/sui"; +import { Loader2 } from "lucide-react"; +import { + // TESTNET_ZK_VERIFIER_ID, + TESTNET_COUNTER_PACKAGE_ID, +} from "@/utils/constants"; + +// 样式定义 +const styles = { + container: { + maxWidth: "850px", + margin: "0 auto", + padding: "2rem", + borderRadius: "12px", + backgroundColor: "rgba(0, 0, 0, 0.8)", + backdropFilter: "blur(10px)", + boxShadow: "0 8px 32px rgba(0, 0, 0, 0.3)", + color: "#fff", + position: "relative" as const, + zIndex: 999, + }, + title: { + fontSize: "2rem", + marginBottom: "1.5rem", + color: "#fff", + textAlign: "center" as const, + }, + section: { + marginBottom: "2rem", + }, + sectionTitle: { + fontSize: "1.5rem", + marginBottom: "1rem", + color: "#f0f0f0", + }, + description: { + lineHeight: "1.6", + marginBottom: "1.5rem", + color: "#ddd", + }, + inputGroup: { + marginBottom: "1rem", + }, + label: { + display: "block", + marginBottom: "0.5rem", + color: "#eee", + }, + select: { + padding: "0.75rem", + borderRadius: "8px", + width: "100%", + backgroundColor: "rgba(255, 255, 255, 0.1)", + border: "1px solid rgba(255, 255, 255, 0.2)", + color: "#fff", + marginBottom: "1rem", + }, + button: { + padding: "0.75rem 1.5rem", + borderRadius: "8px", + backgroundColor: "#3b82f6", + color: "#fff", + border: "none", + cursor: "pointer", + fontWeight: "bold", + transition: "background-color 0.2s", + }, + verifyButton: { + backgroundColor: "#10b981", + }, + card: { + padding: "1.5rem", + borderRadius: "8px", + backgroundColor: "rgba(0, 0, 0, 0.2)", + marginBottom: "1.5rem", + }, + infoText: { + color: "#bbb", + fontSize: "0.9rem", + marginBottom: "0.5rem", + }, + proofContainer: { + backgroundColor: "rgba(0, 0, 0, 0.3)", + padding: "1rem", + borderRadius: "6px", + overflowX: "auto" as const, + maxHeight: "200px", + fontSize: "0.8rem", + }, + statusSuccess: { + color: "#10b981", + fontWeight: "bold", + }, + statusPending: { + color: "#f59e0b", + fontWeight: "bold", + }, + table: { + width: "100%", + borderCollapse: "collapse" as const, + backgroundColor: "rgba(0, 0, 0, 0.3)", + borderRadius: "6px", + }, + tableHeader: { + padding: "0.75rem", + textAlign: "left" as const, + borderBottom: "1px solid rgba(255, 255, 255, 0.1)", + color: "#fff", + }, + tableCell: { + padding: "0.75rem", + borderBottom: "1px solid rgba(255, 255, 255, 0.1)", + color: "#ddd", + }, +}; + +// 验证记录类型定义 +interface VerificationRecord { + user: string; + circuitName: string; + isVerified: boolean; + requiredLevel: number; + timestamp: string; + transactionDigest: string; +} + +const ZkProof: React.FC = () => { + const currentAccount = useCurrentAccount(); + const { mutate: signAndExecute } = useSignAndExecuteTransaction(); + const suiClient = useSuiClient(); + const [userSbtLevel, setUserSbtLevel] = useState(1); // 默认为中级 + const [requiredLevel, setRequiredLevel] = useState(1); + const [isGenerating, setIsGenerating] = useState(false); + const [isVerifying, setIsVerifying] = useState(false); + const [isAddingKey, setIsAddingKey] = useState(false); + const [proof, setProof] = useState(""); + const [publicInputs, setPublicInputs] = useState(""); + const [verificationResult, setVerificationResult] = useState( + null + ); + const [showAdminPanel, setShowAdminPanel] = useState(false); + const [verificationRecords, setVerificationRecords] = useState< + VerificationRecord[] + >([]); + const [isLoadingRecords, setIsLoadingRecords] = useState(false); + const [sbtId, setSbtId] = useState(BigInt("0")); // 初始化为0 + const [isLoadingSbt, setIsLoadingSbt] = useState(false); + + // 获取用户拥有的SBT + const fetchUserSbt = async () => { + if (!currentAccount || !suiClient) return; + + setIsLoadingSbt(true); + try { + // 查询用户拥有的对象,筛选出SBT类型的对象 + const ownedObjects = await suiClient.getOwnedObjects({ + owner: currentAccount.address, + filter: { + StructType: `${TESTNET_COUNTER_PACKAGE_ID}::sbt::SoulboundToken`, + }, + options: { + showContent: true, + showType: true, + }, + }); + + if (ownedObjects.data && ownedObjects.data.length > 0) { + // 获取第一个SBT对象的ID + const userSbtId = ownedObjects.data[0].data?.objectId; + if (userSbtId) { + console.log("获取到用户SBT ID:", userSbtId); + // 将对象ID转换为BigInt(移除0x前缀并转为十进制BigInt) + const sbtIdBigInt = BigInt(parseInt(userSbtId.replace("0x", ""), 16)); + setSbtId(sbtIdBigInt); + return; + } + } + + console.log("用户没有SBT,使用模拟ID"); + // 如果没有找到SBT,使用模拟ID + setSbtId(BigInt("123456789")); + } catch (error) { + console.error("获取用户SBT失败:", error); + // 出错时使用模拟ID + setSbtId(BigInt("123456789")); + } finally { + setIsLoadingSbt(false); + } + }; + + // 组件挂载时获取用户SBT + useEffect(() => { + if (currentAccount) { + fetchUserSbt(); + } + }, [currentAccount]); + + // 模拟从验证者获取挑战值 + const getChallenge = () => { + return BigInt(Math.floor(Math.random() * 1000000000)); + }; + + // 获取验证记录 + const fetchVerificationRecords = async () => { + if (!suiClient) return; + + setIsLoadingRecords(true); + try { + // 查询VerificationResult事件 + const events = await suiClient.queryEvents({ + query: { + MoveEventType: `${TESTNET_COUNTER_PACKAGE_ID}::zk_verifier::VerificationResult`, + }, + limit: 50, // 获取最近的50条记录 + }); + + // 处理事件数据 + const records: VerificationRecord[] = events.data.map((event) => { + const fields = event.parsedJson as { + user: string; + circuit_name: string; + is_verified: boolean; + required_level: number; + }; + + return { + user: fields.user, + circuitName: fields.circuit_name, + isVerified: fields.is_verified, + requiredLevel: fields.required_level, + timestamp: new Date(Number(event.timestampMs)).toLocaleString(), + transactionDigest: event.id.txDigest, + }; + }); + // records.splice(0, 2); + setVerificationRecords(records); + } catch (error) { + console.error("获取验证记录失败:", error); + alert("获取验证记录失败: " + (error as Error).message); + } finally { + setIsLoadingRecords(false); + } + }; + + // 当管理员面板显示时获取验证记录 + useEffect(() => { + if (showAdminPanel) { + fetchVerificationRecords(); + } + }, [showAdminPanel]); + + const handleGenerateProof = async () => { + if (!currentAccount) { + alert(`请先连接钱包!`); + return; + } + + setIsGenerating(true); + try { + const challenge = getChallenge(); + const result = await generateAbilityProof( + userSbtLevel, + sbtId, // 使用从链上查询到的实际SBT ID + requiredLevel, + challenge + ); + console.log(result, "result---"); + setProof(result.proof); + setPublicInputs(result.publicInputs); + setTimeout(() => { + alert(`零知识证明生成成功!`); + setIsGenerating(false); + }, 3000); + } catch (error) { + console.error("生成证明失败:", error); + alert("生成证明失败: " + (error as Error).message); + setIsGenerating(false); + } finally { + // setIsGenerating(false); + } + console.log(isGenerating, "isGenerating---"); + }; + + const handleVerifyProof = async () => { + if (!proof || !publicInputs || !currentAccount) { + alert(`请先生成证明或连接钱包!`); + return; + } + + setIsVerifying(true); + + try { + // 获取验证器对象ID + const verifierId = await getVerifierId(); + // const circuitName = "ability" + new Date(); // 电路名称 后续可改为企业/社区名称 + const circuitName = "MoveAbilityTest"; // 电路名称 后续可改为企业/社区名称 + + // 创建并执行交易 + const txParams = createVerifyZkProofParams( + verifierId, + circuitName, + proof, + publicInputs, + requiredLevel + ); + + signAndExecute(txParams, { + onSuccess: (result) => { + console.log("交易成功:", result); + setVerificationResult(true); + alert("证明验证成功!"); + setIsVerifying(false); + // 如果管理员面板打开,刷新验证记录 + if (showAdminPanel) { + fetchVerificationRecords(); + } + }, + onError: (error) => { + console.error("交易失败:", error); + setVerificationResult(false); + alert("证明验证失败: " + error.message); + setIsVerifying(false); + }, + }); + } catch (error) { + console.error("验证证明失败:", error); + alert("验证证明失败: " + (error as Error).message); + setVerificationResult(false); + setIsVerifying(false); + } + }; + + // 处理添加验证密钥 + const handleAddVerificationKey = async () => { + if (!currentAccount) { + alert(`请先连接钱包!`); + return; + } + + setIsAddingKey(true); + + try { + // 获取验证器ID + const verifierId = await getVerifierId(); + // const circuitName = "ability" + new Date().getTime(); // 电路名称 + const circuitName = "MoveAbilityTest"; // 电路名称 + + // 获取验证密钥 + const verificationKey = await getVerificationKey(); + + // 创建添加验证密钥的交易 + const txParams = createAddVerificationKeyParams( + verifierId, + circuitName, + verificationKey + ); + + // 执行交易 + signAndExecute(txParams, { + onSuccess: (result) => { + console.log("添加验证密钥成功:", result); + alert("添加验证密钥成功!"); + setIsAddingKey(false); + }, + onError: (error) => { + console.error("添加验证密钥失败:", error); + alert("添加验证密钥失败: " + error.message); + setIsAddingKey(false); + }, + }); + } catch (error) { + console.error("添加验证密钥失败:", error); + alert("添加验证密钥失败: " + (error as Error).message); + setIsAddingKey(false); + } + }; + + // 格式化地址显示 + const formatAddress = (address: string) => { + return ( + address.substring(0, 6) + "..." + address.substring(address.length - 4) + ); + }; + + return ( +
    +

    企业、社区认证

    + {/* 管理员面板切换按钮 */} + {currentAccount && ( +
    + +
    + )} + + {/* 管理员面板 */} + {showAdminPanel && ( +
    +

    管理员面板

    +
    +
    +

    + 管理员功能:查看用户认证记录和添加验证密钥 +

    + +
    + + +

    用户认证记录

    + {isLoadingRecords ? ( +
    + +

    加载记录中...

    +
    + ) : verificationRecords.length > 0 ? ( +
    + + + + + + + + + + + + + {verificationRecords.map((record, index) => ( + + + + + + + + + ))} + +
    用户地址电路名称验证结果要求等级时间交易ID
    + {formatAddress(record.user)} + {record.circuitName} + {record.isVerified ? "验证成功" : "验证失败"} + + {record.requiredLevel == 1 + ? "初级" + : record.requiredLevel == 2 + ? "中级" + : "高级"} + {record.timestamp} + + {formatAddress(record.transactionDigest)} + +
    +
    + ) : ( +

    暂无认证记录

    + )} +
    +
    + )} +
    +

    + 向企业证明你拥有特定等级的能力凭证,而不必透露你的实际SBT内容或精确分数。 +

    +
    + +
    +

    能力证明

    +

    + 选择你的实际SBT等级和你想要证明的能力等级,然后生成零知识证明。 +

    + +
    + {isLoadingSbt ? ( +
    + +

    正在加载SBT信息...

    +
    + ) : ( + <> +
    + + +
    + +
    + + +
    + + + + )} +
    +
    + + {proof && ( +
    +

    验证证明

    +
    +

    生成的证明(简化显示):

    +
    + {proof.substring(0, 100)}... +
    + +

    公共输入:

    +
    {publicInputs}
    + +

    + 验证状态:{" "} + {verificationResult === null ? ( + 等待验证 + ) : verificationResult ? ( + 验证成功 + ) : ( + 验证失败 + )} +

    + + +
    +
    + )} +
    + ); +}; + +export default ZkProof; diff --git a/move202503/AKAKing23/code/chain_front/src/router.tsx b/move202503/AKAKing23/code/chain_front/src/router.tsx new file mode 100644 index 00000000..c2559d7c --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/router.tsx @@ -0,0 +1,57 @@ +import { createBrowserRouter } from 'react-router-dom'; +import Layout from './components/Layout'; +import Home from './pages/Home'; +import About from './pages/About'; +import Courses from './pages/Courses'; +import Dashboard from './pages/Dashboard'; +import NotFound from './pages/NotFound'; +import Wallet from './pages/Wallet'; +import Quiz from './pages/Quiz'; +import ZkProof from './pages/ZkProof'; +import Rank from './pages/Rank'; +const router = createBrowserRouter([ + { + path: '/', + element: , + children: [ + { + index: true, + element: + }, + { + path: 'about', + element: + }, + { + path: 'courses', + element: + }, + { + path: 'dashboard', + element: + }, + { + path: 'wallet', + element: + }, + { + path: 'quiz', + element: + }, + { + path: 'zkproof', + element: + }, + { + path: 'rank', + element: + }, + { + path: '*', + element: + } + ] + } +]); + +export default router; \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/styles/Quiz.css b/move202503/AKAKing23/code/chain_front/src/styles/Quiz.css new file mode 100644 index 00000000..a8910f06 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/styles/Quiz.css @@ -0,0 +1,352 @@ +/* 问答页面的主容器 */ +.quiz-container { + max-width: 800px; + margin: 0 auto; + padding: 2rem; + background-color: #ffffff; + border-radius: 12px; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); + animation: fadeIn 0.5s ease-in-out; + position: relative; + z-index: 999; +} + +/* 加载动画容器 */ +.quiz-loading { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 70vh; + text-align: center; +} + +/* 加载旋转动画 */ +.loading-spinner { + width: 80px; + height: 80px; + border: 8px solid rgba(0, 0, 0, 0.1); + border-radius: 50%; + border-top-color: #3498db; + animation: spin 1s linear infinite, pulse 2s ease-in-out infinite; + margin-bottom: 2rem; +} + +/* 加载文字动画 */ +.loading-text { + font-size: 1.8rem; + color: #333; + animation: bounce 2s ease infinite; +} + +/* 进度条 */ +.quiz-progress { + height: 8px; + background-color: #f0f0f0; + border-radius: 4px; + margin-bottom: 2rem; + overflow: hidden; +} + +.progress-bar { + height: 100%; + background: linear-gradient(90deg, #3498db, #2ecc71); + border-radius: 4px; + transition: width 0.3s ease; +} + +/* 问题标题样式 */ +.quiz-header { + margin-bottom: 2rem; + text-align: center; +} + +.quiz-header h2 { + color: #2c3e50; + margin-bottom: 0.5rem; +} + +.quiz-question h3 { + font-size: 1.5rem; + margin-bottom: 1.5rem; + color: #34495e; +} + +/* 选项样式 */ +.quiz-options { + display: flex; + flex-direction: column; + gap: 1rem; + margin-bottom: 2rem; +} + +.quiz-option { + display: flex; + align-items: center; + padding: 1rem; + border: 2px solid #e0e0e0; + border-radius: 8px; + cursor: pointer; + transition: all 0.2s ease; +} + +.quiz-option:hover { + border-color: #3498db; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(52, 152, 219, 0.15); +} + +.quiz-option.selected { + border-color: #3498db; + background-color: rgba(52, 152, 219, 0.1); +} + +.quiz-option.correct { + border-color: #2ecc71; + background-color: rgba(46, 204, 113, 0.1); +} + +.quiz-option.incorrect { + border-color: #e74c3c; + background-color: rgba(231, 76, 60, 0.1); +} + +.option-letter { + display: flex; + align-items: center; + justify-content: center; + width: 36px; + height: 36px; + background-color: #f5f5f5; + border-radius: 50%; + margin-right: 1rem; + font-weight: bold; + color: #555; +} + +.option-text { + flex: 1; +} + +/* 按钮样式 */ +.quiz-actions { + display: flex; + justify-content: center; + gap: 1rem; +} + +.quiz-actions button { + background-color: #3498db; + color: white; + border: none; + padding: 0.75rem 1.5rem; + border-radius: 6px; + font-size: 1rem; + cursor: pointer; + transition: all 0.2s ease; +} + +.quiz-actions button:hover { + background-color: #2980b9; + transform: translateY(-2px); +} + +/* 完成页面样式 */ +.quiz-completed { + max-width: 600px; + margin: 3rem auto; + padding: 2rem; + background-color: #ffffff; + border-radius: 12px; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); + text-align: center; + animation: fadeIn 0.5s ease-in-out; +} + +.quiz-completed h2 { + color: #2c3e50; + margin-bottom: 1rem; +} + +.quiz-completed p { + font-size: 1.5rem; + margin-bottom: 2rem; + color: #34495e; +} + +.home-link { + display: inline-block; + background-color: #f5f5f5; + color: #333; + padding: 0.75rem 1.5rem; + border-radius: 6px; + text-decoration: none; + transition: all 0.2s ease; +} + +.home-link:hover { + background-color: #e0e0e0; +} + +/* 动画效果 */ +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +/* 答案解析样式 */ +.answer-explanation { + margin-top: 20px; + margin-bottom: 20px; + padding: 15px; + border-radius: 8px; + background-color: #f8f9fa; + border-left: 4px solid #4caf50; +} + +.answer-explanation p { + margin: 8px 0; +} + +.correct-answer { + font-weight: bold; + color: #4caf50; + font-size: 1.1em; + margin-bottom: 10px; +} + +.explanation-text { + margin: 20px 0; + color: #666; +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.1); + } + 100% { + transform: scale(1); + } +} + +@keyframes bounce { + 0%, + 20%, + 50%, + 80%, + 100% { + transform: translateY(0); + } + 40% { + transform: translateY(-10px); + } + 60% { + transform: translateY(-5px); + } +} + +/* 响应式设计 */ +@media (max-width: 768px) { + .quiz-container { + padding: 1.5rem; + margin: 1rem; + } + + .quiz-option { + padding: 0.75rem; + } + + .loading-spinner { + width: 60px; + height: 60px; + border-width: 6px; + } + + .loading-text { + font-size: 1.5rem; + } +} +.token-balance { + display: flex; + align-items: center; + padding: 10px; + justify-content: end; +} +.reflesh-button { + background: #000; + color: #fff; + margin-left: 10px; + font-size: 12px; +} + +/* 成就部分样式 */ +.achievement-section { + background: linear-gradient(to right, #f6f7f9, #e9f7fe); + border-radius: 10px; + padding: 20px; + margin: 20px 0 30px; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05); + border: 1px solid #e0e7ff; + animation: glow 2s infinite alternate; +} + +.achievement-section h3 { + color: #3a539b; + margin-bottom: 15px; + font-size: 1.4rem; +} + +.achievement-text { + color: #4a6fa5; + font-size: 1.1rem; + margin: 10px 0; +} + +.mint-sbt-button { + background: linear-gradient(135deg, #3498db, #1d6fa5); + color: white; + border: none; + padding: 12px 24px; + border-radius: 30px; + font-size: 1rem; + font-weight: bold; + cursor: pointer; + transition: all 0.3s ease; + margin: 15px auto; + display: inline-block; + box-shadow: 0 4px 10px rgba(52, 152, 219, 0.3); +} + +.mint-sbt-button:hover { + transform: translateY(-3px); + box-shadow: 0 7px 15px rgba(52, 152, 219, 0.4); + background: linear-gradient(135deg, #2980b9, #164866); +} + +.mint-sbt-button:active { + transform: translateY(1px); +} + +@keyframes glow { + from { + box-shadow: 0 0 5px rgba(66, 139, 202, 0.2); + } + to { + box-shadow: 0 0 15px rgba(66, 139, 202, 0.5); + } +} diff --git a/move202503/AKAKing23/code/chain_front/src/styles/Rank.css b/move202503/AKAKing23/code/chain_front/src/styles/Rank.css new file mode 100644 index 00000000..0dbe27f7 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/styles/Rank.css @@ -0,0 +1,126 @@ +.rank-container { + max-width: 1000px; + margin: 0 auto; + padding: 20px; + background-color: #f7f9fc; + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); +} + +.rank-title { + text-align: center; + margin-bottom: 20px; + color: #2e3a59; + font-size: 24px; +} + +.rank-loading { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: 300px; + gap: 16px; +} + +.rank-error { + background-color: #ffecef; + color: #e53e3e; + padding: 12px 16px; + border-radius: 4px; + margin-bottom: 20px; + border-left: 4px solid #e53e3e; +} + +.encrypted-info { + background-color: #edf6ff; + padding: 16px; + border-radius: 6px; + margin-bottom: 20px; + border: 1px solid #cce5ff; +} + +.encrypted-info h2 { + margin-top: 0; + font-size: 18px; + color: #2c5282; +} + +.sui-link { + display: inline-block; + margin-top: 10px; + color: #3182ce; + text-decoration: underline; +} + +.decrypt-button { + margin-top: 16px; + width: 100%; + display: flex; + justify-content: center; + align-items: center; + gap: 8px; +} + +.quiz-data { + background-color: white; + padding: 20px; + border-radius: 6px; + border: 1px solid #e2e8f0; + margin-top: 20px; +} + +.quiz-data h2 { + margin-top: 0; + font-size: 20px; + color: #2d3748; + border-bottom: 1px solid #e2e8f0; + padding-bottom: 10px; +} + +.questions-list { + margin-top: 20px; +} + +.questions-list h3 { + font-size: 18px; + color: #2d3748; + margin-bottom: 16px; +} + +.question-item { + background-color: #f8fafc; + padding: 16px; + border-radius: 6px; + margin-bottom: 16px; + border: 1px solid #e2e8f0; +} + +.question-item h4 { + margin-top: 0; + margin-bottom: 12px; + font-size: 16px; + color: #1a365d; +} + +.options-list { + list-style-type: none; + padding-left: 0; + margin-bottom: 16px; +} + +.options-list li { + padding: 8px 12px; + background-color: #f1f5f9; + border-radius: 4px; + margin-bottom: 8px; +} + +.explanation { + background-color: #f0fff4; + padding: 12px; + border-radius: 4px; + border-left: 4px solid #48bb78; + margin-top: 16px; + font-style: italic; +} \ No newline at end of file diff --git a/move202503/AKAKing23/code/chain_front/src/styles/layout.css b/move202503/AKAKing23/code/chain_front/src/styles/layout.css new file mode 100644 index 00000000..dca6e672 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/styles/layout.css @@ -0,0 +1,293 @@ +/* 整体应用容器 */ +.app-container { + display: flex; + flex-direction: column; + min-height: 100vh; + width: 100%; + font-family: Krub, sans-serif; +} + +/* 头部导航 */ +.app-header { + /* background-color: #ffffff; */ + background-color: transparent; + padding: 1rem 2rem; + display: flex; + justify-content: space-between; + align-items: center; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + z-index: 999; +} + +.logo a { + font-size: 1.5rem; + font-weight: bold; + color: #646cff; + text-decoration: none; +} + +.main-nav ul { + display: flex; + list-style: none; + gap: 2rem; + margin: 0; + padding: 0; +} +.main-nav button { + background: linear-gradient(90deg, #4361ee, #3a0ca3, #e98bb5); + color: #fff !important; +} +.main-nav div { + color: #fff !important; +} + +.main-nav a { + color: #fff; + text-decoration: none; + padding: 0.5rem 0; + transition: color 0.3s; +} + +.main-nav a:hover { + color: #646cff; +} + +/* 主内容区域 */ +.app-main { + flex: 1; + padding: 2rem; + max-width: 1200px; + width: 100%; + margin: 0 auto; +} + +/* 页脚 */ +.app-footer { + background-color: #1a1a1a; + color: #888; + padding: 1rem 2rem; + text-align: center; +} + +/* 页面组件通用样式 */ +.home-page, +.about-page, +.courses-page, +.dashboard-page, +.not-found-page { + margin-bottom: 2rem; +} + +h1 { + margin-bottom: 1.5rem; + color: #213547; +} + +.navigation-links, +.back-link { + margin-top: 2rem; +} + +.navigation-links { + display: flex; + gap: 1rem; +} + +.nav-link, +.home-link, +.course-link { + display: inline-block; + padding: 0.5rem 1rem; + background-color: #646cff; + color: white; + text-decoration: none; + border-radius: 4px; + transition: background-color 0.3s; +} + +.nav-link:hover, +.home-link:hover, +.course-link:hover { + background-color: #535bf2; +} + +/* 课程列表样式 */ +.courses-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + gap: 1.5rem; +} + +.course-card { + border: 1px solid #ddd; + border-radius: 8px; + padding: 1.5rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); + transition: transform 0.3s, box-shadow 0.3s; +} + +.course-card:hover { + transform: translateY(-5px); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); +} + +.course-level { + display: inline-block; + margin: 0.5rem 0; + padding: 0.25rem 0.5rem; + background-color: #f0f0f0; + border-radius: 4px; + font-size: 0.875rem; +} + +/* 仪表板样式 */ +.user-info, +.enrolled-courses, +.certificates { + margin-bottom: 2rem; + padding: 1.5rem; + border: 1px solid #ddd; + border-radius: 8px; + background-color: #fff; +} + +.course-item, +.certificate-item { + margin-bottom: 1rem; + padding-bottom: 1rem; + border-bottom: 1px solid #eee; +} + +.progress-bar { + height: 10px; + background-color: #e0e0e0; + border-radius: 5px; + margin: 0.5rem 0; + overflow: hidden; +} + +.progress { + height: 100%; + background-color: #646cff; +} + +/* 媒体查询 - 响应式设计 */ +@media (max-width: 768px) { + .app-header { + /* flex-direction: column; */ + padding: 1rem; + } + + .main-nav ul { + margin-top: 1rem; + gap: 1rem; + } + + .courses-grid { + grid-template-columns: 1fr; + } +} +@keyframes slideUp { + from { + opacity: 0; + transform: translateY(0); /* 从下往上 */ + } + to { + opacity: 1; + transform: translateY(100px); /* 最终位置 */ + } +} +/* 渐变色背景标题 */ +.gradient-bg-title { + margin: 0 auto; + animation: slideUp 1s ease-out forwards; /* 动画效果 */ +} +.gradient-bg-title h2 { + font-size: 3rem; + font-weight: 800; + width: fit-content; + margin-bottom: 1.5rem; + background: linear-gradient(90deg, #4361ee, #3a0ca3, #e98bb5); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + text-align: center; + margin: 0 auto; +} +.gradient-bg-title p { + width: 70%; + text-align: center; + font-size: 1.2rem; + color: #666; + margin: 10px auto; +} +@media (max-width: 768px) { + .gradient-bg-title h2 { + font-size: 2.3rem; + } + .gradient-bg-title p { + width: 75%; + font-size: 1rem; + } +} +.lignt-zk-btn { + position: relative; + display: inline-block; + /* width: 220px; + height: 80px; */ + padding: 14px 22px; + color: rgb(255, 255, 255); + font-size: 1rem; + margin-right: 10px; + font-family: sans-serif; + text-decoration: none; + text-transform: uppercase; + text-align: center; + border-radius: 12px; + background: linear-gradient( + 90deg, + rgb(226, 20, 233), + rgb(39, 122, 218), + rgb(74, 230, 121), + rgb(201, 214, 13), + rgb(16, 172, 219) + ); + background-size: 400%; + z-index: 1; + text-shadow: 0 0 5px white, 0 0 2px white; +} +.lignt-zk-btn:hover { + animation: ligntMove 5s linear alternate infinite; +} + +@keyframes ligntMove { + 0% { + background-position: 0%; + } + 100% { + background-position: 100%; + } +} +.lignt-zk-btn::before { + content: ""; + position: absolute; + top: -10px; + left: -10px; + /* width: 240px; + height: 100px; */ + padding: 16px 24px; + background: linear-gradient( + 90deg, + rgb(226, 20, 233), + rgb(39, 122, 218), + rgb(74, 230, 121), + rgb(243, 169, 10), + rgb(16, 172, 219) + ); + background-size: 400%; + opacity: 0; + z-index: -1; + border-radius: 45px; + transition: 0.6s; +} + diff --git a/move202503/AKAKing23/code/chain_front/src/utils/constants.ts b/move202503/AKAKing23/code/chain_front/src/utils/constants.ts new file mode 100644 index 00000000..7ee08771 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/utils/constants.ts @@ -0,0 +1,10 @@ +export const DEVNET_COUNTER_PACKAGE_ID = "0xTODO"; +export const TESTNET_COUNTER_PACKAGE_ID = "0xca85ff8d356ddaa0cb68696b11b8b7cc77d1c5bda3effd7a54a69dcb2b4b2465"; +export const MAINNET_COUNTER_PACKAGE_ID = "0xTODO"; +// export const TESTNET_QUIZMANAGER_ID = "0x4642beb75afddaea13dcef10905582a0ec8052affbd84d2478ccbd9bb46b5ffe"; +export const TESTNET_QUIZMANAGER_ID = "0x45508866f3c16ca3548df5b835b9a44d42831d50e192c3cbd14f71dd89e46cf4"; +export const TESTNET_REGISTRY_ID = "0xe5f4edc8dbd30db08cdc5593a2473c5afd1282bd21aefa0d4bbb53ff5f647cd0"; + +// SBT发行者凭证ID,需要在部署SBT合约后获取 +export const TESTNET_SBT_ISSUER_CAP_ID = "0x9cd71c070250556e6a76e2987f2b238f99010c0349024d6d7dcfa0cce4afed53"; // +export const TESTNET_ZK_VERIFIER_ID="0x4e1fc9165d974af1aa6bd6f6a66920ca1f9f952d2eae1fa4537707706012ec3c" diff --git a/move202503/AKAKing23/code/chain_front/src/utils/decry.ts b/move202503/AKAKing23/code/chain_front/src/utils/decry.ts new file mode 100644 index 00000000..b7fc007e --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/utils/decry.ts @@ -0,0 +1,120 @@ +import { SealClient, SessionKey, NoAccessError, EncryptedObject } from '@mysten/seal'; +import { SuiClient } from '@mysten/sui/client'; +import { Transaction } from '@mysten/sui/transactions'; +import React from 'react'; + +export type MoveCallConstructor = (tx: Transaction, id: string) => void; + +export const downloadAndDecrypt = async ( + blobIds: string[], + sessionKey: SessionKey, + suiClient: SuiClient, + sealClient: SealClient, + moveCallConstructor: (tx: Transaction, id: string) => void, + setError: (error: string | null) => void, + setDecryptedFileUrls: (urls: string[]) => void, + setIsDialogOpen: (open: boolean) => void, + setReloadKey: (updater: (prev: number) => number) => void, +) => { + const aggregators = ['aggregator1', 'aggregator2', 'aggregator3', 'aggregator4', 'aggregator5', 'aggregator6']; + // First, download all files in parallel (ignore errors) + const downloadResults = await Promise.all( + blobIds.map(async (blobId) => { + try { + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), 10000); + const randomAggregator = aggregators[Math.floor(Math.random() * aggregators.length)]; + const aggregatorUrl = `/${randomAggregator}/v1/blobs/${blobId}`; + const response = await fetch(aggregatorUrl, { signal: controller.signal }); + clearTimeout(timeout); + if (!response.ok) { + return null; + } + return await response.arrayBuffer(); + } catch (err) { + console.error(`Blob ${blobId} cannot be retrieved from Walrus`, err); + return null; + } + }), + ); + + // Filter out failed downloads + const validDownloads = downloadResults.filter((result): result is ArrayBuffer => result !== null); + console.log('validDownloads count', validDownloads.length); + + if (validDownloads.length === 0) { + const errorMsg = + 'Cannot retrieve files from this Walrus aggregator, try again (a randomly selected aggregator will be used). Files uploaded more than 1 epoch ago have been deleted from Walrus.'; + console.error(errorMsg); + setError(errorMsg); + return; + } + + // Fetch keys in batches of <=10 + for (let i = 0; i < validDownloads.length; i += 10) { + const batch = validDownloads.slice(i, i + 10); + const ids = batch.map((enc) => EncryptedObject.parse(new Uint8Array(enc)).id); + const tx = new Transaction(); + ids.forEach((id) => moveCallConstructor(tx, id)); + const txBytes = await tx.build({ client: suiClient, onlyTransactionKind: true }); + try { + await sealClient.fetchKeys({ ids, txBytes, sessionKey, threshold: 2 }); + } catch (err) { + console.log(err); + const errorMsg = + err instanceof NoAccessError + ? 'No access to decryption keys' + : 'Unable to decrypt files, try again'; + console.error(errorMsg, err); + setError(errorMsg); + return; + } + } + + // Then, decrypt files sequentially + const decryptedFileUrls: string[] = []; + for (const encryptedData of validDownloads) { + const fullId = EncryptedObject.parse(new Uint8Array(encryptedData)).id; + const tx = new Transaction(); + moveCallConstructor(tx, fullId); + const txBytes = await tx.build({ client: suiClient, onlyTransactionKind: true }); + try { + // Note that all keys are fetched above, so this only local decryption is done + const decryptedFile = await sealClient.decrypt({ + data: new Uint8Array(encryptedData), + sessionKey, + txBytes, + }); + const blob = new Blob([decryptedFile], { type: 'image/jpg' }); + decryptedFileUrls.push(URL.createObjectURL(blob)); + } catch (err) { + console.log(err); + const errorMsg = + err instanceof NoAccessError + ? 'No access to decryption keys' + : 'Unable to decrypt files, try again'; + console.error(errorMsg, err); + setError(errorMsg); + return; + } + } + + if (decryptedFileUrls.length > 0) { + setDecryptedFileUrls(decryptedFileUrls); + setIsDialogOpen(true); + setReloadKey((prev) => prev + 1); + } +}; + +export const getObjectExplorerLink = (id: string): React.ReactElement => { + return React.createElement( + 'a', + { + href: `https://testnet.suivision.xyz/object/${id}`, + target: '_blank', + rel: 'noopener noreferrer', + style: { textDecoration: 'underline' }, + }, + id.slice(0, 10) + '...', + ); +}; diff --git a/move202503/AKAKing23/code/chain_front/src/utils/networkConfig.ts b/move202503/AKAKing23/code/chain_front/src/utils/networkConfig.ts new file mode 100644 index 00000000..7b6f8b73 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/utils/networkConfig.ts @@ -0,0 +1,31 @@ +import { getFullnodeUrl } from "@mysten/sui/client"; +import { + DEVNET_COUNTER_PACKAGE_ID, + TESTNET_COUNTER_PACKAGE_ID, + MAINNET_COUNTER_PACKAGE_ID, +} from "./constants.ts"; +import { createNetworkConfig } from "@mysten/dapp-kit"; + +const { networkConfig, useNetworkVariable, useNetworkVariables } = + createNetworkConfig({ + devnet: { + url: getFullnodeUrl("devnet"), + variables: { + counterPackageId: DEVNET_COUNTER_PACKAGE_ID, + }, + }, + testnet: { + url: getFullnodeUrl("testnet"), + variables: { + counterPackageId: TESTNET_COUNTER_PACKAGE_ID, + }, + }, + mainnet: { + url: getFullnodeUrl("mainnet"), + variables: { + counterPackageId: MAINNET_COUNTER_PACKAGE_ID, + }, + }, + }); + +export { useNetworkVariable, useNetworkVariables, networkConfig }; diff --git a/move202503/AKAKing23/code/chain_front/src/utils/zkProof.ts b/move202503/AKAKing23/code/chain_front/src/utils/zkProof.ts new file mode 100644 index 00000000..64f86564 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/utils/zkProof.ts @@ -0,0 +1,149 @@ +/** + * 零知识证明生成工具 + * 用于在浏览器环境中生成证明 + */ + +// @ts-expect-error snarkjs没有类型定义 +import { groth16 } from "snarkjs"; +import { TESTNET_ZK_VERIFIER_ID } from "@/utils/constants"; +/** + * 证明结果类型 + */ +export interface ProofResult { + proof: string; + publicInputs: string; + requiredLevel: number; +} + +/** + * 生成能力证明 + * @param {number} userSbtLevel - 用户实际SBT等级 (初级=1, 中级=2, 高级=3) + * @param {bigint} sbtId - 用户SBT的ID + * @param {number} requiredLevel - 要求的最低等级 + * @param {bigint} challenge - 验证者提供的挑战值 + * @returns {Promise} - 包含证明和公共输入的对象 + */ +export async function generateAbilityProof( + userSbtLevel: number, + sbtId: bigint, + requiredLevel: number, + challenge: bigint +): Promise { + try { + // 准备输入 + const input = { + userSbtLevel: userSbtLevel, + sbtId: sbtId.toString(), + requiredLevel: requiredLevel, + challenge: challenge.toString(), + }; + + console.log("Generating proof with inputs:", input); + + // 加载电路的WASM和zkey文件 + // 注意:这些文件路径需要根据实际部署情况调整 + const { proof, publicSignals } = await groth16.fullProve( + input, + "/circuits/ability.wasm", + "/circuits/ability_proof.zkey" + ); + + // 格式化输出 + const formattedProof = JSON.stringify(proof); + const formattedPublicInputs = JSON.stringify(publicSignals); + + console.log( + "Proof generated successfully:", + formattedProof.substring(0, 100) + "..." + ); + + return { + proof: formattedProof, + publicInputs: formattedPublicInputs, + requiredLevel: requiredLevel, + }; + } catch (error: unknown) { + console.error("Error generating proof:", error); + if (error instanceof Error) { + throw new Error( + "Failed to generate zero-knowledge proof: " + error.message + ); + } else { + throw new Error("Failed to generate zero-knowledge proof: Unknown error"); + } + } +} + +/** + * 在浏览器中验证零知识证明(用于本地测试) + * @param {string} proofJson - 证明JSON字符串 + * @param {string} publicInputsJson - 公共输入JSON字符串 + * @param {string} vkJson - 验证密钥JSON字符串 + * @returns {Promise} - 验证结果 + */ +export async function verifyProofLocally( + proofJson: string, + publicInputsJson: string, + vkJson: string +): Promise { + try { + const proof = JSON.parse(proofJson); + const publicInputs = JSON.parse(publicInputsJson); + const vk = JSON.parse(vkJson); + + // 使用snarkjs验证证明 + const isValid = await groth16.verify(vk, publicInputs, proof); + + console.log("Proof verification result:", isValid); + return isValid; + } catch (error: unknown) { + console.error("Error verifying proof locally:", error); + if (error instanceof Error) { + throw new Error("Failed to verify proof: " + error.message); + } else { + throw new Error("Failed to verify proof: Unknown error"); + } + } +} + +/** + * 默认的验证器对象ID + * 实际使用时应该从环境配置或API获取 + */ +export const DEFAULT_VERIFIER_ID = TESTNET_ZK_VERIFIER_ID || ""; + +/** + * 获取验证器对象ID + * 在实际应用中,这个函数应该从链上或API获取验证器对象ID + * @returns {Promise} 验证器对象ID + */ +export async function getVerifierId(): Promise { + // 如果有环境变量,则使用环境变量 + if (DEFAULT_VERIFIER_ID) { + return DEFAULT_VERIFIER_ID; + } + + return ""; +} + +/** + * 获取验证密钥 + * 从公共目录获取验证密钥JSON内容 + * @returns {Promise} 验证密钥JSON字符串 + */ +export async function getVerificationKey(): Promise { + try { + const response = await fetch("/circuits/verification_key.json"); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return await response.text(); + } catch (error) { + console.error("获取验证密钥失败:", error); + if (error instanceof Error) { + throw new Error("获取验证密钥失败: " + error.message); + } else { + throw new Error("获取验证密钥失败: 未知错误"); + } + } +} diff --git a/move202503/AKAKing23/code/chain_front/src/vite-env.d.ts b/move202503/AKAKing23/code/chain_front/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/move202503/AKAKing23/code/chain_front/tsconfig.app.json b/move202503/AKAKing23/code/chain_front/tsconfig.app.json new file mode 100644 index 00000000..06d4e8f3 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/tsconfig.app.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/move202503/AKAKing23/code/chain_front/tsconfig.json b/move202503/AKAKing23/code/chain_front/tsconfig.json new file mode 100644 index 00000000..fec8c8e5 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/tsconfig.json @@ -0,0 +1,13 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ], + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/move202503/AKAKing23/code/chain_front/tsconfig.node.json b/move202503/AKAKing23/code/chain_front/tsconfig.node.json new file mode 100644 index 00000000..db0becc8 --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/tsconfig.node.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/move202503/AKAKing23/code/chain_front/vite.config.ts b/move202503/AKAKing23/code/chain_front/vite.config.ts new file mode 100644 index 00000000..ba84574c --- /dev/null +++ b/move202503/AKAKing23/code/chain_front/vite.config.ts @@ -0,0 +1,112 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; +// import vitePluginsAutoI18n, { BaiduTranslator } from "vite-auto-i18n-plugin"; +import path from "path"; +import tailwindcss from "@tailwindcss/vite"; + +// const i18nPlugin = vitePluginsAutoI18n({ +// globalPath: "./lang", // 存放翻译文件的目录 +// namespace: "lang", // 命名空间 +// distPath: "./dist/assets", +// distKey: "index", +// targetLangList: ["en", "ko", "ja"], // 目标语言列表,英文,韩文,日文 +// originLang: "zh-cn", +// // 选择翻译器,有道、谷歌或百度 +// // 百度翻译 +// translator: new BaiduTranslator({ +// appId: "20250414002332588", +// appKey: "eLXJG_amVDe1YDPSDmm7", +// }), +// }); + +// https://vite.dev/config/ +export default defineConfig({ + // plugins: [react(), i18nPlugin, tailwindcss()], + plugins: [react(), tailwindcss()], + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, + server: { + proxy: { + "/api": { + target: "http://localhost:3001", // 假设你的后端服务运行在3001端口 + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, ""), // 如果后端路径不包含/api前缀则取消注释 + }, + "/aggregator1/v1": { + target: "https://aggregator.walrus-testnet.walrus.space", + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/aggregator1/, ""), + }, + "/aggregator2/v1": { + target: "https://wal-aggregator-testnet.staketab.org", + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/aggregator2/, ""), + }, + "/aggregator3/v1": { + target: "https://walrus-testnet-aggregator.redundex.com", + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/aggregator3/, ""), + }, + "/aggregator4/v1": { + target: "https://walrus-testnet-aggregator.nodes.guru", + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/aggregator4/, ""), + }, + "/aggregator5/v1": { + target: "https://aggregator.walrus.banansen.dev", + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/aggregator5/, ""), + }, + "/aggregator6/v1": { + target: "https://walrus-testnet-aggregator.everstake.one", + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/aggregator6/, ""), + }, + "/publisher1/v1": { + target: "https://publisher.walrus-testnet.walrus.space", + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/publisher1/, ""), + }, + "/publisher2/v1": { + target: "https://wal-publisher-testnet.staketab.org", + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/publisher2/, ""), + }, + "/publisher3/v1": { + target: "https://walrus-testnet-publisher.redundex.com", + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/publisher3/, ""), + }, + "/publisher4/v1": { + target: "https://walrus-testnet-publisher.nodes.guru", + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/publisher4/, ""), + }, + "/publisher5/v1": { + target: "https://publisher.walrus.banansen.dev", + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/publisher5/, ""), + }, + "/publisher6/v1": { + target: "https://walrus-testnet-publisher.everstake.one", + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/publisher6/, ""), + }, + }, + }, +}); diff --git a/move202503/AKAKing23/code/zk_proof_system/.gitignore b/move202503/AKAKing23/code/zk_proof_system/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/move202503/AKAKing23/code/zk_proof_system/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/move202503/AKAKing23/code/zk_proof_system/circuit/ability.circom b/move202503/AKAKing23/code/zk_proof_system/circuit/ability.circom new file mode 100644 index 00000000..7c9bb963 --- /dev/null +++ b/move202503/AKAKing23/code/zk_proof_system/circuit/ability.circom @@ -0,0 +1,48 @@ +pragma circom 2.0.0; + +/* + * 能力证明电路 + * 这个电路允许用户证明他们拥有特定等级的SBT,而不暴露具体的SBT内容 + * 比如,用户可以证明他们的测验分数超过某个门槛,而不需要透露具体分数 + */ + +// 包含标准库 +include "../node_modules/circomlib/circuits/comparators.circom"; +include "../node_modules/circomlib/circuits/gates.circom"; + +// 主电路:证明用户的SBT等级超过特定门槛 +template AbilityProof() { + // 私有输入:实际SBT等级(初级=1, 中级=2, 高级=3) + signal input userSbtLevel; + + // 私有输入:用户拥有的SBT ID (作为随机数使证明不可重用) + signal input sbtId; + + // 公共输入:要求的最低等级 + signal input requiredLevel; + + // 公共输入:验证者提供的挑战值(防止重放攻击) + signal input challenge; + + // 公共输出:是否满足条件 + signal output qualified; + + // 验证用户SBT等级是否大于等于要求等级 + component greaterOrEqual = GreaterEqThan(8); // 8位足够表示SBT等级 + greaterOrEqual.in[0] <== userSbtLevel; + greaterOrEqual.in[1] <== requiredLevel; + + // 验证结果 + qualified <== greaterOrEqual.out; + + // 验证SBT ID与挑战值结合(防止重放攻击) + signal combinedHash; + combinedHash <== sbtId + challenge; + + // 确保combinedHash不为零 + signal nonZero; + nonZero <== combinedHash * combinedHash; +} + +// 主要组件 +component main {public [requiredLevel, challenge]} = AbilityProof(); \ No newline at end of file diff --git a/move202503/AKAKing23/code/zk_proof_system/js/src/generate_proof.js b/move202503/AKAKing23/code/zk_proof_system/js/src/generate_proof.js new file mode 100644 index 00000000..ba1c8098 --- /dev/null +++ b/move202503/AKAKing23/code/zk_proof_system/js/src/generate_proof.js @@ -0,0 +1,75 @@ +/** + * 零知识证明生成工具 + * 用于在浏览器环境中生成证明 + */ + +import { groth16 } from 'snarkjs'; + +/** + * 生成能力证明 + * @param {number} userSbtLevel - 用户实际SBT等级 (初级=1, 中级=2, 高级=3) + * @param {bigint} sbtId - 用户SBT的ID + * @param {number} requiredLevel - 要求的最低等级 + * @param {bigint} challenge - 验证者提供的挑战值 + * @returns {Promise} - 包含证明和公共输入的对象 + */ +export async function generateAbilityProof(userSbtLevel, sbtId, requiredLevel, challenge) { + try { + // 准备输入 + const input = { + userSbtLevel: userSbtLevel, + sbtId: sbtId.toString(), + requiredLevel: requiredLevel, + challenge: challenge.toString() + }; + + console.log('Generating proof with inputs:', input); + + // 加载电路的WASM和zkey文件 + // 注意:这些文件路径需要根据实际部署情况调整 + const { proof, publicSignals } = await groth16.fullProve( + input, + '/circuits/ability_proof.wasm', + '/circuits/ability_proof.zkey' + ); + + // 格式化输出 + const formattedProof = JSON.stringify(proof); + const formattedPublicInputs = JSON.stringify(publicSignals); + + console.log('Proof generated successfully:', formattedProof.substring(0, 100) + '...'); + + return { + proof: formattedProof, + publicInputs: formattedPublicInputs, + requiredLevel: requiredLevel + }; + } catch (error) { + console.error('Error generating proof:', error); + throw new Error('Failed to generate zero-knowledge proof: ' + error.message); + } +} + +/** + * 在浏览器中验证零知识证明(用于本地测试) + * @param {string} proofJson - 证明JSON字符串 + * @param {string} publicInputsJson - 公共输入JSON字符串 + * @param {string} vkJson - 验证密钥JSON字符串 + * @returns {Promise} - 验证结果 + */ +export async function verifyProofLocally(proofJson, publicInputsJson, vkJson) { + try { + const proof = JSON.parse(proofJson); + const publicInputs = JSON.parse(publicInputsJson); + const vk = JSON.parse(vkJson); + + // 使用snarkjs验证证明 + const isValid = await groth16.verify(vk, publicInputs, proof); + + console.log('Proof verification result:', isValid); + return isValid; + } catch (error) { + console.error('Error verifying proof locally:', error); + throw new Error('Failed to verify proof: ' + error.message); + } +} \ No newline at end of file diff --git a/move202503/AKAKing23/code/zk_proof_system/package-lock.json b/move202503/AKAKing23/code/zk_proof_system/package-lock.json new file mode 100644 index 00000000..58d0f077 --- /dev/null +++ b/move202503/AKAKing23/code/zk_proof_system/package-lock.json @@ -0,0 +1,551 @@ +{ + "name": "zk_proof_system", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "circomlib": "^2.0.5", + "snarkjs": "^0.7.5" + } + }, + "node_modules/@iden3/bigarray": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/@iden3/bigarray/-/bigarray-0.0.2.tgz", + "integrity": "sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g==", + "license": "GPL-3.0" + }, + "node_modules/@iden3/binfileutils": { + "version": "0.0.12", + "resolved": "https://registry.npmmirror.com/@iden3/binfileutils/-/binfileutils-0.0.12.tgz", + "integrity": "sha512-naAmzuDufRIcoNfQ1d99d7hGHufLA3wZSibtr4dMe6ZeiOPV1KwOZWTJ1YVz4HbaWlpDuzVU72dS4ATQS4PXBQ==", + "license": "GPL-3.0", + "dependencies": { + "fastfile": "0.0.20", + "ffjavascript": "^0.3.0" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmmirror.com/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmmirror.com/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "license": "Apache-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/bfj": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/bfj/-/bfj-7.1.0.tgz", + "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", + "license": "MIT", + "dependencies": { + "bluebird": "^3.7.2", + "check-types": "^11.2.3", + "hoopy": "^0.1.4", + "jsonpath": "^1.1.1", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/blake2b-wasm": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/blake2b-wasm/-/blake2b-wasm-2.4.0.tgz", + "integrity": "sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w==", + "license": "MIT", + "dependencies": { + "b4a": "^1.0.1", + "nanoassert": "^2.0.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/check-types": { + "version": "11.2.3", + "resolved": "https://registry.npmmirror.com/check-types/-/check-types-11.2.3.tgz", + "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", + "license": "MIT" + }, + "node_modules/circom_runtime": { + "version": "0.1.28", + "resolved": "https://registry.npmmirror.com/circom_runtime/-/circom_runtime-0.1.28.tgz", + "integrity": "sha512-ACagpQ7zBRLKDl5xRZ4KpmYIcZDUjOiNRuxvXLqhnnlLSVY1Dbvh73TI853nqoR0oEbihtWmMSjgc5f+pXf/jQ==", + "license": "Apache-2.0", + "dependencies": { + "ffjavascript": "0.3.1" + }, + "bin": { + "calcwit": "calcwit.js" + } + }, + "node_modules/circomlib": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/circomlib/-/circomlib-2.0.5.tgz", + "integrity": "sha512-O7NQ8OS+J4eshBuoy36z/TwQU0YHw8W3zxZcs4hVwpEll3e4hDm3mgkIPqItN8FDeLEKZFK3YeT/+k8TiLF3/A==", + "license": "GPL-3.0" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmmirror.com/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmmirror.com/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fastfile": { + "version": "0.0.20", + "resolved": "https://registry.npmmirror.com/fastfile/-/fastfile-0.0.20.tgz", + "integrity": "sha512-r5ZDbgImvVWCP0lA/cGNgQcZqR+aYdFx3u+CtJqUE510pBUVGMn4ulL/iRTI4tACTYsNJ736uzFxEBXesPAktA==", + "license": "GPL-3.0" + }, + "node_modules/ffjavascript": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/ffjavascript/-/ffjavascript-0.3.1.tgz", + "integrity": "sha512-4PbK1WYodQtuF47D4pRI5KUg3Q392vuP5WjE1THSnceHdXwU3ijaoS0OqxTzLknCtz4Z2TtABzkBdBdMn3B/Aw==", + "license": "GPL-3.0", + "dependencies": { + "wasmbuilder": "0.0.16", + "wasmcurves": "0.2.2", + "web-worker": "1.2.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmmirror.com/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "license": "MIT" + }, + "node_modules/jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "license": "MIT", + "dependencies": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/logplease": { + "version": "1.2.15", + "resolved": "https://registry.npmmirror.com/logplease/-/logplease-1.2.15.tgz", + "integrity": "sha512-jLlHnlsPSJjpwUfcNyUxXCl33AYg2cHhIf9QhGL2T4iPT0XPB+xP1LRKFPgIg1M/sg9kAJvy94w9CzBNrfnstA==", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nanoassert": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/nanoassert/-/nanoassert-2.0.0.tgz", + "integrity": "sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==", + "license": "ISC" + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/r1csfile": { + "version": "0.0.48", + "resolved": "https://registry.npmmirror.com/r1csfile/-/r1csfile-0.0.48.tgz", + "integrity": "sha512-kHRkKUJNaor31l05f2+RFzvcH5XSa7OfEfd/l4hzjte6NL6fjRkSMfZ4BjySW9wmfdwPOtq3mXurzPvPGEf5Tw==", + "license": "GPL-3.0", + "dependencies": { + "@iden3/bigarray": "0.0.2", + "@iden3/binfileutils": "0.0.12", + "fastfile": "0.0.20", + "ffjavascript": "0.3.0" + } + }, + "node_modules/r1csfile/node_modules/ffjavascript": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/ffjavascript/-/ffjavascript-0.3.0.tgz", + "integrity": "sha512-l7sR5kmU3gRwDy8g0Z2tYBXy5ttmafRPFOqY7S6af5cq51JqJWt5eQ/lSR/rs2wQNbDYaYlQr5O+OSUf/oMLoQ==", + "license": "GPL-3.0", + "dependencies": { + "wasmbuilder": "0.0.16", + "wasmcurves": "0.2.2", + "web-worker": "1.2.0" + } + }, + "node_modules/snarkjs": { + "version": "0.7.5", + "resolved": "https://registry.npmmirror.com/snarkjs/-/snarkjs-0.7.5.tgz", + "integrity": "sha512-h+3c4rXZKLhLuHk4LHydZCk/h5GcNvk5GjVKRRkHmfb6Ntf8gHOA9zea3g656iclRuhqQ3iKDWFgiD9ypLrKiA==", + "license": "GPL-3.0", + "dependencies": { + "@iden3/binfileutils": "0.0.12", + "bfj": "^7.0.2", + "blake2b-wasm": "^2.4.0", + "circom_runtime": "0.1.28", + "ejs": "^3.1.6", + "fastfile": "0.0.20", + "ffjavascript": "0.3.1", + "js-sha3": "^0.8.0", + "logplease": "^1.2.15", + "r1csfile": "0.0.48" + }, + "bin": { + "snarkjs": "build/cli.cjs" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "license": "MIT", + "dependencies": { + "escodegen": "^1.8.1" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "license": "MIT" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmmirror.com/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "license": "MIT" + }, + "node_modules/wasmbuilder": { + "version": "0.0.16", + "resolved": "https://registry.npmmirror.com/wasmbuilder/-/wasmbuilder-0.0.16.tgz", + "integrity": "sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA==", + "license": "GPL-3.0" + }, + "node_modules/wasmcurves": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/wasmcurves/-/wasmcurves-0.2.2.tgz", + "integrity": "sha512-JRY908NkmKjFl4ytnTu5ED6AwPD+8VJ9oc94kdq7h5bIwbj0L4TDJ69mG+2aLs2SoCmGfqIesMWTEJjtYsoQXQ==", + "license": "GPL-3.0", + "dependencies": { + "wasmbuilder": "0.0.16" + } + }, + "node_modules/web-worker": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/web-worker/-/web-worker-1.2.0.tgz", + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==", + "license": "Apache-2.0" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + } + } +} diff --git a/move202503/AKAKing23/code/zk_proof_system/package.json b/move202503/AKAKing23/code/zk_proof_system/package.json new file mode 100644 index 00000000..97743355 --- /dev/null +++ b/move202503/AKAKing23/code/zk_proof_system/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "circomlib": "^2.0.5", + "snarkjs": "^0.7.5" + } +} From fb309099229d69fb59384016bae969b6a447c516 Mon Sep 17 00:00:00 2001 From: jianghongyu Date: Tue, 6 May 2025 14:19:19 +0800 Subject: [PATCH 3/3] code --- .../chain_contract/sources/zk_verifier.move | 79 ++++++++++++++----- 1 file changed, 61 insertions(+), 18 deletions(-) diff --git a/move202503/AKAKing23/code/chain_contract/sources/zk_verifier.move b/move202503/AKAKing23/code/chain_contract/sources/zk_verifier.move index 6f3aa59c..48f21132 100644 --- a/move202503/AKAKing23/code/chain_contract/sources/zk_verifier.move +++ b/move202503/AKAKing23/code/chain_contract/sources/zk_verifier.move @@ -5,11 +5,13 @@ module chain_contract::zk_verifier; use std::string::{Self, String}; +use std::vector; use sui::event; use sui::object::{Self, UID}; use sui::table::{Self, Table}; use sui::transfer; use sui::tx_context::{Self, TxContext}; +use sui::groth16; // ===== 错误代码 ===== /// 验证失败错误 @@ -18,6 +20,8 @@ const EVerificationFailed: u64 = 1; const ENotAuthorized: u64 = 2; /// 验证密钥不存在错误 const EVerificationKeyNotFound: u64 = 3; +/// 格式错误 +const EInvalidFormat: u64 = 4; // ===== 类型定义 ===== @@ -26,8 +30,10 @@ public struct ZkVerifier has key { id: UID, /// 管理员地址 admin: address, - /// 验证密钥,电路名称 -> 验证密钥JSON字符串 - verification_keys: Table, + /// 验证密钥,电路名称 -> 验证密钥字节 + verification_keys: Table>, + /// 已经准备好的验证密钥 + prepared_vks: Table>>, } // ===== 事件 ===== @@ -60,11 +66,13 @@ public entry fun create_verifier(ctx: &mut TxContext) { id: object::new(ctx), admin: tx_context::sender(ctx), verification_keys: table::new(ctx), + prepared_vks: table::new(ctx), }; // 共享验证器对象,使其全局可访问 transfer::share_object(verifier); } + fun init(ctx: &mut TxContext) { // 创建验证器对象并共享 let verifier = ZkVerifier { @@ -72,21 +80,25 @@ fun init(ctx: &mut TxContext) { // admin: tx_context::sender(ctx), admin: @0xe75a090888082e699c99b6877f93aaacedba68cd172f32006605e76b99260bb8, verification_keys: table::new(ctx), + prepared_vks: table::new(ctx), }; transfer::share_object(verifier); } + // ===== 公共函数 ===== -/// 添加验证密钥 +/// 添加验证密钥并准备验证密钥 /// @param verifier - 验证器对象 /// @param circuit_name - 电路名称 -/// @param verification_key - 验证密钥JSON字符串 +/// @param verification_key - 验证密钥字节 +/// @param use_bn254 - 使用BN254曲线(true)还是BLS12-381曲线(false) /// @param ctx - 交易上下文 public entry fun add_verification_key( verifier: &mut ZkVerifier, circuit_name: String, - verification_key: String, + verification_key: vector, + use_bn254: bool, ctx: &mut TxContext, ) { // 验证调用者是管理员 @@ -95,6 +107,16 @@ public entry fun add_verification_key( // 添加验证密钥 table::add(&mut verifier.verification_keys, circuit_name, verification_key); + // 准备验证密钥 + let pvk = if (use_bn254) { + groth16::prepare_verifying_key(&groth16::bn254(), &verification_key) + } else { + groth16::prepare_verifying_key(&groth16::bls12381(), &verification_key) + }; + + // 保存准备好的验证密钥 + table::add(&mut verifier.prepared_vks, circuit_name, pvk); + // 发出事件 event::emit(VerificationKeyAdded { admin: verifier.admin, @@ -105,26 +127,39 @@ public entry fun add_verification_key( /// 验证零知识证明 /// @param verifier - 验证器对象 /// @param circuit_name - 电路名称 -/// @param proof - 证明字符串 -/// @param public_inputs - 公共输入字符串,包含要求等级和挑战值 +/// @param proof - 证明字节 +/// @param public_inputs - 公共输入字节 +/// @param required_level - 要求等级 +/// @param use_bn254 - 使用BN254曲线(true)还是BLS12-381曲线(false) /// @param ctx - 交易上下文 public entry fun verify_proof( verifier: &ZkVerifier, circuit_name: String, - proof: String, - public_inputs: String, + proof: vector, + public_inputs: vector, required_level: u64, + use_bn254: bool, ctx: &mut TxContext, ) { // 验证密钥是否存在 - assert!(table::contains(&verifier.verification_keys, circuit_name), EVerificationKeyNotFound); + assert!(table::contains(&verifier.prepared_vks, circuit_name), EVerificationKeyNotFound); + + // 获取准备好的验证密钥 + let pvk = table::borrow(&verifier.prepared_vks, circuit_name); - // 此处应该调用原生函数进行实际验证 - // 由于Move不直接支持复杂的零知识证明验证,这里我们简化处理 - // 在实际生产环境中,应该通过Native函数调用或链下服务完成 + // 转换证明和公共输入为Groth16格式 + let proof_points = groth16::proof_points_from_bytes(proof); + let public_inputs_vec = groth16::public_proof_inputs_from_bytes(public_inputs); - // 模拟验证成功 - let is_verified = true; // 在实际环境中,这里应该是验证的结果 + // 使用Sui的原生Groth16函数进行验证 + let is_verified = if (use_bn254) { + groth16::verify_groth16_proof(&groth16::bn254(), pvk, &public_inputs_vec, &proof_points) + } else { + groth16::verify_groth16_proof(&groth16::bls12381(), pvk, &public_inputs_vec, &proof_points) + }; + + // 确保验证通过 + assert!(is_verified, EVerificationFailed); // 发出验证结果事件 event::emit(VerificationResult { @@ -135,10 +170,18 @@ public entry fun verify_proof( }); } -/// 获取验证密钥 +/// 获取原始验证密钥 /// @param verifier - 验证器对象 /// @param circuit_name - 电路名称 -/// @return 验证密钥JSON字符串 -public fun get_verification_key(verifier: &ZkVerifier, circuit_name: &String): String { +/// @return 验证密钥字节 +public fun get_verification_key(verifier: &ZkVerifier, circuit_name: &String): vector { *table::borrow(&verifier.verification_keys, *circuit_name) +} + +/// 获取准备好的验证密钥 +/// @param verifier - 验证器对象 +/// @param circuit_name - 电路名称 +/// @return 准备好的验证密钥 +public fun get_prepared_verification_key(verifier: &ZkVerifier, circuit_name: &String): vector> { + *table::borrow(&verifier.prepared_vks, *circuit_name) } \ No newline at end of file