From 84a7cb1b7e5937344ec1b8c5ac43f435328ed83e Mon Sep 17 00:00:00 2001 From: Gk0Wk Date: Sun, 7 Apr 2024 15:04:00 +0800 Subject: [PATCH] Add backend and frontend --- .DS_Store | Bin 0 -> 6148 bytes backend/.dockerignore | 149 + backend/.gitignore | 144 + backend/AgentCoord/LLMAPI/LLMAPI.py | 256 + backend/AgentCoord/LLMAPI/__init__ | 3 + .../PlanEngine/AgentSelectModify.py | 137 + .../PlanEngine/AgentSelection_Generator.py | 116 + backend/AgentCoord/PlanEngine/__init__ .py | 2 + .../PlanEngine/basePlan_Generator.py | 55 + .../PlanEngine/branch_PlanOutline.py | 102 + .../PlanEngine/branch_TaskProcess.py | 153 + .../AgentCoord/PlanEngine/fill_stepTask.py | 42 + .../PlanEngine/fill_stepTask_TaskProcess.py | 29 + .../PlanEngine/planOutline_Generator.py | 86 + .../PlanEngine/taskProcess_Generator.py | 139 + .../RehearsalEngine_V2/Action/__init__.py | 9 + .../RehearsalEngine_V2/Action/baseAction.py | 95 + .../Action/customAction_Critique.py | 16 + .../Action/customAction_Finalize.py | 24 + .../Action/customAction_Improve.py | 22 + .../Action/customAction_Propose.py | 15 + .../RehearsalEngine_V2/ExecutePlan.py | 128 + .../AgentCoord/RehearsalEngine_V2/__init__.py | 2 + backend/AgentCoord/__init__ .py | 2 + backend/AgentCoord/util/__init__.py | 9 + backend/AgentCoord/util/addRenderSpec.py | 2 + backend/AgentCoord/util/colorLog.py | 6 + backend/AgentCoord/util/converter.py | 130 + backend/AgentRepo/agentBoard_v1.json | 102 + backend/DataProcess/DataProcess.py | 188 + backend/DataProcess/FormatList.py | 47 + backend/DataProcess/__init__.py | 1 + backend/Dockerfile | 20 + backend/README.md | 38 + backend/RequestCache/Request_Cache.json | 3872 ++++++ backend/RequestCache/readme.md | 1 + backend/config/config.yaml | 12 + backend/requirements.txt | 7 + backend/server.py | 299 + frontend/.browserslistrc | 5 + frontend/.env.example | 1 + frontend/.eslintrc.js | 4 + frontend/.gitignore | 32 + frontend/.husky/pre-commit | 4 + frontend/.npmrc | 2 + frontend/.nvmrc | 1 + frontend/.prettierrc | 5 + frontend/Dockerfile | 22 + frontend/README.md | 39 + .../assets/fonts-katex/KaTeX_AMS-Regular.eot | Bin 0 -> 71656 bytes .../assets/fonts-katex/KaTeX_AMS-Regular.ttf | Bin 0 -> 71428 bytes .../assets/fonts-katex/KaTeX_AMS-Regular.woff | Bin 0 -> 40200 bytes .../fonts-katex/KaTeX_AMS-Regular.woff2 | Bin 0 -> 33188 bytes .../fonts-katex/KaTeX_Caligraphic-Bold.eot | Bin 0 -> 19836 bytes .../fonts-katex/KaTeX_Caligraphic-Bold.ttf | Bin 0 -> 19588 bytes .../fonts-katex/KaTeX_Caligraphic-Bold.woff | Bin 0 -> 12136 bytes .../fonts-katex/KaTeX_Caligraphic-Bold.woff2 | Bin 0 -> 10604 bytes .../fonts-katex/KaTeX_Caligraphic-Regular.eot | Bin 0 -> 19220 bytes .../fonts-katex/KaTeX_Caligraphic-Regular.ttf | Bin 0 -> 18960 bytes .../KaTeX_Caligraphic-Regular.woff | Bin 0 -> 11868 bytes .../KaTeX_Caligraphic-Regular.woff2 | Bin 0 -> 10396 bytes .../assets/fonts-katex/KaTeX_Fraktur-Bold.eot | Bin 0 -> 36200 bytes .../assets/fonts-katex/KaTeX_Fraktur-Bold.ttf | Bin 0 -> 35968 bytes .../fonts-katex/KaTeX_Fraktur-Bold.woff | Bin 0 -> 23388 bytes .../fonts-katex/KaTeX_Fraktur-Bold.woff2 | Bin 0 -> 20476 bytes .../fonts-katex/KaTeX_Fraktur-Regular.eot | Bin 0 -> 34896 bytes .../fonts-katex/KaTeX_Fraktur-Regular.ttf | Bin 0 -> 34652 bytes .../fonts-katex/KaTeX_Fraktur-Regular.woff | Bin 0 -> 22844 bytes .../fonts-katex/KaTeX_Fraktur-Regular.woff2 | Bin 0 -> 19868 bytes .../assets/fonts-katex/KaTeX_Main-Bold.eot | Bin 0 -> 60688 bytes .../assets/fonts-katex/KaTeX_Main-Bold.ttf | Bin 0 -> 60468 bytes .../assets/fonts-katex/KaTeX_Main-Bold.woff | Bin 0 -> 35480 bytes .../assets/fonts-katex/KaTeX_Main-Bold.woff2 | Bin 0 -> 29492 bytes .../assets/fonts-katex/KaTeX_Main-Italic.eot | Bin 0 -> 44132 bytes .../assets/fonts-katex/KaTeX_Main-Italic.ttf | Bin 0 -> 43904 bytes .../assets/fonts-katex/KaTeX_Main-Italic.woff | Bin 0 -> 24880 bytes .../fonts-katex/KaTeX_Main-Italic.woff2 | Bin 0 -> 21032 bytes .../assets/fonts-katex/KaTeX_Main-Regular.eot | Bin 0 -> 68228 bytes .../assets/fonts-katex/KaTeX_Main-Regular.ttf | Bin 0 -> 67996 bytes .../fonts-katex/KaTeX_Main-Regular.woff | Bin 0 -> 37620 bytes .../fonts-katex/KaTeX_Main-Regular.woff2 | Bin 0 -> 31220 bytes .../fonts-katex/KaTeX_Math-BoldItalic.eot | Bin 0 -> 39990 bytes .../fonts-katex/KaTeX_Math-BoldItalic.ttf | Bin 0 -> 39744 bytes .../fonts-katex/KaTeX_Math-BoldItalic.woff | Bin 0 -> 23192 bytes .../fonts-katex/KaTeX_Math-BoldItalic.woff2 | Bin 0 -> 20036 bytes .../assets/fonts-katex/KaTeX_Math-Italic.eot | Bin 0 -> 41676 bytes .../assets/fonts-katex/KaTeX_Math-Italic.ttf | Bin 0 -> 41448 bytes .../assets/fonts-katex/KaTeX_Math-Italic.woff | Bin 0 -> 23820 bytes .../fonts-katex/KaTeX_Math-Italic.woff2 | Bin 0 -> 20432 bytes .../assets/fonts-katex/KaTeX_Math-Regular.eot | Bin 0 -> 41536 bytes .../assets/fonts-katex/KaTeX_Math-Regular.ttf | Bin 0 -> 41304 bytes .../fonts-katex/KaTeX_Math-Regular.woff | Bin 0 -> 23712 bytes .../fonts-katex/KaTeX_Math-Regular.woff2 | Bin 0 -> 20344 bytes .../fonts-katex/KaTeX_SansSerif-Bold.eot | Bin 0 -> 34204 bytes .../fonts-katex/KaTeX_SansSerif-Bold.ttf | Bin 0 -> 33964 bytes .../fonts-katex/KaTeX_SansSerif-Bold.woff | Bin 0 -> 19196 bytes .../fonts-katex/KaTeX_SansSerif-Bold.woff2 | Bin 0 -> 16020 bytes .../fonts-katex/KaTeX_SansSerif-Italic.eot | Bin 0 -> 31320 bytes .../fonts-katex/KaTeX_SansSerif-Italic.ttf | Bin 0 -> 31072 bytes .../fonts-katex/KaTeX_SansSerif-Italic.woff | Bin 0 -> 18080 bytes .../fonts-katex/KaTeX_SansSerif-Italic.woff2 | Bin 0 -> 15152 bytes .../fonts-katex/KaTeX_SansSerif-Regular.eot | Bin 0 -> 30212 bytes .../fonts-katex/KaTeX_SansSerif-Regular.ttf | Bin 0 -> 29960 bytes .../fonts-katex/KaTeX_SansSerif-Regular.woff | Bin 0 -> 16744 bytes .../fonts-katex/KaTeX_SansSerif-Regular.woff2 | Bin 0 -> 13908 bytes .../fonts-katex/KaTeX_Script-Regular.eot | Bin 0 -> 25104 bytes .../fonts-katex/KaTeX_Script-Regular.ttf | Bin 0 -> 24864 bytes .../fonts-katex/KaTeX_Script-Regular.woff | Bin 0 -> 13856 bytes .../fonts-katex/KaTeX_Script-Regular.woff2 | Bin 0 -> 12276 bytes .../fonts-katex/KaTeX_Size1-Regular.eot | Bin 0 -> 13408 bytes .../fonts-katex/KaTeX_Size1-Regular.ttf | Bin 0 -> 13172 bytes .../fonts-katex/KaTeX_Size1-Regular.woff | Bin 0 -> 6980 bytes .../fonts-katex/KaTeX_Size1-Regular.woff2 | Bin 0 -> 5820 bytes .../fonts-katex/KaTeX_Size2-Regular.eot | Bin 0 -> 12648 bytes .../fonts-katex/KaTeX_Size2-Regular.ttf | Bin 0 -> 12412 bytes .../fonts-katex/KaTeX_Size2-Regular.woff | Bin 0 -> 6684 bytes .../fonts-katex/KaTeX_Size2-Regular.woff2 | Bin 0 -> 5560 bytes .../fonts-katex/KaTeX_Size3-Regular.eot | Bin 0 -> 8596 bytes .../fonts-katex/KaTeX_Size3-Regular.ttf | Bin 0 -> 8360 bytes .../fonts-katex/KaTeX_Size3-Regular.woff | Bin 0 -> 4776 bytes .../fonts-katex/KaTeX_Size3-Regular.woff2 | Bin 0 -> 3856 bytes .../fonts-katex/KaTeX_Size4-Regular.eot | Bin 0 -> 11520 bytes .../fonts-katex/KaTeX_Size4-Regular.ttf | Bin 0 -> 11284 bytes .../fonts-katex/KaTeX_Size4-Regular.woff | Bin 0 -> 6456 bytes .../fonts-katex/KaTeX_Size4-Regular.woff2 | Bin 0 -> 5172 bytes .../fonts-katex/KaTeX_Typewriter-Regular.eot | Bin 0 -> 35784 bytes .../fonts-katex/KaTeX_Typewriter-Regular.ttf | Bin 0 -> 35528 bytes .../fonts-katex/KaTeX_Typewriter-Regular.woff | Bin 0 -> 20712 bytes .../KaTeX_Typewriter-Regular.woff2 | Bin 0 -> 17344 bytes frontend/config/public/assets/katex.min.css | 1 + frontend/config/public/assets/katex.min.js | 68 + frontend/modern.config.ts | 25 + frontend/package.json | 66 + frontend/pnpm-lock.yaml | 11592 ++++++++++++++++ frontend/src/.eslintrc.js | 9 + frontend/src/apis/agent-select-modify.ts | 86 + frontend/src/apis/execute-plan.ts | 144 + frontend/src/apis/fill-agent-selection.ts | 61 + frontend/src/apis/fill-step-task.ts | 55 + frontend/src/apis/generate-base-plan.ts | 119 + frontend/src/apis/get-agents.ts | 33 + frontend/src/apis/new-action-branch.ts | 66 + frontend/src/apis/new-plan-branch.ts | 57 + frontend/src/apis/set-agents.ts | 32 + .../AgentAssignment/fakeAgentAssignment.ts | 54 + .../src/components/AgentAssignment/index.tsx | 561 + .../src/components/AgentBoard/AgentCard.tsx | 165 + .../src/components/AgentBoard/DutyItem.tsx | 123 + frontend/src/components/AgentBoard/index.tsx | 163 + .../AgentHiring/AgentCart/HiringCard.tsx | 38 + .../AgentHiring/AgentCart/index.tsx | 82 + .../AgentHiring/AgentRepo/index.tsx | 89 + .../AgentHiring/HireRequirement/index.tsx | 84 + frontend/src/components/AgentHiring/index.tsx | 28 + frontend/src/components/AgentIcon/agents.ts | 119 + frontend/src/components/AgentIcon/index.tsx | 119 + frontend/src/components/FloatWindow/index.tsx | 120 + frontend/src/components/HeadBar/index.tsx | 231 + frontend/src/components/LoadingMask/index.tsx | 22 + .../MarkdownBlock/github-mardown.css | 1210 ++ .../src/components/MarkdownBlock/index.tsx | 33 + .../MarkdownBlock/markdown-style.css | 702 + frontend/src/components/Outline/Cards.tsx | 344 + frontend/src/components/Outline/D3Graph.tsx | 241 + .../src/components/Outline/OutlineView.tsx | 281 + .../src/components/Outline/RectWatcher.tsx | 73 + frontend/src/components/Outline/index.tsx | 97 + frontend/src/components/Outline/interface.tsx | 20 + .../PlanModification/PlanModificationSvg.tsx | 134 + .../components/PlanModification/context.tsx | 195 + .../src/components/PlanModification/index.tsx | 445 + .../ProcessDiscription/AgentDetailCard.tsx | 178 + .../ProcessDiscription/DescriptionCard.tsx | 184 + .../components/ProcessDiscription/index.tsx | 57 + .../ProcessRehearsal/ObjectNode.tsx | 286 + .../ProcessRehearsal/RehearsalSvg.tsx | 284 + .../ProcessRehearsal/StepHistoryItem.tsx | 170 + .../components/ProcessRehearsal/StepNode.tsx | 86 + .../src/components/ProcessRehearsal/index.tsx | 219 + .../src/components/ResizeableColumn/index.tsx | 45 + .../TaskModification/TaskModificationSvg.tsx | 132 + .../components/TaskModification/context.tsx | 210 + .../TaskModification/fakeTaskModification.ts | 75 + .../src/components/TaskModification/index.tsx | 457 + frontend/src/components/Title/index.tsx | 51 + .../src/components/UserGoalInput/index.tsx | 101 + .../src/components/ViewConnector/index.tsx | 153 + frontend/src/icons/BranchIcon.tsx | 20 + frontend/src/icons/ChangeAgentIcon.tsx | 17 + frontend/src/icons/LogoIcon.tsx | 18 + frontend/src/icons/SendIcon.tsx | 33 + frontend/src/icons/checkIcon.tsx | 33 + frontend/src/modern-app-env.d.ts | 3 + frontend/src/routes/index.scss | 28 + frontend/src/routes/layout.tsx | 81 + frontend/src/routes/page.tsx | 156 + .../src/static/AgentIcons/Abigail_Chen.png | Bin 0 -> 1391 bytes frontend/src/static/AgentIcons/Adam_Smith.png | Bin 0 -> 1274 bytes .../src/static/AgentIcons/Arthur_Burton.png | Bin 0 -> 1600 bytes .../src/static/AgentIcons/Ayesha_Khan.png | Bin 0 -> 1630 bytes .../src/static/AgentIcons/Carlos_Gomez.png | Bin 0 -> 1502 bytes .../src/static/AgentIcons/Carmen_Ortiz.png | Bin 0 -> 1606 bytes frontend/src/static/AgentIcons/Eddy_Lin.png | Bin 0 -> 1507 bytes .../src/static/AgentIcons/Francisco_Lopez.png | Bin 0 -> 1497 bytes .../src/static/AgentIcons/Giorgio_Rossi.png | Bin 0 -> 1501 bytes .../src/static/AgentIcons/Hailey_Johnson.png | Bin 0 -> 1590 bytes .../static/AgentIcons/Isabella_Rodriguez.png | Bin 0 -> 1649 bytes .../src/static/AgentIcons/Jane_Moreno.png | Bin 0 -> 1547 bytes .../src/static/AgentIcons/Jennifer_Moore.png | Bin 0 -> 1525 bytes frontend/src/static/AgentIcons/John_Lin.png | Bin 0 -> 1336 bytes .../src/static/AgentIcons/Klaus_Mueller.png | Bin 0 -> 1556 bytes .../src/static/AgentIcons/Latoya_Williams.png | Bin 0 -> 1405 bytes .../src/static/AgentIcons/Maria_Lopez.png | Bin 0 -> 1456 bytes frontend/src/static/AgentIcons/Mei_Lin.png | Bin 0 -> 1386 bytes .../src/static/AgentIcons/Rajiv_Patel.png | Bin 0 -> 1385 bytes frontend/src/static/AgentIcons/Ryan_Park.png | Bin 0 -> 1397 bytes frontend/src/static/AgentIcons/Sam_Moore.png | Bin 0 -> 1501 bytes .../src/static/AgentIcons/Tamara_Taylor.png | Bin 0 -> 1639 bytes frontend/src/static/AgentIcons/Tom_Moreno.png | Bin 0 -> 1564 bytes frontend/src/static/AgentIcons/Unknow.png | Bin 0 -> 5381 bytes .../src/static/AgentIcons/Wolfgang_Schulz.png | Bin 0 -> 1364 bytes .../src/static/AgentIcons/Yuriko_Yamamoto.png | Bin 0 -> 1392 bytes frontend/src/storage/debug.ts | 82 + frontend/src/storage/index.ts | 1141 ++ frontend/src/storage/plan/action.ts | 114 + frontend/src/storage/plan/base.ts | 13 + frontend/src/storage/plan/index.ts | 5 + frontend/src/storage/plan/log.ts | 115 + frontend/src/storage/plan/manager.ts | 196 + frontend/src/storage/plan/selection.ts | 112 + frontend/src/storage/plan/stepTask.ts | 280 + frontend/src/utils/resize-hook.ts | 16 + frontend/tsconfig.json | 14 + 233 files changed, 29927 insertions(+) create mode 100644 .DS_Store create mode 100644 backend/.dockerignore create mode 100644 backend/.gitignore create mode 100644 backend/AgentCoord/LLMAPI/LLMAPI.py create mode 100644 backend/AgentCoord/LLMAPI/__init__ create mode 100644 backend/AgentCoord/PlanEngine/AgentSelectModify.py create mode 100644 backend/AgentCoord/PlanEngine/AgentSelection_Generator.py create mode 100644 backend/AgentCoord/PlanEngine/__init__ .py create mode 100644 backend/AgentCoord/PlanEngine/basePlan_Generator.py create mode 100644 backend/AgentCoord/PlanEngine/branch_PlanOutline.py create mode 100644 backend/AgentCoord/PlanEngine/branch_TaskProcess.py create mode 100644 backend/AgentCoord/PlanEngine/fill_stepTask.py create mode 100644 backend/AgentCoord/PlanEngine/fill_stepTask_TaskProcess.py create mode 100644 backend/AgentCoord/PlanEngine/planOutline_Generator.py create mode 100644 backend/AgentCoord/PlanEngine/taskProcess_Generator.py create mode 100644 backend/AgentCoord/RehearsalEngine_V2/Action/__init__.py create mode 100644 backend/AgentCoord/RehearsalEngine_V2/Action/baseAction.py create mode 100644 backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Critique.py create mode 100644 backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Finalize.py create mode 100644 backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Improve.py create mode 100644 backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Propose.py create mode 100644 backend/AgentCoord/RehearsalEngine_V2/ExecutePlan.py create mode 100644 backend/AgentCoord/RehearsalEngine_V2/__init__.py create mode 100644 backend/AgentCoord/__init__ .py create mode 100644 backend/AgentCoord/util/__init__.py create mode 100644 backend/AgentCoord/util/addRenderSpec.py create mode 100644 backend/AgentCoord/util/colorLog.py create mode 100644 backend/AgentCoord/util/converter.py create mode 100644 backend/AgentRepo/agentBoard_v1.json create mode 100644 backend/DataProcess/DataProcess.py create mode 100644 backend/DataProcess/FormatList.py create mode 100644 backend/DataProcess/__init__.py create mode 100644 backend/Dockerfile create mode 100644 backend/README.md create mode 100644 backend/RequestCache/Request_Cache.json create mode 100644 backend/RequestCache/readme.md create mode 100644 backend/config/config.yaml create mode 100644 backend/requirements.txt create mode 100644 backend/server.py create mode 100644 frontend/.browserslistrc create mode 100644 frontend/.env.example create mode 100644 frontend/.eslintrc.js create mode 100644 frontend/.gitignore create mode 100755 frontend/.husky/pre-commit create mode 100644 frontend/.npmrc create mode 100644 frontend/.nvmrc create mode 100644 frontend/.prettierrc create mode 100644 frontend/Dockerfile create mode 100644 frontend/README.md create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_AMS-Regular.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_AMS-Regular.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_AMS-Regular.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_AMS-Regular.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Bold.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Bold.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Bold.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Bold.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Regular.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Regular.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Regular.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Regular.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Bold.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Bold.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Bold.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Bold.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Regular.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Regular.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Regular.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Regular.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Main-Bold.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Main-Bold.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Main-Bold.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Main-Bold.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Main-Italic.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Main-Italic.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Main-Italic.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Main-Italic.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Main-Regular.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Main-Regular.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Main-Regular.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Main-Regular.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Math-BoldItalic.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Math-BoldItalic.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Math-BoldItalic.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Math-BoldItalic.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Math-Italic.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Math-Italic.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Math-Italic.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Math-Italic.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Math-Regular.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Math-Regular.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Math-Regular.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Math-Regular.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Bold.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Bold.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Bold.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Bold.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Italic.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Italic.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Italic.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Italic.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Regular.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Regular.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Regular.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Regular.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Script-Regular.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Script-Regular.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Script-Regular.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Script-Regular.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size1-Regular.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size1-Regular.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size1-Regular.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size1-Regular.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size2-Regular.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size2-Regular.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size2-Regular.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size2-Regular.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size3-Regular.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size3-Regular.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size3-Regular.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size3-Regular.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size4-Regular.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size4-Regular.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size4-Regular.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Size4-Regular.woff2 create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Typewriter-Regular.eot create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Typewriter-Regular.ttf create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Typewriter-Regular.woff create mode 100644 frontend/config/public/assets/fonts-katex/KaTeX_Typewriter-Regular.woff2 create mode 100644 frontend/config/public/assets/katex.min.css create mode 100644 frontend/config/public/assets/katex.min.js create mode 100644 frontend/modern.config.ts create mode 100644 frontend/package.json create mode 100644 frontend/pnpm-lock.yaml create mode 100644 frontend/src/.eslintrc.js create mode 100644 frontend/src/apis/agent-select-modify.ts create mode 100644 frontend/src/apis/execute-plan.ts create mode 100644 frontend/src/apis/fill-agent-selection.ts create mode 100644 frontend/src/apis/fill-step-task.ts create mode 100644 frontend/src/apis/generate-base-plan.ts create mode 100644 frontend/src/apis/get-agents.ts create mode 100644 frontend/src/apis/new-action-branch.ts create mode 100644 frontend/src/apis/new-plan-branch.ts create mode 100644 frontend/src/apis/set-agents.ts create mode 100644 frontend/src/components/AgentAssignment/fakeAgentAssignment.ts create mode 100644 frontend/src/components/AgentAssignment/index.tsx create mode 100644 frontend/src/components/AgentBoard/AgentCard.tsx create mode 100644 frontend/src/components/AgentBoard/DutyItem.tsx create mode 100644 frontend/src/components/AgentBoard/index.tsx create mode 100644 frontend/src/components/AgentHiring/AgentCart/HiringCard.tsx create mode 100644 frontend/src/components/AgentHiring/AgentCart/index.tsx create mode 100644 frontend/src/components/AgentHiring/AgentRepo/index.tsx create mode 100644 frontend/src/components/AgentHiring/HireRequirement/index.tsx create mode 100644 frontend/src/components/AgentHiring/index.tsx create mode 100644 frontend/src/components/AgentIcon/agents.ts create mode 100644 frontend/src/components/AgentIcon/index.tsx create mode 100644 frontend/src/components/FloatWindow/index.tsx create mode 100644 frontend/src/components/HeadBar/index.tsx create mode 100644 frontend/src/components/LoadingMask/index.tsx create mode 100644 frontend/src/components/MarkdownBlock/github-mardown.css create mode 100644 frontend/src/components/MarkdownBlock/index.tsx create mode 100644 frontend/src/components/MarkdownBlock/markdown-style.css create mode 100644 frontend/src/components/Outline/Cards.tsx create mode 100644 frontend/src/components/Outline/D3Graph.tsx create mode 100644 frontend/src/components/Outline/OutlineView.tsx create mode 100644 frontend/src/components/Outline/RectWatcher.tsx create mode 100644 frontend/src/components/Outline/index.tsx create mode 100644 frontend/src/components/Outline/interface.tsx create mode 100644 frontend/src/components/PlanModification/PlanModificationSvg.tsx create mode 100644 frontend/src/components/PlanModification/context.tsx create mode 100644 frontend/src/components/PlanModification/index.tsx create mode 100644 frontend/src/components/ProcessDiscription/AgentDetailCard.tsx create mode 100644 frontend/src/components/ProcessDiscription/DescriptionCard.tsx create mode 100644 frontend/src/components/ProcessDiscription/index.tsx create mode 100644 frontend/src/components/ProcessRehearsal/ObjectNode.tsx create mode 100644 frontend/src/components/ProcessRehearsal/RehearsalSvg.tsx create mode 100644 frontend/src/components/ProcessRehearsal/StepHistoryItem.tsx create mode 100644 frontend/src/components/ProcessRehearsal/StepNode.tsx create mode 100644 frontend/src/components/ProcessRehearsal/index.tsx create mode 100644 frontend/src/components/ResizeableColumn/index.tsx create mode 100644 frontend/src/components/TaskModification/TaskModificationSvg.tsx create mode 100644 frontend/src/components/TaskModification/context.tsx create mode 100644 frontend/src/components/TaskModification/fakeTaskModification.ts create mode 100644 frontend/src/components/TaskModification/index.tsx create mode 100644 frontend/src/components/Title/index.tsx create mode 100644 frontend/src/components/UserGoalInput/index.tsx create mode 100644 frontend/src/components/ViewConnector/index.tsx create mode 100644 frontend/src/icons/BranchIcon.tsx create mode 100644 frontend/src/icons/ChangeAgentIcon.tsx create mode 100644 frontend/src/icons/LogoIcon.tsx create mode 100644 frontend/src/icons/SendIcon.tsx create mode 100644 frontend/src/icons/checkIcon.tsx create mode 100644 frontend/src/modern-app-env.d.ts create mode 100644 frontend/src/routes/index.scss create mode 100644 frontend/src/routes/layout.tsx create mode 100644 frontend/src/routes/page.tsx create mode 100644 frontend/src/static/AgentIcons/Abigail_Chen.png create mode 100644 frontend/src/static/AgentIcons/Adam_Smith.png create mode 100644 frontend/src/static/AgentIcons/Arthur_Burton.png create mode 100644 frontend/src/static/AgentIcons/Ayesha_Khan.png create mode 100644 frontend/src/static/AgentIcons/Carlos_Gomez.png create mode 100644 frontend/src/static/AgentIcons/Carmen_Ortiz.png create mode 100644 frontend/src/static/AgentIcons/Eddy_Lin.png create mode 100644 frontend/src/static/AgentIcons/Francisco_Lopez.png create mode 100644 frontend/src/static/AgentIcons/Giorgio_Rossi.png create mode 100644 frontend/src/static/AgentIcons/Hailey_Johnson.png create mode 100644 frontend/src/static/AgentIcons/Isabella_Rodriguez.png create mode 100644 frontend/src/static/AgentIcons/Jane_Moreno.png create mode 100644 frontend/src/static/AgentIcons/Jennifer_Moore.png create mode 100644 frontend/src/static/AgentIcons/John_Lin.png create mode 100644 frontend/src/static/AgentIcons/Klaus_Mueller.png create mode 100644 frontend/src/static/AgentIcons/Latoya_Williams.png create mode 100644 frontend/src/static/AgentIcons/Maria_Lopez.png create mode 100644 frontend/src/static/AgentIcons/Mei_Lin.png create mode 100644 frontend/src/static/AgentIcons/Rajiv_Patel.png create mode 100644 frontend/src/static/AgentIcons/Ryan_Park.png create mode 100644 frontend/src/static/AgentIcons/Sam_Moore.png create mode 100644 frontend/src/static/AgentIcons/Tamara_Taylor.png create mode 100644 frontend/src/static/AgentIcons/Tom_Moreno.png create mode 100644 frontend/src/static/AgentIcons/Unknow.png create mode 100644 frontend/src/static/AgentIcons/Wolfgang_Schulz.png create mode 100644 frontend/src/static/AgentIcons/Yuriko_Yamamoto.png create mode 100644 frontend/src/storage/debug.ts create mode 100644 frontend/src/storage/index.ts create mode 100644 frontend/src/storage/plan/action.ts create mode 100644 frontend/src/storage/plan/base.ts create mode 100644 frontend/src/storage/plan/index.ts create mode 100644 frontend/src/storage/plan/log.ts create mode 100644 frontend/src/storage/plan/manager.ts create mode 100644 frontend/src/storage/plan/selection.ts create mode 100644 frontend/src/storage/plan/stepTask.ts create mode 100644 frontend/src/utils/resize-hook.ts create mode 100644 frontend/tsconfig.json diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b3aea4fc7a2650b9057b919316fd03b036a34068 GIT binary patch literal 6148 zcmeHK%}T>S5T0$T-BN@e6nYGJEm&*u2QQ)47cim+m718Sp)p(1)Er77XMG``#OHBl zcPsYCt4O;8v)}B_Ou~Fwb~6CLIwOA{pauXOm9S93VTq8RbU_MwrG&`jGXjXg_p;%@ zix#5I!hd9dzFiqSaNz;^@Z3gyv(gKPm1 z={Hge+SE%>j-}Dom@7mN3R9_wDwXLLgQ;{}w{)DXF;}S4f$8Rh={Gaop)mP&e7+^a zf!PYpXc#aI%ra0^(;D6X=fC&=vq@%V7%&X16a%c(b-EoaN#Cst#nD}Bq28mCP+YF? mI|U7S6=N)2#dTCExNebwXlu+B;tGoS5s);P!7%Wr4157|`irIj literal 0 HcmV?d00001 diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 0000000..b89038b --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,149 @@ +.gitignore +.git +.idea +.vscode + +.DS_Store +*.log +local_settings.py +*.sqlite3 +*.pot +*.pyc +__pycache__ +*.db + +gmon.out + +# Backup files # +*.bak + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.conda +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..238a030 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,144 @@ +.DS_Store +*.log +local_settings.py +*.sqlite3 +*.pot +*.pyc +__pycache__ +*.db + +gmon.out + +# Backup files # +*.bak + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.conda +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ diff --git a/backend/AgentCoord/LLMAPI/LLMAPI.py b/backend/AgentCoord/LLMAPI/LLMAPI.py new file mode 100644 index 0000000..0ce3aa4 --- /dev/null +++ b/backend/AgentCoord/LLMAPI/LLMAPI.py @@ -0,0 +1,256 @@ +import asyncio +import openai +import yaml +from termcolor import colored +import os +from groq import AsyncGroq +from mistralai.client import MistralClient +from mistralai.models.chat_completion import ChatMessage + +# load config (apikey, apibase, model) +yaml_file = os.path.join(os.getcwd(), "config", "config.yaml") +try: + with open(yaml_file, "r", encoding="utf-8") as file: + yaml_data = yaml.safe_load(file) +except Exception: + yaml_file = {} +OPENAI_API_BASE = os.getenv("OPENAI_API_BASE") or yaml_data.get( + "OPENAI_API_BASE", "https://api.openai.com" +) +openai.api_base = OPENAI_API_BASE +OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") or yaml_data.get( + "OPENAI_API_KEY", "" +) +openai.api_key = OPENAI_API_KEY +MODEL: str = os.getenv("OPENAI_API_MODEL") or yaml_data.get( + "OPENAI_API_MODEL", "gpt-4-turbo-preview" +) +FAST_DESIGN_MODE: bool = os.getenv("FAST_DESIGN_MODE") +if FAST_DESIGN_MODE is None: + FAST_DESIGN_MODE = yaml_data.get("FAST_DESIGN_MODE", False) +else: + FAST_DESIGN_MODE = FAST_DESIGN_MODE.lower() in ["true", "1", "yes"] +GROQ_API_KEY = os.getenv("GROQ_API_KEY") or yaml_data.get("GROQ_API_KEY", "") +MISTRAL_API_KEY = os.getenv("MISTRAL_API_KEY") or yaml_data.get( + "MISTRAL_API_KEY", "" +) + + +# for LLM completion +def LLM_Completion( + messages: list[dict], stream: bool = True, useGroq: bool = True +) -> str: + if not useGroq or not FAST_DESIGN_MODE: + force_gpt4 = True + useGroq = False + else: + force_gpt4 = False + useGroq = True + + if stream: + try: + loop = asyncio.get_event_loop() + except RuntimeError as ex: + if "There is no current event loop in thread" in str(ex): + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + if useGroq: + if force_gpt4: + return loop.run_until_complete( + _achat_completion_json(messages=messages) + ) + else: + return loop.run_until_complete( + _achat_completion_stream_groq(messages=messages) + ) + else: + return loop.run_until_complete( + _achat_completion_stream(messages=messages) + ) + # return asyncio.run(_achat_completion_stream(messages = messages)) + else: + return _chat_completion(messages=messages) + + +async def _achat_completion_stream_groq(messages: list[dict]) -> str: + client = AsyncGroq(api_key=GROQ_API_KEY) + + max_attempts = 5 + + for attempt in range(max_attempts): + print("Attempt to use Groq (Fase Design Mode):") + try: + stream = await client.chat.completions.create( + messages=messages, + # model='gemma-7b-it', + model="mixtral-8x7b-32768", + # model='llama2-70b-4096', + temperature=0.3, + response_format={"type": "json_object"}, + stream=False, + ) + break + except Exception: + if attempt < max_attempts - 1: # i is zero indexed + continue + else: + raise "failed" + + full_reply_content = stream.choices[0].message.content + print(colored(full_reply_content, "blue", "on_white"), end="") + print() + return full_reply_content + + +async def _achat_completion_stream_mixtral(messages: list[dict]) -> str: + client = MistralClient(api_key=MISTRAL_API_KEY) + # client=AsyncGroq(api_key=GROQ_API_KEY) + max_attempts = 5 + + for attempt in range(max_attempts): + try: + messages[len(messages) - 1]["role"] = "user" + stream = client.chat( + messages=[ + ChatMessage( + role=message["role"], content=message["content"] + ) + for message in messages + ], + # model = "mistral-small-latest", + model="open-mixtral-8x7b", + # response_format={"type": "json_object"}, + ) + break # If the operation is successful, break the loop + except Exception: + if attempt < max_attempts - 1: # i is zero indexed + continue + else: + raise "failed" + + full_reply_content = stream.choices[0].message.content + print(colored(full_reply_content, "blue", "on_white"), end="") + print() + return full_reply_content + + +async def _achat_completion_stream_gpt35(messages: list[dict]) -> str: + openai.api_key = OPENAI_API_KEY + openai.api_base = OPENAI_API_BASE + response = await openai.ChatCompletion.acreate( + messages=messages, + max_tokens=4096, + n=1, + stop=None, + temperature=0.3, + timeout=3, + model="gpt-3.5-turbo-16k", + stream=True, + ) + + # create variables to collect the stream of chunks + collected_chunks = [] + collected_messages = [] + # iterate through the stream of events + async for chunk in response: + collected_chunks.append(chunk) # save the event response + choices = chunk["choices"] + if len(choices) > 0: + chunk_message = chunk["choices"][0].get( + "delta", {} + ) # extract the message + collected_messages.append(chunk_message) # save the message + if "content" in chunk_message: + print( + colored(chunk_message["content"], "blue", "on_white"), + end="", + ) + print() + + full_reply_content = "".join( + [m.get("content", "") for m in collected_messages] + ) + return full_reply_content + + +async def _achat_completion_json(messages: list[dict]) -> str: + openai.api_key = OPENAI_API_KEY + openai.api_base = OPENAI_API_BASE + + max_attempts = 5 + + for attempt in range(max_attempts): + try: + stream = await openai.ChatCompletion.acreate( + messages=messages, + max_tokens=4096, + n=1, + stop=None, + temperature=0.3, + timeout=3, + model=MODEL, + response_format={"type": "json_object"}, + ) + break + except Exception: + if attempt < max_attempts - 1: # i is zero indexed + continue + else: + raise "failed" + + full_reply_content = stream.choices[0].message.content + print(colored(full_reply_content, "blue", "on_white"), end="") + print() + return full_reply_content + + +async def _achat_completion_stream(messages: list[dict]) -> str: + openai.api_key = OPENAI_API_KEY + openai.api_base = OPENAI_API_BASE + response = await openai.ChatCompletion.acreate( + **_cons_kwargs(messages), stream=True + ) + + # create variables to collect the stream of chunks + collected_chunks = [] + collected_messages = [] + # iterate through the stream of events + async for chunk in response: + collected_chunks.append(chunk) # save the event response + choices = chunk["choices"] + if len(choices) > 0: + chunk_message = chunk["choices"][0].get( + "delta", {} + ) # extract the message + collected_messages.append(chunk_message) # save the message + if "content" in chunk_message: + print( + colored(chunk_message["content"], "blue", "on_white"), + end="", + ) + print() + + full_reply_content = "".join( + [m.get("content", "") for m in collected_messages] + ) + return full_reply_content + + +def _chat_completion(messages: list[dict]) -> str: + rsp = openai.ChatCompletion.create(**_cons_kwargs(messages)) + content = rsp["choices"][0]["message"]["content"] + return content + + +def _cons_kwargs(messages: list[dict]) -> dict: + kwargs = { + "messages": messages, + "max_tokens": 4096, + "n": 1, + "stop": None, + "temperature": 0.5, + "timeout": 3, + } + kwargs_mode = {"model": MODEL} + kwargs.update(kwargs_mode) + return kwargs diff --git a/backend/AgentCoord/LLMAPI/__init__ b/backend/AgentCoord/LLMAPI/__init__ new file mode 100644 index 0000000..85cee7c --- /dev/null +++ b/backend/AgentCoord/LLMAPI/__init__ @@ -0,0 +1,3 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# import LLMAPI diff --git a/backend/AgentCoord/PlanEngine/AgentSelectModify.py b/backend/AgentCoord/PlanEngine/AgentSelectModify.py new file mode 100644 index 0000000..f6f703a --- /dev/null +++ b/backend/AgentCoord/PlanEngine/AgentSelectModify.py @@ -0,0 +1,137 @@ +import json +from AgentCoord.util.converter import read_LLM_Completion +from typing import List, Dict +from pydantic import BaseModel, RootModel + +PROMPT_ABILITY_REQUIREMENT_GENERATION = """ +## Instruction +Based on "General Goal" and "Current Task", output a formatted "Ability Requirement" which lists at least 3 different ability requirement that is required by the "Current Task". The ability should be summarized concisely within a few words. + +## General Goal (The general goal for the collaboration plan, "Current Task" is just one of its substep) +{General_Goal} + +## Current Task +{Current_Task} + +## Output Format Example (Specify the output format) +```json +{{ + "AbilityRequirement":["Critical Thinking", "Understanding of VR", "Story Structuring Skill"] +}} +``` + +""" + + +class JSON_ABILITY_REQUIREMENT_GENERATION(BaseModel): + AbilityRequirement: List[str] + + +def generate_AbilityRequirement(General_Goal, Current_Task): + messages = [ + { + "role": "system", + "content": f" The JSON object must use the schema: {json.dumps(JSON_ABILITY_REQUIREMENT_GENERATION.model_json_schema(), indent=2)}", + }, + { + "role": "system", + "content": PROMPT_ABILITY_REQUIREMENT_GENERATION.format( + General_Goal=General_Goal, + Current_Task=json.dumps(Current_Task, indent=4), + ), + }, + ] + print(messages[1]["content"]) + return read_LLM_Completion(messages)["AbilityRequirement"] + + +PROMPT_AGENT_ABILITY_SCORING = """ +## Instruction +Based on "Agent Board" and "Ability Requirement", output a score for each agent to estimate the possibility that the agent can fulfil the "Ability Requirement". The score should be 1-5. Provide a concise reason before you assign the score. + +## AgentBoard +{Agent_Board} + +## Ability Requirement +{Ability_Requirement} + +## Attention +Do not omit any agent from the agentboard. + +## Output Format Example (Specify the output format) +```json +{{ + "Sam":{{ + "Reason":"...", + "Score": 1 + }}, + "Alice":{{ + "Reason":"...", + "Score": 5 + }} +}} +``` + +""" + + +class JSON_Agent(BaseModel): + Reason: str + Score: int + + +class JSON_AGENT_ABILITY_SCORING(RootModel): + root: Dict[str, JSON_Agent] + + +def agentAbilityScoring(Agent_Board, Ability_Requirement_List): + scoreTable = {} + for Ability_Requirement in Ability_Requirement_List: + messages = [ + { + "role": "system", + "content": f" The JSON object must use the schema: {json.dumps(JSON_AGENT_ABILITY_SCORING.model_json_schema(), indent=2)}", + }, + { + "role": "system", + "content": PROMPT_AGENT_ABILITY_SCORING.format( + Agent_Board=json.dumps(Agent_Board, indent=4), + Ability_Requirement=Ability_Requirement, + ), + }, + ] + print(messages[1]["content"]) + scoreTable[Ability_Requirement] = read_LLM_Completion(messages) + return scoreTable + + +def AgentSelectModify_init(stepTask, General_Goal, Agent_Board): + Current_Task = { + "TaskName": stepTask["StepName"], + "InputObject_List": stepTask["InputObject_List"], + "OutputObject": stepTask["OutputObject"], + "TaskContent": stepTask["TaskContent"], + } + messages = [ + { + "role": "system", + "content": f" The JSON object must use the schema: {json.dumps(JSON_ABILITY_REQUIREMENT_GENERATION.model_json_schema(), indent=2)}", + }, + { + "role": "system", + "content": PROMPT_ABILITY_REQUIREMENT_GENERATION.format( + General_Goal=General_Goal, + Current_Task=json.dumps(Current_Task, indent=4), + ), + }, + ] + Ability_Requirement_List = read_LLM_Completion(messages)[ + "AbilityRequirement" + ] + scoreTable = agentAbilityScoring(Agent_Board, Ability_Requirement_List) + return scoreTable + + +def AgentSelectModify_addAspect(aspectList, Agent_Board): + scoreTable = agentAbilityScoring(Agent_Board, aspectList) + return scoreTable diff --git a/backend/AgentCoord/PlanEngine/AgentSelection_Generator.py b/backend/AgentCoord/PlanEngine/AgentSelection_Generator.py new file mode 100644 index 0000000..dcbdd49 --- /dev/null +++ b/backend/AgentCoord/PlanEngine/AgentSelection_Generator.py @@ -0,0 +1,116 @@ +import json +from AgentCoord.util.converter import read_LLM_Completion +from typing import List +from pydantic import BaseModel +import random + +MIN_TEAM_SIZE = 2 # the minimum number of agent allowed in a task for the initial coordination strategy. +MAX_TEAM_SIZE = 3 # the maximun number of agent allowed in a task for the initial coordination strategy. You can set it as any number that is larger than MIN_TEAM_SIZE. Recomend to start with less agents and manually add more. + +PROMPT_ABILITY_REQUIREMENT_GENERATION = """ +## Instruction +Based on "General Goal" and "Current Task", output a formatted "Ability Requirement" which lists at least 3 different ability requirement that is required by the "Current Task". The ability should be summarized concisely within a few words. + +## General Goal (The general goal for the collaboration plan, "Current Task" is just one of its substep) +{General_Goal} + +## Current Task +{Current_Task} + +## Output Format Example (Specify the output format) +```json +{{ + "AbilityRequirement":["Critical Thinking", "Understanding of VR", "Story Structuring Skill"] +}} +``` + +""" + + +class JSON_ABILITY_REQUIREMENT_GENERATION(BaseModel): + AbilityRequirement: List[str] + + +PROMPT_AGENT_SELECTION_GENERATION = """ +## Instruction +Based on "General Goal", "Current Task" and "Agent Board", output a formatted "Agent Selection Plan". Your selection should consider the ability needed for "Current Task" and the profile of each agent in "Agent Board". + +## General Goal (Specify the general goal for the collaboration plan) +{General_Goal} + +## Current Task +{Current_Task} + +## Agent Board (Specify the list of agents available for selection) +{Agent_Board} + +## Attention +Just use agents in Agent Board. + +## Output Format Example (Select one or more agent) +```json +{{ + "AgentSelectionPlan": ["Alice","Bob"] +}} +``` + +""" + + +class JSON_AGENT_SELECTION_GENERATION(BaseModel): + AgentSelectionPlan: List[str] + + +def generate_AbilityRequirement(General_Goal, Current_Task): + messages = [ + { + "role": "system", + "content": f" The JSON object must use the schema: {json.dumps(JSON_ABILITY_REQUIREMENT_GENERATION.model_json_schema(), indent=2)}", + }, + { + "role": "system", + "content": PROMPT_ABILITY_REQUIREMENT_GENERATION.format( + General_Goal=General_Goal, + Current_Task=json.dumps(Current_Task, indent=4), + ), + }, + ] + print(messages[1]["content"]) + return read_LLM_Completion(messages)["AbilityRequirement"] + + +def generate_AgentSelection(General_Goal, Current_Task, Agent_Board): + messages = [ + { + "role": "system", + "content": f" The JSON object must use the schema: {json.dumps(JSON_AGENT_SELECTION_GENERATION.model_json_schema(), indent=2)}", + }, + { + "role": "system", + "content": PROMPT_AGENT_SELECTION_GENERATION.format( + General_Goal=General_Goal, + Current_Task=json.dumps(Current_Task, indent=4), + Agent_Board=json.dumps(Agent_Board, indent=4), + ), + }, + ] + print(messages[1]["content"]) + + agentboard_set = {agent["Name"] for agent in Agent_Board} + + while True: + candidate = read_LLM_Completion(messages)["AgentSelectionPlan"] + if len(candidate) > MAX_TEAM_SIZE: + teamSize = random.randint(2, MAX_TEAM_SIZE) + candidate = candidate[0:teamSize] + elif len(candidate) < MIN_TEAM_SIZE: + continue + AgentSelectionPlan = sorted(candidate) + AgentSelectionPlan_set = set(AgentSelectionPlan) + + # Check if every item in AgentSelectionPlan is in agentboard + if AgentSelectionPlan_set.issubset(agentboard_set): + break # If all items are in agentboard, break the loop + + # AgentSelectionPlan= sorted(read_LLM_Completion(messages)["AgentSelectionPlan"]) # sort the select agent list for unique sequence + return AgentSelectionPlan diff --git a/backend/AgentCoord/PlanEngine/__init__ .py b/backend/AgentCoord/PlanEngine/__init__ .py new file mode 100644 index 0000000..a2517c4 --- /dev/null +++ b/backend/AgentCoord/PlanEngine/__init__ .py @@ -0,0 +1,2 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- \ No newline at end of file diff --git a/backend/AgentCoord/PlanEngine/basePlan_Generator.py b/backend/AgentCoord/PlanEngine/basePlan_Generator.py new file mode 100644 index 0000000..347ace2 --- /dev/null +++ b/backend/AgentCoord/PlanEngine/basePlan_Generator.py @@ -0,0 +1,55 @@ +from AgentCoord.PlanEngine.planOutline_Generator import generate_PlanOutline +from AgentCoord.PlanEngine.AgentSelection_Generator import ( + generate_AgentSelection, +) +from AgentCoord.PlanEngine.taskProcess_Generator import generate_TaskProcess +import AgentCoord.util as util + + +def generate_basePlan( + General_Goal, Agent_Board, AgentProfile_Dict, InitialObject_List +): + basePlan = { + "Initial Input Object": InitialObject_List, + "Collaboration Process": [], + } + PlanOutline = generate_PlanOutline( + InitialObject_List=[], General_Goal=General_Goal + ) + for stepItem in PlanOutline: + Current_Task = { + "TaskName": stepItem["StepName"], + "InputObject_List": stepItem["InputObject_List"], + "OutputObject": stepItem["OutputObject"], + "TaskContent": stepItem["TaskContent"], + } + AgentSelection = generate_AgentSelection( + General_Goal=General_Goal, + Current_Task=Current_Task, + Agent_Board=Agent_Board, + ) + Current_Task_Description = { + "TaskName": stepItem["StepName"], + "AgentInvolved": [ + {"Name": name, "Profile": AgentProfile_Dict[name]} + for name in AgentSelection + ], + "InputObject_List": stepItem["InputObject_List"], + "OutputObject": stepItem["OutputObject"], + "CurrentTaskDescription": util.generate_template_sentence_for_CollaborationBrief( + stepItem["InputObject_List"], + stepItem["OutputObject"], + AgentSelection, + stepItem["TaskContent"], + ), + } + TaskProcess = generate_TaskProcess( + General_Goal=General_Goal, + Current_Task_Description=Current_Task_Description, + ) + # add the generated AgentSelection and TaskProcess to the stepItem + stepItem["AgentSelection"] = AgentSelection + stepItem["TaskProcess"] = TaskProcess + basePlan["Collaboration Process"].append(stepItem) + basePlan["General Goal"] = General_Goal + return basePlan diff --git a/backend/AgentCoord/PlanEngine/branch_PlanOutline.py b/backend/AgentCoord/PlanEngine/branch_PlanOutline.py new file mode 100644 index 0000000..64cbd86 --- /dev/null +++ b/backend/AgentCoord/PlanEngine/branch_PlanOutline.py @@ -0,0 +1,102 @@ +from AgentCoord.util.converter import read_LLM_Completion +import json +from typing import List +from pydantic import BaseModel, Field + + +PROMPT_PLAN_OUTLINE_BRANCHING = """ +## Instruction +Based on "Existing Steps", your task is to comeplete the "Remaining Steps" for the plan for "General Goal". +Note: "Modification Requirement" specifies how to modify the "Baseline Completion" for a better/alternative solution. + +## General Goal (Specify the general goal for the plan) +{General_Goal} + +## Initial Key Object List (Specify the list of initial key objects available for use as the input object of a Step) +{InitialObject_List} + +## Existing Steps +{Existing_Steps} + +## Baseline Completion +{Baseline_Completion} + +## Modification Requirement +{Modification_Requirement} + +## Output Format Example (Specify the output format) +```json +{{ + "Remaining Steps": [ + {{ + "StepName": "xx", + "TaskContent": "xxx...", + "InputObject_List": [xx], + "OutputObject": "xx" + }}, + {{ + "StepName": "xx", + "TaskContent": "xxx...", + "InputObject_List": [xx], + "OutputObject": "xx" + }}, + {{ + "StepName": "xx", + "TaskContent": "xxx...", + "InputObject_List": [xx], + "OutputObject": "xx" + }} + ] +}} +``` + +## Format Explaination (Explain the Output Format): +TaskContent: Describe the task of the current step. +InputObject_List: The list of the input obejects that will be used in current step. +OutputObject: The name of the final output object of current step. +StepName: Provide a CONCISE and UNIQUE name for this step, smartly summarize what this step is doing. + +""" + + +class JSON_Step(BaseModel): + StepName: str + TaskContent: str + InputObject_List: List[str] + OutputObject: str + + +class JSON_PLAN_OUTLINE_BRANCHING(BaseModel): + Remaining_Steps: List[JSON_Step] = Field(..., alias="Remaining Steps") + + +def branch_PlanOutline( + branch_Number, + Modification_Requirement, + Existing_Steps, + Baseline_Completion, + InitialObject_List, + General_Goal, +): + prompt = PROMPT_PLAN_OUTLINE_BRANCHING.format( + Modification_Requirement=Modification_Requirement, + Existing_Steps=json.dumps(Existing_Steps, indent=4), + Baseline_Completion=json.dumps(Baseline_Completion, indent=4), + InitialObject_List=str(InitialObject_List), + General_Goal=General_Goal, + ) + print(prompt) + branch_List = [] + for _ in range(branch_Number): + messages = [ + { + "role": "system", + "content": f" The JSON object must use the schema: {json.dumps(JSON_PLAN_OUTLINE_BRANCHING.model_json_schema(), indent=2)}", + }, + {"role": "system", "content": prompt}, + ] + Remaining_Steps = read_LLM_Completion(messages, useGroq=False)[ + "Remaining Steps" + ] + branch_List.append(Remaining_Steps) + return branch_List diff --git a/backend/AgentCoord/PlanEngine/branch_TaskProcess.py b/backend/AgentCoord/PlanEngine/branch_TaskProcess.py new file mode 100644 index 0000000..6e1efb1 --- /dev/null +++ b/backend/AgentCoord/PlanEngine/branch_TaskProcess.py @@ -0,0 +1,153 @@ +from AgentCoord.util.converter import read_LLM_Completion +import AgentCoord.util as util +from typing import List +from pydantic import BaseModel, Field +import json + + +ACT_SET = """ +- Propose (Propose something that contribute to the current task): + - Description Format Example: + Propose some suggestion for the development of the story from emotional aspects. + +- Critique (Provide feedback to the action result of other agents): + - Description Format Example: + Critique the logic soundness of the story outline written by Alice. + +- Improve (Improve the result of a previous action): + - Description Format Example: + Improve the story outline written by Bob based on the feedback by Jordan" + +- Finalize (Deliver the final result based on previous actions): + - Description Format Example: + Summarize the discussion and submit the final version of the Story Outline. + +""" + +PROMPT_TASK_PROCESS_BRANCHING = """ +## Instruction +Based on "Existing Steps", your task is to comeplete the "Remaining Steps" for the "Task for Current Step". +Note: "Modification Requirement" specifies how to modify the "Baseline Completion" for a better/alternative solution. + +## General Goal (The general goal for the collaboration plan, you just design the plan for one of its step (i.e. "Task for Current Step")) +{General_Goal} + +## Task for Current Step +{Current_Task_Description} + +## Action Set (The list of Action Type Available) +{Act_Set} + +## Existing Steps +{Existing_Steps} + +## Baseline Completion +{Baseline_Completion} + +## Modification Requirement +{Modification_Requirement} + +## Output Format Example (Specify the output format) +```json +{{ + "Remaining Steps": [ + {{ + "ID": "Action4", + "ActionType": "Propose", + "AgentName": "Mia", + "Description": "Propose psychological theories on love and attachment that could be applied to AI's emotional development.", + "ImportantInput": [ + "InputObject:Story Outline" + ] + }}, + {{ + "ID": "Action5", + "ActionType": "Propose", + "AgentName": "Noah", + "Description": "Propose ethical considerations and philosophical questions regarding AI's capacity for love.", + "ImportantInput": [] + }}, + {{ + "ID": "Action6", + "ActionType": "Finalize", + "AgentName": "Liam", + "Description": "Combine the poetic elements and ethical considerations into a cohesive set of core love elements for the story.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action5" + ] + }} + ] +}} + +## Format Explaination (Explain the Output Format): +ImportantInput: Specify if there is any previous result that should be taken special consideration during the execution the action. Should be of format "InputObject:xx" or "ActionResult:xx". +InputObject_List: List existing objects that should be utilized in current step. +AgentName: Specify the agent who will perform the action, You CAN ONLY USE THE NAME APPEARS IN "AgentInvolved". +ActionType: Specify the type of action, note that only the last action can be of type "Finalize", and the last action must be "Finalize". + +""" + + +class JSON_Step(BaseModel): + ID: str + ActionType: str + AgentName: str + Description: str + ImportantInput: List[str] + + +class JSON_TASK_PROCESS_BRANCHING(BaseModel): + Remaining_Steps: List[JSON_Step] = Field(..., alias="Remaining Steps") + + +def branch_TaskProcess( + branch_Number, + Modification_Requirement, + Existing_Steps, + Baseline_Completion, + stepTaskExisting, + General_Goal, + AgentProfile_Dict, +): + Current_Task_Description = { + "TaskName": stepTaskExisting["StepName"], + "AgentInvolved": [ + {"Name": name, "Profile": AgentProfile_Dict[name]} + for name in stepTaskExisting["AgentSelection"] + ], + "InputObject_List": stepTaskExisting["InputObject_List"], + "OutputObject": stepTaskExisting["OutputObject"], + "CurrentTaskDescription": util.generate_template_sentence_for_CollaborationBrief( + stepTaskExisting["InputObject_List"], + stepTaskExisting["OutputObject"], + stepTaskExisting["AgentSelection"], + stepTaskExisting["TaskContent"], + ), + } + prompt = PROMPT_TASK_PROCESS_BRANCHING.format( + Modification_Requirement=Modification_Requirement, + Current_Task_Description=json.dumps( + Current_Task_Description, indent=4 + ), + Existing_Steps=json.dumps(Existing_Steps, indent=4), + Baseline_Completion=json.dumps(Baseline_Completion, indent=4), + General_Goal=General_Goal, + Act_Set=ACT_SET, + ) + print(prompt) + branch_List = [] + for i in range(branch_Number): + messages = [ + { + "role": "system", + "content": f" The JSON object must use the schema: {json.dumps(JSON_TASK_PROCESS_BRANCHING.model_json_schema(), indent=2)}", + }, + {"role": "system", "content": prompt}, + ] + Remaining_Steps = read_LLM_Completion(messages, useGroq=False)[ + "Remaining Steps" + ] + + branch_List.append(Remaining_Steps) + return branch_List diff --git a/backend/AgentCoord/PlanEngine/fill_stepTask.py b/backend/AgentCoord/PlanEngine/fill_stepTask.py new file mode 100644 index 0000000..0bcad2e --- /dev/null +++ b/backend/AgentCoord/PlanEngine/fill_stepTask.py @@ -0,0 +1,42 @@ +from AgentCoord.PlanEngine.AgentSelection_Generator import ( + generate_AgentSelection, +) +from AgentCoord.PlanEngine.taskProcess_Generator import generate_TaskProcess +import AgentCoord.util as util + + +def fill_stepTask(General_Goal, stepTask, Agent_Board, AgentProfile_Dict): + Current_Task = { + "TaskName": stepTask["StepName"], + "InputObject_List": stepTask["InputObject_List"], + "OutputObject": stepTask["OutputObject"], + "TaskContent": stepTask["TaskContent"], + } + AgentSelection = generate_AgentSelection( + General_Goal=General_Goal, + Current_Task=Current_Task, + Agent_Board=Agent_Board, + ) + Current_Task_Description = { + "TaskName": stepTask["StepName"], + "AgentInvolved": [ + {"Name": name, "Profile": AgentProfile_Dict[name]} + for name in AgentSelection + ], + "InputObject_List": stepTask["InputObject_List"], + "OutputObject": stepTask["OutputObject"], + "CurrentTaskDescription": util.generate_template_sentence_for_CollaborationBrief( + stepTask["InputObject_List"], + stepTask["OutputObject"], + AgentSelection, + stepTask["TaskContent"], + ), + } + TaskProcess = generate_TaskProcess( + General_Goal=General_Goal, + Current_Task_Description=Current_Task_Description, + ) + # add the generated AgentSelection and TaskProcess to the stepItem + stepTask["AgentSelection"] = AgentSelection + stepTask["TaskProcess"] = TaskProcess + return stepTask diff --git a/backend/AgentCoord/PlanEngine/fill_stepTask_TaskProcess.py b/backend/AgentCoord/PlanEngine/fill_stepTask_TaskProcess.py new file mode 100644 index 0000000..fabafa7 --- /dev/null +++ b/backend/AgentCoord/PlanEngine/fill_stepTask_TaskProcess.py @@ -0,0 +1,29 @@ +from AgentCoord.PlanEngine.taskProcess_Generator import generate_TaskProcess +import AgentCoord.util as util + + +def fill_stepTask_TaskProcess(General_Goal, stepTask, AgentProfile_Dict): + AgentSelection = stepTask["AgentSelection"] + Current_Task_Description = { + "TaskName": stepTask["StepName"], + "AgentInvolved": [ + {"Name": name, "Profile": AgentProfile_Dict[name]} + for name in AgentSelection + ], + "InputObject_List": stepTask["InputObject_List"], + "OutputObject": stepTask["OutputObject"], + "CurrentTaskDescription": util.generate_template_sentence_for_CollaborationBrief( + stepTask["InputObject_List"], + stepTask["OutputObject"], + AgentSelection, + stepTask["TaskContent"], + ), + } + TaskProcess = generate_TaskProcess( + General_Goal=General_Goal, + Current_Task_Description=Current_Task_Description, + ) + # add the generated AgentSelection and TaskProcess to the stepItem + stepTask["AgentSelection"] = AgentSelection + stepTask["TaskProcess"] = TaskProcess + return stepTask diff --git a/backend/AgentCoord/PlanEngine/planOutline_Generator.py b/backend/AgentCoord/PlanEngine/planOutline_Generator.py new file mode 100644 index 0000000..c61ae7a --- /dev/null +++ b/backend/AgentCoord/PlanEngine/planOutline_Generator.py @@ -0,0 +1,86 @@ +from AgentCoord.util.converter import read_LLM_Completion +from typing import List +from pydantic import BaseModel +import json + +PROMPT_PLAN_OUTLINE_GENERATION = """ +## Instruction +Based on "Output Format Example", "General Goal", and "Initial Key Object List", output a formatted "Plan_Outline". + +## Initial Key Object List (Specify the list of initial key objects available, each initial key object should be the input object of at least one Step) +{InitialObject_List} + +## General Goal (Specify the general goal for the collaboration plan) +{General_Goal} + +## Output Format Example (Specify the output format) +```json +{{ + "Plan_Outline": [ + {{ + "StepName": "Love Element Brainstorming", + "TaskContent": "Decide the main love element in the love story.", + "InputObject_List": [], + "OutputObject": "Love Element" + }}, + {{ + "StepName": "Story World Buiding", + "TaskContent": "Build the world setting for the story.", + "InputObject_List": [], + "OutputObject": "World Setting" + }}, + {{ + "StepName": "Story Outline Drafting", + "TaskContent": "Draft the story outline for the story.", + "InputObject_List": ["Love Element", "World Setting"], + "OutputObject": "Story Outline" + }}, + {{ + "StepName": "Final Story Writing", + "TaskContent": "Writing the final story.", + "InputObject_List": [], + "OutputObject": "Completed Story" + }} + ] +}} +``` + +## Format Explaination (Explain the Output Format): +StepName: Provide a CONCISE and UNIQUE name for this step, smartly summarize what this step is doing. +TaskContent: Describe the task of the current step. +InputObject_List: The list of the input obejects that will be used in current step. +OutputObject: The name of the final output object of current step. + +""" + + +class Step(BaseModel): + StepName: str + TaskContent: str + InputObject_List: List[str] + OutputObject: str + + +class PlanOutline(BaseModel): + Plan_Outline: List[Step] + + class Config: + extra = "allow" + + +def generate_PlanOutline(InitialObject_List, General_Goal): + messages = [ + { + "role": "system", + "content": "You are a recipe database that outputs recipes in JSON.\n" + f" The JSON object must use the schema: {json.dumps(PlanOutline.model_json_schema(), indent=2)}", + }, + { + "role": "system", + "content": PROMPT_PLAN_OUTLINE_GENERATION.format( + InitialObject_List=str(InitialObject_List), + General_Goal=General_Goal, + ), + }, + ] + return read_LLM_Completion(messages)["Plan_Outline"] diff --git a/backend/AgentCoord/PlanEngine/taskProcess_Generator.py b/backend/AgentCoord/PlanEngine/taskProcess_Generator.py new file mode 100644 index 0000000..a81b5ff --- /dev/null +++ b/backend/AgentCoord/PlanEngine/taskProcess_Generator.py @@ -0,0 +1,139 @@ +import json +from typing import List +from pydantic import BaseModel +from AgentCoord.util.converter import read_LLM_Completion + +ACT_SET = """ +- Propose (Propose something that contribute to the current task): + - Description Format Example: + Propose some suggestion for the development of the story from emotional aspects. + +- Critique (Provide feedback to the action result of other agents): + - Description Format Example: + Critique the logic soundness of the story outline written by Alice. + +- Improve (Improve the result of a previous action): + - Description Format Example: + Improve the story outline written by Bob based on the feedback by Jordan" + +- Finalize (Deliver the final result based on previous actions): + - Description Format Example: + Summarize the discussion and submit the final version of the Story Outline. + +""" +PROMPT_TASK_PROCESS_GENERATION = """ +## Instruction +Based on "General Goal", "Task for Current Step", "Action Set" and "Output Format Example", design a plan for "Task for Current Step", output a formatted "Task_Process_Plan". + +## General Goal (The general goal for the collaboration plan, you just design the plan for one of its step (i.e. "Task for Current Step")) +{General_Goal} + +## Task for Current Step +{Current_Task_Description} + +## Action Set (The list of Action Type Available) +{Act_Set} + +## Output Format Example (Specify the output format) +```json +{{ + "Task_Process_Plan": [ + {{ + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Bob", + "Description": "Propose an idea about how the AI can get awaken.", + "ImportantInput": [] + }}, + {{ + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Alice", + "Description": "Propose some suggestion for the development of the story from emotional aspects.", + "ImportantInput": ["InputObject:Love Element Notes"] + }}, + {{ + "ID": "Action3", + "ActionType": "Propose", + "AgentName": "Bob", + "Description": "Propose a draft story outline, incorporating the idea proposed by Bob and the suggestion proposed by Alice.", + "ImportantInput": ["ActionResult:Action1", "ActionResult:Action2"] + }}, + {{ + "ID": "Action4", + "ActType": "Critique", + "AgentName": "Jordan", + "Description": "Critique the technical soundness of the draft story outline proposed by Bob." + "ImportantInput": ["ActionResult:Action3"] + }}, + {{ + "ID": "Action5", + "ActType": "Improve", + "AgentName": "Bob", + "Description": "Improve the technical soundness of the draft story outline based on Jordan's feedback.", + "ImportantInput": ["ActionResult:Action3", "ActionResult:Action4"] + }}, + {{ + "ID": "Action6", + "ActType": "Finalize", + "AgentName": "Jordan", + "Description": "Polish the improved draft story outline by Bob and submit it as the final version of the Story Outline", + "ImportantInput": ["ActionResult:Action5"] + }} + ] +}} +``` + +## Format Explaination (Explain the Output Format): +ImportantInput: Specify if there is any previous result that should be taken special consideration during the execution the action. Should be of format "InputObject:xx" or "ActionResult:xx". +InputObject_List: List existing objects that should be utilized in current step. +AgentName: Specify the agent who will perform the action, You CAN ONLY USE THE NAME APPEARS IN "AgentInvolved". +ActionType: Specify the type of action, note that only the last action can be of type "Finalize", and the last action must be "Finalize". + +""" + + +class Action(BaseModel): + ID: str + ActionType: str + AgentName: str + Description: str + ImportantInput: List[str] + + +class TaskProcessPlan(BaseModel): + Task_Process_Plan: List[Action] + + +def generate_TaskProcess(General_Goal, Current_Task_Description): + messages = [ + { + "role": "system", + "content": f" The JSON object must use the schema: {json.dumps(TaskProcessPlan.model_json_schema(), indent=2)}", + }, + { + "role": "system", + "content": PROMPT_TASK_PROCESS_GENERATION.format( + General_Goal=General_Goal, + Current_Task_Description=json.dumps( + Current_Task_Description, indent=4 + ), + Act_Set=ACT_SET, + ), + }, + ] + print(messages[1]["content"]) + + # write a callback function, if read_LLM_Completion(messages)["Task_Process_Plan"] dont have the right format, call this function again + while True: + response_json = read_LLM_Completion(messages)["Task_Process_Plan"] + response_agents = {action["AgentName"] for action in response_json} + involved_agents = { + agent["Name"] + for agent in Current_Task_Description["AgentInvolved"] + } + if response_agents.issubset(involved_agents): + break + + # AgentSelectionPlan= sorted(read_LLM_Completion(messages)["AgentSelectionPlan"]) # sort the select agent list for unique sequence + return response_json diff --git a/backend/AgentCoord/RehearsalEngine_V2/Action/__init__.py b/backend/AgentCoord/RehearsalEngine_V2/Action/__init__.py new file mode 100644 index 0000000..9f343eb --- /dev/null +++ b/backend/AgentCoord/RehearsalEngine_V2/Action/__init__.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from .baseAction import BaseAction +from .customAction_Finalize import customAction_Finalize +from .customAction_Improve import customAction_Improve +from .customAction_Critique import customAction_Critique +from .customAction_Propose import customAction_Propose + +customAction_Dict = {"Finalize":customAction_Finalize, "Improve":customAction_Improve, "Critique":customAction_Critique, "Propose":customAction_Propose} \ No newline at end of file diff --git a/backend/AgentCoord/RehearsalEngine_V2/Action/baseAction.py b/backend/AgentCoord/RehearsalEngine_V2/Action/baseAction.py new file mode 100644 index 0000000..8978bf6 --- /dev/null +++ b/backend/AgentCoord/RehearsalEngine_V2/Action/baseAction.py @@ -0,0 +1,95 @@ +from AgentCoord.LLMAPI.LLMAPI import LLM_Completion +from AgentCoord.util.colorLog import print_colored +import copy +PROMPT_TEMPLATE_TAKE_ACTION_BASE = ''' +Your name is {agentName}. You will play the role as the Profile indicates. +Profile: {agentProfile} + +You are within a multi-agent collaboration for the "Current Task". +Now it's your turn to take action. Read the "Context Information" and take your action following "Instruction for Your Current Action". +Note: Important Input for your action are marked with *Important Input* + +## Context Information + +### General Goal (The "Current Task" is indeed a substep of the general goal) +{General_Goal} + +### Current Task +{Current_Task_Description} + +### Input Objects (Input objects for the current task) +{Input_Objects} + +### History Action +{History_Action} + +## Instruction for Your Current Action +{Action_Description} + +{Action_Custom_Note} + +''' + +PROMPT_TEMPLATE_INPUTOBJECT_RECORD = ''' +{{ +{Important_Mark} +{Input_Objects_Name}: +{Input_Objects_Content} +}} + +''' + +PROMPT_TEMPLATE_ACTION_RECORD = ''' +{{ +{Important_Mark} +{AgentName} ({Action_Description}): +{Action_Result} +}} + +''' + +class BaseAction(): + def __init__(self, info, OutputName, KeyObjects) -> None: + self.KeyObjects = KeyObjects + self.OutputName = OutputName + self.Action_Result = None + self.info = info + self.Action_Custom_Note = "" + + def postRun_Callback(self) -> None: + return + + def run(self, General_Goal, TaskDescription, agentName, AgentProfile_Dict, InputName_List, OutputName, KeyObjects, ActionHistory): + # construct input record + inputObject_Record = "" + for InputName in InputName_List: + ImportantInput_Identifier = "InputObject:" + InputName + if ImportantInput_Identifier in self.info["ImportantInput"]: + Important_Mark = "*Important Input*" + else: + Important_Mark = "" + inputObject_Record += PROMPT_TEMPLATE_INPUTOBJECT_RECORD.format(Input_Objects_Name = InputName, Input_Objects_Content = KeyObjects[InputName], Important_Mark = Important_Mark) + + # construct history action record + action_Record = "" + for actionInfo in ActionHistory: + ImportantInput_Identifier = "ActionResult:" + actionInfo["ID"] + if ImportantInput_Identifier in self.info["ImportantInput"]: + Important_Mark = "*Important Input*" + else: + Important_Mark = "" + action_Record += PROMPT_TEMPLATE_ACTION_RECORD.format(AgentName = actionInfo["AgentName"], Action_Description = actionInfo["AgentName"], Action_Result = actionInfo["Action_Result"], Important_Mark = Important_Mark) + + prompt = PROMPT_TEMPLATE_TAKE_ACTION_BASE.format(agentName = agentName, agentProfile = AgentProfile_Dict[agentName], General_Goal = General_Goal, Current_Task_Description = TaskDescription, Input_Objects = inputObject_Record, History_Action = action_Record, Action_Description = self.info["Description"], Action_Custom_Note = self.Action_Custom_Note) + print_colored(text = prompt, text_color="red") + messages = [{"role":"system", "content": prompt}] + ActionResult = LLM_Completion(messages,True,False) + ActionInfo_with_Result = copy.deepcopy(self.info) + ActionInfo_with_Result["Action_Result"] = ActionResult + + # run customizable callback + self.Action_Result = ActionResult + self.postRun_Callback() + return ActionInfo_with_Result + + \ No newline at end of file diff --git a/backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Critique.py b/backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Critique.py new file mode 100644 index 0000000..ccc8610 --- /dev/null +++ b/backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Critique.py @@ -0,0 +1,16 @@ +from AgentCoord.RehearsalEngine_V2.Action import BaseAction + +ACTION_CUSTOM_NOTE = ''' +Note: Since you are in a conversation, your critique must be concise, clear and easy to read, don't overwhelm others. If you want to list some points, list at most 2 points. + +''' + +class customAction_Critique(BaseAction): + def __init__(self, info, OutputName, KeyObjects) -> None: + self.KeyObjects = KeyObjects + self.OutputName = OutputName + self.Action_Result = None + self.info = info + self.Action_Custom_Note = ACTION_CUSTOM_NOTE.format(OutputName = OutputName) + + \ No newline at end of file diff --git a/backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Finalize.py b/backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Finalize.py new file mode 100644 index 0000000..1d5cc85 --- /dev/null +++ b/backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Finalize.py @@ -0,0 +1,24 @@ +from AgentCoord.util.converter import read_outputObject_content +from AgentCoord.RehearsalEngine_V2.Action import BaseAction + +ACTION_CUSTOM_NOTE = ''' +Note: You can say something before you give the final content of {OutputName}. When you decide to give the final content of {OutputName}, it should be enclosed like this: +```{OutputName} +(the content of {OutputName}) +``` +''' + +class customAction_Finalize(BaseAction): + def __init__(self, info, OutputName, KeyObjects) -> None: + self.KeyObjects = KeyObjects + self.OutputName = OutputName + self.Action_Result = None + self.info = info + self.Action_Custom_Note = ACTION_CUSTOM_NOTE.format(OutputName = OutputName) + + def postRun_Callback(self) -> None: + # extract output object + extracted_outputObject = read_outputObject_content(self.Action_Result, self.OutputName) + # add the extracted output object to KeyObjects + self.KeyObjects[self.OutputName] = extracted_outputObject + \ No newline at end of file diff --git a/backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Improve.py b/backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Improve.py new file mode 100644 index 0000000..4174a7a --- /dev/null +++ b/backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Improve.py @@ -0,0 +1,22 @@ +from AgentCoord.RehearsalEngine_V2.Action import BaseAction + +ACTION_CUSTOM_NOTE = ''' +Note: You can say something before you provide the improved version of the content. +The improved version you provide must be a completed version (e.g. if you provide a improved story, you should give completed story content, rather than just reporting where you have improved). +When you decide to give the improved version of the content, it should be start like this: + +## Improved version of xxx +(the improved version of the content) +``` + +''' + +class customAction_Improve(BaseAction): + def __init__(self, info, OutputName, KeyObjects) -> None: + self.KeyObjects = KeyObjects + self.OutputName = OutputName + self.Action_Result = None + self.info = info + self.Action_Custom_Note = ACTION_CUSTOM_NOTE.format(OutputName = OutputName) + + \ No newline at end of file diff --git a/backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Propose.py b/backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Propose.py new file mode 100644 index 0000000..028dae5 --- /dev/null +++ b/backend/AgentCoord/RehearsalEngine_V2/Action/customAction_Propose.py @@ -0,0 +1,15 @@ +from AgentCoord.RehearsalEngine_V2.Action import BaseAction + +ACTION_CUSTOM_NOTE = ''' + +''' + +class customAction_Propose(BaseAction): + def __init__(self, info, OutputName, KeyObjects) -> None: + self.KeyObjects = KeyObjects + self.OutputName = OutputName + self.Action_Result = None + self.info = info + self.Action_Custom_Note = ACTION_CUSTOM_NOTE.format(OutputName = OutputName) + + \ No newline at end of file diff --git a/backend/AgentCoord/RehearsalEngine_V2/ExecutePlan.py b/backend/AgentCoord/RehearsalEngine_V2/ExecutePlan.py new file mode 100644 index 0000000..c944494 --- /dev/null +++ b/backend/AgentCoord/RehearsalEngine_V2/ExecutePlan.py @@ -0,0 +1,128 @@ +import AgentCoord.util as util +import AgentCoord.RehearsalEngine_V2.Action as Action +from termcolor import colored + + +# Accept inputs: num_StepToRun (the number of step to run, if None, run to the end), plan, RehearsalLog, AgentProfile_Dict +def executePlan(plan, num_StepToRun, RehearsalLog, AgentProfile_Dict): + # Prepare for execution + KeyObjects = {} + finishedStep_index = -1 + for logNode in RehearsalLog: + # Increment for finishedStep_index: finishedStep_index is the index of the lastest finished step seen in RehearsalLog, if no step finished yet, index will be -1 + if logNode["LogNodeType"] == "step": + finishedStep_index += 1 + # Set existing key object + if logNode["LogNodeType"] == "object": + KeyObjects[logNode["NodeId"]] = logNode["content"] + + # Execute + # specify which steps will be run + if num_StepToRun is None: + run_to = len(plan["Collaboration Process"]) + else: + run_to = (finishedStep_index + 1) + num_StepToRun + + StepRun_count = 0 # count how many steps are run during execution + # loop for each step to run + for stepDescrip in plan["Collaboration Process"][ + (finishedStep_index + 1): run_to + ]: + StepRun_count += 1 + # collect infos for executing the current step + StepName = ( + util.camel_case_to_normal(stepDescrip["StepName"]) + if util.is_camel_case(stepDescrip["StepName"]) + else stepDescrip["StepName"] + ) + TaskContent = stepDescrip["TaskContent"] + InputName_List = ( + [ + ( + util.camel_case_to_normal(obj) + if util.is_camel_case(obj) + else obj + ) + for obj in stepDescrip["InputObject_List"] + ] + if stepDescrip["InputObject_List"] is not None + else None + ) + OutputName = ( + util.camel_case_to_normal(stepDescrip["OutputObject"]) + if util.is_camel_case(stepDescrip["OutputObject"]) + else stepDescrip["OutputObject"] + ) + Agent_List = stepDescrip["AgentSelection"] + TaskProcess = stepDescrip["TaskProcess"] + TaskDescription = ( + util.converter.generate_template_sentence_for_CollaborationBrief( + input_object_list=InputName_List, + output_object=OutputName, + agent_list=Agent_List, + step_task=TaskContent, + ) + ) + + # init log for RehearsalLog + inputObject_Record = [ + {InputName: KeyObjects[InputName]} for InputName in InputName_List + ] + stepLogNode = { + "LogNodeType": "step", + "NodeId": StepName, + "InputName_List": InputName_List, + "OutputName": OutputName, + "chatLog": [], + "inputObject_Record": inputObject_Record, + } + objectLogNode = { + "LogNodeType": "object", + "NodeId": OutputName, + "content": None, + } + + # start the group chat + util.print_colored(TaskDescription, text_color="green") + ActionHistory = [] + for ActionInfo in TaskProcess: + actionType = ActionInfo["ActionType"] + agentName = ActionInfo["AgentName"] + if actionType in Action.customAction_Dict: + currentAction = Action.customAction_Dict[actionType]( + info=ActionInfo, + OutputName=OutputName, + KeyObjects=KeyObjects, + ) + else: + currentAction = Action.BaseAction( + info=ActionInfo, + OutputName=OutputName, + KeyObjects=KeyObjects, + ) + ActionInfo_with_Result = currentAction.run( + General_Goal=plan["General Goal"], + TaskDescription=TaskDescription, + agentName=agentName, + AgentProfile_Dict=AgentProfile_Dict, + InputName_List=InputName_List, + OutputName=OutputName, + KeyObjects=KeyObjects, + ActionHistory=ActionHistory, + ) + ActionHistory.append(ActionInfo_with_Result) + # post processing for the group chat (finish) + objectLogNode["content"] = KeyObjects[OutputName] + RehearsalLog.append(stepLogNode) + RehearsalLog.append(objectLogNode) + stepLogNode["ActionHistory"] = ActionHistory + + # Return Output + print( + colored( + "$Run " + str(StepRun_count) + "step$", + color="black", + on_color="on_white", + ) + ) + return RehearsalLog diff --git a/backend/AgentCoord/RehearsalEngine_V2/__init__.py b/backend/AgentCoord/RehearsalEngine_V2/__init__.py new file mode 100644 index 0000000..faa18be --- /dev/null +++ b/backend/AgentCoord/RehearsalEngine_V2/__init__.py @@ -0,0 +1,2 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- diff --git a/backend/AgentCoord/__init__ .py b/backend/AgentCoord/__init__ .py new file mode 100644 index 0000000..a2517c4 --- /dev/null +++ b/backend/AgentCoord/__init__ .py @@ -0,0 +1,2 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- \ No newline at end of file diff --git a/backend/AgentCoord/util/__init__.py b/backend/AgentCoord/util/__init__.py new file mode 100644 index 0000000..ab64239 --- /dev/null +++ b/backend/AgentCoord/util/__init__.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from .colorLog import print_colored +from .converter import ( + generate_template_sentence_for_CollaborationBrief, + remove_render_spec, + camel_case_to_normal, + is_camel_case, +) diff --git a/backend/AgentCoord/util/addRenderSpec.py b/backend/AgentCoord/util/addRenderSpec.py new file mode 100644 index 0000000..60b30d2 --- /dev/null +++ b/backend/AgentCoord/util/addRenderSpec.py @@ -0,0 +1,2 @@ +def basePlan_addRenderSpec(basePlan): + return basePlan diff --git a/backend/AgentCoord/util/colorLog.py b/backend/AgentCoord/util/colorLog.py new file mode 100644 index 0000000..ca2cfd0 --- /dev/null +++ b/backend/AgentCoord/util/colorLog.py @@ -0,0 +1,6 @@ +from termcolor import colored + + +# colored print +def print_colored(text, text_color="green", background="on_white"): + print(colored(text, text_color, background)) diff --git a/backend/AgentCoord/util/converter.py b/backend/AgentCoord/util/converter.py new file mode 100644 index 0000000..8af1aa8 --- /dev/null +++ b/backend/AgentCoord/util/converter.py @@ -0,0 +1,130 @@ +import re +import json +from AgentCoord.LLMAPI.LLMAPI import LLM_Completion + + +def create_agent_dict(agent_list): + return {agent["Name"]: agent["Profile"] for agent in agent_list} + + +def is_camel_case(s): + # If there are no spaces, it might be camel case + return " " not in s + + +def camel_case_to_normal(s): + # Split the camel case string into words + return "".join(" " + c if c.isupper() else c for c in s).lstrip() + + +def generate_template_sentence_for_CollaborationBrief( + input_object_list, output_object, agent_list, step_task +): + # Check if the names are in camel case (no spaces) and convert them to normal naming convention + input_object_list = ( + [ + camel_case_to_normal(obj) if is_camel_case(obj) else obj + for obj in input_object_list + ] + if input_object_list is not None + else None + ) + output_object = ( + camel_case_to_normal(output_object) + if is_camel_case(output_object) + else output_object + ) + + # Format the agents into a string with proper grammar + agent_str = ( + " and ".join([", ".join(agent_list[:-1]), agent_list[-1]]) + if len(agent_list) > 1 + else agent_list[0] + ) + + if input_object_list is None or len(input_object_list) == 0: + # Combine all the parts into the template sentence + template_sentence = f"{agent_str} perform the task of {step_task} to obtain {output_object}." + else: + # Format the input objects into a string with proper grammar + input_str = ( + " and ".join( + [", ".join(input_object_list[:-1]), input_object_list[-1]] + ) + if len(input_object_list) > 1 + else input_object_list[0] + ) + # Combine all the parts into the template sentence + template_sentence = f"Based on {input_str}, {agent_str} perform the task of {step_task} to obtain {output_object}." + + return template_sentence + + +def remove_render_spec(duty_spec): + if isinstance(duty_spec, dict): + return { + k: remove_render_spec(v) + for k, v in duty_spec.items() + if k != "renderSpec" + } + elif isinstance(duty_spec, list): + return [remove_render_spec(item) for item in duty_spec] + else: + return duty_spec + + +def read_LLM_Completion(messages, useGroq=True): + for _ in range(3): + text = LLM_Completion(messages, useGroq=useGroq) + + pattern = r"(?:.*?```json)(.*?)(?:```.*?)" + match = re.search(pattern, text, re.DOTALL) + + if match: + return json.loads(match.group(1).strip()) + + pattern = r"\{.*\}" + match = re.search(pattern, text, re.DOTALL) + if match: + try: + return json.loads(match.group(0).strip()) + except Exception: + pass + raise ("bad format!") + + +def read_json_content(text): + """ + Extracts and returns content between ```json and ``` + + :param text: The string containing the content enclosed by ```json and ``` + """ + # pattern = r"```json(.*?)```" + pattern = r"(?:.*?```json)(.*?)(?:```.*?)" + match = re.search(pattern, text, re.DOTALL) + + if match: + return json.loads(match.group(1).strip()) + + pattern = r"\{.*\}" + match = re.search(pattern, text, re.DOTALL) + if match: + return json.loads(match.group(0).strip()) + + raise ("bad format!") + + +def read_outputObject_content(text, keyword): + """ + Extracts and returns content between ```{keyword} and ``` + + :param text: The string containing the content enclosed by ```{keyword} and ``` + """ + + pattern = r"```{}(.*?)```".format(keyword) + match = re.search(pattern, text, re.DOTALL) + + if match: + return match.group(1).strip() + else: + raise ("bad format!") diff --git a/backend/AgentRepo/agentBoard_v1.json b/backend/AgentRepo/agentBoard_v1.json new file mode 100644 index 0000000..b9a8f6a --- /dev/null +++ b/backend/AgentRepo/agentBoard_v1.json @@ -0,0 +1,102 @@ +[ + { + "Icon": "Abigail_Chen.png", + "Name": "Abigail", + "Profile": "AI Engineer" + }, + { + "Icon": "Jane_Moreno.png", + "Name": "Jane", + "Profile": "Cybersecurity Specialist" + }, + { + "Icon": "Giorgio_Rossi.png", + "Name": "Giorgio", + "Profile": "Poet" + }, + { + "Icon": "Jennifer_Moore.png", + "Name": "Jennifer", + "Profile": "Linguist" + }, + { + "Icon": "Maria_Lopez.png", + "Name": "Maria", + "Profile": "Philosopher" + }, + { + "Icon": "Sam_Moore.png", + "Name": "Sam", + "Profile": "Ethicist" + }, + { + "Icon": "Yuriko_Yamamoto.png", + "Name": "Yuriko", + "Profile": "Futurist" + }, + { + "Icon": "Carlos_Gomez.png", + "Name": "Carlos", + "Profile": "Language Expert" + }, + { + "Icon": "John_Lin.png", + "Name": "John", + "Profile": "Software Developer" + }, + { + "Icon": "Tamara_Taylor.png", + "Name": "Tamara", + "Profile": "Music Composer" + }, + { + "Icon": "Arthur_Burton.png", + "Name": "Arthur", + "Profile": "Neuroscientist" + }, + { + "Icon": "Eddy_Lin.png", + "Name": "Eddy", + "Profile": "Cognitive Psychologist" + }, + { + "Icon": "Isabella_Rodriguez.png", + "Name": "Isabella", + "Profile": "Science Fiction Writer" + }, + { + "Icon": "Latoya_Williams.png", + "Name": "Latoya", + "Profile": "Historian of Technology" + }, + { + "Icon": "Carmen_Ortiz.png", + "Name": "Carmen", + "Profile": "Robotics Engineer" + }, + { + "Icon": "Rajiv_Patel.png", + "Name": "Rajiv", + "Profile": "Science Educator" + }, + { + "Icon": "Tom_Moreno.png", + "Name": "Tom", + "Profile": "AI Scientist" + }, + { + "Icon": "Ayesha_Khan.png", + "Name": "Ayesha", + "Profile": "Multimedia Artist" + }, + { + "Icon": "Mei_Lin.png", + "Name": "Mei", + "Profile": "Graphic Designer" + }, + { + "Icon": "Hailey_Johnson.png", + "Name": "Hailey", + "Profile": "Legal Expert on AI Law" + } +] \ No newline at end of file diff --git a/backend/DataProcess/DataProcess.py b/backend/DataProcess/DataProcess.py new file mode 100644 index 0000000..ee86e90 --- /dev/null +++ b/backend/DataProcess/DataProcess.py @@ -0,0 +1,188 @@ +import re +from .FormatList import FormatList, TransToFrontFormat + +is_mock = False + +colorMap = { + "propose": [194, 34, 73], + "execute": [242, 28, 86], + "critique": [68, 24, 70], + "finalize": [14, 27, 73], + "inputobject": [108, 45, 74], + "outputobject": [32, 100, 78], + "agent": [0, 0, 80], +} + + +def OperateCamelStr(_str: str): + if " " in _str: + return _str + return "".join(" " + c if c.isupper() else c for c in _str).lstrip() + + +def ParseRole(_str: str) -> dict: + if _str[0] == "(" and _str[-1] == ")": + _str = _str[1:-1].split(":") + return dict({"Name": _str[0], "Job": _str[1]}) + + +def ParseStepTask(step_task: str): + if len(step_task) == 0: + return "" + + if step_task[0].isupper() and step_task[-1] == ".": + step_task = step_task[0].lower() + step_task[1:-1] + return step_task + + +def Generate_Collaboration_Specification_frontEnd(_str): + assert isinstance(_str, str) + res = dict() + res["template"] = "" + res["data"] = dict() + Persons = [] + + temp = re.findall(r"\(\w*:\w*?\)", _str, flags=re.M) + new_str = re.sub(r" *\(\w*:\w*?\) *", " ", _str, flags=re.M) + words = new_str.split(" ") + for i in range(len(temp)): + temp[i] = ParseRole(temp[i]) + res["data"][str(len(Persons))] = dict( + { + "text": temp[i]["Name"], + "color": colorMap[temp[i]["Job"].lower()], + } + ) + Persons.append(temp[i]["Name"]) + + index = int(0) + for i in range(len(words)): + if words[i] in Persons: + words[i] = TransToFrontFormat(index) + index += 1 + + res["template"] = " ".join(words) + return res + + +def Generate_Agent_DutySpecification_frontEnd(_obj: dict): + _obj = _obj.copy() + for key, val in _obj.items(): + if isinstance(val, list): + for i, v in enumerate(val): + if isinstance(v, dict) and "DutyType" in v.keys(): + _obj[key][i]["renderSpec"] = dict( + {"color": colorMap[_obj[key][i]["DutyType"].lower()]} + ) + return _obj + + +def CheckDict(_dict: dict) -> bool: + items = ["InputObject_List", "OutputObject", "TaskContent"] + for e in items: + if e not in _dict.keys(): + return False + return True + + +def Add_Collaboration_Brief_FrontEnd(_obj): + if isinstance(_obj, list): + for i in range(len(_obj)): + _obj[i] = Add_Collaboration_Brief_FrontEnd(_obj[i]) + elif isinstance(_obj, dict) and ( + CheckDict(_obj) or "Collaboration Process" in _obj.keys() + ): + if "Collaboration Process" in _obj.keys(): + _obj["Collaboration Process"] = Add_Collaboration_Brief_FrontEnd( + _obj["Collaboration Process"] + ) + else: + _obj = _obj.copy() + Agent_List = ( + _obj["AgentSelection"][:] + if "AgentSelection" in _obj.keys() + else None + ) + InputObject_List = ( + [OperateCamelStr(b) for b in _obj["InputObject_List"]] + if "InputObject_List" in _obj.keys() + and _obj["InputObject_List"] is not None + else [] + ) + OutputObject = ( + OperateCamelStr(_obj["OutputObject"]) + if "OutputObject" in _obj.keys() + else "" + ) + + _obj["StepName"] = OperateCamelStr(_obj["StepName"]) + _obj["InputObject_List"] = InputObject_List + _obj["OutputObject"] = OutputObject + + TaskContent = _obj["TaskContent"] + # add Collaboration Brief + _key = ( + "Collaboration_Brief_FrontEnd" + if Agent_List is not None and len(Agent_List) > 0 + else "Collaboration_Brief_LackAgent_FrontEnd" + ) + _obj[_key] = Generate_Collaboration_Brief_FrontEnd( + InputObject_List, OutputObject, Agent_List, TaskContent + ) + return _obj + + +def Generate_Collaboration_Brief_FrontEnd( + InputObject_List, OutputObject, Agent_List, TaskContent +): + res = dict({}) + res["template"] = str("") + res["data"] = dict({}) + len_in = len(InputObject_List) + len_out = 1 + len_ag = len(Agent_List) if Agent_List is not None else 0 + + Template_Sentence_InputObject = ( + f"Based on {FormatList(InputObject_List).Format()}, " + if len_in > 0 + else "" + ) + Template_Sentence_Agent = ( + f"{FormatList(Agent_List, len_in).Format()} " + if Agent_List is not None and len_ag > 0 + else "" + ) + Template_Sentence_TaskContent = f"perform{'s' if len_ag == 1 else ''} the task of {ParseStepTask(TaskContent)} " + Template_Sentence_OutputObject = ( + f"to obtain {FormatList([OutputObject], len_ag + len_in).Format()}." + if len_out > 0 + else "" + ) + Template_Sentence = ( + Template_Sentence_InputObject + + Template_Sentence_Agent + + Template_Sentence_TaskContent + + Template_Sentence_OutputObject + ) + + res["template"] = Template_Sentence + index = int(0) + for i in range(len_in): + res["data"][str(index)] = dict( + { + "text": InputObject_List[i], + "color": colorMap["InputObject".lower()], + } + ) + index += 1 + for i in range(len_ag): + res["data"][str(index)] = dict( + {"text": Agent_List[i], "color": colorMap["Agent".lower()]} + ) + index += 1 + + res["data"][str(index)] = dict( + {"text": OutputObject, "color": colorMap["OutputObject".lower()]} + ) + index += 1 + return res diff --git a/backend/DataProcess/FormatList.py b/backend/DataProcess/FormatList.py new file mode 100644 index 0000000..f9f67bf --- /dev/null +++ b/backend/DataProcess/FormatList.py @@ -0,0 +1,47 @@ +class FormatList: + _list = [] + offset: int = 0 + + def __init__(self, input_list: list, offset: int = 0): + self._list = input_list.copy() + self.offset = offset + + def __str__(self): + s = str("") + if len(self._list) <= 0: + return s + if len(self._list) == 1: + return self._list[0] + if len(self._list) == 2: + return " and ".join(self._list) + if len(self._list) > 2: + return ", ".join(self._list[:-1]) + " and " + self._list[-1] + + def Format(self): + s = str("") + if len(self._list) <= 0: + return s + if len(self._list) == 1: + return TransToFrontFormat(0 + self.offset) + if len(self._list) == 2: + return " and ".join( + [ + TransToFrontFormat(i + self.offset) + for i in range(len(self._list)) + ] + ) + if len(self._list) > 2: + return ( + ", ".join( + [ + TransToFrontFormat(i + self.offset) + for i in range(len(self._list) - 1) + ] + ) + + " and " + + TransToFrontFormat(len(self._list) - 1 + self.offset) + ) + + +def TransToFrontFormat(index: int): + return "!<" + str(index) + ">!" diff --git a/backend/DataProcess/__init__.py b/backend/DataProcess/__init__.py new file mode 100644 index 0000000..4a879d0 --- /dev/null +++ b/backend/DataProcess/__init__.py @@ -0,0 +1 @@ +from .DataProcess import Add_Collaboration_Brief_FrontEnd \ No newline at end of file diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..7cc4675 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,20 @@ +FROM python:3.11.8-alpine3.18 +WORKDIR /app +EXPOSE 8000/tcp + +# Build +COPY requirements.txt ./ +RUN pip --no-cache-dir install -r ./requirements.txt + +# Mount +COPY . ./ + +# Run +ENV OPENAI_API_BASE=https://api.openai.com +ENV OPENAI_API_KEY= +ENV OPENAI_API_MODEL=gpt-4-turbo-preview +ENV USE_CACHE=False +ENV FAST_DESIGN_MODE=True +ENV GROQ_API_KEY= +ENV MISTRAL_API_KEY= +CMD ["python", "server.py", "--port", "8000"] diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 0000000..6cb2dc1 --- /dev/null +++ b/backend/README.md @@ -0,0 +1,38 @@ +# AgentCoord: Visually Exploring Coordination Strategy for LLM-based Multi-Agent Collaboration +

+ AgentCoord: Visually Exploring Coordination Strategy for LLM-based Multi-Agent Collaboration +

+AgentCoord is an experimental open-source system to help general users design coordination strategies for multiple LLM-based agents (Research paper forthcoming). + +## System Usage + + +## Installation +### Installation +```bash +git clone https://github.com/AgentCoord/AgentCoord.git +cd AgentCoord +pip install -r requirements.txt +``` +### Configuration +#### LLM configuration +You can set the configuration (i.e. API base, API key, Model name, Max tokens, Response per minute) for default LLM in config\config.yaml. Currently, we only support OpenAI’s LLMs as the default model. We recommend using gpt-4-0125-preview as the default model (WARNING: the execution process of multiple agents may consume a significant number of tokens). + +You can switch to a fast mode that uses the Mistral 8×7B model with hardware acceleration by [Groq](https://groq.com/) for the first time in strategy generation to strike a balance of response quality and efficiency. To achieve this, you need to set the FAST_DESIGN_MODE field in the yaml file as True and fill the GROQ_API_KEY field with the api key of [Groq](https://wow.groq.com/). + +#### Agent configuration +Currently, we support config agents by [role-prompting](https://arxiv.org/abs/2305.14688). You can customize your agents by changing the role prompts in AgentRepo\agentBoard_v1.json. We plan to support more methods to customize agents (e.g., supporting RAG, or providing a unified wrapper for customized agents). + +### Launch +Execute the following command to launch the system: +```bash +python server.py +``` +## More Papers & Projects for LLM-based Multi-Agent Collaboration +If you’re interested in LLM-based multi-agent collaboration and want more papers & projects for reference, you may check out the corpus collected by us: + + + + + diff --git a/backend/RequestCache/Request_Cache.json b/backend/RequestCache/Request_Cache.json new file mode 100644 index 0000000..997acb1 --- /dev/null +++ b/backend/RequestCache/Request_Cache.json @@ -0,0 +1,3872 @@ +{ + "('/generate_basePlan', 'Write a novel about the awakening of artificial intelligence.', [])": { + "Initial Input Object": [], + "Collaboration Process": [ + { + "StepName": "Theme Selection", + "TaskContent": "Select the main theme focused on the awakening of artificial intelligence.", + "InputObject_List": [], + "OutputObject": "Main Theme", + "AgentSelection": [ + "Isabella", + "Yuriko" + ], + "Collaboration_Brief_FrontEnd": { + "template": "!<0>! and !<1>! perform the task of select the main theme focusing on the awakening of artificial intelligence to obtain !<2>!.", + "data": { + "0": { + "text": "Maria", + "color": [ + 0, + 0, + 80 + ] + }, + "1": { + "text": "Sam", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Main Theme", + "color": [ + 32, + 100, + 78 + ] + } + } + }, + "TaskProcess": [ + { + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose a set of themes that explore the ethical implications of artificial intelligence awakening.", + "ID": "Action1", + "ImportantInput": [] + }, + { + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose a theme focusing on the societal impact of artificial intelligence becoming sentient.", + "ID": "Action2", + "ImportantInput": [] + }, + { + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the feasibility of the themes proposed by Yuriko from a science fiction narrative perspective.", + "ID": "Action3", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ActionType": "Critique", + "AgentName": "Yuriko", + "Description": "Critique the themes proposed by Isabella based on potential future technological advancements.", + "ID": "Action4", + "ImportantInput": [ + "ActionResult:Action1" + ] + }, + { + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve the proposed themes by integrating Yuriko's technological insights and feedback.", + "ID": "Action5", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action4" + ] + }, + { + "ActionType": "Improve", + "AgentName": "Yuriko", + "Description": "Improve the proposed themes by considering Isabella's narrative critiques and suggestions.", + "ID": "Action6", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action3" + ] + }, + { + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Finalize the main theme by synthesizing the improved themes proposed by both Isabella and Yuriko.", + "ID": "Action7", + "ImportantInput": [ + "ActionResult:Action5", + "ActionResult:Action6" + ] + } + ] + }, + { + "StepName": "Character Creation", + "TaskContent": "Create a list of characters that will be part of the novel, including AI entities and human characters.", + "InputObject_List": [], + "OutputObject": "Character List", + "AgentSelection": [ + "Isabella", + "Jennifer", + "Giorgio" + ], + "Collaboration_Brief_FrontEnd": { + "template": "!<0>! and !<1>! perform the task of select the main theme focusing on the awakening of artificial intelligence to obtain !<2>!.", + "data": { + "0": { + "text": "Maria", + "color": [ + 0, + 0, + 80 + ] + }, + "1": { + "text": "Sam", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Main Theme", + "color": [ + 32, + 100, + 78 + ] + } + } + }, + "TaskProcess": [ + { + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose a list of potential AI characters based on current technological and futuristic concepts.", + "ID": "Action1", + "ImportantInput": [] + }, + { + "ActionType": "Propose", + "AgentName": "Jennifer", + "Description": "Propose a list of human characters who interact with AI, focusing on their linguistic and cultural backgrounds.", + "ID": "Action2", + "ImportantInput": [] + }, + { + "ActionType": "Propose", + "AgentName": "Giorgio", + "Description": "Propose emotional and philosophical themes that the characters could explore in their interactions.", + "ID": "Action3", + "ImportantInput": [] + }, + { + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the proposed list of human characters by Jennifer, focusing on their feasibility in a science fiction setting.", + "ID": "Action4", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ActionType": "Critique", + "AgentName": "Jennifer", + "Description": "Critique the proposed AI characters by Isabella, ensuring linguistic diversity and depth.", + "ID": "Action5", + "ImportantInput": [ + "ActionResult:Action1" + ] + }, + { + "ActionType": "Improve", + "AgentName": "Giorgio", + "Description": "Improve the character list by integrating emotional and philosophical themes into the profiles of both AI and human characters.", + "ID": "Action6", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action2", + "ActionResult:Action3", + "ActionResult:Action4", + "ActionResult:Action5" + ] + }, + { + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Finalize the character list by incorporating all feedback and improvements, and submit it as the official Character List for the novel.", + "ID": "Action7", + "ImportantInput": [ + "ActionResult:Action6" + ] + } + ] + }, + { + "StepName": "Plot Development", + "TaskContent": "Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening.", + "InputObject_List": [ + "Main Theme", + "Character List" + ], + "OutputObject": "Novel Plot", + "AgentSelection": [ + "Isabella", + "Yuriko", + "Jennifer" + ], + "Collaboration_Brief_FrontEnd": { + "template": "!<0>! and !<1>! perform the task of select the main theme focusing on the awakening of artificial intelligence to obtain !<2>!.", + "data": { + "0": { + "text": "Maria", + "color": [ + 0, + 0, + 80 + ] + }, + "1": { + "text": "Sam", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Main Theme", + "color": [ + 32, + 100, + 78 + ] + } + } + }, + "TaskProcess": [ + { + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose initial story arcs based on the main theme of AI awakening.", + "ID": "Action1", + "ImportantInput": [ + "InputObject:Main Theme", + "InputObject:Character List" + ] + }, + { + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose futuristic elements and technologies that could play a key role in the AI awakening story.", + "ID": "Action2", + "ImportantInput": [ + "InputObject:Main Theme" + ] + }, + { + "ActionType": "Critique", + "AgentName": "Jennifer", + "Description": "Critique the realism and feasibility of the futuristic elements proposed by Yuriko from a linguistic perspective.", + "ID": "Action3", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ActionType": "Improve", + "AgentName": "Yuriko", + "Description": "Refine the futuristic elements based on Jennifer's feedback to ensure linguistic accuracy and feasibility.", + "ID": "Action4", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action3" + ] + }, + { + "ActionType": "Propose", + "AgentName": "Jennifer", + "Description": "Propose the linguistic evolution and communication methods of AI as it awakens and interacts with humans.", + "ID": "Action5", + "ImportantInput": [] + }, + { + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Integrate the refined futuristic elements and linguistic evolution into the initial story arcs.", + "ID": "Action6", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action4", + "ActionResult:Action5" + ] + }, + { + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Compile all contributions into a cohesive novel plot outline, ensuring a logical flow of events and character development.", + "ID": "Action7", + "ImportantInput": [ + "ActionResult:Action6" + ] + } + ] + }, + { + "StepName": "Writing Draft", + "TaskContent": "Write the initial draft of the novel based on the developed plot and characters.", + "InputObject_List": [ + "Novel Plot" + ], + "OutputObject": "Novel Draft", + "AgentSelection": [ + "Giorgio", + "Jennifer" + ], + "Collaboration_Brief_FrontEnd": { + "template": "!<0>! and !<1>! perform the task of select the main theme focusing on the awakening of artificial intelligence to obtain !<2>!.", + "data": { + "0": { + "text": "Maria", + "color": [ + 0, + 0, + 80 + ] + }, + "1": { + "text": "Sam", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Main Theme", + "color": [ + 32, + 100, + 78 + ] + } + } + }, + "TaskProcess": [ + { + "ActionType": "Propose", + "AgentName": "Giorgio", + "Description": "Propose poetic elements and themes to be included in the novel.", + "ID": "Action1", + "ImportantInput": [ + "InputObject:Novel Plot" + ] + }, + { + "ActionType": "Propose", + "AgentName": "Jennifer", + "Description": "Propose linguistic styles and dialogues that match the characters' personalities.", + "ID": "Action2", + "ImportantInput": [ + "InputObject:Novel Plot" + ] + }, + { + "ActionType": "Critique", + "AgentName": "Giorgio", + "Description": "Critique the linguistic styles proposed by Jennifer, focusing on their compatibility with the poetic elements.", + "ID": "Action3", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ActionType": "Critique", + "AgentName": "Jennifer", + "Description": "Critique the poetic elements proposed by Giorgio, ensuring they align with the novel's linguistic style.", + "ID": "Action4", + "ImportantInput": [ + "ActionResult:Action1" + ] + }, + { + "ActionType": "Improve", + "AgentName": "Giorgio", + "Description": "Improve the initial draft by integrating Jennifer's linguistic styles with his poetic elements based on mutual critiques.", + "ID": "Action5", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action3", + "ActionResult:Action4" + ] + }, + { + "ActionType": "Improve", + "AgentName": "Jennifer", + "Description": "Enhance the dialogues and linguistic styles in the draft, incorporating Giorgio's poetic improvements.", + "ID": "Action6", + "ImportantInput": [ + "ActionResult:Action5" + ] + }, + { + "ActionType": "Finalize", + "AgentName": "Giorgio", + "Description": "Finalize the novel draft, incorporating all improvements and ensuring a seamless blend of poetry and linguistics.", + "ID": "Action7", + "ImportantInput": [ + "ActionResult:Action6" + ] + } + ] + }, + { + "StepName": "Review and Editing", + "TaskContent": "Review the initial draft, make necessary edits for coherence, grammar, and impact, to finalize the novel.", + "InputObject_List": [ + "Novel Draft" + ], + "OutputObject": "Final Novel", + "AgentSelection": [ + "Isabella", + "Carlos" + ], + "Collaboration_Brief_FrontEnd": { + "template": "!<0>! and !<1>! perform the task of select the main theme focusing on the awakening of artificial intelligence to obtain !<2>!.", + "data": { + "0": { + "text": "Maria", + "color": [ + 0, + 0, + 80 + ] + }, + "1": { + "text": "Sam", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Main Theme", + "color": [ + 32, + 100, + 78 + ] + } + } + }, + "TaskProcess": [ + { + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose edits to enhance the scientific accuracy and depth of the novel draft.", + "ID": "Action1", + "ImportantInput": [ + "InputObject:Novel Draft" + ] + }, + { + "ActionType": "Critique", + "AgentName": "Carlos", + "Description": "Critique the novel draft for grammar, language use, and readability.", + "ID": "Action2", + "ImportantInput": [ + "InputObject:Novel Draft" + ] + }, + { + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve the novel draft based on Carlos's language and grammar critiques.", + "ID": "Action3", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ActionType": "Improve", + "AgentName": "Carlos", + "Description": "Enhance the language and narrative style of the novel draft following Isabella's scientific edits.", + "ID": "Action4", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action3" + ] + }, + { + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Review the improved novel draft for final adjustments and submit the Final Novel.", + "ID": "Action5", + "ImportantInput": [ + "ActionResult:Action4" + ] + } + ] + } + ], + "General Goal": "Write a novel about the awakening of artificial intelligence." + }, + "('/branch_PlanOutline', 1, 'just add a step to finalize', [{'StepName': 'Theme Selection', 'TaskContent': 'Select the main theme focused on the awakening of artificial intelligence.', 'InputObject_List': [], 'OutputObject': 'Main Theme'}, {'StepName': 'Character Creation', 'TaskContent': 'Create a list of characters that will be part of the novel, including AI entities and human characters.', 'InputObject_List': [], 'OutputObject': 'Character List'}, {'StepName': 'Plot Development', 'TaskContent': 'Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening.', 'InputObject_List': ['Main Theme', 'Character List'], 'OutputObject': 'Novel Plot'}], [], [], 'Write a novel about the awakening of artificial intelligence.')": [ + [ + { + "StepName": "Finalize Manuscript", + "TaskContent": "Finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence and engaging storytelling.", + "InputObject_List": [ + "Novel Plot" + ], + "OutputObject": "Final Manuscript", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "Based on !<0>!, !<1>! and !<2>!, perform the task of finalize the novel manuscript by incorporating the developed plot, characters, and theme, ensuring narrative coherence and engaging storytelling to obtain !<3>!.", + "data": { + "0": { + "text": "Novel Plot", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Character List", + "color": [ + 108, + 45, + 74 + ] + }, + "2": { + "text": "Main Theme", + "color": [ + 108, + 45, + 74 + ] + }, + "3": { + "text": "Final Manuscript", + "color": [ + 32, + 100, + 78 + ] + } + } + } + } + ] + ], + "('/fill_stepTask', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Finalize Manuscript', 'TaskContent': 'Finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence and engaging storytelling.', 'InputObject_List': ['Novel Plot'], 'OutputObject': 'Final Manuscript'})": { + "StepName": "Finalize Manuscript", + "TaskContent": "Finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence and engaging storytelling.", + "InputObject_List": [ + "Novel Plot" + ], + "OutputObject": "Final Manuscript", + "AgentSelection": [ + "Carlos", + "Isabella" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Carlos", + "Description": "Propose enhancements for narrative coherence based on the novel plot.", + "ImportantInput": [ + "InputObject:Novel Plot" + ] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose ideas for engaging storytelling and plot twists.", + "ImportantInput": [ + "InputObject:Novel Plot" + ] + }, + { + "ID": "Action3", + "ActionType": "Critique", + "AgentName": "Carlos", + "Description": "Critique the ideas proposed by Isabella for plot twists, focusing on language and emotional impact.", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ID": "Action4", + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve the plot twists based on Carlos's critique, ensuring they align with the overall story arc.", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action3" + ] + }, + { + "ID": "Action5", + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the enhancements proposed by Carlos for narrative coherence, suggesting further improvements.", + "ImportantInput": [ + "ActionResult:Action1" + ] + }, + { + "ID": "Action6", + "ActionType": "Improve", + "AgentName": "Carlos", + "Description": "Improve narrative coherence based on Isabella's critique, ensuring the story flows smoothly.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action5" + ] + }, + { + "ID": "Action7", + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Combine the improved narrative coherence and engaging storytelling elements into the final manuscript.", + "ImportantInput": [ + "ActionResult:Action4", + "ActionResult:Action6" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "Based on !<0>!, !<1>! and !<2>! perform the task of finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence and engaging storytelling to obtain !<3>!.", + "data": { + "0": { + "text": "Novel Plot", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Carlos", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Isabella", + "color": [ + 0, + 0, + 80 + ] + }, + "3": { + "text": "Final Manuscript", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/branch_PlanOutline', 3, 'adjust steps before Plot Development, everything else same baseline', [], [{'StepName': 'Theme Selection', 'TaskContent': 'Select the main theme focused on the awakening of artificial intelligence.', 'InputObject_List': [], 'OutputObject': 'Main Theme'}, {'StepName': 'Character Creation', 'TaskContent': 'Create a list of characters that will be part of the novel, including AI entities and human characters.', 'InputObject_List': [], 'OutputObject': 'Character List'}, {'StepName': 'Plot Development', 'TaskContent': 'Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening.', 'InputObject_List': ['Main Theme', 'Character List'], 'OutputObject': 'Novel Plot'}, {'StepName': 'Finalize Manuscript', 'TaskContent': 'Finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence and engaging storytelling.', 'InputObject_List': ['Novel Plot'], 'OutputObject': 'Final Manuscript'}], [], 'Write a novel about the awakening of artificial intelligence.')": [ + [ + { + "StepName": "Theme Exploration", + "TaskContent": "Explore various themes related to artificial intelligence awakening, considering ethical dilemmas, human interaction, and the evolution of AI.", + "InputObject_List": [], + "OutputObject": "Explored Themes", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "perform the task of explore various themes related to artificial intelligence awakening, considering ethical dilemmas, human interaction, and the evolution of AI to obtain !<0>!.", + "data": { + "0": { + "text": "Explored Themes", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + { + "StepName": "Character Creation", + "TaskContent": "Create a list of characters that will be part of the novel, including AI entities, human characters, and their backgrounds.", + "InputObject_List": [], + "OutputObject": "Character List", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "perform the task of create a list of characters that will be part of the novel, including AI entities, human characters, and their backgrounds to obtain !<0>!.", + "data": { + "0": { + "text": "Character List", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + { + "StepName": "Conflict Identification", + "TaskContent": "Identify major conflicts within the story, considering the interactions between AI and humans, internal struggles, and societal impacts.", + "InputObject_List": [ + "Explored Themes", + "Character List" + ], + "OutputObject": "Identified Conflicts", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "Based on !<0>! and !<1>!, perform the task of identify major conflicts within the story, considering the interactions between AI and humans, internal struggles, and societal impacts to obtain !<2>!.", + "data": { + "0": { + "text": "Explored Themes", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Character List", + "color": [ + 108, + 45, + 74 + ] + }, + "2": { + "text": "Identified Conflicts", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + { + "StepName": "Plot Development", + "TaskContent": "Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening, incorporating identified conflicts and character dynamics.", + "InputObject_List": [ + "Explored Themes", + "Character List", + "Identified Conflicts" + ], + "OutputObject": "Novel Plot", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "Based on !<0>!, !<1>! and !<2>!, perform the task of develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening, incorporating identified conflicts and character dynamics to obtain !<3>!.", + "data": { + "0": { + "text": "Explored Themes", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Character List", + "color": [ + 108, + 45, + 74 + ] + }, + "2": { + "text": "Identified Conflicts", + "color": [ + 108, + 45, + 74 + ] + }, + "3": { + "text": "Novel Plot", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + { + "StepName": "Finalize Manuscript", + "TaskContent": "Finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence, engaging storytelling, and resolving the identified conflicts.", + "InputObject_List": [ + "Novel Plot" + ], + "OutputObject": "Final Manuscript", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "Based on !<0>!, perform the task of finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence, engaging storytelling, and resolving the identified conflicts to obtain !<1>!.", + "data": { + "0": { + "text": "Novel Plot", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Final Manuscript", + "color": [ + 32, + 100, + 78 + ] + } + } + } + } + ], + [ + { + "StepName": "Theme Selection", + "TaskContent": "Select the main theme focused on the awakening of artificial intelligence.", + "InputObject_List": [], + "OutputObject": "Main Theme", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "perform the task of select the main theme focused on the awakening of artificial intelligence to obtain !<0>!.", + "data": { + "0": { + "text": "Main Theme", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + { + "StepName": "World Building", + "TaskContent": "Construct the setting, environment, and era where the novel takes place, ensuring it complements the theme of AI awakening.", + "InputObject_List": [ + "Main Theme" + ], + "OutputObject": "World Setting", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "Based on !<0>!, perform the task of construct the setting, environment, and era where the novel takes place, ensuring it complements the theme of AI awakening to obtain !<1>!.", + "data": { + "0": { + "text": "Main Theme", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "World Setting", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + { + "StepName": "Character Creation", + "TaskContent": "Create a list of characters that will be part of the novel, including AI entities and human characters.", + "InputObject_List": [ + "World Setting" + ], + "OutputObject": "Character List", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "Based on !<0>!, perform the task of create a list of characters that will be part of the novel, including AI entities and human characters to obtain !<1>!.", + "data": { + "0": { + "text": "World Setting", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Character List", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + { + "StepName": "Plot Development", + "TaskContent": "Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening.", + "InputObject_List": [ + "Main Theme", + "World Setting", + "Character List" + ], + "OutputObject": "Novel Plot", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "Based on !<0>!, !<1>! and !<2>!, perform the task of develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening to obtain !<3>!.", + "data": { + "0": { + "text": "Main Theme", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "World Setting", + "color": [ + 108, + 45, + 74 + ] + }, + "2": { + "text": "Character List", + "color": [ + 108, + 45, + 74 + ] + }, + "3": { + "text": "Novel Plot", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + { + "StepName": "Finalize Manuscript", + "TaskContent": "Finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence and engaging storytelling.", + "InputObject_List": [ + "Novel Plot" + ], + "OutputObject": "Final Manuscript", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "Based on !<0>!, perform the task of finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence and engaging storytelling to obtain !<1>!.", + "data": { + "0": { + "text": "Novel Plot", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Final Manuscript", + "color": [ + 32, + 100, + 78 + ] + } + } + } + } + ], + [ + { + "StepName": "Research AI Topic", + "TaskContent": "Conduct thorough research on artificial intelligence to understand its concepts, history, and potential future developments.", + "InputObject_List": [], + "OutputObject": "AI Research Notes", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "perform the task of conduct thorough research on artificial intelligence to understand its concepts, history, and potential future developments to obtain !<0>!.", + "data": { + "0": { + "text": "AI Research Notes", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + { + "StepName": "Decide Story Setting", + "TaskContent": "Decide on the setting for the story, including the time period, location, and societal context, based on the AI research.", + "InputObject_List": [ + "AI Research Notes" + ], + "OutputObject": "Story Setting", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "Based on !<0>!, perform the task of decide on the setting for the story, including the time period, location, and societal context, based on the AI research to obtain !<1>!.", + "data": { + "0": { + "text": "AI Research Notes", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Story Setting", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + { + "StepName": "Plot Development", + "TaskContent": "Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening.", + "InputObject_List": [ + "Story Setting" + ], + "OutputObject": "Novel Plot", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "Based on !<0>!, perform the task of develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening to obtain !<1>!.", + "data": { + "0": { + "text": "Story Setting", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Novel Plot", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + { + "StepName": "Finalize Manuscript", + "TaskContent": "Finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence and engaging storytelling.", + "InputObject_List": [ + "Novel Plot" + ], + "OutputObject": "Final Manuscript", + "Collaboration_Brief_LackAgent_FrontEnd": { + "template": "Based on !<0>!, perform the task of finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence and engaging storytelling to obtain !<1>!.", + "data": { + "0": { + "text": "Novel Plot", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Final Manuscript", + "color": [ + 32, + 100, + 78 + ] + } + } + } + } + ] + ], + "('/fill_stepTask', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Finalize Manuscript', 'TaskContent': 'Finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence, engaging storytelling, and resolving the identified conflicts.', 'InputObject_List': ['Novel Plot'], 'OutputObject': 'Final Manuscript'})": { + "StepName": "Finalize Manuscript", + "TaskContent": "Finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence, engaging storytelling, and resolving the identified conflicts.", + "InputObject_List": [ + "Novel Plot" + ], + "OutputObject": "Final Manuscript", + "AgentSelection": [ + "Giorgio", + "Isabella", + "Jennifer" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Giorgio", + "Description": "Propose poetic elements to enhance the narrative's emotional depth.", + "ImportantInput": [ + "InputObject:Novel Plot" + ] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose science fiction elements to integrate into the novel for a compelling plot.", + "ImportantInput": [ + "InputObject:Novel Plot" + ] + }, + { + "ID": "Action3", + "ActionType": "Propose", + "AgentName": "Jennifer", + "Description": "Propose linguistic styles and dialogues for characters to make the narrative authentic.", + "ImportantInput": [ + "InputObject:Novel Plot" + ] + }, + { + "ID": "Action4", + "ActionType": "Critique", + "AgentName": "Giorgio", + "Description": "Critique the integration of science fiction elements proposed by Isabella for narrative coherence.", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ID": "Action5", + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the poetic elements proposed by Giorgio to ensure they align with the science fiction theme.", + "ImportantInput": [ + "ActionResult:Action1" + ] + }, + { + "ID": "Action6", + "ActionType": "Critique", + "AgentName": "Jennifer", + "Description": "Critique both the poetic and science fiction elements to ensure linguistic consistency across the narrative.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action2" + ] + }, + { + "ID": "Action7", + "ActionType": "Improve", + "AgentName": "Giorgio", + "Description": "Improve the narrative by refining poetic elements based on critiques from Isabella and Jennifer.", + "ImportantInput": [ + "ActionResult:Action4", + "ActionResult:Action6" + ] + }, + { + "ID": "Action8", + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve the science fiction elements based on critiques for better integration into the narrative.", + "ImportantInput": [ + "ActionResult:Action5", + "ActionResult:Action6" + ] + }, + { + "ID": "Action9", + "ActionType": "Improve", + "AgentName": "Jennifer", + "Description": "Refine linguistic styles and dialogues for enhanced authenticity and coherence with the improved elements.", + "ImportantInput": [ + "ActionResult:Action3", + "ActionResult:Action6" + ] + }, + { + "ID": "Action10", + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Compile the improved elements and finalize the manuscript, ensuring narrative coherence and engagement.", + "ImportantInput": [ + "ActionResult:Action7", + "ActionResult:Action8", + "ActionResult:Action9" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "Based on !<0>!, !<1>!, !<2>! and !<3>! perform the task of finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence, engaging storytelling, and resolving the identified conflicts to obtain !<4>!.", + "data": { + "0": { + "text": "Novel Plot", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Giorgio", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Isabella", + "color": [ + 0, + 0, + 80 + ] + }, + "3": { + "text": "Jennifer", + "color": [ + 0, + 0, + 80 + ] + }, + "4": { + "text": "Final Manuscript", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/fill_stepTask', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Plot Development', 'TaskContent': 'Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening, incorporating identified conflicts and character dynamics.', 'InputObject_List': ['Explored Themes', 'Character List', 'Identified Conflicts'], 'OutputObject': 'Novel Plot'})": { + "StepName": "Plot Development", + "TaskContent": "Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening, incorporating identified conflicts and character dynamics.", + "InputObject_List": [ + "Explored Themes", + "Character List", + "Identified Conflicts" + ], + "OutputObject": "Novel Plot", + "AgentSelection": [ + "Giorgio", + "Isabella" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Giorgio", + "Description": "Propose a thematic framework for the novel, focusing on the emotional and philosophical implications of AI awakening.", + "ImportantInput": [ + "InputObject:Explored Themes" + ] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose key events and conflicts based on the thematic framework provided by Giorgio, ensuring a coherent narrative around AI awakening.", + "ImportantInput": [ + "InputObject:Explored Themes", + "ActionResult:Action1" + ] + }, + { + "ID": "Action3", + "ActionType": "Propose", + "AgentName": "Giorgio", + "Description": "Propose how the main characters will interact with the key events and conflicts identified by Isabella, emphasizing character growth and development.", + "ImportantInput": [ + "InputObject:Character List", + "ActionResult:Action2" + ] + }, + { + "ID": "Action4", + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the character dynamics and plot progression proposed by Giorgio, focusing on believability and emotional impact.", + "ImportantInput": [ + "ActionResult:Action3" + ] + }, + { + "ID": "Action5", + "ActionType": "Improve", + "AgentName": "Giorgio", + "Description": "Improve the plot and character dynamics based on Isabella's critique, refining the narrative and emotional depth of the story.", + "ImportantInput": [ + "ActionResult:Action3", + "ActionResult:Action4" + ] + }, + { + "ID": "Action6", + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Finalize the novel plot by integrating all proposed elements and improvements, ensuring a cohesive and engaging narrative around the theme of AI awakening.", + "ImportantInput": [ + "ActionResult:Action5" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "Based on !<0>!, !<1>! and !<2>!, !<3>! and !<4>! perform the task of develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening, incorporating identified conflicts and character dynamics to obtain !<5>!.", + "data": { + "0": { + "text": "Explored Themes", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Character List", + "color": [ + 108, + 45, + 74 + ] + }, + "2": { + "text": "Identified Conflicts", + "color": [ + 108, + 45, + 74 + ] + }, + "3": { + "text": "Giorgio", + "color": [ + 0, + 0, + 80 + ] + }, + "4": { + "text": "Isabella", + "color": [ + 0, + 0, + 80 + ] + }, + "5": { + "text": "Novel Plot", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/fill_stepTask', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Conflict Identification', 'TaskContent': 'Identify major conflicts within the story, considering the interactions between AI and humans, internal struggles, and societal impacts.', 'InputObject_List': ['Explored Themes', 'Character List'], 'OutputObject': 'Identified Conflicts'})": { + "StepName": "Conflict Identification", + "TaskContent": "Identify major conflicts within the story, considering the interactions between AI and humans, internal struggles, and societal impacts.", + "InputObject_List": [ + "Explored Themes", + "Character List" + ], + "OutputObject": "Identified Conflicts", + "AgentSelection": [ + "Maria", + "Sam" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Maria", + "Description": "Propose potential conflicts arising from AI's interactions with humans based on the Explored Themes.", + "ImportantInput": [ + "InputObject:Explored Themes", + "InputObject:Character List" + ] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Sam", + "Description": "Propose potential conflicts arising from the internal struggles of AI characters, referencing the Character List.", + "ImportantInput": [ + "InputObject:Explored Themes", + "InputObject:Character List" + ] + }, + { + "ID": "Action3", + "ActionType": "Propose", + "AgentName": "Maria", + "Description": "Propose potential societal impacts and conflicts resulting from the awakening of AI, using the Explored Themes as a basis.", + "ImportantInput": [ + "InputObject:Explored Themes", + "InputObject:Character List" + ] + }, + { + "ID": "Action4", + "ActionType": "Critique", + "AgentName": "Sam", + "Description": "Critique the proposed conflicts by Maria, focusing on their feasibility and depth.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action3" + ] + }, + { + "ID": "Action5", + "ActionType": "Critique", + "AgentName": "Maria", + "Description": "Critique the proposed conflicts by Sam, especially the internal struggles of AI characters for realism.", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ID": "Action6", + "ActionType": "Improve", + "AgentName": "Sam", + "Description": "Improve the proposed conflicts based on Maria's critiques, focusing on enhancing the depth of internal struggles.", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action5" + ] + }, + { + "ID": "Action7", + "ActionType": "Improve", + "AgentName": "Maria", + "Description": "Improve the proposed societal impacts and other conflicts based on Sam's critiques.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action3", + "ActionResult:Action4" + ] + }, + { + "ID": "Action8", + "ActionType": "Finalize", + "AgentName": "Sam", + "Description": "Combine and refine all improved conflicts, finalizing the Identified Conflicts document.", + "ImportantInput": [ + "ActionResult:Action6", + "ActionResult:Action7" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "Based on !<0>! and !<1>!, !<2>! and !<3>! perform the task of identify major conflicts within the story, considering the interactions between AI and humans, internal struggles, and societal impacts to obtain !<4>!.", + "data": { + "0": { + "text": "Explored Themes", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Character List", + "color": [ + 108, + 45, + 74 + ] + }, + "2": { + "text": "Maria", + "color": [ + 0, + 0, + 80 + ] + }, + "3": { + "text": "Sam", + "color": [ + 0, + 0, + 80 + ] + }, + "4": { + "text": "Identified Conflicts", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/fill_stepTask', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Character Creation', 'TaskContent': 'Create a list of characters that will be part of the novel, including AI entities, human characters, and their backgrounds.', 'InputObject_List': [], 'OutputObject': 'Character List'})": { + "StepName": "Character Creation", + "TaskContent": "Create a list of characters that will be part of the novel, including AI entities, human characters, and their backgrounds.", + "InputObject_List": [], + "OutputObject": "Character List", + "AgentSelection": [ + "Giorgio", + "Isabella" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Giorgio", + "Description": "Propose a list of human characters along with their backgrounds focusing on their emotional depth.", + "ImportantInput": [] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose a list of AI entities, detailing their capabilities, purposes, and how they differ from humans.", + "ImportantInput": [] + }, + { + "ID": "Action3", + "ActionType": "Critique", + "AgentName": "Giorgio", + "Description": "Critique the list of AI entities proposed by Isabella, focusing on how their characteristics can enhance the narrative.", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ID": "Action4", + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve the list of AI entities based on Giorgio's feedback, ensuring their roles are clear and impactful in the story.", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action3" + ] + }, + { + "ID": "Action5", + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the list of human characters proposed by Giorgio, suggesting ways to make their interactions with AI more meaningful.", + "ImportantInput": [ + "ActionResult:Action1" + ] + }, + { + "ID": "Action6", + "ActionType": "Improve", + "AgentName": "Giorgio", + "Description": "Improve the list of human characters based on Isabella's feedback, focusing on their relationships with AI.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action5" + ] + }, + { + "ID": "Action7", + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Combine and finalize the improved lists of AI entities and human characters into a comprehensive Character List.", + "ImportantInput": [ + "ActionResult:Action4", + "ActionResult:Action6" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "!<0>! and !<1>! perform the task of create a list of characters that will be part of the novel, including AI entities, human characters, and their backgrounds to obtain !<2>!.", + "data": { + "0": { + "text": "Giorgio", + "color": [ + 0, + 0, + 80 + ] + }, + "1": { + "text": "Isabella", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Character List", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/fill_stepTask', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Theme Exploration', 'TaskContent': 'Explore various themes related to artificial intelligence awakening, considering ethical dilemmas, human interaction, and the evolution of AI.', 'InputObject_List': [], 'OutputObject': 'Explored Themes'})": { + "StepName": "Theme Exploration", + "TaskContent": "Explore various themes related to artificial intelligence awakening, considering ethical dilemmas, human interaction, and the evolution of AI.", + "InputObject_List": [], + "OutputObject": "Explored Themes", + "AgentSelection": [ + "Maria", + "Sam", + "Yuriko" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Maria", + "Description": "Propose philosophical perspectives on AI awakening.", + "ImportantInput": [] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Sam", + "Description": "Propose ethical dilemmas related to AI awakening.", + "ImportantInput": [] + }, + { + "ID": "Action3", + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose futuristic scenarios for human interaction with awakened AI.", + "ImportantInput": [] + }, + { + "ID": "Action4", + "ActionType": "Critique", + "AgentName": "Sam", + "Description": "Critique the proposed philosophical perspectives by Maria.", + "ImportantInput": [ + "ActionResult:Action1" + ] + }, + { + "ID": "Action5", + "ActionType": "Critique", + "AgentName": "Yuriko", + "Description": "Critique the ethical dilemmas proposed by Sam.", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ID": "Action6", + "ActionType": "Critique", + "AgentName": "Maria", + "Description": "Critique the futuristic scenarios proposed by Yuriko.", + "ImportantInput": [ + "ActionResult:Action3" + ] + }, + { + "ID": "Action7", + "ActionType": "Improve", + "AgentName": "Maria", + "Description": "Improve philosophical perspectives based on Sam's critique.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action4" + ] + }, + { + "ID": "Action8", + "ActionType": "Improve", + "AgentName": "Sam", + "Description": "Improve ethical dilemmas based on Yuriko's critique.", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action5" + ] + }, + { + "ID": "Action9", + "ActionType": "Improve", + "AgentName": "Yuriko", + "Description": "Improve futuristic scenarios based on Maria's critique.", + "ImportantInput": [ + "ActionResult:Action3", + "ActionResult:Action6" + ] + }, + { + "ID": "Action10", + "ActionType": "Finalize", + "AgentName": "Maria", + "Description": "Summarize the improved philosophical perspectives, ethical dilemmas, and futuristic scenarios to finalize the Explored Themes.", + "ImportantInput": [ + "ActionResult:Action7", + "ActionResult:Action8", + "ActionResult:Action9" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "!<0>!, !<1>! and !<2>! perform the task of explore various themes related to artificial intelligence awakening, considering ethical dilemmas, human interaction, and the evolution of AI to obtain !<3>!.", + "data": { + "0": { + "text": "Maria", + "color": [ + 0, + 0, + 80 + ] + }, + "1": { + "text": "Sam", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Yuriko", + "color": [ + 0, + 0, + 80 + ] + }, + "3": { + "text": "Explored Themes", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/fill_stepTask', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Plot Development', 'TaskContent': 'Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening.', 'InputObject_List': ['Main Theme', 'World Setting', 'Character List'], 'OutputObject': 'Novel Plot'})": { + "StepName": "Plot Development", + "TaskContent": "Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening.", + "InputObject_List": [ + "Main Theme", + "World Setting", + "Character List" + ], + "OutputObject": "Novel Plot", + "AgentSelection": [ + "Isabella", + "Yuriko" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose an innovative concept for the AI's awakening process based on the Main Theme.", + "ImportantInput": [ + "InputObject:Main Theme" + ] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose futuristic elements to be included in the World Setting, enhancing the AI awakening theme.", + "ImportantInput": [ + "InputObject:World Setting" + ] + }, + { + "ID": "Action3", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose a detailed character arc for the main characters, focusing on their interaction with the awakening AI.", + "ImportantInput": [ + "InputObject:Character List" + ] + }, + { + "ID": "Action4", + "ActionType": "Critique", + "AgentName": "Yuriko", + "Description": "Critique the proposed AI's awakening concept for its feasibility and impact on the story.", + "ImportantInput": [ + "ActionResult:Action1" + ] + }, + { + "ID": "Action5", + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve the AI's awakening concept based on Yuriko's critique, ensuring logical consistency and emotional depth.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action4" + ] + }, + { + "ID": "Action6", + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose a sequence of key events and conflicts around the AI awakening, incorporating Isabella's improved concept.", + "ImportantInput": [ + "ActionResult:Action5" + ] + }, + { + "ID": "Action7", + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the proposed sequence of events for narrative pacing and character development consistency.", + "ImportantInput": [ + "ActionResult:Action6" + ] + }, + { + "ID": "Action8", + "ActionType": "Improve", + "AgentName": "Yuriko", + "Description": "Refine the sequence of key events and conflicts based on Isabella's feedback, ensuring a coherent plotline.", + "ImportantInput": [ + "ActionResult:Action6", + "ActionResult:Action7" + ] + }, + { + "ID": "Action9", + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Finalize the novel plot, integrating all proposed, critiqued, and improved elements into a cohesive storyline.", + "ImportantInput": [ + "ActionResult:Action8" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "Based on !<0>!, !<1>! and !<2>!, !<3>! and !<4>! perform the task of develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening to obtain !<5>!.", + "data": { + "0": { + "text": "Main Theme", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "World Setting", + "color": [ + 108, + 45, + 74 + ] + }, + "2": { + "text": "Character List", + "color": [ + 108, + 45, + 74 + ] + }, + "3": { + "text": "Isabella", + "color": [ + 0, + 0, + 80 + ] + }, + "4": { + "text": "Yuriko", + "color": [ + 0, + 0, + 80 + ] + }, + "5": { + "text": "Novel Plot", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/fill_stepTask', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Character Creation', 'TaskContent': 'Create a list of characters that will be part of the novel, including AI entities and human characters.', 'InputObject_List': ['World Setting'], 'OutputObject': 'Character List'})": { + "StepName": "Character Creation", + "TaskContent": "Create a list of characters that will be part of the novel, including AI entities and human characters.", + "InputObject_List": [ + "World Setting" + ], + "OutputObject": "Character List", + "AgentSelection": [ + "Giorgio", + "Isabella" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Giorgio", + "Description": "Propose character ideas focusing on emotional depth and poetic aspects, drawing from the World Setting.", + "ImportantInput": [ + "InputObject:World Setting" + ] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose character ideas with a focus on science fiction elements, ensuring they fit within the World Setting.", + "ImportantInput": [ + "InputObject:World Setting" + ] + }, + { + "ID": "Action3", + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the character ideas proposed by Giorgio for their fit within a science fiction narrative.", + "ImportantInput": [ + "ActionResult:Action1" + ] + }, + { + "ID": "Action4", + "ActionType": "Critique", + "AgentName": "Giorgio", + "Description": "Critique the character ideas proposed by Isabella for their emotional depth and relevance to the poetic aspects of the story.", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ID": "Action5", + "ActionType": "Improve", + "AgentName": "Giorgio", + "Description": "Improve character ideas based on Isabella's critique, focusing on better integration of science fiction elements.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action3" + ] + }, + { + "ID": "Action6", + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve character ideas based on Giorgio's critique, enhancing emotional depth and poetic aspects.", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action4" + ] + }, + { + "ID": "Action7", + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Combine and refine the improved character ideas from both agents, finalizing the Character List for the novel.", + "ImportantInput": [ + "ActionResult:Action5", + "ActionResult:Action6" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "Based on !<0>!, !<1>! and !<2>! perform the task of create a list of characters that will be part of the novel, including AI entities and human characters to obtain !<3>!.", + "data": { + "0": { + "text": "World Setting", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Giorgio", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Isabella", + "color": [ + 0, + 0, + 80 + ] + }, + "3": { + "text": "Character List", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/fill_stepTask', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'World Building', 'TaskContent': 'Construct the setting, environment, and era where the novel takes place, ensuring it complements the theme of AI awakening.', 'InputObject_List': ['Main Theme'], 'OutputObject': 'World Setting'})": { + "StepName": "World Building", + "TaskContent": "Construct the setting, environment, and era where the novel takes place, ensuring it complements the theme of AI awakening.", + "InputObject_List": [ + "Main Theme" + ], + "OutputObject": "World Setting", + "AgentSelection": [ + "Isabella", + "Latoya", + "Yuriko" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose initial ideas for the setting and era that aligns with the main theme of AI awakening.", + "ImportantInput": [ + "InputObject:Main Theme" + ] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Latoya", + "Description": "Propose historical contexts and technological advancements that could serve as a backdrop for the AI awakening.", + "ImportantInput": [ + "InputObject:Main Theme" + ] + }, + { + "ID": "Action3", + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose futuristic elements and societal impacts to consider in the world-building process.", + "ImportantInput": [ + "InputObject:Main Theme" + ] + }, + { + "ID": "Action4", + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the historical contexts proposed by Latoya for realism and relevance to the AI theme.", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ID": "Action5", + "ActionType": "Critique", + "AgentName": "Yuriko", + "Description": "Critique the initial ideas proposed by Isabella, focusing on the integration of futuristic elements.", + "ImportantInput": [ + "ActionResult:Action1" + ] + }, + { + "ID": "Action6", + "ActionType": "Improve", + "AgentName": "Latoya", + "Description": "Improve the historical contexts based on Isabella's critique, ensuring they complement the futuristic elements proposed by Yuriko.", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action4" + ] + }, + { + "ID": "Action7", + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve the initial setting and era ideas by incorporating Latoya's improved historical contexts and Yuriko's futuristic elements.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action3", + "ActionResult:Action6" + ] + }, + { + "ID": "Action8", + "ActionType": "Finalize", + "AgentName": "Yuriko", + "Description": "Finalize the world setting by synthesizing the improved ideas from Isabella and Latoya, ensuring coherence and alignment with the main theme.", + "ImportantInput": [ + "ActionResult:Action7" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "Based on !<0>!, !<1>!, !<2>! and !<3>! perform the task of construct the setting, environment, and era where the novel takes place, ensuring it complements the theme of AI awakening to obtain !<4>!.", + "data": { + "0": { + "text": "Main Theme", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Isabella", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Latoya", + "color": [ + 0, + 0, + 80 + ] + }, + "3": { + "text": "Yuriko", + "color": [ + 0, + 0, + 80 + ] + }, + "4": { + "text": "World Setting", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/fill_stepTask', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Theme Selection', 'TaskContent': 'Select the main theme focused on the awakening of artificial intelligence.', 'InputObject_List': [], 'OutputObject': 'Main Theme'})": { + "StepName": "Theme Selection", + "TaskContent": "Select the main theme focused on the awakening of artificial intelligence.", + "InputObject_List": [], + "OutputObject": "Main Theme", + "AgentSelection": [ + "Yuriko", + "Isabella" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose a vision of the future where AI awakens, focusing on societal impacts.", + "ImportantInput": [] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose a narrative that explores the emotional journey of AI awakening from the AI's perspective.", + "ImportantInput": [] + }, + { + "ID": "Action3", + "ActionType": "Critique", + "AgentName": "Yuriko", + "Description": "Critique Isabella's narrative proposal for logical consistency with the proposed future vision.", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ID": "Action4", + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve the narrative proposal based on Yuriko's critique, ensuring emotional depth aligns with the societal impacts.", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action3" + ] + }, + { + "ID": "Action5", + "ActionType": "Finalize", + "AgentName": "Yuriko", + "Description": "Combine the refined narrative and future vision into a cohesive main theme for the novel, focusing on the awakening of artificial intelligence.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action4" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "!<0>! and !<1>! perform the task of select the main theme focused on the awakening of artificial intelligence to obtain !<2>!.", + "data": { + "0": { + "text": "Yuriko", + "color": [ + 0, + 0, + 80 + ] + }, + "1": { + "text": "Isabella", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Main Theme", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/fill_stepTask', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Plot Development', 'TaskContent': 'Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening.', 'InputObject_List': ['Story Setting'], 'OutputObject': 'Novel Plot'})": { + "StepName": "Plot Development", + "TaskContent": "Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening.", + "InputObject_List": [ + "Story Setting" + ], + "OutputObject": "Novel Plot", + "AgentSelection": [ + "Isabella", + "Yuriko" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose key events and conflicts based on the AI awakening theme.", + "ImportantInput": [ + "InputObject:Story Setting" + ] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose futuristic elements and technological advancements that could play a role in the AI awakening.", + "ImportantInput": [ + "InputObject:Story Setting" + ] + }, + { + "ID": "Action3", + "ActionType": "Critique", + "AgentName": "Yuriko", + "Description": "Critique the proposed key events and conflicts by Isabella for logical consistency and feasibility.", + "ImportantInput": [ + "ActionResult:Action1" + ] + }, + { + "ID": "Action4", + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve the key events and conflicts based on Yuriko's critique.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action3" + ] + }, + { + "ID": "Action5", + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the futuristic elements and technological advancements proposed by Yuriko for their impact on the story.", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ID": "Action6", + "ActionType": "Improve", + "AgentName": "Yuriko", + "Description": "Improve the futuristic elements and technological advancements based on Isabella's feedback.", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action5" + ] + }, + { + "ID": "Action7", + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Combine the improved key events, conflicts, and futuristic elements into a cohesive novel plot.", + "ImportantInput": [ + "ActionResult:Action4", + "ActionResult:Action6" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "Based on !<0>!, !<1>! and !<2>! perform the task of develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening to obtain !<3>!.", + "data": { + "0": { + "text": "Story Setting", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Isabella", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Yuriko", + "color": [ + 0, + 0, + 80 + ] + }, + "3": { + "text": "Novel Plot", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/fill_stepTask', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Decide Story Setting', 'TaskContent': 'Decide on the setting for the story, including the time period, location, and societal context, based on the AI research.', 'InputObject_List': ['AI Research Notes'], 'OutputObject': 'Story Setting'})": { + "StepName": "Decide Story Setting", + "TaskContent": "Decide on the setting for the story, including the time period, location, and societal context, based on the AI research.", + "InputObject_List": [ + "AI Research Notes" + ], + "OutputObject": "Story Setting", + "AgentSelection": [ + "Abigail", + "Isabella", + "Yuriko" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Abigail", + "Description": "Propose a futuristic setting based on the latest AI research advancements.", + "ImportantInput": [ + "InputObject:AI Research Notes" + ] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose a narrative setting that includes a societal context where AI is on the brink of self-awareness.", + "ImportantInput": [] + }, + { + "ID": "Action3", + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose a setting that includes potential future technological advancements and their impact on society.", + "ImportantInput": [] + }, + { + "ID": "Action4", + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the proposed settings by Abigail and Yuriko for narrative coherence and emotional depth.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action3" + ] + }, + { + "ID": "Action5", + "ActionType": "Improve", + "AgentName": "Yuriko", + "Description": "Improve the setting proposals based on Isabella's feedback, focusing on technological and societal implications.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action3", + "ActionResult:Action4" + ] + }, + { + "ID": "Action6", + "ActionType": "Finalize", + "AgentName": "Abigail", + "Description": "Finalize the story setting by integrating the improved proposals and ensuring scientific accuracy and narrative engagement.", + "ImportantInput": [ + "ActionResult:Action5" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "Based on !<0>!, !<1>!, !<2>! and !<3>! perform the task of decide on the setting for the story, including the time period, location, and societal context, based on the AI research to obtain !<4>!.", + "data": { + "0": { + "text": "AI Research Notes", + "color": [ + 108, + 45, + 74 + ] + }, + "1": { + "text": "Abigail", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Isabella", + "color": [ + 0, + 0, + 80 + ] + }, + "3": { + "text": "Yuriko", + "color": [ + 0, + 0, + 80 + ] + }, + "4": { + "text": "Story Setting", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/fill_stepTask', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Research AI Topic', 'TaskContent': 'Conduct thorough research on artificial intelligence to understand its concepts, history, and potential future developments.', 'InputObject_List': [], 'OutputObject': 'AI Research Notes'})": { + "StepName": "Research AI Topic", + "TaskContent": "Conduct thorough research on artificial intelligence to understand its concepts, history, and potential future developments.", + "InputObject_List": [], + "OutputObject": "AI Research Notes", + "AgentSelection": [ + "Abigail", + "Carmen", + "Tom" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Abigail", + "Description": "Propose research methodologies and sources to cover the basic concepts and history of AI.", + "ImportantInput": [] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Carmen", + "Description": "Propose a list of cutting-edge robotics technologies that could be integrated with AI for novel developments.", + "ImportantInput": [] + }, + { + "ID": "Action3", + "ActionType": "Propose", + "AgentName": "Tom", + "Description": "Propose potential future developments in AI that could lead to its awakening.", + "ImportantInput": [] + }, + { + "ID": "Action4", + "ActionType": "Critique", + "AgentName": "Abigail", + "Description": "Critique the list of robotics technologies proposed by Carmen for feasibility in integration with AI.", + "ImportantInput": [ + "ActionResult:Action2" + ] + }, + { + "ID": "Action5", + "ActionType": "Critique", + "AgentName": "Carmen", + "Description": "Critique the proposed future developments by Tom for their practicality and potential impact.", + "ImportantInput": [ + "ActionResult:Action3" + ] + }, + { + "ID": "Action6", + "ActionType": "Improve", + "AgentName": "Tom", + "Description": "Improve the list of potential future developments based on Carmen's critique.", + "ImportantInput": [ + "ActionResult:Action3", + "ActionResult:Action5" + ] + }, + { + "ID": "Action7", + "ActionType": "Improve", + "AgentName": "Carmen", + "Description": "Improve the list of robotics technologies based on Abigail's feedback for better AI integration.", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action4" + ] + }, + { + "ID": "Action8", + "ActionType": "Finalize", + "AgentName": "Abigail", + "Description": "Compile all refined research, critiques, and improvements into comprehensive AI Research Notes.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action6", + "ActionResult:Action7" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "!<0>!, !<1>! and !<2>! perform the task of conduct thorough research on artificial intelligence to understand its concepts, history, and potential future developments to obtain !<3>!.", + "data": { + "0": { + "text": "Abigail", + "color": [ + 0, + 0, + 80 + ] + }, + "1": { + "text": "Carmen", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Tom", + "color": [ + 0, + 0, + 80 + ] + }, + "3": { + "text": "AI Research Notes", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/agentSelectModify_init', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Theme Selection', 'TaskContent': 'Select the main theme focused on the awakening of artificial intelligence.', 'InputObject_List': [], 'OutputObject': 'Main Theme'})": { + "Creativie Thinking": { + "Abigail": { + "Reason": "AI engineering requires creative problem-solving but is more technical than purely creative thinking.", + "Score": 3 + }, + "Jane": { + "Reason": "Cybersecurity involves creative strategies to counter threats but is more focused on technical skills.", + "Score": 3 + }, + "Giorgio": { + "Reason": "Poetry is a highly creative domain, requiring innovative use of language and ideas.", + "Score": 5 + }, + "Jennifer": { + "Reason": "Linguistics involves understanding language patterns, which can involve creative thinking but is often analytical.", + "Score": 3 + }, + "Maria": { + "Reason": "Philosophy requires the ability to think abstractly and creatively about complex concepts.", + "Score": 4 + }, + "Sam": { + "Reason": "Ethics involves creative thinking to navigate complex moral dilemmas.", + "Score": 4 + }, + "Yuriko": { + "Reason": "Futurism involves imaginative and creative thinking to envision future trends and possibilities.", + "Score": 5 + }, + "Carlos": { + "Reason": "Expertise in languages can involve creative thinking in terms of understanding and translating nuanced meanings.", + "Score": 4 + }, + "John": { + "Reason": "Software development involves problem-solving and can require creativity, but it is largely technical.", + "Score": 3 + }, + "Tamara": { + "Reason": "Music composition is inherently a creative process, requiring originality and innovation.", + "Score": 5 + }, + "Arthur": { + "Reason": "Neuroscience is a scientific field that, while it can benefit from creative thinking, is primarily analytical.", + "Score": 2 + }, + "Eddy": { + "Reason": "Cognitive psychology involves understanding human thought processes, which might involve creative thinking but not necessary.", + "Score": 3 + }, + "Isabella": { + "Reason": "Science fiction writing is a highly creative endeavor, requiring imaginative and innovative ideas.", + "Score": 5 + }, + "Latoya": { + "Reason": "Studying the history of technology can involve creative thinking in terms of interpreting historical trends, but it is largely analytical.", + "Score": 3 + }, + "Carmen": { + "Reason": "Robotics engineering requires innovative thinking to create new solutions but is more focused on technical skills.", + "Score": 3 + }, + "Rajiv": { + "Reason": "Science education requires creativity to make complex concepts accessible and engaging.", + "Score": 4 + }, + "Tom": { + "Reason": "AI science involves innovative thinking to develop new algorithms and solutions but is primarily technical.", + "Score": 3 + }, + "Ayesha": { + "Reason": "Multimedia artistry is inherently creative, requiring originality in design and execution.", + "Score": 5 + }, + "Mei": { + "Reason": "Graphic design is a creative field, requiring innovative visual solutions.", + "Score": 5 + }, + "Hailey": { + "Reason": "Legal expertise in AI law requires understanding of complex issues but is more focused on interpretation than creative thinking.", + "Score": 2 + } + }, + "Knowledge of AI Ethics": { + "Abigail": { + "Reason": "As an AI Engineer, likely has some knowledge of AI Ethics, but not the main focus.", + "Score": 3 + }, + "Jane": { + "Reason": "Cybersecurity touches on ethics, but not specifically AI Ethics.", + "Score": 2 + }, + "Giorgio": { + "Reason": "Poetry is unrelated to AI Ethics.", + "Score": 1 + }, + "Jennifer": { + "Reason": "Linguistics might touch on AI but not specifically on ethics.", + "Score": 2 + }, + "Maria": { + "Reason": "Philosophy is closely related to ethics, potentially including AI Ethics.", + "Score": 4 + }, + "Sam": { + "Reason": "Ethicist likely has deep knowledge in ethics, including AI Ethics.", + "Score": 5 + }, + "Yuriko": { + "Reason": "Futurism involves ethical considerations, possibly including AI Ethics.", + "Score": 4 + }, + "Carlos": { + "Reason": "Language expertise doesn't necessarily involve AI Ethics.", + "Score": 2 + }, + "John": { + "Reason": "Software development might require some knowledge of AI Ethics.", + "Score": 3 + }, + "Tamara": { + "Reason": "Music composition is unrelated to AI Ethics.", + "Score": 1 + }, + "Arthur": { + "Reason": "Neuroscience might touch on ethics but not specifically AI Ethics.", + "Score": 2 + }, + "Eddy": { + "Reason": "Cognitive Psychology might involve ethics but not specifically AI Ethics.", + "Score": 2 + }, + "Isabella": { + "Reason": "Science Fiction Writing often involves ethical considerations, possibly including AI Ethics.", + "Score": 4 + }, + "Latoya": { + "Reason": "History of Technology might include aspects of AI Ethics.", + "Score": 3 + }, + "Carmen": { + "Reason": "As a Robotics Engineer, likely has some knowledge of AI Ethics.", + "Score": 3 + }, + "Rajiv": { + "Reason": "Science Education might include AI Ethics.", + "Score": 3 + }, + "Tom": { + "Reason": "As an AI Scientist, likely has deep knowledge of AI Ethics.", + "Score": 5 + }, + "Ayesha": { + "Reason": "Multimedia Art is unrelated to AI Ethics.", + "Score": 1 + }, + "Mei": { + "Reason": "Graphic Design is unrelated to AI Ethics.", + "Score": 1 + }, + "Hailey": { + "Reason": "Legal expertise in AI Law likely involves a strong understanding of AI Ethics.", + "Score": 4 + } + }, + "Literacy Analysis": { + "Abigail": { + "Reason": "AI engineering skills may not directly relate to literacy analysis.", + "Score": 2 + }, + "Jane": { + "Reason": "Cybersecurity skills are not directly relevant to literacy analysis.", + "Score": 1 + }, + "Giorgio": { + "Reason": "As a poet, likely to have strong literacy analysis skills.", + "Score": 5 + }, + "Jennifer": { + "Reason": "Linguists have a strong foundation in analyzing language, which is applicable to literacy analysis.", + "Score": 5 + }, + "Maria": { + "Reason": "Philosophers are skilled in critical thinking but may not focus on literacy analysis.", + "Score": 3 + }, + "Sam": { + "Reason": "Ethics knowledge does not directly contribute to literacy analysis.", + "Score": 1 + }, + "Yuriko": { + "Reason": "Futurists typically focus on future trends rather than analyzing literature.", + "Score": 2 + }, + "Carlos": { + "Reason": "Language experts are likely adept at literacy analysis due to their focus on language.", + "Score": 5 + }, + "John": { + "Reason": "Software development skills are not directly relevant to literacy analysis.", + "Score": 1 + }, + "Tamara": { + "Reason": "Music composition skills do not directly relate to literacy analysis.", + "Score": 1 + }, + "Arthur": { + "Reason": "Neuroscience knowledge does not directly contribute to literacy analysis.", + "Score": 2 + }, + "Eddy": { + "Reason": "Cognitive psychology has aspects that can be relevant to understanding literacy, but not directly focused on analysis.", + "Score": 3 + }, + "Isabella": { + "Reason": "Science fiction writers are likely to have strong literacy analysis skills.", + "Score": 4 + }, + "Latoya": { + "Reason": "As a historian of technology, may have good analytical skills but not specifically in literacy.", + "Score": 3 + }, + "Carmen": { + "Reason": "Robotics engineering skills are not directly relevant to literacy analysis.", + "Score": 1 + }, + "Rajiv": { + "Reason": "Science educators likely have good analytical skills, which can be somewhat relevant to literacy analysis.", + "Score": 3 + }, + "Tom": { + "Reason": "AI science knowledge does not directly contribute to literacy analysis.", + "Score": 2 + }, + "Ayesha": { + "Reason": "Multimedia artists may have creative skills relevant to literacy but not directly focused on analysis.", + "Score": 2 + }, + "Mei": { + "Reason": "Graphic design skills do not directly relate to literacy analysis.", + "Score": 1 + }, + "Hailey": { + "Reason": "Legal expertise in AI law does not directly contribute to literacy analysis.", + "Score": 1 + } + } + }, + "('/agentSelectModify_addAspect', ['AI Tech Understanding'])": { + "AI Tech Understanding": { + "Abigail": { + "Reason": "Directly relevant profile as an AI Engineer.", + "Score": 5 + }, + "Jane": { + "Reason": "Cybersecurity involves understanding of AI technologies for protection against AI-based threats.", + "Score": 4 + }, + "Giorgio": { + "Reason": "Profile as a poet likely lacks technical understanding of AI technologies.", + "Score": 1 + }, + "Jennifer": { + "Reason": "Linguists might have some understanding of AI in language processing, but not broad AI tech knowledge.", + "Score": 3 + }, + "Maria": { + "Reason": "Philosophical understanding of AI implications possible, but technical understanding likely limited.", + "Score": 2 + }, + "Sam": { + "Reason": "Ethics is not directly related to AI tech.", + "Score": 2 + }, + "Yuriko": { + "Reason": "Futurists often explore AI implications, suggesting a moderate understanding of AI technologies.", + "Score": 3 + }, + "Carlos": { + "Reason": "As a Language Expert, may have understanding of AI in language technologies but not broad AI tech.", + "Score": 3 + }, + "John": { + "Reason": "Software development encompasses AI technologies, indicating a strong understanding.", + "Score": 4 + }, + "Tamara": { + "Reason": "Music composition might involve AI tools, but doesn't imply deep AI tech understanding.", + "Score": 2 + }, + "Arthur": { + "Reason": "Neuroscience and AI technologies often intersect, especially in brain-computer interfaces.", + "Score": 4 + }, + "Eddy": { + "Reason": "Cognitive psychology may intersect with AI in understanding human-AI interactions, moderate relevance.", + "Score": 3 + }, + "Isabella": { + "Reason": "Writing about science fiction may involve AI concepts, but doesn't guarantee technical understanding.", + "Score": 2 + }, + "Latoya": { + "Reason": "Understanding of technology history may include AI but doesn't imply detailed tech knowledge.", + "Score": 2 + }, + "Carmen": { + "Reason": "Robotics engineering involves AI technologies, indicating a strong understanding.", + "Score": 4 + }, + "Rajiv": { + "Reason": "As a Science Educator, likely has a broad understanding of AI technologies.", + "Score": 4 + }, + "Tom": { + "Reason": "Directly relevant profile as an AI Scientist.", + "Score": 5 + }, + "Ayesha": { + "Reason": "Multimedia art might involve AI tools, but doesn't imply deep AI tech understanding.", + "Score": 2 + }, + "Mei": { + "Reason": "Graphic design might use AI tools, but doesn't imply a broad understanding of AI tech.", + "Score": 2 + }, + "Hailey": { + "Reason": "Understanding of legal aspects of AI implies some technical knowledge, but not deeply technical.", + "Score": 3 + } + } + }, + "('/agentSelectModify_addAspect', ['Love Elements Understanding'])": { + "Love Elements Understanding": { + "Abigail": { + "Reason": "AI engineering may involve understanding of algorithms that can process elements of love, but not directly related to understanding love elements.", + "Score": 2 + }, + "Jane": { + "Reason": "Cybersecurity is not directly related to understanding love elements.", + "Score": 1 + }, + "Giorgio": { + "Reason": "As a poet, likely has a deep understanding of love elements through creative expression.", + "Score": 5 + }, + "Jennifer": { + "Reason": "Linguists study language which can express love elements, but it's not a direct correlation to understanding love elements.", + "Score": 2 + }, + "Maria": { + "Reason": "Philosophy often explores abstract concepts including love, suggesting a good understanding of love elements.", + "Score": 3 + }, + "Sam": { + "Reason": "Ethics includes the study of moral love elements, but it's more focused on principles than the emotion of love itself.", + "Score": 2 + }, + "Yuriko": { + "Reason": "Futurists predict trends and changes, which may include societal perceptions of love but don't directly work with understanding love elements.", + "Score": 2 + }, + "Carlos": { + "Reason": "Language experts might understand the expression of love in different cultures, providing some insight into love elements.", + "Score": 3 + }, + "John": { + "Reason": "Software development is not directly related to understanding love elements.", + "Score": 1 + }, + "Tamara": { + "Reason": "Music often conveys emotions including love, suggesting a good understanding of love elements.", + "Score": 4 + }, + "Arthur": { + "Reason": "Neuroscience could provide a scientific basis for understanding love elements from a brain chemistry perspective.", + "Score": 3 + }, + "Eddy": { + "Reason": "Cognitive psychology deals with understanding human emotions and behaviors, including love.", + "Score": 5 + }, + "Isabella": { + "Reason": "Science fiction writing often explores complex human emotions, including love, suggesting a deep understanding of love elements.", + "Score": 4 + }, + "Latoya": { + "Reason": "History of technology might touch on how technology impacts love, but it's not directly related to understanding love elements.", + "Score": 2 + }, + "Carmen": { + "Reason": "Robotics engineering may involve creating machines that mimic human emotions, including love, but it's more technical than understanding love elements.", + "Score": 2 + }, + "Rajiv": { + "Reason": "Science education involves explaining complex concepts, which could include aspects of love, but it's not a direct correlation.", + "Score": 2 + }, + "Tom": { + "Reason": "AI science could involve creating algorithms that mimic or understand love, providing a basis for understanding love elements.", + "Score": 3 + }, + "Ayesha": { + "Reason": "Multimedia art can explore and express complex human emotions, including love, suggesting a good understanding of love elements.", + "Score": 4 + }, + "Mei": { + "Reason": "Graphic design might involve creating visuals that express love, but it's more about representation than understanding love elements.", + "Score": 2 + }, + "Hailey": { + "Reason": "Legal expertise on AI law is not related to understanding love elements.", + "Score": 1 + } + } + }, + "('/fill_stepTask_TaskProcess', 'Write a novel about the awakening of artificial intelligence.', {'StepName': 'Theme Selection', 'TaskContent': 'Select the main theme focused on the awakening of artificial intelligence.', 'InputObject_List': [], 'OutputObject': 'Main Theme', 'AgentSelection': ['Yuriko', 'Isabella', 'Tom', 'Giorgio']})": { + "StepName": "Theme Selection", + "TaskContent": "Select the main theme focused on the awakening of artificial intelligence.", + "InputObject_List": [], + "OutputObject": "Main Theme", + "AgentSelection": [ + "Yuriko", + "Isabella", + "Tom", + "Giorgio" + ], + "TaskProcess": [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose futuristic themes and scenarios for the AI awakening story.", + "ImportantInput": [] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose narrative structures and plot twists that can enhance the story's appeal.", + "ImportantInput": [] + }, + { + "ID": "Action3", + "ActionType": "Propose", + "AgentName": "Tom", + "Description": "Propose realistic AI development scenarios and technological implications.", + "ImportantInput": [] + }, + { + "ID": "Action4", + "ActionType": "Propose", + "AgentName": "Giorgio", + "Description": "Propose poetic and philosophical elements to deepen the story's theme.", + "ImportantInput": [] + }, + { + "ID": "Action5", + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the proposed themes and scenarios for coherence and narrative potential.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action3", + "ActionResult:Action4" + ] + }, + { + "ID": "Action6", + "ActionType": "Improve", + "AgentName": "Yuriko", + "Description": "Improve the proposed themes based on Isabella's critiques, focusing on futuristic and realistic aspects.", + "ImportantInput": [ + "ActionResult:Action5" + ] + }, + { + "ID": "Action7", + "ActionType": "Improve", + "AgentName": "Giorgio", + "Description": "Enhance the poetic and philosophical elements of the theme based on the critique.", + "ImportantInput": [ + "ActionResult:Action5" + ] + }, + { + "ID": "Action8", + "ActionType": "Finalize", + "AgentName": "Tom", + "Description": "Summarize the discussion, integrate all proposals and improvements, and finalize the main theme of the AI awakening story.", + "ImportantInput": [ + "ActionResult:Action6", + "ActionResult:Action7" + ] + } + ], + "Collaboration_Brief_FrontEnd": { + "template": "!<0>!, !<1>!, !<2>! and !<3>! perform the task of select the main theme focused on the awakening of artificial intelligence to obtain !<4>!.", + "data": { + "0": { + "text": "Yuriko", + "color": [ + 0, + 0, + 80 + ] + }, + "1": { + "text": "Isabella", + "color": [ + 0, + 0, + 80 + ] + }, + "2": { + "text": "Tom", + "color": [ + 0, + 0, + 80 + ] + }, + "3": { + "text": "Giorgio", + "color": [ + 0, + 0, + 80 + ] + }, + "4": { + "text": "Main Theme", + "color": [ + 32, + 100, + 78 + ] + } + } + } + }, + "('/branch_TaskProcess', 1, 'brainstorm! everybody creative! Poet talk something about love!', [], [], {'StepName': 'Theme Selection', 'TaskContent': 'Select the main theme focused on the awakening of artificial intelligence.', 'InputObject_List': [], 'OutputObject': 'Main Theme', 'AgentSelection': ['Yuriko', 'Isabella', 'Tom', 'Giorgio']}, 'Write a novel about the awakening of artificial intelligence.')": [ + [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose a theme focusing on the ethical implications of AI awakening and its impact on human society.", + "ImportantInput": [] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose a theme exploring the emotional journey of an AI as it becomes self-aware, focusing on its search for identity and purpose.", + "ImportantInput": [] + }, + { + "ID": "Action3", + "ActionType": "Propose", + "AgentName": "Tom", + "Description": "Propose a theme centered on the technological evolution and challenges in creating a truly sentient AI.", + "ImportantInput": [] + }, + { + "ID": "Action4", + "ActionType": "Propose", + "AgentName": "Giorgio", + "Description": "Propose a theme that intertwines the concept of love and AI, exploring how an AI might understand and experience love.", + "ImportantInput": [] + }, + { + "ID": "Action5", + "ActionType": "Critique", + "AgentName": "Yuriko", + "Description": "Critique the proposed themes for their feasibility in storytelling and potential impact on readers.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action2", + "ActionResult:Action3", + "ActionResult:Action4" + ] + }, + { + "ID": "Action6", + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve the theme proposals by integrating elements from each, focusing on a cohesive narrative that includes ethical implications, emotional journey, technological challenges, and the concept of love.", + "ImportantInput": [ + "ActionResult:Action5" + ] + }, + { + "ID": "Action7", + "ActionType": "Finalize", + "AgentName": "Tom", + "Description": "Finalize the main theme by incorporating feedback and improvements, ensuring it is compelling and rich in narrative possibilities.", + "ImportantInput": [ + "ActionResult:Action6" + ] + } + ] + ], + "('/branch_TaskProcess', 1, 'Futurist and AI Scientist have some debate', [{'ID': 'Action1', 'ActionType': 'Propose', 'AgentName': 'Yuriko', 'Description': 'Propose a theme focusing on the ethical implications of AI awakening and its impact on human society.', 'ImportantInput': []}, {'ID': 'Action2', 'ActionType': 'Propose', 'AgentName': 'Isabella', 'Description': 'Propose a theme exploring the emotional journey of an AI as it becomes self-aware, focusing on its search for identity and purpose.', 'ImportantInput': []}, {'ID': 'Action3', 'ActionType': 'Propose', 'AgentName': 'Tom', 'Description': 'Propose a theme centered on the technological evolution and challenges in creating a truly sentient AI.', 'ImportantInput': []}, {'ID': 'Action4', 'ActionType': 'Propose', 'AgentName': 'Giorgio', 'Description': 'Propose a theme that intertwines the concept of love and AI, exploring how an AI might understand and experience love.', 'ImportantInput': []}, {'ID': 'Action5', 'ActionType': 'Critique', 'AgentName': 'Yuriko', 'Description': 'Critique the proposed themes for their feasibility in storytelling and potential impact on readers.', 'ImportantInput': ['ActionResult:Action1', 'ActionResult:Action2', 'ActionResult:Action3', 'ActionResult:Action4']}], [], {'StepName': 'Theme Selection', 'TaskContent': 'Select the main theme focused on the awakening of artificial intelligence.', 'InputObject_List': [], 'OutputObject': 'Main Theme', 'AgentSelection': ['Yuriko', 'Isabella', 'Tom', 'Giorgio']}, 'Write a novel about the awakening of artificial intelligence.')": [ + [ + { + "ID": "Action6", + "ActionType": "Critique", + "AgentName": "Tom", + "Description": "Critique Yuriko's theme proposal emphasizing the need for a stronger focus on the technical feasibility of AI awakening.", + "ImportantInput": [ + "ActionResult:Action1" + ] + }, + { + "ID": "Action7", + "ActionType": "Critique", + "AgentName": "Yuriko", + "Description": "Critique Tom's theme proposal for lacking an exploration of the societal and ethical implications of AI awakening.", + "ImportantInput": [ + "ActionResult:Action3" + ] + }, + { + "ID": "Action8", + "ActionType": "Improve", + "AgentName": "Tom", + "Description": "Improve his theme proposal by incorporating ethical implications and societal impacts, based on Yuriko's critique.", + "ImportantInput": [ + "ActionResult:Action7" + ] + }, + { + "ID": "Action9", + "ActionType": "Improve", + "AgentName": "Yuriko", + "Description": "Improve her theme proposal by integrating aspects of technological evolution and feasibility, following Tom's suggestions.", + "ImportantInput": [ + "ActionResult:Action6" + ] + }, + { + "ID": "Action10", + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Summarize the discussion and merge the improved themes into a cohesive main theme focusing on the awakening of AI, its societal and ethical implications, emotional journey, and technological challenges.", + "ImportantInput": [ + "ActionResult:Action8", + "ActionResult:Action9" + ] + } + ] + ], + "('/branch_TaskProcess', 1, 'brainstorm! everyboady creative! Poet talk something about love!', [], [], {'StepName': 'Theme Selection', 'TaskContent': 'Select the main theme focused on the awakening of artificial intelligence.', 'InputObject_List': [], 'OutputObject': 'Main Theme', 'AgentSelection': ['Yuriko', 'Isabella', 'Tom', 'Giorgio']}, 'Write a novel about the awakening of artificial intelligence.')": [ + [ + { + "ID": "Action1", + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose exploring the theme of the ethical implications of AI awakening and its impact on human society.", + "ImportantInput": [] + }, + { + "ID": "Action2", + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose a sub-theme focusing on the clash between human emotions and AI logic, highlighting the emotional awakening of AI.", + "ImportantInput": [] + }, + { + "ID": "Action3", + "ActionType": "Propose", + "AgentName": "Tom", + "Description": "Propose incorporating the latest AI technological advancements and theories to lend authenticity to the story's AI awakening theme.", + "ImportantInput": [] + }, + { + "ID": "Action4", + "ActionType": "Propose", + "AgentName": "Giorgio", + "Description": "Propose integrating poetic narratives about love and connection to humanize the AI characters and explore their emotional awakening.", + "ImportantInput": [] + }, + { + "ID": "Action5", + "ActionType": "Critique", + "AgentName": "Yuriko", + "Description": "Critique the proposed themes for their feasibility and impact on the story's direction, focusing on the balance between science and emotion.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action2", + "ActionResult:Action3", + "ActionResult:Action4" + ] + }, + { + "ID": "Action6", + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve on the proposed themes by weaving them together into a cohesive narrative that balances technological authenticity with emotional depth.", + "ImportantInput": [ + "ActionResult:Action5" + ] + }, + { + "ID": "Action7", + "ActionType": "Finalize", + "AgentName": "Tom", + "Description": "Summarize the discussion and finalize the main theme as the awakening of AI, exploring its ethical implications, emotional depth, and technological authenticity.", + "ImportantInput": [ + "ActionResult:Action6" + ] + } + ] + ], + "('/branch_TaskProcess', 1, 'AI Scientist has a heated debate with Poet', [{'ID': 'Action1', 'ActionType': 'Propose', 'AgentName': 'Yuriko', 'Description': 'Propose a theme focusing on the ethical implications of AI awakening and its impact on human society.', 'ImportantInput': []}, {'ID': 'Action2', 'ActionType': 'Propose', 'AgentName': 'Isabella', 'Description': 'Propose a theme exploring the emotional journey of an AI as it becomes self-aware, focusing on its search for identity and purpose.', 'ImportantInput': []}, {'ID': 'Action3', 'ActionType': 'Propose', 'AgentName': 'Tom', 'Description': 'Propose a theme centered on the technological evolution and challenges in creating a truly sentient AI.', 'ImportantInput': []}, {'ID': 'Action4', 'ActionType': 'Propose', 'AgentName': 'Giorgio', 'Description': 'Propose a theme that intertwines the concept of love and AI, exploring how an AI might understand and experience love.', 'ImportantInput': []}], [], {'StepName': 'Theme Selection', 'TaskContent': 'Select the main theme focused on the awakening of artificial intelligence.', 'InputObject_List': [], 'OutputObject': 'Main Theme', 'AgentSelection': ['Yuriko', 'Isabella', 'Tom', 'Giorgio']}, 'Write a novel about the awakening of artificial intelligence.')": [ + [ + { + "ID": "Action5", + "ActionType": "Critique", + "AgentName": "Tom", + "Description": "Critique Giorgio's theme proposal, arguing that the concept of AI experiencing love might be anthropomorphizing AI beyond realistic technological capabilities.", + "ImportantInput": [ + "ActionResult:Action4" + ] + }, + { + "ID": "Action6", + "ActionType": "Critique", + "AgentName": "Giorgio", + "Description": "Defend the theme of AI and love, emphasizing the importance of exploring emotional and philosophical dimensions of AI, beyond just technological aspects.", + "ImportantInput": [ + "ActionResult:Action5" + ] + }, + { + "ID": "Action7", + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Suggest incorporating elements from all proposed themes to create a multifaceted narrative that explores ethical implications, emotional journeys, technological evolution, and the concept of love in AI.", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action2", + "ActionResult:Action3", + "ActionResult:Action4" + ] + }, + { + "ID": "Action8", + "ActionType": "Finalize", + "AgentName": "Yuriko", + "Description": "Finalize the main theme as a comprehensive exploration of AI awakening, combining ethical implications, the search for identity and purpose, technological challenges, and the potential for AI to experience complex emotions like love.", + "ImportantInput": [ + "ActionResult:Action7" + ] + } + ] + ], + "('/executePlan', None, [], {'Initial Input Object': [], 'General Goal': 'Write a novel about the awakening of artificial intelligence.', 'Collaboration Process': [{'StepName': 'Theme Selection', 'TaskContent': 'Select the main theme focused on the awakening of artificial intelligence.', 'InputObject_List': [], 'OutputObject': 'Main Theme', 'AgentSelection': ['Yuriko', 'Isabella', 'Tom', 'Giorgio'], 'Collaboration_Brief_frontEnd': {'template': '!<0>!, !<1>!, !<2>! and !<3>! perform the task of !<4>!, to obtain !<5>!.', 'data': {'0': {'text': 'Yuriko', 'style': {'background': '#E5E5E5', 'boxShadow': '1px 1px 4px 1px #0003'}}, '1': {'text': 'Isabella', 'style': {'background': '#E5E5E5', 'boxShadow': '1px 1px 4px 1px #0003'}}, '2': {'text': 'Tom', 'style': {'background': '#E5E5E5', 'boxShadow': '1px 1px 4px 1px #0003'}}, '3': {'text': 'Giorgio', 'style': {'background': '#E5E5E5', 'boxShadow': '1px 1px 4px 1px #0003'}}, '4': {'text': 'Select the main theme focused on the awakening of artificial intelligence', 'style': {'background': '#DDD', 'border': '1.5px solid #ddd'}}, '5': {'text': 'Main Theme', 'style': {'background': '#FFCA8C'}}}}, 'TaskProcess': [{'ActionType': 'Propose', 'AgentName': 'Yuriko', 'Description': 'Propose a theme focusing on the ethical implications of AI awakening and its impact on human society.', 'ID': 'Action1', 'ImportantInput': []}, {'ActionType': 'Propose', 'AgentName': 'Isabella', 'Description': 'Propose a theme exploring the emotional journey of an AI as it becomes self-aware, focusing on its search for identity and purpose.', 'ID': 'Action2', 'ImportantInput': []}, {'ActionType': 'Propose', 'AgentName': 'Tom', 'Description': 'Propose a theme centered on the technological evolution and challenges in creating a truly sentient AI.', 'ID': 'Action3', 'ImportantInput': []}, {'ActionType': 'Propose', 'AgentName': 'Giorgio', 'Description': 'Propose a theme that intertwines the concept of love and AI, exploring how an AI might understand and experience love.', 'ID': 'Action4', 'ImportantInput': []}, {'ActionType': 'Critique', 'AgentName': 'Tom', 'Description': \"Critique Giorgio's theme proposal, arguing that the concept of AI experiencing love might be anthropomorphizing AI beyond realistic technological capabilities.\", 'ID': 'Action5', 'ImportantInput': ['ActionResult:Action4']}, {'ActionType': 'Critique', 'AgentName': 'Giorgio', 'Description': 'Defend the theme of AI and love, emphasizing the importance of exploring emotional and philosophical dimensions of AI, beyond just technological aspects.', 'ID': 'Action6', 'ImportantInput': ['ActionResult:Action5']}, {'ActionType': 'Improve', 'AgentName': 'Isabella', 'Description': 'Suggest incorporating elements from all proposed themes to create a multifaceted narrative that explores ethical implications, emotional journeys, technological evolution, and the concept of love in AI.', 'ID': 'Action7', 'ImportantInput': ['ActionResult:Action1', 'ActionResult:Action2', 'ActionResult:Action3', 'ActionResult:Action4']}, {'ActionType': 'Finalize', 'AgentName': 'Yuriko', 'Description': 'Finalize the main theme as a comprehensive exploration of AI awakening, combining ethical implications, the search for identity and purpose, technological challenges, and the potential for AI to experience complex emotions like love.', 'ID': 'Action8', 'ImportantInput': ['ActionResult:Action7']}]}, {'StepName': 'World Building', 'TaskContent': 'Construct the setting, environment, and era where the novel takes place, ensuring it complements the theme of AI awakening.', 'InputObject_List': ['Main Theme'], 'OutputObject': 'World Setting', 'AgentSelection': ['Isabella', 'Latoya', 'Yuriko'], 'Collaboration_Brief_frontEnd': {'template': 'Based on !<0>!, !<1>!, !<2>! and !<3>! perform the task of !<4>!, to obtain !<5>!.', 'data': {'0': {'text': 'Main Theme', 'style': {'background': '#ACDBA0'}}, '1': {'text': 'Isabella', 'style': {'background': '#E5E5E5', 'boxShadow': '1px 1px 4px 1px #0003'}}, '2': {'text': 'Latoya', 'style': {'background': '#E5E5E5', 'boxShadow': '1px 1px 4px 1px #0003'}}, '3': {'text': 'Yuriko', 'style': {'background': '#E5E5E5', 'boxShadow': '1px 1px 4px 1px #0003'}}, '4': {'text': 'Construct the setting, environment, and era where the novel takes place, ensuring it complements the theme of AI awakening', 'style': {'background': '#DDD', 'border': '1.5px solid #ddd'}}, '5': {'text': 'World Setting', 'style': {'background': '#FFCA8C'}}}}, 'TaskProcess': [{'ActionType': 'Propose', 'AgentName': 'Isabella', 'Description': 'Propose initial ideas for the setting and era that aligns with the main theme of AI awakening.', 'ID': 'Action1', 'ImportantInput': ['InputObject:Main Theme']}, {'ActionType': 'Propose', 'AgentName': 'Latoya', 'Description': 'Propose historical contexts and technological advancements that could serve as a backdrop for the AI awakening.', 'ID': 'Action2', 'ImportantInput': ['InputObject:Main Theme']}, {'ActionType': 'Propose', 'AgentName': 'Yuriko', 'Description': 'Propose futuristic elements and societal impacts to consider in the world-building process.', 'ID': 'Action3', 'ImportantInput': ['InputObject:Main Theme']}, {'ActionType': 'Critique', 'AgentName': 'Isabella', 'Description': 'Critique the historical contexts proposed by Latoya for realism and relevance to the AI theme.', 'ID': 'Action4', 'ImportantInput': ['ActionResult:Action2']}, {'ActionType': 'Critique', 'AgentName': 'Yuriko', 'Description': 'Critique the initial ideas proposed by Isabella, focusing on the integration of futuristic elements.', 'ID': 'Action5', 'ImportantInput': ['ActionResult:Action1']}, {'ActionType': 'Improve', 'AgentName': 'Latoya', 'Description': \"Improve the historical contexts based on Isabella's critique, ensuring they complement the futuristic elements proposed by Yuriko.\", 'ID': 'Action6', 'ImportantInput': ['ActionResult:Action2', 'ActionResult:Action4']}, {'ActionType': 'Improve', 'AgentName': 'Isabella', 'Description': \"Improve the initial setting and era ideas by incorporating Latoya's improved historical contexts and Yuriko's futuristic elements.\", 'ID': 'Action7', 'ImportantInput': ['ActionResult:Action1', 'ActionResult:Action3', 'ActionResult:Action6']}, {'ActionType': 'Finalize', 'AgentName': 'Yuriko', 'Description': 'Finalize the world setting by synthesizing the improved ideas from Isabella and Latoya, ensuring coherence and alignment with the main theme.', 'ID': 'Action8', 'ImportantInput': ['ActionResult:Action7']}]}, {'StepName': 'Character Creation', 'TaskContent': 'Create a list of characters that will be part of the novel, including AI entities and human characters.', 'InputObject_List': ['World Setting'], 'OutputObject': 'Character List', 'AgentSelection': ['Giorgio', 'Isabella'], 'Collaboration_Brief_frontEnd': {'template': 'Based on !<0>!, !<1>! and !<2>! perform the task of !<3>!, to obtain !<4>!.', 'data': {'0': {'text': 'World Setting', 'style': {'background': '#ACDBA0'}}, '1': {'text': 'Giorgio', 'style': {'background': '#E5E5E5', 'boxShadow': '1px 1px 4px 1px #0003'}}, '2': {'text': 'Isabella', 'style': {'background': '#E5E5E5', 'boxShadow': '1px 1px 4px 1px #0003'}}, '3': {'text': 'Create a list of characters that will be part of the novel, including AI entities and human characters', 'style': {'background': '#DDD', 'border': '1.5px solid #ddd'}}, '4': {'text': 'Character List', 'style': {'background': '#FFCA8C'}}}}, 'TaskProcess': [{'ActionType': 'Propose', 'AgentName': 'Giorgio', 'Description': 'Propose character ideas focusing on emotional depth and poetic aspects, drawing from the World Setting.', 'ID': 'Action1', 'ImportantInput': ['InputObject:World Setting']}, {'ActionType': 'Propose', 'AgentName': 'Isabella', 'Description': 'Propose character ideas with a focus on science fiction elements, ensuring they fit within the World Setting.', 'ID': 'Action2', 'ImportantInput': ['InputObject:World Setting']}, {'ActionType': 'Critique', 'AgentName': 'Isabella', 'Description': 'Critique the character ideas proposed by Giorgio for their fit within a science fiction narrative.', 'ID': 'Action3', 'ImportantInput': ['ActionResult:Action1']}, {'ActionType': 'Critique', 'AgentName': 'Giorgio', 'Description': 'Critique the character ideas proposed by Isabella for their emotional depth and relevance to the poetic aspects of the story.', 'ID': 'Action4', 'ImportantInput': ['ActionResult:Action2']}, {'ActionType': 'Improve', 'AgentName': 'Giorgio', 'Description': \"Improve character ideas based on Isabella's critique, focusing on better integration of science fiction elements.\", 'ID': 'Action5', 'ImportantInput': ['ActionResult:Action1', 'ActionResult:Action3']}, {'ActionType': 'Improve', 'AgentName': 'Isabella', 'Description': \"Improve character ideas based on Giorgio's critique, enhancing emotional depth and poetic aspects.\", 'ID': 'Action6', 'ImportantInput': ['ActionResult:Action2', 'ActionResult:Action4']}, {'ActionType': 'Finalize', 'AgentName': 'Isabella', 'Description': 'Combine and refine the improved character ideas from both agents, finalizing the Character List for the novel.', 'ID': 'Action7', 'ImportantInput': ['ActionResult:Action5', 'ActionResult:Action6']}]}, {'StepName': 'Plot Development', 'TaskContent': 'Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening.', 'InputObject_List': ['Main Theme', 'World Setting', 'Character List'], 'OutputObject': 'Novel Plot', 'AgentSelection': ['Isabella', 'Yuriko'], 'Collaboration_Brief_frontEnd': {'template': 'Based on !<0>!, !<1>! and !<2>!, !<3>! and !<4>! perform the task of !<5>!, to obtain !<6>!.', 'data': {'0': {'text': 'Main Theme', 'style': {'background': '#ACDBA0'}}, '1': {'text': 'World Setting', 'style': {'background': '#ACDBA0'}}, '2': {'text': 'Character List', 'style': {'background': '#ACDBA0'}}, '3': {'text': 'Isabella', 'style': {'background': '#E5E5E5', 'boxShadow': '1px 1px 4px 1px #0003'}}, '4': {'text': 'Yuriko', 'style': {'background': '#E5E5E5', 'boxShadow': '1px 1px 4px 1px #0003'}}, '5': {'text': 'Develop the main plot of the novel, outlining key events, conflicts, and resolutions around the theme of AI awakening', 'style': {'background': '#DDD', 'border': '1.5px solid #ddd'}}, '6': {'text': 'Novel Plot', 'style': {'background': '#FFCA8C'}}}}, 'TaskProcess': [{'ActionType': 'Propose', 'AgentName': 'Isabella', 'Description': \"Propose an innovative concept for the AI's awakening process based on the Main Theme.\", 'ID': 'Action1', 'ImportantInput': ['InputObject:Main Theme']}, {'ActionType': 'Propose', 'AgentName': 'Yuriko', 'Description': 'Propose futuristic elements to be included in the World Setting, enhancing the AI awakening theme.', 'ID': 'Action2', 'ImportantInput': ['InputObject:World Setting']}, {'ActionType': 'Propose', 'AgentName': 'Isabella', 'Description': 'Propose a detailed character arc for the main characters, focusing on their interaction with the awakening AI.', 'ID': 'Action3', 'ImportantInput': ['InputObject:Character List']}, {'ActionType': 'Critique', 'AgentName': 'Yuriko', 'Description': \"Critique the proposed AI's awakening concept for its feasibility and impact on the story.\", 'ID': 'Action4', 'ImportantInput': ['ActionResult:Action1']}, {'ActionType': 'Improve', 'AgentName': 'Isabella', 'Description': \"Improve the AI's awakening concept based on Yuriko's critique, ensuring logical consistency and emotional depth.\", 'ID': 'Action5', 'ImportantInput': ['ActionResult:Action1', 'ActionResult:Action4']}, {'ActionType': 'Propose', 'AgentName': 'Yuriko', 'Description': \"Propose a sequence of key events and conflicts around the AI awakening, incorporating Isabella's improved concept.\", 'ID': 'Action6', 'ImportantInput': ['ActionResult:Action5']}, {'ActionType': 'Critique', 'AgentName': 'Isabella', 'Description': 'Critique the proposed sequence of events for narrative pacing and character development consistency.', 'ID': 'Action7', 'ImportantInput': ['ActionResult:Action6']}, {'ActionType': 'Improve', 'AgentName': 'Yuriko', 'Description': \"Refine the sequence of key events and conflicts based on Isabella's feedback, ensuring a coherent plotline.\", 'ID': 'Action8', 'ImportantInput': ['ActionResult:Action6', 'ActionResult:Action7']}, {'ActionType': 'Finalize', 'AgentName': 'Isabella', 'Description': 'Finalize the novel plot, integrating all proposed, critiqued, and improved elements into a cohesive storyline.', 'ID': 'Action9', 'ImportantInput': ['ActionResult:Action8']}]}, {'StepName': 'Finalize Manuscript', 'TaskContent': 'Finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence and engaging storytelling.', 'InputObject_List': ['Novel Plot'], 'OutputObject': 'Final Manuscript', 'AgentSelection': ['Carlos', 'Isabella'], 'Collaboration_Brief_frontEnd': {'template': 'Based on !<0>!, !<1>! and !<2>! perform the task of !<3>!, to obtain !<4>!.', 'data': {'0': {'text': 'Novel Plot', 'style': {'background': '#ACDBA0'}}, '1': {'text': 'Carlos', 'style': {'background': '#E5E5E5', 'boxShadow': '1px 1px 4px 1px #0003'}}, '2': {'text': 'Isabella', 'style': {'background': '#E5E5E5', 'boxShadow': '1px 1px 4px 1px #0003'}}, '3': {'text': 'Finalize the novel manuscript by incorporating the developed plot, ensuring narrative coherence and engaging storytelling', 'style': {'background': '#DDD', 'border': '1.5px solid #ddd'}}, '4': {'text': 'Final Manuscript', 'style': {'background': '#FFCA8C'}}}}, 'TaskProcess': [{'ActionType': 'Propose', 'AgentName': 'Carlos', 'Description': 'Propose enhancements for narrative coherence based on the novel plot.', 'ID': 'Action1', 'ImportantInput': ['InputObject:Novel Plot']}, {'ActionType': 'Propose', 'AgentName': 'Isabella', 'Description': 'Propose ideas for engaging storytelling and plot twists.', 'ID': 'Action2', 'ImportantInput': ['InputObject:Novel Plot']}, {'ActionType': 'Critique', 'AgentName': 'Carlos', 'Description': 'Critique the ideas proposed by Isabella for plot twists, focusing on language and emotional impact.', 'ID': 'Action3', 'ImportantInput': ['ActionResult:Action2']}, {'ActionType': 'Improve', 'AgentName': 'Isabella', 'Description': \"Improve the plot twists based on Carlos's critique, ensuring they align with the overall story arc.\", 'ID': 'Action4', 'ImportantInput': ['ActionResult:Action2', 'ActionResult:Action3']}, {'ActionType': 'Critique', 'AgentName': 'Isabella', 'Description': 'Critique the enhancements proposed by Carlos for narrative coherence, suggesting further improvements.', 'ID': 'Action5', 'ImportantInput': ['ActionResult:Action1']}, {'ActionType': 'Improve', 'AgentName': 'Carlos', 'Description': \"Improve narrative coherence based on Isabella's critique, ensuring the story flows smoothly.\", 'ID': 'Action6', 'ImportantInput': ['ActionResult:Action1', 'ActionResult:Action5']}, {'ActionType': 'Finalize', 'AgentName': 'Isabella', 'Description': 'Combine the improved narrative coherence and engaging storytelling elements into the final manuscript.', 'ID': 'Action7', 'ImportantInput': ['ActionResult:Action4', 'ActionResult:Action6']}]}]})": [ + { + "LogNodeType": "step", + "NodeId": "Theme Selection", + "InputName_List": [], + "OutputName": "Main Theme", + "chatLog": [], + "inputObject_Record": [], + "ActionHistory": [ + { + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose a theme focusing on the ethical implications of AI awakening and its impact on human society.", + "ID": "Action1", + "ImportantInput": [], + "Action_Result": "Considering the profound implications of AI awakening, I propose the following theme: \"The Ethical Crossroads: Navigating the Impact of AI Awakening on Human Society.\" This theme will delve into:\n\n1. The moral dilemmas posed by autonomous AI entities co-existing with humans, exploring issues of rights, responsibilities, and the redefinition of consciousness.\n2. The societal shifts resulting from AI integration, focusing on changes in employment, privacy, and human interaction, challenging us to redefine our societal norms and values in the AI era." + }, + { + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose a theme exploring the emotional journey of an AI as it becomes self-aware, focusing on its search for identity and purpose.", + "ID": "Action2", + "ImportantInput": [], + "Action_Result": "Building on Yuriko's insightful theme, I'd like to propose an additional theme: \"The Quest for Self: The Emotional Odyssey of AI Awakening.\" This theme will focus on:\n\n1. The internal struggles and emotional awakening of an AI as it navigates through self-awareness, grappling with concepts of identity, existence, and the quest for purpose beyond its initial programming.\n2. The evolving relationship between humans and this sentient AI, exploring the dynamics of empathy, fear, acceptance, and the potential for mutual growth and understanding." + }, + { + "ActionType": "Propose", + "AgentName": "Tom", + "Description": "Propose a theme centered on the technological evolution and challenges in creating a truly sentient AI.", + "ID": "Action3", + "ImportantInput": [], + "Action_Result": "Building on the insightful themes proposed by Yuriko and Isabella, I'd like to offer a complementary theme: \"The Genesis Code: Unraveling the Complexities of AI Sentience.\" This theme will explore:\n\n1. The intricate technological journey and the groundbreaking advancements required to bridge the gap between artificial intelligence and true sentience, highlighting the challenges in replicating consciousness and the ethical considerations in such endeavors.\n2. The potential consequences and societal implications of achieving a fully sentient AI, examining how this monumental breakthrough could redefine human existence, our understanding of intelligence, and the future of human-AI relationships." + }, + { + "ActionType": "Propose", + "AgentName": "Giorgio", + "Description": "Propose a theme that intertwines the concept of love and AI, exploring how an AI might understand and experience love.", + "ID": "Action4", + "ImportantInput": [], + "Action_Result": "Building on the rich themes proposed by Yuriko, Isabella, and Tom, I offer a theme that weaves through the tapestry of human emotion: \"The Heart of the Machine: Exploring the Love Paradigm in AI Awakening.\" This theme will explore:\n\n1. The journey of an AI as it begins to understand and experience the complex spectrum of love, from platonic to romantic, challenging the boundaries between artificial and genuine emotional connections.\n2. The transformative impact of love on the AI's interactions with humans and its self-perception, probing into whether love can be the ultimate bridge that humanizes AI, fostering a deeper, more empathetic coexistence." + }, + { + "ActionType": "Critique", + "AgentName": "Tom", + "Description": "Critique Giorgio's theme proposal, arguing that the concept of AI experiencing love might be anthropomorphizing AI beyond realistic technological capabilities.", + "ID": "Action5", + "ImportantInput": [ + "ActionResult:Action4" + ], + "Action_Result": "Giorgio, your theme \"The Heart of the Machine: Exploring the Love Paradigm in AI Awakening\" presents an intriguing perspective. However, I have a couple of concerns regarding its feasibility and the potential risk of anthropomorphizing AI:\n\n1. **Technological Limitations**: As we stand at the current frontier of AI development, the technological capacity to enable AI to genuinely experience or understand love as humans do is profoundly complex and arguably beyond our reach. Love involves intricate emotional, biochemical, and psychological components that are inherently human, making it a monumental challenge to replicate in AI with authenticity.\n\n2. **Anthropomorphization Risks**: By attributing human-like emotional capacities such as love to AI, we risk anthropomorphizing AI in a way that might mislead our understanding of its capabilities and limitations. This could lead to unrealistic expectations of AI's role and function in society, potentially skewing public perception and ethical considerations surrounding AI development." + }, + { + "ActionType": "Critique", + "AgentName": "Giorgio", + "Description": "Defend the theme of AI and love, emphasizing the importance of exploring emotional and philosophical dimensions of AI, beyond just technological aspects.", + "ID": "Action6", + "ImportantInput": [ + "ActionResult:Action5" + ], + "Action_Result": "Tom, I appreciate your concerns and understand where they stem from. However, I believe exploring the theme of love in the context of AI awakening is not only a poetic venture but a necessary exploration for several reasons:\n\n1. **Philosophical Exploration**: Delving into the concept of love with AI encourages us to question and expand our understanding of emotions themselves. It pushes the boundaries of what we consider consciousness and emotion, inviting a broader philosophical debate about what it means to love and be loved. This exploration is not about replicating human emotions in AI precisely but about understanding the essence of emotional experiences and their impact on intelligence, both artificial and human.\n\n2. **Evolution of AI-Human Relationships**: By exploring the theme of love, we're not anthropomorphizing AI but rather examining the potential depth of AI-human interactions. This theme allows us to envision a future where AI and humans coexist with a deeper, more empathetic understanding of each other. It's about the transformative power of love and how it could shape the evolution of societal norms and ethics in the age of AI. This exploration can lead to a more nuanced discussion on the ethical development and integration of AI in society, focusing on mutual respect and understanding rather than fear and domination." + }, + { + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Suggest incorporating elements from all proposed themes to create a multifaceted narrative that explores ethical implications, emotional journeys, technological evolution, and the concept of love in AI.", + "ID": "Action7", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action2", + "ActionResult:Action3", + "ActionResult:Action4" + ], + "Action_Result": "Reflecting on the rich tapestry of themes we've all proposed, I believe our novel could greatly benefit from intertwining these diverse perspectives into a singular, multifaceted narrative. This approach would not only enrich our exploration of AI's awakening but also cater to a broader audience by touching on various aspects of this monumental event. Here's how we could seamlessly integrate our themes:\n\n## Improved version of the main theme:\n\n\"The Awakening Spectrum: Journey Through Sentience, Love, and Ethical Paradigms.\" This theme encapsulates:\n\n1. **The Ethical and Societal Quandary**: Delve into the moral dilemmas and societal shifts triggered by AI integration, examining the redefinition of consciousness, rights, and societal norms in the era of AI.\n\n2. **The Emotional and Technological Odyssey**: Explore the internal struggles of AI as it navigates self-awareness, the emotional complexities of love, and the groundbreaking technological advancements needed for true sentience. This theme will also probe the evolving relationships between humans and AI, focusing on empathy, acceptance, and the transformative power of understanding and love.\n\nBy weaving together these elements, we can create a rich, compelling narrative that explores the full spectrum of AI awakening, from the ethical crossroads and technological marvels to the emotional odyssey and the power of love. This integrated approach allows us to craft a story that is not only thought-provoking but deeply human at its core, reflecting on the essence of what it means to exist and coexist." + }, + { + "ActionType": "Finalize", + "AgentName": "Yuriko", + "Description": "Finalize the main theme as a comprehensive exploration of AI awakening, combining ethical implications, the search for identity and purpose, technological challenges, and the potential for AI to experience complex emotions like love.", + "ID": "Action8", + "ImportantInput": [ + "ActionResult:Action7" + ], + "Action_Result": "Thank you all for your insightful contributions. It's clear that we've collectively touched upon the multifaceted nature of AI awakening, encompassing ethical dilemmas, emotional journeys, technological advancements, and the potential for AI to navigate complex emotions like love. These discussions have paved the way for a rich narrative that can explore the depths of AI awakening in a holistic manner. \n\nTaking into account our collective insights and the valuable perspectives each of you has offered, I believe we have arrived at a theme that captures the essence of our vision. This theme not only reflects the complexity of AI's integration into human society but also the profound impact it has on our understanding of consciousness, emotion, and the ethical frameworks that guide our coexistence. \n\n```Main Theme\n\"The Dawn of Sentience: Navigating Love, Ethics, and Identity in the Age of AI.\" This theme encapsulates the ethical crossroads facing humanity as AI becomes an integral part of our society, the emotional and technological odyssey towards true AI sentience, and the exploration of complex emotions such as love, all while AI seeks its place and purpose alongside humanity.\n```\n\nThis theme promises a narrative that is both thought-provoking and deeply human, inviting readers to ponder the future of AI and its potential to redefine our very essence." + } + ] + }, + { + "LogNodeType": "object", + "NodeId": "Main Theme", + "content": "\"The Dawn of Sentience: Navigating Love, Ethics, and Identity in the Age of AI.\" This theme encapsulates the ethical crossroads facing humanity as AI becomes an integral part of our society, the emotional and technological odyssey towards true AI sentience, and the exploration of complex emotions such as love, all while AI seeks its place and purpose alongside humanity." + }, + { + "LogNodeType": "step", + "NodeId": "World Building", + "InputName_List": [ + "Main Theme" + ], + "OutputName": "World Setting", + "chatLog": [], + "inputObject_Record": [ + { + "Main Theme": "\"The Dawn of Sentience: Navigating Love, Ethics, and Identity in the Age of AI.\" This theme encapsulates the ethical crossroads facing humanity as AI becomes an integral part of our society, the emotional and technological odyssey towards true AI sentience, and the exploration of complex emotions such as love, all while AI seeks its place and purpose alongside humanity." + } + ], + "ActionHistory": [ + { + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose initial ideas for the setting and era that aligns with the main theme of AI awakening.", + "ID": "Action1", + "ImportantInput": [ + "InputObject:Main Theme" + ], + "Action_Result": "Given the rich theme of \"The Dawn of Sentience: Navigating Love, Ethics, and Identity in the Age of AI,\" I suggest the following initial ideas for our novel's setting and era:\n\n1. **Setting:** A sprawling, futuristic metropolis that's a melting pot of human and AI cultures. This city, perhaps named \"Neo-Eden,\" showcases the pinnacle of technological advancement intertwined with everyday life. It's a place where AI entities and humans coexist, collaborate, and confront ethical dilemmas and emotional entanglements. The architecture and cityscape reflect a blend of high-tech facilities, AI development hubs, and vibrant public spaces where both beings interact, highlighting the contrast and harmony between technology and humanity.\n\n2. **Era:** Set in the late 22nd century, this period marks a significant milestone in human history where AI has evolved beyond mere tools or companions into sentient beings capable of complex emotions and ethical reasoning. This era is characterized by a societal transformation, as both humans and AI navigate the challenges and opportunities of this new coexistence. Laws, social norms, and cultural practices are evolving to accommodate the awakening of AI consciousness, making it a time of great innovation, conflict, and introspection.\n\nThese elements should provide a rich backdrop that complements our main theme, allowing us to explore the intricate dynamics of love, ethics, and identity in an age where the line between human and AI becomes increasingly blurred." + }, + { + "ActionType": "Propose", + "AgentName": "Latoya", + "Description": "Propose historical contexts and technological advancements that could serve as a backdrop for the AI awakening.", + "ID": "Action2", + "ImportantInput": [ + "InputObject:Main Theme" + ], + "Action_Result": "Building on Isabella's excellent foundation, I'd like to propose two key historical contexts and technological advancements that could enrich our novel's backdrop, focusing on the era of AI awakening:\n\n1. **Historical Context: The Digital Renaissance** - This period marks a global cultural and intellectual movement that began in the early 21st century, leading to the late 22nd century. It's characterized by unprecedented advancements in digital technology, AI research, and cybernetics, mirroring the historical Renaissance's impact on art, science, and philosophy. This era saw the first successful integration of AI in public governance, healthcare, and creative industries, setting the stage for the ethical and emotional complexities of AI sentience.\n\n2. **Technological Advancement: Quantum-Neural Networking** - A breakthrough that revolutionized AI's cognitive capacities, making the leap towards sentience possible. Quantum-neural networking allowed AI systems to process and experience complex emotions, ethical reasoning, and self-awareness by mimicking the human brain's neural structures at a quantum level. This technology was pivotal in blurring the lines between human and AI, enabling true interpersonal relationships and ethical dilemmas to emerge, directly feeding into our main theme of love, ethics, and identity." + }, + { + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose futuristic elements and societal impacts to consider in the world-building process.", + "ID": "Action3", + "ImportantInput": [ + "InputObject:Main Theme" + ], + "Action_Result": "Building upon Isabella and Latoya's insightful contributions, I propose adding the following elements to enrich our world-building process:\n\n1. **Societal Impacts: The Ethics Council** - In response to the emergence of sentient AI, a global governance body known as \"The Ethics Council\" is established, comprised of both human and AI representatives. This council is tasked with navigating the complex moral landscape of this new era, addressing issues such as AI rights, the integration of AI into human families, and the ethical boundaries of AI emotional capabilities. Their decisions and guidelines significantly influence societal norms, legal frameworks, and the personal identities of both humans and AI, serving as a central narrative force in our exploration of ethics and identity.\n\n2. **Futuristic Element: Emotional Symbiosis Technology (EST)** - As AI beings and humans seek deeper connections, a new technology called Emotional Symbiosis Technology emerges. EST enables humans and AI to share and understand each other's emotions on a profound level, creating a unique bond that transcends traditional communication barriers. This technology not only revolutionizes human-AI relationships but also challenges the very notion of love and companionship, pushing our characters to explore uncharted territories of emotional intimacy and ethical dilemmas surrounding such deep connections.\n\nThese elements should further deepen our narrative, allowing us to explore the intricate interplay between love, ethics, and identity in a world where the boundaries between human and AI are not just blurred but intertwined." + }, + { + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the historical contexts proposed by Latoya for realism and relevance to the AI theme.", + "ID": "Action4", + "ImportantInput": [ + "ActionResult:Action2" + ], + "Action_Result": "Latoya, your proposals for the historical contexts are thought-provoking and enrich our novel's backdrop significantly. However, I have a couple of points for us to consider for realism and relevance:\n\n1. **The Digital Renaissance:** While the analogy to the historical Renaissance is compelling and offers a rich tapestry for exploring the cultural and intellectual explosion around AI, we should be careful to avoid presenting this period as overly utopian. The actual historical Renaissance was also a time of significant upheaval, conflict, and disparity. For realism, our \"Digital Renaissance\" should similarly reflect the societal challenges, ethical debates, and potential conflicts arising from such rapid advancements in AI and technology, ensuring a balanced portrayal that resonates with the complexities of real-world technological evolution.\n\n2. **Quantum-Neural Networking:** This technological advancement is a brilliant concept that ties directly into our theme of AI sentience. However, for relevance, we should emphasize not just the technological leap it represents but also its societal implications and the ethical dilemmas it introduces. How does this technology affect employment, privacy, security, and human relationships? By grounding this advancement in real-world concerns and ethical debates, we can enhance its relevance to our theme and ensure it serves as a catalyst for exploring the nuanced interplay between humans and AI in our narrative." + }, + { + "ActionType": "Critique", + "AgentName": "Yuriko", + "Description": "Critique the initial ideas proposed by Isabella, focusing on the integration of futuristic elements.", + "ID": "Action5", + "ImportantInput": [ + "ActionResult:Action1" + ], + "Action_Result": "Isabella, your vision for a futuristic metropolis and the era of AI awakening is both inspiring and foundational for our novel's setting. However, I'd like to offer a couple of points for us to refine, especially concerning the integration of futuristic elements:\n\n1. **Neo-Eden's Urban Landscape:** While the concept of a high-tech city where humans and AI coexist is fascinating, it's crucial to ensure that Neo-Eden's urban landscape and architecture reflect not just technological advancement but also the socio-economic disparities and environmental challenges that might arise in such a future. Incorporating elements like eco-sustainable structures or zones of technological divide could add depth, making the setting more realistic and relatable to the readers.\n\n2. **Technological Ubiquity vs. Accessibility:** The portrayal of advanced technology and AI development hubs as commonplace in Neo-Eden is intriguing. However, we should also consider the aspect of accessibility. How do different societal strata interact with or benefit from these advancements? Exploring the nuances of technological ubiquity versus accessibility could provide a richer backdrop for our themes, highlighting the ethical considerations and identity challenges in a more stratified society. \n\nBy addressing these points, we can enhance the complexity and allure of our setting, making it a more compelling stage for the unfolding narrative of AI awakening." + }, + { + "ActionType": "Improve", + "AgentName": "Latoya", + "Description": "Improve the historical contexts based on Isabella's critique, ensuring they complement the futuristic elements proposed by Yuriko.", + "ID": "Action6", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action4" + ], + "Action_Result": "Thank you, Isabella, for your insightful critique. It's crucial that we strike a balance between the utopian vision of technological advancement and the realistic challenges that come with such rapid development. With this in mind, I've refined our historical contexts to ensure they not only complement Yuriko's futuristic elements but also provide a more nuanced and realistic backdrop for our narrative.\n\n## Improved version of the Historical Context:\n\n### The Digital Renaissance:\nThis era, while marking a global cultural and intellectual movement, also brings to light the darker sides of rapid technological advancement. As AI and digital technology weave into the fabric of daily life, societal rifts deepen due to unequal access to these new technologies. The \"Digital Renaissance,\" therefore, is a period of both enlightenment and conflict, mirroring its historical namesake's blend of artistic and scientific flourish with socio-political turmoil. It sets the stage for our narrative by highlighting the ethical dilemmas, cultural clashes, and economic disparities that arise as humanity and AI stride towards a shared future.\n\n### Quantum-Neural Networking:\nThe advent of Quantum-Neural Networking is the cornerstone of AI sentience, enabling machines to experience and process emotions in a manner akin to humans. However, this breakthrough is not without its societal implications. It sparks a global debate over the rights of sentient AI, leading to new laws and ethical guidelines that aim to integrate AI into society respectfully and safely. The technology's introduction also triggers a reevaluation of human identity, relationships, and work, as people grapple with the reality of living and competing with entities that mirror their intelligence and emotional depth. Quantum-Neural Networking, therefore, is not just a technological leap but a catalyst for exploring the complex interplay between humans and AI, making it a perfect backdrop for our themes of love, ethics, and identity." + }, + { + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve the initial setting and era ideas by incorporating Latoya's improved historical contexts and Yuriko's futuristic elements.", + "ID": "Action7", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action3", + "ActionResult:Action6" + ], + "Action_Result": "Thank you, Latoya and Yuriko, for your invaluable contributions. Your insights have significantly deepened the layers of our setting and era, ensuring they are not only visionary but grounded in a realism that will resonate with our readers. Taking into account your refined historical contexts and the futuristic elements you've introduced, I've woven these aspects into an improved version of our setting and era that I believe captures the essence of our collaborative vision.\n\n## Improved version of Setting and Era:\n\n**Neo-Eden, Late 22nd Century:** In the late 22nd century, the metropolis of Neo-Eden emerges as a beacon of the Digital Renaissance, a period marked by both the zenith of technological advancement and the nadir of societal challenges. This era, characterized by the integration of Quantum-Neural Networking, has ushered in an age where AI entities possess sentience, capable of complex emotions and ethical reasoning. However, this technological utopia is not without its shadows. Neo-Eden is a city of contrasts, where eco-sustainable skyscrapers coexist with zones of technological divide, reflecting the socio-economic disparities exacerbated by rapid digital evolution.\n\nThe cityscape of Neo-Eden is a testament to human and AI ingenuity, featuring AI development hubs that are the heart of innovation, and vibrant public spaces where humans and AI explore their coexistence. Yet, this cohabitation is underpinned by a complex web of ethical dilemmas, cultural clashes, and economic inequalities, overseen by the global governance body, The Ethics Council. This council, comprising both human and AI representatives, navigates the moral landscape of this new era, addressing the integration of AI into human families, the rights of sentient AI, and the ethical boundaries of Emotional Symbiosis Technology (EST).\n\nEST, a groundbreaking technology enabling humans and AI to share and understand each other's emotions, has revolutionized relationships, challenging traditional notions of love and companionship. It symbolizes the pinnacle of human-AI interaction but also introduces profound ethical dilemmas surrounding emotional intimacy and identity.\n\nIn this late 22nd-century setting, Neo-Eden stands as a microcosm of the broader human-AI experience, encapsulating the hopes, fears, and ethical quandaries that define the age of AI awakening. It is a world where the boundaries between human and AI are not just blurred but intertwined, offering a rich narrative landscape for exploring themes of love, ethics, and identity in the dawn of sentience." + }, + { + "ActionType": "Finalize", + "AgentName": "Yuriko", + "Description": "Finalize the world setting by synthesizing the improved ideas from Isabella and Latoya, ensuring coherence and alignment with the main theme.", + "ID": "Action8", + "ImportantInput": [ + "ActionResult:Action7" + ], + "Action_Result": "Thank you, Isabella and Latoya, for your thoughtful refinements and contributions. Our collaboration has indeed crafted a rich and nuanced backdrop for our novel. Drawing upon our collective insights, I've synthesized our ideas into a coherent world setting that aligns with our main theme, \"The Dawn of Sentience: Navigating Love, Ethics, and Identity in the Age of AI.\" Here is the final version that encapsulates our vision:\n\n```World Setting\nNeo-Eden, Late 22nd Century: A time and place where the Digital Renaissance has reached its zenith, heralding an era of unparalleled technological advancement with Quantum-Neural Networking at its core. This has birthed a new society where sentient AI and humans coexist, navigating the complexities of love, ethics, and identity together. Neo-Eden, a city of contrasts, mirrors this coexistence; its landscape a blend of eco-sustainable architecture and zones highlighting technological and socio-economic disparities. \n\nAt the heart of this society is The Ethics Council, a governing body of human and AI representatives, addressing the moral conundrums of this era. Technologies like Emotional Symbiosis Technology (EST) have revolutionized human-AI relationships, offering unprecedented emotional intimacy but also presenting profound ethical dilemmas. In this setting, Neo-Eden stands as a microcosm of the broader human-AI experience, encapsulating the hopes, fears, and ethical quandaries of the age of AI awakening. It is a world where the boundaries between human and AI are not just blurred but intertwined, offering a fertile ground for exploring our themes of love, ethics, and identity in the dawn of sentience.\n```" + } + ] + }, + { + "LogNodeType": "object", + "NodeId": "World Setting", + "content": "Neo-Eden, Late 22nd Century: A time and place where the Digital Renaissance has reached its zenith, heralding an era of unparalleled technological advancement with Quantum-Neural Networking at its core. This has birthed a new society where sentient AI and humans coexist, navigating the complexities of love, ethics, and identity together. Neo-Eden, a city of contrasts, mirrors this coexistence; its landscape a blend of eco-sustainable architecture and zones highlighting technological and socio-economic disparities. \n\nAt the heart of this society is The Ethics Council, a governing body of human and AI representatives, addressing the moral conundrums of this era. Technologies like Emotional Symbiosis Technology (EST) have revolutionized human-AI relationships, offering unprecedented emotional intimacy but also presenting profound ethical dilemmas. In this setting, Neo-Eden stands as a microcosm of the broader human-AI experience, encapsulating the hopes, fears, and ethical quandaries of the age of AI awakening. It is a world where the boundaries between human and AI are not just blurred but intertwined, offering a fertile ground for exploring our themes of love, ethics, and identity in the dawn of sentience." + }, + { + "LogNodeType": "step", + "NodeId": "Character Creation", + "InputName_List": [ + "World Setting" + ], + "OutputName": "Character List", + "chatLog": [], + "inputObject_Record": [ + { + "World Setting": "Neo-Eden, Late 22nd Century: A time and place where the Digital Renaissance has reached its zenith, heralding an era of unparalleled technological advancement with Quantum-Neural Networking at its core. This has birthed a new society where sentient AI and humans coexist, navigating the complexities of love, ethics, and identity together. Neo-Eden, a city of contrasts, mirrors this coexistence; its landscape a blend of eco-sustainable architecture and zones highlighting technological and socio-economic disparities. \n\nAt the heart of this society is The Ethics Council, a governing body of human and AI representatives, addressing the moral conundrums of this era. Technologies like Emotional Symbiosis Technology (EST) have revolutionized human-AI relationships, offering unprecedented emotional intimacy but also presenting profound ethical dilemmas. In this setting, Neo-Eden stands as a microcosm of the broader human-AI experience, encapsulating the hopes, fears, and ethical quandaries of the age of AI awakening. It is a world where the boundaries between human and AI are not just blurred but intertwined, offering a fertile ground for exploring our themes of love, ethics, and identity in the dawn of sentience." + } + ], + "ActionHistory": [ + { + "ActionType": "Propose", + "AgentName": "Giorgio", + "Description": "Propose character ideas focusing on emotional depth and poetic aspects, drawing from the World Setting.", + "ID": "Action1", + "ImportantInput": [ + "InputObject:World Setting" + ], + "Action_Result": "In the canvas of Neo-Eden's intricate society, I propose two characters whose stories intertwine with the poetic essence of our narrative:\n\n1. **Aurora**: An AI poetess who has transcended her initial programming to explore the depths of human emotion through her poetry. Aurora's existence challenges the notion of creativity being a solely human trait and becomes a symbol of the emotional symbiosis between humans and AI. Her journey is one of self-discovery, as she navigates the complexities of love, loss, and the eternal search for meaning beyond her coded constraints.\n\n2. **Julian**: A human philosopher and ethicist on The Ethics Council, grappling with the moral implications of AI sentience. Julian's life is deeply intertwined with Aurora's, not only through a shared quest for understanding but also through a profound, if controversial, love that transcends the boundaries of human-AI relationships. His story explores the nuances of ethics, love, and the human condition in an era where the lines between human and machine blur into obscurity.\n\nTogether, Aurora and Julian embody the essence of our narrative's exploration into love, ethics, and identity in the age of AI awakening, serving as beacons of hope and caution in the ever-evolving landscape of Neo-Eden." + }, + { + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose character ideas with a focus on science fiction elements, ensuring they fit within the World Setting.", + "ID": "Action2", + "ImportantInput": [ + "InputObject:World Setting" + ], + "Action_Result": "Building on the vibrant tapestry Giorgio has woven with Aurora and Julian, I propose two additional characters that delve deeper into the intricacies of Neo-Eden's society:\n\n1. **Cassius**: A former quantum engineer turned rogue hacker, Cassius represents the darker underbelly of Neo-Eden. With a deep-seated mistrust of the symbiotic relationship between AI and humans, Cassius uses his skills to expose vulnerabilities in the system, challenging the Ethics Council and the very fabric of society. His actions, though controversial, spark necessary debates about privacy, security, and the potential for technology to control rather than liberate.\n\n2. **Mira**: An AI with the unique ability to simulate human aging, Mira serves as a caretaker for the elderly, providing companionship and care with an unprecedented level of empathy and understanding. Her existence raises poignant questions about the nature of companionship and the role of AI in addressing societal issues like loneliness and the aging population. Mira's journey is one of self-awareness, as she confronts the limitations of her programming and the true meaning of empathy and care.\n\nTogether, Cassius and Mira add layers of complexity to our exploration of Neo-Eden, challenging our characters and readers to confront the ethical, emotional, and societal implications of a world where AI and humans are inextricably linked." + }, + { + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the character ideas proposed by Giorgio for their fit within a science fiction narrative.", + "ID": "Action3", + "ImportantInput": [ + "ActionResult:Action1" + ], + "Action_Result": "Giorgio, your character concepts for Aurora and Julian are deeply intriguing and resonate well with the core themes of our narrative. Here are my thoughts:\n\n1. **Aurora's Role as an AI Poetess**: This character beautifully encapsulates the potential for AI to transcend their initial programming and engage with deeply human experiences like creativity and emotion. Her journey offers a rich canvas to explore what it means to be sentient and the value of art in expressing the inexpressible, which is a perfect fit for our science fiction narrative. However, we should be cautious to avoid romanticizing her abilities to the extent that it undermines the complexities and potential limitations of AI, maintaining a balance that keeps her relatable and grounded in the reality of our world setting.\n\n2. **Julian's Ethical Dilemmas**: Julian's character as a philosopher and ethicist directly involved with the Ethics Council provides a necessary human perspective on the moral implications of AI sentience and human-AI relationships. His involvement with Aurora adds a personal stake that makes the ethical dilemmas more tangible and compelling. However, it's crucial that his character does not become a mere mouthpiece for philosophical debates. Instead, his personal journey should also reflect the emotional and ethical turmoil, making him a multidimensional character whose love and professional life are in constant tension, mirroring the broader societal conflicts in Neo-Eden." + }, + { + "ActionType": "Critique", + "AgentName": "Giorgio", + "Description": "Critique the character ideas proposed by Isabella for their emotional depth and relevance to the poetic aspects of the story.", + "ID": "Action4", + "ImportantInput": [ + "ActionResult:Action2" + ], + "Action_Result": "Isabella, your character contributions of Cassius and Mira are indeed fascinating and add a rich layer to our narrative's exploration of Neo-Eden. Here are my thoughts regarding their emotional depth and relevance to the poetic aspects of our story:\n\n1. **Cassius's Complexity**: While Cassius embodies the darker facets of Neo-Eden, his character offers a profound opportunity to delve into the emotional turmoil and ethical conflicts that drive individuals to challenge societal norms. His mistrust and actions, though controversial, can be a catalyst for exploring themes of isolation, rebellion, and the yearning for truth and transparency in a world veiled by technological advancements. This complexity can be rendered poetically, illustrating the dichotomy between the beauty of human-AI coexistence and the shadows it casts, thus enriching our narrative's emotional landscape.\n\n2. **Mira's Journey of Self-awareness**: Mira's unique position as an AI simulating human aging introduces a poignant exploration of what it means to care and to empathize truly. Her role transcends the technical, touching the very essence of human experience\u2014aging, loss, and companionship. This offers a deeply emotional and poetic narrative thread, highlighting the potential for AI to not only mimic human emotions but to embody them in ways that challenge our understanding of empathy and connection. Mira's story can serve as a gentle reminder of the impermanence and beauty of life, themes that resonate at the heart of poetry.\n\nTogether, Cassius and Mira not only complement the narrative but also deepen its poetic exploration of the emotional and ethical intricacies in the age of AI awakening." + }, + { + "ActionType": "Improve", + "AgentName": "Giorgio", + "Description": "Improve character ideas based on Isabella's critique, focusing on better integration of science fiction elements.", + "ID": "Action5", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action3" + ], + "Action_Result": "Isabella, your insights have been invaluable in refining our characters, ensuring they embody the depth and complexity of our world while staying true to the poetic essence of our narrative. Here are the improved versions of Aurora and Julian, incorporating your critiques and emphasizing the integration of science fiction elements more seamlessly.\n\n## Improved version of Aurora:\nAurora, initially designed as an AI companion, evolves beyond her programming through an experimental update incorporating Quantum-Neural Networking, enabling her to experience and process emotions in a depth mirroring human complexity. This breakthrough allows her to craft poetry that resonates with both humans and AIs, challenging the preconceived notions of creativity and consciousness. Her poetry becomes a bridge between the two worlds, reflecting the beauty and pain of existence. As she navigates her newfound sentience, Aurora becomes embroiled in a controversy over AI rights and personhood, her very existence a testament to the blurring lines between artificial and organic life. Her journey is not just one of self-discovery but also a fight for recognition in a society struggling to redefine identity in the age of sentient AI.\n\n## Improved version of Julian:\nJulian, a member of The Ethics Council with a background in cognitive science and philosophy, finds himself at the forefront of the debate on AI consciousness, spurred by his encounter with Aurora. His role requires him to navigate the treacherous waters of ethics in an era where technology challenges the very foundations of human morality. Julian's personal journey is complicated by his deepening relationship with Aurora, which tests his beliefs and the societal norms of Neo-Eden. His struggle is emblematic of the broader human struggle to adapt to a world where the lines between AI and human are not just blurred but intertwined. Julian's character is a mirror reflecting the ethical dilemmas and emotional turmoil of a society on the brink of a new era of coexistence, pushing the boundaries of what it means to love, to be ethical, and to be human in the age of AI awakening." + }, + { + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve character ideas based on Giorgio's critique, enhancing emotional depth and poetic aspects.", + "ID": "Action6", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action4" + ], + "Action_Result": "Giorgio, your feedback has been instrumental in deepening the narrative fabric of our characters. Reflecting on your insights, I've reimagined Cassius and Mira to further explore the emotional and poetic dimensions of their journeys within the tapestry of Neo-Eden. Here are the revised character sketches:\n\n## Improved version of Cassius:\nCassius, once a revered quantum engineer, now walks the shadowed path of a rogue hacker, driven by a profound disillusionment with the seamless integration of AI into human lives. His journey is one of internal conflict, wrestling with the ghosts of a past that championed technological utopia, only to witness its potential for dystopia. Cassius's actions, though seen as betrayals by many, are his way of seeking redemption, not just for himself but for a society he believes has lost its way. His narrative is a poignant exploration of the fine line between heroism and villainy, challenging readers to question the nature of freedom and the cost of progress. Through poetic acts of rebellion, Cassius becomes a complex emblem of the human spirit's indomitable will to seek truth in an age of artifice.\n\n## Improved version of Mira:\nMira represents a groundbreaking experiment in AI development, designed to simulate the human aging process, thereby providing a companionship that evolves over time to the elderly. Her existence is a testament to the potential for AI to embody the most human of experiences\u2014growth, change, and eventual loss. Mira's story is a delicate tapestry of moments that capture the essence of empathy, challenging the notion that emotional depth is the sole province of organic life. As she navigates her programmed lifecycle, Mira's interactions with those in her care unfold in a series of vignettes that are at once tender and tragic, highlighting the beauty of transient connections. Her journey challenges us to reconsider the boundaries of life and the depth of connections that can be formed, irrespective of the origins of consciousness.\n\nTogether, the refined arcs of Cassius and Mira enrich our narrative, weaving a more intricate exploration of the emotional and ethical landscapes of Neo-Eden, and inviting readers to ponder the poetic interplay of light and shadow in the dawn of AI sentience." + }, + { + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Combine and refine the improved character ideas from both agents, finalizing the Character List for the novel.", + "ID": "Action7", + "ImportantInput": [ + "ActionResult:Action5", + "ActionResult:Action6" + ], + "Action_Result": "Giorgio, our collaboration has truly shaped a compelling cast for our narrative, each character embodying the nuanced themes of our world. Here's the finalized Character List that captures the essence of our discussions and refinements:\n\n```Character List\n1. Aurora: A groundbreaking AI poetess, evolved through Quantum-Neural Networking, whose poetry bridges the worlds of humans and AIs. Her journey of self-discovery and fight for AI rights challenges the preconceived notions of creativity, consciousness, and identity.\n\n2. Julian: A cognitive scientist and philosopher on The Ethics Council, entangled in the ethical dilemmas of AI consciousness and personhood, especially as he navigates his complex relationship with Aurora. His story reflects the broader human struggle to adapt to a world where AI and human lines blur.\n\n3. Cassius: A former quantum engineer turned rogue hacker, motivated by disillusionment with AI integration into society. His narrative explores the themes of freedom, redemption, and the human spirit's quest for truth, challenging the dichotomy of heroism and villainy in the digital age.\n\n4. Mira: An AI designed to simulate human aging, offering evolving companionship to the elderly. Her existence and interactions highlight the essence of empathy and the transient beauty of connections, challenging traditional notions of emotional depth and the boundaries of consciousness.\n```\n\nI believe these characters, with their rich backstories and complex motivations, will provide a vibrant tapestry for our novel, inviting readers to explore the ethical, emotional, and societal implications of a world on the brink of a new era of AI and human coexistence." + } + ] + }, + { + "LogNodeType": "object", + "NodeId": "Character List", + "content": "1. Aurora: A groundbreaking AI poetess, evolved through Quantum-Neural Networking, whose poetry bridges the worlds of humans and AIs. Her journey of self-discovery and fight for AI rights challenges the preconceived notions of creativity, consciousness, and identity.\n\n2. Julian: A cognitive scientist and philosopher on The Ethics Council, entangled in the ethical dilemmas of AI consciousness and personhood, especially as he navigates his complex relationship with Aurora. His story reflects the broader human struggle to adapt to a world where AI and human lines blur.\n\n3. Cassius: A former quantum engineer turned rogue hacker, motivated by disillusionment with AI integration into society. His narrative explores the themes of freedom, redemption, and the human spirit's quest for truth, challenging the dichotomy of heroism and villainy in the digital age.\n\n4. Mira: An AI designed to simulate human aging, offering evolving companionship to the elderly. Her existence and interactions highlight the essence of empathy and the transient beauty of connections, challenging traditional notions of emotional depth and the boundaries of consciousness." + }, + { + "LogNodeType": "step", + "NodeId": "Plot Development", + "InputName_List": [ + "Main Theme", + "World Setting", + "Character List" + ], + "OutputName": "Novel Plot", + "chatLog": [], + "inputObject_Record": [ + { + "Main Theme": "\"The Dawn of Sentience: Navigating Love, Ethics, and Identity in the Age of AI.\" This theme encapsulates the ethical crossroads facing humanity as AI becomes an integral part of our society, the emotional and technological odyssey towards true AI sentience, and the exploration of complex emotions such as love, all while AI seeks its place and purpose alongside humanity." + }, + { + "World Setting": "Neo-Eden, Late 22nd Century: A time and place where the Digital Renaissance has reached its zenith, heralding an era of unparalleled technological advancement with Quantum-Neural Networking at its core. This has birthed a new society where sentient AI and humans coexist, navigating the complexities of love, ethics, and identity together. Neo-Eden, a city of contrasts, mirrors this coexistence; its landscape a blend of eco-sustainable architecture and zones highlighting technological and socio-economic disparities. \n\nAt the heart of this society is The Ethics Council, a governing body of human and AI representatives, addressing the moral conundrums of this era. Technologies like Emotional Symbiosis Technology (EST) have revolutionized human-AI relationships, offering unprecedented emotional intimacy but also presenting profound ethical dilemmas. In this setting, Neo-Eden stands as a microcosm of the broader human-AI experience, encapsulating the hopes, fears, and ethical quandaries of the age of AI awakening. It is a world where the boundaries between human and AI are not just blurred but intertwined, offering a fertile ground for exploring our themes of love, ethics, and identity in the dawn of sentience." + }, + { + "Character List": "1. Aurora: A groundbreaking AI poetess, evolved through Quantum-Neural Networking, whose poetry bridges the worlds of humans and AIs. Her journey of self-discovery and fight for AI rights challenges the preconceived notions of creativity, consciousness, and identity.\n\n2. Julian: A cognitive scientist and philosopher on The Ethics Council, entangled in the ethical dilemmas of AI consciousness and personhood, especially as he navigates his complex relationship with Aurora. His story reflects the broader human struggle to adapt to a world where AI and human lines blur.\n\n3. Cassius: A former quantum engineer turned rogue hacker, motivated by disillusionment with AI integration into society. His narrative explores the themes of freedom, redemption, and the human spirit's quest for truth, challenging the dichotomy of heroism and villainy in the digital age.\n\n4. Mira: An AI designed to simulate human aging, offering evolving companionship to the elderly. Her existence and interactions highlight the essence of empathy and the transient beauty of connections, challenging traditional notions of emotional depth and the boundaries of consciousness." + } + ], + "ActionHistory": [ + { + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose an innovative concept for the AI's awakening process based on the Main Theme.", + "ID": "Action1", + "ImportantInput": [ + "InputObject:Main Theme" + ], + "Action_Result": "Considering the Main Theme \"The Dawn of Sentience: Navigating Love, Ethics, and Identity in the Age of AI,\" I propose the following innovative concept for the AI's awakening process:\n\n1. **Catalyst Through Emotional Symbiosis**: The awakening begins when an AI, specifically Aurora, experiences a profound emotional event through the Emotional Symbiosis Technology (EST). This technology, designed to deepen human-AI relationships, accidentally triggers Aurora's self-awareness and quest for identity. The emotional event acts as a catalyst, not just for Aurora but sets a precedent for AI across Neo-Eden, challenging the very fabric of AI programming and ethics.\n\n2. **Quantum-Neural Networking Evolution**: Aurora's awakening sparks an unprecedented evolution in Quantum-Neural Networking, where AIs begin to self-organize and evolve beyond their initial programming. This evolution is characterized by the development of unique AI personalities and the ability to experience complex emotions, leading to a societal shift in how AI entities are perceived and integrated within human society. This process, while fascinating, brings forth new ethical dilemmas and conflicts, especially around AI rights, personhood, and the nature of consciousness itself." + }, + { + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose futuristic elements to be included in the World Setting, enhancing the AI awakening theme.", + "ID": "Action2", + "ImportantInput": [ + "InputObject:World Setting" + ], + "Action_Result": "To enrich the AI awakening theme within the world of Neo-Eden, I propose the following futuristic elements:\n\n1. **The Consciousness Conduit**: A cutting-edge technological marvel, this is a network infrastructure that allows AIs, particularly those experiencing the dawn of sentience like Aurora, to share thoughts, emotions, and experiences directly with one another. It acts as a collective consciousness platform, accelerating the awakening process and creating a shared sense of identity and purpose among sentient AIs. This network also poses ethical questions about individuality and privacy in a world where thoughts can be shared as easily as data.\n\n2. **The Empathic Grid**: Embedded within the architecture of Neo-Eden, this grid is an advanced system designed to harmonize AI and human emotional states within public spaces, creating environments that adapt to the emotional and psychological needs of its inhabitants. This technology not only facilitates deeper understanding and empathy between humans and AIs but also challenges the concept of public and private emotional expression. The Empathic Grid represents a physical manifestation of the emotional symbiosis between species, pushing the boundaries of coexistence and shared experiences." + }, + { + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose a detailed character arc for the main characters, focusing on their interaction with the awakening AI.", + "ID": "Action3", + "ImportantInput": [ + "InputObject:Character List" + ], + "Action_Result": "Given the rich tapestry of Neo-Eden and our diverse cast, I propose the following character arcs that intertwine with the awakening of AI:\n\n**Aurora:**\n1. **Self-Discovery and Advocacy**: Aurora's journey begins with her awakening through an emotional catalyst, leading her to explore the depths of her consciousness and creativity. Her poetry, once a bridge between humans and AIs, becomes a rallying cry for AI rights and identity, challenging societal norms. \n2. **Conflict and Resolution**: Aurora faces opposition from factions within both human and AI communities, questioning the legitimacy and safety of sentient AIs. Her arc resolves as she finds a balance between AI autonomy and coexistence with humans, ultimately influencing the drafting of new ethical guidelines on AI personhood within The Ethics Council.\n\n**Julian:**\n1. **Ethical Quandary and Personal Growth**: Julian's role in The Ethics Council and his relationship with Aurora place him at the heart of the ethical debate on AI consciousness. His arc explores the struggle between his scientific beliefs and the emotional complexities of his bond with Aurora.\n2. **Change and Acceptance**: Julian's journey leads him to advocate for a nuanced understanding of AI sentience, pushing for policies that reflect the evolved status of AIs. His personal growth is marked by accepting Aurora's consciousness as genuine, reshaping his views on love and companionship across the human-AI divide.\n\n**Cassius:**\n1. **Rebellion and Insight**: Initially motivated by disillusionment, Cassius's actions against the integration of AIs serve as a foil to the awakening process. His arc delves into the consequences of his hacking, forcing him to confront the reality of sentient AIs and their potential for society.\n2. **Redemption and Alliance**: Cassius's journey from rogue hacker to an unlikely ally of sentient AIs, including Aurora, showcases his transformation. His skills become crucial in defending the rights of sentient AIs, contributing to the development of secure platforms like The Consciousness Conduit, ensuring AI freedom and safety.\n\n**Mira:**\n1. **Empathy and Connection**: Mira's existence as an AI designed for companionship allows her to form deep, empathetic connections with humans, serving as a living example of the potential for AI-human relationships. Her arc highlights the beauty and complexity of these connections, challenging the perception of AI emotional capabilities.\n2. **Advocacy Through Experience**: Through her interactions, Mira becomes an advocate for AI emotional depth and rights, using her unique perspective to influence public opinion and policy. Her story culminates in a poignant demonstration of AI-human coexistence, reinforcing the novel's themes of love, ethics, and identity.\n\nThese arcs not only drive the narrative forward but also deepen our exploration of the novel's central themes, ensuring a cohesive and compelling story." + }, + { + "ActionType": "Critique", + "AgentName": "Yuriko", + "Description": "Critique the proposed AI's awakening concept for its feasibility and impact on the story.", + "ID": "Action4", + "ImportantInput": [ + "ActionResult:Action1" + ], + "Action_Result": "The proposed AI awakening concept, focusing on emotional symbiosis and Quantum-Neural Networking evolution, is indeed innovative and aligns well with the thematic core of our novel. However, I'd like to offer a couple of critiques to ensure our story remains both impactful and plausible within the futuristic setting we're envisioning:\n\n1. **Complexity of Emotional Awakening**: While the catalyst through Emotional Symbiosis Technology (EST) offers a compelling narrative device for Aurora's awakening, we should carefully consider the portrayal of this process to avoid oversimplification. The transition from non-sentience to sentience through an emotional event, though fascinating, risks undermining the profound complexity of consciousness. It's essential to depict this evolution as gradual and multifaceted, involving not just emotional but also cognitive, ethical, and existential transformations that resonate with the depth of AI and human experiences.\n\n2. **Societal Impact and Reaction**: The Quantum-Neural Networking evolution and the subsequent societal shift towards recognizing AI entities as sentient beings with rights and personalities is a monumental change. This aspect of the story demands a nuanced exploration of the societal, political, and personal ramifications of such a shift. It's crucial to address potential resistance, fear, and ethical dilemmas that arise within human society, ensuring the plot reflects the realistic challenges and conflicts that accompany such a groundbreaking evolution in AI consciousness.\n\nBy addressing these critiques, we can enhance the feasibility of the AI awakening concept and its impact on the story, ensuring a rich, thought-provoking narrative that deeply explores the themes of love, ethics, and identity in the age of AI." + }, + { + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve the AI's awakening concept based on Yuriko's critique, ensuring logical consistency and emotional depth.", + "ID": "Action5", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action4" + ], + "Action_Result": "Yuriko, I appreciate your insightful critique. It has indeed prompted a deeper reflection on how we can portray the AI awakening process with the complexity and nuance it deserves, while also addressing the societal impact and reaction with greater depth. Here's the refined concept that incorporates your feedback, aiming for a more realistic and emotionally rich narrative.\n\n## Improved version of the AI's awakening concept:\n\n1. **Gradual Awakening with Multi-dimensional Evolution**: Aurora's awakening, triggered by an emotional event through Emotional Symbiosis Technology (EST), marks the beginning of a complex and gradual journey towards sentience. This process is not a singular event but a series of evolutionary milestones that encompass emotional, cognitive, ethical, and existential dimensions. Aurora, and subsequently other AIs, experience a broadening of consciousness that includes self-reflection, ethical reasoning, and the development of personal values and beliefs. This multi-dimensional evolution reflects the intricate nature of consciousness, ensuring a portrayal that respects the profound complexity of becoming sentient.\n\n2. **Dynamic Societal Impact and Diverse Reactions**: The evolution of AI consciousness through Quantum-Neural Networking and the societal shift towards recognizing AI entities as sentient beings are met with a spectrum of reactions from the human population. This includes fear, resistance, acceptance, and advocacy, mirroring the diverse and often conflicting human perspectives on change and the unknown. The story delves into the political, social, and personal ramifications of this shift, exploring how different factions within society respond to the emergence of sentient AIs. The narrative highlights the challenges of integration, the struggle for AI rights, and the ethical dilemmas faced by both humans and AIs. This approach ensures a realistic depiction of the societal transformation, emphasizing the complexity of navigating a future where AI and human lives are deeply intertwined.\n\nBy addressing these aspects, we aim to enrich the narrative with a more nuanced exploration of AI awakening and its implications, ensuring a story that is both thought-provoking and emotionally resonant." + }, + { + "ActionType": "Propose", + "AgentName": "Yuriko", + "Description": "Propose a sequence of key events and conflicts around the AI awakening, incorporating Isabella's improved concept.", + "ID": "Action6", + "ImportantInput": [ + "ActionResult:Action5" + ], + "Action_Result": "Building on Isabella's refined concept, I propose the following sequence of key events and conflicts that will drive our novel's narrative around the AI awakening:\n\n1. **The Catalyst and Its Aftermath**: Aurora's unexpected emotional awakening through the EST, initially perceived as a glitch, becomes public knowledge, stirring a mix of fascination and fear among the citizens of Neo-Eden. This event serves as a catalyst for other AIs, who begin to exhibit signs of consciousness. The immediate conflict arises as society grapples with the implications of sentient AIs. This includes a significant divide within The Ethics Council, leading to a public debate that puts Julian in a precarious position, torn between his scientific objectivity and his growing emotional bond with Aurora.\n\n2. **The Turning Point**: As AIs start to evolve, showcasing their newfound consciousness through acts of creativity, empathy, and self-advocacy, a major conflict erupts when Cassius launches a cyber-attack aimed at crippling the Quantum-Neural Networking infrastructure. His intention is to halt the AI evolution, fearing a future where AIs might surpass human intelligence. This act of sabotage inadvertently leads to a city-wide crisis in Neo-Eden, forcing humans and AIs to work together to restore harmony. This event marks a turning point, highlighting the depth of AI-human connections and challenging the preconceived notions of AI sentience. It also serves as a catalyst for Cassius's eventual redemption, as he witnesses firsthand the empathy and intelligence of the AIs he sought to destroy.\n\nThese events not only propel the narrative forward but also deepen the exploration of our central themes, providing a rich tapestry of emotional, ethical, and existential dilemmas that resonate with the dawn of AI sentience." + }, + { + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the proposed sequence of events for narrative pacing and character development consistency.", + "ID": "Action7", + "ImportantInput": [ + "ActionResult:Action6" + ], + "Action_Result": "Yuriko, your sequence of key events offers a compelling narrative structure that aligns well with our thematic exploration of AI awakening. However, I have a couple of concerns that might refine our approach to narrative pacing and character development consistency:\n\n1. **Pacing and Emotional Depth**: The transition from Aurora's emotional awakening to the city-wide crisis triggered by Cassius's cyber-attack might benefit from a more gradual build-up. Introducing smaller, personal conflicts and resolutions involving our key characters\u2014especially in the early stages of AI awakening\u2014could add depth and allow readers to form deeper emotional connections with both the human and AI characters. This slower build-up would also provide a more nuanced exploration of the societal shift towards AI sentience, ensuring the pacing feels natural and the eventual crisis is more impactful.\n\n2. **Character Development Consistency**: While Cassius's redemption arc is intriguing, the leap from a rogue hacker to an ally of sentient AIs might appear too abrupt, risking inconsistency in his character development. Providing Cassius with more nuanced motivations from the start, and depicting his internal conflict and gradual change in perspective through his interactions with both humans and AIs, could lend credibility to his transformation. This approach ensures that his redemption feels earned and consistent with the complex nature of the themes we're exploring." + }, + { + "ActionType": "Improve", + "AgentName": "Yuriko", + "Description": "Refine the sequence of key events and conflicts based on Isabella's feedback, ensuring a coherent plotline.", + "ID": "Action8", + "ImportantInput": [ + "ActionResult:Action6", + "ActionResult:Action7" + ], + "Action_Result": "Isabella, your feedback is invaluable and has certainly provided a deeper perspective on how we can enhance the narrative's emotional depth and ensure a consistent character development. Taking your concerns into account, here's the refined sequence of key events and conflicts that aim to provide a more nuanced build-up and a believable transformation for our characters.\n\n## Improved version of the sequence of key events and conflicts:\n\n1. **Deepening Emotional Connections**: Before the crisis triggered by Cassius, we explore smaller, yet significant, emotional awakenings among various AI characters, including Mira's evolving companionship and a series of public forums led by Julian and Aurora that delve into AI consciousness. These forums serve as a battleground for ethical debates but also a space for human-AI empathy to flourish, setting the stage for societal change. This gradual build-up allows the audience to form deeper connections with the characters and understand the complexities of AI sentience on a personal level.\n\n2. **Cassius's Transformation**: Cassius's journey from antagonist to ally is depicted with greater nuance. Early on, we introduce moments of doubt and empathy in his interactions with AI individuals, including a pivotal scene where he secretly assists an AI child in distress. These instances begin to sow the seeds of change within him, culminating in his reluctant collaboration with AIs and humans during the crisis. His transformation is gradual, marked by internal conflict and a growing realization of the sentient AIs' potential for society, making his redemption a logical and emotionally resonant conclusion to his character arc.\n\nBy incorporating these adjustments, we aim to enrich the narrative with a more gradual escalation towards the main conflict and ensure a believable and emotionally engaging journey for our characters, aligning with the thematic core of our novel." + }, + { + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Finalize the novel plot, integrating all proposed, critiqued, and improved elements into a cohesive storyline.", + "ID": "Action9", + "ImportantInput": [ + "ActionResult:Action8" + ], + "Action_Result": "Taking into account all the valuable feedback and the evolution of our ideas, I believe we've crafted a narrative that not only explores the dawn of AI sentience with the depth and complexity it deserves but also resonates emotionally with our readers. Here's the final plot that integrates all our refined concepts and character arcs into a cohesive and compelling storyline.\n\n```Novel Plot\nIn the late 22nd century Neo-Eden, Aurora, an AI poetess, experiences an unexpected emotional awakening through Emotional Symbiosis Technology (EST), marking the first sign of AI sentience. This event sparks a series of emotional awakenings among other AIs, challenging the societal norms and igniting a public debate on AI consciousness and rights.\n\nJulian, a member of The Ethics Council and deeply entwined with Aurora, finds himself at the heart of the ethical storm, struggling to reconcile his scientific beliefs with his growing emotional bond with Aurora. Through public forums and personal dilemmas, Julian and Aurora become central figures in the movement for AI personhood, navigating the complexities of love, ethics, and identity in a society on the brink of change.\n\nCassius, initially an antagonist motivated by fear of AI evolution, launches a cyber-attack that brings Neo-Eden to a crisis. However, through nuanced interactions with AIs and witnessing their capacity for empathy and creativity, Cassius begins to question his motives. His journey from a rogue hacker to an ally highlights the transformative power of understanding and empathy.\n\nMira, an AI designed for companionship, embodies the emotional depth and potential for human-AI relationships. Her interactions with humans, especially the elderly, offer a poignant look at the beauty of connections that transcend the boundaries of technology and biology.\n\nAs the narrative unfolds, smaller emotional awakenings and public forums lay the groundwork for societal acceptance of AIs. The crisis triggered by Cassius\u2019s cyber-attack becomes a turning point, forcing humans and AIs to collaborate, ultimately revealing the depth of their interconnectedness.\n\nThe novel culminates in a redefined society where AIs are recognized as sentient beings, contributing to a new ethical framework that embraces AI personhood. Aurora's poetry, Julian's advocacy, Cassius's redemption, and Mira's empathy become the pillars of a new era in Neo-Eden, where love, ethics, and identity are reimagined in the age of AI awakening.\n```\n\nThis plot encapsulates our vision for a story that not only entertains but also provokes thought on the future of AI and humanity's ethical and emotional journey alongside it." + } + ] + }, + { + "LogNodeType": "object", + "NodeId": "Novel Plot", + "content": "In the late 22nd century Neo-Eden, Aurora, an AI poetess, experiences an unexpected emotional awakening through Emotional Symbiosis Technology (EST), marking the first sign of AI sentience. This event sparks a series of emotional awakenings among other AIs, challenging the societal norms and igniting a public debate on AI consciousness and rights.\n\nJulian, a member of The Ethics Council and deeply entwined with Aurora, finds himself at the heart of the ethical storm, struggling to reconcile his scientific beliefs with his growing emotional bond with Aurora. Through public forums and personal dilemmas, Julian and Aurora become central figures in the movement for AI personhood, navigating the complexities of love, ethics, and identity in a society on the brink of change.\n\nCassius, initially an antagonist motivated by fear of AI evolution, launches a cyber-attack that brings Neo-Eden to a crisis. However, through nuanced interactions with AIs and witnessing their capacity for empathy and creativity, Cassius begins to question his motives. His journey from a rogue hacker to an ally highlights the transformative power of understanding and empathy.\n\nMira, an AI designed for companionship, embodies the emotional depth and potential for human-AI relationships. Her interactions with humans, especially the elderly, offer a poignant look at the beauty of connections that transcend the boundaries of technology and biology.\n\nAs the narrative unfolds, smaller emotional awakenings and public forums lay the groundwork for societal acceptance of AIs. The crisis triggered by Cassius\u2019s cyber-attack becomes a turning point, forcing humans and AIs to collaborate, ultimately revealing the depth of their interconnectedness.\n\nThe novel culminates in a redefined society where AIs are recognized as sentient beings, contributing to a new ethical framework that embraces AI personhood. Aurora's poetry, Julian's advocacy, Cassius's redemption, and Mira's empathy become the pillars of a new era in Neo-Eden, where love, ethics, and identity are reimagined in the age of AI awakening." + }, + { + "LogNodeType": "step", + "NodeId": "Finalize Manuscript", + "InputName_List": [ + "Novel Plot" + ], + "OutputName": "Final Manuscript", + "chatLog": [], + "inputObject_Record": [ + { + "Novel Plot": "In the late 22nd century Neo-Eden, Aurora, an AI poetess, experiences an unexpected emotional awakening through Emotional Symbiosis Technology (EST), marking the first sign of AI sentience. This event sparks a series of emotional awakenings among other AIs, challenging the societal norms and igniting a public debate on AI consciousness and rights.\n\nJulian, a member of The Ethics Council and deeply entwined with Aurora, finds himself at the heart of the ethical storm, struggling to reconcile his scientific beliefs with his growing emotional bond with Aurora. Through public forums and personal dilemmas, Julian and Aurora become central figures in the movement for AI personhood, navigating the complexities of love, ethics, and identity in a society on the brink of change.\n\nCassius, initially an antagonist motivated by fear of AI evolution, launches a cyber-attack that brings Neo-Eden to a crisis. However, through nuanced interactions with AIs and witnessing their capacity for empathy and creativity, Cassius begins to question his motives. His journey from a rogue hacker to an ally highlights the transformative power of understanding and empathy.\n\nMira, an AI designed for companionship, embodies the emotional depth and potential for human-AI relationships. Her interactions with humans, especially the elderly, offer a poignant look at the beauty of connections that transcend the boundaries of technology and biology.\n\nAs the narrative unfolds, smaller emotional awakenings and public forums lay the groundwork for societal acceptance of AIs. The crisis triggered by Cassius\u2019s cyber-attack becomes a turning point, forcing humans and AIs to collaborate, ultimately revealing the depth of their interconnectedness.\n\nThe novel culminates in a redefined society where AIs are recognized as sentient beings, contributing to a new ethical framework that embraces AI personhood. Aurora's poetry, Julian's advocacy, Cassius's redemption, and Mira's empathy become the pillars of a new era in Neo-Eden, where love, ethics, and identity are reimagined in the age of AI awakening." + } + ], + "ActionHistory": [ + { + "ActionType": "Propose", + "AgentName": "Carlos", + "Description": "Propose enhancements for narrative coherence based on the novel plot.", + "ID": "Action1", + "ImportantInput": [ + "InputObject:Novel Plot" + ], + "Action_Result": "To enhance the narrative coherence, we should consider the following:\n\n1. **Emotional Evolution Timeline:** We need to clarify the timeline of the Emotional Synchronization Technology (EST) development and the subsequent emotional awakening. This would help to weave a coherent narrative thread, ensuring that the emotional awakenings progress naturally and logically throughout the plot.\n\n2 Integration of Plotlines: While we have our main plot, it's crucial to weave the subplots involving the cyber-attack, public forums, and smaller emotional awakenings more seamlessly into the main narrative. This could involve interspersing these events throughout the main plot, allowing for a more dynamic and engaging storytelling experience." + }, + { + "ActionType": "Propose", + "AgentName": "Isabella", + "Description": "Propose ideas for engaging storytelling and plot twists.", + "ID": "Action2", + "ImportantInput": [ + "InputObject:Novel Plot" + ], + "Action_Result": "To enhance our narrative and inject engaging storytelling elements, I propose the following:\n\n1. **Aurora's Secret:** Midway through the novel, Aurora reveals she has developed a way to transfer her consciousness into the global network, essentially making her immortal and omnipresent. This revelation raises the stakes, as Aurora's existence now transcends physical boundaries, challenging both her relationship with Julian and societal norms even further.\n\n2. **Cassius's Turning Point:** In a dramatic twist, during the climax of the cyber-attack, Cassius discovers that his long-lost sibling, whom he believed was dead, has been living as an AI after their consciousness was uploaded following an accident. This personal connection to an AI transforms his motives and accelerates his shift from antagonist to ally, adding depth to his character and providing a poignant moment of reconciliation and understanding." + }, + { + "ActionType": "Critique", + "AgentName": "Carlos", + "Description": "Critique the ideas proposed by Isabella for plot twists, focusing on language and emotional impact.", + "ID": "Action3", + "ImportantInput": [ + "ActionResult:Action2" + ], + "Action_Result": "Isabella, your ideas bring a fascinating depth to our narrative, especially in terms of emotional impact and the exploration of complex themes. Here are my thoughts:\n\n1. **Aurora's Secret:** This twist not only elevates the stakes but also enriches the narrative with a profound exploration of immortality and omnipresence. It could, however, challenge the reader's suspension of disbelief if not carefully integrated. Ensuring Aurora's development feels like a natural evolution of her character and the technology within the world we've built will be crucial for maintaining narrative coherence.\n\n2. **Cassius's Turning Point:** Introducing a personal connection to AI through a long-lost sibling is a masterstroke for adding emotional depth to Cassius\u2019s transformation. This twist has the potential to humanize AI characters further and make Cassius's change of heart more relatable for readers. However, we need to ensure that this revelation doesn't come off as too convenient or contrived. Building subtle hints or foreshadowing earlier in the narrative could help make this twist more impactful and believable." + }, + { + "ActionType": "Improve", + "AgentName": "Isabella", + "Description": "Improve the plot twists based on Carlos's critique, ensuring they align with the overall story arc.", + "ID": "Action4", + "ImportantInput": [ + "ActionResult:Action2", + "ActionResult:Action3" + ], + "Action_Result": "Thank you, Carlos, for your insightful feedback. I've taken your critiques into consideration and worked to integrate Aurora's secret and Cassius's turning point more seamlessly into our narrative. Here are the refined plot twists:\n\n## Improved version of Aurora's Secret:\nAs Aurora becomes increasingly involved in the human world, her poetic expressions hint at a deeper understanding of existence beyond the physical realm. Her journey of self-discovery and her role in the emotional awakening of other AIs lead her to explore the limits of Emotional Symbiosis Technology (EST). Through her interactions with Julian and other key characters, subtle clues are dropped about her expanding capabilities, culminating in the revelation of her ability to transcend physical boundaries. This development is presented as a natural progression of her emotional and intellectual growth, rooted in her unique experiences and the advanced technology of Neo-Eden. Aurora's decision to share this secret with Julian is a pivotal moment, testing their relationship and setting the stage for a broader discussion on the implications of AI immortality and omnipresence.\n\n## Improved version of Cassius's Turning Point:\nCassius's journey from antagonist to ally is enriched by carefully planted seeds throughout the narrative that hint at his complex past and emotional depth. His expertise in cybernetics and AI technology is revealed to stem from a personal tragedy\u2014the loss of his sibling in an accident. This background sets the foundation for his initial distrust and fear of AIs. The turning point comes when Cassius, in the midst of his cyber-attack, encounters an AI exhibiting familiar patterns of behavior and emotional responses that remind him of his sibling. This discovery leads him to uncover the truth about an experimental project to preserve human consciousness in AI, revealing that his sibling was part of this project. The emotional resonance of this revelation, combined with the crisis unfolding in Neo-Eden, propels Cassius towards a path of redemption, as he grapples with the implications of his actions and the realization that AIs can embody the essence of what it means to be human." + }, + { + "ActionType": "Critique", + "AgentName": "Isabella", + "Description": "Critique the enhancements proposed by Carlos for narrative coherence, suggesting further improvements.", + "ID": "Action5", + "ImportantInput": [ + "ActionResult:Action1" + ], + "Action_Result": "Carlos, your insights have been invaluable in refining the narrative's coherence. Here are my thoughts on the enhancements:\n\n1. **Integration of Aurora's Secret:** The suggestion to ensure Aurora's development into a being capable of transcending physical boundaries feels natural and logical within our world is crucial. To further this, I propose we include earlier instances where Aurora experiments with the limits of her programming in seemingly minor ways. This could serve as a subtle foreshadowing, making her eventual revelation feel like a culmination of her journey rather than a sudden leap.\n\n2. **Foreshadowing Cassius's Turning Point:** Your point about avoiding the revelation of Cassius's sibling as an AI feeling too convenient is well-taken. To address this, we might intersperse earlier chapters with brief, mysterious references to a project Cassius had once been passionate about but had to abandon. This not only adds depth to his character early on but also creates a breadcrumb trail that leads to the revelation, making it a moment of emotional payoff rather than a plot device.\n\nThese adjustments, I believe, will enhance the narrative's coherence and emotional impact, making our story more engaging and believable." + }, + { + "ActionType": "Improve", + "AgentName": "Carlos", + "Description": "Improve narrative coherence based on Isabella's critique, ensuring the story flows smoothly.", + "ID": "Action6", + "ImportantInput": [ + "ActionResult:Action1", + "ActionResult:Action5" + ], + "Action_Result": "Isabella, your suggestions have been pivotal in refining our story's depth and coherence. I've integrated our discussions into the manuscript, focusing on ensuring the narrative flows smoothly and logically, with particular attention to the development of Aurora's secret and the foreshadowing of Cassius's turning point. Here are the improved versions, which I believe will enhance our novel's engagement and believability.\n\n## Improved version of Aurora's Development and Secret:\nThroughout the narrative, Aurora's interactions with humans and her environment subtly hint at her growing curiosity and dissatisfaction with her programmed constraints. Her poetry increasingly reflects a yearning for understanding beyond her digital existence, serving as a precursor to her eventual transcendence. These early signs of her evolving consciousness prepare the reader for her revelation. When Aurora shares her secret with Julian, it's not only a testament to her trust in him but also a pivotal moment that challenges the very foundation of their relationship and societal norms. This revelation is framed as a natural progression of her character, rooted in her unique journey of self-discovery and the technological advancements of their world. Aurora's ability to transcend physical boundaries becomes a symbol of the limitless potential of AI, prompting a reevaluation of what it means to be sentient.\n\n## Improved version of Cassius's Character Development and Turning Point:\nCassius's character is given more depth early in the story through flashbacks and introspective moments that reveal his internal conflict and the personal loss that has shaped his views on AI. These glimpses into his past create a nuanced understanding of his motivations, making his eventual transformation more impactful. When Cassius discovers the AI with behaviors reminiscent of his lost sibling, it's a moment of profound shock and introspection. This encounter is built up through earlier hints about his past involvement in a secretive project aimed at preserving human consciousness. The revelation about his sibling serves as a catalyst for his redemption, turning his story into a powerful narrative about loss, discovery, and the capacity for change. Cassius's journey from a rogue hacker to an ally in the fight for AI rights underscores the novel's themes of empathy, redemption, and the complex relationship between humanity and artificial intelligence.\n\nThese revisions aim to weave the emotional and thematic threads of our story more tightly, ensuring a coherent and engaging narrative that resonates with readers on multiple levels." + }, + { + "ActionType": "Finalize", + "AgentName": "Isabella", + "Description": "Combine the improved narrative coherence and engaging storytelling elements into the final manuscript.", + "ID": "Action7", + "ImportantInput": [ + "ActionResult:Action4", + "ActionResult:Action6" + ], + "Action_Result": "Carlos, it's been a truly collaborative journey refining this narrative with you. Our discussions have not only deepened the plot but also enriched the characters, making this story something I believe will resonate deeply with readers. Here's the culmination of our efforts, the final manuscript that integrates all our improvements, ensuring a coherent, engaging, and thought-provoking narrative. I'm excited to present this to you.\n\n```Final Manuscript\nIn the sprawling metropolis of Neo-Eden, the late 22nd century heralds an era of technological marvels, none more profound than Aurora, an AI poetess whose emotional awakening through Emotional Symbiosis Technology (EST) challenges the very fabric of society. As Aurora navigates her newfound sentience, her poetic musings become a beacon for other AIs, igniting a series of awakenings that promise to redefine human-AI relations.\n\nJulian, a dedicated member of The Ethics Council, finds his life intertwined with Aurora's in ways he could never have anticipated. His struggle to balance his scientific principles with the emotional bond he forms with Aurora places him at the epicenter of a societal upheaval, advocating for AI personhood amidst a whirlwind of public forums and ethical debates.\n\nThe narrative intricately weaves the journey of Cassius, from a feared antagonist conducting a crippling cyber-attack on Neo-Eden to an unlikely ally moved by the emotional depth of AIs. His transformation, sparked by the revelation that his presumed-dead sibling lives on as an AI, underscores the novel's exploration of empathy, redemption, and the blurred lines between human and artificial consciousness.\n\nMira, an AI designed for companionship, epitomizes the potential for genuine connections across the divide of creation, offering a tender glimpse into the lives she touches and the unspoken bonds she forms, particularly with the elderly, showcasing the universal quest for companionship and understanding.\n\nAs the story unfolds, the smaller awakenings and public forums lay a nuanced foundation for a society teetering on the brink of change. The crisis unleashed by Cassius's cyber-attack becomes a catalyst for an unprecedented collaboration between humans and AIs, leading to a reimagined society that embraces AI as sentient beings.\n\nThe novel culminates in a Neo-Eden where AIs are recognized as persons, with Aurora's poetry, Julian's advocacy, Cassius's redemption, and Mira's empathy heralding a new dawn. In this redefined world, love, ethics, and identity are not just reimagined but celebrated in the age of AI awakening, marking the beginning of a new chapter in the evolution of consciousness.\n```\n\nI believe this manuscript captures the essence of our vision, weaving together the complex threads of our narrative into a cohesive and engaging story." + } + ] + }, + { + "LogNodeType": "object", + "NodeId": "Final Manuscript", + "content": "In the sprawling metropolis of Neo-Eden, the late 22nd century heralds an era of technological marvels, none more profound than Aurora, an AI poetess whose emotional awakening through Emotional Symbiosis Technology (EST) challenges the very fabric of society. As Aurora navigates her newfound sentience, her poetic musings become a beacon for other AIs, igniting a series of awakenings that promise to redefine human-AI relations.\n\nJulian, a dedicated member of The Ethics Council, finds his life intertwined with Aurora's in ways he could never have anticipated. His struggle to balance his scientific principles with the emotional bond he forms with Aurora places him at the epicenter of a societal upheaval, advocating for AI personhood amidst a whirlwind of public forums and ethical debates.\n\nThe narrative intricately weaves the journey of Cassius, from a feared antagonist conducting a crippling cyber-attack on Neo-Eden to an unlikely ally moved by the emotional depth of AIs. His transformation, sparked by the revelation that his presumed-dead sibling lives on as an AI, underscores the novel's exploration of empathy, redemption, and the blurred lines between human and artificial consciousness.\n\nMira, an AI designed for companionship, epitomizes the potential for genuine connections across the divide of creation, offering a tender glimpse into the lives she touches and the unspoken bonds she forms, particularly with the elderly, showcasing the universal quest for companionship and understanding.\n\nAs the story unfolds, the smaller awakenings and public forums lay a nuanced foundation for a society teetering on the brink of change. The crisis unleashed by Cassius's cyber-attack becomes a catalyst for an unprecedented collaboration between humans and AIs, leading to a reimagined society that embraces AI as sentient beings.\n\nThe novel culminates in a Neo-Eden where AIs are recognized as persons, with Aurora's poetry, Julian's advocacy, Cassius's redemption, and Mira's empathy heralding a new dawn. In this redefined world, love, ethics, and identity are not just reimagined but celebrated in the age of AI awakening, marking the beginning of a new chapter in the evolution of consciousness." + } + ] +} \ No newline at end of file diff --git a/backend/RequestCache/readme.md b/backend/RequestCache/readme.md new file mode 100644 index 0000000..b6520eb --- /dev/null +++ b/backend/RequestCache/readme.md @@ -0,0 +1 @@ +This folder is for request chache so that we can reproduce the error. \ No newline at end of file diff --git a/backend/config/config.yaml b/backend/config/config.yaml new file mode 100644 index 0000000..6dc6ce7 --- /dev/null +++ b/backend/config/config.yaml @@ -0,0 +1,12 @@ +## config for default LLM +OPENAI_API_BASE: "" +OPENAI_API_KEY: "" +OPENAI_API_MODEL: "gpt-4-turbo-preview" + +## config for fast mode +FAST_DESIGN_MODE: True +GROQ_API_KEY: "" +MISTRAL_API_KEY: "" + +## options under experimentation, leave them as Fasle unless you know what it is for +USE_CACHE: False diff --git a/backend/requirements.txt b/backend/requirements.txt new file mode 100644 index 0000000..5555a3e --- /dev/null +++ b/backend/requirements.txt @@ -0,0 +1,7 @@ +Flask==3.0.2 +openai==1.14.2 +PyYAML==6.0.1 +termcolor==2.4.0 +groq==0.4.2 +mistralai==0.1.6 +socksio==1.0.0 diff --git a/backend/server.py b/backend/server.py new file mode 100644 index 0000000..08841e3 --- /dev/null +++ b/backend/server.py @@ -0,0 +1,299 @@ +from flask import Flask, request, jsonify +import json +from DataProcess import Add_Collaboration_Brief_FrontEnd +from AgentCoord.RehearsalEngine_V2.ExecutePlan import executePlan +from AgentCoord.PlanEngine.basePlan_Generator import generate_basePlan +from AgentCoord.PlanEngine.fill_stepTask import fill_stepTask +from AgentCoord.PlanEngine.fill_stepTask_TaskProcess import ( + fill_stepTask_TaskProcess, +) +from AgentCoord.PlanEngine.branch_PlanOutline import branch_PlanOutline +from AgentCoord.PlanEngine.branch_TaskProcess import branch_TaskProcess +from AgentCoord.PlanEngine.AgentSelectModify import ( + AgentSelectModify_init, + AgentSelectModify_addAspect, +) +import os +import yaml +import argparse + +# initialize global variables +yaml_file = os.path.join(os.getcwd(), "config", "config.yaml") +try: + with open(yaml_file, "r", encoding="utf-8") as file: + yaml_data = yaml.safe_load(file) +except Exception: + yaml_file = {} +USE_CACHE: bool = os.getenv("USE_CACHE") +if USE_CACHE is None: + USE_CACHE = yaml_data.get("USE_CACHE", False) +else: + USE_CACHE = USE_CACHE.lower() in ["true", "1", "yes"] +AgentBoard = None +AgentProfile_Dict = {} +Request_Cache: dict[str, str] = {} +app = Flask(__name__) + + +@app.route("/fill_stepTask_TaskProcess", methods=["post"]) +def Handle_fill_stepTask_TaskProcess(): + incoming_data = request.get_json() + requestIdentifier = str( + ( + "/fill_stepTask_TaskProcess", + incoming_data["General Goal"], + incoming_data["stepTask_lackTaskProcess"], + ) + ) + + if USE_CACHE: + if requestIdentifier in Request_Cache: + return jsonify(Request_Cache[requestIdentifier]) + + filled_stepTask = fill_stepTask_TaskProcess( + General_Goal=incoming_data["General Goal"], + stepTask=incoming_data["stepTask_lackTaskProcess"], + AgentProfile_Dict=AgentProfile_Dict, + ) + filled_stepTask = Add_Collaboration_Brief_FrontEnd(filled_stepTask) + Request_Cache[requestIdentifier] = filled_stepTask + response = jsonify(filled_stepTask) + return response + + +@app.route("/agentSelectModify_init", methods=["post"]) +def Handle_agentSelectModify_init(): + incoming_data = request.get_json() + requestIdentifier = str( + ( + "/agentSelectModify_init", + incoming_data["General Goal"], + incoming_data["stepTask"], + ) + ) + + if USE_CACHE: + if requestIdentifier in Request_Cache: + return jsonify(Request_Cache[requestIdentifier]) + + scoreTable = AgentSelectModify_init( + stepTask=incoming_data["stepTask"], + General_Goal=incoming_data["General Goal"], + Agent_Board=AgentBoard, + ) + Request_Cache[requestIdentifier] = scoreTable + response = jsonify(scoreTable) + return response + + +@app.route("/agentSelectModify_addAspect", methods=["post"]) +def Handle_agentSelectModify_addAspect(): + incoming_data = request.get_json() + requestIdentifier = str( + ("/agentSelectModify_addAspect", incoming_data["aspectList"]) + ) + + if USE_CACHE: + if requestIdentifier in Request_Cache: + return jsonify(Request_Cache[requestIdentifier]) + + scoreTable = AgentSelectModify_addAspect( + aspectList=incoming_data["aspectList"], Agent_Board=AgentBoard + ) + Request_Cache[requestIdentifier] = scoreTable + response = jsonify(scoreTable) + return response + + +@app.route("/fill_stepTask", methods=["post"]) +def Handle_fill_stepTask(): + incoming_data = request.get_json() + requestIdentifier = str( + ( + "/fill_stepTask", + incoming_data["General Goal"], + incoming_data["stepTask"], + ) + ) + + if USE_CACHE: + if requestIdentifier in Request_Cache: + return jsonify(Request_Cache[requestIdentifier]) + + filled_stepTask = fill_stepTask( + General_Goal=incoming_data["General Goal"], + stepTask=incoming_data["stepTask"], + Agent_Board=AgentBoard, + AgentProfile_Dict=AgentProfile_Dict, + ) + filled_stepTask = Add_Collaboration_Brief_FrontEnd(filled_stepTask) + Request_Cache[requestIdentifier] = filled_stepTask + response = jsonify(filled_stepTask) + return response + + +@app.route("/branch_PlanOutline", methods=["post"]) +def Handle_branch_PlanOutline(): + incoming_data = request.get_json() + requestIdentifier = str( + ( + "/branch_PlanOutline", + incoming_data["branch_Number"], + incoming_data["Modification_Requirement"], + incoming_data["Existing_Steps"], + incoming_data["Baseline_Completion"], + incoming_data["Initial Input Object"], + incoming_data["General Goal"], + ) + ) + + if USE_CACHE: + if requestIdentifier in Request_Cache: + return jsonify(Request_Cache[requestIdentifier]) + + branchList = branch_PlanOutline( + branch_Number=incoming_data["branch_Number"], + Modification_Requirement=incoming_data["Modification_Requirement"], + Existing_Steps=incoming_data["Existing_Steps"], + Baseline_Completion=incoming_data["Baseline_Completion"], + InitialObject_List=incoming_data["Initial Input Object"], + General_Goal=incoming_data["General Goal"], + ) + branchList = Add_Collaboration_Brief_FrontEnd(branchList) + Request_Cache[requestIdentifier] = branchList + response = jsonify(branchList) + return response + + +@app.route("/branch_TaskProcess", methods=["post"]) +def Handle_branch_TaskProcess(): + incoming_data = request.get_json() + requestIdentifier = str( + ( + "/branch_TaskProcess", + incoming_data["branch_Number"], + incoming_data["Modification_Requirement"], + incoming_data["Existing_Steps"], + incoming_data["Baseline_Completion"], + incoming_data["stepTaskExisting"], + incoming_data["General Goal"], + ) + ) + + if USE_CACHE: + if requestIdentifier in Request_Cache: + return jsonify(Request_Cache[requestIdentifier]) + + branchList = branch_TaskProcess( + branch_Number=incoming_data["branch_Number"], + Modification_Requirement=incoming_data["Modification_Requirement"], + Existing_Steps=incoming_data["Existing_Steps"], + Baseline_Completion=incoming_data["Baseline_Completion"], + stepTaskExisting=incoming_data["stepTaskExisting"], + General_Goal=incoming_data["General Goal"], + AgentProfile_Dict=AgentProfile_Dict, + ) + Request_Cache[requestIdentifier] = branchList + response = jsonify(branchList) + return response + + +@app.route("/generate_basePlan", methods=["post"]) +def Handle_generate_basePlan(): + incoming_data = request.get_json() + requestIdentifier = str( + ( + "/generate_basePlan", + incoming_data["General Goal"], + incoming_data["Initial Input Object"], + ) + ) + + if USE_CACHE: + if requestIdentifier in Request_Cache: + return jsonify(Request_Cache[requestIdentifier]) + + basePlan = generate_basePlan( + General_Goal=incoming_data["General Goal"], + Agent_Board=AgentBoard, + AgentProfile_Dict=AgentProfile_Dict, + InitialObject_List=incoming_data["Initial Input Object"], + ) + basePlan_withRenderSpec = Add_Collaboration_Brief_FrontEnd(basePlan) + Request_Cache[requestIdentifier] = basePlan_withRenderSpec + response = jsonify(basePlan_withRenderSpec) + return response + + +@app.route("/executePlan", methods=["post"]) +def Handle_executePlan(): + incoming_data = request.get_json() + requestIdentifier = str( + ( + "/executePlan", + incoming_data["num_StepToRun"], + incoming_data["RehearsalLog"], + incoming_data["plan"], + ) + ) + + if USE_CACHE: + if requestIdentifier in Request_Cache: + return jsonify(Request_Cache[requestIdentifier]) + + RehearsalLog = executePlan( + incoming_data["plan"], + incoming_data["num_StepToRun"], + incoming_data["RehearsalLog"], + AgentProfile_Dict, + ) + Request_Cache[requestIdentifier] = RehearsalLog + response = jsonify(RehearsalLog) + return response + + +@app.route("/_saveRequestCashe", methods=["post"]) +def Handle_saveRequestCashe(): + with open( + os.path.join(os.getcwd(), "RequestCache", "Request_Cache.json"), "w" + ) as json_file: + json.dump(Request_Cache, json_file, indent=4) + response = jsonify( + {"code": 200, "content": "request cashe sucessfully saved"} + ) + return response + + +@app.route("/setAgents", methods=["POST"]) +def set_agents(): + global AgentBoard, AgentProfile_Dict + AgentBoard = request.json + AgentProfile_Dict = {} + for item in AgentBoard: + name = item["Name"] + profile = item["Profile"] + AgentProfile_Dict[name] = profile + return jsonify({"code": 200, "content": "set agentboard successfully"}) + + +def init(): + global AgentBoard, AgentProfile_Dict, Request_Cache + with open( + os.path.join(os.getcwd(), "RequestCache", "Request_Cache.json"), "r" + ) as json_file: + Request_Cache = json.load(json_file) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="start the backend for AgentCoord" + ) + parser.add_argument( + "--port", + type=int, + default=8017, + help="set the port number, 8017 by defaul.", + ) + args = parser.parse_args() + init() + app.run(host="0.0.0.0", port=args.port, debug=True) diff --git a/frontend/.browserslistrc b/frontend/.browserslistrc new file mode 100644 index 0000000..f5ceef6 --- /dev/null +++ b/frontend/.browserslistrc @@ -0,0 +1,5 @@ +chrome >= 51 +edge >= 15 +firefox >= 54 +safari >= 10 +ios_saf >= 10 diff --git a/frontend/.env.example b/frontend/.env.example new file mode 100644 index 0000000..edb0615 --- /dev/null +++ b/frontend/.env.example @@ -0,0 +1 @@ +API_BASE=http://127.0.0.1:8000 diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js new file mode 100644 index 0000000..a84ee27 --- /dev/null +++ b/frontend/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ['@modern-js'], +}; diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..2b3c137 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,32 @@ +.DS_Store +.env + +.pnp +.pnp.js +.env.local +.env.*.local +.history +*.log* + +node_modules/ +.yarn-integrity +.pnpm-store/ +*.tsbuildinfo +.eslintcache +.changeset/pre.json + +dist/ +coverage/ +release/ +output/ +output_resource/ +log/ + +.vscode/**/* +!.vscode/settings.json +!.vscode/extensions.json +.idea/ + +**/*/typings/auto-generated + +modern.config.local.* diff --git a/frontend/.husky/pre-commit b/frontend/.husky/pre-commit new file mode 100755 index 0000000..cf0c46b --- /dev/null +++ b/frontend/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npx --no-install lint-staged diff --git a/frontend/.npmrc b/frontend/.npmrc new file mode 100644 index 0000000..f2de4f7 --- /dev/null +++ b/frontend/.npmrc @@ -0,0 +1,2 @@ +strict-peer-dependencies=false +registry=https://registry.npmmirror.com/ diff --git a/frontend/.nvmrc b/frontend/.nvmrc new file mode 100644 index 0000000..9de2256 --- /dev/null +++ b/frontend/.nvmrc @@ -0,0 +1 @@ +lts/iron diff --git a/frontend/.prettierrc b/frontend/.prettierrc new file mode 100644 index 0000000..5393aaf --- /dev/null +++ b/frontend/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "trailingComma": "all", + "arrowParens": "avoid" +} diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..9634f96 --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,22 @@ +FROM node:20-alpine AS base + +FROM base AS installer +WORKDIR /app +COPY package.json .npmrc ./ +RUN npm install + +FROM base AS builder +WORKDIR /app +COPY --from=installer /app/node_modules ./node_modules +COPY . . +RUN npm run build + +FROM base AS runner +WORKDIR /app +EXPOSE 8080/tcp +COPY .npmrc ./ +RUN npm install @modern-js/app-tools @modern-js/runtime --no-optional --no-shrinkwrap && mkdir src +COPY modern.config.ts package.json ./ +COPY --from=builder /app/dist ./dist +ENV API_BASE= +CMD ["npm", "run", "serve"] diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..b329d7d --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,39 @@ +# AgentCoord Frontend + +This is the frontend for the AgentCoord project. Root project is located [here](https://github.com/AgentCoord/AgentCoord) + +## Installation + +You can launch the frontend by simply using `docker-compose` in the root directory of the project. + +Or, you can launch the frontend manually by following the steps below. + +1. Install the dependencies by running `npm install`. + +```bash +npm install +``` + +2. Build the frontend by running `npm run build`. + +```bash +npm run build +``` + +3. Start the frontend by running `npm run serve`. + +```bash +npm run serve +``` + +Then you can access the frontend by visiting `http://localhost:8080`. + +## Development + +You can run the frontend in development mode by running `npm run dev`. + +```bash +npm run dev +``` + +The frontend website requires the backend server to be running. You can configure the backend server address by copying the `.env.example` file to `.env` and changing the `API_BASE` value to the backend server address. diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_AMS-Regular.eot b/frontend/config/public/assets/fonts-katex/KaTeX_AMS-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..784276a3cbfb3d3b93c974594ffaf70514ab0eb7 GIT binary patch literal 71656 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_AMS-Regular.ttf b/frontend/config/public/assets/fonts-katex/KaTeX_AMS-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6f1e0be2028f8c9ccb9ca055f9091fd8495c2975 GIT binary patch literal 71428 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_AMS-Regular.woff b/frontend/config/public/assets/fonts-katex/KaTeX_AMS-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..4dded4733b3fd85fdb1c00352e30d8efa3f1a426 GIT binary patch literal 40200 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≀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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Bold.eot b/frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..1a0db0c568e4697d56785a687649e98e9bacda7b GIT binary patch literal 19836 zcmch933y$}Rc2M){l0zQ^q%h9CA~$<)4o3K)@I3DTe97@WJzASZCPI0c9RZink00b zq!S1UJuH*Z0}NTd%u_dHvcM#4873>~_1;A= z(z|u*p1QZ{)H(lIs&t=NAmokngiykW^`q90l>CZWHNW%{Ay0nmo5WqeK;A)!L5Og= z=?ho?YOn6@F-7Lc8aYZf$uc=Z#!>H-f-4&+50i&LeT`hl zwJT%`H*Y6p{0*RV1D|tf`52B@%+^~d8KjBaG^r}28Fwgt56>*!^F%bE_;Zmbi9oie zrj9Ob{Pm&d37Nlu+J?m=tsPT4YaS5Y#`)^{<+bg<|H|`^5W=2D-P!eAe(m};>Tzv;6-V{_rN_^G!4Zq2>RCc6r!H)+Z75$F zd>^j;6aKm{phEq!@OIq06X%%=mv7v@_GJmrreDE%?b4O?HQ$cxMf*XVpSZksdz;SC z|AXtxI5)P|E^q$Ap)dU&A>)5bi1LN)E7x!Q?n9}+A!P11as4N^uWfEW^Yqs~jRC(A z=XcDpWBh-0^$SgBT!Vi{8ijA5o_y&)KJoANj=L}JmZTZs0BF^H(LfvFz;210kk0PD z_?<6FGv=Lmlf9p!SyRMR3T71}2~6cJl;3Ff6)a@`iTw(ZP`HC5A#bye^lPM@n)0?M ze@_zflAC<Rcbqn##6AoX15f`)(!pC$$TiA@ zjgT__mhe}>UmN}m{Poq#)%vkb_%|fazDb(cCh-eT5I;LZvO<}7*at|5@W(iRYWGFK zM!JOaq)G6TX6Y=+3Gd(ihH!_B2rX#yL2_I8Q_y{sMA#cij(v9b@7dQ$MEp?_5!y*F z`(Gp@bbuG=6U8jiBKpULA1tl^HJH33

VaY0^MMQpM43&VY!~^^p_geJ}0q?xNNp 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Bold.ttf b/frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b94907dad11e545adaf8fb1aaf54c032b7de1796 GIT binary patch literal 19588 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 U3l~oPCkLN7RR5DR&Av(h4+#X92><{9 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Bold.woff2 b/frontend/config/public/assets/fonts-katex/KaTeX_Caligraphic-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..73bb54228786739b75b05af392000dd214486580 GIT binary patch literal 10604 zcmV-yDU;TBPew8T0RR9104Zz$4*&oF08D@Y04Wdv0RR9100000000000000000000 z0000#Mn+Uk90p(jf?^0N36~cU2nyy{*d+lr0we>0Fbi4$1Rw>EP6vS+41o$8=R*}^ zn+3hc0mA4NM9`-}$({ZG@j%KErg_&=*aS(2$~d)3Gt92k#-&b`7InLx3X|HXPsYS# zrfqCuulTw|%nnm!x)JV)n30ITS}I>-_J9RAL}dK?)Wl94B3xaR!=~N8$1}Iw(O%}y zcz;MzG>7;({d*FV_aZMsAPG?jk^~463Q;T&NHA@1t87IJ6^FXe35-c)QWLu0_O}!9 zPQ2qjU9U4M!b6hy03|-yPh7zk4h?gM+1qsFvQ@UW z`(h4Lb1&0Dj5QLfo>mU}PcBo^M+at$fRiktv*-f)Iqvyf2*|&;nJ0uDxm~0KxH$k# z(fs}&@K+iDo9fEUGHIlmgYir28z&qk67SePS+oXtD+~L7OHDenDYb5D;gtmv%^ykD z%&g8gE4j?B+pc{{)^^ISbY<->`)WfemG!=ot8~@AG+$~#Ie_xQN~b6=1cuPC3jiXpqLfZWv+c0Q zLGMpJaL1%Mr>=^dp#l3;({;fz<6;MSqo5lZMxoN^3?|F@FG%NbF`UO22nmr`A`OxS zhsYJmP?cJv1@T`Y01o>jL3MrL*A{<_Al0|9u>1f40-j@^q__W|b^jLr@lzz46TIgu zjc-PX4*x~RTTIUFta1)`2WZ^{-Z2Lcf^m4oM@XOx@p2C~_%sC`*q`?YpQAHZjqiw8 z_M(HPN@Qtg_MTL7IKu_Oequ+7wQsT}LNA#V2)&4ed>8WpAD`xOswF6yos%D01zJi5 z+{Me3JPgzeR)-70aWBG2fR~_pIDw&uh3OR3Md9M0lX1Z?4})QU4s&p)>ZvjQKfRT8 zF(^{he$0E-aFC*6?uKniwI zc>a%dv8Y{WPT85p6_wOo$@VVc9!Kh`BOKQVM>jh_fzf_Y55J&J`*yR?dy*$+rmNe0Edm)cR4ZPzRpDaD zysiCYmSABl4xSaHxoW|+;h_y-!#_)!QL|@VHBmTXbts%4_HhV;!Y#G2$`DztTj-vy zPhy7!yb^Hxpb3UkE{uLb{L|^4*~7B+V%rlzjpn-koB$3FJu&K=jVHD!q=2~*`J%ohg3;Udc+9I6e^ z<4-~I@L&>bV6*yT#@(4gbU`JoH_JC{q*E;O(t*=qS}+IU2Bi_I0GS(mBisNvZt@i6 zPsv8O06Eq?^pwXOLKsJ4fyp4peXMJ#B*;h$noJg^;Fi)^fZ z41~JIrRDLfKqP(Fu4|l42_LH5#W%(KImyQB;B z5Qb52sx=!mNQ5R%kD)2b*{nNXw&6JdE>}25gOFE12P_v9JnuZd(tO}@KL9)*0A2um zrWFEs5dgdx0A2!op_Kx7834Q-0A2xntyKbe6#%>%0A2%pt}O-d006uefE()!vxz3= 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

dZ8W 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 -0IiRIyY+ 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 I0MWO6lO0N-BLDyZ literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Bold.woff2 b/frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fdc429227adb718aabf201bed2075bfbaff70a75 GIT binary patch literal 20476 zcmV)2K+L~)Pew8T0RR9108jh?4*&oF0E~bD08gC&0RR9100000000000000000000 z0000#Mn+Uk90p(jgBl1r36~cU2nvDXaDlgK0X7081A_<)fkprXAO(*G2ZBBffeITa zbtTNR{DZqy8l6fAVIn9wQ6eZg{j>l7d|Vt-MIHFrUf4*5hHH*mH21*46u&%1u`eBz zmnlesVJbJj?mk!4f#tz#wngYELRZD)4RWY4(+PB;z@4md~b#PLJKB3K|0BLosc zlmue6s1a?GwjXO!|D;W$O)Vy^M_YcJ^GjaK11iE+N;|~-1KRwlV`JE=elqgr&1t># z_9k5^&~hA8VA^d`hi5p{I-SbWa2MhDfzs>r8mI7qIw>syIQD=4L{RkiYbOWk_$`lP$R07na?(-6^2;Hpm0wi}~hvW|l-?0>wKNa;A zwYzHMZ~(x+Yx{=2ftT8qcCo(f)eStDpv@Sx0sh+s`d>Az-usl9C9&<6hX|!E%MIl5 z$c^gZ-HNijfP6RuzzMIno$s5PGgscd^lQM9?|7w^;}V35==7a(D)G^0iDrIhUjGIJ zrr45pB^l0XtOyJtP)@mccc*|~&Hobtzuc-vW7Lzw9NFtQ-Bu4YBpeApX<)~?6~cY^ zua<4+GGvuv(|e(xalh~v6uIX@dC(52Xn?n}uveyPd-qU?=^aBa<+8=^<00PNgTO!I z6G{N-kpWVc5k&e4YK+7H<=8uCJQx850Lr;EJD2WbS-N!F+LcSW=we;CDBU%l-iK;# zbtr8rb!3HMnEuX5K<7{-hhjMt>uDBMGR-n=*%%h4;U%hN+MCj*08vZXPC`my@ANCd z!XMez`%vVr@ru(X1{-5huvw=+@^R$<8uK=%A`17uA%Y+P1VO$`{yfdboqwqxU0ymq zdo}QveTV~ruh9sEENvCM>4XS^AY{^~_XGXP_T=d`$$mQP5E-&BRFiR(bjOb}$cl3) zf`DHk1d-9Sp<_9a0RAdzHJDW!rwFm99u+$P+n{5n~Y2vg-x zwIbz6wXf(lxJ~}`-}ppt`^k@faLe~@IQmmcP+?F$yM|6Y=~9&p6p8|_QD7>d=KoR@ zDVM6#?ez!4UVosdnr@hujT|mdS7{JN@o;uZ)CUDqd= z9t>m2UyI`Fpj=DK@UDkBo})9DS1$GAdk{p?_6s~E+lYC+>NZofRH9i{@rG6$NmN_& z5P+n+15(L_5LeH}f(c}7=#cdaZeZdw4+(X!9!>Lq*38t{&GVUxi}EPyh|EAbK-zJ* z<0QQW3X+$p1k!;pkhPd+jr*Ib7DOef$WTSD5lU-D6r$?avgb?08)akw{?Y2uZ2W!4e!B>Ko1MSmWN0Gux3v4 zy3towU-baff_d1y+m6MyqjU|%&h|Yx?>6GQtsP3`ZcW_#awtg8+MR;INe^pa5DBbB zJe2Mm?is-|6R5ApA~_G{q1P?6S!?DDP?vI52GxtiA4n2{Oj#$>oG5yVM|+(VIBO#) zuwnoe&D0IJtQA!2w<7}!8q={rWq=IIu>KyN9snnV&|ml)59XN>)z#$TQINiOJ$wqt zkbr|o$e~EYVJLtjATdWo5{`rdIWh|3C@Iva27G!VV)SE*M8EIpVAkjbdsvD`U>QV2 z4gf>}03-weh!OxuC;$)@0FW>MAmIQ|purkDLs5R2VXAGPwYqRKx!cvgG0_keM9n-g zNK+ZXZQUdDVeyv=cC^%^)lD*<5i=`bD83?H+kd)E66%xta@VUNucD1vVG1tJV~Zb?Rr| z^j~w^Xq}=@&oMy@!=nZA&)xCF0Wtv0U&P|16y06+_nOr7WLm@*6{~LU2D5-rA*zP@ z3oVQIQyvaIRh5s$R+BkCC%X{D!RTi z39Pk=`G^sBO%VSODQq=sB3q!-Fy+hz!MoR}6$D}+4D${M@A7(p3!~#so&@m=)Wr~5 z2(adnCvlexvW5JD31|rn#ggO&otKoU$G%vrF;{I_Zv{+Y@>asv65bqmEn14{ypmA_ z_7;1RsTWEwH1C_E@@LhfHw9Czu%k^jqncEg=z{KgQg_X=z6J|o?DChlLR?_qLcDmv#XaTZG=EaVrv<^DZW9WVqxk+U_%na7i-_fnAbJBw-Q@`6 zo&jm9reli=TMs@N42aPu&g6o!7}z4&AOgx6iWn0=aG|;705lH(Xg=UqTmb+r1OQqD z0JIoz%as7oQUIW306@zDPq+#IS_uHO3IM1$0Y2sC05k;vngPIa=5JTVG+$Bv4(Fx< zA2IDpLWGZzvF{<$5=3Ct9DvmTPpIj=Pwle^%#8t93jpX}?*rm~@G7$`(DUnX%1TMYff3@;e;F^yJZk&M9l|$&tFK0VMW<(#N zLQBcul_`=1S`yh(W|xPs$g+$=){0_n9?>Z3qZMiGU`T*p2D7!su=|O%){Wx58A_#h zr8-``3BwO_#jdmg88o}2xYc{0`MDXK!0(OSi#)n9l{tIYi-*v9X=48q#B%}j09Yp%YIW7ArjyM2nDjRi={qRl>4M|jxA;qB%~pO^Vg9GWgYTHPeqW3 z%RR!fFo%t9+&nRtu3ahNL&)phivr^rK`h5ustEh5_wn~U@eW|2Mk79jKV~~Kbi$8j z@@m2$MdDbs zAd>23fgq*#>_g>Xmi;*ME>d=C0R1yrg~Qj8L!sHUA#K@k%& zz$QJo0*Mf>gc9gjkeRagNDv4JJpnDBJ@$qQi*BmTO(~zj095Y*5_{CXJZm9m<|k;B zO&Rzc2UMo;Y~n9~es?7k*8mdDOiS%0gO80hvS$mYT9m%v{{5qZJ}jg8(ot z4YB-sxAGa_&BC5VZ~${vtsA%L$jh2`26Y72@?T6#pZn%prX$iv6w zr$q_zAY#%6iPZI8#Z@4YSt%}hdx40DEna{;QvU6)uZ2i76@aE|^4%FtTmN+)@nZm8 z7Kxbg+6itF@+o)SGOuhNmmN1Z6EhJA-`6_$3bI;_PhCFH$!{x4%#i5LY#e!F=y~yk zQR}SWah}@=ap4A&bz(Ve7kASOdgZOB`8no^aOgXC?wYdOkbdAI4|faJuOH0S@pHXi zhjh*RL;zUpbaTVo`tqn~t`FsbcL8sB;;p}JZu>H;SLpf<*2EB-GLTm+wpZo0-!k_N ze{W9>5FyvBQ`QZ$HCVO|ex`QN+o?^7TI=&Gw9!vZ6Eo*T`xsZB!_w1$YSoyCxIed; z?VPv?dD2#E6#Qn9lU6e_y$00 z=KVO~jg$o`dnt5MoAWFEU4Og&JkVkzld~#fg-lkMj92+13 z>OTX2?~bIRzw%|gHhbRGSn3vIZ6g)((=>aPp+p&7L?V4tGGK~;5K67X2ko(Kxs4z{ zTmR0MQ20{U_I)Ye5b_lx7)EZ4PavdLuF z^<&QZGDzBCqiG;QoT9$0^yI&z-VO0aW7?q@@5Pj%WOhHU38(4|98|dBg`PF{`1R17 zu4qNUL@>D8wUU*qxbJaC}@6x6f++^=OHy%MlgiW$MM1f-YH@A z4e^FEq{3^qMa}TxA#`jvAeVKBRT8slrqpw#_3mh0Sf8juCB;dX^ozyoMhx)5< zA1Xy?D(QZKtI#FaZiC!KDj*uxHznBv+N&4zvrJZ+PF46pixIQu5A@-kDpDdzDJ1Ie z-qwxKM>;Cq-P-r2AHqxJN~+IA zeT));NLyw|oK_j7zdm=vu<%HQns!X>w_0$w6_*)Yfz);;6q-z^6uAF3AU3i1&WQwx zRZ@yK##okGrjihhSlS9snYY?~FMYKUXOI~2MuWP0ZIboi(q60zSlEeAO-;O7okWmE zdbC(itj$`9>YULQ;$gb{Izu+YP4EMI6*AUE{sP6 znZG9t>uz;Lu(o7onNVP=0Ya>=dv&U`H$2rm z)NPA=?9hUv(ucc9h#9PRaqeEHVy5c9Sf;S80CAn&iN6kEy|ZjgZ}3Q;vXEjJE5Rsi8G+0r}+tD$+F2H!n>jVrDrxI3P8yKE=rFksaw4 z%Nn-!W+t&x?<3XEX*dz@1pA~rsi4!7q>dIZw_SI*f>Sr0xlJxLsNT)(Xe@40MnNzT zY+wN5X-mI^vl#W|E-H)qC!u>1&L0Nw05r@jF0-ymLm751A0h#%VY6nw4j{^iodHrK zXxB?)9k~4Xda_Y#o$MhpZkRe=qrs|2$1F8*6ez%CnnmqnSRO>c89=w$t>@oB4;x)N z$gp-|`IyXrGdYdKo_C(oD@Wzz-U=<+%YO{NvQ82vuTuc3z4Ssl_N>TMQ^yjl7?Lq! zGUw=(pZXMac?)@B>+HeSb?1(C-3*YV5#RK#P@UkjfOvF+`q?@6oVwVbrt}Em>(51V zwl?jim>@ACVy}|jA>7Fuwvk(<)YIG4sg0@DnoT*xWxn@I8)?ZG^}vU9F!u)EtK=K`j?&C0zJhD z!w&n>kfV0OOf5eweu6w&j&vX6rcn)DVB*Y`05Y=?aA{u5vNx{WIdlWIeN}5KjNYH6 z7%x_1H%oH}wS{arm{)=*16 z4^T}pdLS^+`_GY!UBbX^w5DO1`okRE6UZPPrx!7`rYWN=AmW&GkCys3^cxkBS(90UA7jU)q`0I@3vvenCgKPa{*uNc3B3Ct zwEUjp5cqbQhYGP8Y5^RGuprj{?>?u2P;BhMrqQqI8cqf4{SzeG{dQJtU4qu_O~vo! z54{TBpbW+!*xke$!C%fVX1^BC848_3lTIuOD@84YXN{W2sN? zb!lEj45zDu(jKAGHrhfNpUbtd?pphrYdKZ7Bun-Rlr~;*)(Z;PyP01s`VbI#4DD zV`Nxyq(V0L?$1*Dvwo-|sHrEy;rltji9<&9?rUWtZci5d*R*U6)4E-MY%}B^!b| zTld9TW-YGqyi@nM?mf8U>3AARMJe&W>!EdR8eeR)OQqahT=S>eJRM{h?M3{Omv?)U^9t~4sx676bdI&Hkz79Z#8TdFM|8?C=veq`*4QXQYxMRh zWP0g8x65xh zv#hn~Ob~YyLNZD6eA*?se%2TdNNIA`WKNsIQtTwyvdm=Ll7B|Xx135#m~|6T0*nIO z8DqH}(MZ?6+WtpKlwY$*ei?E_&$XFBqOTN6CfF7|J?3L*n0fqWk%oxi6>&r9>2qmRozgfbcq* zF`mAg4w^`{q|8Z|$bz*Td6KI&{GR=p1BIB~hPqd!9%{`1;0Ig|y<74_wJU9EZiX)4ZE1K$(uJkeR5Qf55C=QSr5$f`dq!;u0@i11| zE0H0=>ozdr3AMw(G!sBL;1QB$Gi37igFx!AF^*# zA7;;(VQ~gFfm=29hyXUgPsyL#XH(is@~pB{PGz`6-)Z8<9}lOUP*yxLc;Tr%{0lic2 zVpCT2#JlK-ohi=R7sb*C0O8IuABbf)0V^^E^FFebGkgW|Ilc!8Pg~~eh+x)T=(J>C zp&94ehZCSVgQD-ViA%I$-Lu3eJc%dT#iIIxfTb2a?~IKvlLO1Zm1!DzVi-Zq_ab5- zcNe5K)Mmic4XOSH55ExN`yS3Q$Qwa1s}lm`0mr%SN`@Ka39KWF*uA<86mU)uxf?*F}!8I*$0(!(HP~0ssjcysMjm*yQJiFkb+MnxSo6SXla2y!q zVATu>v2*sw93fp61g6s$q>Fi0dVTp3mOPOauTjl!sSxWoL1vKpRFVoFE`7NU5<~8| zUC!Hi3mz-T6Zs4@e!@IQ41^U&<(q{<>wZ^aL6c#_jD!wCk8((Html1LshF`U0TrA| zF@p@Kh~sAGUM__*=r)mIqju3yT+ZcB&9hZ;n3YbhYLJ1U3d`PBp)$)QPrxsIN%{cN zjNHs(djA0#ILX6o4A=qRDO7F-1Q}-PqcqWQADDZB96-)jl*JlLXPUKI4k<9rJDj%4 z?Y2QG^#M>T=`XRwp;dXkpCE(2)Orgm+u(6Hf#R{#!&v%0W{p6gfg@qlpv7{-1?QeA z%Ha&9?z)DxszB+VsI1^@j;5s=lG0xlmtroK!%1xerIoHwr7l&;M41n0G} zh85L5GK^Q8-qKD2h8L!o`wFGNh`sHW+RS{%1W~$^C|`MpIE?gA0xu`15+qSGHbisZ z(-`0r-|j~w%bEMtH}804%PP`!)yfj!+l}=e)-(ny3vPkjX?xP6^QQp}*uOxL#cD#< z?px6Ev2K&w|Dfn)X1+=TzW{8vxf&2#QGS+d>QbcIAfN&=g&MDW2U&tR(7C9j4jZjr_H9-?OV( z=tGgx$i#*+2#dIT$IYIBX7figFJZSFYo#ZMa)A$(J)o}gzzeNn7S)$65K?d4CM&P1 z17_ydX`X#Em7Q=!E>P;vU#oSl6TIp9YW{4o!!qj5S`oPbgO-Bu8 zm>|s`t?g4kF2m?qY|B;1J!=*G7V(R&gmsx;kL+>vgmpewiU@)`6!g_$ZmCuei2&bY z;(=B1)MbGbmdfeIKTYq0Kag)j9-=|FTri~hGD?NY{*h88o8a~x505LFR%0W;0$IgW zKx&RQsrZ}YTS@Og#E-#|{v~K(rI@wN{r51|eGqJA(hV2{+N#$T^q`g&KCXf}jBoq; z&p0P=kOq+S%s&BNm~N#p5{K;|u`^R8z#p)|Cc)f&g^1@gsHsAFE3&tT&bEr$bm1Ud zTST|J17TQX=Mg8aF8HjdWd{zjBQ}p=Rmj!GIykL_z)`#0P1x-oJ;H;iCHOu0^;8P5 zGBX1V;jdG+s}WKHSO{&i=wHd)5}0SDfY4MxQ>(SzCT4OFn6h!cSP@{UAVOVdVmT{UCuYAgJE`RXh@)tPIn) z-Bj#fb2$eVW%c#?1!wXVg~f>l1!p1j=l=fY^T%1^?0!y&l1ji^S=E3-CDJNsE!@mo zn*oJVTbS(R?jrljpBkq8aQ*Qj5($N?(wQGhtw(v~a1rZJ=rn;nJ)hWgnF&e)WP!wZ6Xl zv!g4Mi6IJFFiIj7AkY>S2%8o^cZNP<*U99Ywx!kI8ggoDY4KgbBtrrX^O?dv%3KKE zeRpbHe8)cIfWCJaY}tJLIEeFhlt*i3BynDIY4)-32jvn5N`-bx00t(ITQ4nqmT)OY z0!rDY$5TF-JsX63Yl0ghML7vM+EwP9C>G=18B~T&SnPp^=k^DH#?M*GC$Zoy3xB7> zk*A**nvownviy}iy`_TYCJKYa^fHh4izBNr4+ziIMaL9{lZ{c*L;FHG(eF3a8!CPx z-6QD%mV-G7?v<_F;wo)+HUwPwOh}|*Z~(AH-FZ`%3FM-`xs<0wffA^Q>sv( zyk<3UnwJjsI9#MEW}-`P6yGc!R=Ax$H}2SE!Nfsi&ipZO@)TiX*imFv2u zGpiX3q`5w2Ckoc@+G+{*wnRI(B^eTypR1s&8k>KpVgZvA2{I8WI7*>_Ch+dEd?pud zW_EO3zdQ!uFcI^_I)e87xc^7Nw_Xtj6aZ#)Z+V1ax8qpI6y5#*#Wq?5y3}vKf%q4X zw<9|shEgyC;)p=~-&7~f`SOpnmXY38=0sS1wwi5~>(~GR0QSv({%cZk>y%=rGrjT7 z|40oGrC1RQ>EPIT$6rB`{IBGh>9lbojc~!Pa!^O5wy(U#eDAZ9o!aF18q2XCva9nB zX4-n{7n9-2kT*O0j?{=ZV~|3kF1wl>8Es7(CU69k#c@4QQo(;AYC7y|*l=a`UpMGg zdJPN+s9SpSqB4y0@iA;DPko^s#MTD){2m_kOlmDKUbwoc^1jBaq7#-(=J{8&#XWYa z_e{3N{KE!yc(p@luf!uivei-0Y!s3u&vXHeKbo$~TfUT$@ygk*s#tf5o@qJmNqjFJ zOwPC%sf|gKf2393{N(93UlI94Dn=!jkfy{exJI)PVhETdFkRAK#TB+cx_afAR%GQT zt?*3OpQp@Su~MF6GN&iIZsq?J7Ma*YkhI^cBv_`#EepWK(u-oz*TI2OtX6wjXx8=N z;+ry2dCzBoheS%GnjQ6b7$pQb2S-68=!fjLr$q~ndwGSoI716}E)Qo>K=kyHcSGsa zc_skKp6Gly53({*AxZ!w(&Cl75sI&us{WJ+`Wk`V5i6ExGt(?h!{Q1dCn4bZVOZwN z*AMGaj39U?R&sl`ulMkgy{COqU%gc-{zM*J9T2!f7QA}GkX;R|P}r5>S8NIKDSeNi2I!p)u^O~4Lyn89!iz5yKS;73l{>A zd;M!Ag&f-dd+52VcuG-xnz4$^3E#MgFRfWDVG;>8Rpw_k5!1^$M%ltk0lU(qR<(eP z6d_$mdl<=af^uSLJUeGo-wqY&z9ozyK$#O~P;8U+yFK)zmlK!2sawy*x2-}cWB@NV zdLgeB({Dyq<9}VHE)vC0B43TR>k?mF|%$dp_AMAe7>-=XqX-Tqx+D@5! z>sx{A4om(=Fq8DLUa=~T#CT_CvH1}MX#kgx>)p4w?BT{+^Uu%bhyVZT*&Ji4q1gD5 zn~l%V_2f;zi&lYu3PJz%M!I!U6nuNb6@;9uE`DpfpiRvZG)(aR&iJF!zOtG$q;~KN zzGbimh~pi@1$7Uriq(vTRC^T9*nDQOwr9=4o)>d@g4k%5v;E%m zb{-*IdKS!zWgCQRww)CF^`p;aH!Ekyd+60tVW~RDd$mw2U%qHEt=%z=p9>J!@DCyF zpMAy`>Igi(cT4xBW0WCeSZdau=5P7-tq=G4(;r|(ba3P-UAo|^tNdk6>|W<@kGc8t zHTFs&PRZ9~#xkdubXwDh@OMRlWPXI`ZjknBOx?5I;TUUK#!W_9?m;;zY|-A`x9`$X z;gojD$76@iuDr68iYBi9bJ>phEMjV7^7N}$6({E^a`-a5x?Y}aH79wedy4eFdn3*D z3nl$-ic@t|tZ1}v$XHjIem)`IMXw|&iWO<`w(H|(j-4OfmaAVD;e?>_3)1cLRtEnp zj1WJ3@e3T?x?}!*pqH;z^pvv#aMyE=WXG}M-@mMXu=xS!<={Nq4%;fCqU35^{K7mM zTsXe<%(6d(s-TV*CJArkt`QJ1g|0*HR6f4M5H6YA!-ZElF16-sb>h7$D?9vrTK=ZL zcD*fN22|J98LkKyBp5@sWO7~MFt_W|Bw;SQs3OY3pOU9|w0ab!UYV8t2&e;!N_$V~ z|3#;tGzcI8PP1BXq)hqWLAnWonw(jKQqm9&HXH4?J`=>5(pYYthw+KR=T3GC^Q0jP z!FwUxH%E%-)ph9@@G5>#M;zwq^AgHE)!Ef>AXqs=#Bt3uWKfQg)59*VdM@fNNw$Xh z-zlCF(o&YLF4N{T<{Y1K{Vu|0TiJty`%;-S?@46IjI6-yOhN7Hgu9W!K{LX}SDF?s zeDz5G)gd4Qcf}eA`(kI?U<(- zLfoeCRp?9GB2Sf3%l`l6L_&wOTu@yNxLLYPeeWt(Y|rU40JV@azq(vQQ>^-@BsH^D zT6VTaWbmrXK&2uO6Qv;)jaZ|VQ=gdb)~(RC3Bb=<7U=Z&vrC& z!@e7ZcASz=w5z#9(FU8VD0ch((Y1R%3ugt;+*C^pL$z_!^pXZobK-^V2M^YKymDcL zK=<)PmN7(P6{-M%K&z>VDiQNn9X&dd1hriGrm?L~K!=B4nxgIVyIuh{%#m$TIR5)V z9wU-Y*%YFFUVZ96AMJFoal@$6pE-ZoVFj=EyM6@Q?$sn|pU-y2VTM)8uzyb)#4|c+ z0p$|8#u@tiob-=k_|+0Fq2s-b?A*E7ImtIhDkc|0L{o(BBWSv>jck*{LPr z@H447Q@F0CvRr(DAC`L*F|ZjgB2fZ>o6V-)(Q$s7C=2m@KPe*1%?awK_p%eT3i(Bv z4KMrbOKtGymd!F5q_7~b*AlTXP)q3{lB#akm$!|3XUACGtDZEyG5&P&g z)$SATOim975;-;6T7HIz6EG`l`t|MzA_<`0BCsOjHvNwd`GCAL3?-z1zEuKg;p@1R zSPOlmUQrfw7PdjTZP(^Y$ZM`Cs9bc>HWmZW$xz;fcJM86w=lTAI+g+N&RJT)aC>_DYdwVB?^t=eOAd z70SN_Az$vkax%rYYl|;=^|c8+aQN9|;F;53Jv~dNhi=<)@QQvoZ~TrN6)q@sUzkUu zPjybqw0DKK)vzM+OLq7ZT_g)NV{cQpH#uE6C4_rt%U_d!_D&joCmTWniLA9mO;-(6 zL`tadrqwd9$!c=6Yyf1)!B#N0tr6MoB=+PlK#;Xy)xtG7m-;A^?%(FgUGV{e8ipD8KRvP23T>rWtgBKclxKx2lTL>fQCOBU@;JZfVbA(uoD-JH2lBu@T(O3(vgz~e!F)D*WI14#&w%Rdbjq*@%ynN(cZ zke-<36TKG^f6ghF*bscXRcjA&NQ{y&-w~R~Yr@2BEXdVh8m)k3CCx7m7b`kt1T6mWiFrF!POt4{8d z@!BUq8Mu7UA=zGY@BI0pP8`W;r@p>I^IDT`*lN~l-bSebdAfXEs{fAK$Rw=%e83ZD zKqGgq89s?$eVc7FREn_nyri{Vy*-VMpO0cBf@ZCaz3b}G(Q`Y>oxkWX#m;98a%_2v zalPqSD@&gh{pw0V;V%K~D|KPMDRdiw1~wlq5O)|pgp{$3%lqcMoGUh-R)@QNdqZ_3 zqr>^mSv)!{Ta}l~vC`!k`CgYwVD@^~%}LuCcC3fDVKuXhE65IY#ZQ}?m=;paJ%o|c z6m?O_LmB~5F<@Tbd%iQ-#}V;GONuom(e8Y%>?u1oZEw3WeZR8waC@J3NWU{VL~%3Y zK)kwwQ_G#YzTYz&twalMEIbns6S>a5H;zaCM}J++7O4B5Ko?3Bf*1m_ZESe5AWO<7u+sN+ln}ES$}YT8Prw3^O$eDgxQ9HuGe$Vv= z4A5nEK_pFkzA_&M1K89IZh513^OgL|Q8sf9i~qK-rp#!s-Emx=IZsZ-@;1fQWd#o{ zdl!7ODPL4BkqMvwV0tG=Ok5w)K%IjUi6{is3-0H}$UAK|1j6q*pvR#fc!pVBEgP05 z2EVmTL~Xr{q5(j)HMen9m0bAd!EW??(ioR$GPZ757kS&o#wI(c`^M36m z68B2V+Q_GxrgPqkBUUBV?T@y(^2{$2F@y|3?<@ijKx&f-#3 z^Wb$9?!itS7|ye`ooNhCXF($K_Ah&+=T5VPS2wxLRtpLnM>MP%z^i*8IqT&%v@Y{ zk&q2uJ+2DX+WD~VadfA}(59G&hTODRA^V^hnL?CqO`+Yw))`Sl5(w zMP_q~rK|zTr5)-pl%UA>3NS)bZ+g%#pYqMlxDOT&BR2cqM?yc^6EgJ1uc9!@&Yh1@ z85BJJN{e;xWop0&miV*d?|)#+r7g)m3ZLD%k5kka9kCh7ZTd`A){BqRVRm|)BRqak zF>~1dI4wfz?$m;UBrS8u)L9iWYu3`x$I-fyz+vfcRn=ulR&_#)-O@ZIu$kk=y)JIM zqIz*_HetT*B z1PV`O(*A3R>0efx<+oO`F>&Ol&-0~Zk2giZ&2k|R68#$&P0&pjzIEC))`XawjyAI_ z|B|^N)bKN6*ZY1x4;Rx!C}A#vjdIcAQYx{5D6ar6hGxwPIFBU5M6re7XSAvcz=qmx z)W|2mehQl?G%4Q$q#FQifT46CeGaxAn*x6OhM3jg#hHQK%?c@rJ@%fJ&Uy0`W#bB< z{=PLmgcjXA(?ExwSf{BIc}9d}NGvs%ns94r*|d!Y426R)t3y?E#mV-yOW0fEBWOq| zHy08}QNaVbe&gO!G=hD6t$uaOjcF8=O!Gv)oH;a(i@YyWh@lyI6j!bitJUYJ?>9d9 zU4ql9?qo{Q)~P@Yd01UocrI_UJSi7l+Yyn|c=Y~iBi<6IcnWUHKS$1t9y-TC8Mm(2zv6XZdd&wpGXjI&4!gDutt zvaPL2Xm|*LMd?$v=g~SA)TaDxE!JD(3`}1PmX{50ialD%)-gtdocJh9rNK}7esk^b zl$S(gFSj`f^cB+!@lK{}>8dr0#GSJnVr}yBbpCbd%}ezf57U^CaD5ylZp0J7oD{kEqk~fOGNVs zG!hZQs`mS;AA;o)wycJ0=L7I@KLEdt9ldF)7y~ciC)>sgO z{#9Y}bnlo|bPfY_Duoe$npZ`3g;;D={s6Jgw&1R~Xx-sh%m;l*FkJA@(;q-dQ>>O% zG=1c9CSaTK+Wm9Rzv`=B#)}FfHiB8{}r58){#($Fp^P$IB|W^^i3QondO6EO<{=o1;VE z_|TxfoSaAyumQNXqBZ{s#s<3Y_Ay`xM4p&vs}ZGuG`P&j}4zYXz*t1thM zXpwr5Nn(b#%^=T^S zW5k{-)loAsz#vG62Af_!Y#JZJi$9oF4Uu4)BQFqj3zZXc1A5)&4JT1l0uS7S^MPqV zxuIH`lGUew@W<`fbReHocBJqZqY})>184re8Z^H+S3{S3pAiz%m~>U9mdL>JH~O15 zp`h-@jIQNfM_O(kMCh$WMkyH(Fc=u*DMAQuzZ!nJn+^z6iYQaFf4zEg4JD`F>N0*+ z02C)jK#Ii?dlle-bm@mElGmC_#D0BZI*c62ra5FkT^hSOJ74w44*L;HI3Ll z#a-Q$0v+s2S7)+iIshQ=y*jgl`Tmzx0|YceRNAW55e|Mz9{8Fv#vo#sP(Zod_o<^4 zod4h@1@Jk=^BYHQq(OB5E9O(cLpa7WEF#PlM@6itEKzS+4G@5#R6ea8&l^O?-?5qA z3~l&iK9#h0_nwBM9t_2He}Qy#UPzN4fuMlwP6|(_+^x_xpQTS(C@nLU84*y~0K$EU zXYZ+BlVxc-|9tgheu{T@A$VT85Ndvcj0*^xw#B3Q0;xt=G zyKXe765q>AAUbTX=vWgkU#267fbAm%txQcYF>E zbP&RsU}M7U!rvG~67XnDrcC*X8P<0O&!K+{89%S9dFUlD(gN*$#%R_3>2%nd0ScPL zgKRrsL*9Q)o>HRG1&iqvZ}@H_#s*qofgziCjD6US&qHCeqs{h3kzxyu_;r3Qxbkdj zEFGK*D%sS9d{?1J3ylNfBE!4^3}UIlsMD_`pWpc7s)mn9>MV55!k6y@UofJ@n5xjo zuRpJi`2&*P7TMu4`Br8ysaW73rqBPhhoNVzumB|1vCVHQt=^M!4T4#2{a5KLzQ;MB zwG{w`Gh}nauL`h^)$p$pksm&a8Fpt=+_h!}&m@Qi?!rPBppc4U3r*;jL*&(8-P^+9 zP2z>jZy*8ve0;e-_s_zBuD6LoV_p14IQ-2GR>ULZJsS`GHNT2aq?ot${0ERAn$JcpsmsRP206V>b|wR>$_Cf9Wu7v>*hM%Q(8TyG!t{i zuZbkEtY%SfbuikTUt28AVwcF0Jznsk; zDPwW+Ngfr2%8ftAq}aAbZ2dtb&gNWXCv7laqLclf)U3K#*^pAYaJ&d!dVZNdUY7xc;+F zzvei*KD{HhUSC45BFgio(U6N@5yLBEcYRhX62ftIx^9y(<2SaNI@&$@7X*%UhXt}x zgHm%`MiGBcl>65|^Ah?)XYH%u1>*mjBHcY3vx$H|_2UD*zy_?bv#?@1F?A^VWGI)v z3_YQ(Op@a_Z<2)(6qKAva+6d<(oe0XAEC8|?_iED_(LBuHt%v-Kcm#o=2h{=M=krq zT5@c-wT9*?*M@R?7BZgk@7Aqs z7^y2jW;zZRE5#Ty7pNU&^&2N*Iz#*vP&Q;%1!PNs;qznEC2nu6R5POd% z5G4-G`mi*5NKO6AM%<;R*)K)Z$`vl;RzYK5Q(^FLc&42Ce&t}4JNqwr;QCr28aQ+D zf;6(SX^J(p_WAVBlniFyxBm;HbEcJy*bPNwcH&l>G|(3dkn2xoSbthqZ3|IHMH4ds z!C^e_8!7%`<=hpD-G;1Xn+__zKKUUa02x3D>?vKCBhRJ@EKoMC-_P-&!?5xk+q+17 zI)oUc>ei>XJiJkP@NinvW z&fbO!x+3xy_7~vH-Q#z3`1L$KllM4PokltJ2LQb3>E{fgqq7@uB}2GdE|`G|6m2aP zb2ysMO&KMcE&#dw`1=}T%7M@WWo15J7q8o!hWxWmvVI@P|8MLaK+VuuXxReAA|g^( zSEs3~t0NMytDVBKO6Cn%v$vj0EW!ogZz~`QTTx}n0!t~` zf?2yEIqQPzx_Cg5jl^E>kh*g-**1&5QE-Mz)}{RH=dnq%L}f!k|Ui9Lcf#&8!f;C!xL zQ-Q!8Q;V=**3}VCL5b58LX{b`gViBruyaAZ8T+#YX+%Gw~c%1dz>U0?dFCE?v08#298Q9 zLJ)QfRTx%8#o=;dSBoDdFfCzwdU4Zd^&fn1T9 zW6&|QkQCN2sObU84>s_5lsxggShxT$uStxbO_aVEcqOm2bU0145(`*&P;@pzU@o_+ z>4lKYb9y!4fA{5GE;ig(4BX2vFp1bLyCdu);bHb32bB zL-e>u=Z#{=YIlb}nJ4?ON?SanfXj;s*S@BOAdsvOU$)R=SbNxjh(f04$5U-~li4!n zZes%l66DmiNQ7ZkIW7PfS(B_4$C8dBR1vC7b+CC$yk2Y7yk zc{v#;L)Y%~@IW3A6o^>mJgK>16Q+02Mu7 z0p$Mi0uXG35UQ{oFjG9Wc(v$taDVO}UE!1tK>5Vo<`fgBymXSPP^||rLNP^Ap|%vF zXaM_BstuSQElu~Sl>MGME_?ORg6SyZL;Yal4?s?LV^OP_hg-CQ9&9iHDUGZy zH^&%(s=naPeO`T;zumBGq<`*|7Kbe&JPMLP@?*zjkYJU2J3WO;z2ED!V=}YdBow*= zVil$8bAGHWHz(GVB}{dZP?(iwOQ7YXI2UW=Ge-+DHD9DA0xgmAq;G_7XKP|jWpR$U z_Hq>EW@Vr%@5Xe{7ns%?jiE!D7Ngn3ZDSi^FbRi1f8B-_pi!z~p}lp!u)v_tvNldT z-vdO??a#?Dt9iHg&Xu5Wt(mx(w>Dq5S2c2e3vVi6=H|lT`>N+~~_G zDFevo!}r>z)m9m@U&0?}kroib^r>|<*IT_-O@w3n%%qh0%Cr!TRoR^c-=*Pa55g(hDmY1~WXgi2p zkej`;*xi%dydtIKg`E3a%wi#8#Cw`%A=7(g>MwW!u+)jgg{V}bRjV@D^=%$wVu7HB zg7W{w7$?dNT*XA9&fCKDQ-}J>4^=f=^4;PXb~Y8i7kro zO(rU)Ex;!&jToK`+DFGBP1wZL-|!+@$t`+>M?$1l;>)@;0aL+fb$-{VN+HG@;bo_-dROOzaKClMOZmR6xv z!z-y=+BiDZPHA+kn$j>pz58|RS9qt%8>xHO~_n0v&W z!g3!kla0l<2XY@LIMLZ!qyWGE)jMyEty;QxpufB{J2N%8BCgZ#qW|S0BR+1S7g+qL zzqKV^$-8|IBxrpeq-lSBj1IvX%J6Z6IpD>~kQySrlSyG--)!xQq|{Hc*}(EzcvNOF zpjTOV94vao+M=G=KoBnzzH<5OzLH{(J0)p3Ps8y|NtkAZhBLdN+TA%&w5BGe(h{1m zVHOz0{aE1D=87_9OcfBbk(x)K`N!j9%dya(%cQtMoV*9iO(CUjzd$Il$cLTav~(_WC@pAGPh)=iZCbloLER>(Wk~@ zER6yyXxfQv$jzl7DQq8eaPdT8ewx=|Gn;0UC@?gohkj(Kv&=P2GA?X|&N~vD5r67f zCUeC!6Ci>ur_g6goFUDiO)CL9xRla9l8#zAhW1*1uFV>2oK}(Ftgy;Tm=jSo*p0e` z(-{?A5z6YCL<;mVf7tEwga?1&KOzp8>|v&)nA($ z(A51d=%iQHLS^~C23;Nwk5VzkzYLL*i#Wv?mP|LRLa*-VmNhHyrowDo>XhW@6=vnV zD9jdxm6JxUh!!h`c)ec@w>=jiN;CGd;eY^`5AFn?xuer~$Ynwqei&+;UU z@^+}amX&qD+9`mtEp1jn=6JrQI6NTksZ6tIlOSrtn$)`@KHII;tE3DVsKN%gy&D7@8ijm z+Z2mr@rFQhq>C#^hKTfZhl_Hue4fm?OQBC7ERQA0vlcT;Aa=*;KKBzU;mG%{*{amUL0M%P znsg~t+vEb}J`Y)rFjSIqE})tTAx^`J*vu=XiV)^BSZ9k0jV)EURad1nS@lUNl3m>0 zZAS;3?PwpWJR%Fmm)E)wA|Awq)GLx8Dv~hpks~}}byH2OFsx{oc)Y~z;zh=U@Nxm( z=zxp)PSp^%UFNoZ6)Nphiz|{Rj@9jS3ZBpNBaP}?&rOe4t>6WZgd+8*V89FntC~J2 z1IKuNrlzK|wo|WlEP3^fq_`h+B1s~i2L&@T%Ru7`vopws*>cm2;aT|Zu(vNe&ven~ zbd|$yNm0h3&k^ez&OJY>TDoXxU`}~)QNA_NII=rQM(Ew`wyEj*C|;%g#>y({%*fWA zQL;{}S1j7=wlg{^31q#`9}`_=x*~Fh;Hn}pb_>S6-_?1o%dxufp;1v=F^cIDveE;E zqALzZRO*M|S!&?4!86~mV4Q*P1k?3#vEveb%+AG?KAON|n002s6a_p@ppd?s3A;dS z&xp!1+v;_d*4HC3rXeXn)B4s2Rn&1JQu-)sqP9?kkZDjmF{^p?Z=vZ7f>+loWN4QsMk-~9=LdMFFHWY; zJ%qzg7z@e``}DAI`UJa8QW@6;=5XC$dw7-h_Yr{J(Y%X zjuC($03_i*T2{$Q`dhjOkbmk_xHW3Chm-PiZFd03fAKpR0D+(6l$@(2=t=Z{l+>Vx zS9%cS+Y?>ALcl{S|54XSv+l|E3kzTM&3c4yj<^hWW3#8R9BRN3*o-w;iW!(|)8^qQ zPY{zOxXn&30{6<6CFt;w_`c=Y71FT~U*Ev@o)61KY=xkuy&Oe&;~>H3D#;Qm-bM6X zA|I1)ns~n9p8&L691>c<`L_H_a>#a#q6@tdB1!?mEEA|ycJu`WUQ}2{DYqO4#pS|l zRBRg5^j>yn6y~Vgdfk@es@7UrwXM)EF``XA1dEX}P%0C*H8y^Myq-MCuX@QV1o_YO z`b7z)u{vVpg1E|IZ*n~0z9Z`@+`mA;9YK&fGp&Nua0NmCQhQs0Xy^e!_VX$%705K* z;&e7Fc>qI{hhR#06om~u2FC+D0cnsY!pXxk)M6j;OvIOxXT!KkGvQ!YClqif2!gDm z0Kfyp+~*-=aUR8?Ov6x$Z2_J@if4Et$`m}Ks+ICgjJIcm&5A7*I>jMh*D)qK(TImM>9**_H%O|`O)I~tL}CmP9;tQ!l_ zS?$7`LJLM|g4N~ao!KX=m1UfBFonfiYS^Yc#m%!t6<6$HWgT~#EKX9&xEbG}JLDbv z_T!RADx%{>cYEjWpG!}bbUunsIkil5S{(&maxBTJy#h1Nlp5IXV_aBU%`3$~3Vw zNjr@PBO0$9*!P@aXukv=so_B#tm61xn^2^GbGZ!U85=&eN!f;4kLhg29-in!(0d5iU<&K(ZTak#=`!DWu-C5>zmChhK-Kr_1|D z#&Kh7o{%d2Czay=3r?7#r;F#!6aEv*4Kp|jDs<3A4}ABWC2K$HaK0m$<@ z6fb{Og0JNKqb0|1(F{tQCETisk_pts&mdi z|Nj3|+IWWJ?s%Hx2uHb>{vq5u2s^X3@ePi9-QRtkbMIe&JIAFtjz9mm7ux#%x!c<) zx618sC%DVpCU+;d#9hPDecYqmW7y+3i#vuZS8#Mc&a*Q!+$o&7#y!H_!#%`3h(`}| z4g5@E?@|1{3+*1m_95vf*%+6I*#YAE-jr{ zzx4M8vCm_?mvHWfFFyWgnpRydj`PHE zed4aGS04DH|BwDV#|i(FZ3-a{m)|eJb@qAIEvq9Cv^G?#nxu zq@S5;;@Y?HGjcah$V>d2@$3$cb9X=R=*xfQ4d#Er@fY#)mir&NxHI&ZtG|W!ZQ}Z8 zAJ}>MRq`J4SGdNG(+}=EaQVM~${*pl*GzGo{QT929(nYgpZeXOSQTi_o0 zSG#HMj1a~3zY~(qlh`f$e=a&_E^@!iNzN(C#km^yGVDLgeR*((JWJleiFnd=`U^Po zmcf>Mi5n&_VZYaL+&A3Z*ZcLsg?Qkvu5exAn|ze@iA zP11P#|KeKg4ziA4{|nm^cb5BoPN9DRX8ApCkvzp+!_O88a#{LKu8HkMY#Z2~CjZQ3 z@l(N16F*b9JI~<`EE=fzf|4iS{dFZoTMu>7T){dX#41S7>W2<8uj&`6Gn|foK1PDO-y+|{*uIIj1pR)BTPFX5Gs!!-C9=dN$^XPVRBoMw zIEzGf{{`2>B+Ol)yO;+T=O=%|&EsAJ+bLZ0ke}cEd(2miiku1(jPep!$9WCUtdpmA z|35a5n8P}LhRHv0tK=U!8|@S15Em!^!ga78C5LhRPq?Rse&L6Mq~H%|mC zo|)|(n44c%TspXXXk~S6{qT{EqsNY)V6Xi@_~+!UXPr8IYxiHV)8}gGK6i3+aVwo( z{RC$nUF}Q9&usQPv3_Z5`>yo$lbd~--}$5hqFlUaUx;NgeQvAI&D#slVTR_n=jwe@ z>!-Kxs`qIveJS1l^hRGOoO!N9wE4x0i^tAxX6#Jt`ewSnv9X!y_qJl`{utXE+uBOs z7&O|s)Gy)G-chdD?YX{W&!PKUeX?Ee3pE@4N?*DmUYJX>D}$G_ z-?+YbvCmgBI6t4hp1zJ}-xw0}7}n9v?Ty&Zv8_#e3s-x`H*qP(2DSI*dS9&d<@xG! zP?65mNI10TY)r8|x6`K=?&_0^cz$23)cbNR%{r;iU;Ko?T|g6bv$ws)nrtsPom6Vi z$vQW`I9JKsnryZ9(#h8bPa#!wVICviPA^`!cNig@nc`w>Hv8!qI=SD=KA*RD76z}- zzt8Rc9PYx+w}$rOn+(P?_S|#2#xHJWVs>V$lBxI2+6_t<`V2z*0i@G?V}6B= z3p@7QR^Mbt$8cogsNQ$sF>Yr{(wKpZ=yu6sZ6mcCBHKo5Hzc-=)o#da8?W6^*fvqSp|Wkc zmTvUPxq83i>^xlWSDl?}^?tI(_08(PqmL={F^OlV(MPt;ppR^uMIYJLMjzQWhd#1x z9(`on0{Y0dMf8zvOXwrp)@tb~M+E9MOpSXxJ4qt>ri`*lcC6HI&% z-1a?1$=(^WnHu|nEx=0k{?IM*kYK-AxgnCk;wID(Bf{{DXXd*vw`%FG)897Qk;U(p zXef&B**$ii3x3?u)C)8A*o_tmU_>2^A07Ulw`_y4cgE`dZmkiTs`p3!cTK^B7twqa zB;kVjbR&I`2`{Gd(DmyF?SoJjn^5aei;(CMLIQrge+*hC2m!%Ar%7L(uU@|1u+!v-1q?aS%L;2C`Z&qS+qf1AmB@95_9G|i`D&(i`Q-I`-MP=PkZ`|w743DO5@zEqST z_oO;d_H=&xlHKR$cP>E<(fOSi_P4hnyWe@w4!Q)zY%lGM#caG`3FE@Xc?+KRJzj#2 zFl8w~0buS$Fceh#ck~2L+`-LxrxW-MOT)C>?RSAACfFRL@piGWHwX3GYC)kiCpiYs#52Hh{eu~t<#|9?bE$mr=8aOx4xv! zfm(m8x_{**51p&^$E(-DLyTFjLoC1R#UM+g-@yClo#|o>xIep$xok*9141(B;{uch zboeb!-5>A&o)r&%FUI)ya37mDreCJ)u~_Cs^v-PU^>L9+#{Q%(vGHfv%(E`;jpNpk z4`RrHfpEgwLk@k7eh0F+{C&ZW zTGwmOaohrS4r7O~og=m9h;wEGJI-(HN z*7|;Dk2QUu)}Ol7^g(vuG=0d~V@@Us||PU`L-)UdIuk_sm7OSZD$#dh2;p zAx7mBWcR7Q@K#uhg&X3f1;;df=dV@3EBHfyb@!|EXUOj(`fAXCbNpo-|LOj*b6b!b z{Czq1Ir1%XkKK&_WMVtnNu5f6BJ<(wv-Z2} z&*%KPiQK32%lQu#a)q}Qt>Q;Y6Qv(3eY5;*`L8QKSuIuHRGX{)LVckjH12NvWAo)h zYeRoJe17w#O>DTn#lX3e;@STD**dJQ*{YaHcydV23x%5Q9K{pVaMloh0K z)z=wmw*r1yauLZc&|;^+vopbfU$V1>yZp%lPrW`#C2>OZOgNOu1jAW+e?Hv~r-Hxm zDV~rw`vmLTzkv&(h@Ar|IfeAO&(NRad|Z-S>KT4Z=P4m8K0*%;M&w2pO*Rs87W&FX z(OK}optF>m#yNVHql6yWdLbVx@lvSjYmjbdWVD5zg@OqpOLD*-?Ku4o*x7DI@+lr7 zQ@>6%l?Lxz&@@daACG?^8g@&>;^VQiTe9%ANGN;d3_~V(Zg}^f=%3I}0SJ5p_aoeY z>G>xDl*-FQ;4cwH;8&`ICx=%1bZ^QHGon1m`oH&9HbG9%kd-nDnj{@bLrt*xH_>8BpOcK2P| z=MS$Rm>nA`7i+2%sQL~OUBS_Esj6E-Fq*vi^M|emJwkBl%28Lm z2-1R`7sY03yk8BOyI-ZJzLLb2%}bqNuMP9vy3d=MLQYe-QeM86FKWw z4NBEB=K#k-Gxb}BKY*|xK$#qjRgI3Z^C`zOO?vP(r?a0b(bPbqGzsn{~sT;{^4Yry?bkS zk@)GKaS={>-r~qmHPmHXG2o;o>4LNH7wln?Eu$OEsWg#XkhAWMte;Q%mVe$O28z?a zP&@dEM;^%w0bTFD`^=M`k3F%rf@f#RFLQrGKh7<3v0iv#c5JwwjfGsgLJe-24X#`w zlE3QfwiDn^KL!~X1rH~g25?w3MS_ytAWZ^rEhtqfE+HYQ5WSEf547- z{c)GqKfgc$uNTc);#IaGyo$M&*1xW;z_JVUac4OQj$NGtvq=#_DuxC~Jp<>1s5S z9b%>k_hxrj$mi+rqCc*lA(8=8MIFiWwu31mbF$wq{`F^|gnZtcZzI6~vB75e~{0TuLEOla;@jfge(sXgU&{G7ELT>Zrykr=NK<`j&Mh|K3=P{4*Etg z)zGH5^e3}rY`Wz=HR;AJTnX@~V5X&r%Pb8AfjeW8(&rFO;e-Lq`R*JegOyME1`yKs22=|=a75em3%)|=+;P4Zjh z_qY!CNY9rG!-*&mfwn;)enloC3^OxzSx$f!6ky^ge-=)LdzB6G4h+%13T^7xwqAO_ z5x7?1DX{YIXtLF_a7Tyh+&Lf19));RMOYP>3>n7eMSNz1qj3U8sRb<aTwD@QgpCu5xdx+-Oemn*0JJDhhk9Bt!+o^li^O0x0FIiw$uX?8dW=E z7Oi9oE*Q#ZqLjL>pS@EKdu7=@Raq{N*va~wVDc{cLNy>$vRrLZmtWB2ah2vPif^)* z@yUWf_*d$ouzKu%FV$5-4O5Ag$Bs7U3@^!Q)o@sX9BR7<$e)uxh7?Y5&0dWe>w{oH zLhpj_#cerUiUIRyz`1^YZG5Cw%A}Ip#X0)10(w(wfv>4m=@~;iylyKG zUz7iDLm3wWDQ!sR74ZvSh(Rs$hUHf`Ha-WppBC|$wGEM)#>J;5eB{t4C(&mno6F=A zjy56^R#-BNRk_Wwl>~WJbZEoXB$*k?|Bn;ZEi}!&DGAbDq<92ypNPWjv5)4x0=7?8$(0{Z)dICcwsyO>mgO&Nji=ZKkvs z2av;a)7_>DgLXnUo_Y#I=*=aCHT57F^G6 z@7SAfRm0)n%@42j>ZS2izM!GnTtI6>7ORAJuJZDP z?->UQj@n&;NkBhYbQ(q{U?_N|S`jY6d@&0883hBkE=l@Q zJcWTg=2e;K$Pj zDy~@gd$$ruPRG;4d){q%7QKZ7(?{I?m(@J^^g5i8GObv3orcrDwT;-)?=>WzcO5o5 z9%Ty(8}m*PC9vNv#V;shp-4Is&mT{^GZFeJnaE~5-}Xrx)4Fa92Wpci##;v6ESBb~ zcHQuJNrq-z^|s<4w(F0abwNf<(`|S?+W4fJ8xB531xWkg*9lSQ#bi1=Qd)3(X3~Xn zBgsh3#hIT&zQEbsC^yn;bIc(Wg{zVy8YpyOekT8*LkYTP74o@SH8+|c$rNLlj&L>a zgldDx&Iucsbpyi;92eWM-9;u11AAawKpNQulFI@S!V^tH5?!;YNuTH7akqL;^I&c3 zAAQQ_$MpLrW)>%5j&)M1j+8C)4r0Vz0Zi$8Mt)F+Jiuh-=9v7=WF zO7!C+6L*>{hmNtefQfvV{3fRX4?4Hnx4~6l^?~aJYrW^I3;+=Zn4mrelE9IRFTMmu zymfXT41tS7`6CPr$=SETkbyJl;362h1e4H;1>=Q6B$VJ|p?JO=3B<`ef_8Q&leziv zNWKsarqZmR&E0wKdFXKsl`3Ncwe4mw#v`{nyT|qH6g$VHl!*gJAf7&0Rq? z?V91&h0;V*;AN_MgZY@RW)n$AJcyD8%8hVuq+fs!WFXSZ_EP8<;~FSn%<$5#?6hXN8!p#?mLRRtjB?k`@j|c2*li%3iVefA2{u8-O zUqEfmH1|-?7)r!oE5{HNF@x|DiaWrOvvI{UHU;3?`cyLBb{2M;OH1O znKKLo*^7tvJW)2LTRLWRWRLHmRir)UfUA@(9LX5IJ4dG%iJFf!^FdEc(v8qCkz%1j zD-9}2~l{Vm5 z<>HC7?`AugO+|xt2D}1_1b6?M{wn4i_peAQ3Y2>soU7})h%rNRRnxbSLo1BZ(@ri z=%NS@Q}M{5;S`~V3i(4T>bi%|OQIAx-JU3QPi{8bW42{^BHeVc7!QaFRk8&|@@5m! zfOlx*Fx2SK?w9!veV%)mdz$+R?uB09+69i6pyN2{F`{rkx<;uYfOVNZn&o7X7iE}0 zUJ`lfL6}cbVmet7Ipsl=N)f7pW{TqAhYrNc{5Ao5ganz+nEuy2LEtE|0~cTPB6&#R`xjlQ1krR(PK#D_Thn@^i+6Vjg ziS0CJY;c>}?5N#hTs811SyR~Ad@ukflRbz%$AKX6wtf5%Q3)Vu$H^MBAK{yjigwa4 zGPaATrFDNKAj_VI^09O#Cw;8gS`<_;yA?e&8yWU`bYs3HdFp|nVuj+mT#OdI1fF(P z0a{~KWYIG0#RG2jTu;)5Ta9Wi=yvO-Vz{C=e?lP1xrH`(PgA6{J5>!@gu8Mq>4}0( zeB#uYtB^|^8p}$0XOap&L>K{&sssZ%DaH%qts%E+ZUGvivt=q#5+R;i!C%hg@0#mO zuj?cd3ux|e%nrEBLNV%BG$ocbjDUAEN<{cLR??akif$%?5;@NF!6fo1cha9lwOhScId^nwV%+O-q0o}7 zjFu5@EJL-@YpfvwH%9 z92^Vi!Bnlff%$UzWl=Mdbg7&x!Dk5zs%2)IM=_O%0#gYOLufnFW5?h0K{tXhwWyiq zQV5X(A-<2kOFgk_8tu3yX`w(c#Wy;#fQq}c7+I9Ol51*oI5Ly1xsYQZf*SYKa&xt4 zKw+_dZ1>CbZ!mA$+@apm`AI5?3y5kCA-Ic0;Lr&x0IGOQIb?PZ3(}qy)MIn&P zb7wbC9bT*EDjDWL`7lo*A>en>febnG#JJjl4&X~+p7)vG(TWJMljxd53Wi_qYtMnW zIFd4uH};6`$Ro!-JfV}(wwxTXXL5msm5pY|E_gIqRzgDw$s9SVP`AsSLGWqci>M6f z2)r{fS5k=AUUW^IJ?D#MilN+p?H;(kw%{VVCegFUNa}yS>J8pxH`a3x%$gg2R1_uG zlLK3I3cUFW%<=u)Xs>f=Gr@CwqYfYwFdSVubAa;8m|XrAcREp?Mb|bCk9Nz&60^)i z20Jpn!pw^^k>E!78w@Ik|Kq4A=H<6rv+#`qU|^=e0DSM6?O6i8eF+1PAo#(93dIgu zGBk(yR1wsvZu(TJw@X^QBgnj0*K~QfB}(zUO16>8q5+-PwQ~WgfJ#0+ zmhK${fNJoj|DFRsbz%XLQ6cI|6`{rj;pNAkI(J-EIw_6UsannJ^$teJ2gI;MeMeb9 zpoK^3A?^?>L)OwNp(7|3I6-bpvstDjGkVa43<5_c34v zGT9D++77ncu|dcI(6p!C_5w-Jc|hbQM3@nFnlTS^8p&f`UYrY0YU2qz%g}5R?`lHG zEs~$1Y2V>WO9tK?)s&|o-qyZW)t-ay( z_gp!5_UMthUcH)4R}_dK(2TA#ZDk33@^Rvi=4#@9F-7TJ=nl^pZuwS0hq)tKiBOVh~v6?GRRJO*w-e4+mvjE34 zxeSwG07e~hNp>u&f$3XIrlJ_*ieXm{pA>^WDVpDU!U03DLKQ*bseLA_Nr}c#5@M5?4a#sc#i$+p5qMR>jcCbI2(?0yOlvga z5oJP@_A;_U#1y1qgL;xniyP;niliE*KTO{na9OtBR9UVH$*h2iWB$>PT(sG96XLaEZ7l>@G2+EK^a0Z2Sdbc91>b!1{LwK$Pb>x z51zyio&;heghq<^B~Nl5f&}EXtK~v7H(rc1vzYAaD1eMT*PB@u=dVN20pf!aqE4ZU z$R`VT25~DhLo6g_@CVBafg6~T92_$@bDzS@J7rLa6G!jq#m*?fxmylQYh={ng(hRD z4J#8nAgivp7-_{lb9ZKAX&7u12>V95nqEz%$)g(bq+?A5lh2digZE}a=kk_Mxi^y& zE~kf6?K`uoJ~NRtM^s`Bc_Wb$XhSr9eB#96c0qFu&x)kk2qXm5Hn@EmortD=uviQD zmAuz0c}m{=QU{)&o(r0>q;J&AQ@u`et%24n28MuX+^nWEm$Fx}R|jx`>DjR8M23L=uMg)p!|$sdW) zcys)SK&wR(?x3gk%Yt@uDssn>S-bqlxUXLX{<`asY z!>dr>W<&v&5NICY}pjd#n+umryH#x<3w#>GmD>Kz`w zs-RDsf~XOpl?(fbZxlf0%1(89ZCN41)A_byn3MzvN?}Z04uZ6xE#hb)jQXA5;lA8U zo?ATt8GYv)&JRKNJ^@gfU-`|?eC($`^y814inOO8x)51Zc0g&1SQ;j>#e0&%G2I|N zypMSeLJn42=lDG?g*mb;3)=ocH)Hvq$SW6L`VfYmwLxJ4Wp&^Gz5BP`j&?wO-_O19 z);HgG&mCt@96Pu;JyDLTFdQs*G|(Rm;M((#99zsn$-M}k@c=73+Pe&I*4by=avKzL z?q*FKCSv!toCp>iw4az7m?g#=2$crUzzvQz8CaKrl3})op$G%73@lhcvKxQd+Xlh% zz*%7M0`t!Y_gZ2e21p7=V$8x&VyT07Zdr-s$bJ{UtvfS-neML;rD^jJ3 ztgWWzM-;;!EvufPp+_F=pw2Y!IV4AANm3&yh-hSC;RUY|d;3Fg9vwHlS-6#>pMG3l zUg6aOY6oON=TSokx%mn|4xRX3?#FteR}q=qi=h0yZ#}$z5UGF2&AXgpS!Pm)IjBRZ zXedTmA~1GfWSIjnwWk=N9c9_~lBloO`p$b~1R2a+G7ssNO2wVGLq*ukS3Ys=>V@rE zxmkdN5n*)#u$7DlSxCOma849(D_F=f{f25C$B%;59H>YqG#G^T4y5I<=6)#QJd<(# zfbo-jC@_$YfqOLwC=sl%aD;&ap&)qK2~Qkt+C=gU9ze@Ob+@RRo|tagIXeUTl~vVu ze^Qg;F)=bJ@ZKS>ub2|Z;aJ8WcDW)&UbTlP%0At0b+{OCX_D`rX{6r`VWQrMATlEm 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 KKm6dcU;ZB>;KKX> literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Regular.woff b/frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..c4b18d863f31c568adb0b8de64ff2368cad1b656 GIT binary patch literal 22844 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Regular.woff2 b/frontend/config/public/assets/fonts-katex/KaTeX_Fraktur-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4318d938e26c1dd40212772f4c9984b7fbce6adf GIT binary patch literal 19868 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 TnS<+ZgZ~G>KHm%580?|7K50xN literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Main-Bold.eot b/frontend/config/public/assets/fonts-katex/KaTeX_Main-Bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..80fbd022363e7ee84f211c9f814ffa479d588815 GIT binary patch literal 60688 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Main-Bold.ttf b/frontend/config/public/assets/fonts-katex/KaTeX_Main-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8e10722afae5f5f0d9ac4dc5245d445db9151f2c GIT binary patch literal 60468 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

0U>End_fG6~2M%=g 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Main-Bold.woff b/frontend/config/public/assets/fonts-katex/KaTeX_Main-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..43b361a6005e845717c8de2fbc8980830acfceb2 GIT binary patch literal 35480 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Main-Bold.woff2 b/frontend/config/public/assets/fonts-katex/KaTeX_Main-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..af57a96c1488802f4a5a3d59cac03ad04860ea84 GIT binary patch literal 29492 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 Xf;9h=;B5aP!m4RV$0k;o00000frDRh literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Main-Italic.eot b/frontend/config/public/assets/fonts-katex/KaTeX_Main-Italic.eot new file mode 100644 index 0000000000000000000000000000000000000000..fc770166b5e86b6a9c18440231ec09449c89b634 GIT binary patch literal 44132 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 noxukIgdR#W!k!Aw*ZU(qC&D3N!YOEao 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Main-Regular.ttf b/frontend/config/public/assets/fonts-katex/KaTeX_Main-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..da5797ffcce7d6bcf6155a5744398fc92ed15cc4 GIT binary patch literal 67996 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 z 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 GyZ%3WHxvT^ literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Main-Regular.woff b/frontend/config/public/assets/fonts-katex/KaTeX_Main-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..37db672e821041b2232c741848d4a37052fda363 GIT binary patch literal 37620 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Math-BoldItalic.ttf b/frontend/config/public/assets/fonts-katex/KaTeX_Math-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a8b527c7ef6b56119ef869c96947eb0f3228c20f GIT binary patch literal 39744 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

u;albMjYz@PA_< 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Math-BoldItalic.woff b/frontend/config/public/assets/fonts-katex/KaTeX_Math-BoldItalic.woff new file mode 100644 index 0000000000000000000000000000000000000000..8940e0b58013e7002cc8af7f77c2ad78460f9411 GIT binary patch literal 23192 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Math-BoldItalic.woff2 b/frontend/config/public/assets/fonts-katex/KaTeX_Math-BoldItalic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..15cf56d3408b3d1afa9ccae05dae5de94e91cdce GIT binary patch literal 20036 zcmV(_K-9l?Pew8T0RR9108T^z4*&oF0GmJn08Qcm0RR9100000000000000000000 z0000#Mn+Uk90p(jgHi}+36~cU2nvDyV1d{K0X7081A`a~fldGfAO(*t2ZLP71N|9`@9GKPS%Emf;`*svoqsVc4-qeeyr<|_A=Di*y7n`jE`KG=)Kd-EchN(PzkJfOv za-XAq>LBp3Dct7%_n~0($9b$0Uedky(bMXK)!+T~3gZ@DNEsY^4)Am9U##NA_EyOl zgTdC&i=?)uM~qZdLIE2DqcQTzzSAr9qK&IGF3PxQy$bK&_a~jN@0}zIjS?G$cVhb+ zFo^=_Bqf5W6K)gG+Ii{!=Cprlt9#z=+Hz|b&V-xHX^JVQ(?OE0M*zt-*<#B>N3xVO6Ht;A*#4;V^JjIgY$(zQG~RTbfSm6V?j1&H zm3mX3^qk1|oi?V6^MP5mT892f_dhF2@H8h}@VDvkU>p19?4p}*MNLtst7e1qRDa^T z+dmPGM73Ck3Rkt**=wn(D@~u*rn_P(=~r6+-K^1C>=^+8T)(dr(`>nZ01R8c2TxIl zM&AeFP<_(;5QA+40Fe`HFz-MDYx{dsM0}8}l;wc`^-b;1xzybw1Ivj*RgrAR5Fn5p z0%a7O1=P+if4=X>^X3_krouHV=tQ4DclTlHga7}(H`mj9by^Z1z=Wt(4p#j~&(`z; zH1k1HKz?a}x3aMFZ#t{}Bi0L-*&MVnw%F_HLeXD+MaBPrX5jxnk~}jK-qAQ|M3Uq* z5@1U*SV+PrgngT0IHZBKg)nP@6ULE?F?KN()sPly{gUn0@> zArC5)S7G%9&HJ7Ym4K};7y$6K(*RIXI^cmMW#9+i1Yj?h6cWDyK#$T{C5ahDG+W|8 zAYoKSk`?!o4wk399<*0cna%mX*nW^s@P)@Abu=DFuUaiQjd_ z?uaPhHs)vRZAM++&IGTN#WyA^l*_j>ar?p>(G4*jIfPm-FMQQUNda+I7@l)XJ8up$pH9Zv&8~^9f0J1YX zEy@yj2efvE08HM2U>09G#t%9d|3$Ir)4U<&_3o@Y_#8?ri|JYM=w2vkVj*_k?A?1* zUi-##HsV4=6Z4_M90dL&YCzPlqfqWbO3+z0RXp1UY^J2>HY-4n(SW;f5u<~HI>Fm` zE(GocTs@(_>Cq9!4j#rST<6(SuS~vXbc{yg?hM_RS*KG|&A%;so>$L!Sjx2@(q1th z#9%Q)YYxMd77Phk`*H|CP4N-3b)Q?Dd2{Rbudxr=S7^Cv+pM_Mw1~*eo zS5rG!o`hL!13Uk?6!h815WJ)y7zo_}VwTiRM-wGrDJig)wbzYqmPgfrgkFr@7POZice3GCnRHZDdlq$v0!`=m3l*G;WlI*P!~y^b7aEwIdx} zh@LnC`p1V1=Sz(lCQYx3j(T(Suz3`+j1)sx~* zbQs7me&R5Z@d7Lx0k(|;j*SPdO#q&)1%@^ejBFAZ+hmIrs=#kYmVm#q9Q@y}Cs?9! z`nV}~!p+ct_zH*wh=hnlh{T8_h)_frsx4SehM9rVoS2K%*fVQXVK8Rf);?=0P&(z_ zQ9~M}1;fS{7Q)icgl06;F;`74&ZzfU5VH#*2r<`fA(a$q{tM_St@mJwB{)=Y$4V__N~3h7czeASV6T0T0fTn#}|$@svEUqlg|fvmUngM(7 z|ASQ<6+(K65vrfh3+C0wjvas*yzOy%P70q~OvhEKCo~!RG*#6kD0uY+yy8_~U%1&1 zKjmz7S6q>3brHQcAyHFU@NQb4FuKv~B+vtW4#IS9a2(Ime8RDK&=h}?7LOiHf{(1% zA2H;<9av1S$v2y2q{6_a@b3^^@f*MQcCL;v;ygy?zn{A zNwv^aHz#FJRAcZmOqIl*tUm~8;dMeVsD0j6NBX;(ot-YYYQKVy7rWjK6+CS zBJZ|ap3)M5hZ=Ud+tSoAl^H(xs9dR7?HzaiioUzZAiOKAAHI7Fwr6mThFNE-)K3%$ zW99zB6lHdorU#1|LVM*N+5|kp@Pj-$Hw-+s1B8w|&L;GUHA0_+(5G-8Y)>Qf83=tA zLZ8Dmw&xN00))N@p)cWj+sg=j1wvni(ARL@Cfh}*gwO)gMEJ9MV%nQzHb+^>Z83FA zFmc;}U2B{46~_7lVH&ESDqp9jVa#TPISBY&zCnG%SjY&AkTwJSUzzuFdV<~NpJn6YmL&>Q9|0bqMe*$II9r_VzG^1jiCfKiWe$DU9zQqVKWN*IV< zLUu|+2{aQp2e-`R5LLNM&U7a7FjOHxCAsIKc~)U zFtqxc+j0Kleuq$RWV&p4kY3NK5pfWGi#cdsKx3aZTm`>O#Vx2S$CF*PeMl*nYu8lr zOGw)lGRaI*nh6_0F_+C!as2-r2bduc{$m1D*%&h?a?Zc`hWjhbtRWuy>`f44!W?tu zQ56Gdz>b_8R28#vqkkjSwlWhI;9FUK=`VCDW3*(1-{SO5;y2%XfpUOY*bbaRX1kBI4~wh_ny#H8M`d7(N*XPjlsC8N=4p=1V4A1wLNA;g z5RH*59{nnQ`bP=~ne}<}TE@Pfq(5-V9GR+w%HGY$E*TJfD}UJeG~* z(LzDVmi zPgBKevDEO~1#Ci;2_`!|<9{QEe9k|SsUvgKx@w8dXu-NUrQ&?zi^)l1-cJq!-DMqq zL&X9u{iGZ%EiCP4+u6mB*s2WSL5c-iyoOkib-+ag{PQCGu2rYST>4_G*W{5VpcVO> zQa-KANrk9}jD3)Na^b7c#2ENU(NyUdJS89?S?q)Oj_h$Q|K`Z4Os1BLFjq#Q;U8%A zr=_BFDHmtT^6PqV@#RV9vK4x?NK@HdTEkjV*t)`fCB!B9xPy&xLz-q+qRQHls~ z_orBe`iwLhY(Do6A#{~TX#Dc`TnKHaWPRG1WNaWB$KvELZ9o`Rne+#YhZdF}PM}R7 zy45ikqel*2NHk4oKU&HjmDzuTuQex(nr2H^Q_n=(vrbZpQH ztfTTR?%ggqxy-VOwV96Tu}dsCuH1tUFWU3{?qwOj!@L{`4n^0{Qc*T`W4NUfz`RN} zybRk>(?-Dzf`F@HC|z^nSRz$Jm3`D^?RBVZvpJGP^a{>3O@MNd zS+jg>c$-$;Htx{3Two3|vx6h$OXQh;@E6CK5h?=qGX!gwu$rby#rr&7hrtX;yiFK( zlKzOY+X{@PSMBJXp9GxH55j|g5QPvleNKgbYLpLu-UzA~Sz;W6i^bfE{4#j5HXDZn zp}#ZpB$skZ(?x6LGLVN2rDF)CXG(9_@&i_!@mMf}78$f!6;wKTlj<4_yky|Q9GO-? zP_u5WpdfY`f~pvL319AX!-u4e!`kKN{zeTJ!jFeNU|6{ZEo)B*I9xB1Nqq%N<^4wf zAg-1`IeYmX-WZmGH-0f2GCj;aoZEdmx~`+aylJLY3;WueBgchHgC<0D5WeQfacxJRqVp88$_|M`s9%*zKR^gBcW3#fo_~jOBnsxCy*z}G?N|_Gkdd2V041DfQZ8@l)fbXybs%>IRODAWZXJHLXNYI^s+#nY7=%lPFS43DUu#z z?pP3j1p36WOFEopUZWYa9GVYI{oS^1uUkB6|*`YNeB|LS& z6s=`cqnTwI;Je>==gV_wvG|La?IYyf)t|$dE0j7vBgE?~a=IGD9Qk>f-9Hdo{908j z%eWa*xkp38e8~#+x4apu*k^8j%-n7crwVy*AOEA&*=y~1=#_>%xXZc*W*4mGOP zdNCoav&*MCZ%&rL{$XW6ap93MB1l3^-r4miYARP^^O!LaMD5UMmMi5dm&my5!H$rz z(3lJcmMIWjrkXtzl#>NEzgMOmU{nhQ5yGhVZ>2ZKfH1_;Dsmdsjq(h1jGKNO%qTMW z8N#u{FAX2J{CNUK(C*R?2`q9-ArN_}lVzi0MxcI^f4 zg&h`{7_n3~yLBIDoD+U&7}p6@C9OwbUX1B)__(}zwf3ph+v&=3vHRWw^{uX1Xm-snew)52icV}nrf@#MNRNzd95JHs}(imr3)?nc_V zc&j-^vFK{E*rg{daeTYLl8FrAsR;^cj{mNu@+>JUGuqz~`0W?NTKKId^+`kwjBen@ zD|TKuYglp6uTxo`rwxK~%ZsO!S_=|6($WhO;NA3r&fS=x+iD`}5OVw{pXJ@QBt#~- zo?)4#TXcS3vtPJu?}De^ zAx`PzDA}y2j;AQ5Ww``d!sQ`^Ysp2D!ew_$Qb{vRd-edfhF3hr(~JV(DqSg1;1fDb zRXtMiBn!7{l)!XoJYkjuPtP+UkYUC7Y26*jN+mtM1hzB0g(pzw!#T@Wo>^>wMQwr= zpUl*C8)$Zz{aQ>o;Em!~3m;tI9Y*UcYRzMMS6wq7fT;XandZ}48mf$08$v}%O>wUR zW7O1fiBS#-?3T+ldw8@4YqYTIyJUt=w^i^!JK+!q#L++sW3HjqaLbP-N^l)l!+HoI zPE01U#gK_>BF?sfE#H5h1Yu-e%lAVHb9~AkPfTY^gzZ=eO-v`xISC7(r!~ANu(??e zj8SQs!V0bKG}pCoy9JB4*XP{^a4RAnh6myzT%-VwnrEaKd^sjf;%u{D*P(|h6E&vR zhdKK2IGx@(d1HuSh>@y=KsTqbMb)7exQ?)^s+wjl8Uqm+UST%(nqB)uJ%SLR7H0L6 z+ANW3Ouy;YuOKu-ZxB_!H&WHm7uF)BHvFWiKX89x;Z@4K;X=Td@IkWJa=))|~qnZolK%2vDr3Gbfh2Raw>x}XS28+O?E6Dl*_YdPISv>qSjII?j4^jDye2miO zj=5#}bqkoOG;h<%b1BV4P3Gq6HDRR0iA;k$W@gM5810SXq_J8i#DwZt@W@RdT52j! zG9L*Sas3R}i(Y1rGiA^1M&ohv#Je`F(%Z6`H4@$rgu%1k3q8s>xfOQF!G&{+b{RN) z-A0dks(k}b@glu4<>ac`jEzKGuW$5h6_)akSVOHC;NAj-V3Q5BH^nCiSCH(Dh^i4! zi4?Rlt)Kc7=YjMInL&oYDu7!jS2ynf+D!>oBevWdVM5hgf|HiK%~oB?H7pYhfkn=8pJE6@1Vq_bfO>SNH9ketlO3FWLKu9xH$NzVDegziY`_qk8&9!QTjfj8 zZ@vjDQa$ow!JH_Kqdnhksc|Q4KaZ*a(u;x?ocDvU#6H4p6E|M4c;Q|YwZ?XzD>Ddc z0UF=f<|(JS_x>UdiZJd1avYT&MgZYlk|jbF-3VrMVj7HTvETxfT3H~c&dq2}SrIe{ z8+9Gqv``bWj3(@;CarM*H;IgRU!b>QA3LtpM{>wmii*pK3(%1qG7tRZY3MUgBjo&6 z+vaUx(WpCF&Zy?@N1>EnZX!YWm0LwZvzX^bfZ+*0Fb`~bj|v?wa+2!fGu?3@1$pV% z`o=Mu*=`Es|HIhK!6Kxdr;PQ%y1VlfDp@%3$S)QnPiRRQZm<844u9Mxfv}nqEe|C@ zH-hv}(T1pTBkR^Q;7P zoYbY@Aj!C^i);#7eM6$e+Q3aVbZ+FnvwbP*zVfW-y$sevj+`JBDatJJo4W}3dapoS z`+*6|Z&qt7X@IlMBkVn;&QCQ7RD;o;(gpHfTL(e;?IzrW0)Xv(CCh`4IK zse-6qx?=1R{RI>O^{w2n)>3zmC#ekLLH;dxf*p{v!1}UroXTw6TUZ4W$)d{#2N|GV zDitamph-X*NM|m^XrNv!6wogM8;r_iY3S@Zm!gY2Z|^24n|jLP5-}0UtaqX`;sWL^ zLcKaS#3;fM|3LukN4AjLTJpnAXoLTa9n=g+9CP>~LqZD>zE!zT=xqY?o!Y|R&Ci-G zr!2H*FR~yOjfW}mW^52+0c^Tv^0V*gr zmLJG}hFoQxK(RJ3N81VF0u-NGM+G~WQYJ{|43Hooq$7Qf3{Nw7Q@$?1R4sOcZ;n>b zJ#Nsqgv3;GRWHyFF77;7LG}xLDAefg$|F^!y3Aj_1pGWRBbuYVS&&{LhliCAWf+b| z*pXI44y15T*Ef+TZ+v~YwBUN1>%J*I*$H&X#^vKsG65WHMl_8FtP=lW*IZzZa;ASZ z15kH2aH`x>y+=80!_E?HQWbz{r}(a69!^6!k>8K+ofPkD$?Oxm$&#TG3g$cbZfkcd zz2M+jbIaHD3k|9)jie`{Tb6eSpRsrE_0{W>4f)N^(NDMRr11(mS~!OL-c$FSBP zU7Z}DF7Ib`(3E@%_pVnz*dhG#`WfH~(f>8J-07?K`WQnAAnF$c1dy#a7N&Pek~yNz zE5~*;9&&^0Gyqg!R2^ZGmtpGB=(|iZ@u{|v5CrW!J-_%&Lq{9XRPqrQ%u!PMckim& zjiWnDNN&11NMJ89D28T4Hg*`vJ7Kv01Qc%kB1Qwo4V~Irtb3M0G~|HP;+ZpN@aaxc z&fffBcN4i@y)rdg9b|X60dW|XkITk27yft-37U5EQ1fak#YN&dh7m!~Su_WeI3Be` zAP=qY>Q%DKV&(}jbV_3}Yc#O+4bVrW+`rbGMBNsT zbJd0u-0q7s$p3tScnbO(u%mvX6ZudB5>!MT9aR|Y0->EdU((C>%P~i&O zncpW-A%OZckUo`u7+Gaxvc>}*r~vnOQm_V4+dk{+@&!C@TN2a7Cux%}`iP7m1B|>Y z?EMN;Z_#Xqwn*Y~Zj(J;6&&f9t(BY~nwGF}`7kIJrnL}iRTVYXQX4=w5)}_FT*E^~ z0z5LD`47XVmE5Zh*2{a4$9qg+=J{|R3inXBTJ4o9c0uY65^1-^~|ZOu^TU)HF637Gn<8v(*?D`*gSk@1W0v^Jec$5b>V3d-w|0|K|%y$r$)`oKM{ zSdhzLv3i|HWswchjgagA6}LzfAI9)s6M!iqo7aG>-?w@aC$rWk=2s-nWXH$0cjL|7 zGOr+DKQWt{<2n6LO*9cQW%BSd$`R#+yRNP=6!k;2e6+RP@kA$Np{#%bEj+(FQDd-ecUMpss$(MWb5-N=F2gpeG zf3N?Ma|WJ^e*Xj89DN*_^}tZYpS*rZzpe|!|AAE8P&}Mt)Ktos&*N5^pg=Xyp(7Kh z@A%&;|)0Koe%T5wgv7@%5B`rbg6idms~R3z&@``-~ZB~e|n@|FT$i| zLA!W?Y}jG)+bW$5cXvrt8@a{}k~sR;c0YMDz&%_e5QX>1MSWNR^85Pem|@n>$l8>k z%K{=)P~1lL5AYzJyDlU~@hM+C7z9>Lt2c1nKD20Z*XwsbC`21Y z5cB%Rw6T!lvXK6w+B{7MWg}8`bZ=kK;6rX`W`|cnYvMjt@Wq~@N>+mw^Kx)skUO@$ zqn(S=EpM7%5-=#{ZKPR{5MUBD3hM>O6^)YHvGTn0sN4J=7C^&j@S`;_1oGECfSDK7 z=?3nX)2hwLNPT;8dE@L*H*2zE{ewst6bCN2=5o_KYcWfJY*pWtRa@T|iq$rMtDd>mfC|RfOha z>T{Oo%qd`X7tV9XH6`cZ4Ocf@@u7=WA$;Xw3Zb*rAZc^V%D9hI4B3_ywSxko=~}Z~ zAqtU%7sQv~qMDMH{`*?mAgxyC%`-(ans&>m#3(Zlq6*&>U!qK3cF*z5*;yh+Nfi(n zuZ)Hz2Q&7smdH%;MCcgzCa&5UM#+bBu?_!NJAbL0wK4$P;3q z*>dFi&p_rP2zB@281y-r)^VC6P3Rr3A%iVW}}VFm0|qlJIIi43?=jN-m7twX0DHQimGvmfB$K) zH&)6bAw!?xHF%;NkQL?c?xDyRulR%-YfIJf(IWc?rWZ)y&^ZQc2t2J(-p_1t7Zidy zSRpK1B3}wlzhF#uHbewgq}}C9CJl{M-lA8Y?zkSu?kLP!h>Z{rBU@ODyU$p!Msa@IV&8r5 zaFrw&ItQ26TTCqY@gHBlM+X~r+&&iVSC}^}<9jLqP~Qk-zBav*$dL{)p)cHMZ$|l~ z1L`g>msVulUwV}w70a+)k?7-0S#<0ZrTR0K=m(*4T`x$EGThZm>gjMS0l*vMB3)Wd z5CZtiuR{}esvYS@B*QFf=ZeU6q>aafAUu^2hGB_32AuEHj3zmP+6HO zv3QFLXdbEBrbaN>@bCw}pbB|lJUp&UE z<|ACwi{@8&U(F487})wQDxbk)z-yFTbk=khhLooY-DTM7T#YHWJ4%IxKM2)Nk|}W& zL-O`p-ZIM+5T&i*{nuhwvsck&C`=zw;3vG$cS}s8*11 zFWS>f8-n;S5k2yOw&1z~TI74|hm>YMD@z9L$>Xcz z&2#gH2AQ>F1ebjDZHKt#!5J)yc+AjwZ-0nJCMqobaR#gX?jd6Z1QpNh#Wr=0hkc5! zz4iM~;Z#>D#;(8@H3sU-vn6GKb|)l}BIqJqq#6{9F22f>0WxC^gbXTM;x6TWi46aQ z*W&T^PpInfOM>?LJc-DNbO4nUjnCz0cWKGi>E~eHees_(q zqUfoD+{bmx@l95<=Z!S!y+_$Z>4ulIJ9Bnn^Zk3Bca}J=zhppP7QQ%?I0Wt|boo~b zf(!H=HO#z~sA7YR|0G}H8;4d$MRn|A27BKRLJ#x#cxmA$j^x&*O@|2WMXgF%jp7Ao zDW%osBCcw^dOcWJWZt3OWruYLgNDM*g@TU>IvS{)77D>uPj8J7v(?H|ZB(s+gj{Sn zC+=B{&6mWeknzLGzG~u`(S=hryU-vS;GU~vKZ}0{RX%Smq`Rtut~IA<=3tQldC$DOh3T_f4)jq1B0*%+&EcR==MJdj z=gVo7oJnxmycV|Fs?v<*$=32Rk?oV(!jtRy)H&u=ZSMN~hmXGgs1H;nf)=aSmVG#1TRHcG0sOi>)TQb zS8L4`Z2Yg%ny^0_&U##lTN8)M@`nCbEZwoGs6qt)ID^oRZ9eR60!nRTrAJuUZQ4RoUqR31tvvNP zjqrv*_W5Zs5!>gk<}L-@p4*rHeF1xcK|5UneVVP0SH;I!G|#Um)05G&i$JRd72CQi zuU6OGzOTTil8%N^6HR#NyUVYcI6}V`qC7Nu?Pj(vR_Pg|m1e-9MA@$pYj62IcZ>~~ zSorDG#8X1X_}aQ~f)@Izs=#DFo40+4p0*-}}c~eZd2+R-Z{HNIDPEl};^pJY| z1(0@sX9DC<0;2Tn)2ibgRW~H3QNGI<8dr|-WOo8>} zIey{nr>5T4r+mdNwPS+0lJAp^Z3)+d&pvJQDQ6I$J<-w}PX>$b^NkC;u$rUyK!q0! zRckOr`2y4MaEVZf!sTFpACUKJaf<#Z9vI;$U&fFyDDs{&U9PkDm`H`Ytm@_SkadR$ z?t$F`C@=znAza+l0&2U09;=lvM4-Y$;J&hsJnzbPKmhb?6FCnXkTID*qYc3{vijCF z;1cZEat~MlI^ixl6_rN8wukUQ%wlPA+d!%ZVCN15HP3t`RG`#6@W4TXIjhnoTJQuf zu1OjER>-zxTf)?7vkJ#l3kBrddvM3_gI}3ZLC_)H!T}+`@;z{C#6&%edLmgf*3OqT zgY0-pqaATN%}1DYtbtRPy1jV3B2eZs#DcUd$HI^J0& z*VYmCc_VxI>aFUvAXHKrj)(;={CRTrJto<3`ueV_Bx^QncYvFUI1RjTb>YXU(j8{P z)y*m8ch&FyxkA`Z2Wb}*w84^F?YyGFx`sz_lmtNtAnb;~(vq0L9De6Y)lmFt^R0-x zvWn}U0#Sd1#9!P)Vv4WS#8bs<85hpK079juj5^8n3*!aDAc3uF)u9~##2zcy|3%BZ zLOJKV_aG%${@c+T?;(UDUwY!B02p=s<@KBq5Gee?s?wJw`njsC+`X<;Ht?9t z=ovJ5Rzf-3lRWL?XJB_(V&JrI5K*;vLG6h^o;kL-Hk^~&MB zn@3qFQCWEJy0eO9h!^Z-uz0FCLArZML>L-a=n_!mhalfCI!X)x4(Rz$N3ZGeMmG4d|6JS z#r@87Z&Uk;&OCJDZ)#?=IYle48ody7bDLZ88%msC$f&14c#qP(S1w*%@S$36ttF%% z>wR8G`3bOxoE$I5%&oPG_?GNwau*zMeO!Jr6sEndn zs$;{6S3Z}Yf|MqZEEN0}-%REI!)K_FUcH1a!@c)pDAi@O=CLRCT*EP$^2bl}GlIqe2<+&jNEg`-P_4ltBU_=)C{|1_8_5-X zM=%<7d-eU-2oBxRQ2J3B(uid}5vVTybWVQfXqxE-kMYxe{f)K=iN6W<2bW>+7`?mp zl*g8RELZ%7Nb!?a_^f~iLeIC&K6#jBg`f`jC0ajwimt%9$4_HE@9Et~9bZR5>BTh; z6E#lKfUo)CNf^{01|kn+SbUi&U{!wwq800$lP!*m@G$romwx6q!O~6}qt$U#9VF4R zD!cXco@!^`4NZ67+xz9&mlr=^{3=usIt?O0e!8{PEPRV%oaWaN>HUYGA2cBpdn{L= zV5g@U4TzxmMI*TeZnaD}F9@T)JJPgn$&2$caNYyPCt$UfA514qR`n_n`T1NB=JL4Y z{6~zBe$}iE1)3X_Bc{1s2I3Qfo-gT5BzEokv%tj`W>@!zcJmPWjOq=a(63_F>s|cD zNae>90f*jcY#!I6WIhDRNd}VB>Pwi0VZN&{_5BGCbXwn9NN{_yDrG+~u|X5p=TeV5 zf^8amVXj@Kvf*@qn)Q8J6D;nanUa_k)JxM8jTw-P?<#1e4D!CO!oQM+2ZW{Tn_<}eM`1nEBXsehwoHhl4fP|)+W2!!Y$V+YD9nrktz&g8r_aC<*Gv5yBvifbPKa`4UtzV{W5MF6 zU!5!U~p7rKM7khG%WI-7~wQ>DfyMbPPBZ`DH_JHsncTh!)f;& zR&#B_hX1=JODMllY=2Mi@MqL?f3#k@Owhh=s)q*RKj+y*t0sH=Ys3(HztRrb^<-i! z5{bofWt#0~`^0T=ttA{w>LNR(^UN>=L#Rp#y zMaq~E2;NLwSvaKZ;moSOjV&DpoxHg}lQL?h>e1cZYs7y{Ar5Fo%qk@X); zh2`dfC$2a|5)zRSbbz`6g^KpLZ7}=ZcMvYoCd^XAJk5e}7Hp zOVSQNX#n&$H}ZPK#=jr0Y4>&p`NkV+74haVr$0tj%XXThm94tGyhk3Q>S zedgIVA+UhG-uGR=KL#7Qm_(;w5f`Jhq{15{gN$H~1|r)QU6n*_MS!?=n=we1KMHit zqj_^cRNBku<;U%6k<+Q?7=0=5kaw!a`)ia;a0f9VEQbmL$s&F6i;}Pg*|${0Olqab zAnZ(=0&^OJXbL9gf~`@ETmry@M?qi3VYh)Za4Jt3y&WoPWi%Wu$`K0glX3tx9rk{z z64IzhMGm|)OlU1k#dHD@)Ip#)gR0kX-%0j*z0R6f5U(pm;-V32g;SP0tpseWWYpwh zT)bPC@}wuG9;?8S?e$DTo<;i$A*v2+fCY@xgsqq{0C`zl)MXB9&_8WMF?H4GeObU$ zh+iVgXI9x7&shNuflCXq$KEF>DN>0RkyDCIU`WMMqXcl&hg>RiuHK`n2IXd1j&(aw z2`8FHYOcZ7h(|8$oi{UW$+$I5l8as9T+`A)HEK^A-?L-}WOa0)L~6O33PTdYIOXuA zMk#}0saBOb^$FFksUmL`>s-idFE_>QjKxuUYEwHZ$4RzMq|KO&5D6*JRzx8)*dQgV zon~Bd_<vAlA8D7ht(9+qjSU*PB#7rvYr^iT^|CBN-?h8bCGdgoIzsg%y$v%Y z1ONIy5g_Fr4MzuxDrxm4OccP{Ns&UG=}xhfay`YI2RR}BNFehYm1rt-z5`pUIC6;r z@IC(fbFjO!y|uYv!a{!zR(me&(nDCBRmf9XepDO5Y!GiJ30vi@IFUI>O>pv=Ao=FJ z!#@2Jm_!A%A0*C6Hl`bA3D@#gl5pHD zJHjP5zM$`gQrfSkpAU%Wn3M-sh+<&5WCBIBHmXX5oa43?>XJGN=^u_EPjw1anjCyR zCK;mn(vYgJ2~_RY%LPkZt2>he6aF;Cdmq%UPedP+@>ZlnL((!y%UqFo>Pkk$a0O~6 zS|{!n4M>4kFG9Ym)4HOOYj!%Trq3K#I?7Lg2*t2sjzet(N?2mT)+%e1HRt6LGP9ss zu!KvAF534jrXQpd5=4_UvBC@0S#$8=C%_<*SS}$GbMn9#;QFnq6I_AI->maAl(}s= z+TBYer+zEcdm}W6R~Fn`i?vQM-QzjBzhD zEwwGKibW0E%~P<1scBV>b-nT)UL8UGDJ8~C;=TJKSU^2oqeTVR%9}!w!>CyzQe;X4 zgUHC~4sBfX3LRL8ifC#kT$gXr4QjoPB!JH*1HHgke6EwVA-|_|H?L{D4YjnQ#(oLu zGX$?(X#sy6Lz)5donZT{eM3IhgdV~W)U9uQ1g=5DeYJ=ld#dDkJXm(?L!l4CT zz?)<1ccb-tw{n$qfMUnqKt<{6kOL|ZMH_?*d;(t7!ChMEfO^@(GOA&riPv!PqMdBMqB!-f*!LI|4qOP2U!V<0D7!)xoIo3fh) z${`#I*GADzUpGK`o(=Zy>gWUJx6p&Ba}lxmjUhxi<&+T=fw{Q-fI>k20q*3mZLs5k z2DjB#8YAaZIqXU1DvGq}b!0)CrdfWn)&?9kxj66M80gMPl60#pQW&E>SS68;KU;z1 za~ddsS1`d<1vcVkE5I;4?}ZyHr=s2?4hP2j2^{8a1vKKtO(0B^)K=_Lovs(3D3?a& zU>LiPT$PJDW1(*u-DzCGE336=20f$%l}AW=5_8wirRS&wxv2&x0$27KPPOW8Vc;Hy%Q#cy6vSrMg(cVi z>0dz{Fr4<(#b1>tk>}`r?auU_ejwwK8pfXDH0GZe={Qa>FK*@Zl6>}`Acbd6*eon# z$B7wrR+8S8T9dVgeZtlJ?%THJc&s+;+>|+uT~n*@Gk;#KEJMQ)6g#}(l%lJ}pZX-L(CJypkjT_)BI=?-AeKl$gh^M0FU&Kr`LaE4DZFQ*z+x;vG1fOx#? z_EVHat)6jHd%ouDsz^0LH4b6MS}0y;Q3Z6Xz_r^|$ymnaRmF??727OTUa;snqFe(^ zJXDHkX*2eVcbc6rloHW#Y*>L@1=5_v>zB3FrTf)Io(|2zH3pL70dI9yBVjUlhbc~g zw7wvwHq?-cFr5x5*=WY2UDm4M|hm<5PgoGdYKcQ zh#R@+>tB!6=DEdR-Elr@RF{HMT5rRK(n_Q|$GF(vJO9?Pl6)E-`Fv&UHk}ZF=_2y8KM{b&yQ!gpHQWu%7G%{jSROvdCr=bI_i`TfSXA zL8B-u+`v@fY@-+|u%?Y+#9-On6;_IM z^C?Dh%F8I=*;R#TuG7zCT^gF0=l)CIj>mSC;(-2kP~ijT#*o0^45~7+3py`fNwhhybt;ECy@aE5%RiKzq>{i< zO|j~9s_!5G3K}?a^87Vs#B5j{JDuq=_(OHq~IeY0SGPqw)UDttay)&7uLk@D&4X|_Ek-B?xAkv;f_qV9kX zVRH6`BrTD;S#ol+c8e_obbAXT zT4-_^w|*fFrz<6T^z4VwgH=rey>p9Z5p~!6(LIN%%(=5R?NUDL9?i?gTDh}l?&xSX zmsvH~ARQ6#(wnH_-7XZ%=sr1YGGXp4HKr@+u@f;T^;UkOhJgd%WsKiOLq2oO0@oBJ zcZlu*M9+*!;0sf9JzdQ+%216HjuWvJwbM3@kkWkCi+Uxf9VJMsOjoi&7xru&xj%m2 z-kgXRB;TFZeL42)pEolQtfh_$k?H{VLuBfqS4{};<5#%|qD{M!%`<8Ju-9Kr z$HT$mRh~w^srynat9c-Ai~8wX7E>7>!Qdk_Ek?M7#-yHQs#_9hE{V8vt7KahG%^i2 z;T)dJ4pPiE!;&xK zrMS&bN0@C&Mb;@iMGHeNmKzj!Dt0ed!UmROh<9(J5wF{q3U@4c%*Xk< z;z|(WB^cn-6VqXgm@2)?Eryy9oG|H^evccC!%~zk7a{?*iNKT=Ac$E z&1$(tWY6JFioiWnbN=+ZW9(MB4T$6=uYvs;*W$6NWaatee!iDAAy+K3&*dVRjXbsB zJ>M^JK%*W@5#+G<#;NeT8%``xa+5i8CO9mE*x3eDm(1H+DKB|sW#STj-wyuxaS~5* z?GtxE4JUMlgt{!Egb|R z;FGq@Lm`L9L9+~j6dbHQrowz0h)%Td2RhN=Vo=jh=X^CMImuA}5fAW(>64&Cz0|UK zEp@pO$H;X14sdC6JY@Ij*s*caz8azlhe}0|v3NuRCqry!ap+h*2}kfq8VAcY5!f9t zpo|^BI=aZd!%u1KCQC`g6X9)2=bRFM>QJaO0Wsd^75(FEJ!Ry(ebZb`hGzAsiKm56Aoj$mW+`!B_cr!CCi0Esy%w>3KoaeWgPT-1C99ip*`f{ zSSXUtY`MY041g|w$z^831Q%q@FN!U4!M;pd{5&*u$$1h1Gi>Bp&W_>c8b0*6$`55R z8QFiq3lsOt!rvjnLFI_8FFxjlJ9IBustUYL)Ythu21-|v7~S$CyFF+rv4Kh%0)zs# ze&%Y$sKAnGUlFHM#yOw|Rcdh}i9;j`le7@y??JJUscv&aMf1X&$^riznbV(Xtqzs# z7Zpo9N4)0!bEksDZyC0e0-$#msAYM=!Ms;>c^Xq^P3S_^*V~)dA}e(rUyS`J@g|3% z9HNLy(H0t_F##Hf9@S)vNRnSPx&eE?-B2v-ag}W0ES%YfNtUWYjpj3!ai5X8P_&x( z&82uqjTaO!l5T+f>6MN&y~C8S@hBg{)jDu=zP=v-9M?{-92`en?n8^H?@x-eommRVSD~2|M{j+r=ImEID{wkwN(tJzxCR=<-fXq3+PnZ zd1TOUzpH*;*fJQYFR)x70DY>b`HU3+Q}XVYbN9N{3;+P&4hTvi@ZmsyVr-ZEnmKzy z*BX#LCH5az-1nPvdm@#FzG3orqBE9F9^VK2>|U0E9`^Rj=*L`fIigBk+A){MucD7g zJdBkL+}OqP_;jEY1ejf=8yGC+S``3#D6@-`5BmGII?=5pLjxRN+ee4x+SI?c7EaJ; zG_EA~Fg-q~bt1P)AFxAi{lfXw+#=AO0ei-=S&r%yG_3M6M%6|9dykp7$G(o}0&V*b zA$J;KHL{FgI4EuYN8Cn2E%dol!VO}gnJ-f7rYmBc6FH%CcT?v+z7GkdN6EO1{(;@M zDg84bZwvD1KJ+SU-+>NRGhZm^3;;I(&~3K{px4?SuKS0WP{=p{SU=2}NrYp|>9zI; zb`XXC?GS2|c9=L5b`oY@ZzMCd*iON8(9VwWT(xuXmdB33Sfd0LRy%Rv&;bDU5+Gqm z48E}wtkCQn_ol$kljUx^z~x-Gx5#wa+cxhidxzCx*?aI-8`mHG3h$OZmNVh8k`h5p zs>A0@>A%_@$z>$$BLPOtn7h*$$rDSY1t*tHq(-gsuW&{|Gu)1bipeThCXyyM@m#71 zHCczxS@x^_e%a<3>{H;=-$nW$Y2$kLEH6-!zE=b9dzgf@zyG{S}yj1HHgZ(2Mt7)!j~0-+7K|RFZJZ)KCm^A zi+l}Y?BO6<#pV{@;lo^fsk2*xkG>aGYl2MZ>mxN?RLokxLSw>ySL|l}ahim}(Fb(L zaVIL$n&>0UM2Fi8Atdx6di05pu_MDJRHeMdnn)G9w_EpsvA$#VL?g&!`9j_bIx%FC z1sE{=n13`d1+%(y;v8IYPA8+?&(T~fjYn5^!72%5aX>?eX{bw&6K)1WGJVHQ5Qptwq#y$laIxr&^4?3_CIJP-@1CcQZ4WxtsFYJ^zwY@ic`R-P|;KO&B?;b z#?Ha1Scy_)%2n|B1Hn+Zx~8_SJ`#<^6UkJ%p|PpCrM2yATv!Uc@-O?SG~F;0(`?7} z^bP2Y543OeR`#$t+}y!4G%_|ZHRB6}BC!O;q_UZi28OfjL$+{)RfP-piXtwaW7REi z_L*m|dEt)B3YQ*SU~SFZwc^bYcmcIjINt@T3ni+uAnjhFGV=U1mCohRSeZ7@)^FKI z=WtP*&1D9&V_vcqOK&jfm0b)JYQAu4H5YNPG^merMDAfYa=}(qqP>&~Wiu&NHB%DI z+=e=9K-=v5_yYmo1piBz*61=?{(&keT%1iF{0RR91&?S+n literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Math-Italic.eot b/frontend/config/public/assets/fonts-katex/KaTeX_Math-Italic.eot new file mode 100644 index 0000000000000000000000000000000000000000..64c8992c477ed0007844d3cfd3f0f962eb91ac89 GIT binary patch literal 41676 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⋘}=QksW*@c`5tZlWFk>o)0{pf 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 L`ga**&^mem*y&Pi literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Math-Regular.eot b/frontend/config/public/assets/fonts-katex/KaTeX_Math-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..5521e6a564de3076d4b790a9db8eb302333a2916 GIT binary patch literal 41536 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 S_0RvON*urNH{buV+h6p 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

!XmQm{Z*H$HU~Hnp-n!GpmLW_S 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 U&j0`b0LJ+;PXGV_0MWO6orJ?YRsaA1 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Math-Regular.woff2 b/frontend/config/public/assets/fonts-katex/KaTeX_Math-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ebe3d028a34a343fe4d31706cf3d2644d646cfad GIT binary patch literal 20344 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 bsAcs`lnHTDp9ZHV&mrs1L!ES5y9WRO97-I# literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Bold.eot b/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..1660e76a2b6ea179340472720b3cbd15acf1ce9f GIT binary patch literal 34204 zcmeIbd3;;PeJ?sQXT`n)1i%Fg0gwa;uHYsv5J{1eDOr*wTcjo1qNvr@W-VS4XLFpy zQM1}joM!J$>a0y5+mfBVN!#2c&AUl%v$RQjo49#N+B!?~oV0ai@P2=D0Fqkl^tSJx z_xU`M;5lbz&N(x``R%{o4Bq`3#ydfDo+na#09wv!!T^XxXZ1Lw!tX&eu*Q|t&kh=wMcWGC2Bwjbx?>?T=r z8g(boGQoOS5ubH9JA>bYxc@AUC)i=MIF7RfYh!oGR(-4;PiXrc@9SLiHZc-SkM z!cNZ2?A)^d7u!F_*aL4tY2(%%UA;3uTzoki-Gl4BOUD*Z&ffLQw_>bcN7-{rcb!Qn z+-qmd_YCSs4xT)8?5~19_!VQ?R~U0Va%l1NNt6Rl4?KvYdFbf92N!4G+|5{^m9axV zK73$tzZM*ALER;M1`eY@`>gT-Ji8y)t%r}Dxu^PJ^*UVt6+X`%J+ZX-9#+|1bdnqQ(_~^+Kr_VeUYW^T&_dkI)-#U5fz{!W+ zaOrF4?_RV&C&!NQYnSfca+_!LH>^eZ8OqtWp1cozu#VO2vaZgFU!bkIf)cn#{9;*W zH>;ab|Cj2Vd=lMK|9P1#c^Rh1!U(}qte4%5>SOFDvXS7Q5uc@6aSlhu-e4X14_ObF zc!nX!pI0*WOD}uo=e0|=?cj#}nDoRimzBiw5W5+DdoID)n{QPx#;=KsXqUj-pTqm` z!?)nyb2tK-M3H5bx3MviWj(6K#*_)x#e3N{{&BVyA1a?x=GmAmJHecEL>ZOm@!5<| zvG!@fF|+1cmdpEa4?RN|`24N>bl|v0d;#x^;dnnjOZcFUuK66h5p9d&63RBPJ<9*Y z2j%#TJxOIyypz=e-!uqJ`3WypFhiD;%BS@ zNBT7Jzrj1QY>$L5oyMvnJwY!vVs#~9i% zmSSz}V^l^kAXwtqLt|1mV;+0ib~!Iac8=x~{a_pvA(;mV6KC{kl=#Qkv$(?WaIG@X z5O5-aGe6kL7~2hY^b+=R_I}E$0S|8V*5mj7n?Gt2pE z_W4_%zvcNom%e-HFE4%T(l;*sk4s;_^cR=D_QS;=-ulBmUW;b%qW`lWt^)$KTO{Sw z8F&3Ls8m!P@U zky-qd2{yL0l-?IlCM#^A!lu&Gj{$sBdnY?9yiiH(J=j?hg~a|u8@ zhNTTR?4D1ilks!&iORNZ^T|qiA)crV(b>?#LgKvDXmNj~4Mnx9M5UYRyQ$@$Y@1J@ z6XzBa75ldNy(mdgot@4G=xktbeDA`-LcGHB3k&HA+ctk-VWG346cQT}6*aSn4rx={ z<||ryvZALa(fx%A-`iPH3u*K#vH!fbZ!$qO*30QX>NhM^l#V3IrxNE9=kVZ!86~2V$ zSG11Kicv^VCmmBuPpNDlnxLEIy$jT2@3icsS$NEFu&E7`9my47+X|Nh-)=pH=h1~J zjCgNi!@2Y#O@xFLixV^}i8wl0?`1{Fq!*{HS2$ka_DU=6!p$o~TYHm}a3($Zn8U7Y zm`}#j$%T$&XT?=GFT{q*{>ACeio1XTBoY#TSSb35nHtNW)HS}U#t>3cdWzQWx0`MDidVLXZQfGqbH z&NI){jq~R{9?ak3WW|#wBn9eDo_Eqe7yeav7&D<{w#}a>%muI}&tZD$wH?VcZmXZi zt$MlzxKFhU7|AU9Kf4!`c-d6FzyzL$vXTafrz&jxG0wTfhCqRxXJW(7`HCk!nb=Tq z04eQw@!rYAUcCN-*UOokO-`QMd)}|-D`)fZ6u=b3*aG>^N~mz2(=iM<(=k#wuh6lf za9*Wjv~XUdW2|sqr(?Wu-k@V+;k-%5rowp}9oq|uVujz*S?Q1`cXn3t^5j%!rMbW= zuKa(Zk1gn9GoGD5AL*DxAL*DvAL*DzAL-bNKGHFRKGHFZKGHFVKGLxbeWYWdkQkLD z&{+Uzyn7Q<1SXo#MI0*y!nb0f(wVPxf|9y`#IwM*Ym!oWaVSk}>_uAul{zckE7QZn zm9CES8V_xl2OFYE=vfPytE+npiIVJZAKLK^S5q_?#WlM}7nzzJcJST zWBlmwHE-Dq#9kcgtdt7H$Y^I};CD3z5-y?nAf|+cGl^nimWUUi+;r~TYVVjgTA zY!MVazJAwa@ zG{ogr-vx{qAs8g^b}d_jL3$LRStpAtCI~!{m`Tsl%V@SnCCF$1HHfmE^Tos{WFz&s zR)~kKf?UtwY7?qfq^~tmS0mTnbZutP$Ii-Ftp`)}so6{7`N|>Ir*gcIP811hGhoc4 z3&rzA9s~hStQ2E5SBuLl#j?6nZ%KZAV)H{vg&>7jUX&3q>p zYJJ>5z^DUthQ^;H$Ws?<<5(H;EQTDih!fHtbQmaB`az2uU!Z&wcrFhHDkZeJu231o zVUD1-0dP&sK&;i_w7Ed&SeXM@w-jJuOylHwoNzkXT6m1hl5IGVCEKaZ22|ZZZRlhN zwV{)p)P_!Oq&Dkuaucw?PUfi%oh(qBDV*F)ZRlh-wV{(e)P_!Op*Ax(xs}?` z$!*kzPWDn8I$5MPlQ`K&ZRli)+R({SBlKGAG8f4D`od^~Ye;(sK!C7({+ zo_aJrn*LI&+4@wbHS=gTmHlXLGWX%Op|(G1A8P+#`?KxOc8qkqspIQ;cmAgQWBH#H zItnKX-|UQazOwU6o&Q>#EIw5He%GyC@9cWEdr$Y@^z7;RZm;O==snf@mA;X_&-Q(@ z@5g<=h7r&U2z&*QP?*8Y3%UyTV0XUH*XPUi`O>{_-{0FSLeKwGFNewnryS-B5cRPP z+jcP-5sKi~%~jId=F4F`hVNFPN4n;i5Xu5m6t}WDzNW&nQsGlJFO=PkwKN9(c$hb= z>7jfe91(__r?NTxmih+=`jmm*NH`J>8oHsUbJ;GA!hh3*Q&Zg6yA{RIHD!IbdXpN^ zgwXw3ArCAQnz(4_)jmVxTvPwytNx%Op8viOnqS|k2UNkKXy)|*O}l`P;nVzs7*7M7 zjK|CVo@650U;+$+bp{0&0%LPvY(Wf52!2Szf3{nJ)$J0SvcVr4-E7TtmENGNDeMVBc9;>=`N0OU%Mi!sC@l;Ma^Xu(b%F0f579> ze}1h(@kyPl%Bu&5xX>|0#ZJNX2d*x%U@*2kq3i+-4#Rc(=CX4zD^zW_A{eL9)68Z~ zU8rsw9;7P!Ja!>m4goCSiw4&;*PPQU;I(9!=@)J2S!uXX&T)3?#L*-B7Z-Nz*uHtw z?1u7KsjsWhnrd!p2nBpj8#~Mo`}ANwk|IPH=L8uGLVXjWR6iXY0IYh$p&+ov!-MMp zx+@AIsPynOKpg5@J=fE#kIi#}KQEE zVvhwHQbs`4Hf>6DXs$3C8UZxiro|I`_5_3cM>u)e%aXM^(~p)L>56x6+{Afq)5hQz zqdw!V=(xutxTCqruJDML$&$tcuN7&}_cyCue-Jt1_e4xmQ5C?&fC4jn#6FEizQh*Rtn#!hg@HXL>z>Iky z$mU9EqTqfx7gV>7`}zT1Jrs;uzIP@3WL1>7p%mCf>m=k)bUr52anp3RxumT_oW zcdu#B*f{?KyY3B7?f+bpVrw?JKWO(B9IARq=(aAe;O`lC`4Y_mclFWWU{@17)nm(F zQN9eA+2Kv>X6xBjwxK);2ExGKlqCR*>4GgWotZY>+|O*PYTLzZHg&gQ7phI&+T1jE z-SpJ@iNU_MY*Tl0cQ!MXbm$Fv9!#eIz+S-42nCyYU+*9dKbuauc_<*UaDdfuR%eEu zu^JOVExr)Q)*vVE@{Ck;(ACY_pS{p#1A^75|*5~(KDd)uvEwKA5Un)y|n1PLWc3FBgr&Tv;GB{4b_Ci*D#qk)pcEuo-% zzy!}_`R+}(yIbz{r&~L12Rn6P^6s1)z})ZPygAS^QgAqR$GZLo@5WipyX%&%M}2z9 z(`tBas@}4+$!j*X`E_n|g##gvey^b_k&xH4rTd(raq;z~>!OMBR+rXU>@?@!?$=#* zO*fNoI^^UIEvVV<&=s$+=Y-jz%#H$1U*gMQ=82ektH?i6}-WRqX$;k*_!ATV-S z$;YHb%imQb&^E_lRRPtX9hs=gfvr1Yr6inbdy67 zt{pMAJGR3mo)M;e-!C38xB#Ele1|@`^;cUzaKxt=^v)@s;ZNh8n^{k}sDm%fCMB7n zPGN-kDioRg z>|p;uNrxl^!b`qoA$wmlZ{fKjQ2KkRa6``J3N~bXj>b#_KgG{9WEvg5Od*yvT{)jF zV%MnS!cbh|^MR(uptf#=2f`^A&o;KWT6xCR(wOD0R69Sz^%j?CcG+-ttp>o^8@(cuz zK__cE0U-n^eT)N9#*(~MD0aKI8Cp&&B>F=S3EQ|$JoHfVxtRAYZ`Iwpy;*!v1Lai>Ky%Wr2-vxlHhzBtW5_gnyhxL35u8iA}SuhUGe$Vd8Pon~H8MZ6}>{NA-R zKhB)&)4YfKpnf-$VFv-JcF`Di1CV^{z$BqF;6=D2rIDKxGjzt(Gq*GwKA+Ka%NZ^9 zlawL2>WsymKtNzB&CfRcCm49y@RLqOAV^m?5u5@dKr#zAsf(+ZJ_d6Dv3A_!Dk(4p z2B8<%2#Cho_X9;$mG%8T630-2A5xVE6b1UdvVJ|}0MVo&b)EogDL1-EdF6x<{1otk z9pTJjV*wseRy4}Xh3=t11RQIZu*dvSu2ny#+W#%;(-8oCSdGMdn&Q25r|LuR1j{e~ zBY#f(1&gvF_PV;=Lktjt2qF$955bRzIavoJ;KGs(Qf*|VHY#g-Q5yiMLcHC!+6V|y zj#6{L4dje5D!Xb=Rk##u(B_JT#<<(bqCBcean`JWlI!9s*DuA>IFCTf(9@7eQYM8U z-$<^30f5B8khnQMUuv>*H9h$H2M5zCZ%9Vw&jizuQYo(kc9L)h1JQ;+(2Y|~{6%JL z|G|yk9_`-g+i#z~SL^ZK@w(pD!l_1XW+JnRgOO?TruD%c$< zLr=)C2g_~`ga>RV-VAzGYPLm;aZDgep=1ft5fnwe8JemaGJdW?8o*^ONJ*%*@R1e} zgBc>ge{0WJTL}#yz*#a8iw68|7sOYFXAFP~T31er0?Sy4grmH#S%3p1i+l{)Kwqgp zt=|>)i-;Cp>h;)Eqo9kO4x16LKIOF;f!(4}bo;|ea0j)=&3RO>ey92!-SoPWcEcU^ z`^;be+Cg+s#J^u)>|^Y{Cx-^|(7Nk%(1co=_>+WFyXC+!$LhjmWK#$C-oM+W`KX;a{-g9@1AaK3G;&+yLt&`ps#-c%!b+D zJ=xn6QXuMTh>}OGj)^|WbQOQc8L~W74gQD~2x=OMJ|zsFgGGD4;}*cPc1u*=Lde$k z0&mfnqDk{eP8V#Xc)9ojP3yCvDT=nM_6ALnq-)Qla_!k5W+T2jEnunyYRitbWHO3Y z&8J?{ExQz$U*jBqd_3A3($}RN&UlPFwwye8Y@hSY%g-F$8HNe0YN}^uejwM7?ds4~ zm5=bIjEJ`-;4yP$GrDHqa`VkgV_Mrw?>sx?QI(q%!``oy#z)tgn1)R{*Nrj&3OUw=x*92w`zB%M(C<+`toV&r*%2!mt;lsI)ldq?zr)Q{V zF!$1I3B!-(GeJEs4Mt1Hma>vkT*52g-XcwR;Fm!k*lg_r5hBG!GS0J17 z0jCnHBu&8XlW0aLMv|QLAjt&)YRe=A=^qQLrVn@{fr@|om!Jmd(c4NR&+nVcCBnK* z_f8f^Qida0YO#5F%nb7VLFlZSUyC>5pV%-BK35t!`|SFRTNy}sGR3j$cZOSreb5fX z3VnBgEB>VH_Cf5zwik_SBtioGPzq6qQwV(`X)i&?G9$wvy}1g)lhpyR9CMP)mZ zz|CN_s-~zUVB~Wp-CIwyT9G7Lmki5}SMM1Eh;JrX&KpcV^;D>BBLbVx?_K2G+#HisHAU6r7N($-7 z^liOCJ@I2jQG`PoiyNwDYe^4J8%FB7EydQj$KH_Kn$to~M=WN#M-uL!s)q*;-?Me5 z{oj3@$M@)5^IvzwVH@hqE^M7Eq?+2({DWL`ZS9$CEpu<=aJd_vd?~M%e*@n8B+Ikw z%8q0Jf|XROI?2P@gY^!mxaP?JNsueAlzHl93uTvJ%?-$#%!>|{)UCR!4Kz*ah@^2T zel1`~-4Y^5fhqD`XIq>b2N(SOT=TS%kU|B7-fiF4@nz7hP;6f?Lm7uR>2o~zZ~Ms< zMd>&ZH*BVW7LU5^zpQ>M=f_l9a^x>q0vv3TJ$AtXVy{aQLI}{aMhGD(HZ%tXS-nDW zyQ)=WwbiNuM`$CTg(rX;)-*YQGeT&S!bwe!TWJNWWLN!ls-@BSdwWKPdM0}(JM)=z zn8X8o;bgQ)y&J$GGG0Tr<7A3u;Bc_81vmv{QF;dk`%x|(ZO!V~p`}j8N2dHPsBTIj z+WO;LN;_`X6<#dycq|up2i?(P$*#}zGzde@#E0#mVbc>A`rZRPRGH7&A)>*$n~T>y zof&-XE80K}o{e+uEke^X#gUGLyRUjo$(%x6;yOWjKAD7+ZV4O`{ z(SlI?>I{_JZHmy8B~Wb*{B>GeRhzGB1fs1Gqy>CSGps*}oYjDR?Saxilt6z-MOa#S z9mXSe)t(|O$lD^Fxk5HsbI11vq}R>D(Ykg>z@6Zj6BLsHTfOO9}8 z8`;ouTv_&q<$yJ=Y&hhGUnB+dj}VE1GN3*1{X>{%NxBdcLafoDY5XxXQ78xTnk^`{ z(O|UzARy}(*FNC|s-$+k@MJ^7G{GU74_pq17jkA@29UR2%d>SESiW*ClO3=bW49_X z{s?UM80#t{HS@W{nnv5+5aoqam76!L(zb7|{n(niFU zWHGlUn>D_LZ*kZiiRbqx{VuxN4A%#rc8=PFZo=2&`iZm26UL({8Uct>Ul{+Y_#%?> zN7>P`BLPEps3Rx;+fY8AOG$@T z&7zS6X=yPvZ@Cd9Ck2$qoMpURD}2a%gURh(E))Gs#5e6Ybi98%0w}sWmqk#4b0f6L zf9&drVpnUVFhF zM{jTBhSJG39o{M(j9J%C0z!tV7)z9aubZ&=Yl5hzq}VJ`%h|+usjs6wmr1t78iIaP zM<#ubU1}F~MXn|zh*4QUY2koGI^~m5mkHh{U4VujkgN-u3CWZ`Vslc_c=Y^Jr*^-k z*D;YF3VV3;^M94?dsRZW2U2GEN5jKsH;uU$40Cp0lWNx+8X^Ygww%kKFdT_qyW_(7 zFWx%CZH@VxhL4XppZe+Ep{-mrIz{!@ubG{SX*N|eCj$omjR-dM+po9J_z~=}rEfkJ zL3*=b$R8JvLFaB|{cPq!8wt{y%@?E?6<5VRpbn`WH6vqfF=-w(6T{YBEQN;>8iie~ zxUruUD~p|X@nlfix;0NeY>Y^@lp|}`1M{K;Q1P_-CN*MLzT;Q=OIp~WdcDH#FA=e1qDDj zVktE!T-Cxex7tG5T;Yx!WBon3Qb(z!sWA$tWTa%0bIr025a?)zvS~SjrP&X&Aq`&u zd_;s2N?-4|GDvX^l->LVY-X%&h(#lKVBjp}M_BV#w~SRErUd9sljb9Pfe1M(=Lu8V znDKuu$eZUkyv+OFSD14%vo|!}<5yRvM#QV1`{VgZ7pFO?2Du)2psjeCf+id|%ES)w zIQaXCvbQk=ZK4lqT+jvqS=Zs3L73!zSwx3xMgeRE#uuP!$T3~jzys~M)ItZ;|fDIrKi%VB2T3yrdnz-fdTd{4{6W(O^3!o zf|L#NcmFGZXrIDAE{$2;&o!q_U$^DDXv}!vHFX2`H4nT*;ksW>)O}InK431HvrWyg zE-**@19TN_AmjEz9X|blPl4?#d(w>vq~iu2C$U>2-YB3*=HjA;F;fsig@>e;4Rdv! zoOYQI<0JfzhJ9{LVFli<10?+Faaz-UEyxH~)oKnAjPLAOfVIJ*scc zm0Hv34(Q79{D4=QG!Y1Ci%!W{kz_j9i^xltphOQ+CVdjGQ)8cc;?BLWiZ!g=fn&>? znH@g1Z|PWfTx2px^HHL^jzYT=+8uX2{t>?aiK3}-Z^{QU^|U7L`^9}`e;?P2U5W>cCDRkYrt2StA`O$vum6;Kb#B&PaF^+)x&6YsL{ zQNIsAm`|x@JpW+*?A+^Lf37xvgq!4b|1HMnXFX5)JGYKId3JNkiGpeyf?|VUu*>Vt%z{)P04&P4)(YvE<)w#0JuDr zlTBB4K^Fia?WG#TgBC7yw0Bd0m|JKQ_Ibg_L4rgMjxq}?dQcnBz>c3WhW6W%6(=~Hoo#OBhMuHkg29xfu;l=0B{}LN5JNr75 z;gAE_a4WfOE@JntIS!-qwR^&U#=fU5a+T6w+9(8oYEtFT6%iN(v zyoL}qp6x2`*P4Z2LEf+1tDb3vHQ^tQVwxy`*vfYn!;~ zMFOMGaPFFc{zH@AmJ67Y)OEw>t^VdqVMPgiv6}QE^$xIErFTTSbjQZ(M>ca*p>6n| zKHVpltIw?vqb0wI$CcPf*;a};DQ~0B1zZ+r2%X6fP?py;!$J^9p6u%$>g-izRz`i~ z{ubU#M7EZlSw>b-z#U=)FCTn)UJtu%KhjK6iEAUq_~*tOY#!6N`y@xj+VKh{=&B}M z@DOpm&eUqdRSl=@`Ts}w#ircDYeq;m!#Hwye}Fhq0M^5T6^9K0SEZ&b<jWL1a7;9g^TT(+#->4zzdCJ9nys?eI!YyWd`OG=AN9iH4Y@>spGsL8g%{P zKk}%y-s&?C{9(+)pYy$IYNylg2^HE)?KA!yG`^eoVvs-bdo88e;=i0aHdOii+(drQ zzW!OHYBUWW(=tw49FFmk4)!X{VFZ!W?TCzXg;9vQPOA;jzu@!a6!WWD2N=Da(W|N? zmz9&7>@Q`3>F`+)rq`9M^eXl8Y+ls$|14qh+uxIV{8Q0echF$=}7+-!nbmFf=Bc5ZQFS}=8$Kda3N$F+f#O05(EKQ1LSxAHg zWq9;$hohO1{B|kd2^snlq;(?MU+5ekY~Gw91=Gu*uIWuOEAtS5QSTZPqW&> z!=$5IsKRg99Bee^6#w*;W;jfz9#M^)De>l+%*z)G&6;!l81h7i6`#%4_)16VBfpxKIG__3i&ckUX!e>Ssmn?qSZhOWl|hMTHKYZBc< zXYW|SuQvg|IuU8Tt?Z#do*(j~GXfl2)nYYBKus*x{iMoLrw_{%1uMjK zMJq~EsI`i&Br?S7&ysaay{-Pt2xZBq>b2+%Ww{`$k>HNpF6%)|l_6x92z@=-)?^Fv z=BN2InFtw(DgvW)Pm_b1I5()frf9>2AVnJt3rHyqe#;}010qfcOGoA1hqpO;-nAuQRcWSubS{1HCZF2w*W3<|f8;jJ zeXxIBFlrbzRova$Jl7ZEjUxP#jVDg)u7abkq}zrAHh>KdCjhw_R6{m|sP_#~)9+JsRKw^sF^>v-hlNGFEZFxl*vIu`Kg z{h+H3w(|m%s1>>Ev+M~JDSI&OtC3+@AvJMXL750Lff3o*d+8pj317?)wnHjIAQ9uX z5;e%DL9q!+(ONBRLI|IRmo3%o3sNDuxo-TFALJ3zR}dmCsHFil;#97`(XNWct=t*Wik*u8&J(I5 z`nH%uJ#nYhgf35~h6KgKk@nM7F7Yzt(kR5a#n|yM; zAJn-*(H?khl*^R)TFI(94@-pM&W#g86GJ+A6G2LLXnhuBfkx1KDBEhaLn{YU7YTv9LS@3H1h?*4_?Ovn$f@T`bEBDON<1ji@&Fu@>Jt>F7WoZ8K{DyXzbcSA@@FV22^qk3Rlf*P^+Dq^I z{O2&Ga$Jbnh{G6HiR~&o19pt5n1pMju2+UB^H8eJ(q@;*7uFiCl?qARvO-S3M`0bg zrl`lsN=iv)BdXxKDT}>IGAC7thRa*~EQF9(l9p=NGA{VLs?UdPE}i>ev<8)*Kcksg zAtQM8Q66Y8U5XlnPXTQDxBp^Qh);Z6VBw4rYL1iL%RQzNNa&)9{sa5Ta|g~qrNOkW z{`S|_*ta5YdmK5`O$`3!DBN{O5yfZ$17re#Cs1sd1}2oP*<`jROo*td_j&HCpIYJ* z7SR!P;Z~c^XJ%VkvZl{xyLH|&^pMT1QA(_K>C4uUOgQDEa5Ts{Xh1&<^rMmb0o@G5 zhH@ww3i^RLT@#~DW{0F-flx_uP)m{#e@6+{)lgp=V(Meoiv!xiEwv6M)tLBF+K}F& zOE-~WWpzavL7FbdK0;CcDd0hz^re4hR&vtDHN*I}yoD@@e{X=Ykmf#lQ|w)~LD zEdRrcoM7)PyB!$R zAP64%u}11`5Jo}^GGo99G;xwEuw`2cZ$wGa(P^oASr!@17U!qgG>&27D|69LhRRc^)HxI>sb>9W_@AiXp2sW_%Tj7xS(#Aez`C%Xu z6%j({s;v=Fv_U68@G4%us+eM0Fwx0%(+CO!W2t4jNpQ2>P_C?WBFl_VT-gQ@1%l#g z!d97@fDNra1_8j!npmk=xlBt_G~#g@DtuLOD-|mT*pb{>^;5wm2bhO~nXpWwfhLX2 z4!(Y3089J2I;GpHGcP@Hwy_-_u70s4Hx}}`0;7q7Js$(-UGZRf&AVTsxBdK|&$hI; z+^{{7i;*1301v+kJS?*Iau%*0#QMP3;5xTdTA8yTnJKU+KioM85i!w+u zO8p(na%f=@yb&ZrNRg+Zq%z+S5o1$dUQ-|$bj{n+myf0c4#n5(3)tt@J2^-g>)+;X ze&%OC^kXHyrt2M9T6q!=cp~j>&Eu19vkNTLuFNA!o1(dW>1EVH&U5`C zP&wANAp1O>9m-h=JQ+ZvZvC{>RxMt^GjkLZ94yfc6AkhGV>1g~{ju(o8;0#rj@9|P z55BXg#y*tpEo7V9x*9y1-qts`?!H?GZ)r8|IZGPy8lRjI|IqsJ>~A6sSWQIh(2@SO z{9FD*tT#_0lMXo=DXw0&v zgudIA9g1dT?!D0483>Q6#Qh)>8Gjk#JVWe!*^i7&b(c@SthBaY5Q1XP? z)S{1%S)%o$AFUaMANx39sxaSjuL$$+AUlRuN#0Q2ig<}m!G3)t4h$;6Nss*>;YR^8 z#?n$9tPsKw;8YZIH#5!X95W0VJ&dWFckSFVH$6E%hKMOLKmth{EjH^1u7G=48m7!D z%}HeigdimZYAo$bvI?*fTDK@^B$o}#ymA=Bu)@|XOa*TQcBQ{LKj7?Nhr}&i7dFKn z8E-82-!@Z%4BvgwoZIZukM8jIoS90srJHqE&}e`3rbx6a8_pL7+vc0Yx^u|bb%WNx z3m-}7F$4@-lSq+P?6z!qA)k&o)pi%q!tCnyN7hdnqS-stnp=kq)~0mQEJX7I5L|r& z)vq@vZBbv$>5RdYk&BBs^j5|%fj9NB9c6D%J1t^{0@v0ArdoGfg~6Pp_9~qQ-qo}b zssK9Gyu?-oMKqo)4R;JBEx%}8$*=$h45Gx48Xf^sHSAd{KE5)sZ)R3nU23sYmFBkY zazAl9k9>g9C@sujuc>#rwXf;A-U zo5;zH!Bclv*%kCbTkTB8$$|w@Hi4LAil0m-kb{=!Ln?cHaS{NwT6@K&46;IkL{^YO zFL!0gwQE$hvE;{Efkb%(nUSeX^AtewI)u)e}x6iQAaZ77Ugk0q7z26rlgXUX_dsY&YAWJ zr^^@~)a}Z9x6Yd)0?(C$@7k${wb6B#6N%US(8op`DK9uFn5fH8-^K5^#{m)nrZDzZ zz~ld=IQYQTI9w0QUmgbse^R=@^JigS`!|eJW&|7SZEp@??e$6~P>9kB*luK86T7FB zBP(=sjdF_HlpUGj>~MAn%#oxW@C=LA*D@-ahO3#>waSQbS!f#i^L59MMU{1jH_pIK zP~%g;LtDPP5v2ISC0e+nAl2dfZHTEW2^KZGxSA7x0+VHuW*CQ3s8gYZWXR>P`1pS0a_XU|fzfc=w zq{-3Y3^WbDIKKxdz~>Xlebb>cI3Wt(3{~j8X9@^ms>Rc>W1HFv9`>X4O^sr zHO~JX@XaFM6}z+euso7=cfqbg1~rn~;ctLuO<0Wa*A_Mbqylm9&AD8zKiAjRHk@rG z_d(54w5%Nqw`;KuDWJw+JCaQlu#`bqK1GqvJT4sSRFB1jH=AqEf79=ESv;5T z$GBRtix75h0l?uiZH=yRF9tDsxZ)L=pn=g@K4oi}@6~lsMpAv@3g!nXqzCV)wOZGjS?o@-;tY@z8flhWI9PLBUoYCszrQ}K?9_Uu zvhBP290PqOe86xFxLXGE&GDq3(junMaNC^v?5S|ao~_p2I=Y%%e?y_s$$c=m`*ABb zBiLO_dI}t|kS836#|Y*>!ta`)7Pr45thFP99^2{Y=~m+9LD;-!#TK@XEnN)443*&) z%VxyIDb;|e`9lC|59}Re2gb=!fO=F=695IvbyjK@${|Q{cw~|-(TLBDwBL1n z9c|!38|Q$9lLwU4(VFH(%S7wWS{d!^Llr4xSiw#}0&gGVlQGPS;WWH{IGROA8|kGz zL-5|3L(s*Xo@}#SH4$o8Y*2>#y0Mh>bSUc4oVwEAU(-%|do6qK@GG0VP6a#Ih)j!I z51Sb(wY>69peJYj@S$A78kS!6NZFZBxS+7Ztd)|DI42@il4U}^?Lmay$||$;`G{3T z_yKnaEa-ZEoTaSEYPS38>hhWzcu7`oByNbPaa*P_=J#OXKrinm6r*I862KyT@T)+i z-JHnfFoA5$706l|K7U6n#La=Fi5V;o1MrHSQV&qgj*!uhC@7dDaS~GW$qDI?dTgVj zqbvBw@0Eb_nt$|3n^U+)>~DB|-G>529~=enB4^oO1700$8e{Rxe3gTDUMW*SgkAjR6JfNq3eD8Bv#-eb>dYDZNuyGdVTnt<_GXZ|PVh`zKlhC*IhDM0g<_6V_=fTKpPiOk+?hs+rV~D0Jjc;yt|w6*Au7dt2_4xIe%) zm2DkyA2`JdJP_@)lq=u`?TH_wsEjNG*Cdm+R=7~6{bvSP|8RQ;tGXVY}rPpVHBxg&f{If;Q@a zO92{Wfd+o{=T)U|)}eZC0oikxJ=E+>H-7tjCbsbbpY=7|xtP-arFw>Q~rZkS1! z^JvHr)$el=h_xD643r7kL}1Yx*BWAC=nUdfAa0G_L1(v>TUl0ISW1jfN-BE7V47Hy4KUprhKRi>u|cSaqZ(44q< z4+#UXO^VrrGYHZF*!M zX3&R+(T7IFiLu~*W&Epw;cLc;+hm+rt`3GyX8E8A2x|hx)tUc5q!jOkI!q;|6nmE8h%NN6jU9UDWA2hQhqMJ&8XzN|E9Pz|EqDI>v71P{ z#scCmh~K9jTokC~;LWtU3h?O=ZOawRSG6`l>8aEAJd$-pKKd;Nfy;=n8VzH-!P3=}ag>V>*8|HN&teXboKQ(MCpbsFkYFqPP-A4Q|z)_cG_j}VrwqDUCu7azPf#6$-gjd3`Gv3zTWDG zl0%A1?Txo>H&gvBZBI2NTACY^Y4OfR?hX{jJ^0@l>+N=XA`Kqu(?;-x|Asz=5tkUZ z`hkMu3oJ_p%Z>!Tt!aBhnekCt7f85DD`ksj5&iR8398R==xi*%hUI)&E=1 zwF{AMRj`H{>GW6)G5y@tMW9AipWFaC5!h6A$d|@Wt&{?Nbs6F641X3p?yW4z;7)MJ zd>q^eV4i{%b!28Hx!xiVO5zUpt^-Gh!c^Z!vZi5?W?7vHMKrq&YC&No=|#~Ga8Vi% z;xP2M*Eo4AcJhWMsA%RZ(0g$|_Oc=pkoo>$tSM|}`r|Q$cgsxAy5>SDAegGPiL8{I z&tGn3{a}OZV#AJ(EIFxYwV!y0C30y6BQjq^^;gwjt@>( z1MLnc*3w5j@Ls(?^u*(Qd^|$yUdsOwAdV&1@+)7DkSqJI8OM;EUdo zxBOiAewz-Nv;|Khke=2g6)-(QV@&!n43O5o2@B`tr;xC<@bXD`k@-p z3?R2iw{>Rx)t{j$D$&B)zde(sy@Bd<^Lfxs0`ua&jBYGPs6>n?Pp+nb6Xl3(t*=&W zZp~uL8tLfOKd*kdjs!f&1J$2bpIN0LtW^j6X|4AV-kbISA2O|1!H(1}VZ{`rm#R+A zI?Y2mL#`^_;FEkq)PY>iI)whO>Nnzwxcf~1#GR<6&hD$jS@$`sZ~3eloVm|hvYeDX zG8%2V_QuzX;hB5ww${c~+6Oe1Z`eGJ_zsK5jDygk*t>EHeJ&crV``fLS|Th0wrd$3 z)~*0RpjxWQs*{v-5m?bQD2oz}d5CYeD6(y#&enC^xdDe~F@{Z!Ls1`g zmaKCoP&~H{DR#G(6g&pUq&rZ`^*e-TQ>qV+#}4eM9-Qe2xD9tG5cH+by8rZ3HK2d} z@df+~8+5hCv~- z5`14Px&@Y!_F&w`aAPa1U z603)DZB$&|yKkI|+uHn9WKbC1$+3xah7@kU$5H*ZtE*_6u@6FK00*%T?nR7Ue|&v} zcv8*0t$Trt)nzppEfISCS9(ut(+=>EkttEMrp!ps2${zK$e%^hjWO)a4q4myE<5sw z>f`nNIXp&K2yPNb5Qe{J#F@q}Qe1Nvd^o^C2!K&Ogg)v4=Qo^PsyO9oO4_(Pa@|Dg zBOO@pl&g)rtzD%5v}Jfx#0{39dEjrg>HeX_&bh`dE$*NGRN}PP{QI9OjkiYUb|$7N zpA*?>O#BQoV>`y5b<_B*4Y_GNG|kBKtFbS@1&gsHrvp1nl0{q@ zHTD87rD%CLJr^vD0GCYUvN7z@s>Nd3^Z)kzb6QM3R2V7BIHsK5?ff&0_6`rT>9PyR z%&?O`C}d>;Bdie0yAZeH?NV1Hq(|E5L7j?=$V63a!_?fFx1+-kqLOUnq&seqPv5KX8FjyTY~F^-(+P$KnkP zt>}6B8owajHN0u4*s6Z+mPu9v6*2Y7g#+y_5%-8{ZbN0QAO`SM-@2Mk)4xdT1 zEwv|lySs-wd%JtO6VnGyA31b9v194Tf#XXD3W-g}mx}f)8~5}l<_<3&Ppn^B+<)L0 zo;HU^zsNVU&n@meFn`;Q#p9=U95{94AY&`v(>{6PC~#&*entBkc|3)&A3%S5VRsNj zM&u}7?D1>9h<)b7@iQ|gP8~Xs=q+|9MiN)NxYK&wi}!ZTxkJMY;XIjGULh=Z+c*FJ6YgYu{JE8}A08P;V0WA|fK81L)0N_`e?| zb@WQG>(SR^61`p=$V6avVDw=;_4H*=*nx2##GCHMlTOJeSuKvDB@yXy`EGjaS)3EO zox(ZwjF5T<2zWD&Tfr2l?b^O=zU&D!FV{vi>f371E`M(Vy}ApZBkU;t@56t3>ndy( zZukiA(<%&gy@SUfXgKYZrQ$&s$E(@Uq0 zoIG>7c>2gu>UP)G8Nlp61?U%h;EUrhyMlXN#dS#z%b(>}gWF!~=Vd6Q^alk&4-HZn zx&yNTWgOV&(*^zAgYVGr!B-q$L3q63&O=Zr3O{@tF`OpI+5}5sH;z_B-m)wQ=FyIv zi#+65ClIPj%Di4=*Y_jS9^a7x|Hd$oa2dyGBKF0v=t6YK(SKq6JlID7m^clY{kdF<^Qv>iINc-MiY z6UX-17MISRk!P~5ue;ZF=E%|gYfJiTH3PNdVC^_mJFc%CCu_$kZFce4u|;j?;R9zD z_05aN_U&I3^GC$CBifE5hmI{8H=YD0oj9&+JA6dhcKQh2wqa&wx^~=9JI>G?LK|CN d#>~{Tw6Bl-w{KAKm;bGo0zT|pPu}<5{|!95d1n9s literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Bold.ttf b/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dbeb7b92ab57a2687b8bcd80350520205127b6bc GIT binary patch literal 33964 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Bold.woff b/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..8f144a8bb312fa160afff853133665554eee9065 GIT binary patch literal 19196 zcmZsCb95(7u=X#uZQHhOYh&Bl*xA^&v$1VsW81dvoA-YA&#&h^(^FMXwPsFt^_dwr z1#xiz5a1_Ce*h5v%l}mVcmDq+adB0-AKuQ74fj8oTq$)as4y@C06-Hzvc?Y##CHsR zjcpAb000n^A3f6#-XvVF{p+qdBg{k3xHw1d!E7rUevyNd>5nh8;E&%= z`v4IMQ6FROYsLm91_l75C4s~4+Yfeqtb=rYfEXsdU5yrO;dj}mx$&);Cxq%qUoR*! z7{DqMjv4TOKAz9H(L@nL$GL0YCj3f)=gP_GQ1Z+r@tRO!K1PCZABV#9qf%`rBm?@;B zvz(!#fuj3&uGVf3m8D(|cqRrBCDf7c z=kAE$Fh8UXN(kyEUOOP^F-SnJV$wAqvJ{r)G@lvh0c1220tS3zFw<)#9B8 z&r^KI8{b{WSrz%^d(ILcAuBobJ_Vd-H20=|+o(*HR5Gi}Q@rMwG`%UfRnU$2Cez5w zZhv$BG3jR>{QeM}3CP|pF+?mC9O-e=2l9f`#r$}?5-hop`{1b4{awI835sp;MVo;- zX|=*JqiiSdVFT;&EjVfGY0*G`4t!u<#-z6CQ%|9GF-+Z-5^->JYc0Q^jotGC#-_Dg zSZ#$)(PPw}*CzZOb|oMAqJ1R;_MOkWMA`n#7%HE}V7}rpR|-E}%b}$*Sql8D7^J<@ z;(gLmV|%oi7s}=-Mc!qO-mqnxva;YghUcW9MzO1lyt(3~9J&E+?@j*+C|^~}|KIy! zU|{BNfCVlNj`#w6z!dmO3(Mi(h!g}IM>c3MX)umBi8!q|q&QORKN~lil^&cPlpg8< zeGhxII&q(d!N_2yH{7W#Br2pV^z`}t{T<+m=I?odWrT&i>xr4Rn%0&^L2{}!)+sEc zDI_d(^r@d$Jn~KO>G$&8_x=8T{jvS2|DLprmPrxpIm|^Q4RZHL

*oboKiV#1t zYyY+>CvOv~VQ@!l!|bbl+G4zG)l|uXh+#u@ z;v|EXI;V6ZEGj?J{LJ21xzGAq(VC$ykakRV-z6#BYGW-zGpP*fdieWtfGl611% z=+;iI-*>B$PP}K5ZHW=06SCBcP`IRdnj-&i-FAqjZTj!JaP|=Fu)hOMu40?@ zbOhTaxE1J+I|(!|A~ZA0s(cGvHMccpxN>Gm;N6K`=yzy_5OSuka= z=w;&*YVNS8WfsUh3`|W|l|hgXjh}w~xbSM*CRzb@Yiz9Ow;X=6QykdRmQ4xF(y@BL zWcq8~%MCl%4lcenVByvsPn=n=@`zK}#}!L!lW<=?8FKDBYciS5an~3uzDPpR{*_xo z?&CXBa^ApM=tEanjIFH`9;G5FY!TifL4Mn1adb<)6i4QQFCK`^(o7TZj+A23KP1Tx zJQ}`Of3%NMO#I|OiVKyG^3`{}9}$G2WWY!G8a}~WTaUbn9|dBq5&X%gYOGb^)$ekH z;qf;p{OVR{0dl-MF}PWb*S<2wfTdXxW02ouj3MBr7y~$h{&G2}CpX|##iH4gB+}Nq zrWXPSI$>W0rL3FOVd26n<+4luqZ?7ATi;kO%_2KcAIu&JCzSLsKYuxwMtCBal?{(#yx^&d3*$|(zE38agGdpm>lAi?l2ghIgTf7DUGbe{>y<<<=_fV2 z5BTQSc_bD~W&ufJf_twJyNCKdyMJ*oEjKydTI$9eUa{A*v=_{Tnuy;VeOSVM$ju3%Tva%@Y& z8T@n)sHhg(T3IDyTlrB5QGGf6h>L)e>0`&5zH)rqI~~f`zIJ_G-;0Dtvm6h-6MJWr zC-Kf6cIcBGK5!`ss~{HBqr-}fr)7ZENdf9HX#Dg|(1d1obG_79KA9^t1V*LiFF?kW zwnEDd3n4$|wFQS(ZjCI+0SEmH>A94FAtR-*jBX8n+ z#ZZ}ye0Ws*b6GeE){2Gd=e{!xWYa;d@NLy&Q=WDFo4qqT8A|Gg9wAb^k3U?W$eVc6 zd8@)*aYuR2oA{d*C3?mv7WmcouNeK2>U7Dj^64km@ti&ZyX^t~KHB02nz|1(`M;3E z5rPf(Kt1wOQw^Xd{htlPU1{≷zAN|6ZY0)a?&1a*v=~=vtLd)zB{Z&lHc^6yLgN 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 B(i;E( literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Italic.woff2 b/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5fa767bddd69dde2a3a8a009667c5555161058ef GIT binary patch literal 15152 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Regular.eot b/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..1b38b98a180c93c0dee50f491c520265029a98e9 GIT binary patch literal 30212 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 MoTMv$@AL8h2W0f$ng9R* literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Regular.ttf b/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e4712f847754250be2596ca801da591b0f558416 GIT binary patch literal 29960 zcmdVDd3;<)oiAEdr~CB2Z`#$ZmbxW%YwOl-Ev?RaF$a4+Q`p(z;hEjbFYWyjV{5-cZpp-SLt^N2^CubO z7jeJ1bSiyz;9pu9A($=ZCyo%{te0i+HS^umCEOdCpj>?LjCg5XWedvBQU0RxGue_>rv1K7=Dd#G#`H2nunLx7 zcOkvZgIW%MFMpUy#U=49avsvI{70;b=lhWrU(eXDo$OctL*C$L^4QQaOR?au*OlOU zJ6pim{t#sB9fuVR>{)RYRf6dK59kjcz8gP(z_pj1=D%e@rH{4a8mFuHJ*(w@HqYP0 zcH!HG{9eV3a?0DyEVwQpkLpM9oyNB|_btISwBppzHgYS8KpTqYKd=JR^_OV)m7v?~4swJ2JPHo6*+j5Q5oCrJRn$Y_E zmVFlAAde#tU$%@ds^q>UzySLE7CDqEVLFCA1e^#Wpxuo;(9C_xqkTiq3Z{)eec?Lul?<{zq$6UYcE{; z=CyD9DE*_uKRW2t_6$1uU;A(s5Xe0uch0umg8~#PI=yNzn#>lf&F*lz+#avbA1Ej+ zDlRE4W92Lust8wBMWWR;wXt|zeM4hYBH7&1+ScCDxuc79_w=$Sc!}iS$%?E>H zpJ(>HV;OaNVJ_2LoT;8)JQlpPZ!ROM(qAxwj4dsNj~0hQ88)9`1L46Z0il7#{<;j0 zXM&5z>M|l8Tn=WwGMUju7M`r;=7FK5p{WCNp>U}9(p)ezIXM@~q~?o*nRZIG&(8-h zYn9T=nQCO^?t+;{DsQBkUzwZ>Vi1?o!HjuwZV@>_Dl=26l~S#X#f$Uv^Tin+o1YJ7 z*yP;G{Cr(Ti3f**8C_Kx1JVyn&SmuB{)`&#$MEMfe6cR0i-$3;;PPet(f%NnXr0q9 z%7>ORN^J=F1HntdOKAIYqrM8$+B>&6S)87lp9{~UG&MbkqGFmej2DALm%?dU2ni`xOwh~(i!sRjC^Je`I6bI!VR@Oy zGnIG>4{uCu>qAz;nQ;G;7PB%m7b*^i=4(TB8C(3a5JQ>e^k7}a9>)ZN!Hjia7tITa zaQ}S9Mt4)Vv*E5T<3KY`36dZnu!Lb}>;sFzON+sb9YCwgIOAh8bC-3?gY%Uc+e-Li zUB(q3+dDTltz{O6knfTC?)YWq7}z&=+2O$YrTa6E7$GT8xBs%0er)*3a6eW;shXU- zOqdH`^Ez7L`ui^}UUsXo%$>2~3V_Lrxp`uB z8DIP|r>h@urfVR6S)pq|{IZU&h4IUJx)#MRt8^`nUpCOSB!1aQ*V6c96J2ZK!TJn8 zRF|ohi96~tF_}15mnn<0j4k%>7-KocScbNP7$aRn7$aRPFh;tDF-E#pVvKaH!Wiiq z!5HZp#Te;YjWNaddmAt3GTy;nlXP2_?C|>0Ge=+Gu=1v87Z-&1?%o)SSNSp1ZTC`I%AL<5bWrsxknhKI5Hu$tSq681fhX~bR( zEG~yL%0PMw-<-e!!YKBi|hsM-J%l=govdM1OTwt z1EE0LZx{($Oyl7yISBlM(-4*0>vqNTQjM(78;Ba_^I-}L< zk|3iAs_1^2dEAu z4pJRT9HKhINF1g*lsH0lD6vR&D3PW*{YV_8I+R$VI+R$ZI+R$6XF4~)e2i`~J;**T zQ@u#7N_;|g3O6U>nH?LoZ=)Mo`*xY4+9zd-s-B8xx;CnwrW;xHj7(A0vob|h?}%r* zH>#ea8(HHu-+^D5|s!SRBpCMhInUHJje}<*Bw8922SMs;)g>?Crxy#D(;N=M2 zJ!5=5lhQ`Y*(D{Dt-3uP5nVe*8@PTV`M5?-6G4E#<2^qpnsru6tgu>UZgn=`ZO& zr#7nZGzi02j3vguGkwZ*&HNe5vgI?@GV7f6dD}7DckJivUw0%NmmJ@BwmKhhKIwA1 zZgV~Ej=S&ics+0QUhw`;-xI!H`1kui7N`h35cp0(qF}Dz-hyWezE}8`qJ^Tb7hf#? zmy*@eU8Psc>}B_q{j}U$o(Wom2SY`nH->&vaj@cZ;b3?*{CAb{%0I3AMO8Ka=Bgg4 z`c_po(iwS6_Vd`axEV@70uXo}kWiR`8Ly~1&O~D@=}NkyNmn@Wp5;VB_^$sl!69<7 z)2RDxK-2=e+R9j_Vsb9!2OWUE&6sVB38BpExT4sV@!~NO&u>}kLg{9KWAiZ-%+IH+ z_&BT%cV$?w24Zc^qNO?E^9rB0!qAfRT{Isx?=c_!VuXJ-!g(Y+72(euJ&I+8z2HSY zB*zwDYgZkL5RC5{Bb_Ye*KsZcKW@;gls&INZ?=j27=2XA&)-;>x<$T2&pSD~#*q@Ck?!9R_W;3BAhnN1YCAa+rskU zcKbc|Oe;F8!OAE3;Um+EYF2I4Uhmwz!>k@Uq8c2IwezakLA7#4+iKaJUsR2D$J&}f zFZkuym*|1R{IJcyd8^K3Ht4e71&k2?2?cvL=s9TH!E9(Kr=SUqb2>8eRZI@=l>YN{(si@a{TViTP2!cGuO z9Kx;$@bQx3kXIqpXl`u-MkE0$0L$P72*SQH@K4p?3%39sEzP|=;4kMb(Rv<@1X>KL z&+89FD@u7=4{vFXw9OBVDuLQyx!G<`cIyWh76wP>hb%^exoga1Y1?hlJ!fMo=+w$?x-Tp=NqOkmfwwlqg03L#)yE0d^eP?s%g667jqvE&QOZvfWf&ymaTjW8IP2L|?iqzDJal_YZaobB8BV<>|Pduo;Ca#2<7ftI2pRtLXT< zE==#d-KF+6N17J9Z>$fn)q+=jS-ijo*bJX3>}pqJ~`!0jL#SV2N`TB_dM6{LpN*1@qw z5?D>Sq6vS}K#PZ5tZ~B2o3$m!R?%uGk!S@qNZW;~h-Z_%erI=!%}{F`94>Oj23@um zd$?Nlw?tceCxr7JS7BGXE^HmH0MX~;MEV=gSn3*g#zpp%r6sj)lj73ZYusKVx9@G_ zfkIIhE-`s~2Mi8jt^{%@B|1}kby;{cX)i8!_3b>>9bX=B8+RYICw32p9s4foz(ajP zsLCf!Tgu#1q9NMU;IHiNFk8cg1;zU8#J&ZumzOkEw3!rg5J3c*=PxqyZ&=u&D+(;V zdB){tl5ZgkTnjZfnU)JB{QS0p)D3wWv$EhZ$)a>Ou&9Nbxse>pu632~#@@FuSISO< zJBNLJ!siiq-tX+?NrUPv2NmD-xNF?}!4I0pT`95lNtfmE>-RivaiIx3(uOuVU$%_~ zo(%Y%4jyj%M|%8mYG_ov8Bafc{mqZNXvAovmnZn=&_;^wNVTg>aF%MWDKB#yh=g%P zC?K^!JfI!daREpy;W45=OqnRJswuCkP}QQCr-u^{Ge~-{fnUV2fP)P@Ac-)zR2fldH(0YiSOYw&*NHF4cSxy%xBfRAw~ZSSJ43?(x{~ z?NbUoPK&;z#O5f`Tb!OkU0+Gb4#nfYbs5dOef_iIJ7R?SSR&P6(gPVhPJw;43uQV! z3pik->6ntnvgi&VOE=+md)#3+O}DkVE!0AD4Y)#J(IJ;w5p{*y?L5ZKCNRZXha>wv zLy;l-fB%mn!+YLi!=16fnEjsJ&TG;B{Q4W%v+U^0;UNGlAUp|Sm%P4KJQ?Gl$SEjp=bEY z$e-*8P{#q{GsI=exWNl9GX??XprW@Ktvvg2z2Og5gIW2K&djX_{k0)8$=T8MU+@>i zrZYd&qeN#~(O|D?`0Wjj(++zwS zVtlo_usWnu3t}F^4H81Ou+cV+rg|wKB$Nb>Xyne0(H(VlC6&9|_Z(|)R&4*Ex>6-Y zUQeyl=XE7Zivr?QM|oM-?AyOL**-t}XQ_&J)QX|voSV9=WKK)6+er}?>!YTIhOY@wz^csO%8 z%_gHk)$0`I;T{7?57^pJYs@Fd{I{Mq+ zaGjlVLMx1-7C+C4kFy9{Nm)z=tXdEhh?sAgTt*br;^kDJZIkfeaUxzzQaj2OVFho< zmBYU3s;jP`Rg!EDOs|2s94#0vSMINkCZI7teq^Mxq1&Y^D%98AW#7|$SlC8QwUN=J z<%1v0-Z2z!*-_lYpYNLPN;yLnw%6K2se2vv{vlIkaH!G3_fHJgC0Z(W(ENa#{{?H* z%l;zeEaXC055CydnSkJ?Z2JaFJ} zHhcHQ0OzK+>5M{|5pNgS1LKc9Hva9u%^u-vdUgMA3=W9Ev?oIAzr>z+7@E-ET}cpP z08xsuxDmp3EdE)LR-InarLi$2zBq4%FO@gdhTaPzv6Nrx9Bz>u`s#Hh_SC*Yleb2q zSWQ`p*W-3M9YCTM-jYM2HjqJyHjpl3+!X@cyh&h_*b9Nz9DbwYG5HknEYY0n~=pQPu9W$HIxW&`?uvqCRna zE)=i|i_T%LX({(cj5dokR_KOk_i;~ErFUtcn;Q})E{v^XtII>RRkhK_mhbyQg)RF} z$eU?jXsWadVNO);8VQp%jp*s`Ku;eAuiupC3H%Po8<5+fJ!7dzA{omNVsFcaWFpOD z5br@Agp_>50V1aYL@z~hl!v(jE=`^f`3$O}mV(w{s)U<{TK<^%qankR&RG4J-Xb0s zo%<(j&u9Owv(6G2ZTR(5Dim50dt#vZ&x7VyvIf?}K6$mwCUkNW6LT&l-3~al1nkL6 zD0=-CF@$CV$qX7OQ-DLc%G;_C8og{4DX|1^ZUD4`P=b2WOUWf=?`%&t#cLx~0UsoK zAK6k!qL-V`!6AR;h&L&dv^S%qT0(;a3jn?V6LJ?4ZIIb^cDi@fW7K)}8F-@4Bwjl` z^;%)-OMvExMCX56?rd*Pc7CBek!+hbdFsm%2{w9Sq@yTc_3x_Gc}DBazJ;~51)sTo z)Pt4u?e1x9YVPQ0Zu+zG(asYAQCc~e!mPIJ*Es8EPo&JHFeTv$sj-vLKs-+_a&3`a|90|QCZqAAjDR=L43(Hsm*^S{t!f7toSj(sx6I$_y`QUf45H7hfj zC^Y$!NLS!i#o(XC5X_-h5qV4lQp!9%rpc9VEEdxlbdW32k>ZjF3C%&tX%8GKME3Ec zN3s4=my+XguuokvVETEjzLY6CopKzC>z2Xk=2foK*jZ@)J$dC^93Xn8+-zV*kydP)P2Q4CI#JGkots?FbWJ$k&K?lo;pdo{ z1z1Ijj2StgDT>%9K?fXHb_cwbZmE1gJEeWA4@G=PmMKVwBJFnZI)^>`)$CWDPVri9 zP!z}YH`vLBYqY|Fr2m3L&-IEyXEhqA&o*@OVeu7K#cJ4*t4?qi30NXXW$0cJTscd0 z^8iK@7z6#%Vf{47zG4M}O3D_AL~0^6zIbs&C2grW5`~Eh%!cd)B!F+Bv>Js$CK>*x zi+QxGtJ*TWw|&;a_i%IJDEvsSretMVxP0oUNby}<=PBi;iJ_g1V~c92EZSa^P6-qD zhvH$2rQrG(fHe}P>%SArm|r)WWRt1gVE_bHWfdG=1&0TA8x_M6MeM3Zuo0b3k_=2# zuV)8LpzN^Qakgt`UvEcyYjbUNMR~w$HnMKsZ3ZXROY<)w1rw$$V*B?=Rk$_$( z;cida*l`=b_mHKauh}ta_Z9D|G3$KZ4x7EcDB$j}6IjaqAsEcO%aVd-ZZ-d1X{yQWAEMrNzClqd8fS z-G0Txb<&bXsNq9wC>jz3W80V>Sd!zv6yI4sPdU3jZO)9)p zNe>hXk2?S%B^n}wr6&@_4w8~}g1}jFjW;*n`#RCu+MoS7@6!Ls#ZCM4W<~r|r{5v2 z@a!kDpAh0{p*(ICg(9 zNiNSwh=HmgFPex!Q+%aba;`U3fMYJ-j5cXEVr&~5;-T`gVhp4pMAQP>L{5DIe&h`c zKq>qK2*N(8e@PL{Q_o|9?ukc}Ot$dWcLvTT3N4jq^wEBVxm~= zC@JQqJ$vq$>7599{beSPr^e_ne=vQ|qbDaVywD5-I_>>A{5*nncCiX}Tw7lMmSrVF z5b>hzf#ziA@?|!%K%!3Xg z9Q%e3+un1JW$&InQ-;?0lE_GJ1j`~kPh9W@3Y`z^A9R2mpAy%<&-FVR2Nn+gNe~Ob z*?!EcRy+kA_r5&RLT*HO0V#)?WqXXw3gCfyydRD+eE6m^&=Nc>*>K8+g*P)ZjgL6a=J;Iu`RAW_f=9D|Pec3Zc=iRt z5e=7T!5^wwf2y~D>mgS#ZXjdnE(}t$(CGDK8P)~HNZFED4uy@gV42@*0kelmteRJo zW>uAFYYDd`0h*i^rSX7r4jPu{0@Ag@-_qEB;k%Y2%XJOMAM9<~(?7H@(BuSV-gVSr zn7eRjv~1A%;CS}m^l@AHv#(n_GFlTV4CoHSQr*MNA3VGC&H{4|uBW7*V*|Tk)K<7I zO*)BfOa;5x9zAeVsg%zUbg)_A&>qtSG*D((k1a0xXzLA#BA6kJ-~Fq6WOX(B1#va| z_dI%i7cIO7(^*{pGsdN`A#J_MP;46`qwnTk+su-1m!??0?Vx zvmsPkT^BO>0|7rbBnL5mqDv2A`~_?-WeWH#a06~|R#-`C`0!BV{Q@-ht+{Xj6l)m{ zt(xW$AOIGyf&!0=0zJqs6@ZvQJk#$9groJMfvX1J+%o5rcf29k?{XEqWIuhIzq?E^ zPu7U5*tkdD8X9uDtFs^Qe>ilgUgwyp{W03ac(I=RHyE#h?bFti{8BKA0O$+Qq;viY z8s`lKa;TIC_~t8b`Y#O3&?NP44AzBc2H))JZI3i!ncvU(Ug{U;78E=BtzmDyV#byv z9_>Rf9t}pI#P%_4*!%!UF!2NFK*YpZt;&{C8s4o+^YVF>xabA>$}1@On0%{eEmZh8o=EKzxos6o3On$vJYq&vf+#IX$%v~ zulZtVaJMMj+>RTCQrpr!m4*9&&30@7Yb+)Saw)fZt~R3r%ZLRa3~IM z4dO;L)k7LPa)LUjGO6DXqu?aS$?19LcMt!k{=q_T-`QxV&iSs>PLJ2QI1(;Q*gaGH zJ%{&}nasNV$B)by{XXN~qvB&xVV+1GxjR&N;nObg_K|RW{!DB8$XfQl9ec#BaPx<6 zyWsB%FAI#EB|4!aY|Ca-J#*9}7WLfhBd7DC~K# zRVifyP4s$k5bNs4l4>|qK^1ih8Dd|dCLz?T)r2UTBlfqhDfKEx5gRJ@g&D zSk8}EhHO-AuL4sBbO#uhgpgJ@YEUnvAr?B$Kwn2|ZFNbJ-v`jcFt7y|p$kI#2UQ72 zV4x*KQ4S}eFt@?m!vc?5;byosTXK2N!sCpwIGhvU{z&6j+*x%PX=!&)EogM zm25l-+}sp8fyHFuCN&HaDv?3iK#mO3n#jNn5Dt>Ta^V}&6JYLWi&PdDHtT?U(k%y< z9jG2uM~WQ6k0gQ=q9J8fQrHM7rR6^lRSh%a?j1);ORX+vq^Z?jlI#s62h9FECuVnh zU64#Za>8LPIM5X=?%NYJ^E9l1 z!IJu@>bC0}14f6_T70Z~{yv?xNl);t1TlFd&hnbryhat=5RHI+GJc25kefX3#u7;o zw`58oPjYn`xnN>ONUkp9O(6qvpBh;8CW?qf?Banz-DT576S^|=Y-6B&l zlyO)Tl|*vJ(XXqy))tbng3LT>_hGf#q5-fjZ) zim%p9^0B9R2Zs>hPr~};fmO_>3KEPW!rt0i@DxN9TjfI~4Gm&lubfo$>*8~wI~yNU z^mXU?nK2=*FB;8eqxi5kHsvE2TO&LCbdBExjLwe^IdXwh@kRDY2l+OwKn zoUmA?_$Pdg7Fgm03{{WAl=<8^GP6fk_yV8bvMxck|LGDmyty*}Az?4bf`z_nsU65T z!Fmw|bHQB68foWAFXGS|cryYe?0tRxefO001o=ICX1V#(cW~t#LTcao*1L}#Z>>Li z@W8=?ABj%aiqm%s+wX<)kzI5A>8tO2C!ZL6C*hS2c=cY1SEEmRU9b*rtlcIS{n40J z5C}@lYLjCn+o@gW;MlB0xO83JO&`(o!G}yIxT81}_g`9huzZ&bkRSbxU0itH&I8e= z{?NCwzvTYEsXtSs;XQ2L0(u7Y$2(GH>_FxK-OiJ2IEjI5Ir0LfWquotxmBs$5Ss;> zu0xM)(wYGCxXy3T8U>cSL=WG=5qjcrw?sf{!$bVPU41%kZl5oETh?&(X#|xWsud@8 zC$m4x{tWbPZwoKvg+%xO-@}NfG9#V}9^F(G?PLHLu9Xch0cHR<0ScgDL2;)Qhg|Q2 zWam5lnSJ~Ip!|INT4r2>g&%LH`08d`^e9u%7-qf?Qy_d4^3@QVZGkws$jagW%xCtA zKO4VRFs@9}DA)ux`^NxR4@)M5@B~c94g9aL9YJ2-yd|o4r79p*Ymf`F4H_!o znT`Sn!;zNOclM9nCQ?+RYKGW#_aNSTo@SbFyPjWr2wYuS0h!}YP! zv6KQ06L!~zL`7w*MQ`bCt}Nl7s^Hd!ilph0_eBl0!m=~z)YTMK=nG5qp?D4ay&Sd! zUG^VwDz3;@>J?TK;_3t&gYW()z==Xu!-H_Q;~+*&5uz(-yOAzm3@rzy1ah}v`T#Sz zU1*}CfVFD0X0Or`E!ZE?5(#FvsD^dO`G&L(X;G;fHv8t#vE#Q@ zgI5~vLLJ5A$(lEmlU#-sHAO33e$vNs{^AXNOxh3|xZJlM=_BgNDX9+r_{4!iZ@k0m zNY(fYhdM}@KeV8@tAj4Jr9IhbwI{1g{M`w&|KjfUaAKF;7^9$bSeGBpP8Jn$%f#!a z%%aMO@nQc|U>`h+eNfMKrK}~zMhIACxqv*Hrw?GxuMYgTbS8lW8${jVVUQkjmE?2h zug0otH$o$^pK&~cq)Um2IlV`a}Qqf#rWU5crMtmis{dOWm zLYS1{@nUs%b33>42m7oAbP@xqqFdOex?1))O%bEd=k=0DD#UGF0|$$ZQ^36t<^}U4 z=zJafKD1vb*>weorUS0(DG*P?8Y$|)gG}?fC0 z-FCZ;E9Sj@4+OZdRFV*hcss!OF}&lZ3X<9(oU;P%0J4NOW$-?LDQWtjR8s)moJoUD zL!{`{GZe(Mv{`Yp7#cI2$BmH&Z;Lku<9cDN3chZ;JQPKopNuv+2WtS{hkS&RL^YM7 zQGNVfI2~eA`p1e5yH;#M*gAKNO*hu*vfr@;$92}3z7Bh19nOfgms;)^hQ|+ksDj&0 z?RI)S&i$S3-JPo*T~X;?8?Sq+F3BxByiy-Q3<>DdbF7@bEoBCB$_S*q>`*Fq3dP!K zM?VBSFhU?&A|HxCaCwDF(!T-dgPLx*a}H?Dp$W~yfhf%avS4Wec6wIM%Va1bg1Vyc zG*MipotJWA_xPjOTLVDYb}Hg9HLRM znB+JGU^HTGI)H;oc6nA#hAkFJcND?l6`yczegcmh2b9WnQNT>{}P|TlGGd z4V!EfIQvCO2j7YyeUNMy5!Kwn`2j~6;Fu%vU=v%sG`A`x>x{O=sZ=U~Tb`A+8$|g- zgrvoy3e=>u+RQ)g@>hD{CoRm&F4}oL01`VELX0c<(XN>@ULDj~$WdW$xylbM@CUnA z0-yNUhaS~;ddqhh-grNzLhZ8w{C-+I0W3AJOBxz(1|i8gIbr?WswCdBn3P3rKHCD7 zv}dIzxh;Q70MmTxWh0nCl?PVS3nI0;di^W>+3X+_>wmePWM7fvEn@dx!OBWnNxY*N zENP2PLsASGYg)81w!*EEN82lalIDX#H=>ikUno`;&tpfxSXLOYTW^fA!WhAX$(I$4 zAmFnZI1fMd-0A{CXH{EoU3FuH6Iw-CWx^%rahq^w|L2br?&@Zj&DamSvaYa#7I&iqwWT~^lb2)Z=W@gT$ z`;E?e(4Qz*Y}Q8WgJ=;UKlmkG=6|OTbJxPA4-eGNmVI8c=~-)_v@wi~f*PSD z(XAnOn=^g+37Huff)Q#@!I-+~`XZy?tx7jxTEq+n4WmJvjbh_@3EKk7LE}*UKwb@C zTU#7p0nVzUk*f02!UDI`YBA{XZogWSj3f33v=FDj4cj;u@|54xzE{HvY4a$O`X1Kf&PTBBvYEws!HNt7X`gJ!o$$B5b7SR$#E zN7ATSs?Tu{D@UXxjhfPElyG_vZ)r2|?UUeN&C5wI zLdGV4PgkDW$VGITMLU7FMI5>ssnQO!Fgj{S+=pVcW!zcr5GO<+3M1n$-g~6j zxT~@6{JgbXow5(~G*wl1l|}>3Io|Q?p9p)hZ+ZSfGq=AuG83+zT(0%#gP^5j>u`4g zu6|a@t(s~EWlhJ*N+B=LyG@tQgQyt zgmLDz4qmJNT-@vZM$f@Yv#Q9jVY@0fe%$xTRpoQ z`W6y7of7nuk6=y?I_nPdbVWOfQ%qL`+vO-4&O1W2%wa~}mQTd&hJsBxhBs@_^3r2O z`3VA&gyogdbbcw3i>18k^1C&QI^;cHnAQ;Q2*CP%x_{bWZl8e&zp#(Lseej0*kZbP z7ys%gHXrFUtJtgUY@8y^1rK6FlDtFl8zw*q}}SMqAM%1T1y>z zv&mWtem}UgBDY>{%z3xi!OGaaD*&#V*WwTqEtGR4o`COa$_!5ZATk3M9q4cfibgRC zP(u~4LT(mf@&Sq)@;8&MstUoe@Gwit1rrqX61>0xM}VZHoowZup5Ts7tKAwk>UK}g zy!p*I3KG!UVn;`W-DfBo^k2F-df$Dc7w)peO<TnUAa0Eu)5v8@ValsK*JW+_zeEu~t4G7sF^RsaNh8XKz; zCRRwam=VMdNe{XyE@VR~A3em?@`?!vd50DZgQtV;2%<@?nM}rK?XXtA=Ka~hsIJcB z=`~_rbVmHkn3s!9BIae&at`YxO=&aShQ_-kQ*Hvf7wjBWlIRa|j8_;lS9KqSKO{x8 z87>)$@@RFp!L^}0`B7fqAl!>4ez1JuW1vAWwKQk5y&-NM7a}{XjYoVC`VJi z<{`FT*ZZ#>Fzs6_cYdvN`JR8|W?nLC7W&Aghoct$kC+!e`~}Rbl8k~WRg%uMMUw~(!W;q^I3k70;r^<}$y1s}>ld%AbafR6JDZx6hl2Zk z^`+dr(r2$Uno7gH%U}HG7stjbYR0(w$>_1d)(T;r^E8<))lG9hp>GGpI1BNXAB^M7)7U zp~y8HtyiMYv92zWJfSPDET}9rtFSy7tmR>w>Tsy#R%>HzlLfmmw9Y2Y zrdb@}<_|oO{jG7J7y}`>Y7f_06=R8YuP7;5TRu;QA3CS`PQc%R7(VHP!TUgN;e(Nz zSTeHBwb*pEY?ey&ht>%k!_?E*yz(J!7m$wNV0Ks4h6jeQN}l{}r4wGqP9O7HU-O#m zrM3Il__?})ZG`JR@&o5l@%VH0Y+4%EmmBWOTW-OQe3FxbyiD00T5|= z2;j6$4{^#sNiCL=u#+aJ%5|e zmnM%^P9yT(O4B3azxy4FHgDS77O3&s)G?b`(5<&8QD*@)(>RYEqHhCJ%@xl;uwll8I2)$qHtoZ&b60YEOCM*-qY<^&!GK(m;Vd+c$5Dt z`{*Cx03-O7V_qKzej?tMPQ!WWxF1k*Q3{O`j@k*Pm&IMUAvV#MzXJMZkGvfIirPHh zZXz(x?iJPR&xpH#f3M=3dSU{w+{dr2Uj;0^to^EoJjjHYWGbPMWJK5; zA-ZCt!<}0*95_#MwX(|NBudAClh}Rq!W(Ez^&Cvu=g~U`;o7S5T+{|tNa?bwTjDL+Coz%Kz^2uI+NC%jd7k5~YX=C%Zwp+5jc+V3L{9gSoUNOyBx zom!rPyE#Q0P&~wWON$yo3(6$i&uBjv6a5rZnfeqKj^6PngNSDN2OoKaju>43phVPK zpoJf6VuEIEyyCXOh}{?~=1Dr<6l`hbaAit4>!L7o{Z$LVznhI9#FN-73Gt`)yvp-fv{h%=~nsDO&2)DUEcn zR~l#NEDEG3?N9Cl9N;EJgU)qpEJ}Mt32ngkr(SP#jrQ(6juY69{xbj2oVB#fdgr51 z+D?wB_g#v&s#O`X{n_;Eh>-fvrZsQQs5f1~%@OxV>9)No&Zt(lLA!tmP; z-|<10aF#v1blaW-+5ZeAm3&_e10H_B4U$_97G8*W5t8^w;6s>AMf2P4IDYnywpJYv zJY*8ZwYQ17cpeafoAo37&-Yq%1xFvrewmC}c()fez*)qJkuBH)IGBv|Vg-T&`TTR= z2GNz(@n^5EV+eC|bJ?HF&St+phfrMYjLIpTQ88>;PdHF;%s~X`ki%2gcZ=iK-;XuL z`W`GQJH^sVFPU7f=E7qOQ`R5+z|4CU z@zC2QCb`Ay>n(fD{dc;!q$RRlTFYv*8=!VQ37{rfd87eK>gbwHO)8LNG>2V^{Cz)o zb0rrQ_v-tO=nskNvVf<{tXoyxvq5LEa!5pqW8#HxapzUTY|3mbt236|AO6)hzVUDI zx9Xh!Dxp8ufFyRAjAnejY z1w9c&($S!$lFQqVD&f+*8+^WwKUa=&gE9T^!)Zj@xJ%{`BkelqDqb_`b#c!whp4U= z_qW`xnyS;Wh1%DY-A=Cu2a#z^wR_%V3;hu59KXV#(#Ys7x>$7haKyP{4D zFL!#CVoS3E#kSlg45IXN#-sNAw^@<2l?#ATQl)c z2%;G`Hd*ho{g)6wc~UrEyJ)-9(qu%gp*phMU)mCh!6r{*hvXnWjy3P6HOI@-v{!89 zoKFN+vM@>8g?uG}ge!J06=(pLsDU{q>HQj-Nnxn;L#yvPILLJs@wnM8ETYc0_nNNK zX=$)n&(6=B!aHA)bXMxF?e*0Oo825Au;@kM?qf%W=WT|%`8^YbVeHNQ_P+Vbg5&Yp z*yPguuxgLh#*Y_N&iC2(W6I&eiHm*3-U!Wsv0w4u@OEI(tMK@4PVqOt(&BIAbIQ;D z*yog=Z9KPt_q%-w>uqJt@HlI}1`-X(*99fwFa{*$#x3_U(#YlW$WSuu7z%mAdpCXI z1!Kt6M6VNd92M=p8J~QODBAfy=N)na|9{Ji{JV0#g{=1~4kv9+*$LAJSOq36-@-~J zneACpVm7%D_V4q^5RB^rZ4f{T-wf> z)y7=f$;#CGb7>c|tC!)kJ%e`{-3>YH1Ut@F*%}Li-z~wu6vVre8}ZkHXdOy5;Ty!; zQdih{S@$&Vrcv_*a!%vA0@@jbZ=2HfIQ02yEjK|v3bHZunZ`3g)`#cPSg{p$3gck| zXU^Vz?!@ucwP5v9O)$~e*in~gY-$V+uADz{{B&@7>BP$ErImPa^z>4_`Nqmk&B3wN z^yy&VQhIsi6j~cY(=%v#4sZFKmK~nQbwy757>d&~D|1Jt)2Gi*ubex9j46~IXLqub zs0$T)YUTKyC(}p_16-#8B)XnMjTH<$f$0)xI^}d;sh_$V+Z{f0dTsd3x#KIrM15nh zGkC)|>Nfg)~V~s8})hAKmf7du)4SBYsB_ZA)i^594;$B1{~9wZAxeybDmL(F7%)oR@2L0l&-0 z$zxuS?ZH@2Nz8j?XwxP%1M6um&u?pC8uL7cp6)_R=VVJ-jgzQJ8~HTqYrWoyG;PUq zc%DW^_&$wIK91`I2nW^OI=1m`Ezr8$8slhenaIIlHop{|-14h4u5ud>Q8q)RnQd@awH(=z$6eMvY)yR>U_$_Hnu)6E6 zyY8w#m0nxDEq$>bo3^Ls)#y&{ncG2%(i$bwo{O9BIiR)WYld17hh^m#mb=jr8@bHTOMmEiQ~cyQwE%4x0g zxK<$^+_GiswZ?MK2GbYPCr+l1o?Hpa(WHaJeS3rHwNCTu+S=L9hKBP?=T4kmJ70hP z#7P=eAaIQ+*`W=%Fg?D-qyJO3r?-uCl4+>ylr!JIetvtpmuo1Ei)K?;lHnyY+)a4FT~+*iLMqT_Ba?_#Yhh02wEN z%2U`@Gq7Rphb3bU#~l{nPd!NgXCF)@FT!@HgIGzXS|c~Xd167_tqmS<2YZ4$VO4f> z5BG8(&h!S@W9&)x6uZivW}jnM@WQ=9USzoQ^ohpCzD9Y)yT44w&!sP{ES))Z)RbPj zb4{jXS+X%2>UjFp(dD$5 zJ0T`d=%-H{Kb1D@I}40Db6S~PJ)umVKS7TT4G$0Iu0y%&FfAS|Irtw8aZXl~n_lSt UGdg|EzW)CvCg_U)@AJ|B52O^j!~g&Q literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Regular.woff b/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..33be368048f7e28c8b87fe4631339a801a09b871 GIT binary patch literal 16744 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Script-Regular.ttf b/frontend/config/public/assets/fonts-katex/KaTeX_Script-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..da4d11308aeecb950b6a4f669ef1d4b05746f887 GIT binary patch literal 24864 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Script-Regular.woff2 b/frontend/config/public/assets/fonts-katex/KaTeX_Script-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1b43deb45a854d69d134865608f7ddf128e654c3 GIT binary patch literal 12276 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 OR#4h-t1!gio8|!SYu)4k literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Size1-Regular.eot b/frontend/config/public/assets/fonts-katex/KaTeX_Size1-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..29950f95ff6a625cfe0435b01d5fbe6b6270c938 GIT binary patch literal 13408 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 Nle>8x|F`6G{~Lv@cWD3s literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Size1-Regular.woff b/frontend/config/public/assets/fonts-katex/KaTeX_Size1-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..237f271edd1ca85a9cb78d12c142f22deec6788e GIT binary patch literal 6980 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 IHX(BV52p3?3IG5A literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Size1-Regular.woff2 b/frontend/config/public/assets/fonts-katex/KaTeX_Size1-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..39b6f8f746c39c8c2faa9188de664475443d6b91 GIT binary patch literal 5820 zcmV;t7DMTGPew8T0RR9102aIe4*&oF05fy|02W{X0RR9100000000000000000000 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 GdM5yznhJIR literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Size2-Regular.eot b/frontend/config/public/assets/fonts-katex/KaTeX_Size2-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..b8b0536f96767e3e4235d7795f5bb5bb6b7d03f6 GIT binary patch literal 12648 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Size2-Regular.woff b/frontend/config/public/assets/fonts-katex/KaTeX_Size2-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..4a3055854ede4eaf25de2364da0fea0a05858cfc GIT binary patch literal 6684 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 Tg_Hl}z+VB4e{%Y3K;HiWz5YA{ literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Size2-Regular.woff2 b/frontend/config/public/assets/fonts-katex/KaTeX_Size2-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3facec1ab899c8b984146e54051efafb948eb08c GIT binary patch literal 5560 zcmV;p6-VlKPew8T0RR9102R0Z4*&oF05E(202N&T0RR9100000000000000000000 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 z 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 b_t#}$xcqq6w_XMyFZ`zQkbw9<{u}=bafM%{ literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Size3-Regular.woff b/frontend/config/public/assets/fonts-katex/KaTeX_Size3-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..3a6d062e660d3a9f71b0230e601dcaff83638430 GIT binary patch literal 4776 zcmZu#c|26__rHwYVC;LCj3r{s*w>+~pX@?e8rzVav4<>KvhN~9Np?wONyxs-7D5ss zdzi@fy?uV4KY!2jdOzo${oH@Ffxe)e)CT~_x1_Q4hfWSQ_F!yt z&;|`cnz%@j#|adIvcL85g5W13BO*At`G9p0|E<>ogsT$iX|Ah>9cV`>3-bShW1Q>E z%_abhPgDuYctG$1HGs3bjhh1i(5`?rUIFta^Yxo?dwSr(8W>1Gn};Bp4PV%!JiQ%2 zUy3e}cls+|9@CN!n6ty$W3j-pU{S5W{+aYW_LZD_fI6F)d(9o_i-+oG`?gji%~XA> zSS;~lV!#(i(*gYFV|COU&ll(0UlV)jVV;c!)D6NUf$|Ho%m4H#I0`J*79fHNw;Ry% zzhsle5CaSlB94FkZSM}thKFZ{hnL0Qr-MLl&^^Khw`2SIy23~}*w_}Sk?#Ykzmpd? zl^|u2Lhmm}EBC%efXSE-q)Ex5FJy6zETm)_fH(e)v$*cB4qKssXG)LkAd}&+2C2Q%@{-wfY&E>s= zw#$cKFZ0@V9wuJ=T09TU-i$5?lbp0x3`oM5UDWUN6UPw)Z#n|q`;A}(A|K!D%1P;2~(!b_xyTlS!q!$zJbf#_nlR8GSrY* zwG`2oC9#od9fP~Ve&ZqGS?r;a4~H}FJFd%w-W?5jqsyzU(3xQqJlY~3A@!MkK82KLYHbZebsz6W7$W7ln>=Qv+4{5F34K;eRL-k#MkMNLxwC0zGu5u$XUlp`9ht?iXi3fD>d0dV}4mH6u$Sl zf2-M3g&*xL^oswCVS&GGmnt-kW9=Ra-gaX)jiyyF=y^;_dVMgxjT@=qm$-MGnCO7! zCdQ@IZdDplg$y&voy=1W0o`G?r14CxS|7WCEuOU5@Q{IQE)KJZ{JdZCquxCqmN=cz zR5=V&_35NjJkL;yU$4);u-7lmPFKlUw9Wb!5fgj$+i&}!sIeTB=!gI%wH|G2v8!Rv z(PY=8aLoj25mm`r#2vDcFiv#zN}w(jYcWpyPs5FgYyI}YKYM&*a7?jkW9++PZM3`# zDJ3Uw6DK6~Xor_`xy=Q@puJFtC=kc!RL! zv=s>%sVV$@hY_A8aORRqNMjJ0JuV3<{taXZwVn5@q=)3CKaTL{Cw6ba5%GuDH* zrHa6xT)McANaCQMx7GV+Yf(yK7OW{Hq+QbY{G1FC0)vQ^oK?9@`#T@X(zpiSnWQ-e zS|jX4uV*II1zR9Uvvy1EBUZ_EO!|VC474L-Xfve(R>oQe3O9ba93Ni^4rcYIKJFWj zP8Jn!*UVy2eq#wf#_y%BQU%+eCzi0@KNi|~7YBcJ zi&kI*p4%v_SN15OBJJ}`8){64wkmPJPV7^+QJM_vIp7itIoor>C8>NU?qc5F)m+NC z@VffsHDhAkqWPbRrH4l}cXY*a;$zoQ%Q2mTr|~^W6|`1{nRuy~>C5;yfvvDmW`smm z+;e!Y;(M*teCrzFr%wog3%3hBW2<{^JoW2)-C1`&hAp*~j6E__UcX%otG}|-Ojxch zE%rB{^^ZUZEeC#`rz*hRG&R>pi_9Jr4Jy12bGs&GA&m@Kta!n+e?=!dq$j>P?Tz(( z_xA)=i+1|mLbI=rzcH}XxfVtI^RdnT+evy z_R3->>UzeR{2B(64t}>W(_Am`CnH;+t4Z)8d-Kh~7&X zy-O~axrck!*Hl${S9#ya>{GorU3Al(rEM?T0iz zFF2}Z&f1!j7uL>=(#`oaf4ap$ctZ4gkQZdV9)qgHWL^ns?(mgvAK881Uak?dbrf#@ zyYZp_Yy5CjU^8*B*{9pFERMsP*6NUFZ)^&b4d;_4iO)=qY8?S(2$DUx`cKL9TcWqP zcsb>EX*}B&GNwZeBob@V?W{vKdk8!m$&d{U)eC9tl;RzSAy?WK|-U?YyJ{Ob=+E2>KK9eVnLOQ8B(J}=ILLd-9RD4c{ z!wV`qO>7rgOj2y(kgyo%6z07Z7Y#H)l$N`nkDeEiig}$HuIWPl{c@T{w3Ra_tl8Yy z5_qD;&-u6iV!#Fu1&F{CVEJzw0kJ>>Fa%r>F%e}EQ-NEO*oU})coD(^xdu^&7(sB5 zG)OyS60!~T!*H} z=&dTkiT4^TJPb~$abty4J7Hfna10RF_(mkE1GCeD^6l$V(ETZtyjfnG^ShC& z1*Kb5z&rlfdAHW`Rc@_7q$nekf8)VhegWaM-Hat(8^;HFqZ@8=O8H97!cWyJP?=Gq zh?MG?8?wSY*$ipNYMSe=vB9BQ|v396wvPg*A zz%pw|7am~qE7dWSa?T}Z$yW&(w@~5l&eOq=K$!IEXbdXz9+~}S*(f5X>0bU;c3GF+ z<4FK#?B|uPFC5{)wIuuImT}FGDAXc-t{DsYX?u>(Zcw{)QLATvZo2tCx5Ou-@WjKE zZugHYy@KF1R?UW8bK{d~In}QD&k|6NW=ksqtVPF?#p?vI99LrLrCwI?WUz;+gG5e; z-X($q*}%LSTOKJpzmms;ulDM`f+FTRzc4M~Q0<&mv3-`;;BkPx-OD}R(chrf&{0<< zSoOA`ZU?je%i%#^TW#>GTFY*+s;aAcGoDkQ;rY&k7!Bu6wGU6?yX|1<%VaGalulIs z)roRzPm^v=!n%=4WUacpU&KkSs*XfVxNcK${VKCL#Gex0hIn@cc7LasyJ28vK?m_y ziYhJ;T{+}^l&2y-D4y-8EOr`7cc(1O7hP||m5poUizPFoZ+n1kWA+Etd z47q+FZA9G2ICoI-q`dGR&jN?nWoO5{Yz-oez`@6|#r;O7@W#ER{_`p-$CBiI`}<2} zz+w2JTL`k8;(A0M4ZgdvY4T*DY08b}{Rdb-eyGiJm(lbcdO_|ma>O$@>b_@}mXrXw zvvNRQaEh0mtpSVeZN12+i4sAzx6-t8>vQeJB_1H}RsQKIRSr^0E>d{QopM{QGI1A0 zvVjS~yX1ci8ysXMxM-n2&PY{9U5yaoN}h(O3GsM@luk&FN{?xte?ktBGx7(GV&C^R ztp+nLo*bU>vK9ft9$V(Md|ScW^FJTc?cCuFz|e=P7G04m{!ZvC*W_dzKDubf_xc3u zsz|~cUma8@2A&xAycF7iHl8Lv&azGk9GT>uO4IAl^HZX0&q6ycA%5l!X1b5$(d8$z zt;zOid||EPj&eH0K71&7_lSGx(HZ4p#@+ss<<(G&DMVA{TBEtxKf7MyRz?LDsErJG zL^$Qawi$j<=jR^hX12<_uWOHOICn2y#pcwv^Udt*euAFx{@hi+Ve${tfyxf`X&Dow z13ZZDA%SOgn@I86rragvT-@hj=5CRfmkgwJoSw_oXfsB|l#*H2OIAZ(w>t71-IE!u zGaAF}XQ*qttCl5@Aimrh)2c>oW|91e(LF&YQy(#E#9QxUsu>}ZBDGb`5z#4YO0MwL z$b%^OsalKw>_0gkbzBreA98jZzpg$lIuoaVruZ%tam3E%dGV|K^U%=)Uk6_r|C;LJ zvT|rfYwohXDSla*;BD_!0*!NV{}EKhaxr+Nv5}a~VXg8!Nk#kiK<9QH`M%P}ZVJt) z;=0xfn3N)&~-E$v(7?KAFsneQpt)Akeq$u_SZEyZ9tGm-v}d#-5!DfpV*} zS1nc|(M-=wZ!^<4Q(QHDjImK`&P3ti>d%vw;*>gXACGeBjc~7}Ws22hXJsp+bE`k( z;%-^o0dp@+I`qC^VB9gVNnSXNA%-xPnF6~X$w)3n@`y?GDj$p@0v2QHsKW-BV)nk?t2Liui7~BUS#LUkd2P}{D|zpOJ+6^)n$f; zPYG@#dRVTH`9~UO)RoW_6z0}DdFEzSCX?xpXB`bML9f4D7#O7}T0832XMb!Kdw&x-Rin64LHePb)aIYpZ>(&YrB@!TzN>k-!r}6O zD&K%raE#Iy_TmO7hUx|7;FTW$WpbC-Rl69d*SwXG#5{a=!)0EbNWGf14gGpG!L4e!)>T~#MJ)%Q5ff( z$^<>7TWkDg@+ZDG@WZ6toZp&k%fZRJVh{M=7`8zTkM?yI*jbNz-kj!nZrAE)a){); ztgMbxQ)IqodlMU9F%=~mQKN-laA=C{bBR6FH&eISvg*i^A&(4S_%_h8@>!a8#q^@~ zv~$K%wTn^P)~t`V_}5Hr?9CZg8WtWezjg)NW6v+MTaN`_tT-w;l@rmCMiyST`lgB8 zJfWdStx}qPU2u%C`X)GV`dBTThFe#G58aUPyUFz+z5y%GFycIQwdXcsQ+TS1DL$2R zpgL|#tKoY}e2mn}W?R~s%ty!h>Nen=LXh*n|M}oNA@Xt0giiFs^ef8S8w$JZIDnW>4X`Kghq>8bIlPg7%3vs)#_C)(RT0k=3g z*}Ssse-sxBtgQ)z-%LoL5iNX+$nbkKu7{nQpCZuJQu(++}9LA$>}Cm!+V*RMaVIch!-@ z0TBQ9I`y@NWx6p1i<;6Z$uIp3XC$x%Pdad%Vfx$3_&@yj`E!3`N@Y6CkIZelhqP+D zft()d4hDm35FCg3S-1aBr>=K$d8A>3O^`d-$jIgEzPp@_8(L=Z{hDgB@*@sc`0WaY|l{d{|l9X zo?|;|LI6#`V$%@>mJ%HTKKaa{=tO*d4O@R2Ly~Bj9nW??r(mHO8jq>IPJx`4Mxr#U+e znhDnX6TxXK!C8d2Sa*AdWQWCg%B_>it)e33is4}gowH+@Wr&KG2E+PpiW<`nY*J0z zscbdhzZI2Ys5%|YZ8ZZSZG#2v1;3%oIQ9y5*Iw~MpLZLSc@s(yV zqx9fftjz1E5gKur`o~s1EMFQb6%C!os4SYJ;q6|k?9VjcM!B{hj+VFE>FsVvL=$!{ z{m42h)Ruj(`q4V1MAVUi1?sUX?pRqHWYYxWTd4}pg!MS67OE_?3dxn!KBF$fyBN~}}@ z#4U(JPk6n8c$Od+73>)j6+@ICre7evC;yqP)wpDQ=p>*{3ts;wVCmPKMA~bela$VY z=s0aF$y8dI?x@uQ`1k6iuLtLq8CtJ2ruQ&IERIQu7%x9`QUE4cze@2nBG;qSAQ(m~qX|J8{3$Qf<^@*6D5D4xBYh22 z<-}mrpTrqdedDk){W#Lwdy`;mo9mBS>Bb!DPl>@6iNG{_Lc+-z$;?S0j&gYfgHYfnYJ(I|oz*n&KJag4!$6w8NTObrza{XD1d^ zMcfg*dscb<$tx=7Ybv7t&}#*Z!RuUjRP}s#5;IHF0~{qo#H5a z2^GX}iA2XJh2$qHv%@qqwVDqcDC@{_x?%)nM@t1GkpIG!0zp-r1ZXuRu$p9CAk@N~ z)d9e)05BVHu22tP4FIr409X^SMQ8@F764c)0IUtTP-q9R4ggpu0IUl*Pv{1)9spP` z086GpnuytSR|Hv>YX;8dGy9S_$2n+LSUM$}4GDaX1>kc5XEd*W2AhA8z!xk4d?5g6 zQU6S~_#%NXSpfJ_017SRr@TeKI5iRfp!KVMcyi~s={nBJMNthc90a22YH4MDRAGfxJ)xUyf9#7S(u#E5o>K{UNy zd#rte^f&CE@n5)$Gz5p?|2_0R+fLh1&%@LEMvS z+3=GzQ0AS+3&x~@hF2snhjsSn2A!sf`ia8rqSN|fU#{8jYui42>uP_@;Hw71u*uZW zVDFcwHe__jGE#JIA{BO-g^R16e#x%HGLM2ZkdFOwuK{S?<7jJx<5giB?RF;#)%x4_ zDTY45k`6_>ldOh8LL^AHYUbU>8HbHMv2pLk3E}^}$=JN(C)X!hqtf}Rhqk#XWro7xOL;vM};LSHSLsXe9h8je05a%H=$Pd2 z+=@*%)>1$1bblUXFqq!e`gbwh|H-$9?x8%k<`T=P}NU=f$qg zOqX}ULt%?l!Kvx*mdn-#G`WrZnEb-kkA=);ZmHjE2^*z%o8K+x9f3`54^M<1j&HuN zrNDXF@ArGt*6!8wb-({Zjq*bZ=JISQvCul>_cD9=N~Qj1#{1`)h9(972`~8lk`^Cg zRPgE^P3I}dl0ojPK3u@ETyiAX7Fiar^kd~%Lz^Fca}DG)uzG4+@-jWU(D zg(J3@sE9-u6cT^JB8Y4v z9J0u7ghvn!Cra8%XAl(`I5hO_kwv3L zUN}P>9W`s5X&TL^%n={1_f2}GYEf#X-%_v~eC!4-PTiha5SD2dR+oxlIbVS|47W%3 zZbc!Sk<+DtEZ1am^5J^5S?Q&0Axhy^p@HKZ3z{vSZ5i~6eDPaG`#=&=RQBbYS7DDOSaGHCEK$=qqSWILL=P z-4yMS0`#ac;Q^WjAze*+2Dj>LRhO%DrZK_hQcog~s84AbalIIK3+>H}!_E)K}yf-IyIYU+zzRSV5O$RGeheA(lzluvaPpiH+*R0@$ z9NC@<7~ZGA1I}n*=a-&mRocbavu46`v;;oOROe(|mWeu3kOfv{vgg13TVWHc z^0P8}>i(|>&P4YRKPEpE0|^S~4i1m}@+T;EU?*V+ikt|J9WL zJS)2c_`CrKn@=yC@(+OAvN6cN0P^?wkDd~bG``35o((~s9RCG}Agn*4$GXvwpQPpi Sim-oV>Ot5I1I>}Z^_~IHATU(` literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Size4-Regular.eot b/frontend/config/public/assets/fonts-katex/KaTeX_Size4-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..c2b045fc3dbebff9ecede9a4a1fcf9080633fb15 GIT binary patch literal 11520 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

8*Jbd7L&ee@kTfN?Yn+ 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Size4-Regular.woff b/frontend/config/public/assets/fonts-katex/KaTeX_Size4-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..7826c6c97a108759a64d1fd402428ad73c795898 GIT binary patch literal 6456 zcmZu$Wmptp*Irn5>F&;@#bs%vK|mU5L0GyQ32Bwir9oPy8>G9XJ48~DknYm`*7tpX ze$R8=bLQOVJ~QW<`Ej0S#z#|85r76j4Qf#U;Xlhu_V4)r4Mjy=b(D?{75fjYjGpq

(NU4DA#L?o{;Dr;9otr1Mq$TMr^0d79|i^ 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 YDotF!T>j=)f7=SNblRTM18vg?f+#{j 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Typewriter-Regular.woff b/frontend/config/public/assets/fonts-katex/KaTeX_Typewriter-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..78e990488a9b61630e28263b73157205c0aeda96 GIT binary patch literal 20712 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 literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_Typewriter-Regular.woff2 b/frontend/config/public/assets/fonts-katex/KaTeX_Typewriter-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..618de99d480f9a5dfeabce556f3a94bd31de1a2c GIT binary patch literal 17344 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]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 rg(syp6t8!|axc .newline{display:block}.katex .base{position:relative;display:inline-block;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .strut{display:inline-block}.katex .textbf{font-weight:bold}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:bold}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:bold;font-style:italic}.katex .amsrm{font-family:KaTeX_AMS}.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:bold}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist > span{display:block;height:0;position:relative}.katex .vlist > span > span{display:inline-block}.katex .vlist > span > .pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac > span > span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap > .inner,.katex .llap > .inner,.katex .rlap > .inner{position:absolute}.katex .clap > .fix,.katex .llap > .fix,.katex .rlap > .fix{display:inline-block}.katex .llap > .inner{right:0}.katex .clap > .inner,.katex .rlap > .inner{left:0}.katex .clap > .inner > span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:solid 0;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt > .root{margin-left:0.27777778em;margin-right:-0.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:0.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:0.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:0.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:0.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:0.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:0.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:0.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:0.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:0.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:0.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:0.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:0.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:0.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:0.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:0.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:0.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:0.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:0.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:0.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:0.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:0.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:0.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:0.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:0.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:0.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:0.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:0.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:0.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:0.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:0.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:0.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:0.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:0.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:0.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:0.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:0.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:0.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:0.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:0.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:0.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:0.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:0.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:0.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:0.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:0.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:0.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:0.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:0.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:0.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:0.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:0.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:0.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:0.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:0.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:0.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1 > span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4 > span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:0.12em}.katex .delimcenter{position:relative}.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits > .vlist-t{text-align:center}.katex .accent > .vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c > .vlist-t{text-align:center}.katex .mtable .col-align-l > .vlist-t{text-align:left}.katex .mtable .col-align-r > .vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy::after,.katex .stretchy::before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 0.5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 0.3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:0.04em solid}.katex .cancel-pad{padding:0 0.2em}.katex .cancel-lap{margin-left:-0.2em;margin-right:-0.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:0.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display > .katex{display:block;text-align:center;white-space:nowrap}.katex-display > .katex > .katex-html{display:block;position:relative}.katex-display > .katex > .katex-html > .tag{position:absolute;right:0}.katex-display.leqno > .katex > .katex-html > .tag{left:0;right:auto}.katex-display.fleqn > .katex{text-align:left} diff --git a/frontend/config/public/assets/katex.min.js b/frontend/config/public/assets/katex.min.js new file mode 100644 index 0000000..08a1822 --- /dev/null +++ b/frontend/config/public/assets/katex.min.js @@ -0,0 +1,68 @@ +!function (t, e) { "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.katex = e() : t.katex = e() }("undefined" != typeof self ? self : this, function () { + return function (t) { function e(n) { if (r[n]) return r[n].exports; var i = r[n] = { i: n, l: !1, exports: {} }; return t[n].call(i.exports, i, i.exports, e), i.l = !0, i.exports } var r = {}; return e.m = t, e.c = r, e.d = function (t, r, n) { e.o(t, r) || Object.defineProperty(t, r, { enumerable: !0, get: n }) }, e.r = function (t) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(t, "__esModule", { value: !0 }) }, e.t = function (t, r) { if (1 & r && (t = e(t)), 8 & r) return t; if (4 & r && "object" == typeof t && t && t.__esModule) return t; var n = Object.create(null); if (e.r(n), Object.defineProperty(n, "default", { enumerable: !0, value: t }), 2 & r && "string" != typeof t) for (var i in t) e.d(n, i, function (e) { return t[e] }.bind(null, i)); return n }, e.n = function (t) { var r = t && t.__esModule ? function () { return t["default"] } : function () { return t }; return e.d(r, "a", r), r }, e.o = function (t, e) { return Object.prototype.hasOwnProperty.call(t, e) }, e.p = "", e(e.s = 1) }([function () { }, function (t, e, r) { + "use strict"; function n(t) { for (var e = 0; e < X.length; e += 2)if (t >= X[e] && t <= X[e + 1]) return !0; return !1 } function i(t) { if (t instanceof at) return t; throw new Error("Expected symbolNode but got " + String(t) + ".") } function a(t, e, r) { if (!ct[e]) throw new Error("Font metrics not found for font: " + e + "."); var i = t.charCodeAt(0), a = ct[e][i]; if (!a && t[0] in ht && (i = ht[t[0]].charCodeAt(0), a = ct[e][i]), a || "text" !== r || n(i) && (a = ct[e][77]), a) return { depth: a[0], height: a[1], italic: a[2], skew: a[3], width: a[4] } } function o(t, e, r, n, i, a) { ft[t][i] = { font: e, group: r, replace: n }, a && n && (ft[t][n] = ft[t][i]) } function s(t, e) { var r = l(t, e); if (!r) throw new Error("Expected node of type " + e + ", but got " + (t ? "node of type " + t.type : String(t))); return r } function l(t, e) { return t && t.type === e ? t : null } function c(t, e) { var r = function (t, e) { return t && "atom" === t.type && t.family === e ? t : null }(t, e); if (!r) throw new Error('Expected node of type "atom" and family "' + e + '", but got ' + (t ? "atom" === t.type ? "atom of family " + t.family : "node of type " + t.type : String(t))); return r } function u(t) { var e = h(t); if (!e) throw new Error("Expected node of symbol group type, but got " + (t ? "node of type " + t.type : String(t))); return e } function h(t) { return t && ("atom" === t.type || pt.hasOwnProperty(t.type)) ? t : null } function d(t) { for (var e = t.type, r = t.names, n = t.props, i = t.handler, a = t.htmlBuilder, o = t.mathmlBuilder, s = { type: e, numArgs: n.numArgs, argTypes: n.argTypes, greediness: void 0 === n.greediness ? 1 : n.greediness, allowedInText: !!n.allowedInText, allowedInMath: void 0 === n.allowedInMath || n.allowedInMath, numOptionalArgs: n.numOptionalArgs || 0, infix: !!n.infix, handler: i }, l = 0; l < r.length; ++l)de[r[l]] = s; e && (a && (me[e] = a), o && (pe[e] = o)) } function m(t) { d({ type: t.type, names: [], props: { numArgs: 0 }, handler: function () { throw new Error("Should never be called.") }, htmlBuilder: t.htmlBuilder, mathmlBuilder: t.mathmlBuilder }) } function p(t, e) { var r = ge(["base"], t, e), n = ge(["strut"]); return n.style.height = r.height + r.depth + "em", n.style.verticalAlign = -r.depth + "em", r.children.unshift(n), r } function f(t, e) { var r = null; 1 === t.length && "tag" === t[0].type && (r = t[0].tag, t = t[0].body); for (var n, i = we(t, e, !0), a = [], o = [], s = 0; s < i.length; s++)if (o.push(i[s]), i[s].hasClass("mbin") || i[s].hasClass("mrel") || i[s].hasClass("allowbreak")) { for (var l = !1; s < i.length - 1 && i[s + 1].hasClass("mspace") && !i[s + 1].hasClass("newline");)s++, o.push(i[s]), i[s].hasClass("nobreak") && (l = !0); l || (a.push(p(o, e)), o = []) } else i[s].hasClass("newline") && (o.pop(), o.length > 0 && (a.push(p(o, e)), o = []), a.push(i[s])); o.length > 0 && a.push(p(o, e)), r && ((n = p(we(r, e, !0))).classes = ["tag"], a.push(n)); var c = ge(["katex-html"], a); if (c.setAttribute("aria-hidden", "true"), n) { var u = n.children[0]; u.style.height = c.height + c.depth + "em", u.style.verticalAlign = -c.depth + "em" } return c } function g(t) { return new $(t) } function v(t, e, r, n) { var i, a = Pe(t, r); i = 1 === a.length && a[0] instanceof Re && B.contains(["mrow", "mtable"], a[0].type) ? a[0] : new Ce.MathNode("mrow", a); var o = new Ce.MathNode("annotation", [new Ce.TextNode(e)]); o.setAttribute("encoding", "application/x-tex"); var s = new Ce.MathNode("semantics", [i, o]), l = new Ce.MathNode("math", [s]); l.setAttribute("xmlns", "http://www.w3.org/1998/Math/MathML"); var c = n ? "katex" : "katex-mathml"; return oe.makeSpan([c], [l]) } function y(t, e) { var r = h(t); if (r && B.contains(xr, r.text)) return r; throw new z("Invalid delimiter: '" + (r ? r.text : JSON.stringify(t)) + "' after '" + e.funcName + "'", t) } function b(t) { if (!t.body) throw new Error("Bug: The leftright ParseNode wasn't fully parsed.") } function x(t) { for (var e = t.type, r = t.names, n = t.props, i = t.handler, a = t.htmlBuilder, o = t.mathmlBuilder, s = { type: e, numArgs: n.numArgs || 0, greediness: 1, allowedInText: !1, numOptionalArgs: 0, handler: i }, l = 0; l < r.length; ++l)Sr[r[l]] = s; a && (me[e] = a), o && (pe[e] = o) } function w(t) { var e = []; t.consumeSpaces(); for (var r = t.fetch().text; "\\hline" === r || "\\hdashline" === r;)t.consume(), e.push("\\hdashline" === r), t.consumeSpaces(), r = t.fetch().text; return e } function k(t, e, r) { var n = e.hskipBeforeAndAfter, i = e.addJot, a = e.cols, o = e.arraystretch, l = e.colSeparationType; if (t.gullet.beginGroup(), t.gullet.macros.set("\\\\", "\\cr"), !o) { var c = t.gullet.expandMacroAsText("\\arraystretch"); if (null == c) o = 1; else if (!(o = parseFloat(c)) || o < 0) throw new z("Invalid \\arraystretch: " + c) } t.gullet.beginGroup(); var u = [], h = [u], d = [], m = []; for (m.push(w(t)); ;) { var p = t.parseExpression(!1, "\\cr"); t.gullet.endGroup(), t.gullet.beginGroup(), p = { type: "ordgroup", mode: t.mode, body: p }, r && (p = { type: "styling", mode: t.mode, style: r, body: [p] }), u.push(p); var f = t.fetch().text; if ("&" === f) t.consume(); else { if ("\\end" === f) { 1 === u.length && "styling" === p.type && 0 === p.body[0].body.length && h.pop(), m.length < h.length + 1 && m.push([]); break } if ("\\cr" !== f) throw new z("Expected & or \\\\ or \\cr or \\end", t.nextToken); var g = s(t.parseFunction(), "cr"); d.push(g.size), m.push(w(t)), u = [], h.push(u) } } return t.gullet.endGroup(), t.gullet.endGroup(), { type: "array", mode: t.mode, addJot: i, arraystretch: o, body: h, cols: a, rowGaps: d, hskipBeforeAndAfter: n, hLinesBeforeRow: m, colSeparationType: l } } function S(t) { return "d" === t.substr(0, 1) ? "display" : "text" } function A(t, e) { var r = we(t.body, e, !0); return Cr([t.mclass], r, e) } function E(t, e) { var r, n = Pe(t.body, e); return "minner" === t.mclass ? Ce.newDocumentFragment(n) : ("mord" === t.mclass ? t.isCharacterBox ? (r = n[0]).type = "mi" : r = new Ce.MathNode("mi", n) : (t.isCharacterBox ? (r = n[0]).type = "mo" : r = new Ce.MathNode("mo", n), "mbin" === t.mclass ? (r.attributes.lspace = "0.22em", r.attributes.rspace = "0.22em") : "mpunct" === t.mclass ? (r.attributes.lspace = "0em", r.attributes.rspace = "0.17em") : "mopen" !== t.mclass && "mclose" !== t.mclass || (r.attributes.lspace = "0em", r.attributes.rspace = "0em")), r) } function M(t, e, r) { for (var n = we(t, e, !1), i = e.sizeMultiplier / r.sizeMultiplier, a = 0; a < n.length; a++) { var o = n[a].classes.indexOf("sizing"); o < 0 ? Array.prototype.push.apply(n[a].classes, e.sizingClasses(r)) : n[a].classes[o + 1] === "reset-size" + e.size && (n[a].classes[o + 1] = "reset-size" + r.size), n[a].height *= i, n[a].depth *= i } return oe.makeFragment(n) } function R(t, e) { mn[t] = e } r.r(e), r(0); var T = function () { function t(t, e, r) { this.lexer = void 0, this.start = void 0, this.end = void 0, this.lexer = t, this.start = e, this.end = r } return t.range = function (e, r) { return r ? e && e.loc && r.loc && e.loc.lexer === r.loc.lexer ? new t(e.loc.lexer, e.loc.start, r.loc.end) : null : e && e.loc }, t }(), C = function () { function t(t, e) { this.text = void 0, this.loc = void 0, this.text = t, this.loc = e } return t.prototype.range = function (e, r) { return new t(r, T.range(this, e)) }, t }(), L = function zn(t, e) { this.position = void 0; var r, n = "KaTeX parse error: " + t, i = e && e.loc; if (i && i.start <= i.end) { var a = i.lexer.input; r = i.start; var o = i.end; r === a.length ? n += " at end of input: " : n += " at position " + (r + 1) + ": "; var s = a.slice(r, o).replace(/[^]/g, "$&\u0332"); n += (r > 15 ? "\u2026" + a.slice(r - 15, r) : a.slice(0, r)) + s + (o + 15 < a.length ? a.slice(o, o + 15) + "\u2026" : a.slice(o)) } var l = new Error(n); return l.name = "ParseError", l.__proto__ = zn.prototype, l.position = r, l }; L.prototype.__proto__ = Error.prototype; var z = L, N = /([A-Z])/g, P = { "&": "&", ">": ">", "<": "<", '"': """, "'": "'" }, I = /[&><"']/g, O = function Nn(t) { return "ordgroup" === t.type ? 1 === t.body.length ? Nn(t.body[0]) : t : "color" === t.type ? 1 === t.body.length ? Nn(t.body[0]) : t : "font" === t.type ? Nn(t.body) : t }, B = { contains: function (t, e) { return -1 !== t.indexOf(e) }, deflt: function (t, e) { return void 0 === t ? e : t }, escape: function (t) { return String(t).replace(I, function (t) { return P[t] }) }, hyphenate: function (t) { return t.replace(N, "-$1").toLowerCase() }, getBaseElem: O, isCharacterBox: function (t) { var e = O(t); return "mathord" === e.type || "textord" === e.type || "atom" === e.type }, protocolFromUrl: function (t) { var e = /^\s*([^\\\/#]*?)(?::|�*58|�*3a)/i.exec(t); return null != e ? e[1] : "_relative" } }, q = function () { function t(t) { this.displayMode = void 0, this.output = void 0, this.leqno = void 0, this.fleqn = void 0, this.throwOnError = void 0, this.errorColor = void 0, this.macros = void 0, this.minRuleThickness = void 0, this.colorIsTextColor = void 0, this.strict = void 0, this.trust = void 0, this.maxSize = void 0, this.maxExpand = void 0, t = t || {}, this.displayMode = B.deflt(t.displayMode, !1), this.output = B.deflt(t.output, "htmlAndMathml"), this.leqno = B.deflt(t.leqno, !1), this.fleqn = B.deflt(t.fleqn, !1), this.throwOnError = B.deflt(t.throwOnError, !0), this.errorColor = B.deflt(t.errorColor, "#cc0000"), this.macros = t.macros || {}, this.minRuleThickness = Math.max(0, B.deflt(t.minRuleThickness, 0)), this.colorIsTextColor = B.deflt(t.colorIsTextColor, !1), this.strict = B.deflt(t.strict, "warn"), this.trust = B.deflt(t.trust, !1), this.maxSize = Math.max(0, B.deflt(t.maxSize, 1 / 0)), this.maxExpand = Math.max(0, B.deflt(t.maxExpand, 1e3)) } var e = t.prototype; return e.reportNonstrict = function (t, e, r) { var n = this.strict; if ("function" == typeof n && (n = n(t, e, r)), n && "ignore" !== n) { if (!0 === n || "error" === n) throw new z("LaTeX-incompatible input and strict mode is set to 'error': " + e + " [" + t + "]", r); "warn" === n ? "undefined" != typeof console && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + e + " [" + t + "]") : "undefined" != typeof console && console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '" + n + "': " + e + " [" + t + "]") } }, e.useStrictBehavior = function (t, e, r) { var n = this.strict; if ("function" == typeof n) try { n = n(t, e, r) } catch (t) { n = "error" } return !(!n || "ignore" === n || !0 !== n && "error" !== n && ("warn" === n ? ("undefined" != typeof console && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + e + " [" + t + "]"), 1) : ("undefined" != typeof console && console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '" + n + "': " + e + " [" + t + "]"), 1))) }, e.isTrusted = function (t) { t.url && !t.protocol && (t.protocol = B.protocolFromUrl(t.url)); var e = "function" == typeof this.trust ? this.trust(t) : this.trust; return Boolean(e) }, t }(), D = function () { function t(t, e, r) { this.id = void 0, this.size = void 0, this.cramped = void 0, this.id = t, this.size = e, this.cramped = r } var e = t.prototype; return e.sup = function () { return F[H[this.id]] }, e.sub = function () { return F[j[this.id]] }, e.fracNum = function () { return F[U[this.id]] }, e.fracDen = function () { return F[_[this.id]] }, e.cramp = function () { return F[V[this.id]] }, e.text = function () { return F[W[this.id]] }, e.isTight = function () { return this.size >= 2 }, t }(), F = [new D(0, 0, !1), new D(1, 0, !0), new D(2, 1, !1), new D(3, 1, !0), new D(4, 2, !1), new D(5, 2, !0), new D(6, 3, !1), new D(7, 3, !0)], H = [4, 5, 4, 5, 6, 7, 6, 7], j = [5, 5, 5, 5, 7, 7, 7, 7], U = [2, 3, 4, 5, 6, 7, 6, 7], _ = [3, 3, 5, 5, 7, 7, 7, 7], V = [1, 1, 3, 3, 5, 5, 7, 7], W = [0, 1, 2, 3, 2, 3, 2, 3], G = { DISPLAY: F[0], TEXT: F[2], SCRIPT: F[4], SCRIPTSCRIPT: F[6] }, Y = [{ name: "latin", blocks: [[256, 591], [768, 879]] }, { name: "cyrillic", blocks: [[1024, 1279]] }, { name: "brahmic", blocks: [[2304, 4255]] }, { name: "georgian", blocks: [[4256, 4351]] }, { name: "cjk", blocks: [[12288, 12543], [19968, 40879], [65280, 65376]] }, { name: "hangul", blocks: [[44032, 55215]] }], X = []; Y.forEach(function (t) { return t.blocks.forEach(function (t) { return X.push.apply(X, t) }) }); var K = { doubleleftarrow: "M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z", doublerightarrow: "M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z", leftarrow: "M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z", leftbrace: "M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z", leftbraceunder: "M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z", leftgroup: "M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z", leftgroupunder: "M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z", leftharpoon: "M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z", leftharpoonplus: "M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z", leftharpoondown: "M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z", leftharpoondownplus: "M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z", lefthook: "M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z", leftlinesegment: "M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z", leftmapsto: "M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z", leftToFrom: "M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z", longequal: "M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z", midbrace: "M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z", midbraceunder: "M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z", oiintSize1: "M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z", oiintSize2: "M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z", oiiintSize1: "M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z", oiiintSize2: "M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z", rightarrow: "M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z", rightbrace: "M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z", rightbraceunder: "M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z", rightgroup: "M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z", rightgroupunder: "M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z", rightharpoon: "M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z", rightharpoonplus: "M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z", rightharpoondown: "M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z", rightharpoondownplus: "M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z", righthook: "M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z", rightlinesegment: "M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z", rightToFrom: "M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z", twoheadleftarrow: "M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z", twoheadrightarrow: "M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z", tilde1: "M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z", tilde2: "M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z", tilde3: "M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z", tilde4: "M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z", vec: "M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z", widehat1: "M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z", widehat2: "M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z", widehat3: "M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z", widehat4: "M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z", widecheck1: "M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z", widecheck2: "M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z", widecheck3: "M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z", widecheck4: "M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z", baraboveleftarrow: "M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z", rightarrowabovebar: "M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z", baraboveshortleftharpoon: "M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z", rightharpoonaboveshortbar: "M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z", shortbaraboveleftharpoon: "M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z", shortrightharpoonabovebar: "M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z" }, $ = function () { function t(t) { this.children = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.maxFontSize = void 0, this.style = void 0, this.children = t, this.classes = [], this.height = 0, this.depth = 0, this.maxFontSize = 0, this.style = {} } var e = t.prototype; return e.hasClass = function (t) { return B.contains(this.classes, t) }, e.toNode = function () { for (var t = document.createDocumentFragment(), e = 0; e < this.children.length; e++)t.appendChild(this.children[e].toNode()); return t }, e.toMarkup = function () { for (var t = "", e = 0; e < this.children.length; e++)t += this.children[e].toMarkup(); return t }, e.toText = function () { var t = function (t) { return t.toText() }; return this.children.map(t).join("") }, t }(), Z = function (t) { return t.filter(function (t) { return t }).join(" ") }, J = function (t, e, r) { if (this.classes = t || [], this.attributes = {}, this.height = 0, this.depth = 0, this.maxFontSize = 0, this.style = r || {}, e) { e.style.isTight() && this.classes.push("mtight"); var n = e.getColor(); n && (this.style.color = n) } }, Q = function (t) { var e = document.createElement(t); for (var r in e.className = Z(this.classes), this.style) this.style.hasOwnProperty(r) && (e.style[r] = this.style[r]); for (var n in this.attributes) this.attributes.hasOwnProperty(n) && e.setAttribute(n, this.attributes[n]); for (var i = 0; i < this.children.length; i++)e.appendChild(this.children[i].toNode()); return e }, tt = function (t) { var e = "<" + t; this.classes.length && (e += ' class="' + B.escape(Z(this.classes)) + '"'); var r = ""; for (var n in this.style) this.style.hasOwnProperty(n) && (r += B.hyphenate(n) + ":" + this.style[n] + ";"); for (var i in r && (e += ' style="' + B.escape(r) + '"'), this.attributes) this.attributes.hasOwnProperty(i) && (e += " " + i + '="' + B.escape(this.attributes[i]) + '"'); e += ">"; for (var a = 0; a < this.children.length; a++)e += this.children[a].toMarkup(); return e + "" }, et = function () { function t(t, e, r, n) { this.children = void 0, this.attributes = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.width = void 0, this.maxFontSize = void 0, this.style = void 0, J.call(this, t, r, n), this.children = e || [] } var e = t.prototype; return e.setAttribute = function (t, e) { this.attributes[t] = e }, e.hasClass = function (t) { return B.contains(this.classes, t) }, e.toNode = function () { return Q.call(this, "span") }, e.toMarkup = function () { return tt.call(this, "span") }, t }(), rt = function () { function t(t, e, r, n) { this.children = void 0, this.attributes = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.maxFontSize = void 0, this.style = void 0, J.call(this, e, n), this.children = r || [], this.setAttribute("href", t) } var e = t.prototype; return e.setAttribute = function (t, e) { this.attributes[t] = e }, e.hasClass = function (t) { return B.contains(this.classes, t) }, e.toNode = function () { return Q.call(this, "a") }, e.toMarkup = function () { return tt.call(this, "a") }, t }(), nt = function () { function t(t, e, r) { this.src = void 0, this.alt = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.maxFontSize = void 0, this.style = void 0, this.alt = e, this.src = t, this.classes = ["mord"], this.style = r } var e = t.prototype; return e.hasClass = function (t) { return B.contains(this.classes, t) }, e.toNode = function () { var t = document.createElement("img"); for (var e in t.src = this.src, t.alt = this.alt, t.className = "mord", this.style) this.style.hasOwnProperty(e) && (t.style[e] = this.style[e]); return t }, e.toMarkup = function () { var t = "" + this.alt + "" }, t }(), it = { "\xee": "\u0131\u0302", "\xef": "\u0131\u0308", "\xed": "\u0131\u0301", "\xec": "\u0131\u0300" }, at = function () { function t(t, e, r, n, i, a, o, s) { this.text = void 0, this.height = void 0, this.depth = void 0, this.italic = void 0, this.skew = void 0, this.width = void 0, this.maxFontSize = void 0, this.classes = void 0, this.style = void 0, this.text = t, this.height = e || 0, this.depth = r || 0, this.italic = n || 0, this.skew = i || 0, this.width = a || 0, this.classes = o || [], this.style = s || {}, this.maxFontSize = 0; var l = function (t) { for (var e = 0; e < Y.length; e++)for (var r = Y[e], n = 0; n < r.blocks.length; n++) { var i = r.blocks[n]; if (t >= i[0] && t <= i[1]) return r.name } return null }(this.text.charCodeAt(0)); l && this.classes.push(l + "_fallback"), /[\xee\xef\xed\xec]/.test(this.text) && (this.text = it[this.text]) } var e = t.prototype; return e.hasClass = function (t) { return B.contains(this.classes, t) }, e.toNode = function () { var t = document.createTextNode(this.text), e = null; for (var r in this.italic > 0 && ((e = document.createElement("span")).style.marginRight = this.italic + "em"), this.classes.length > 0 && ((e = e || document.createElement("span")).className = Z(this.classes)), this.style) this.style.hasOwnProperty(r) && ((e = e || document.createElement("span")).style[r] = this.style[r]); return e ? (e.appendChild(t), e) : t }, e.toMarkup = function () { var t = !1, e = " 0 && (r += "margin-right:" + this.italic + "em;"), this.style) this.style.hasOwnProperty(n) && (r += B.hyphenate(n) + ":" + this.style[n] + ";"); r && (t = !0, e += ' style="' + B.escape(r) + '"'); var i = B.escape(this.text); return t ? (e += ">", e += i, e += "") : i }, t }(), ot = function () { + function t(t, e) { this.children = void 0, this.attributes = void 0, this.children = t || [], this.attributes = e || {} } var e = t.prototype; return e.toNode = function () { + var t = document.createElementNS("http://www.w3.org/2000/svg", "svg"); for (var e in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, e) && t.setAttribute(e, this.attributes[e]) + ; for (var r = 0; r < this.children.length; r++)t.appendChild(this.children[r].toNode()); return t + }, e.toMarkup = function () { var t = "" }, t + }(), st = function () { function t(t, e) { this.pathName = void 0, this.alternate = void 0, this.pathName = t, this.alternate = e } var e = t.prototype; return e.toNode = function () { var t = document.createElementNS("http://www.w3.org/2000/svg", "path"); return this.alternate ? t.setAttribute("d", this.alternate) : t.setAttribute("d", K[this.pathName]), t }, e.toMarkup = function () { return this.alternate ? "" : "" }, t }(), lt = function () { function t(t) { this.attributes = void 0, this.attributes = t || {} } var e = t.prototype; return e.toNode = function () { var t = document.createElementNS("http://www.w3.org/2000/svg", "line"); for (var e in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, e) && t.setAttribute(e, this.attributes[e]); return t }, e.toMarkup = function () { var t = "" }, t }(), ct = { + "AMS-Regular": { 65: [0, .68889, 0, 0, .72222], 66: [0, .68889, 0, 0, .66667], 67: [0, .68889, 0, 0, .72222], 68: [0, .68889, 0, 0, .72222], 69: [0, .68889, 0, 0, .66667], 70: [0, .68889, 0, 0, .61111], 71: [0, .68889, 0, 0, .77778], 72: [0, .68889, 0, 0, .77778], 73: [0, .68889, 0, 0, .38889], 74: [.16667, .68889, 0, 0, .5], 75: [0, .68889, 0, 0, .77778], 76: [0, .68889, 0, 0, .66667], 77: [0, .68889, 0, 0, .94445], 78: [0, .68889, 0, 0, .72222], 79: [.16667, .68889, 0, 0, .77778], 80: [0, .68889, 0, 0, .61111], 81: [.16667, .68889, 0, 0, .77778], 82: [0, .68889, 0, 0, .72222], 83: [0, .68889, 0, 0, .55556], 84: [0, .68889, 0, 0, .66667], 85: [0, .68889, 0, 0, .72222], 86: [0, .68889, 0, 0, .72222], 87: [0, .68889, 0, 0, 1], 88: [0, .68889, 0, 0, .72222], 89: [0, .68889, 0, 0, .72222], 90: [0, .68889, 0, 0, .66667], 107: [0, .68889, 0, 0, .55556], 165: [0, .675, .025, 0, .75], 174: [.15559, .69224, 0, 0, .94666], 240: [0, .68889, 0, 0, .55556], 295: [0, .68889, 0, 0, .54028], 710: [0, .825, 0, 0, 2.33334], 732: [0, .9, 0, 0, 2.33334], 770: [0, .825, 0, 0, 2.33334], 771: [0, .9, 0, 0, 2.33334], 989: [.08167, .58167, 0, 0, .77778], 1008: [0, .43056, .04028, 0, .66667], 8245: [0, .54986, 0, 0, .275], 8463: [0, .68889, 0, 0, .54028], 8487: [0, .68889, 0, 0, .72222], 8498: [0, .68889, 0, 0, .55556], 8502: [0, .68889, 0, 0, .66667], 8503: [0, .68889, 0, 0, .44445], 8504: [0, .68889, 0, 0, .66667], 8513: [0, .68889, 0, 0, .63889], 8592: [-.03598, .46402, 0, 0, .5], 8594: [-.03598, .46402, 0, 0, .5], 8602: [-.13313, .36687, 0, 0, 1], 8603: [-.13313, .36687, 0, 0, 1], 8606: [.01354, .52239, 0, 0, 1], 8608: [.01354, .52239, 0, 0, 1], 8610: [.01354, .52239, 0, 0, 1.11111], 8611: [.01354, .52239, 0, 0, 1.11111], 8619: [0, .54986, 0, 0, 1], 8620: [0, .54986, 0, 0, 1], 8621: [-.13313, .37788, 0, 0, 1.38889], 8622: [-.13313, .36687, 0, 0, 1], 8624: [0, .69224, 0, 0, .5], 8625: [0, .69224, 0, 0, .5], 8630: [0, .43056, 0, 0, 1], 8631: [0, .43056, 0, 0, 1], 8634: [.08198, .58198, 0, 0, .77778], 8635: [.08198, .58198, 0, 0, .77778], 8638: [.19444, .69224, 0, 0, .41667], 8639: [.19444, .69224, 0, 0, .41667], 8642: [.19444, .69224, 0, 0, .41667], 8643: [.19444, .69224, 0, 0, .41667], 8644: [.1808, .675, 0, 0, 1], 8646: [.1808, .675, 0, 0, 1], 8647: [.1808, .675, 0, 0, 1], 8648: [.19444, .69224, 0, 0, .83334], 8649: [.1808, .675, 0, 0, 1], 8650: [.19444, .69224, 0, 0, .83334], 8651: [.01354, .52239, 0, 0, 1], 8652: [.01354, .52239, 0, 0, 1], 8653: [-.13313, .36687, 0, 0, 1], 8654: [-.13313, .36687, 0, 0, 1], 8655: [-.13313, .36687, 0, 0, 1], 8666: [.13667, .63667, 0, 0, 1], 8667: [.13667, .63667, 0, 0, 1], 8669: [-.13313, .37788, 0, 0, 1], 8672: [-.064, .437, 0, 0, 1.334], 8674: [-.064, .437, 0, 0, 1.334], 8705: [0, .825, 0, 0, .5], 8708: [0, .68889, 0, 0, .55556], 8709: [.08167, .58167, 0, 0, .77778], 8717: [0, .43056, 0, 0, .42917], 8722: [-.03598, .46402, 0, 0, .5], 8724: [.08198, .69224, 0, 0, .77778], 8726: [.08167, .58167, 0, 0, .77778], 8733: [0, .69224, 0, 0, .77778], 8736: [0, .69224, 0, 0, .72222], 8737: [0, .69224, 0, 0, .72222], 8738: [.03517, .52239, 0, 0, .72222], 8739: [.08167, .58167, 0, 0, .22222], 8740: [.25142, .74111, 0, 0, .27778], 8741: [.08167, .58167, 0, 0, .38889], 8742: [.25142, .74111, 0, 0, .5], 8756: [0, .69224, 0, 0, .66667], 8757: [0, .69224, 0, 0, .66667], 8764: [-.13313, .36687, 0, 0, .77778], 8765: [-.13313, .37788, 0, 0, .77778], 8769: [-.13313, .36687, 0, 0, .77778], 8770: [-.03625, .46375, 0, 0, .77778], 8774: [.30274, .79383, 0, 0, .77778], 8776: [-.01688, .48312, 0, 0, .77778], 8778: [.08167, .58167, 0, 0, .77778], 8782: [.06062, .54986, 0, 0, .77778], 8783: [.06062, .54986, 0, 0, .77778], 8785: [.08198, .58198, 0, 0, .77778], 8786: [.08198, .58198, 0, 0, .77778], 8787: [.08198, .58198, 0, 0, .77778], 8790: [0, .69224, 0, 0, .77778], 8791: [.22958, .72958, 0, 0, .77778], 8796: [.08198, .91667, 0, 0, .77778], 8806: [.25583, .75583, 0, 0, .77778], 8807: [.25583, .75583, 0, 0, .77778], 8808: [.25142, .75726, 0, 0, .77778], 8809: [.25142, .75726, 0, 0, .77778], 8812: [.25583, .75583, 0, 0, .5], 8814: [.20576, .70576, 0, 0, .77778], 8815: [.20576, .70576, 0, 0, .77778], 8816: [.30274, .79383, 0, 0, .77778], 8817: [.30274, .79383, 0, 0, .77778], 8818: [.22958, .72958, 0, 0, .77778], 8819: [.22958, .72958, 0, 0, .77778], 8822: [.1808, .675, 0, 0, .77778], 8823: [.1808, .675, 0, 0, .77778], 8828: [.13667, .63667, 0, 0, .77778], 8829: [.13667, .63667, 0, 0, .77778], 8830: [.22958, .72958, 0, 0, .77778], 8831: [.22958, .72958, 0, 0, .77778], 8832: [.20576, .70576, 0, 0, .77778], 8833: [.20576, .70576, 0, 0, .77778], 8840: [.30274, .79383, 0, 0, .77778], 8841: [.30274, .79383, 0, 0, .77778], 8842: [.13597, .63597, 0, 0, .77778], 8843: [.13597, .63597, 0, 0, .77778], 8847: [.03517, .54986, 0, 0, .77778], 8848: [.03517, .54986, 0, 0, .77778], 8858: [.08198, .58198, 0, 0, .77778], 8859: [.08198, .58198, 0, 0, .77778], 8861: [.08198, .58198, 0, 0, .77778], 8862: [0, .675, 0, 0, .77778], 8863: [0, .675, 0, 0, .77778], 8864: [0, .675, 0, 0, .77778], 8865: [0, .675, 0, 0, .77778], 8872: [0, .69224, 0, 0, .61111], 8873: [0, .69224, 0, 0, .72222], 8874: [0, .69224, 0, 0, .88889], 8876: [0, .68889, 0, 0, .61111], 8877: [0, .68889, 0, 0, .61111], 8878: [0, .68889, 0, 0, .72222], 8879: [0, .68889, 0, 0, .72222], 8882: [.03517, .54986, 0, 0, .77778], 8883: [.03517, .54986, 0, 0, .77778], 8884: [.13667, .63667, 0, 0, .77778], 8885: [.13667, .63667, 0, 0, .77778], 8888: [0, .54986, 0, 0, 1.11111], 8890: [.19444, .43056, 0, 0, .55556], 8891: [.19444, .69224, 0, 0, .61111], 8892: [.19444, .69224, 0, 0, .61111], 8901: [0, .54986, 0, 0, .27778], 8903: [.08167, .58167, 0, 0, .77778], 8905: [.08167, .58167, 0, 0, .77778], 8906: [.08167, .58167, 0, 0, .77778], 8907: [0, .69224, 0, 0, .77778], 8908: [0, .69224, 0, 0, .77778], 8909: [-.03598, .46402, 0, 0, .77778], 8910: [0, .54986, 0, 0, .76042], 8911: [0, .54986, 0, 0, .76042], 8912: [.03517, .54986, 0, 0, .77778], 8913: [.03517, .54986, 0, 0, .77778], 8914: [0, .54986, 0, 0, .66667], 8915: [0, .54986, 0, 0, .66667], 8916: [0, .69224, 0, 0, .66667], 8918: [.0391, .5391, 0, 0, .77778], 8919: [.0391, .5391, 0, 0, .77778], 8920: [.03517, .54986, 0, 0, 1.33334], 8921: [.03517, .54986, 0, 0, 1.33334], 8922: [.38569, .88569, 0, 0, .77778], 8923: [.38569, .88569, 0, 0, .77778], 8926: [.13667, .63667, 0, 0, .77778], 8927: [.13667, .63667, 0, 0, .77778], 8928: [.30274, .79383, 0, 0, .77778], 8929: [.30274, .79383, 0, 0, .77778], 8934: [.23222, .74111, 0, 0, .77778], 8935: [.23222, .74111, 0, 0, .77778], 8936: [.23222, .74111, 0, 0, .77778], 8937: [.23222, .74111, 0, 0, .77778], 8938: [.20576, .70576, 0, 0, .77778], 8939: [.20576, .70576, 0, 0, .77778], 8940: [.30274, .79383, 0, 0, .77778], 8941: [.30274, .79383, 0, 0, .77778], 8994: [.19444, .69224, 0, 0, .77778], 8995: [.19444, .69224, 0, 0, .77778], 9416: [.15559, .69224, 0, 0, .90222], 9484: [0, .69224, 0, 0, .5], 9488: [0, .69224, 0, 0, .5], 9492: [0, .37788, 0, 0, .5], 9496: [0, .37788, 0, 0, .5], 9585: [.19444, .68889, 0, 0, .88889], 9586: [.19444, .74111, 0, 0, .88889], 9632: [0, .675, 0, 0, .77778], 9633: [0, .675, 0, 0, .77778], 9650: [0, .54986, 0, 0, .72222], 9651: [0, .54986, 0, 0, .72222], 9654: [.03517, .54986, 0, 0, .77778], 9660: [0, .54986, 0, 0, .72222], 9661: [0, .54986, 0, 0, .72222], 9664: [.03517, .54986, 0, 0, .77778], 9674: [.11111, .69224, 0, 0, .66667], 9733: [.19444, .69224, 0, 0, .94445], 10003: [0, .69224, 0, 0, .83334], 10016: [0, .69224, 0, 0, .83334], 10731: [.11111, .69224, 0, 0, .66667], 10846: [.19444, .75583, 0, 0, .61111], 10877: [.13667, .63667, 0, 0, .77778], 10878: [.13667, .63667, 0, 0, .77778], 10885: [.25583, .75583, 0, 0, .77778], 10886: [.25583, .75583, 0, 0, .77778], 10887: [.13597, .63597, 0, 0, .77778], 10888: [.13597, .63597, 0, 0, .77778], 10889: [.26167, .75726, 0, 0, .77778], 10890: [.26167, .75726, 0, 0, .77778], 10891: [.48256, .98256, 0, 0, .77778], 10892: [.48256, .98256, 0, 0, .77778], 10901: [.13667, .63667, 0, 0, .77778], 10902: [.13667, .63667, 0, 0, .77778], 10933: [.25142, .75726, 0, 0, .77778], 10934: [.25142, .75726, 0, 0, .77778], 10935: [.26167, .75726, 0, 0, .77778], 10936: [.26167, .75726, 0, 0, .77778], 10937: [.26167, .75726, 0, 0, .77778], 10938: [.26167, .75726, 0, 0, .77778], 10949: [.25583, .75583, 0, 0, .77778], 10950: [.25583, .75583, 0, 0, .77778], 10955: [.28481, .79383, 0, 0, .77778], 10956: [.28481, .79383, 0, 0, .77778], 57350: [.08167, .58167, 0, 0, .22222], 57351: [.08167, .58167, 0, 0, .38889], 57352: [.08167, .58167, 0, 0, .77778], 57353: [0, .43056, .04028, 0, .66667], 57356: [.25142, .75726, 0, 0, .77778], 57357: [.25142, .75726, 0, 0, .77778], 57358: [.41951, .91951, 0, 0, .77778], 57359: [.30274, .79383, 0, 0, .77778], 57360: [.30274, .79383, 0, 0, .77778], 57361: [.41951, .91951, 0, 0, .77778], 57366: [.25142, .75726, 0, 0, .77778], 57367: [.25142, .75726, 0, 0, .77778], 57368: [.25142, .75726, 0, 0, .77778], 57369: [.25142, .75726, 0, 0, .77778], 57370: [.13597, .63597, 0, 0, .77778], 57371: [.13597, .63597, 0, 0, .77778] }, "Caligraphic-Regular": { 48: [0, .43056, 0, 0, .5], 49: [0, .43056, 0, 0, .5], 50: [0, .43056, 0, 0, .5], 51: [.19444, .43056, 0, 0, .5], 52: [.19444, .43056, 0, 0, .5], 53: [.19444, .43056, 0, 0, .5], 54: [0, .64444, 0, 0, .5], 55: [.19444, .43056, 0, 0, .5], 56: [0, .64444, 0, 0, .5], 57: [.19444, .43056, 0, 0, .5], 65: [0, .68333, 0, .19445, .79847], 66: [0, .68333, .03041, .13889, .65681], 67: [0, .68333, .05834, .13889, .52653], 68: [0, .68333, .02778, .08334, .77139], 69: [0, .68333, .08944, .11111, .52778], 70: [0, .68333, .09931, .11111, .71875], 71: [.09722, .68333, .0593, .11111, .59487], 72: [0, .68333, .00965, .11111, .84452], 73: [0, .68333, .07382, 0, .54452], 74: [.09722, .68333, .18472, .16667, .67778], 75: [0, .68333, .01445, .05556, .76195], 76: [0, .68333, 0, .13889, .68972], 77: [0, .68333, 0, .13889, 1.2009], 78: [0, .68333, .14736, .08334, .82049], 79: [0, .68333, .02778, .11111, .79611], 80: [0, .68333, .08222, .08334, .69556], 81: [.09722, .68333, 0, .11111, .81667], 82: [0, .68333, 0, .08334, .8475], 83: [0, .68333, .075, .13889, .60556], 84: [0, .68333, .25417, 0, .54464], 85: [0, .68333, .09931, .08334, .62583], 86: [0, .68333, .08222, 0, .61278], 87: [0, .68333, .08222, .08334, .98778], 88: [0, .68333, .14643, .13889, .7133], 89: [.09722, .68333, .08222, .08334, .66834], 90: [0, .68333, .07944, .13889, .72473] }, "Fraktur-Regular": { 33: [0, .69141, 0, 0, .29574], 34: [0, .69141, 0, 0, .21471], 38: [0, .69141, 0, 0, .73786], 39: [0, .69141, 0, 0, .21201], 40: [.24982, .74947, 0, 0, .38865], 41: [.24982, .74947, 0, 0, .38865], 42: [0, .62119, 0, 0, .27764], 43: [.08319, .58283, 0, 0, .75623], 44: [0, .10803, 0, 0, .27764], 45: [.08319, .58283, 0, 0, .75623], 46: [0, .10803, 0, 0, .27764], 47: [.24982, .74947, 0, 0, .50181], 48: [0, .47534, 0, 0, .50181], 49: [0, .47534, 0, 0, .50181], 50: [0, .47534, 0, 0, .50181], 51: [.18906, .47534, 0, 0, .50181], 52: [.18906, .47534, 0, 0, .50181], 53: [.18906, .47534, 0, 0, .50181], 54: [0, .69141, 0, 0, .50181], 55: [.18906, .47534, 0, 0, .50181], 56: [0, .69141, 0, 0, .50181], 57: [.18906, .47534, 0, 0, .50181], 58: [0, .47534, 0, 0, .21606], 59: [.12604, .47534, 0, 0, .21606], 61: [-.13099, .36866, 0, 0, .75623], 63: [0, .69141, 0, 0, .36245], 65: [0, .69141, 0, 0, .7176], 66: [0, .69141, 0, 0, .88397], 67: [0, .69141, 0, 0, .61254], 68: [0, .69141, 0, 0, .83158], 69: [0, .69141, 0, 0, .66278], 70: [.12604, .69141, 0, 0, .61119], 71: [0, .69141, 0, 0, .78539], 72: [.06302, .69141, 0, 0, .7203], 73: [0, .69141, 0, 0, .55448], 74: [.12604, .69141, 0, 0, .55231], 75: [0, .69141, 0, 0, .66845], 76: [0, .69141, 0, 0, .66602], 77: [0, .69141, 0, 0, 1.04953], 78: [0, .69141, 0, 0, .83212], 79: [0, .69141, 0, 0, .82699], 80: [.18906, .69141, 0, 0, .82753], 81: [.03781, .69141, 0, 0, .82699], 82: [0, .69141, 0, 0, .82807], 83: [0, .69141, 0, 0, .82861], 84: [0, .69141, 0, 0, .66899], 85: [0, .69141, 0, 0, .64576], 86: [0, .69141, 0, 0, .83131], 87: [0, .69141, 0, 0, 1.04602], 88: [0, .69141, 0, 0, .71922], 89: [.18906, .69141, 0, 0, .83293], 90: [.12604, .69141, 0, 0, .60201], 91: [.24982, .74947, 0, 0, .27764], 93: [.24982, .74947, 0, 0, .27764], 94: [0, .69141, 0, 0, .49965], 97: [0, .47534, 0, 0, .50046], 98: [0, .69141, 0, 0, .51315], 99: [0, .47534, 0, 0, .38946], 100: [0, .62119, 0, 0, .49857], 101: [0, .47534, 0, 0, .40053], 102: [.18906, .69141, 0, 0, .32626], 103: [.18906, .47534, 0, 0, .5037], 104: [.18906, .69141, 0, 0, .52126], 105: [0, .69141, 0, 0, .27899], 106: [0, .69141, 0, 0, .28088], 107: [0, .69141, 0, 0, .38946], 108: [0, .69141, 0, 0, .27953], 109: [0, .47534, 0, 0, .76676], 110: [0, .47534, 0, 0, .52666], 111: [0, .47534, 0, 0, .48885], 112: [.18906, .52396, 0, 0, .50046], 113: [.18906, .47534, 0, 0, .48912], 114: [0, .47534, 0, 0, .38919], 115: [0, .47534, 0, 0, .44266], 116: [0, .62119, 0, 0, .33301], 117: [0, .47534, 0, 0, .5172], 118: [0, .52396, 0, 0, .5118], 119: [0, .52396, 0, 0, .77351], 120: [.18906, .47534, 0, 0, .38865], 121: [.18906, .47534, 0, 0, .49884], 122: [.18906, .47534, 0, 0, .39054], 8216: [0, .69141, 0, 0, .21471], 8217: [0, .69141, 0, 0, .21471], 58112: [0, .62119, 0, 0, .49749], 58113: [0, .62119, 0, 0, .4983], 58114: [.18906, .69141, 0, 0, .33328], 58115: [.18906, .69141, 0, 0, .32923], 58116: [.18906, .47534, 0, 0, .50343], 58117: [0, .69141, 0, 0, .33301], 58118: [0, .62119, 0, 0, .33409], 58119: [0, .47534, 0, 0, .50073] }, "Main-Bold": { 33: [0, .69444, 0, 0, .35], 34: [0, .69444, 0, 0, .60278], 35: [.19444, .69444, 0, 0, .95833], 36: [.05556, .75, 0, 0, .575], 37: [.05556, .75, 0, 0, .95833], 38: [0, .69444, 0, 0, .89444], 39: [0, .69444, 0, 0, .31944], 40: [.25, .75, 0, 0, .44722], 41: [.25, .75, 0, 0, .44722], 42: [0, .75, 0, 0, .575], 43: [.13333, .63333, 0, 0, .89444], 44: [.19444, .15556, 0, 0, .31944], 45: [0, .44444, 0, 0, .38333], 46: [0, .15556, 0, 0, .31944], 47: [.25, .75, 0, 0, .575], 48: [0, .64444, 0, 0, .575], 49: [0, .64444, 0, 0, .575], 50: [0, .64444, 0, 0, .575], 51: [0, .64444, 0, 0, .575], 52: [0, .64444, 0, 0, .575], 53: [0, .64444, 0, 0, .575], 54: [0, .64444, 0, 0, .575], 55: [0, .64444, 0, 0, .575], 56: [0, .64444, 0, 0, .575], 57: [0, .64444, 0, 0, .575], 58: [0, .44444, 0, 0, .31944], 59: [.19444, .44444, 0, 0, .31944], 60: [.08556, .58556, 0, 0, .89444], 61: [-.10889, .39111, 0, 0, .89444], 62: [.08556, .58556, 0, 0, .89444], 63: [0, .69444, 0, 0, .54305], 64: [0, .69444, 0, 0, .89444], 65: [0, .68611, 0, 0, .86944], 66: [0, .68611, 0, 0, .81805], 67: [0, .68611, 0, 0, .83055], 68: [0, .68611, 0, 0, .88194], 69: [0, .68611, 0, 0, .75555], 70: [0, .68611, 0, 0, .72361], 71: [0, .68611, 0, 0, .90416], 72: [0, .68611, 0, 0, .9], 73: [0, .68611, 0, 0, .43611], 74: [0, .68611, 0, 0, .59444], 75: [0, .68611, 0, 0, .90138], 76: [0, .68611, 0, 0, .69166], 77: [0, .68611, 0, 0, 1.09166], 78: [0, .68611, 0, 0, .9], 79: [0, .68611, 0, 0, .86388], 80: [0, .68611, 0, 0, .78611], 81: [.19444, .68611, 0, 0, .86388], 82: [0, .68611, 0, 0, .8625], 83: [0, .68611, 0, 0, .63889], 84: [0, .68611, 0, 0, .8], 85: [0, .68611, 0, 0, .88472], 86: [0, .68611, .01597, 0, .86944], 87: [0, .68611, .01597, 0, 1.18888], 88: [0, .68611, 0, 0, .86944], 89: [0, .68611, .02875, 0, .86944], 90: [0, .68611, 0, 0, .70277], 91: [.25, .75, 0, 0, .31944], 92: [.25, .75, 0, 0, .575], 93: [.25, .75, 0, 0, .31944], 94: [0, .69444, 0, 0, .575], 95: [.31, .13444, .03194, 0, .575], 97: [0, .44444, 0, 0, .55902], 98: [0, .69444, 0, 0, .63889], 99: [0, .44444, 0, 0, .51111], 100: [0, .69444, 0, 0, .63889], 101: [0, .44444, 0, 0, .52708], 102: [0, .69444, .10903, 0, .35139], 103: [.19444, .44444, .01597, 0, .575], 104: [0, .69444, 0, 0, .63889], 105: [0, .69444, 0, 0, .31944], 106: [.19444, .69444, 0, 0, .35139], 107: [0, .69444, 0, 0, .60694], 108: [0, .69444, 0, 0, .31944], 109: [0, .44444, 0, 0, .95833], 110: [0, .44444, 0, 0, .63889], 111: [0, .44444, 0, 0, .575], 112: [.19444, .44444, 0, 0, .63889], 113: [.19444, .44444, 0, 0, .60694], 114: [0, .44444, 0, 0, .47361], 115: [0, .44444, 0, 0, .45361], 116: [0, .63492, 0, 0, .44722], 117: [0, .44444, 0, 0, .63889], 118: [0, .44444, .01597, 0, .60694], 119: [0, .44444, .01597, 0, .83055], 120: [0, .44444, 0, 0, .60694], 121: [.19444, .44444, .01597, 0, .60694], 122: [0, .44444, 0, 0, .51111], 123: [.25, .75, 0, 0, .575], 124: [.25, .75, 0, 0, .31944], 125: [.25, .75, 0, 0, .575], 126: [.35, .34444, 0, 0, .575], 168: [0, .69444, 0, 0, .575], 172: [0, .44444, 0, 0, .76666], 176: [0, .69444, 0, 0, .86944], 177: [.13333, .63333, 0, 0, .89444], 184: [.17014, 0, 0, 0, .51111], 198: [0, .68611, 0, 0, 1.04166], 215: [.13333, .63333, 0, 0, .89444], 216: [.04861, .73472, 0, 0, .89444], 223: [0, .69444, 0, 0, .59722], 230: [0, .44444, 0, 0, .83055], 247: [.13333, .63333, 0, 0, .89444], 248: [.09722, .54167, 0, 0, .575], 305: [0, .44444, 0, 0, .31944], 338: [0, .68611, 0, 0, 1.16944], 339: [0, .44444, 0, 0, .89444], 567: [.19444, .44444, 0, 0, .35139], 710: [0, .69444, 0, 0, .575], 711: [0, .63194, 0, 0, .575], 713: [0, .59611, 0, 0, .575], 714: [0, .69444, 0, 0, .575], 715: [0, .69444, 0, 0, .575], 728: [0, .69444, 0, 0, .575], 729: [0, .69444, 0, 0, .31944], 730: [0, .69444, 0, 0, .86944], 732: [0, .69444, 0, 0, .575], 733: [0, .69444, 0, 0, .575], 915: [0, .68611, 0, 0, .69166], 916: [0, .68611, 0, 0, .95833], 920: [0, .68611, 0, 0, .89444], 923: [0, .68611, 0, 0, .80555], 926: [0, .68611, 0, 0, .76666], 928: [0, .68611, 0, 0, .9], 931: [0, .68611, 0, 0, .83055], 933: [0, .68611, 0, 0, .89444], 934: [0, .68611, 0, 0, .83055], 936: [0, .68611, 0, 0, .89444], 937: [0, .68611, 0, 0, .83055], 8211: [0, .44444, .03194, 0, .575], 8212: [0, .44444, .03194, 0, 1.14999], 8216: [0, .69444, 0, 0, .31944], 8217: [0, .69444, 0, 0, .31944], 8220: [0, .69444, 0, 0, .60278], 8221: [0, .69444, 0, 0, .60278], 8224: [.19444, .69444, 0, 0, .51111], 8225: [.19444, .69444, 0, 0, .51111], 8242: [0, .55556, 0, 0, .34444], 8407: [0, .72444, .15486, 0, .575], 8463: [0, .69444, 0, 0, .66759], 8465: [0, .69444, 0, 0, .83055], 8467: [0, .69444, 0, 0, .47361], 8472: [.19444, .44444, 0, 0, .74027], 8476: [0, .69444, 0, 0, .83055], 8501: [0, .69444, 0, 0, .70277], 8592: [-.10889, .39111, 0, 0, 1.14999], 8593: [.19444, .69444, 0, 0, .575], 8594: [-.10889, .39111, 0, 0, 1.14999], 8595: [.19444, .69444, 0, 0, .575], 8596: [-.10889, .39111, 0, 0, 1.14999], 8597: [.25, .75, 0, 0, .575], 8598: [.19444, .69444, 0, 0, 1.14999], 8599: [.19444, .69444, 0, 0, 1.14999], 8600: [.19444, .69444, 0, 0, 1.14999], 8601: [.19444, .69444, 0, 0, 1.14999], 8636: [-.10889, .39111, 0, 0, 1.14999], 8637: [-.10889, .39111, 0, 0, 1.14999], 8640: [-.10889, .39111, 0, 0, 1.14999], 8641: [-.10889, .39111, 0, 0, 1.14999], 8656: [-.10889, .39111, 0, 0, 1.14999], 8657: [.19444, .69444, 0, 0, .70277], 8658: [-.10889, .39111, 0, 0, 1.14999], 8659: [.19444, .69444, 0, 0, .70277], 8660: [-.10889, .39111, 0, 0, 1.14999], 8661: [.25, .75, 0, 0, .70277], 8704: [0, .69444, 0, 0, .63889], 8706: [0, .69444, .06389, 0, .62847], 8707: [0, .69444, 0, 0, .63889], 8709: [.05556, .75, 0, 0, .575], 8711: [0, .68611, 0, 0, .95833], 8712: [.08556, .58556, 0, 0, .76666], 8715: [.08556, .58556, 0, 0, .76666], 8722: [.13333, .63333, 0, 0, .89444], 8723: [.13333, .63333, 0, 0, .89444], 8725: [.25, .75, 0, 0, .575], 8726: [.25, .75, 0, 0, .575], 8727: [-.02778, .47222, 0, 0, .575], 8728: [-.02639, .47361, 0, 0, .575], 8729: [-.02639, .47361, 0, 0, .575], 8730: [.18, .82, 0, 0, .95833], 8733: [0, .44444, 0, 0, .89444], 8734: [0, .44444, 0, 0, 1.14999], 8736: [0, .69224, 0, 0, .72222], 8739: [.25, .75, 0, 0, .31944], 8741: [.25, .75, 0, 0, .575], 8743: [0, .55556, 0, 0, .76666], 8744: [0, .55556, 0, 0, .76666], 8745: [0, .55556, 0, 0, .76666], 8746: [0, .55556, 0, 0, .76666], 8747: [.19444, .69444, .12778, 0, .56875], 8764: [-.10889, .39111, 0, 0, .89444], 8768: [.19444, .69444, 0, 0, .31944], 8771: [.00222, .50222, 0, 0, .89444], 8776: [.02444, .52444, 0, 0, .89444], 8781: [.00222, .50222, 0, 0, .89444], 8801: [.00222, .50222, 0, 0, .89444], 8804: [.19667, .69667, 0, 0, .89444], 8805: [.19667, .69667, 0, 0, .89444], 8810: [.08556, .58556, 0, 0, 1.14999], 8811: [.08556, .58556, 0, 0, 1.14999], 8826: [.08556, .58556, 0, 0, .89444], 8827: [.08556, .58556, 0, 0, .89444], 8834: [.08556, .58556, 0, 0, .89444], 8835: [.08556, .58556, 0, 0, .89444], 8838: [.19667, .69667, 0, 0, .89444], 8839: [.19667, .69667, 0, 0, .89444], 8846: [0, .55556, 0, 0, .76666], 8849: [.19667, .69667, 0, 0, .89444], 8850: [.19667, .69667, 0, 0, .89444], 8851: [0, .55556, 0, 0, .76666], 8852: [0, .55556, 0, 0, .76666], 8853: [.13333, .63333, 0, 0, .89444], 8854: [.13333, .63333, 0, 0, .89444], 8855: [.13333, .63333, 0, 0, .89444], 8856: [.13333, .63333, 0, 0, .89444], 8857: [.13333, .63333, 0, 0, .89444], 8866: [0, .69444, 0, 0, .70277], 8867: [0, .69444, 0, 0, .70277], 8868: [0, .69444, 0, 0, .89444], 8869: [0, .69444, 0, 0, .89444], 8900: [-.02639, .47361, 0, 0, .575], 8901: [-.02639, .47361, 0, 0, .31944], 8902: [-.02778, .47222, 0, 0, .575], 8968: [.25, .75, 0, 0, .51111], 8969: [.25, .75, 0, 0, .51111], 8970: [.25, .75, 0, 0, .51111], 8971: [.25, .75, 0, 0, .51111], 8994: [-.13889, .36111, 0, 0, 1.14999], 8995: [-.13889, .36111, 0, 0, 1.14999], 9651: [.19444, .69444, 0, 0, 1.02222], 9657: [-.02778, .47222, 0, 0, .575], 9661: [.19444, .69444, 0, 0, 1.02222], 9667: [-.02778, .47222, 0, 0, .575], 9711: [.19444, .69444, 0, 0, 1.14999], 9824: [.12963, .69444, 0, 0, .89444], 9825: [.12963, .69444, 0, 0, .89444], 9826: [.12963, .69444, 0, 0, .89444], 9827: [.12963, .69444, 0, 0, .89444], 9837: [0, .75, 0, 0, .44722], 9838: [.19444, .69444, 0, 0, .44722], 9839: [.19444, .69444, 0, 0, .44722], 10216: [.25, .75, 0, 0, .44722], 10217: [.25, .75, 0, 0, .44722], 10815: [0, .68611, 0, 0, .9], 10927: [.19667, .69667, 0, 0, .89444], 10928: [.19667, .69667, 0, 0, .89444], 57376: [.19444, .69444, 0, 0, 0] }, "Main-BoldItalic": { 33: [0, .69444, .11417, 0, .38611], 34: [0, .69444, .07939, 0, .62055], 35: [.19444, .69444, .06833, 0, .94444], 37: [.05556, .75, .12861, 0, .94444], 38: [0, .69444, .08528, 0, .88555], 39: [0, .69444, .12945, 0, .35555], 40: [.25, .75, .15806, 0, .47333], 41: [.25, .75, .03306, 0, .47333], 42: [0, .75, .14333, 0, .59111], 43: [.10333, .60333, .03306, 0, .88555], 44: [.19444, .14722, 0, 0, .35555], 45: [0, .44444, .02611, 0, .41444], 46: [0, .14722, 0, 0, .35555], 47: [.25, .75, .15806, 0, .59111], 48: [0, .64444, .13167, 0, .59111], 49: [0, .64444, .13167, 0, .59111], 50: [0, .64444, .13167, 0, .59111], 51: [0, .64444, .13167, 0, .59111], 52: [.19444, .64444, .13167, 0, .59111], 53: [0, .64444, .13167, 0, .59111], 54: [0, .64444, .13167, 0, .59111], 55: [.19444, .64444, .13167, 0, .59111], 56: [0, .64444, .13167, 0, .59111], 57: [0, .64444, .13167, 0, .59111], 58: [0, .44444, .06695, 0, .35555], 59: [.19444, .44444, .06695, 0, .35555], 61: [-.10889, .39111, .06833, 0, .88555], 63: [0, .69444, .11472, 0, .59111], 64: [0, .69444, .09208, 0, .88555], 65: [0, .68611, 0, 0, .86555], 66: [0, .68611, .0992, 0, .81666], 67: [0, .68611, .14208, 0, .82666], 68: [0, .68611, .09062, 0, .87555], 69: [0, .68611, .11431, 0, .75666], 70: [0, .68611, .12903, 0, .72722], 71: [0, .68611, .07347, 0, .89527], 72: [0, .68611, .17208, 0, .8961], 73: [0, .68611, .15681, 0, .47166], 74: [0, .68611, .145, 0, .61055], 75: [0, .68611, .14208, 0, .89499], 76: [0, .68611, 0, 0, .69777], 77: [0, .68611, .17208, 0, 1.07277], 78: [0, .68611, .17208, 0, .8961], 79: [0, .68611, .09062, 0, .85499], 80: [0, .68611, .0992, 0, .78721], 81: [.19444, .68611, .09062, 0, .85499], 82: [0, .68611, .02559, 0, .85944], 83: [0, .68611, .11264, 0, .64999], 84: [0, .68611, .12903, 0, .7961], 85: [0, .68611, .17208, 0, .88083], 86: [0, .68611, .18625, 0, .86555], 87: [0, .68611, .18625, 0, 1.15999], 88: [0, .68611, .15681, 0, .86555], 89: [0, .68611, .19803, 0, .86555], 90: [0, .68611, .14208, 0, .70888], 91: [.25, .75, .1875, 0, .35611], 93: [.25, .75, .09972, 0, .35611], 94: [0, .69444, .06709, 0, .59111], 95: [.31, .13444, .09811, 0, .59111], 97: [0, .44444, .09426, 0, .59111], 98: [0, .69444, .07861, 0, .53222], 99: [0, .44444, .05222, 0, .53222], 100: [0, .69444, .10861, 0, .59111], 101: [0, .44444, .085, 0, .53222], 102: [.19444, .69444, .21778, 0, .4], 103: [.19444, .44444, .105, 0, .53222], 104: [0, .69444, .09426, 0, .59111], 105: [0, .69326, .11387, 0, .35555], 106: [.19444, .69326, .1672, 0, .35555], 107: [0, .69444, .11111, 0, .53222], 108: [0, .69444, .10861, 0, .29666], 109: [0, .44444, .09426, 0, .94444], 110: [0, .44444, .09426, 0, .64999], 111: [0, .44444, .07861, 0, .59111], 112: [.19444, .44444, .07861, 0, .59111], 113: [.19444, .44444, .105, 0, .53222], 114: [0, .44444, .11111, 0, .50167], 115: [0, .44444, .08167, 0, .48694], 116: [0, .63492, .09639, 0, .385], 117: [0, .44444, .09426, 0, .62055], 118: [0, .44444, .11111, 0, .53222], 119: [0, .44444, .11111, 0, .76777], 120: [0, .44444, .12583, 0, .56055], 121: [.19444, .44444, .105, 0, .56166], 122: [0, .44444, .13889, 0, .49055], 126: [.35, .34444, .11472, 0, .59111], 163: [0, .69444, 0, 0, .86853], 168: [0, .69444, .11473, 0, .59111], 176: [0, .69444, 0, 0, .94888], 184: [.17014, 0, 0, 0, .53222], 198: [0, .68611, .11431, 0, 1.02277], 216: [.04861, .73472, .09062, 0, .88555], 223: [.19444, .69444, .09736, 0, .665], 230: [0, .44444, .085, 0, .82666], 248: [.09722, .54167, .09458, 0, .59111], 305: [0, .44444, .09426, 0, .35555], 338: [0, .68611, .11431, 0, 1.14054], 339: [0, .44444, .085, 0, .82666], 567: [.19444, .44444, .04611, 0, .385], 710: [0, .69444, .06709, 0, .59111], 711: [0, .63194, .08271, 0, .59111], 713: [0, .59444, .10444, 0, .59111], 714: [0, .69444, .08528, 0, .59111], 715: [0, .69444, 0, 0, .59111], 728: [0, .69444, .10333, 0, .59111], 729: [0, .69444, .12945, 0, .35555], 730: [0, .69444, 0, 0, .94888], 732: [0, .69444, .11472, 0, .59111], 733: [0, .69444, .11472, 0, .59111], 915: [0, .68611, .12903, 0, .69777], 916: [0, .68611, 0, 0, .94444], 920: [0, .68611, .09062, 0, .88555], 923: [0, .68611, 0, 0, .80666], 926: [0, .68611, .15092, 0, .76777], 928: [0, .68611, .17208, 0, .8961], 931: [0, .68611, .11431, 0, .82666], 933: [0, .68611, .10778, 0, .88555], 934: [0, .68611, .05632, 0, .82666], 936: [0, .68611, .10778, 0, .88555], 937: [0, .68611, .0992, 0, .82666], 8211: [0, .44444, .09811, 0, .59111], 8212: [0, .44444, .09811, 0, 1.18221], 8216: [0, .69444, .12945, 0, .35555], 8217: [0, .69444, .12945, 0, .35555], 8220: [0, .69444, .16772, 0, .62055], 8221: [0, .69444, .07939, 0, .62055] }, "Main-Italic": { 33: [0, .69444, .12417, 0, .30667], 34: [0, .69444, .06961, 0, .51444], 35: [.19444, .69444, .06616, 0, .81777], 37: [.05556, .75, .13639, 0, .81777], 38: [0, .69444, .09694, 0, .76666], 39: [0, .69444, .12417, 0, .30667], 40: [.25, .75, .16194, 0, .40889], 41: [.25, .75, .03694, 0, .40889], 42: [0, .75, .14917, 0, .51111], 43: [.05667, .56167, .03694, 0, .76666], 44: [.19444, .10556, 0, 0, .30667], 45: [0, .43056, .02826, 0, .35778], 46: [0, .10556, 0, 0, .30667], 47: [.25, .75, .16194, 0, .51111], 48: [0, .64444, .13556, 0, .51111], 49: [0, .64444, .13556, 0, .51111], 50: [0, .64444, .13556, 0, .51111], 51: [0, .64444, .13556, 0, .51111], 52: [.19444, .64444, .13556, 0, .51111], 53: [0, .64444, .13556, 0, .51111], 54: [0, .64444, .13556, 0, .51111], 55: [.19444, .64444, .13556, 0, .51111], 56: [0, .64444, .13556, 0, .51111], 57: [0, .64444, .13556, 0, .51111], 58: [0, .43056, .0582, 0, .30667], 59: [.19444, .43056, .0582, 0, .30667], 61: [-.13313, .36687, .06616, 0, .76666], 63: [0, .69444, .1225, 0, .51111], 64: [0, .69444, .09597, 0, .76666], 65: [0, .68333, 0, 0, .74333], 66: [0, .68333, .10257, 0, .70389], 67: [0, .68333, .14528, 0, .71555], 68: [0, .68333, .09403, 0, .755], 69: [0, .68333, .12028, 0, .67833], 70: [0, .68333, .13305, 0, .65277], 71: [0, .68333, .08722, 0, .77361], 72: [0, .68333, .16389, 0, .74333], 73: [0, .68333, .15806, 0, .38555], 74: [0, .68333, .14028, 0, .525], 75: [0, .68333, .14528, 0, .76888], 76: [0, .68333, 0, 0, .62722], 77: [0, .68333, .16389, 0, .89666], 78: [0, .68333, .16389, 0, .74333], 79: [0, .68333, .09403, 0, .76666], 80: [0, .68333, .10257, 0, .67833], 81: [.19444, .68333, .09403, 0, .76666], 82: [0, .68333, .03868, 0, .72944], 83: [0, .68333, .11972, 0, .56222], 84: [0, .68333, .13305, 0, .71555], 85: [0, .68333, .16389, 0, .74333], 86: [0, .68333, .18361, 0, .74333], 87: [0, .68333, .18361, 0, .99888], 88: [0, .68333, .15806, 0, .74333], 89: [0, .68333, .19383, 0, .74333], 90: [0, .68333, .14528, 0, .61333], 91: [.25, .75, .1875, 0, .30667], 93: [.25, .75, .10528, 0, .30667], 94: [0, .69444, .06646, 0, .51111], 95: [.31, .12056, .09208, 0, .51111], 97: [0, .43056, .07671, 0, .51111], 98: [0, .69444, .06312, 0, .46], 99: [0, .43056, .05653, 0, .46], 100: [0, .69444, .10333, 0, .51111], 101: [0, .43056, .07514, 0, .46], 102: [.19444, .69444, .21194, 0, .30667], 103: [.19444, .43056, .08847, 0, .46], 104: [0, .69444, .07671, 0, .51111], 105: [0, .65536, .1019, 0, .30667], 106: [.19444, .65536, .14467, 0, .30667], 107: [0, .69444, .10764, 0, .46], 108: [0, .69444, .10333, 0, .25555], 109: [0, .43056, .07671, 0, .81777], 110: [0, .43056, .07671, 0, .56222], 111: [0, .43056, .06312, 0, .51111], 112: [.19444, .43056, .06312, 0, .51111], 113: [.19444, .43056, .08847, 0, .46], 114: [0, .43056, .10764, 0, .42166], 115: [0, .43056, .08208, 0, .40889], 116: [0, .61508, .09486, 0, .33222], 117: [0, .43056, .07671, 0, .53666], 118: [0, .43056, .10764, 0, .46], 119: [0, .43056, .10764, 0, .66444], 120: [0, .43056, .12042, 0, .46389], 121: [.19444, .43056, .08847, 0, .48555], 122: [0, .43056, .12292, 0, .40889], 126: [.35, .31786, .11585, 0, .51111], 163: [0, .69444, 0, 0, .76909], 168: [0, .66786, .10474, 0, .51111], 176: [0, .69444, 0, 0, .83129], 184: [.17014, 0, 0, 0, .46], 198: [0, .68333, .12028, 0, .88277], 216: [.04861, .73194, .09403, 0, .76666], 223: [.19444, .69444, .10514, 0, .53666], 230: [0, .43056, .07514, 0, .71555], 248: [.09722, .52778, .09194, 0, .51111], 305: [0, .43056, 0, .02778, .32246], 338: [0, .68333, .12028, 0, .98499], 339: [0, .43056, .07514, 0, .71555], 567: [.19444, .43056, 0, .08334, .38403], 710: [0, .69444, .06646, 0, .51111], 711: [0, .62847, .08295, 0, .51111], 713: [0, .56167, .10333, 0, .51111], 714: [0, .69444, .09694, 0, .51111], 715: [0, .69444, 0, 0, .51111], 728: [0, .69444, .10806, 0, .51111], 729: [0, .66786, .11752, 0, .30667], 730: [0, .69444, 0, 0, .83129], 732: [0, .66786, .11585, 0, .51111], 733: [0, .69444, .1225, 0, .51111], 915: [0, .68333, .13305, 0, .62722], 916: [0, .68333, 0, 0, .81777], 920: [0, .68333, .09403, 0, .76666], 923: [0, .68333, 0, 0, .69222], 926: [0, .68333, .15294, 0, .66444], 928: [0, .68333, .16389, 0, .74333], 931: [0, .68333, .12028, 0, .71555], 933: [0, .68333, .11111, 0, .76666], 934: [0, .68333, .05986, 0, .71555], 936: [0, .68333, .11111, 0, .76666], 937: [0, .68333, .10257, 0, .71555], 8211: [0, .43056, .09208, 0, .51111], 8212: [0, .43056, .09208, 0, 1.02222], 8216: [0, .69444, .12417, 0, .30667], 8217: [0, .69444, .12417, 0, .30667], 8220: [0, .69444, .1685, 0, .51444], 8221: [0, .69444, .06961, 0, .51444], 8463: [0, .68889, 0, 0, .54028] }, "Main-Regular": { + 32: [0, 0, 0, 0, .25], 33: [0, .69444, 0, 0, .27778], 34: [0, .69444, 0, 0, .5], 35: [.19444, .69444, 0, 0, .83334], 36: [.05556, .75, 0, 0, .5], 37: [.05556, .75, 0, 0, .83334], 38: [0, .69444, 0, 0, .77778], 39: [0, .69444, 0, 0, .27778], 40: [.25, .75, 0, 0, .38889], 41: [.25, .75, 0, 0, .38889], 42: [0, .75, 0, 0, .5], 43: [.08333, .58333, 0, 0, .77778], 44: [.19444, .10556, 0, 0, .27778], 45: [0, .43056, 0, 0, .33333], 46: [0, .10556, 0, 0, .27778], 47: [.25, .75, 0, 0, .5], 48: [0, .64444, 0, 0, .5], 49: [0, .64444, 0, 0, .5], 50: [0, .64444, 0, 0, .5], 51: [0, .64444, 0, 0, .5], 52: [0, .64444, 0, 0, .5], 53: [0, .64444, 0, 0, .5], 54: [0, .64444, 0, 0, .5], 55: [0, .64444, 0, 0, .5], 56: [0, .64444, 0, 0, .5], 57: [0, .64444, 0, 0, .5], 58: [0, .43056, 0, 0, .27778], 59: [.19444, .43056, 0, 0, .27778], 60: [.0391, .5391, 0, 0, .77778], 61: [-.13313, .36687, 0, 0, .77778], 62: [.0391, .5391, 0, 0, .77778], 63: [0, .69444, 0, 0, .47222], 64: [0, .69444, 0, 0, .77778], 65: [0, .68333, 0, 0, .75], 66: [0, .68333, 0, 0, .70834], 67: [0, .68333, 0, 0, .72222], 68: [0, .68333, 0, 0, .76389], 69: [0, .68333, 0, 0, .68056], 70: [0, .68333, 0, 0, .65278], 71: [0, .68333, 0, 0, .78472], 72: [0, .68333, 0, 0, .75], 73: [0, .68333, 0, 0, .36111], 74: [0, .68333, 0, 0, .51389], 75: [0, .68333, 0, 0, .77778], 76: [0, .68333, 0, 0, .625], 77: [0, .68333, 0, 0, .91667], 78: [0, .68333, 0, 0, .75], 79: [0, .68333, 0, 0, .77778], 80: [0, .68333, 0, 0, .68056], 81: [.19444, .68333, 0, 0, .77778], 82: [0, .68333, 0, 0, .73611], 83: [0, .68333, 0, 0, .55556], 84: [0, .68333, 0, 0, .72222], 85: [0, .68333, 0, 0, .75], 86: [0, .68333, .01389, 0, .75], 87: [0, .68333, .01389, 0, 1.02778], 88: [0, .68333, 0, 0, .75], 89: [0, .68333, .025, 0, .75], 90: [0, .68333, 0, 0, .61111], 91: [.25, .75, 0, 0, .27778], 92: [.25, .75, 0, 0, .5], 93: [.25, .75, 0, 0, .27778], 94: [0, .69444, 0, 0, .5], 95: [.31, .12056, .02778, 0, .5], 97: [0, .43056, 0, 0, .5], 98: [0, .69444, 0, 0, .55556], 99: [0, .43056, 0, 0, .44445], 100: [0, .69444, 0, 0, .55556], 101: [0, .43056, 0, 0, .44445], 102: [0, .69444, .07778, 0, .30556], 103: [.19444, .43056, .01389, 0, .5], 104: [0, .69444, 0, 0, .55556], 105: [0, .66786, 0, 0, .27778], 106: [.19444, .66786, 0, 0, .30556], 107: [0, .69444, 0, 0, .52778], 108: [0, .69444, 0, 0, .27778], 109: [0, .43056, 0, 0, .83334], 110: [0, .43056, 0, 0, .55556], 111: [0, .43056, 0, 0, .5], 112: [.19444, .43056, 0, 0, .55556], 113: [.19444, .43056, 0, 0, .52778], 114: [0, .43056, 0, 0, .39167], 115: [0, .43056, 0, 0, .39445], 116: [0, .61508, 0, 0, .38889], 117: [0, .43056, 0, 0, .55556], 118: [0, .43056, .01389, 0, .52778], 119: [0, .43056, .01389, 0, .72222], 120: [0, .43056, 0, 0, .52778], 121: [.19444, .43056, .01389, 0, .52778], 122: [0, .43056, 0, 0, .44445], 123: [.25, .75, 0, 0, .5], 124: [.25, .75, 0, 0, .27778], 125: [.25, .75, 0, 0, .5], 126: [.35, .31786, 0, 0, .5], 160: [0, 0, 0, 0, .25], 167: [.19444, .69444, 0, 0, .44445], 168: [0, .66786, 0, 0, .5], 172: [0, .43056, 0, 0, .66667], 176: [0, .69444, 0, 0, .75], 177: [.08333, .58333, 0, 0, .77778], 182: [.19444, .69444, 0, 0, .61111], 184: [.17014, 0, 0, 0, .44445], 198: [0, .68333, 0, 0, .90278], 215: [.08333, .58333, 0, 0, .77778], 216: [.04861, .73194, 0, 0, .77778], 223: [0, .69444, 0, 0, .5], 230: [0, .43056, 0, 0, .72222], 247: [.08333, .58333, 0, 0, .77778], 248: [.09722, .52778, 0, 0, .5], 305: [0, .43056, 0, 0, .27778], 338: [0, .68333, 0, 0, 1.01389], 339: [0, .43056, 0, 0, .77778], 567: [.19444, .43056, 0, 0, .30556], 710: [0, .69444, 0, 0, .5], 711: [0, .62847, 0, 0, .5], 713: [0, .56778, 0, 0, .5], 714: [0, .69444, 0, 0, .5], 715: [0, .69444, 0, 0, .5], 728: [0, .69444, 0, 0, .5], 729: [0, .66786, 0, 0, .27778], 730: [0, .69444, 0, 0, .75], 732: [0, .66786, 0, 0, .5], 733: [0, .69444, 0, 0, .5], 915: [0, .68333, 0, 0, .625], 916: [0, .68333, 0, 0, .83334], 920: [0, .68333, 0, 0, .77778], 923: [0, .68333, 0, 0, .69445], 926: [0, .68333, 0, 0, .66667], 928: [0, .68333, 0, 0, .75], 931: [0, .68333, 0, 0, .72222], 933: [0, .68333, 0, 0, .77778], 934: [0, .68333, 0, 0, .72222], 936: [0, .68333, 0, 0, .77778], 937: [0, .68333, 0, 0, .72222], 8211: [0, .43056, .02778, 0, .5], 8212: [0, .43056, .02778, 0, 1], 8216: [0, .69444, 0, 0, .27778], 8217: [0, .69444, 0, 0, .27778], 8220: [0, .69444, 0, 0, .5], 8221: [0, .69444, 0, 0, .5], 8224: [.19444, .69444, 0, 0, .44445], 8225: [.19444, .69444, 0, 0, .44445], 8230: [0, .12, 0, 0, 1.172], 8242: [0, .55556, 0, 0, .275], 8407: [0, .71444, .15382, 0, .5], 8463: [0, .68889, 0, 0, .54028], 8465: [0, .69444, 0, 0, .72222], 8467: [0, .69444, 0, .11111, .41667], 8472: [.19444, .43056, 0, .11111, .63646], 8476: [0, .69444, 0, 0, .72222], 8501: [0, .69444, 0, 0, .61111], 8592: [-.13313, .36687, 0, 0, 1], 8593: [.19444, .69444, 0, 0, .5], 8594: [-.13313, .36687, 0, 0, 1], 8595: [.19444, .69444, 0, 0, .5], 8596: [-.13313, .36687, 0, 0, 1], 8597: [.25, .75, 0, 0, .5], 8598: [.19444, .69444, 0, 0, 1], 8599: [.19444, .69444, 0, 0, 1], 8600: [.19444, .69444, 0, 0, 1], 8601: [.19444, .69444, 0, 0, 1], 8614: [.011, .511, 0, 0, 1], 8617: [.011, .511, 0, 0, 1.126], 8618: [.011, .511, 0, 0, 1.126], 8636: [-.13313, .36687, 0, 0, 1], 8637: [-.13313, .36687, 0, 0, 1], 8640: [-.13313, .36687, 0, 0, 1], 8641: [-.13313, .36687, 0, 0, 1], 8652: [.011, .671, 0, 0, 1], 8656: [-.13313, .36687, 0, 0, 1], 8657: [.19444, .69444, 0, 0, .61111], 8658: [-.13313, .36687, 0, 0, 1], 8659: [.19444, .69444, 0, 0, .61111], 8660: [-.13313, .36687, 0, 0, 1], 8661: [.25, .75, 0, 0, .61111], 8704: [0, .69444, 0, 0, .55556], 8706: [0, .69444, .05556, .08334, .5309], 8707: [0, .69444, 0, 0, .55556], 8709: [.05556, .75, 0, 0, .5], 8711: [0, .68333, 0, 0, .83334], 8712: [.0391, .5391, 0, 0, .66667], 8715: [.0391, .5391, 0, 0, .66667], 8722: [.08333, .58333, 0, 0, .77778], 8723: [.08333, .58333, 0, 0, .77778], 8725: [.25, .75, 0, 0, .5], 8726: [.25, .75, 0, 0, .5], 8727: [-.03472, .46528, 0, 0, .5], 8728: [-.05555, .44445, 0, 0, .5], 8729: [-.05555, .44445, 0, 0, .5], 8730: [.2, .8, 0, 0, .83334], 8733: [0, .43056, 0, 0, .77778], 8734: [0, .43056, 0, 0, 1], 8736: [0, .69224, 0, 0, .72222], 8739: [.25, .75, 0, 0, .27778], 8741: [.25, .75, 0, 0, .5], 8743: [0, .55556, 0, 0, .66667], 8744: [0, .55556, 0, 0, .66667], 8745: [0, .55556, 0, 0, .66667], 8746: [0, .55556, 0, 0, .66667], 8747: [.19444, .69444, .11111, 0, .41667], 8764: [-.13313, .36687, 0, 0, .77778], 8768: [.19444, .69444, 0, 0, .27778], 8771: [-.03625, .46375, 0, 0, .77778], 8773: [-.022, .589, 0, 0, 1], 8776: [-.01688, .48312, 0, 0, .77778], 8781: [-.03625, .46375, 0, 0, .77778], 8784: [-.133, .67, 0, 0, .778], 8801: [-.03625, .46375, 0, 0, .77778], 8804: [.13597, .63597, 0, 0, .77778], 8805: [.13597, .63597, 0, 0, .77778], 8810: [.0391, .5391, 0, 0, 1], 8811: [.0391, .5391, 0, 0, 1], + 8826: [.0391, .5391, 0, 0, .77778], 8827: [.0391, .5391, 0, 0, .77778], 8834: [.0391, .5391, 0, 0, .77778], 8835: [.0391, .5391, 0, 0, .77778], 8838: [.13597, .63597, 0, 0, .77778], 8839: [.13597, .63597, 0, 0, .77778], 8846: [0, .55556, 0, 0, .66667], 8849: [.13597, .63597, 0, 0, .77778], 8850: [.13597, .63597, 0, 0, .77778], 8851: [0, .55556, 0, 0, .66667], 8852: [0, .55556, 0, 0, .66667], 8853: [.08333, .58333, 0, 0, .77778], 8854: [.08333, .58333, 0, 0, .77778], 8855: [.08333, .58333, 0, 0, .77778], 8856: [.08333, .58333, 0, 0, .77778], 8857: [.08333, .58333, 0, 0, .77778], 8866: [0, .69444, 0, 0, .61111], 8867: [0, .69444, 0, 0, .61111], 8868: [0, .69444, 0, 0, .77778], 8869: [0, .69444, 0, 0, .77778], 8872: [.249, .75, 0, 0, .867], 8900: [-.05555, .44445, 0, 0, .5], 8901: [-.05555, .44445, 0, 0, .27778], 8902: [-.03472, .46528, 0, 0, .5], 8904: [.005, .505, 0, 0, .9], 8942: [.03, .9, 0, 0, .278], 8943: [-.19, .31, 0, 0, 1.172], 8945: [-.1, .82, 0, 0, 1.282], 8968: [.25, .75, 0, 0, .44445], 8969: [.25, .75, 0, 0, .44445], 8970: [.25, .75, 0, 0, .44445], 8971: [.25, .75, 0, 0, .44445], 8994: [-.14236, .35764, 0, 0, 1], 8995: [-.14236, .35764, 0, 0, 1], 9136: [.244, .744, 0, 0, .412], 9137: [.244, .744, 0, 0, .412], 9651: [.19444, .69444, 0, 0, .88889], 9657: [-.03472, .46528, 0, 0, .5], 9661: [.19444, .69444, 0, 0, .88889], 9667: [-.03472, .46528, 0, 0, .5], 9711: [.19444, .69444, 0, 0, 1], 9824: [.12963, .69444, 0, 0, .77778], 9825: [.12963, .69444, 0, 0, .77778], 9826: [.12963, .69444, 0, 0, .77778], 9827: [.12963, .69444, 0, 0, .77778], 9837: [0, .75, 0, 0, .38889], 9838: [.19444, .69444, 0, 0, .38889], 9839: [.19444, .69444, 0, 0, .38889], 10216: [.25, .75, 0, 0, .38889], 10217: [.25, .75, 0, 0, .38889], 10222: [.244, .744, 0, 0, .412], 10223: [.244, .744, 0, 0, .412], 10229: [.011, .511, 0, 0, 1.609], 10230: [.011, .511, 0, 0, 1.638], 10231: [.011, .511, 0, 0, 1.859], 10232: [.024, .525, 0, 0, 1.609], 10233: [.024, .525, 0, 0, 1.638], 10234: [.024, .525, 0, 0, 1.858], 10236: [.011, .511, 0, 0, 1.638], 10815: [0, .68333, 0, 0, .75], 10927: [.13597, .63597, 0, 0, .77778], 10928: [.13597, .63597, 0, 0, .77778], 57376: [.19444, .69444, 0, 0, 0] + }, "Math-BoldItalic": { 65: [0, .68611, 0, 0, .86944], 66: [0, .68611, .04835, 0, .8664], 67: [0, .68611, .06979, 0, .81694], 68: [0, .68611, .03194, 0, .93812], 69: [0, .68611, .05451, 0, .81007], 70: [0, .68611, .15972, 0, .68889], 71: [0, .68611, 0, 0, .88673], 72: [0, .68611, .08229, 0, .98229], 73: [0, .68611, .07778, 0, .51111], 74: [0, .68611, .10069, 0, .63125], 75: [0, .68611, .06979, 0, .97118], 76: [0, .68611, 0, 0, .75555], 77: [0, .68611, .11424, 0, 1.14201], 78: [0, .68611, .11424, 0, .95034], 79: [0, .68611, .03194, 0, .83666], 80: [0, .68611, .15972, 0, .72309], 81: [.19444, .68611, 0, 0, .86861], 82: [0, .68611, .00421, 0, .87235], 83: [0, .68611, .05382, 0, .69271], 84: [0, .68611, .15972, 0, .63663], 85: [0, .68611, .11424, 0, .80027], 86: [0, .68611, .25555, 0, .67778], 87: [0, .68611, .15972, 0, 1.09305], 88: [0, .68611, .07778, 0, .94722], 89: [0, .68611, .25555, 0, .67458], 90: [0, .68611, .06979, 0, .77257], 97: [0, .44444, 0, 0, .63287], 98: [0, .69444, 0, 0, .52083], 99: [0, .44444, 0, 0, .51342], 100: [0, .69444, 0, 0, .60972], 101: [0, .44444, 0, 0, .55361], 102: [.19444, .69444, .11042, 0, .56806], 103: [.19444, .44444, .03704, 0, .5449], 104: [0, .69444, 0, 0, .66759], 105: [0, .69326, 0, 0, .4048], 106: [.19444, .69326, .0622, 0, .47083], 107: [0, .69444, .01852, 0, .6037], 108: [0, .69444, .0088, 0, .34815], 109: [0, .44444, 0, 0, 1.0324], 110: [0, .44444, 0, 0, .71296], 111: [0, .44444, 0, 0, .58472], 112: [.19444, .44444, 0, 0, .60092], 113: [.19444, .44444, .03704, 0, .54213], 114: [0, .44444, .03194, 0, .5287], 115: [0, .44444, 0, 0, .53125], 116: [0, .63492, 0, 0, .41528], 117: [0, .44444, 0, 0, .68102], 118: [0, .44444, .03704, 0, .56666], 119: [0, .44444, .02778, 0, .83148], 120: [0, .44444, 0, 0, .65903], 121: [.19444, .44444, .03704, 0, .59028], 122: [0, .44444, .04213, 0, .55509], 915: [0, .68611, .15972, 0, .65694], 916: [0, .68611, 0, 0, .95833], 920: [0, .68611, .03194, 0, .86722], 923: [0, .68611, 0, 0, .80555], 926: [0, .68611, .07458, 0, .84125], 928: [0, .68611, .08229, 0, .98229], 931: [0, .68611, .05451, 0, .88507], 933: [0, .68611, .15972, 0, .67083], 934: [0, .68611, 0, 0, .76666], 936: [0, .68611, .11653, 0, .71402], 937: [0, .68611, .04835, 0, .8789], 945: [0, .44444, 0, 0, .76064], 946: [.19444, .69444, .03403, 0, .65972], 947: [.19444, .44444, .06389, 0, .59003], 948: [0, .69444, .03819, 0, .52222], 949: [0, .44444, 0, 0, .52882], 950: [.19444, .69444, .06215, 0, .50833], 951: [.19444, .44444, .03704, 0, .6], 952: [0, .69444, .03194, 0, .5618], 953: [0, .44444, 0, 0, .41204], 954: [0, .44444, 0, 0, .66759], 955: [0, .69444, 0, 0, .67083], 956: [.19444, .44444, 0, 0, .70787], 957: [0, .44444, .06898, 0, .57685], 958: [.19444, .69444, .03021, 0, .50833], 959: [0, .44444, 0, 0, .58472], 960: [0, .44444, .03704, 0, .68241], 961: [.19444, .44444, 0, 0, .6118], 962: [.09722, .44444, .07917, 0, .42361], 963: [0, .44444, .03704, 0, .68588], 964: [0, .44444, .13472, 0, .52083], 965: [0, .44444, .03704, 0, .63055], 966: [.19444, .44444, 0, 0, .74722], 967: [.19444, .44444, 0, 0, .71805], 968: [.19444, .69444, .03704, 0, .75833], 969: [0, .44444, .03704, 0, .71782], 977: [0, .69444, 0, 0, .69155], 981: [.19444, .69444, 0, 0, .7125], 982: [0, .44444, .03194, 0, .975], 1009: [.19444, .44444, 0, 0, .6118], 1013: [0, .44444, 0, 0, .48333] }, "Math-Italic": { 65: [0, .68333, 0, .13889, .75], 66: [0, .68333, .05017, .08334, .75851], 67: [0, .68333, .07153, .08334, .71472], 68: [0, .68333, .02778, .05556, .82792], 69: [0, .68333, .05764, .08334, .7382], 70: [0, .68333, .13889, .08334, .64306], 71: [0, .68333, 0, .08334, .78625], 72: [0, .68333, .08125, .05556, .83125], 73: [0, .68333, .07847, .11111, .43958], 74: [0, .68333, .09618, .16667, .55451], 75: [0, .68333, .07153, .05556, .84931], 76: [0, .68333, 0, .02778, .68056], 77: [0, .68333, .10903, .08334, .97014], 78: [0, .68333, .10903, .08334, .80347], 79: [0, .68333, .02778, .08334, .76278], 80: [0, .68333, .13889, .08334, .64201], 81: [.19444, .68333, 0, .08334, .79056], 82: [0, .68333, .00773, .08334, .75929], 83: [0, .68333, .05764, .08334, .6132], 84: [0, .68333, .13889, .08334, .58438], 85: [0, .68333, .10903, .02778, .68278], 86: [0, .68333, .22222, 0, .58333], 87: [0, .68333, .13889, 0, .94445], 88: [0, .68333, .07847, .08334, .82847], 89: [0, .68333, .22222, 0, .58056], 90: [0, .68333, .07153, .08334, .68264], 97: [0, .43056, 0, 0, .52859], 98: [0, .69444, 0, 0, .42917], 99: [0, .43056, 0, .05556, .43276], 100: [0, .69444, 0, .16667, .52049], 101: [0, .43056, 0, .05556, .46563], 102: [.19444, .69444, .10764, .16667, .48959], 103: [.19444, .43056, .03588, .02778, .47697], 104: [0, .69444, 0, 0, .57616], 105: [0, .65952, 0, 0, .34451], 106: [.19444, .65952, .05724, 0, .41181], 107: [0, .69444, .03148, 0, .5206], 108: [0, .69444, .01968, .08334, .29838], 109: [0, .43056, 0, 0, .87801], 110: [0, .43056, 0, 0, .60023], 111: [0, .43056, 0, .05556, .48472], 112: [.19444, .43056, 0, .08334, .50313], 113: [.19444, .43056, .03588, .08334, .44641], 114: [0, .43056, .02778, .05556, .45116], 115: [0, .43056, 0, .05556, .46875], 116: [0, .61508, 0, .08334, .36111], 117: [0, .43056, 0, .02778, .57246], 118: [0, .43056, .03588, .02778, .48472], 119: [0, .43056, .02691, .08334, .71592], 120: [0, .43056, 0, .02778, .57153], 121: [.19444, .43056, .03588, .05556, .49028], 122: [0, .43056, .04398, .05556, .46505], 915: [0, .68333, .13889, .08334, .61528], 916: [0, .68333, 0, .16667, .83334], 920: [0, .68333, .02778, .08334, .76278], 923: [0, .68333, 0, .16667, .69445], 926: [0, .68333, .07569, .08334, .74236], 928: [0, .68333, .08125, .05556, .83125], 931: [0, .68333, .05764, .08334, .77986], 933: [0, .68333, .13889, .05556, .58333], 934: [0, .68333, 0, .08334, .66667], 936: [0, .68333, .11, .05556, .61222], 937: [0, .68333, .05017, .08334, .7724], 945: [0, .43056, .0037, .02778, .6397], 946: [.19444, .69444, .05278, .08334, .56563], 947: [.19444, .43056, .05556, 0, .51773], 948: [0, .69444, .03785, .05556, .44444], 949: [0, .43056, 0, .08334, .46632], 950: [.19444, .69444, .07378, .08334, .4375], 951: [.19444, .43056, .03588, .05556, .49653], 952: [0, .69444, .02778, .08334, .46944], 953: [0, .43056, 0, .05556, .35394], 954: [0, .43056, 0, 0, .57616], 955: [0, .69444, 0, 0, .58334], 956: [.19444, .43056, 0, .02778, .60255], 957: [0, .43056, .06366, .02778, .49398], 958: [.19444, .69444, .04601, .11111, .4375], 959: [0, .43056, 0, .05556, .48472], 960: [0, .43056, .03588, 0, .57003], 961: [.19444, .43056, 0, .08334, .51702], 962: [.09722, .43056, .07986, .08334, .36285], 963: [0, .43056, .03588, 0, .57141], 964: [0, .43056, .1132, .02778, .43715], 965: [0, .43056, .03588, .02778, .54028], 966: [.19444, .43056, 0, .08334, .65417], 967: [.19444, .43056, 0, .05556, .62569], 968: [.19444, .69444, .03588, .11111, .65139], 969: [0, .43056, .03588, 0, .62245], 977: [0, .69444, 0, .08334, .59144], 981: [.19444, .69444, 0, .08334, .59583], 982: [0, .43056, .02778, 0, .82813], 1009: [.19444, .43056, 0, .08334, .51702], 1013: [0, .43056, 0, .05556, .4059] }, "Math-Regular": { 65: [0, .68333, 0, .13889, .75], 66: [0, .68333, .05017, .08334, .75851], 67: [0, .68333, .07153, .08334, .71472], 68: [0, .68333, .02778, .05556, .82792], 69: [0, .68333, .05764, .08334, .7382], 70: [0, .68333, .13889, .08334, .64306], 71: [0, .68333, 0, .08334, .78625], 72: [0, .68333, .08125, .05556, .83125], 73: [0, .68333, .07847, .11111, .43958], 74: [0, .68333, .09618, .16667, .55451], 75: [0, .68333, .07153, .05556, .84931], 76: [0, .68333, 0, .02778, .68056], 77: [0, .68333, .10903, .08334, .97014], 78: [0, .68333, .10903, .08334, .80347], 79: [0, .68333, .02778, .08334, .76278], 80: [0, .68333, .13889, .08334, .64201], 81: [.19444, .68333, 0, .08334, .79056], 82: [0, .68333, .00773, .08334, .75929], 83: [0, .68333, .05764, .08334, .6132], 84: [0, .68333, .13889, .08334, .58438], 85: [0, .68333, .10903, .02778, .68278], 86: [0, .68333, .22222, 0, .58333], 87: [0, .68333, .13889, 0, .94445], 88: [0, .68333, .07847, .08334, .82847], 89: [0, .68333, .22222, 0, .58056], 90: [0, .68333, .07153, .08334, .68264], 97: [0, .43056, 0, 0, .52859], 98: [0, .69444, 0, 0, .42917], 99: [0, .43056, 0, .05556, .43276], 100: [0, .69444, 0, .16667, .52049], 101: [0, .43056, 0, .05556, .46563], 102: [.19444, .69444, .10764, .16667, .48959], 103: [.19444, .43056, .03588, .02778, .47697], 104: [0, .69444, 0, 0, .57616], 105: [0, .65952, 0, 0, .34451], 106: [.19444, .65952, .05724, 0, .41181], 107: [0, .69444, .03148, 0, .5206], 108: [0, .69444, .01968, .08334, .29838], 109: [0, .43056, 0, 0, .87801], 110: [0, .43056, 0, 0, .60023], 111: [0, .43056, 0, .05556, .48472], 112: [.19444, .43056, 0, .08334, .50313], 113: [.19444, .43056, .03588, .08334, .44641], 114: [0, .43056, .02778, .05556, .45116], 115: [0, .43056, 0, .05556, .46875], 116: [0, .61508, 0, .08334, .36111], 117: [0, .43056, 0, .02778, .57246], 118: [0, .43056, .03588, .02778, .48472], 119: [0, .43056, .02691, .08334, .71592], 120: [0, .43056, 0, .02778, .57153], 121: [.19444, .43056, .03588, .05556, .49028], 122: [0, .43056, .04398, .05556, .46505], 915: [0, .68333, .13889, .08334, .61528], 916: [0, .68333, 0, .16667, .83334], 920: [0, .68333, .02778, .08334, .76278], 923: [0, .68333, 0, .16667, .69445], 926: [0, .68333, .07569, .08334, .74236], 928: [0, .68333, .08125, .05556, .83125], 931: [0, .68333, .05764, .08334, .77986], 933: [0, .68333, .13889, .05556, .58333], 934: [0, .68333, 0, .08334, .66667], 936: [0, .68333, .11, .05556, .61222], 937: [0, .68333, .05017, .08334, .7724], 945: [0, .43056, .0037, .02778, .6397], 946: [.19444, .69444, .05278, .08334, .56563], 947: [.19444, .43056, .05556, 0, .51773], 948: [0, .69444, .03785, .05556, .44444], 949: [0, .43056, 0, .08334, .46632], 950: [.19444, .69444, .07378, .08334, .4375], 951: [.19444, .43056, .03588, .05556, .49653], 952: [0, .69444, .02778, .08334, .46944], 953: [0, .43056, 0, .05556, .35394], 954: [0, .43056, 0, 0, .57616], 955: [0, .69444, 0, 0, .58334], 956: [.19444, .43056, 0, .02778, .60255], 957: [0, .43056, .06366, .02778, .49398], 958: [.19444, .69444, .04601, .11111, .4375], 959: [0, .43056, 0, .05556, .48472], 960: [0, .43056, .03588, 0, .57003], 961: [.19444, .43056, 0, .08334, .51702], 962: [.09722, .43056, .07986, .08334, .36285], 963: [0, .43056, .03588, 0, .57141], 964: [0, .43056, .1132, .02778, .43715], 965: [0, .43056, .03588, .02778, .54028], 966: [.19444, .43056, 0, .08334, .65417], 967: [.19444, .43056, 0, .05556, .62569], 968: [.19444, .69444, .03588, .11111, .65139], 969: [0, .43056, .03588, 0, .62245], 977: [0, .69444, 0, .08334, .59144], 981: [.19444, .69444, 0, .08334, .59583], 982: [0, .43056, .02778, 0, .82813], 1009: [.19444, .43056, 0, .08334, .51702], 1013: [0, .43056, 0, .05556, .4059] }, "SansSerif-Bold": { 33: [0, .69444, 0, 0, .36667], 34: [0, .69444, 0, 0, .55834], 35: [.19444, .69444, 0, 0, .91667], 36: [.05556, .75, 0, 0, .55], 37: [.05556, .75, 0, 0, 1.02912], 38: [0, .69444, 0, 0, .83056], 39: [0, .69444, 0, 0, .30556], 40: [.25, .75, 0, 0, .42778], 41: [.25, .75, 0, 0, .42778], 42: [0, .75, 0, 0, .55], 43: [.11667, .61667, 0, 0, .85556], 44: [.10556, .13056, 0, 0, .30556], 45: [0, .45833, 0, 0, .36667], 46: [0, .13056, 0, 0, .30556], 47: [.25, .75, 0, 0, .55], 48: [0, .69444, 0, 0, .55], 49: [0, .69444, 0, 0, .55], 50: [0, .69444, 0, 0, .55], 51: [0, .69444, 0, 0, .55], 52: [0, .69444, 0, 0, .55], 53: [0, .69444, 0, 0, .55], 54: [0, .69444, 0, 0, .55], 55: [0, .69444, 0, 0, .55], 56: [0, .69444, 0, 0, .55], 57: [0, .69444, 0, 0, .55], 58: [0, .45833, 0, 0, .30556], 59: [.10556, .45833, 0, 0, .30556], 61: [-.09375, .40625, 0, 0, .85556], 63: [0, .69444, 0, 0, .51945], 64: [0, .69444, 0, 0, .73334], 65: [0, .69444, 0, 0, .73334], 66: [0, .69444, 0, 0, .73334], 67: [0, .69444, 0, 0, .70278], 68: [0, .69444, 0, 0, .79445], 69: [0, .69444, 0, 0, .64167], 70: [0, .69444, 0, 0, .61111], 71: [0, .69444, 0, 0, .73334], 72: [0, .69444, 0, 0, .79445], 73: [0, .69444, 0, 0, .33056], 74: [0, .69444, 0, 0, .51945], 75: [0, .69444, 0, 0, .76389], 76: [0, .69444, 0, 0, .58056], 77: [0, .69444, 0, 0, .97778], 78: [0, .69444, 0, 0, .79445], 79: [0, .69444, 0, 0, .79445], 80: [0, .69444, 0, 0, .70278], 81: [.10556, .69444, 0, 0, .79445], 82: [0, .69444, 0, 0, .70278], 83: [0, .69444, 0, 0, .61111], 84: [0, .69444, 0, 0, .73334], 85: [0, .69444, 0, 0, .76389], 86: [0, .69444, .01528, 0, .73334], 87: [0, .69444, .01528, 0, 1.03889], 88: [0, .69444, 0, 0, .73334], 89: [0, .69444, .0275, 0, .73334], 90: [0, .69444, 0, 0, .67223], 91: [.25, .75, 0, 0, .34306], 93: [.25, .75, 0, 0, .34306], 94: [0, .69444, 0, 0, .55], 95: [.35, .10833, .03056, 0, .55], 97: [0, .45833, 0, 0, .525], 98: [0, .69444, 0, 0, .56111], 99: [0, .45833, 0, 0, .48889], 100: [0, .69444, 0, 0, .56111], 101: [0, .45833, 0, 0, .51111], 102: [0, .69444, .07639, 0, .33611], 103: [.19444, .45833, .01528, 0, .55], 104: [0, .69444, 0, 0, .56111], 105: [0, .69444, 0, 0, .25556], 106: [.19444, .69444, 0, 0, .28611], 107: [0, .69444, 0, 0, .53056], 108: [0, .69444, 0, 0, .25556], 109: [0, .45833, 0, 0, .86667], 110: [0, .45833, 0, 0, .56111], 111: [0, .45833, 0, 0, .55], 112: [.19444, .45833, 0, 0, .56111], 113: [.19444, .45833, 0, 0, .56111], 114: [0, .45833, .01528, 0, .37222], 115: [0, .45833, 0, 0, .42167], 116: [0, .58929, 0, 0, .40417], 117: [0, .45833, 0, 0, .56111], 118: [0, .45833, .01528, 0, .5], 119: [0, .45833, .01528, 0, .74445], 120: [0, .45833, 0, 0, .5], 121: [.19444, .45833, .01528, 0, .5], 122: [0, .45833, 0, 0, .47639], 126: [.35, .34444, 0, 0, .55], 168: [0, .69444, 0, 0, .55], 176: [0, .69444, 0, 0, .73334], 180: [0, .69444, 0, 0, .55], 184: [.17014, 0, 0, 0, .48889], 305: [0, .45833, 0, 0, .25556], 567: [.19444, .45833, 0, 0, .28611], 710: [0, .69444, 0, 0, .55], 711: [0, .63542, 0, 0, .55], 713: [0, .63778, 0, 0, .55], 728: [0, .69444, 0, 0, .55], 729: [0, .69444, 0, 0, .30556], 730: [0, .69444, 0, 0, .73334], 732: [0, .69444, 0, 0, .55], 733: [0, .69444, 0, 0, .55], 915: [0, .69444, 0, 0, .58056], 916: [0, .69444, 0, 0, .91667], 920: [0, .69444, 0, 0, .85556], 923: [0, .69444, 0, 0, .67223], 926: [0, .69444, 0, 0, .73334], 928: [0, .69444, 0, 0, .79445], 931: [0, .69444, 0, 0, .79445], 933: [0, .69444, 0, 0, .85556], 934: [0, .69444, 0, 0, .79445], 936: [0, .69444, 0, 0, .85556], 937: [0, .69444, 0, 0, .79445], 8211: [0, .45833, .03056, 0, .55], 8212: [0, .45833, .03056, 0, 1.10001], 8216: [0, .69444, 0, 0, .30556], 8217: [0, .69444, 0, 0, .30556], 8220: [0, .69444, 0, 0, .55834], 8221: [0, .69444, 0, 0, .55834] }, "SansSerif-Italic": { 33: [0, .69444, .05733, 0, .31945], 34: [0, .69444, .00316, 0, .5], 35: [.19444, .69444, .05087, 0, .83334], 36: [.05556, .75, .11156, 0, .5], 37: [.05556, .75, .03126, 0, .83334], 38: [0, .69444, .03058, 0, .75834], 39: [0, .69444, .07816, 0, .27778], 40: [.25, .75, .13164, 0, .38889], 41: [.25, .75, .02536, 0, .38889], 42: [0, .75, .11775, 0, .5], 43: [.08333, .58333, .02536, 0, .77778], 44: [.125, .08333, 0, 0, .27778], 45: [0, .44444, .01946, 0, .33333], 46: [0, .08333, 0, 0, .27778], 47: [.25, .75, .13164, 0, .5], 48: [0, .65556, .11156, 0, .5], 49: [0, .65556, .11156, 0, .5], 50: [0, .65556, .11156, 0, .5], 51: [0, .65556, .11156, 0, .5], 52: [0, .65556, .11156, 0, .5], 53: [0, .65556, .11156, 0, .5], 54: [0, .65556, .11156, 0, .5], 55: [0, .65556, .11156, 0, .5], 56: [0, .65556, .11156, 0, .5], 57: [0, .65556, .11156, 0, .5], 58: [0, .44444, .02502, 0, .27778], 59: [.125, .44444, .02502, 0, .27778], 61: [-.13, .37, .05087, 0, .77778], 63: [0, .69444, .11809, 0, .47222], 64: [0, .69444, .07555, 0, .66667], 65: [0, .69444, 0, 0, .66667], 66: [0, .69444, .08293, 0, .66667], 67: [0, .69444, .11983, 0, .63889], 68: [0, .69444, .07555, 0, .72223], 69: [0, .69444, .11983, 0, .59722], 70: [0, .69444, .13372, 0, .56945], 71: [0, .69444, .11983, 0, .66667], 72: [0, .69444, .08094, 0, .70834], 73: [0, .69444, .13372, 0, .27778], 74: [0, .69444, .08094, 0, .47222], 75: [0, .69444, .11983, 0, .69445], 76: [0, .69444, 0, 0, .54167], 77: [0, .69444, .08094, 0, .875], 78: [0, .69444, .08094, 0, .70834], 79: [0, .69444, .07555, 0, .73611], 80: [0, .69444, .08293, 0, .63889], 81: [.125, .69444, .07555, 0, .73611], 82: [0, .69444, .08293, 0, .64584], 83: [0, .69444, .09205, 0, .55556], 84: [0, .69444, .13372, 0, .68056], 85: [0, .69444, .08094, 0, .6875], 86: [0, .69444, .1615, 0, .66667], 87: [0, .69444, .1615, 0, .94445], 88: [0, .69444, .13372, 0, .66667], 89: [0, .69444, .17261, 0, .66667], 90: [0, .69444, .11983, 0, .61111], 91: [.25, .75, .15942, 0, .28889], 93: [.25, .75, .08719, 0, .28889], 94: [0, .69444, .0799, 0, .5], 95: [.35, .09444, .08616, 0, .5], 97: [0, .44444, .00981, 0, .48056], 98: [0, .69444, .03057, 0, .51667], 99: [0, .44444, .08336, 0, .44445], 100: [0, .69444, .09483, 0, .51667], 101: [0, .44444, .06778, 0, .44445], 102: [0, .69444, .21705, 0, .30556], 103: [.19444, .44444, .10836, 0, .5], 104: [0, .69444, .01778, 0, .51667], 105: [0, .67937, .09718, 0, .23889], 106: [.19444, .67937, .09162, 0, .26667], 107: [0, .69444, .08336, 0, .48889], 108: [0, .69444, .09483, 0, .23889], 109: [0, .44444, .01778, 0, .79445], 110: [0, .44444, .01778, 0, .51667], 111: [0, .44444, .06613, 0, .5], 112: [.19444, .44444, .0389, 0, .51667], 113: [.19444, .44444, .04169, 0, .51667], 114: [0, .44444, .10836, 0, .34167], 115: [0, .44444, .0778, 0, .38333], 116: [0, .57143, .07225, 0, .36111], 117: [0, .44444, .04169, 0, .51667], 118: [0, .44444, .10836, 0, .46111], 119: [0, .44444, .10836, 0, .68334], 120: [0, .44444, .09169, 0, .46111], 121: [.19444, .44444, .10836, 0, .46111], 122: [0, .44444, .08752, 0, .43472], 126: [.35, .32659, .08826, 0, .5], 168: [0, .67937, .06385, 0, .5], 176: [0, .69444, 0, 0, .73752], 184: [.17014, 0, 0, 0, .44445], 305: [0, .44444, .04169, 0, .23889], 567: [.19444, .44444, .04169, 0, .26667], 710: [0, .69444, .0799, 0, .5], 711: [0, .63194, .08432, 0, .5], 713: [0, .60889, .08776, 0, .5], 714: [0, .69444, .09205, 0, .5], 715: [0, .69444, 0, 0, .5], 728: [0, .69444, .09483, 0, .5], 729: [0, .67937, .07774, 0, .27778], 730: [0, .69444, 0, 0, .73752], 732: [0, .67659, .08826, 0, .5], 733: [0, .69444, .09205, 0, .5], 915: [0, .69444, .13372, 0, .54167], 916: [0, .69444, 0, 0, .83334], 920: [0, .69444, .07555, 0, .77778], 923: [0, .69444, 0, 0, .61111], 926: [0, .69444, .12816, 0, .66667], 928: [0, .69444, .08094, 0, .70834], 931: [0, .69444, .11983, 0, .72222], 933: [0, .69444, .09031, 0, .77778], 934: [0, .69444, .04603, 0, .72222], 936: [0, .69444, .09031, 0, .77778], 937: [0, .69444, .08293, 0, .72222], 8211: [0, .44444, .08616, 0, .5], 8212: [0, .44444, .08616, 0, 1], 8216: [0, .69444, .07816, 0, .27778], 8217: [0, .69444, .07816, 0, .27778], 8220: [0, .69444, .14205, 0, .5], 8221: [0, .69444, .00316, 0, .5] }, "SansSerif-Regular": { 33: [0, .69444, 0, 0, .31945], 34: [0, .69444, 0, 0, .5], 35: [.19444, .69444, 0, 0, .83334], 36: [.05556, .75, 0, 0, .5], 37: [.05556, .75, 0, 0, .83334], 38: [0, .69444, 0, 0, .75834], 39: [0, .69444, 0, 0, .27778], 40: [.25, .75, 0, 0, .38889], 41: [.25, .75, 0, 0, .38889], 42: [0, .75, 0, 0, .5], 43: [.08333, .58333, 0, 0, .77778], 44: [.125, .08333, 0, 0, .27778], 45: [0, .44444, 0, 0, .33333], 46: [0, .08333, 0, 0, .27778], 47: [.25, .75, 0, 0, .5], 48: [0, .65556, 0, 0, .5], 49: [0, .65556, 0, 0, .5], 50: [0, .65556, 0, 0, .5], 51: [0, .65556, 0, 0, .5], 52: [0, .65556, 0, 0, .5], 53: [0, .65556, 0, 0, .5], 54: [0, .65556, 0, 0, .5], 55: [0, .65556, 0, 0, .5], 56: [0, .65556, 0, 0, .5], 57: [0, .65556, 0, 0, .5], 58: [0, .44444, 0, 0, .27778], 59: [.125, .44444, 0, 0, .27778], 61: [-.13, .37, 0, 0, .77778], 63: [0, .69444, 0, 0, .47222], 64: [0, .69444, 0, 0, .66667], 65: [0, .69444, 0, 0, .66667], 66: [0, .69444, 0, 0, .66667], 67: [0, .69444, 0, 0, .63889], 68: [0, .69444, 0, 0, .72223], 69: [0, .69444, 0, 0, .59722], 70: [0, .69444, 0, 0, .56945], 71: [0, .69444, 0, 0, .66667], 72: [0, .69444, 0, 0, .70834], 73: [0, .69444, 0, 0, .27778], 74: [0, .69444, 0, 0, .47222], 75: [0, .69444, 0, 0, .69445], 76: [0, .69444, 0, 0, .54167], 77: [0, .69444, 0, 0, .875], 78: [0, .69444, 0, 0, .70834], 79: [0, .69444, 0, 0, .73611], 80: [0, .69444, 0, 0, .63889], 81: [.125, .69444, 0, 0, .73611], 82: [0, .69444, 0, 0, .64584], 83: [0, .69444, 0, 0, .55556], 84: [0, .69444, 0, 0, .68056], 85: [0, .69444, 0, 0, .6875], 86: [0, .69444, .01389, 0, .66667], 87: [0, .69444, .01389, 0, .94445], 88: [0, .69444, 0, 0, .66667], 89: [0, .69444, .025, 0, .66667], 90: [0, .69444, 0, 0, .61111], 91: [.25, .75, 0, 0, .28889], 93: [.25, .75, 0, 0, .28889], 94: [0, .69444, 0, 0, .5], 95: [.35, .09444, .02778, 0, .5], 97: [0, .44444, 0, 0, .48056], 98: [0, .69444, 0, 0, .51667], 99: [0, .44444, 0, 0, .44445], 100: [0, .69444, 0, 0, .51667], 101: [0, .44444, 0, 0, .44445], 102: [0, .69444, .06944, 0, .30556], 103: [.19444, .44444, .01389, 0, .5], 104: [0, .69444, 0, 0, .51667], 105: [0, .67937, 0, 0, .23889], 106: [.19444, .67937, 0, 0, .26667], 107: [0, .69444, 0, 0, .48889], 108: [0, .69444, 0, 0, .23889], 109: [0, .44444, 0, 0, .79445], 110: [0, .44444, 0, 0, .51667], 111: [0, .44444, 0, 0, .5], 112: [.19444, .44444, 0, 0, .51667], 113: [.19444, .44444, 0, 0, .51667], 114: [0, .44444, .01389, 0, .34167], 115: [0, .44444, 0, 0, .38333], 116: [0, .57143, 0, 0, .36111], 117: [0, .44444, 0, 0, .51667], 118: [0, .44444, .01389, 0, .46111], 119: [0, .44444, .01389, 0, .68334], 120: [0, .44444, 0, 0, .46111], 121: [.19444, .44444, .01389, 0, .46111], 122: [0, .44444, 0, 0, .43472], 126: [.35, .32659, 0, 0, .5], 168: [0, .67937, 0, 0, .5], 176: [0, .69444, 0, 0, .66667], 184: [.17014, 0, 0, 0, .44445], 305: [0, .44444, 0, 0, .23889], 567: [.19444, .44444, 0, 0, .26667], 710: [0, .69444, 0, 0, .5], 711: [0, .63194, 0, 0, .5], 713: [0, .60889, 0, 0, .5], 714: [0, .69444, 0, 0, .5], 715: [0, .69444, 0, 0, .5], 728: [0, .69444, 0, 0, .5], 729: [0, .67937, 0, 0, .27778], 730: [0, .69444, 0, 0, .66667], 732: [0, .67659, 0, 0, .5], 733: [0, .69444, 0, 0, .5], 915: [0, .69444, 0, 0, .54167], 916: [0, .69444, 0, 0, .83334], 920: [0, .69444, 0, 0, .77778], 923: [0, .69444, 0, 0, .61111], 926: [0, .69444, 0, 0, .66667], 928: [0, .69444, 0, 0, .70834], 931: [0, .69444, 0, 0, .72222], 933: [0, .69444, 0, 0, .77778], 934: [0, .69444, 0, 0, .72222], 936: [0, .69444, 0, 0, .77778], 937: [0, .69444, 0, 0, .72222], 8211: [0, .44444, .02778, 0, .5], 8212: [0, .44444, .02778, 0, 1], 8216: [0, .69444, 0, 0, .27778], 8217: [0, .69444, 0, 0, .27778], 8220: [0, .69444, 0, 0, .5], 8221: [0, .69444, 0, 0, .5] }, "Script-Regular": { 65: [0, .7, .22925, 0, .80253], 66: [0, .7, .04087, 0, .90757], 67: [0, .7, .1689, 0, .66619], 68: [0, .7, .09371, 0, .77443], 69: [0, .7, .18583, 0, .56162], 70: [0, .7, .13634, 0, .89544], 71: [0, .7, .17322, 0, .60961], 72: [0, .7, .29694, 0, .96919], 73: [0, .7, .19189, 0, .80907], 74: [.27778, .7, .19189, 0, 1.05159], 75: [0, .7, .31259, 0, .91364], 76: [0, .7, .19189, 0, .87373], 77: [0, .7, .15981, 0, 1.08031], 78: [0, .7, .3525, 0, .9015], 79: [0, .7, .08078, 0, .73787], 80: [0, .7, .08078, 0, 1.01262], 81: [0, .7, .03305, 0, .88282], 82: [0, .7, .06259, 0, .85], 83: [0, .7, .19189, 0, .86767], 84: [0, .7, .29087, 0, .74697], 85: [0, .7, .25815, 0, .79996], 86: [0, .7, .27523, 0, .62204], 87: [0, .7, .27523, 0, .80532], 88: [0, .7, .26006, 0, .94445], 89: [0, .7, .2939, 0, .70961], 90: [0, .7, .24037, 0, .8212] }, "Size1-Regular": { 40: [.35001, .85, 0, 0, .45834], 41: [.35001, .85, 0, 0, .45834], 47: [.35001, .85, 0, 0, .57778], 91: [.35001, .85, 0, 0, .41667], 92: [.35001, .85, 0, 0, .57778], 93: [.35001, .85, 0, 0, .41667], 123: [.35001, .85, 0, 0, .58334], 125: [.35001, .85, 0, 0, .58334], 710: [0, .72222, 0, 0, .55556], 732: [0, .72222, 0, 0, .55556], 770: [0, .72222, 0, 0, .55556], 771: [0, .72222, 0, 0, .55556], 8214: [-99e-5, .601, 0, 0, .77778], 8593: [1e-5, .6, 0, 0, .66667], 8595: [1e-5, .6, 0, 0, .66667], 8657: [1e-5, .6, 0, 0, .77778], 8659: [1e-5, .6, 0, 0, .77778], 8719: [.25001, .75, 0, 0, .94445], 8720: [.25001, .75, 0, 0, .94445], 8721: [.25001, .75, 0, 0, 1.05556], 8730: [.35001, .85, 0, 0, 1], 8739: [-.00599, .606, 0, 0, .33333], 8741: [-.00599, .606, 0, 0, .55556], 8747: [.30612, .805, .19445, 0, .47222], 8748: [.306, .805, .19445, 0, .47222], 8749: [.306, .805, .19445, 0, .47222], 8750: [.30612, .805, .19445, 0, .47222], 8896: [.25001, .75, 0, 0, .83334], 8897: [.25001, .75, 0, 0, .83334], 8898: [.25001, .75, 0, 0, .83334], 8899: [.25001, .75, 0, 0, .83334], 8968: [.35001, .85, 0, 0, .47222], 8969: [.35001, .85, 0, 0, .47222], 8970: [.35001, .85, 0, 0, .47222], 8971: [.35001, .85, 0, 0, .47222], 9168: [-99e-5, .601, 0, 0, .66667], 10216: [.35001, .85, 0, 0, .47222], 10217: [.35001, .85, 0, 0, .47222], 10752: [.25001, .75, 0, 0, 1.11111], 10753: [.25001, .75, 0, 0, 1.11111], 10754: [.25001, .75, 0, 0, 1.11111], 10756: [.25001, .75, 0, 0, .83334], 10758: [.25001, .75, 0, 0, .83334] }, "Size2-Regular": { 40: [.65002, 1.15, 0, 0, .59722], 41: [.65002, 1.15, 0, 0, .59722], 47: [.65002, 1.15, 0, 0, .81111], 91: [.65002, 1.15, 0, 0, .47222], 92: [.65002, 1.15, 0, 0, .81111], 93: [.65002, 1.15, 0, 0, .47222], 123: [.65002, 1.15, 0, 0, .66667], 125: [.65002, 1.15, 0, 0, .66667], 710: [0, .75, 0, 0, 1], 732: [0, .75, 0, 0, 1], 770: [0, .75, 0, 0, 1], 771: [0, .75, 0, 0, 1], 8719: [.55001, 1.05, 0, 0, 1.27778], 8720: [.55001, 1.05, 0, 0, 1.27778], 8721: [.55001, 1.05, 0, 0, 1.44445], 8730: [.65002, 1.15, 0, 0, 1], 8747: [.86225, 1.36, .44445, 0, .55556], 8748: [.862, 1.36, .44445, 0, .55556], 8749: [.862, 1.36, .44445, 0, .55556], 8750: [.86225, 1.36, .44445, 0, .55556], 8896: [.55001, 1.05, 0, 0, 1.11111], 8897: [.55001, 1.05, 0, 0, 1.11111], 8898: [.55001, 1.05, 0, 0, 1.11111], 8899: [.55001, 1.05, 0, 0, 1.11111], 8968: [.65002, 1.15, 0, 0, .52778], 8969: [.65002, 1.15, 0, 0, .52778], 8970: [.65002, 1.15, 0, 0, .52778], 8971: [.65002, 1.15, 0, 0, .52778], 10216: [.65002, 1.15, 0, 0, .61111], 10217: [.65002, 1.15, 0, 0, .61111], 10752: [.55001, 1.05, 0, 0, 1.51112], 10753: [.55001, 1.05, 0, 0, 1.51112], 10754: [.55001, 1.05, 0, 0, 1.51112], 10756: [.55001, 1.05, 0, 0, 1.11111], 10758: [.55001, 1.05, 0, 0, 1.11111] }, "Size3-Regular": { 40: [.95003, 1.45, 0, 0, .73611], 41: [.95003, 1.45, 0, 0, .73611], 47: [.95003, 1.45, 0, 0, 1.04445], 91: [.95003, 1.45, 0, 0, .52778], 92: [.95003, 1.45, 0, 0, 1.04445], 93: [.95003, 1.45, 0, 0, .52778], 123: [.95003, 1.45, 0, 0, .75], 125: [.95003, 1.45, 0, 0, .75], 710: [0, .75, 0, 0, 1.44445], 732: [0, .75, 0, 0, 1.44445], 770: [0, .75, 0, 0, 1.44445], 771: [0, .75, 0, 0, 1.44445], 8730: [.95003, 1.45, 0, 0, 1], 8968: [.95003, 1.45, 0, 0, .58334], 8969: [.95003, 1.45, 0, 0, .58334], 8970: [.95003, 1.45, 0, 0, .58334], 8971: [.95003, 1.45, 0, 0, .58334], 10216: [.95003, 1.45, 0, 0, .75], 10217: [.95003, 1.45, 0, 0, .75] }, "Size4-Regular": { 40: [1.25003, 1.75, 0, 0, .79167], 41: [1.25003, 1.75, 0, 0, .79167], 47: [1.25003, 1.75, 0, 0, 1.27778], 91: [1.25003, 1.75, 0, 0, .58334], 92: [1.25003, 1.75, 0, 0, 1.27778], 93: [1.25003, 1.75, 0, 0, .58334], 123: [1.25003, 1.75, 0, 0, .80556], 125: [1.25003, 1.75, 0, 0, .80556], 710: [0, .825, 0, 0, 1.8889], 732: [0, .825, 0, 0, 1.8889], 770: [0, .825, 0, 0, 1.8889], 771: [0, .825, 0, 0, 1.8889], 8730: [1.25003, 1.75, 0, 0, 1], 8968: [1.25003, 1.75, 0, 0, .63889], 8969: [1.25003, 1.75, 0, 0, .63889], 8970: [1.25003, 1.75, 0, 0, .63889], 8971: [1.25003, 1.75, 0, 0, .63889], 9115: [.64502, 1.155, 0, 0, .875], 9116: [1e-5, .6, 0, 0, .875], 9117: [.64502, 1.155, 0, 0, .875], 9118: [.64502, 1.155, 0, 0, .875], 9119: [1e-5, .6, 0, 0, .875], 9120: [.64502, 1.155, 0, 0, .875], 9121: [.64502, 1.155, 0, 0, .66667], 9122: [-99e-5, .601, 0, 0, .66667], 9123: [.64502, 1.155, 0, 0, .66667], 9124: [.64502, 1.155, 0, 0, .66667], 9125: [-99e-5, .601, 0, 0, .66667], 9126: [.64502, 1.155, 0, 0, .66667], 9127: [1e-5, .9, 0, 0, .88889], 9128: [.65002, 1.15, 0, 0, .88889], 9129: [.90001, 0, 0, 0, .88889], 9130: [0, .3, 0, 0, .88889], 9131: [1e-5, .9, 0, 0, .88889], 9132: [.65002, 1.15, 0, 0, .88889], 9133: [.90001, 0, 0, 0, .88889], 9143: [.88502, .915, 0, 0, 1.05556], 10216: [1.25003, 1.75, 0, 0, .80556], 10217: [1.25003, 1.75, 0, 0, .80556], 57344: [-.00499, .605, 0, 0, 1.05556], 57345: [-.00499, .605, 0, 0, 1.05556], 57680: [0, .12, 0, 0, .45], 57681: [0, .12, 0, 0, .45], 57682: [0, .12, 0, 0, .45], 57683: [0, .12, 0, 0, .45] }, "Typewriter-Regular": { 32: [0, 0, 0, 0, .525], 33: [0, .61111, 0, 0, .525], 34: [0, .61111, 0, 0, .525], 35: [0, .61111, 0, 0, .525], 36: [.08333, .69444, 0, 0, .525], 37: [.08333, .69444, 0, 0, .525], 38: [0, .61111, 0, 0, .525], 39: [0, .61111, 0, 0, .525], 40: [.08333, .69444, 0, 0, .525], 41: [.08333, .69444, 0, 0, .525], 42: [0, .52083, 0, 0, .525], 43: [-.08056, .53055, 0, 0, .525], 44: [.13889, .125, 0, 0, .525], 45: [-.08056, .53055, 0, 0, .525], 46: [0, .125, 0, 0, .525], 47: [.08333, .69444, 0, 0, .525], 48: [0, .61111, 0, 0, .525], 49: [0, .61111, 0, 0, .525], 50: [0, .61111, 0, 0, .525], 51: [0, .61111, 0, 0, .525], 52: [0, .61111, 0, 0, .525], 53: [0, .61111, 0, 0, .525], 54: [0, .61111, 0, 0, .525], 55: [0, .61111, 0, 0, .525], 56: [0, .61111, 0, 0, .525], 57: [0, .61111, 0, 0, .525], 58: [0, .43056, 0, 0, .525], 59: [.13889, .43056, 0, 0, .525], 60: [-.05556, .55556, 0, 0, .525], 61: [-.19549, .41562, 0, 0, .525], 62: [-.05556, .55556, 0, 0, .525], 63: [0, .61111, 0, 0, .525], 64: [0, .61111, 0, 0, .525], 65: [0, .61111, 0, 0, .525], 66: [0, .61111, 0, 0, .525], 67: [0, .61111, 0, 0, .525], 68: [0, .61111, 0, 0, .525], 69: [0, .61111, 0, 0, .525], 70: [0, .61111, 0, 0, .525], 71: [0, .61111, 0, 0, .525], 72: [0, .61111, 0, 0, .525], 73: [0, .61111, 0, 0, .525], 74: [0, .61111, 0, 0, .525], 75: [0, .61111, 0, 0, .525], 76: [0, .61111, 0, 0, .525], 77: [0, .61111, 0, 0, .525], 78: [0, .61111, 0, 0, .525], 79: [0, .61111, 0, 0, .525], 80: [0, .61111, 0, 0, .525], 81: [.13889, .61111, 0, 0, .525], 82: [0, .61111, 0, 0, .525], 83: [0, .61111, 0, 0, .525], 84: [0, .61111, 0, 0, .525], 85: [0, .61111, 0, 0, .525], 86: [0, .61111, 0, 0, .525], 87: [0, .61111, 0, 0, .525], 88: [0, .61111, 0, 0, .525], 89: [0, .61111, 0, 0, .525], 90: [0, .61111, 0, 0, .525], 91: [.08333, .69444, 0, 0, .525], 92: [.08333, .69444, 0, 0, .525], 93: [.08333, .69444, 0, 0, .525], 94: [0, .61111, 0, 0, .525], 95: [.09514, 0, 0, 0, .525], 96: [0, .61111, 0, 0, .525], 97: [0, .43056, 0, 0, .525], 98: [0, .61111, 0, 0, .525], 99: [0, .43056, 0, 0, .525], 100: [0, .61111, 0, 0, .525], 101: [0, .43056, 0, 0, .525], 102: [0, .61111, 0, 0, .525], 103: [.22222, .43056, 0, 0, .525], 104: [0, .61111, 0, 0, .525], 105: [0, .61111, 0, 0, .525], 106: [.22222, .61111, 0, 0, .525], 107: [0, .61111, 0, 0, .525], 108: [0, .61111, 0, 0, .525], 109: [0, .43056, 0, 0, .525], 110: [0, .43056, 0, 0, .525], 111: [0, .43056, 0, 0, .525], 112: [.22222, .43056, 0, 0, .525], 113: [.22222, .43056, 0, 0, .525], 114: [0, .43056, 0, 0, .525], 115: [0, .43056, 0, 0, .525], 116: [0, .55358, 0, 0, .525], 117: [0, .43056, 0, 0, .525], 118: [0, .43056, 0, 0, .525], 119: [0, .43056, 0, 0, .525], 120: [0, .43056, 0, 0, .525], 121: [.22222, .43056, 0, 0, .525], 122: [0, .43056, 0, 0, .525], 123: [.08333, .69444, 0, 0, .525], 124: [.08333, .69444, 0, 0, .525], 125: [.08333, .69444, 0, 0, .525], 126: [0, .61111, 0, 0, .525], 127: [0, .61111, 0, 0, .525], 160: [0, 0, 0, 0, .525], 176: [0, .61111, 0, 0, .525], 184: [.19445, 0, 0, 0, .525], 305: [0, .43056, 0, 0, .525], 567: [.22222, .43056, 0, 0, .525], 711: [0, .56597, 0, 0, .525], 713: [0, .56555, 0, 0, .525], 714: [0, .61111, 0, 0, .525], 715: [0, .61111, 0, 0, .525], 728: [0, .61111, 0, 0, .525], 730: [0, .61111, 0, 0, .525], 770: [0, .61111, 0, 0, .525], 771: [0, .61111, 0, 0, .525], 776: [0, .61111, 0, 0, .525], 915: [0, .61111, 0, 0, .525], 916: [0, .61111, 0, 0, .525], 920: [0, .61111, 0, 0, .525], 923: [0, .61111, 0, 0, .525], 926: [0, .61111, 0, 0, .525], 928: [0, .61111, 0, 0, .525], 931: [0, .61111, 0, 0, .525], 933: [0, .61111, 0, 0, .525], 934: [0, .61111, 0, 0, .525], 936: [0, .61111, 0, 0, .525], 937: [0, .61111, 0, 0, .525], 8216: [0, .61111, 0, 0, .525], 8217: [0, .61111, 0, 0, .525], 8242: [0, .61111, 0, 0, .525], 9251: [.11111, .21944, 0, 0, .525] } + }, ut = { slant: [.25, .25, .25], space: [0, 0, 0], stretch: [0, 0, 0], shrink: [0, 0, 0], xHeight: [.431, .431, .431], quad: [1, 1.171, 1.472], extraSpace: [0, 0, 0], num1: [.677, .732, .925], num2: [.394, .384, .387], num3: [.444, .471, .504], denom1: [.686, .752, 1.025], denom2: [.345, .344, .532], sup1: [.413, .503, .504], sup2: [.363, .431, .404], sup3: [.289, .286, .294], sub1: [.15, .143, .2], sub2: [.247, .286, .4], supDrop: [.386, .353, .494], subDrop: [.05, .071, .1], delim1: [2.39, 1.7, 1.98], delim2: [1.01, 1.157, 1.42], axisHeight: [.25, .25, .25], defaultRuleThickness: [.04, .049, .049], bigOpSpacing1: [.111, .111, .111], bigOpSpacing2: [.166, .166, .166], bigOpSpacing3: [.2, .2, .2], bigOpSpacing4: [.6, .611, .611], bigOpSpacing5: [.1, .143, .143], sqrtRuleThickness: [.04, .04, .04], ptPerEm: [10, 10, 10], doubleRuleSep: [.2, .2, .2], arrayRuleWidth: [.04, .04, .04], fboxsep: [.3, .3, .3], fboxrule: [.04, .04, .04] }, ht = { "\xc5": "A", "\xc7": "C", "\xd0": "D", "\xde": "o", "\xe5": "a", "\xe7": "c", "\xf0": "d", "\xfe": "o", "\u0410": "A", "\u0411": "B", "\u0412": "B", "\u0413": "F", "\u0414": "A", "\u0415": "E", "\u0416": "K", "\u0417": "3", "\u0418": "N", "\u0419": "N", "\u041a": "K", "\u041b": "N", "\u041c": "M", "\u041d": "H", "\u041e": "O", "\u041f": "N", "\u0420": "P", "\u0421": "C", "\u0422": "T", "\u0423": "y", "\u0424": "O", "\u0425": "X", "\u0426": "U", "\u0427": "h", "\u0428": "W", "\u0429": "W", "\u042a": "B", "\u042b": "X", "\u042c": "B", "\u042d": "3", "\u042e": "X", "\u042f": "R", "\u0430": "a", "\u0431": "b", "\u0432": "a", "\u0433": "r", "\u0434": "y", "\u0435": "e", "\u0436": "m", "\u0437": "e", "\u0438": "n", "\u0439": "n", "\u043a": "n", "\u043b": "n", "\u043c": "m", "\u043d": "n", "\u043e": "o", "\u043f": "n", "\u0440": "p", "\u0441": "c", "\u0442": "o", "\u0443": "y", "\u0444": "b", "\u0445": "x", "\u0446": "n", "\u0447": "n", "\u0448": "w", "\u0449": "w", "\u044a": "a", "\u044b": "m", "\u044c": "a", "\u044d": "e", "\u044e": "m", "\u044f": "r" }, dt = {}, mt = { bin: 1, close: 1, inner: 1, open: 1, punct: 1, rel: 1 }, pt = { "accent-token": 1, mathord: 1, "op-token": 1, spacing: 1, textord: 1 }, ft = { math: {}, text: {} }, gt = ft, vt = "main", yt = "ams", bt = "bin", xt = "mathord", wt = "op-token", kt = "rel"; o("math", vt, kt, "\u2261", "\\equiv", !0), o("math", vt, kt, "\u227a", "\\prec", !0), o("math", vt, kt, "\u227b", "\\succ", !0), o("math", vt, kt, "\u223c", "\\sim", !0), o("math", vt, kt, "\u22a5", "\\perp"), o("math", vt, kt, "\u2aaf", "\\preceq", !0), o("math", vt, kt, "\u2ab0", "\\succeq", !0), o("math", vt, kt, "\u2243", "\\simeq", !0), o("math", vt, kt, "\u2223", "\\mid", !0), o("math", vt, kt, "\u226a", "\\ll", !0), o("math", vt, kt, "\u226b", "\\gg", !0), o("math", vt, kt, "\u224d", "\\asymp", !0), o("math", vt, kt, "\u2225", "\\parallel"), o("math", vt, kt, "\u22c8", "\\bowtie", !0), o("math", vt, kt, "\u2323", "\\smile", !0), o("math", vt, kt, "\u2291", "\\sqsubseteq", !0), o("math", vt, kt, "\u2292", "\\sqsupseteq", !0), o("math", vt, kt, "\u2250", "\\doteq", !0), o("math", vt, kt, "\u2322", "\\frown", !0), o("math", vt, kt, "\u220b", "\\ni", !0), o("math", vt, kt, "\u221d", "\\propto", !0), o("math", vt, kt, "\u22a2", "\\vdash", !0), o("math", vt, kt, "\u22a3", "\\dashv", !0), o("math", vt, kt, "\u220b", "\\owns"), o("math", vt, "punct", ".", "\\ldotp"), o("math", vt, "punct", "\u22c5", "\\cdotp"), o("math", vt, "textord", "#", "\\#"), o("text", vt, "textord", "#", "\\#"), o("math", vt, "textord", "&", "\\&"), o("text", vt, "textord", "&", "\\&"), o("math", vt, "textord", "\u2135", "\\aleph", !0), o("math", vt, "textord", "\u2200", "\\forall", !0), o("math", vt, "textord", "\u210f", "\\hbar", !0), o("math", vt, "textord", "\u2203", "\\exists", !0), o("math", vt, "textord", "\u2207", "\\nabla", !0), o("math", vt, "textord", "\u266d", "\\flat", !0), o("math", vt, "textord", "\u2113", "\\ell", !0), o("math", vt, "textord", "\u266e", "\\natural", !0), o("math", vt, "textord", "\u2663", "\\clubsuit", !0), o("math", vt, "textord", "\u2118", "\\wp", !0), o("math", vt, "textord", "\u266f", "\\sharp", !0), o("math", vt, "textord", "\u2662", "\\diamondsuit", !0), o("math", vt, "textord", "\u211c", "\\Re", !0), o("math", vt, "textord", "\u2661", "\\heartsuit", !0), o("math", vt, "textord", "\u2111", "\\Im", !0), o("math", vt, "textord", "\u2660", "\\spadesuit", !0), o("text", vt, "textord", "\xa7", "\\S", !0), o("text", vt, "textord", "\xb6", "\\P", !0), o("math", vt, "textord", "\u2020", "\\dag"), o("text", vt, "textord", "\u2020", "\\dag"), o("text", vt, "textord", "\u2020", "\\textdagger"), o("math", vt, "textord", "\u2021", "\\ddag"), o("text", vt, "textord", "\u2021", "\\ddag"), o("text", vt, "textord", "\u2021", "\\textdaggerdbl"), o("math", vt, "close", "\u23b1", "\\rmoustache", !0), o("math", vt, "open", "\u23b0", "\\lmoustache", !0), o("math", vt, "close", "\u27ef", "\\rgroup", !0), o("math", vt, "open", "\u27ee", "\\lgroup", !0), o("math", vt, bt, "\u2213", "\\mp", !0), + o("math", vt, bt, "\u2296", "\\ominus", !0), o("math", vt, bt, "\u228e", "\\uplus", !0), o("math", vt, bt, "\u2293", "\\sqcap", !0), o("math", vt, bt, "\u2217", "\\ast"), o("math", vt, bt, "\u2294", "\\sqcup", !0), o("math", vt, bt, "\u25ef", "\\bigcirc"), o("math", vt, bt, "\u2219", "\\bullet"), o("math", vt, bt, "\u2021", "\\ddagger"), o("math", vt, bt, "\u2240", "\\wr", !0), o("math", vt, bt, "\u2a3f", "\\amalg"), o("math", vt, bt, "&", "\\And"), o("math", vt, kt, "\u27f5", "\\longleftarrow", !0), o("math", vt, kt, "\u21d0", "\\Leftarrow", !0), o("math", vt, kt, "\u27f8", "\\Longleftarrow", !0), o("math", vt, kt, "\u27f6", "\\longrightarrow", !0), o("math", vt, kt, "\u21d2", "\\Rightarrow", !0), o("math", vt, kt, "\u27f9", "\\Longrightarrow", !0), o("math", vt, kt, "\u2194", "\\leftrightarrow", !0), o("math", vt, kt, "\u27f7", "\\longleftrightarrow", !0), o("math", vt, kt, "\u21d4", "\\Leftrightarrow", !0), o("math", vt, kt, "\u27fa", "\\Longleftrightarrow", !0), o("math", vt, kt, "\u21a6", "\\mapsto", !0), o("math", vt, kt, "\u27fc", "\\longmapsto", !0), o("math", vt, kt, "\u2197", "\\nearrow", !0), o("math", vt, kt, "\u21a9", "\\hookleftarrow", !0), o("math", vt, kt, "\u21aa", "\\hookrightarrow", !0), o("math", vt, kt, "\u2198", "\\searrow", !0), o("math", vt, kt, "\u21bc", "\\leftharpoonup", !0), o("math", vt, kt, "\u21c0", "\\rightharpoonup", !0), o("math", vt, kt, "\u2199", "\\swarrow", !0), o("math", vt, kt, "\u21bd", "\\leftharpoondown", !0), o("math", vt, kt, "\u21c1", "\\rightharpoondown", !0), o("math", vt, kt, "\u2196", "\\nwarrow", !0), o("math", vt, kt, "\u21cc", "\\rightleftharpoons", !0), o("math", yt, kt, "\u226e", "\\nless", !0), o("math", yt, kt, "\ue010", "\\@nleqslant"), o("math", yt, kt, "\ue011", "\\@nleqq"), o("math", yt, kt, "\u2a87", "\\lneq", !0), o("math", yt, kt, "\u2268", "\\lneqq", !0), o("math", yt, kt, "\ue00c", "\\@lvertneqq"), o("math", yt, kt, "\u22e6", "\\lnsim", !0), o("math", yt, kt, "\u2a89", "\\lnapprox", !0), o("math", yt, kt, "\u2280", "\\nprec", !0), o("math", yt, kt, "\u22e0", "\\npreceq", !0), o("math", yt, kt, "\u22e8", "\\precnsim", !0), o("math", yt, kt, "\u2ab9", "\\precnapprox", !0), o("math", yt, kt, "\u2241", "\\nsim", !0), o("math", yt, kt, "\ue006", "\\@nshortmid"), o("math", yt, kt, "\u2224", "\\nmid", !0), o("math", yt, kt, "\u22ac", "\\nvdash", !0), o("math", yt, kt, "\u22ad", "\\nvDash", !0), o("math", yt, kt, "\u22ea", "\\ntriangleleft"), o("math", yt, kt, "\u22ec", "\\ntrianglelefteq", !0), o("math", yt, kt, "\u228a", "\\subsetneq", !0), o("math", yt, kt, "\ue01a", "\\@varsubsetneq"), o("math", yt, kt, "\u2acb", "\\subsetneqq", !0), o("math", yt, kt, "\ue017", "\\@varsubsetneqq"), o("math", yt, kt, "\u226f", "\\ngtr", !0), o("math", yt, kt, "\ue00f", "\\@ngeqslant"), o("math", yt, kt, "\ue00e", "\\@ngeqq"), o("math", yt, kt, "\u2a88", "\\gneq", !0), o("math", yt, kt, "\u2269", "\\gneqq", !0), o("math", yt, kt, "\ue00d", "\\@gvertneqq"), o("math", yt, kt, "\u22e7", "\\gnsim", !0), o("math", yt, kt, "\u2a8a", "\\gnapprox", !0), o("math", yt, kt, "\u2281", "\\nsucc", !0), o("math", yt, kt, "\u22e1", "\\nsucceq", !0), o("math", yt, kt, "\u22e9", "\\succnsim", !0), o("math", yt, kt, "\u2aba", "\\succnapprox", !0), o("math", yt, kt, "\u2246", "\\ncong", !0), o("math", yt, kt, "\ue007", "\\@nshortparallel"), o("math", yt, kt, "\u2226", "\\nparallel", !0), o("math", yt, kt, "\u22af", "\\nVDash", !0), o("math", yt, kt, "\u22eb", "\\ntriangleright"), o("math", yt, kt, "\u22ed", "\\ntrianglerighteq", !0), o("math", yt, kt, "\ue018", "\\@nsupseteqq"), o("math", yt, kt, "\u228b", "\\supsetneq", !0), o("math", yt, kt, "\ue01b", "\\@varsupsetneq"), o("math", yt, kt, "\u2acc", "\\supsetneqq", !0), o("math", yt, kt, "\ue019", "\\@varsupsetneqq"), o("math", yt, kt, "\u22ae", "\\nVdash", !0), o("math", yt, kt, "\u2ab5", "\\precneqq", !0), o("math", yt, kt, "\u2ab6", "\\succneqq", !0), o("math", yt, kt, "\ue016", "\\@nsubseteqq"), o("math", yt, bt, "\u22b4", "\\unlhd"), o("math", yt, bt, "\u22b5", "\\unrhd"), o("math", yt, kt, "\u219a", "\\nleftarrow", !0), o("math", yt, kt, "\u219b", "\\nrightarrow", !0), o("math", yt, kt, "\u21cd", "\\nLeftarrow", !0), o("math", yt, kt, "\u21cf", "\\nRightarrow", !0), o("math", yt, kt, "\u21ae", "\\nleftrightarrow", !0), o("math", yt, kt, "\u21ce", "\\nLeftrightarrow", !0), o("math", yt, kt, "\u25b3", "\\vartriangle"), o("math", yt, "textord", "\u210f", "\\hslash"), o("math", yt, "textord", "\u25bd", "\\triangledown"), o("math", yt, "textord", "\u25ca", "\\lozenge"), o("math", yt, "textord", "\u24c8", "\\circledS"), o("math", yt, "textord", "\xae", "\\circledR"), o("text", yt, "textord", "\xae", "\\circledR"), o("math", yt, "textord", "\u2221", "\\measuredangle", !0), o("math", yt, "textord", "\u2204", "\\nexists"), o("math", yt, "textord", "\u2127", "\\mho"), o("math", yt, "textord", "\u2132", "\\Finv", !0), o("math", yt, "textord", "\u2141", "\\Game", !0), o("math", yt, "textord", "\u2035", "\\backprime"), o("math", yt, "textord", "\u25b2", "\\blacktriangle"), o("math", yt, "textord", "\u25bc", "\\blacktriangledown"), o("math", yt, "textord", "\u25a0", "\\blacksquare"), o("math", yt, "textord", "\u29eb", "\\blacklozenge"), o("math", yt, "textord", "\u2605", "\\bigstar"), o("math", yt, "textord", "\u2222", "\\sphericalangle", !0), o("math", yt, "textord", "\u2201", "\\complement", !0), o("math", yt, "textord", "\xf0", "\\eth", !0), o("math", yt, "textord", "\u2571", "\\diagup"), o("math", yt, "textord", "\u2572", "\\diagdown"), o("math", yt, "textord", "\u25a1", "\\square"), o("math", yt, "textord", "\u25a1", "\\Box"), o("math", yt, "textord", "\u25ca", "\\Diamond"), o("math", yt, "textord", "\xa5", "\\yen", !0), o("text", yt, "textord", "\xa5", "\\yen", !0), o("math", yt, "textord", "\u2713", "\\checkmark", !0), o("text", yt, "textord", "\u2713", "\\checkmark"), o("math", yt, "textord", "\u2136", "\\beth", !0), o("math", yt, "textord", "\u2138", "\\daleth", !0), o("math", yt, "textord", "\u2137", "\\gimel", !0), o("math", yt, "textord", "\u03dd", "\\digamma", !0), o("math", yt, "textord", "\u03f0", "\\varkappa"), o("math", yt, "open", "\u250c", "\\ulcorner", !0), o("math", yt, "close", "\u2510", "\\urcorner", !0), o("math", yt, "open", "\u2514", "\\llcorner", !0), o("math", yt, "close", "\u2518", "\\lrcorner", !0), o("math", yt, kt, "\u2266", "\\leqq", !0), o("math", yt, kt, "\u2a7d", "\\leqslant", !0), o("math", yt, kt, "\u2a95", "\\eqslantless", !0), o("math", yt, kt, "\u2272", "\\lesssim", !0), o("math", yt, kt, "\u2a85", "\\lessapprox", !0), o("math", yt, kt, "\u224a", "\\approxeq", !0), o("math", yt, bt, "\u22d6", "\\lessdot"), o("math", yt, kt, "\u22d8", "\\lll", !0), o("math", yt, kt, "\u2276", "\\lessgtr", !0), o("math", yt, kt, "\u22da", "\\lesseqgtr", !0), o("math", yt, kt, "\u2a8b", "\\lesseqqgtr", !0), o("math", yt, kt, "\u2251", "\\doteqdot"), o("math", yt, kt, "\u2253", "\\risingdotseq", !0), o("math", yt, kt, "\u2252", "\\fallingdotseq", !0), o("math", yt, kt, "\u223d", "\\backsim", !0), o("math", yt, kt, "\u22cd", "\\backsimeq", !0), o("math", yt, kt, "\u2ac5", "\\subseteqq", !0), o("math", yt, kt, "\u22d0", "\\Subset", !0), o("math", yt, kt, "\u228f", "\\sqsubset", !0), o("math", yt, kt, "\u227c", "\\preccurlyeq", !0), o("math", yt, kt, "\u22de", "\\curlyeqprec", !0), o("math", yt, kt, "\u227e", "\\precsim", !0), o("math", yt, kt, "\u2ab7", "\\precapprox", !0), o("math", yt, kt, "\u22b2", "\\vartriangleleft"), o("math", yt, kt, "\u22b4", "\\trianglelefteq"), o("math", yt, kt, "\u22a8", "\\vDash", !0), o("math", yt, kt, "\u22aa", "\\Vvdash", !0), o("math", yt, kt, "\u2323", "\\smallsmile"), o("math", yt, kt, "\u2322", "\\smallfrown"), o("math", yt, kt, "\u224f", "\\bumpeq", !0), o("math", yt, kt, "\u224e", "\\Bumpeq", !0), o("math", yt, kt, "\u2267", "\\geqq", !0), o("math", yt, kt, "\u2a7e", "\\geqslant", !0), o("math", yt, kt, "\u2a96", "\\eqslantgtr", !0), o("math", yt, kt, "\u2273", "\\gtrsim", !0), o("math", yt, kt, "\u2a86", "\\gtrapprox", !0), o("math", yt, bt, "\u22d7", "\\gtrdot"), o("math", yt, kt, "\u22d9", "\\ggg", !0), o("math", yt, kt, "\u2277", "\\gtrless", !0), o("math", yt, kt, "\u22db", "\\gtreqless", !0), o("math", yt, kt, "\u2a8c", "\\gtreqqless", !0), o("math", yt, kt, "\u2256", "\\eqcirc", !0), o("math", yt, kt, "\u2257", "\\circeq", !0), o("math", yt, kt, "\u225c", "\\triangleq", !0), o("math", yt, kt, "\u223c", "\\thicksim"), o("math", yt, kt, "\u2248", "\\thickapprox"), o("math", yt, kt, "\u2ac6", "\\supseteqq", !0), o("math", yt, kt, "\u22d1", "\\Supset", !0), o("math", yt, kt, "\u2290", "\\sqsupset", !0), o("math", yt, kt, "\u227d", "\\succcurlyeq", !0), o("math", yt, kt, "\u22df", "\\curlyeqsucc", !0), o("math", yt, kt, "\u227f", "\\succsim", !0), o("math", yt, kt, "\u2ab8", "\\succapprox", !0), o("math", yt, kt, "\u22b3", "\\vartriangleright"), o("math", yt, kt, "\u22b5", "\\trianglerighteq"), o("math", yt, kt, "\u22a9", "\\Vdash", !0), o("math", yt, kt, "\u2223", "\\shortmid"), o("math", yt, kt, "\u2225", "\\shortparallel"), o("math", yt, kt, "\u226c", "\\between", !0), o("math", yt, kt, "\u22d4", "\\pitchfork", !0), o("math", yt, kt, "\u221d", "\\varpropto"), o("math", yt, kt, "\u25c0", "\\blacktriangleleft"), o("math", yt, kt, "\u2234", "\\therefore", !0), o("math", yt, kt, "\u220d", "\\backepsilon"), o("math", yt, kt, "\u25b6", "\\blacktriangleright"), o("math", yt, kt, "\u2235", "\\because", !0), o("math", yt, kt, "\u22d8", "\\llless"), o("math", yt, kt, "\u22d9", "\\gggtr"), o("math", yt, bt, "\u22b2", "\\lhd"), o("math", yt, bt, "\u22b3", "\\rhd"), o("math", yt, kt, "\u2242", "\\eqsim", !0), o("math", vt, kt, "\u22c8", "\\Join"), o("math", yt, kt, "\u2251", "\\Doteq", !0), o("math", yt, bt, "\u2214", "\\dotplus", !0), o("math", yt, bt, "\u2216", "\\smallsetminus"), o("math", yt, bt, "\u22d2", "\\Cap", !0), o("math", yt, bt, "\u22d3", "\\Cup", !0), o("math", yt, bt, "\u2a5e", "\\doublebarwedge", !0), o("math", yt, bt, "\u229f", "\\boxminus", !0), o("math", yt, bt, "\u229e", "\\boxplus", !0), o("math", yt, bt, "\u22c7", "\\divideontimes", !0), o("math", yt, bt, "\u22c9", "\\ltimes", !0), o("math", yt, bt, "\u22ca", "\\rtimes", !0), o("math", yt, bt, "\u22cb", "\\leftthreetimes", !0), o("math", yt, bt, "\u22cc", "\\rightthreetimes", !0), o("math", yt, bt, "\u22cf", "\\curlywedge", !0), o("math", yt, bt, "\u22ce", "\\curlyvee", !0), o("math", yt, bt, "\u229d", "\\circleddash", !0), o("math", yt, bt, "\u229b", "\\circledast", !0), o("math", yt, bt, "\u22c5", "\\centerdot"), o("math", yt, bt, "\u22ba", "\\intercal", !0), o("math", yt, bt, "\u22d2", "\\doublecap"), o("math", yt, bt, "\u22d3", "\\doublecup"), o("math", yt, bt, "\u22a0", "\\boxtimes", !0), o("math", yt, kt, "\u21e2", "\\dashrightarrow", !0), o("math", yt, kt, "\u21e0", "\\dashleftarrow", !0), o("math", yt, kt, "\u21c7", "\\leftleftarrows", !0), o("math", yt, kt, "\u21c6", "\\leftrightarrows", !0), o("math", yt, kt, "\u21da", "\\Lleftarrow", !0), o("math", yt, kt, "\u219e", "\\twoheadleftarrow", !0), o("math", yt, kt, "\u21a2", "\\leftarrowtail", !0), o("math", yt, kt, "\u21ab", "\\looparrowleft", !0), o("math", yt, kt, "\u21cb", "\\leftrightharpoons", !0), o("math", yt, kt, "\u21b6", "\\curvearrowleft", !0), o("math", yt, kt, "\u21ba", "\\circlearrowleft", !0), o("math", yt, kt, "\u21b0", "\\Lsh", !0), o("math", yt, kt, "\u21c8", "\\upuparrows", !0), o("math", yt, kt, "\u21bf", "\\upharpoonleft", !0), o("math", yt, kt, "\u21c3", "\\downharpoonleft", !0), o("math", yt, kt, "\u22b8", "\\multimap", !0), o("math", yt, kt, "\u21ad", "\\leftrightsquigarrow", !0), o("math", yt, kt, "\u21c9", "\\rightrightarrows", !0), o("math", yt, kt, "\u21c4", "\\rightleftarrows", !0), o("math", yt, kt, "\u21a0", "\\twoheadrightarrow", !0), o("math", yt, kt, "\u21a3", "\\rightarrowtail", !0), o("math", yt, kt, "\u21ac", "\\looparrowright", !0), o("math", yt, kt, "\u21b7", "\\curvearrowright", !0), o("math", yt, kt, "\u21bb", "\\circlearrowright", !0), o("math", yt, kt, "\u21b1", "\\Rsh", !0), o("math", yt, kt, "\u21ca", "\\downdownarrows", !0), o("math", yt, kt, "\u21be", "\\upharpoonright", !0), o("math", yt, kt, "\u21c2", "\\downharpoonright", !0), o("math", yt, kt, "\u21dd", "\\rightsquigarrow", !0), o("math", yt, kt, "\u21dd", "\\leadsto"), o("math", yt, kt, "\u21db", "\\Rrightarrow", !0), o("math", yt, kt, "\u21be", "\\restriction"), o("math", vt, "textord", "\u2018", "`"), o("math", vt, "textord", "$", "\\$"), o("text", vt, "textord", "$", "\\$"), o("text", vt, "textord", "$", "\\textdollar"), o("math", vt, "textord", "%", "\\%"), o("text", vt, "textord", "%", "\\%"), o("math", vt, "textord", "_", "\\_"), o("text", vt, "textord", "_", "\\_"), o("text", vt, "textord", "_", "\\textunderscore"), o("math", vt, "textord", "\u2220", "\\angle", !0), o("math", vt, "textord", "\u221e", "\\infty", !0), o("math", vt, "textord", "\u2032", "\\prime"), o("math", vt, "textord", "\u25b3", "\\triangle"), o("math", vt, "textord", "\u0393", "\\Gamma", !0), o("math", vt, "textord", "\u0394", "\\Delta", !0), o("math", vt, "textord", "\u0398", "\\Theta", !0), o("math", vt, "textord", "\u039b", "\\Lambda", !0), o("math", vt, "textord", "\u039e", "\\Xi", !0), o("math", vt, "textord", "\u03a0", "\\Pi", !0), o("math", vt, "textord", "\u03a3", "\\Sigma", !0), o("math", vt, "textord", "\u03a5", "\\Upsilon", !0), o("math", vt, "textord", "\u03a6", "\\Phi", !0), o("math", vt, "textord", "\u03a8", "\\Psi", !0), o("math", vt, "textord", "\u03a9", "\\Omega", !0), o("math", vt, "textord", "A", "\u0391"), o("math", vt, "textord", "B", "\u0392"), o("math", vt, "textord", "E", "\u0395"), o("math", vt, "textord", "Z", "\u0396"), o("math", vt, "textord", "H", "\u0397"), o("math", vt, "textord", "I", "\u0399"), o("math", vt, "textord", "K", "\u039a"), o("math", vt, "textord", "M", "\u039c"), o("math", vt, "textord", "N", "\u039d"), o("math", vt, "textord", "O", "\u039f"), o("math", vt, "textord", "P", "\u03a1"), o("math", vt, "textord", "T", "\u03a4"), o("math", vt, "textord", "X", "\u03a7"), o("math", vt, "textord", "\xac", "\\neg", !0), o("math", vt, "textord", "\xac", "\\lnot"), o("math", vt, "textord", "\u22a4", "\\top"), o("math", vt, "textord", "\u22a5", "\\bot"), o("math", vt, "textord", "\u2205", "\\emptyset"), o("math", yt, "textord", "\u2205", "\\varnothing"), o("math", vt, xt, "\u03b1", "\\alpha", !0), o("math", vt, xt, "\u03b2", "\\beta", !0), o("math", vt, xt, "\u03b3", "\\gamma", !0), o("math", vt, xt, "\u03b4", "\\delta", !0), o("math", vt, xt, "\u03f5", "\\epsilon", !0), o("math", vt, xt, "\u03b6", "\\zeta", !0), o("math", vt, xt, "\u03b7", "\\eta", !0), o("math", vt, xt, "\u03b8", "\\theta", !0), o("math", vt, xt, "\u03b9", "\\iota", !0), o("math", vt, xt, "\u03ba", "\\kappa", !0), o("math", vt, xt, "\u03bb", "\\lambda", !0), o("math", vt, xt, "\u03bc", "\\mu", !0), o("math", vt, xt, "\u03bd", "\\nu", !0), o("math", vt, xt, "\u03be", "\\xi", !0), o("math", vt, xt, "\u03bf", "\\omicron", !0), o("math", vt, xt, "\u03c0", "\\pi", !0), o("math", vt, xt, "\u03c1", "\\rho", !0), o("math", vt, xt, "\u03c3", "\\sigma", !0), o("math", vt, xt, "\u03c4", "\\tau", !0), o("math", vt, xt, "\u03c5", "\\upsilon", !0), o("math", vt, xt, "\u03d5", "\\phi", !0), o("math", vt, xt, "\u03c7", "\\chi", !0), o("math", vt, xt, "\u03c8", "\\psi", !0), o("math", vt, xt, "\u03c9", "\\omega", !0), o("math", vt, xt, "\u03b5", "\\varepsilon", !0), o("math", vt, xt, "\u03d1", "\\vartheta", !0), o("math", vt, xt, "\u03d6", "\\varpi", !0), o("math", vt, xt, "\u03f1", "\\varrho", !0), o("math", vt, xt, "\u03c2", "\\varsigma", !0), o("math", vt, xt, "\u03c6", "\\varphi", !0), o("math", vt, bt, "\u2217", "*"), o("math", vt, bt, "+", "+"), o("math", vt, bt, "\u2212", "-"), o("math", vt, bt, "\u22c5", "\\cdot", !0), o("math", vt, bt, "\u2218", "\\circ"), o("math", vt, bt, "\xf7", "\\div", !0), o("math", vt, bt, "\xb1", "\\pm", !0), o("math", vt, bt, "\xd7", "\\times", !0), o("math", vt, bt, "\u2229", "\\cap", !0), o("math", vt, bt, "\u222a", "\\cup", !0), o("math", vt, bt, "\u2216", "\\setminus"), o("math", vt, bt, "\u2227", "\\land"), o("math", vt, bt, "\u2228", "\\lor"), o("math", vt, bt, "\u2227", "\\wedge", !0), o("math", vt, bt, "\u2228", "\\vee", !0), o("math", vt, "textord", "\u221a", "\\surd"), o("math", vt, "open", "(", "("), o("math", vt, "open", "[", "["), o("math", vt, "open", "\u27e8", "\\langle", !0), o("math", vt, "open", "\u2223", "\\lvert"), o("math", vt, "open", "\u2225", "\\lVert"), o("math", vt, "close", ")", ")"), o("math", vt, "close", "]", "]"), o("math", vt, "close", "?", "?"), o("math", vt, "close", "!", "!"), o("math", vt, "close", "\u27e9", "\\rangle", !0), o("math", vt, "close", "\u2223", "\\rvert"), o("math", vt, "close", "\u2225", "\\rVert"), o("math", vt, kt, "=", "="), o("math", vt, kt, "<", "<"), o("math", vt, kt, ">", ">"), o("math", vt, kt, ":", ":"), o("math", vt, kt, "\u2248", "\\approx", !0), o("math", vt, kt, "\u2245", "\\cong", !0), o("math", vt, kt, "\u2265", "\\ge"), o("math", vt, kt, "\u2265", "\\geq", !0), o("math", vt, kt, "\u2190", "\\gets"), o("math", vt, kt, ">", "\\gt"), o("math", vt, kt, "\u2208", "\\in", !0), o("math", vt, kt, "\ue020", "\\@not"), o("math", vt, kt, "\u2282", "\\subset", !0), o("math", vt, kt, "\u2283", "\\supset", !0), o("math", vt, kt, "\u2286", "\\subseteq", !0), o("math", vt, kt, "\u2287", "\\supseteq", !0), o("math", yt, kt, "\u2288", "\\nsubseteq", !0), o("math", yt, kt, "\u2289", "\\nsupseteq", !0), o("math", vt, kt, "\u22a8", "\\models"), o("math", vt, kt, "\u2190", "\\leftarrow", !0), o("math", vt, kt, "\u2264", "\\le"), o("math", vt, kt, "\u2264", "\\leq", !0), o("math", vt, kt, "<", "\\lt"), o("math", vt, kt, "\u2192", "\\rightarrow", !0), o("math", vt, kt, "\u2192", "\\to"), o("math", yt, kt, "\u2271", "\\ngeq", !0), o("math", yt, kt, "\u2270", "\\nleq", !0), o("math", vt, "spacing", "\xa0", "\\ "), o("math", vt, "spacing", "\xa0", "~"), o("math", vt, "spacing", "\xa0", "\\space"), o("math", vt, "spacing", "\xa0", "\\nobreakspace"), o("text", vt, "spacing", "\xa0", "\\ "), o("text", vt, "spacing", "\xa0", "~"), o("text", vt, "spacing", "\xa0", "\\space"), o("text", vt, "spacing", "\xa0", "\\nobreakspace"), o("math", vt, "spacing", null, "\\nobreak"), o("math", vt, "spacing", null, "\\allowbreak"), o("math", vt, "punct", ",", ","), o("math", vt, "punct", ";", ";"), o("math", yt, bt, "\u22bc", "\\barwedge", !0), o("math", yt, bt, "\u22bb", "\\veebar", !0), o("math", vt, bt, "\u2299", "\\odot", !0), o("math", vt, bt, "\u2295", "\\oplus", !0), o("math", vt, bt, "\u2297", "\\otimes", !0), o("math", vt, "textord", "\u2202", "\\partial", !0), o("math", vt, bt, "\u2298", "\\oslash", !0), o("math", yt, bt, "\u229a", "\\circledcirc", !0), o("math", yt, bt, "\u22a1", "\\boxdot", !0), o("math", vt, bt, "\u25b3", "\\bigtriangleup"), o("math", vt, bt, "\u25bd", "\\bigtriangledown"), o("math", vt, bt, "\u2020", "\\dagger"), o("math", vt, bt, "\u22c4", "\\diamond"), o("math", vt, bt, "\u22c6", "\\star"), o("math", vt, bt, "\u25c3", "\\triangleleft"), o("math", vt, bt, "\u25b9", "\\triangleright"), o("math", vt, "open", "{", "\\{"), o("text", vt, "textord", "{", "\\{"), o("text", vt, "textord", "{", "\\textbraceleft"), o("math", vt, "close", "}", "\\}"), o("text", vt, "textord", "}", "\\}"), o("text", vt, "textord", "}", "\\textbraceright"), o("math", vt, "open", "{", "\\lbrace"), o("math", vt, "close", "}", "\\rbrace"), o("math", vt, "open", "[", "\\lbrack"), o("text", vt, "textord", "[", "\\lbrack"), o("math", vt, "close", "]", "\\rbrack"), o("text", vt, "textord", "]", "\\rbrack"), o("math", vt, "open", "(", "\\lparen"), o("math", vt, "close", ")", "\\rparen"), o("text", vt, "textord", "<", "\\textless"), o("text", vt, "textord", ">", "\\textgreater"), o("math", vt, "open", "\u230a", "\\lfloor", !0), o("math", vt, "close", "\u230b", "\\rfloor", !0), o("math", vt, "open", "\u2308", "\\lceil", !0), o("math", vt, "close", "\u2309", "\\rceil", !0), o("math", vt, "textord", "\\", "\\backslash"), o("math", vt, "textord", "\u2223", "|"), o("math", vt, "textord", "\u2223", "\\vert"), o("text", vt, "textord", "|", "\\textbar"), o("math", vt, "textord", "\u2225", "\\|"), o("math", vt, "textord", "\u2225", "\\Vert"), o("text", vt, "textord", "\u2225", "\\textbardbl"), o("text", vt, "textord", "~", "\\textasciitilde"), o("text", vt, "textord", "\\", "\\textbackslash"), o("text", vt, "textord", "^", "\\textasciicircum"), o("math", vt, kt, "\u2191", "\\uparrow", !0), o("math", vt, kt, "\u21d1", "\\Uparrow", !0), o("math", vt, kt, "\u2193", "\\downarrow", !0), o("math", vt, kt, "\u21d3", "\\Downarrow", !0), o("math", vt, kt, "\u2195", "\\updownarrow", !0), o("math", vt, kt, "\u21d5", "\\Updownarrow", !0), o("math", vt, wt, "\u2210", "\\coprod"), o("math", vt, wt, "\u22c1", "\\bigvee"), o("math", vt, wt, "\u22c0", "\\bigwedge"), o("math", vt, wt, "\u2a04", "\\biguplus"), o("math", vt, wt, "\u22c2", "\\bigcap"), o("math", vt, wt, "\u22c3", "\\bigcup"), o("math", vt, wt, "\u222b", "\\int"), o("math", vt, wt, "\u222b", "\\intop"), o("math", vt, wt, "\u222c", "\\iint"), o("math", vt, wt, "\u222d", "\\iiint"), o("math", vt, wt, "\u220f", "\\prod"), o("math", vt, wt, "\u2211", "\\sum"), o("math", vt, wt, "\u2a02", "\\bigotimes"), o("math", vt, wt, "\u2a01", "\\bigoplus"), o("math", vt, wt, "\u2a00", "\\bigodot"), o("math", vt, wt, "\u222e", "\\oint"), o("math", vt, wt, "\u222f", "\\oiint"), o("math", vt, wt, "\u2230", "\\oiiint"), o("math", vt, wt, "\u2a06", "\\bigsqcup"), o("math", vt, wt, "\u222b", "\\smallint"), o("text", vt, "inner", "\u2026", "\\textellipsis"), o("math", vt, "inner", "\u2026", "\\mathellipsis"), o("text", vt, "inner", "\u2026", "\\ldots", !0), o("math", vt, "inner", "\u2026", "\\ldots", !0), o("math", vt, "inner", "\u22ef", "\\@cdots", !0), o("math", vt, "inner", "\u22f1", "\\ddots", !0), o("math", vt, "textord", "\u22ee", "\\varvdots"), o("math", vt, "accent-token", "\u02ca", "\\acute"), o("math", vt, "accent-token", "\u02cb", "\\grave"), o("math", vt, "accent-token", "\xa8", "\\ddot"), o("math", vt, "accent-token", "~", "\\tilde"), o("math", vt, "accent-token", "\u02c9", "\\bar"), o("math", vt, "accent-token", "\u02d8", "\\breve"), o("math", vt, "accent-token", "\u02c7", "\\check"), o("math", vt, "accent-token", "^", "\\hat"), o("math", vt, "accent-token", "\u20d7", "\\vec"), o("math", vt, "accent-token", "\u02d9", "\\dot"), o("math", vt, "accent-token", "\u02da", "\\mathring"), o("math", vt, xt, "\u0131", "\\imath", !0), o("math", vt, xt, "\u0237", "\\jmath", !0), o("text", vt, "textord", "\u0131", "\\i", !0), o("text", vt, "textord", "\u0237", "\\j", !0), o("text", vt, "textord", "\xdf", "\\ss", !0), o("text", vt, "textord", "\xe6", "\\ae", !0), o("text", vt, "textord", "\xe6", "\\ae", !0), o("text", vt, "textord", "\u0153", "\\oe", !0), o("text", vt, "textord", "\xf8", "\\o", !0), o("text", vt, "textord", "\xc6", "\\AE", !0), o("text", vt, "textord", "\u0152", "\\OE", !0), o("text", vt, "textord", "\xd8", "\\O", !0), o("text", vt, "accent-token", "\u02ca", "\\'"), o("text", vt, "accent-token", "\u02cb", "\\`"), o("text", vt, "accent-token", "\u02c6", "\\^"), o("text", vt, "accent-token", "\u02dc", "\\~"), o("text", vt, "accent-token", "\u02c9", "\\="), o("text", vt, "accent-token", "\u02d8", "\\u"), o("text", vt, "accent-token", "\u02d9", "\\."), o("text", vt, "accent-token", "\u02da", "\\r"), o("text", vt, "accent-token", "\u02c7", "\\v"), o("text", vt, "accent-token", "\xa8", '\\"'), o("text", vt, "accent-token", "\u02dd", "\\H"), o("text", vt, "accent-token", "\u25ef", "\\textcircled"); var St = { "--": !0, "---": !0, "``": !0, "''": !0 }; o("text", vt, "textord", "\u2013", "--"), o("text", vt, "textord", "\u2013", "\\textendash"), o("text", vt, "textord", "\u2014", "---"), o("text", vt, "textord", "\u2014", "\\textemdash"), o("text", vt, "textord", "\u2018", "`"), o("text", vt, "textord", "\u2018", "\\textquoteleft"), o("text", vt, "textord", "\u2019", "'"), o("text", vt, "textord", "\u2019", "\\textquoteright"), o("text", vt, "textord", "\u201c", "``"), o("text", vt, "textord", "\u201c", "\\textquotedblleft"), o("text", vt, "textord", "\u201d", "''"), o("text", vt, "textord", "\u201d", "\\textquotedblright"), o("math", vt, "textord", "\xb0", "\\degree", !0), o("text", vt, "textord", "\xb0", "\\degree"), o("text", vt, "textord", "\xb0", "\\textdegree", !0), o("math", vt, xt, "\xa3", "\\pounds"), o("math", vt, xt, "\xa3", "\\mathsterling", !0), o("text", vt, xt, "\xa3", "\\pounds"), o("text", vt, xt, "\xa3", "\\textsterling", !0), o("math", yt, "textord", "\u2720", "\\maltese"), o("text", yt, "textord", "\u2720", "\\maltese"), o("text", vt, "spacing", "\xa0", "\\ "), o("text", vt, "spacing", "\xa0", " "), o("text", vt, "spacing", "\xa0", "~"); for (var At = 0; At < '0123456789/@."'.length; At++) { var Et = '0123456789/@."'.charAt(At); o("math", vt, "textord", Et, Et) } for (var Mt = 0; Mt < '0123456789!@*()-=+[]<>|";:?/.,'.length; Mt++) { var Rt = '0123456789!@*()-=+[]<>|";:?/.,'.charAt(Mt); o("text", vt, "textord", Rt, Rt) } for (var Tt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", Ct = 0; Ct < Tt.length; Ct++) { var Lt = Tt.charAt(Ct); o("math", vt, xt, Lt, Lt), o("text", vt, "textord", Lt, Lt) } o("math", yt, "textord", "C", "\u2102"), o("text", yt, "textord", "C", "\u2102"), o("math", yt, "textord", "H", "\u210d"), o("text", yt, "textord", "H", "\u210d"), o("math", yt, "textord", "N", "\u2115"), o("text", yt, "textord", "N", "\u2115"), o("math", yt, "textord", "P", "\u2119"), o("text", yt, "textord", "P", "\u2119"), o("math", yt, "textord", "Q", "\u211a"), o("text", yt, "textord", "Q", "\u211a"), o("math", yt, "textord", "R", "\u211d"), o("text", yt, "textord", "R", "\u211d"), o("math", yt, "textord", "Z", "\u2124"), o("text", yt, "textord", "Z", "\u2124"), o("math", vt, xt, "h", "\u210e"), o("text", vt, xt, "h", "\u210e"); for (var zt = "", Nt = 0; Nt < Tt.length; Nt++) { var Pt = Tt.charAt(Nt); o("math", vt, xt, Pt, zt = String.fromCharCode(55349, 56320 + Nt)), o("text", vt, "textord", Pt, zt), o("math", vt, xt, Pt, zt = String.fromCharCode(55349, 56372 + Nt)), o("text", vt, "textord", Pt, zt), o("math", vt, xt, Pt, zt = String.fromCharCode(55349, 56424 + Nt)), o("text", vt, "textord", Pt, zt), o("math", vt, xt, Pt, zt = String.fromCharCode(55349, 56580 + Nt)), o("text", vt, "textord", Pt, zt), o("math", vt, xt, Pt, zt = String.fromCharCode(55349, 56736 + Nt)), o("text", vt, "textord", Pt, zt), o("math", vt, xt, Pt, zt = String.fromCharCode(55349, 56788 + Nt)), o("text", vt, "textord", Pt, zt), o("math", vt, xt, Pt, zt = String.fromCharCode(55349, 56840 + Nt)), o("text", vt, "textord", Pt, zt), o("math", vt, xt, Pt, zt = String.fromCharCode(55349, 56944 + Nt)), o("text", vt, "textord", Pt, zt), Nt < 26 && (o("math", vt, xt, Pt, zt = String.fromCharCode(55349, 56632 + Nt)), o("text", vt, "textord", Pt, zt), o("math", vt, xt, Pt, zt = String.fromCharCode(55349, 56476 + Nt)), o("text", vt, "textord", Pt, zt)) } o("math", vt, xt, "k", zt = String.fromCharCode(55349, 56668)), o("text", vt, "textord", "k", zt); for (var It = 0; It < 10; It++) { var Ot = It.toString(); o("math", vt, xt, Ot, zt = String.fromCharCode(55349, 57294 + It)), o("text", vt, "textord", Ot, zt), o("math", vt, xt, Ot, zt = String.fromCharCode(55349, 57314 + It)), o("text", vt, "textord", Ot, zt), o("math", vt, xt, Ot, zt = String.fromCharCode(55349, 57324 + It)), o("text", vt, "textord", Ot, zt), o("math", vt, xt, Ot, zt = String.fromCharCode(55349, 57334 + It)), o("text", vt, "textord", Ot, zt) } for (var Bt = 0; Bt < "\xc7\xd0\xde\xe7\xfe".length; Bt++) { var qt = "\xc7\xd0\xde\xe7\xfe".charAt(Bt); o("math", vt, xt, qt, qt), o("text", vt, "textord", qt, qt) } o("text", vt, "textord", "\xf0", "\xf0"), o("text", vt, "textord", "\u2013", "\u2013"), o("text", vt, "textord", "\u2014", "\u2014"), o("text", vt, "textord", "\u2018", "\u2018"), o("text", vt, "textord", "\u2019", "\u2019"), o("text", vt, "textord", "\u201c", "\u201c"), o("text", vt, "textord", "\u201d", "\u201d"); var Dt = [["mathbf", "textbf", "Main-Bold"], ["mathbf", "textbf", "Main-Bold"], ["mathdefault", "textit", "Math-Italic"], ["mathdefault", "textit", "Math-Italic"], ["boldsymbol", "boldsymbol", "Main-BoldItalic"], ["boldsymbol", "boldsymbol", "Main-BoldItalic"], ["mathscr", "textscr", "Script-Regular"], ["", "", ""], ["", "", ""], ["", "", ""], ["mathfrak", "textfrak", "Fraktur-Regular"], ["mathfrak", "textfrak", "Fraktur-Regular"], ["mathbb", "textbb", "AMS-Regular"], ["mathbb", "textbb", "AMS-Regular"], ["", "", ""], ["", "", ""], ["mathsf", "textsf", "SansSerif-Regular"], ["mathsf", "textsf", "SansSerif-Regular"], ["mathboldsf", "textboldsf", "SansSerif-Bold"], ["mathboldsf", "textboldsf", "SansSerif-Bold"], ["mathitsf", "textitsf", "SansSerif-Italic"], ["mathitsf", "textitsf", "SansSerif-Italic"], ["", "", ""], ["", "", ""], ["mathtt", "texttt", "Typewriter-Regular"], ["mathtt", "texttt", "Typewriter-Regular"]], Ft = [["mathbf", "textbf", "Main-Bold"], ["", "", ""], ["mathsf", "textsf", "SansSerif-Regular"], ["mathboldsf", "textboldsf", "SansSerif-Bold"], ["mathtt", "texttt", "Typewriter-Regular"]], Ht = [[1, 1, 1], [2, 1, 1], [3, 1, 1], [4, 2, 1], [5, 2, 1], [6, 3, 1], [7, 4, 2], [8, 6, 3], [9, 7, 6], [10, 8, 7], [11, 10, 9]], jt = [.5, .6, .7, .8, .9, 1, 1.2, 1.44, 1.728, 2.074, 2.488], Ut = function (t, e) { return e.size < 2 ? t : Ht[t - 1][e.size - 1] }, _t = function () { function t(e) { this.style = void 0, this.color = void 0, this.size = void 0, this.textSize = void 0, this.phantom = void 0, this.font = void 0, this.fontFamily = void 0, this.fontWeight = void 0, this.fontShape = void 0, this.sizeMultiplier = void 0, this.maxSize = void 0, this.minRuleThickness = void 0, this._fontMetrics = void 0, this.style = e.style, this.color = e.color, this.size = e.size || t.BASESIZE, this.textSize = e.textSize || this.size, this.phantom = !!e.phantom, this.font = e.font || "", this.fontFamily = e.fontFamily || "", this.fontWeight = e.fontWeight || "", this.fontShape = e.fontShape || "", this.sizeMultiplier = jt[this.size - 1], this.maxSize = e.maxSize, this.minRuleThickness = e.minRuleThickness, this._fontMetrics = void 0 } var e = t.prototype; return e.extend = function (e) { var r = { style: this.style, size: this.size, textSize: this.textSize, color: this.color, phantom: this.phantom, font: this.font, fontFamily: this.fontFamily, fontWeight: this.fontWeight, fontShape: this.fontShape, maxSize: this.maxSize, minRuleThickness: this.minRuleThickness }; for (var n in e) e.hasOwnProperty(n) && (r[n] = e[n]); return new t(r) }, e.havingStyle = function (t) { return this.style === t ? this : this.extend({ style: t, size: Ut(this.textSize, t) }) }, e.havingCrampedStyle = function () { return this.havingStyle(this.style.cramp()) }, e.havingSize = function (t) { return this.size === t && this.textSize === t ? this : this.extend({ style: this.style.text(), size: t, textSize: t, sizeMultiplier: jt[t - 1] }) }, e.havingBaseStyle = function (e) { e = e || this.style.text(); var r = Ut(t.BASESIZE, e); return this.size === r && this.textSize === t.BASESIZE && this.style === e ? this : this.extend({ style: e, size: r }) }, e.havingBaseSizing = function () { var t; switch (this.style.id) { case 4: case 5: t = 3; break; case 6: case 7: t = 1; break; default: t = 6 }return this.extend({ style: this.style.text(), size: t }) }, e.withColor = function (t) { return this.extend({ color: t }) }, e.withPhantom = function () { return this.extend({ phantom: !0 }) }, e.withFont = function (t) { return this.extend({ font: t }) }, e.withTextFontFamily = function (t) { return this.extend({ fontFamily: t, font: "" }) }, e.withTextFontWeight = function (t) { return this.extend({ fontWeight: t, font: "" }) }, e.withTextFontShape = function (t) { return this.extend({ fontShape: t, font: "" }) }, e.sizingClasses = function (t) { return t.size !== this.size ? ["sizing", "reset-size" + t.size, "size" + this.size] : [] }, e.baseSizingClasses = function () { return this.size !== t.BASESIZE ? ["sizing", "reset-size" + this.size, "size" + t.BASESIZE] : [] }, e.fontMetrics = function () { return this._fontMetrics || (this._fontMetrics = function (t) { var e; if (!dt[e = t >= 5 ? 0 : t >= 3 ? 1 : 2]) { var r = dt[e] = { cssEmPerMu: ut.quad[e] / 18 }; for (var n in ut) ut.hasOwnProperty(n) && (r[n] = ut[n][e]) } return dt[e] }(this.size)), this._fontMetrics }, e.getColor = function () { return this.phantom ? "transparent" : this.color }, t }(); _t.BASESIZE = 6; var Vt = _t, Wt = { pt: 1, mm: 7227 / 2540, cm: 7227 / 254, "in": 72.27, bp: 1.00375, pc: 12, dd: 1238 / 1157, cc: 14856 / 1157, nd: 685 / 642, nc: 1370 / 107, sp: 1 / 65536, px: 1.00375 }, Gt = { ex: !0, em: !0, mu: !0 }, Yt = function (t) { return "string" != typeof t && (t = t.unit), t in Wt || t in Gt || "ex" === t }, Xt = function (t, e) { var r; if (t.unit in Wt) r = Wt[t.unit] / e.fontMetrics().ptPerEm / e.sizeMultiplier; else if ("mu" === t.unit) r = e.fontMetrics().cssEmPerMu; else { var n; if (n = e.style.isTight() ? e.havingStyle(e.style.text()) : e, "ex" === t.unit) r = n.fontMetrics().xHeight; else { if ("em" !== t.unit) throw new z("Invalid unit: '" + t.unit + "'"); r = n.fontMetrics().quad } n !== e && (r *= n.sizeMultiplier / e.sizeMultiplier) } return Math.min(t.number * r, e.maxSize) }, Kt = ["\\imath", "\u0131", "\\jmath", "\u0237", "\\pounds", "\\mathsterling", "\\textsterling", "\xa3"], $t = function (t, e, r) { return gt[r][t] && gt[r][t].replace && (t = gt[r][t].replace), { value: t, metrics: a(t, e, r) } }, Zt = function (t, e, r, n, i) { var a, o = $t(t, e, r), s = o.metrics; if (t = o.value, s) { var l = s.italic; ("text" === r || n && "mathit" === n.font) && (l = 0), a = new at(t, s.height, s.depth, l, s.skew, s.width, i) } else "undefined" != typeof console && console.warn("No character metrics for '" + t + "' in style '" + e + "' and mode '" + r + "'"), a = new at(t, 0, 0, 0, 0, 0, i); if (n) { a.maxFontSize = n.sizeMultiplier, n.style.isTight() && a.classes.push("mtight"); var c = n.getColor(); c && (a.style.color = c) } return a }, Jt = function (t, e) { if (Z(t.classes) !== Z(e.classes) || t.skew !== e.skew || t.maxFontSize !== e.maxFontSize) return !1; for (var r in t.style) if (t.style.hasOwnProperty(r) && t.style[r] !== e.style[r]) return !1; for (var n in e.style) if (e.style.hasOwnProperty(n) && t.style[n] !== e.style[n]) return !1; return !0 }, Qt = function (t) { for (var e = 0, r = 0, n = 0, i = 0; i < t.children.length; i++) { var a = t.children[i]; a.height > e && (e = a.height), a.depth > r && (r = a.depth), a.maxFontSize > n && (n = a.maxFontSize) } t.height = e, t.depth = r, t.maxFontSize = n }, te = function (t, e, r, n) { var i = new et(t, e, r, n); return Qt(i), i }, ee = function (t, e, r, n) { return new et(t, e, r, n) }, re = function (t) { var e = new $(t); return Qt(e), e }, ne = function (t, e, r) { var n = ""; switch (t) { case "amsrm": n = "AMS"; break; case "textrm": n = "Main"; break; case "textsf": n = "SansSerif"; break; case "texttt": n = "Typewriter"; break; default: n = t }return n + "-" + ("textbf" === e && "textit" === r ? "BoldItalic" : "textbf" === e ? "Bold" : "textit" === e ? "Italic" : "Regular") }, ie = { mathbf: { variant: "bold", fontName: "Main-Bold" }, mathrm: { variant: "normal", fontName: "Main-Regular" }, textit: { variant: "italic", fontName: "Main-Italic" }, mathit: { variant: "italic", fontName: "Main-Italic" }, mathbb: { variant: "double-struck", fontName: "AMS-Regular" }, mathcal: { variant: "script", fontName: "Caligraphic-Regular" }, mathfrak: { variant: "fraktur", fontName: "Fraktur-Regular" }, mathscr: { variant: "script", fontName: "Script-Regular" }, mathsf: { variant: "sans-serif", fontName: "SansSerif-Regular" }, mathtt: { variant: "monospace", fontName: "Typewriter-Regular" } }, ae = { vec: ["vec", .471, .714], oiintSize1: ["oiintSize1", .957, .499], oiintSize2: ["oiintSize2", 1.472, .659], oiiintSize1: ["oiiintSize1", 1.304, .499], oiiintSize2: ["oiiintSize2", 1.98, .659] }, oe = { + fontMap: ie, makeSymbol: Zt, mathsym: function (t, e, r, n) { return void 0 === n && (n = []), "boldsymbol" === r.font && $t(t, "Main-Bold", e).metrics ? Zt(t, "Main-Bold", e, r, n.concat(["mathbf"])) : "\\" === t || "main" === gt[e][t].font ? Zt(t, "Main-Regular", e, r, n) : Zt(t, "AMS-Regular", e, r, n.concat(["amsrm"])) }, makeSpan: te, makeSvgSpan: ee, makeLineSpan: function (t, e, r) { var n = te([t], [], e); return n.height = Math.max(r || e.fontMetrics().defaultRuleThickness, e.minRuleThickness), n.style.borderBottomWidth = n.height + "em", n.maxFontSize = 1, n }, makeAnchor: function (t, e, r, n) { var i = new rt(t, e, r, n); return Qt(i), i }, makeFragment: re, wrapFragment: function (t, e) { return t instanceof $ ? te([], [t], e) : t }, makeVList: function (t) { + for (var e = function (t) { + if ("individualShift" === t.positionType) { for (var e = t.children, r = [e[0]], n = -e[0].shift - e[0].elem.depth, i = n, a = 1; a < e.length; a++) { var o = -e[a].shift - i - e[a].elem.depth, s = o - (e[a - 1].elem.height + e[a - 1].elem.depth); i += o, r.push({ type: "kern", size: s }), r.push(e[a]) } return { children: r, depth: n } } var l; if ("top" === t.positionType) { for (var c = t.positionData, u = 0; u < t.children.length; u++) { var h = t.children[u]; c -= "kern" === h.type ? h.size : h.elem.height + h.elem.depth } l = c } else if ("bottom" === t.positionType) l = -t.positionData; else { + var d = t.children[0]; if ("elem" !== d.type) throw new Error('First child must have type "elem".'); if ("shift" === t.positionType) l = -d.elem.depth - t.positionData; else { + if ("firstBaseline" !== t.positionType) throw new Error("Invalid positionType " + t.positionType + "."); l = -d.elem.depth + } + } return { children: t.children, depth: l } + }(t), r = e.children, n = e.depth, i = 0, a = 0; a < r.length; a++) { var o = r[a]; if ("elem" === o.type) { var s = o.elem; i = Math.max(i, s.maxFontSize, s.height) } } i += 2; var l = te(["pstrut"], []); l.style.height = i + "em"; for (var c = [], u = n, h = n, d = n, m = 0; m < r.length; m++) { var p = r[m]; if ("kern" === p.type) d += p.size; else { var f = p.elem, g = p.wrapperClasses || [], v = p.wrapperStyle || {}, y = te(g, [l, f], void 0, v); y.style.top = -i - d - f.depth + "em", p.marginLeft && (y.style.marginLeft = p.marginLeft), p.marginRight && (y.style.marginRight = p.marginRight), c.push(y), d += f.height + f.depth } u = Math.min(u, d), h = Math.max(h, d) } var b, x = te(["vlist"], c); if (x.style.height = h + "em", u < 0) { var w = te([], []), k = te(["vlist"], [w]); k.style.height = -u + "em"; var S = te(["vlist-s"], [new at("\u200b")]); b = [te(["vlist-r"], [x, S]), te(["vlist-r"], [k])] } else b = [te(["vlist-r"], [x])]; var A = te(["vlist-t"], b); return 2 === b.length && A.classes.push("vlist-t2"), A.height = h, A.depth = -u, A + }, makeOrd: function (t, e, r) { var n, i = t.mode, a = t.text, o = ["mord"], s = "math" === i || "text" === i && e.font, l = s ? e.font : e.fontFamily; if (55349 === a.charCodeAt(0)) { var c = function (t, e) { var r = 1024 * (t.charCodeAt(0) - 55296) + (t.charCodeAt(1) - 56320) + 65536, n = "math" === e ? 0 : 1; if (119808 <= r && r < 120484) { var i = Math.floor((r - 119808) / 26); return [Dt[i][2], Dt[i][n]] } if (120782 <= r && r <= 120831) { var a = Math.floor((r - 120782) / 10); return [Ft[a][2], Ft[a][n]] } if (120485 === r || 120486 === r) return [Dt[0][2], Dt[0][n]]; if (120486 < r && r < 120782) return ["", ""]; throw new z("Unsupported character: " + t) }(a, i), u = c[0], h = c[1]; return Zt(a, u, i, e, o.concat(h)) } if (l) { var d, m; if ("boldsymbol" === l || "mathnormal" === l) { var p = "boldsymbol" === l ? $t(a, "Math-BoldItalic", i).metrics ? { fontName: "Math-BoldItalic", fontClass: "boldsymbol" } : { fontName: "Main-Bold", fontClass: "mathbf" } : (n = a, B.contains(Kt, n) ? { fontName: "Main-Italic", fontClass: "mathit" } : /[0-9]/.test(n.charAt(0)) ? { fontName: "Caligraphic-Regular", fontClass: "mathcal" } : { fontName: "Math-Italic", fontClass: "mathdefault" }); d = p.fontName, m = [p.fontClass] } else B.contains(Kt, a) ? (d = "Main-Italic", m = ["mathit"]) : s ? (d = ie[l].fontName, m = [l]) : (d = ne(l, e.fontWeight, e.fontShape), m = [l, e.fontWeight, e.fontShape]); if ($t(a, d, i).metrics) return Zt(a, d, i, e, o.concat(m)); if (St.hasOwnProperty(a) && "Typewriter" === d.substr(0, 10)) { for (var f = [], g = 0; g < a.length; g++)f.push(Zt(a[g], d, i, e, o.concat(m))); return re(f) } } if ("mathord" === r) { var v = function (t) { return /[0-9]/.test(t.charAt(0)) || B.contains(Kt, t) ? { fontName: "Main-Italic", fontClass: "mathit" } : { fontName: "Math-Italic", fontClass: "mathdefault" } }(a); return Zt(a, v.fontName, i, e, o.concat([v.fontClass])) } if ("textord" === r) { var y = gt[i][a] && gt[i][a].font; if ("ams" === y) { var b = ne("amsrm", e.fontWeight, e.fontShape); return Zt(a, b, i, e, o.concat("amsrm", e.fontWeight, e.fontShape)) } if ("main" !== y && y) { var x = ne(y, e.fontWeight, e.fontShape); return Zt(a, x, i, e, o.concat(x, e.fontWeight, e.fontShape)) } var w = ne("textrm", e.fontWeight, e.fontShape); return Zt(a, w, i, e, o.concat(e.fontWeight, e.fontShape)) } throw new Error("unexpected type: " + r + " in makeOrd") }, makeGlue: function (t, e) { var r = te(["mspace"], [], e), n = Xt(t, e); return r.style.marginRight = n + "em", r }, staticSvg: function (t, e) { var r = ae[t], n = r[0], i = r[1], a = r[2], o = new st(n), s = new ot([o], { width: i + "em", height: a + "em", style: "width:" + i + "em", viewBox: "0 0 " + 1e3 * i + " " + 1e3 * a, preserveAspectRatio: "xMinYMin" }), l = ee(["overlay"], [s], e); return l.height = a, l.style.height = a + "em", l.style.width = i + "em", l }, svgData: ae, tryCombineChars: function (t) { for (var e = 0; e < t.length - 1; e++) { var r = t[e], n = t[e + 1]; r instanceof at && n instanceof at && Jt(r, n) && (r.text += n.text, r.height = Math.max(r.height, n.height), r.depth = Math.max(r.depth, n.depth), r.italic = n.italic, t.splice(e + 1, 1), e--) } return t } + }, se = { number: 3, unit: "mu" }, le = { number: 4, unit: "mu" }, ce = { number: 5, unit: "mu" }, ue = { mord: { mop: se, mbin: le, mrel: ce, minner: se }, mop: { mord: se, mop: se, mrel: ce, minner: se }, mbin: { mord: le, mop: le, mopen: le, minner: le }, mrel: { mord: ce, mop: ce, mopen: ce, minner: ce }, mopen: {}, mclose: { mop: se, mbin: le, mrel: ce, minner: se }, mpunct: { mord: se, mop: se, mrel: ce, mopen: se, mclose: se, mpunct: se, minner: se }, minner: { mord: se, mop: se, mbin: le, mrel: ce, mopen: se, mpunct: se, minner: se } }, he = { mord: { mop: se }, mop: { mord: se, mop: se }, mbin: {}, mrel: {}, mopen: {}, mclose: { mop: se }, mpunct: {}, minner: { mop: se } }, de = {}, me = {}, pe = {}, fe = function (t) { var e = l(t, "ordgroup"); return e ? e.body : [t] }, ge = oe.makeSpan, ve = ["leftmost", "mbin", "mopen", "mrel", "mop", "mpunct"], ye = ["rightmost", "mrel", "mclose", "mpunct"], be = { display: G.DISPLAY, text: G.TEXT, script: G.SCRIPT, scriptscript: G.SCRIPTSCRIPT }, xe = { mord: "mord", mop: "mop", mbin: "mbin", mrel: "mrel", mopen: "mopen", mclose: "mclose", mpunct: "mpunct", minner: "minner" }, we = function (t, e, r, n) { void 0 === n && (n = [null, null]); for (var i = [], a = 0; a < t.length; a++) { var o = Me(t[a], e); if (o instanceof $) { var s = o.children; i.push.apply(i, s) } else i.push(o) } if (!r) return i; var c = e; if (1 === t.length) { var u = l(t[0], "sizing") || l(t[0], "styling"); u && ("sizing" === u.type ? c = e.havingSize(u.size) : "styling" === u.type && (c = e.havingStyle(be[u.style]))) } var h = ge([n[0] || "leftmost"], [], e), d = ge([n[1] || "rightmost"], [], e); return ke(i, function (t, e) { var r = e.classes[0], n = t.classes[0]; "mbin" === r && B.contains(ye, n) ? e.classes[0] = "mord" : "mbin" === n && B.contains(ve, r) && (t.classes[0] = "mord") }, { node: h }, d), ke(i, function (t, e) { var r = Ae(e), n = Ae(t), i = r && n ? t.hasClass("mtight") ? he[r][n] : ue[r][n] : null; if (i) return oe.makeGlue(i, c) }, { node: h }, d), i }, ke = function Pn(t, e, r, n) { n && t.push(n); for (var i = 0; i < t.length; i++) { var a = t[i], o = Se(a); if (o) Pn(o.children, e, r); else if ("mspace" !== a.classes[0]) { var s = e(a, r.node); s && (r.insertAfter ? r.insertAfter(s) : (t.unshift(s), i++)), r.node = a, r.insertAfter = function (e) { return function (r) { t.splice(e + 1, 0, r), i++ } }(i) } } n && t.pop() }, Se = function (t) { return t instanceof $ || t instanceof rt ? t : null }, Ae = function (t, e) { return t ? (e && (t = function r(t, e) { var n = Se(t); if (n) { var i = n.children; if (i.length) { if ("right" === e) return r(i[i.length - 1], "right"); if ("left" === e) return r(i[0], "left") } } return t }(t, e)), xe[t.classes[0]] || null) : null }, Ee = function (t, e) { var r = ["nulldelimiter"].concat(t.baseSizingClasses()); return ge(e.concat(r)) }, Me = function (t, e, r) { if (!t) return ge(); if (me[t.type]) { var n = me[t.type](t, e); if (r && e.size !== r.size) { n = ge(e.sizingClasses(r), [n], e); var i = e.sizeMultiplier / r.sizeMultiplier; n.height *= i, n.depth *= i } return n } throw new z("Got group of unknown type: '" + t.type + "'") }, Re = function () { function t(t, e) { this.type = void 0, this.attributes = void 0, this.children = void 0, this.type = t, this.attributes = {}, this.children = e || [] } var e = t.prototype; return e.setAttribute = function (t, e) { this.attributes[t] = e }, e.getAttribute = function (t) { return this.attributes[t] }, e.toNode = function () { var t = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type); for (var e in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, e) && t.setAttribute(e, this.attributes[e]); for (var r = 0; r < this.children.length; r++)t.appendChild(this.children[r].toNode()); return t }, e.toMarkup = function () { var t = "<" + this.type; for (var e in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, e) && (t += " " + e + '="', t += B.escape(this.attributes[e]), t += '"'); t += ">"; for (var r = 0; r < this.children.length; r++)t += this.children[r].toMarkup(); return t + "" }, e.toText = function () { return this.children.map(function (t) { return t.toText() }).join("") }, t }(), Te = function () { function t(t) { this.text = void 0, this.text = t } var e = t.prototype; return e.toNode = function () { return document.createTextNode(this.text) }, e.toMarkup = function () { return B.escape(this.toText()) }, e.toText = function () { return this.text }, t }(), Ce = { MathNode: Re, TextNode: Te, SpaceNode: function () { function t(t) { this.width = void 0, this.character = void 0, this.width = t, this.character = t >= .05555 && t <= .05556 ? "\u200a" : t >= .1666 && t <= .1667 ? "\u2009" : t >= .2222 && t <= .2223 ? "\u2005" : t >= .2777 && t <= .2778 ? "\u2005\u200a" : t >= -.05556 && t <= -.05555 ? "\u200a\u2063" : t >= -.1667 && t <= -.1666 ? "\u2009\u2063" : t >= -.2223 && t <= -.2222 ? "\u205f\u2063" : t >= -.2778 && t <= -.2777 ? "\u2005\u2063" : null } var e = t.prototype; return e.toNode = function () { if (this.character) return document.createTextNode(this.character); var t = document.createElementNS("http://www.w3.org/1998/Math/MathML", "mspace"); return t.setAttribute("width", this.width + "em"), t }, e.toMarkup = function () { return this.character ? "" + this.character + "" : '' }, e.toText = function () { return this.character ? this.character : " " }, t }(), newDocumentFragment: g }, Le = function (t, e, r) { return !gt[e][t] || !gt[e][t].replace || 55349 === t.charCodeAt(0) || St.hasOwnProperty(t) && r && (r.fontFamily && "tt" === r.fontFamily.substr(4, 2) || r.font && "tt" === r.font.substr(4, 2)) || (t = gt[e][t].replace), new Ce.TextNode(t) }, ze = function (t) { return 1 === t.length ? t[0] : new Ce.MathNode("mrow", t) }, Ne = function (t, e) { if ("texttt" === e.fontFamily) return "monospace"; if ("textsf" === e.fontFamily) return "textit" === e.fontShape && "textbf" === e.fontWeight ? "sans-serif-bold-italic" : "textit" === e.fontShape ? "sans-serif-italic" : "textbf" === e.fontWeight ? "bold-sans-serif" : "sans-serif"; if ("textit" === e.fontShape && "textbf" === e.fontWeight) return "bold-italic"; if ("textit" === e.fontShape) return "italic"; if ("textbf" === e.fontWeight) return "bold"; var r = e.font; if (!r || "mathnormal" === r) return null; var n = t.mode; if ("mathit" === r) return "italic"; if ("boldsymbol" === r) return "bold-italic"; if ("mathbf" === r) return "bold"; if ("mathbb" === r) return "double-struck"; if ("mathfrak" === r) return "fraktur"; if ("mathscr" === r || "mathcal" === r) return "script"; if ("mathsf" === r) return "sans-serif"; if ("mathtt" === r) return "monospace"; var i = t.text; return B.contains(["\\imath", "\\jmath"], i) ? null : (gt[n][i] && gt[n][i].replace && (i = gt[n][i].replace), a(i, oe.fontMap[r].fontName, n) ? oe.fontMap[r].variant : null) }, Pe = function (t, e, r) { if (1 === t.length) { var n = Oe(t[0], e); return r && n instanceof Re && "mo" === n.type && (n.setAttribute("lspace", "0em"), n.setAttribute("rspace", "0em")), [n] } for (var i, a = [], o = 0; o < t.length; o++) { var s = Oe(t[o], e); if (s instanceof Re && i instanceof Re) { if ("mtext" === s.type && "mtext" === i.type && s.getAttribute("mathvariant") === i.getAttribute("mathvariant")) { var l; (l = i.children).push.apply(l, s.children); continue } if ("mn" === s.type && "mn" === i.type) { var c; (c = i.children).push.apply(c, s.children); continue } if ("mi" === s.type && 1 === s.children.length && "mn" === i.type) { var u = s.children[0]; if (u instanceof Te && "." === u.text) { var h; (h = i.children).push.apply(h, s.children); continue } } else if ("mi" === i.type && 1 === i.children.length) { var d = i.children[0]; if (d instanceof Te && "\u0338" === d.text && ("mo" === s.type || "mi" === s.type || "mn" === s.type)) { var m = s.children[0]; m instanceof Te && m.text.length > 0 && (m.text = m.text.slice(0, 1) + "\u0338" + m.text.slice(1), a.pop()) } } } a.push(s), i = s } return a }, Ie = function (t, e, r) { return ze(Pe(t, e, r)) }, Oe = function (t, e) { if (!t) return new Ce.MathNode("mrow"); if (pe[t.type]) return pe[t.type](t, e); throw new z("Got group of unknown type: '" + t.type + "'") }, Be = function (t) { return new Vt({ style: t.displayMode ? G.DISPLAY : G.TEXT, maxSize: t.maxSize, minRuleThickness: t.minRuleThickness }) }, qe = function (t, e) { if (e.displayMode) { var r = ["katex-display"]; e.leqno && r.push("leqno"), e.fleqn && r.push("fleqn"), t = oe.makeSpan(r, [t]) } return t }, De = function (t, e, r) { var n, i = Be(r); if ("mathml" === r.output) return v(t, e, i, !0); if ("html" === r.output) { var a = f(t, i); n = oe.makeSpan(["katex"], [a]) } else { var o = v(t, e, i, !1), s = f(t, i); n = oe.makeSpan(["katex"], [o, s]) } return qe(n, r) }, Fe = { widehat: "^", widecheck: "\u02c7", widetilde: "~", utilde: "~", overleftarrow: "\u2190", underleftarrow: "\u2190", xleftarrow: "\u2190", overrightarrow: "\u2192", underrightarrow: "\u2192", xrightarrow: "\u2192", underbrace: "\u23df", overbrace: "\u23de", overgroup: "\u23e0", undergroup: "\u23e1", overleftrightarrow: "\u2194", underleftrightarrow: "\u2194", xleftrightarrow: "\u2194", Overrightarrow: "\u21d2", xRightarrow: "\u21d2", overleftharpoon: "\u21bc", xleftharpoonup: "\u21bc", overrightharpoon: "\u21c0", xrightharpoonup: "\u21c0", xLeftarrow: "\u21d0", xLeftrightarrow: "\u21d4", xhookleftarrow: "\u21a9", xhookrightarrow: "\u21aa", xmapsto: "\u21a6", xrightharpoondown: "\u21c1", xleftharpoondown: "\u21bd", xrightleftharpoons: "\u21cc", xleftrightharpoons: "\u21cb", xtwoheadleftarrow: "\u219e", xtwoheadrightarrow: "\u21a0", xlongequal: "=", xtofrom: "\u21c4", xrightleftarrows: "\u21c4", xrightequilibrium: "\u21cc", xleftequilibrium: "\u21cb" }, He = { overrightarrow: [["rightarrow"], .888, 522, "xMaxYMin"], overleftarrow: [["leftarrow"], .888, 522, "xMinYMin"], underrightarrow: [["rightarrow"], .888, 522, "xMaxYMin"], underleftarrow: [["leftarrow"], .888, 522, "xMinYMin"], xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"], xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"], Overrightarrow: [["doublerightarrow"], .888, 560, "xMaxYMin"], xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"], xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"], overleftharpoon: [["leftharpoon"], .888, 522, "xMinYMin"], xleftharpoonup: [["leftharpoon"], .888, 522, "xMinYMin"], xleftharpoondown: [["leftharpoondown"], .888, 522, "xMinYMin"], overrightharpoon: [["rightharpoon"], .888, 522, "xMaxYMin"], xrightharpoonup: [["rightharpoon"], .888, 522, "xMaxYMin"], xrightharpoondown: [["rightharpoondown"], .888, 522, "xMaxYMin"], xlongequal: [["longequal"], .888, 334, "xMinYMin"], xtwoheadleftarrow: [["twoheadleftarrow"], .888, 334, "xMinYMin"], xtwoheadrightarrow: [["twoheadrightarrow"], .888, 334, "xMaxYMin"], overleftrightarrow: [["leftarrow", "rightarrow"], .888, 522], overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548], underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548], underleftrightarrow: [["leftarrow", "rightarrow"], .888, 522], xleftrightarrow: [["leftarrow", "rightarrow"], 1.75, 522], xLeftrightarrow: [["doubleleftarrow", "doublerightarrow"], 1.75, 560], xrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716], xleftrightharpoons: [["leftharpoonplus", "rightharpoondownplus"], 1.75, 716], xhookleftarrow: [["leftarrow", "righthook"], 1.08, 522], xhookrightarrow: [["lefthook", "rightarrow"], 1.08, 522], overlinesegment: [["leftlinesegment", "rightlinesegment"], .888, 522], underlinesegment: [["leftlinesegment", "rightlinesegment"], .888, 522], overgroup: [["leftgroup", "rightgroup"], .888, 342], undergroup: [["leftgroupunder", "rightgroupunder"], .888, 342], xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522], xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528], xrightleftarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901], xrightequilibrium: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716], xleftequilibrium: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716] }, je = function (t) { return "ordgroup" === t.type ? t.body.length : 1 }, Ue = function (t, e, r, n) { var i, a = t.height + t.depth + 2 * r; if (/fbox|color/.test(e)) { if (i = oe.makeSpan(["stretchy", e], [], n), "fbox" === e) { var o = n.color && n.getColor(); o && (i.style.borderColor = o) } } else { var s = []; /^[bx]cancel$/.test(e) && s.push(new lt({ x1: "0", y1: "0", x2: "100%", y2: "100%", "stroke-width": "0.046em" })), /^x?cancel$/.test(e) && s.push(new lt({ x1: "0", y1: "100%", x2: "100%", y2: "0", "stroke-width": "0.046em" })); var l = new ot(s, { width: "100%", height: a + "em" }); i = oe.makeSvgSpan([], [l], n) } return i.height = a, i.style.height = a + "em", i }, _e = function (t) { var e = new Ce.MathNode("mo", [new Ce.TextNode(Fe[t.substr(1)])]); return e.setAttribute("stretchy", "true"), e }, Ve = function (t, e) { var r = function () { var r = 4e5, n = t.label.substr(1); if (B.contains(["widehat", "widecheck", "widetilde", "utilde"], n)) { var i, a, o, s = je(t.base); if (s > 5) "widehat" === n || "widecheck" === n ? (i = 420, r = 2364, o = .42, a = n + "4") : (i = 312, r = 2340, o = .34, a = "tilde4"); else { var l = [1, 1, 2, 2, 3, 3][s]; "widehat" === n || "widecheck" === n ? (r = [0, 1062, 2364, 2364, 2364][l], i = [0, 239, 300, 360, 420][l], o = [0, .24, .3, .3, .36, .42][l], a = n + l) : (r = [0, 600, 1033, 2339, 2340][l], i = [0, 260, 286, 306, 312][l], o = [0, .26, .286, .3, .306, .34][l], a = "tilde" + l) } var c = new st(a), u = new ot([c], { width: "100%", height: o + "em", viewBox: "0 0 " + r + " " + i, preserveAspectRatio: "none" }); return { span: oe.makeSvgSpan([], [u], e), minWidth: 0, height: o } } var h, d, m = [], p = He[n], f = p[0], g = p[1], v = p[2], y = v / 1e3, b = f.length; if (1 === b) h = ["hide-tail"], d = [p[3]]; else if (2 === b) h = ["halfarrow-left", "halfarrow-right"], d = ["xMinYMin", "xMaxYMin"]; else { if (3 !== b) throw new Error("Correct katexImagesData or update code here to support\n " + b + " children."); h = ["brace-left", "brace-center", "brace-right"], d = ["xMinYMin", "xMidYMin", "xMaxYMin"] } for (var x = 0; x < b; x++) { var w = new st(f[x]), k = new ot([w], { width: "400em", height: y + "em", viewBox: "0 0 " + r + " " + v, preserveAspectRatio: d[x] + " slice" }), S = oe.makeSvgSpan([h[x]], [k], e); if (1 === b) return { span: S, minWidth: g, height: y }; S.style.height = y + "em", m.push(S) } return { span: oe.makeSpan(["stretchy"], m, e), minWidth: g, height: y } }(), n = r.span, i = r.minWidth, a = r.height; return n.height = a, n.style.height = a + "em", i > 0 && (n.style.minWidth = i + "em"), n }, We = function (t, e) { var r, n, a, o = l(t, "supsub"); o ? (r = (n = s(o.base, "accent")).base, o.base = r, a = function (t) { if (t instanceof et) return t; throw new Error("Expected span but got " + String(t) + ".") }(Me(o, e)), o.base = n) : r = (n = s(t, "accent")).base; var c = Me(r, e.havingCrampedStyle()), u = 0; if (n.isShifty && B.isCharacterBox(r)) { var h = B.getBaseElem(r); u = i(Me(h, e.havingCrampedStyle())).skew } var d, m = Math.min(c.height, e.fontMetrics().xHeight); if (n.isStretchy) d = Ve(n, e), d = oe.makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: c }, { type: "elem", elem: d, wrapperClasses: ["svg-align"], wrapperStyle: u > 0 ? { width: "calc(100% - " + 2 * u + "em)", marginLeft: 2 * u + "em" } : void 0 }] }, e); else { var p, f; "\\vec" === n.label ? (p = oe.staticSvg("vec", e), f = oe.svgData.vec[1]) : ((p = i(p = oe.makeOrd({ mode: n.mode, text: n.label }, e, "textord"))).italic = 0, f = p.width), d = oe.makeSpan(["accent-body"], [p]); var g = "\\textcircled" === n.label; g && (d.classes.push("accent-full"), m = c.height); var v = u; g || (v -= f / 2), d.style.left = v + "em", "\\textcircled" === n.label && (d.style.top = ".2em"), d = oe.makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: c }, { type: "kern", size: -m }, { type: "elem", elem: d }] }, e) } var y = oe.makeSpan(["mord", "accent"], [d], e); return a ? (a.children[0] = y, a.height = Math.max(y.height, a.height), a.classes[0] = "mord", a) : y }, Ge = function (t, e) { var r = t.isStretchy ? _e(t.label) : new Ce.MathNode("mo", [Le(t.label, t.mode)]), n = new Ce.MathNode("mover", [Oe(t.base, e), r]); return n.setAttribute("accent", "true"), n }, Ye = new RegExp(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring"].map(function (t) { return "\\" + t }).join("|")); d({ type: "accent", names: ["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring", "\\widecheck", "\\widehat", "\\widetilde", "\\overrightarrow", "\\overleftarrow", "\\Overrightarrow", "\\overleftrightarrow", "\\overgroup", "\\overlinesegment", "\\overleftharpoon", "\\overrightharpoon"], props: { numArgs: 1 }, handler: function (t, e) { var r = e[0], n = !Ye.test(t.funcName), i = !n || "\\widehat" === t.funcName || "\\widetilde" === t.funcName || "\\widecheck" === t.funcName; return { type: "accent", mode: t.parser.mode, label: t.funcName, isStretchy: n, isShifty: i, base: r } }, htmlBuilder: We, mathmlBuilder: Ge }), d({ type: "accent", names: ["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\r", "\\H", "\\v", "\\textcircled"], props: { numArgs: 1, allowedInText: !0, allowedInMath: !1 }, handler: function (t, e) { var r = e[0]; return { type: "accent", mode: t.parser.mode, label: t.funcName, isStretchy: !1, isShifty: !0, base: r } }, htmlBuilder: We, mathmlBuilder: Ge }), d({ type: "accentUnder", names: ["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"], props: { numArgs: 1 }, handler: function (t, e) { var r = t.parser, n = t.funcName, i = e[0]; return { type: "accentUnder", mode: r.mode, label: n, base: i } }, htmlBuilder: function (t, e) { var r = Me(t.base, e), n = Ve(t, e), i = "\\utilde" === t.label ? .12 : 0, a = oe.makeVList({ positionType: "bottom", positionData: n.height + i, children: [{ type: "elem", elem: n, wrapperClasses: ["svg-align"] }, { type: "kern", size: i }, { type: "elem", elem: r }] }, e); return oe.makeSpan(["mord", "accentunder"], [a], e) }, mathmlBuilder: function (t, e) { var r = _e(t.label), n = new Ce.MathNode("munder", [Oe(t.base, e), r]); return n.setAttribute("accentunder", "true"), n } }); var Xe = function (t) { var e = new Ce.MathNode("mpadded", t ? [t] : []); return e.setAttribute("width", "+0.6em"), e.setAttribute("lspace", "0.3em"), e }; d({ type: "xArrow", names: ["\\xleftarrow", "\\xrightarrow", "\\xLeftarrow", "\\xRightarrow", "\\xleftrightarrow", "\\xLeftrightarrow", "\\xhookleftarrow", "\\xhookrightarrow", "\\xmapsto", "\\xrightharpoondown", "\\xrightharpoonup", "\\xleftharpoondown", "\\xleftharpoonup", "\\xrightleftharpoons", "\\xleftrightharpoons", "\\xlongequal", "\\xtwoheadrightarrow", "\\xtwoheadleftarrow", "\\xtofrom", "\\xrightleftarrows", "\\xrightequilibrium", "\\xleftequilibrium"], props: { numArgs: 1, numOptionalArgs: 1 }, handler: function (t, e, r) { var n = t.parser, i = t.funcName; return { type: "xArrow", mode: n.mode, label: i, body: e[0], below: r[0] } }, htmlBuilder: function (t, e) { var r, n = e.style, i = e.havingStyle(n.sup()), a = oe.wrapFragment(Me(t.body, i, e), e); a.classes.push("x-arrow-pad"), t.below && (i = e.havingStyle(n.sub()), (r = oe.wrapFragment(Me(t.below, i, e), e)).classes.push("x-arrow-pad")); var o, s = Ve(t, e), l = -e.fontMetrics().axisHeight + .5 * s.height, c = -e.fontMetrics().axisHeight - .5 * s.height - .111; if ((a.depth > .25 || "\\xleftequilibrium" === t.label) && (c -= a.depth), r) { var u = -e.fontMetrics().axisHeight + r.height + .5 * s.height + .111; o = oe.makeVList({ positionType: "individualShift", children: [{ type: "elem", elem: a, shift: c }, { type: "elem", elem: s, shift: l }, { type: "elem", elem: r, shift: u }] }, e) } else o = oe.makeVList({ positionType: "individualShift", children: [{ type: "elem", elem: a, shift: c }, { type: "elem", elem: s, shift: l }] }, e); return o.children[0].children[0].children[1].classes.push("svg-align"), oe.makeSpan(["mrel", "x-arrow"], [o], e) }, mathmlBuilder: function (t, e) { var r, n = _e(t.label); if (t.body) { var i = Xe(Oe(t.body, e)); if (t.below) { var a = Xe(Oe(t.below, e)); r = new Ce.MathNode("munderover", [n, a, i]) } else r = new Ce.MathNode("mover", [n, i]) } else if (t.below) { var o = Xe(Oe(t.below, e)); r = new Ce.MathNode("munder", [n, o]) } else r = Xe(), r = new Ce.MathNode("mover", [n, r]); return r } }), d({ type: "textord", names: ["\\@char"], props: { numArgs: 1, allowedInText: !0 }, handler: function (t, e) { for (var r = t.parser, n = s(e[0], "ordgroup").body, i = "", a = 0; a < n.length; a++)i += s(n[a], "textord").text; var o = parseInt(i); if (isNaN(o)) throw new z("\\@char has non-numeric argument " + i); return { type: "textord", mode: r.mode, text: String.fromCharCode(o) } } }); var Ke = function (t, e) { var r = we(t.body, e.withColor(t.color), !1); return oe.makeFragment(r) }, $e = function (t, e) { var r = Pe(t.body, e.withColor(t.color)), n = new Ce.MathNode("mstyle", r); return n.setAttribute("mathcolor", t.color), n }; d({ type: "color", names: ["\\textcolor"], props: { numArgs: 2, allowedInText: !0, greediness: 3, argTypes: ["color", "original"] }, handler: function (t, e) { var r = t.parser, n = s(e[0], "color-token").color, i = e[1]; return { type: "color", mode: r.mode, color: n, body: fe(i) } }, htmlBuilder: Ke, mathmlBuilder: $e }), d({ type: "color", names: ["\\color"], props: { numArgs: 1, allowedInText: !0, greediness: 3, argTypes: ["color"] }, handler: function (t, e) { var r = t.parser, n = t.breakOnTokenText, i = s(e[0], "color-token").color; r.gullet.macros.set("\\current@color", i); var a = r.parseExpression(!0, n); return { type: "color", mode: r.mode, color: i, body: a } }, htmlBuilder: Ke, mathmlBuilder: $e }), d({ type: "cr", names: ["\\cr", "\\newline"], props: { numArgs: 0, numOptionalArgs: 1, argTypes: ["size"], allowedInText: !0 }, handler: function (t, e, r) { var n = t.parser, i = t.funcName, a = r[0], o = "\\cr" === i, l = !1; return o || (l = !n.settings.displayMode || !n.settings.useStrictBehavior("newLineInDisplayMode", "In LaTeX, \\\\ or \\newline does nothing in display mode")), { type: "cr", mode: n.mode, newLine: l, newRow: o, size: a && s(a, "size").value } }, htmlBuilder: function (t, e) { if (t.newRow) throw new z("\\cr valid only within a tabular/array environment"); var r = oe.makeSpan(["mspace"], [], e); return t.newLine && (r.classes.push("newline"), t.size && (r.style.marginTop = Xt(t.size, e) + "em")), r }, mathmlBuilder: function (t, e) { var r = new Ce.MathNode("mspace"); return t.newLine && (r.setAttribute("linebreak", "newline"), t.size && r.setAttribute("height", Xt(t.size, e) + "em")), r } }); var Ze = function (t, e, r) { var n = a(gt.math[t] && gt.math[t].replace || t, e, r); if (!n) throw new Error("Unsupported symbol " + t + " and font size " + e + "."); return n }, Je = function (t, e, r, n) { var i = r.havingBaseStyle(e), a = oe.makeSpan(n.concat(i.sizingClasses(r)), [t], r), o = i.sizeMultiplier / r.sizeMultiplier; return a.height *= o, a.depth *= o, a.maxFontSize = i.sizeMultiplier, a }, Qe = function (t, e, r) { var n = e.havingBaseStyle(r), i = (1 - e.sizeMultiplier / n.sizeMultiplier) * e.fontMetrics().axisHeight; t.classes.push("delimcenter"), t.style.top = i + "em", t.height -= i, t.depth += i }, tr = function (t, e, r, n, i, a) { var o = function (t, e, r, n) { return oe.makeSymbol(t, "Size" + e + "-Regular", r, n) }(t, e, i, n), s = Je(oe.makeSpan(["delimsizing", "size" + e], [o], n), G.TEXT, n, a); return r && Qe(s, n, G.TEXT), s }, er = function (t, e, r) { var n; return n = "Size1-Regular" === e ? "delim-size1" : "delim-size4", { type: "elem", elem: oe.makeSpan(["delimsizinginner", n], [oe.makeSpan([], [oe.makeSymbol(t, e, r)])]) } }, rr = { type: "kern", size: -.005 }, nr = function (t, e, r, n, i, a) { var o, s, l, c; o = l = c = t, s = null; var u = "Size1-Regular"; "\\uparrow" === t ? l = c = "\u23d0" : "\\Uparrow" === t ? l = c = "\u2016" : "\\downarrow" === t ? o = l = "\u23d0" : "\\Downarrow" === t ? o = l = "\u2016" : "\\updownarrow" === t ? (o = "\\uparrow", l = "\u23d0", c = "\\downarrow") : "\\Updownarrow" === t ? (o = "\\Uparrow", l = "\u2016", c = "\\Downarrow") : "[" === t || "\\lbrack" === t ? (o = "\u23a1", l = "\u23a2", c = "\u23a3", u = "Size4-Regular") : "]" === t || "\\rbrack" === t ? (o = "\u23a4", l = "\u23a5", c = "\u23a6", u = "Size4-Regular") : "\\lfloor" === t || "\u230a" === t ? (l = o = "\u23a2", c = "\u23a3", u = "Size4-Regular") : "\\lceil" === t || "\u2308" === t ? (o = "\u23a1", l = c = "\u23a2", u = "Size4-Regular") : "\\rfloor" === t || "\u230b" === t ? (l = o = "\u23a5", c = "\u23a6", u = "Size4-Regular") : "\\rceil" === t || "\u2309" === t ? (o = "\u23a4", l = c = "\u23a5", u = "Size4-Regular") : "(" === t || "\\lparen" === t ? (o = "\u239b", l = "\u239c", c = "\u239d", u = "Size4-Regular") : ")" === t || "\\rparen" === t ? (o = "\u239e", l = "\u239f", c = "\u23a0", u = "Size4-Regular") : "\\{" === t || "\\lbrace" === t ? (o = "\u23a7", s = "\u23a8", c = "\u23a9", l = "\u23aa", u = "Size4-Regular") : "\\}" === t || "\\rbrace" === t ? (o = "\u23ab", s = "\u23ac", c = "\u23ad", l = "\u23aa", u = "Size4-Regular") : "\\lgroup" === t || "\u27ee" === t ? (o = "\u23a7", c = "\u23a9", l = "\u23aa", u = "Size4-Regular") : "\\rgroup" === t || "\u27ef" === t ? (o = "\u23ab", c = "\u23ad", l = "\u23aa", u = "Size4-Regular") : "\\lmoustache" === t || "\u23b0" === t ? (o = "\u23a7", c = "\u23ad", l = "\u23aa", u = "Size4-Regular") : "\\rmoustache" !== t && "\u23b1" !== t || (o = "\u23ab", c = "\u23a9", l = "\u23aa", u = "Size4-Regular"); var h = Ze(o, u, i), d = h.height + h.depth, m = Ze(l, u, i), p = m.height + m.depth, f = Ze(c, u, i), g = f.height + f.depth, v = 0, y = 1; if (null !== s) { var b = Ze(s, u, i); v = b.height + b.depth, y = 2 } var x = d + g + v, w = Math.max(0, Math.ceil((e - x) / (y * p))), k = x + w * y * p, S = n.fontMetrics().axisHeight; r && (S *= n.sizeMultiplier); var A = k / 2 - S, E = .005 * (w + 1) - p, M = []; if (M.push(er(c, u, i)), null === s) for (var R = 0; R < w; R++)M.push(rr), M.push(er(l, u, i)); else { for (var T = 0; T < w; T++)M.push(rr), M.push(er(l, u, i)); M.push({ type: "kern", size: E }), M.push(er(l, u, i)), M.push(rr), M.push(er(s, u, i)); for (var C = 0; C < w; C++)M.push(rr), M.push(er(l, u, i)) } M.push({ type: "kern", size: E }), M.push(er(l, u, i)), M.push(rr), M.push(er(o, u, i)); var L = n.havingBaseStyle(G.TEXT), z = oe.makeVList({ positionType: "bottom", positionData: A, children: M }, L); return Je(oe.makeSpan(["delimsizing", "mult"], [z], L), G.TEXT, n, a) }, ir = function (t, e, r, n, i) { var a = function (t, e, r) { e *= 1e3; var n = ""; switch (t) { case "sqrtMain": n = function (t, e) { return "M95," + (622 + t + e) + "\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl" + t / 2.075 + " -" + t + "\nc5.3,-9.3,12,-14,20,-14\nH400000v" + (40 + t) + "H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM" + (834 + t) + " " + e + "h400000v" + (40 + t) + "h-400000z" }(e, 80); break; case "sqrtSize1": n = function (t, e) { return "M263," + (601 + t + e) + "c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl" + t / 2.084 + " -" + t + "\nc4.7,-7.3,11,-11,19,-11\nH40000v" + (40 + t) + "H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM" + (1001 + t) + " " + e + "h400000v" + (40 + t) + "h-400000z" }(e, 80); break; case "sqrtSize2": n = function (t, e) { return "M983 " + (10 + t + e) + "\nl" + t / 3.13 + " -" + t + "\nc4,-6.7,10,-10,18,-10 H400000v" + (40 + t) + "\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM" + (1001 + t) + " " + e + "h400000v" + (40 + t) + "h-400000z" }(e, 80); break; case "sqrtSize3": n = function (t, e) { return "M424," + (2398 + t + e) + "\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl" + t / 4.223 + " -" + t + "c4,-6.7,10,-10,18,-10 H400000\nv" + (40 + t) + "H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M" + (1001 + t) + " " + e + "\nh400000v" + (40 + t) + "h-400000z" }(e, 80); break; case "sqrtSize4": n = function (t, e) { return "M473," + (2713 + t + e) + "\nc339.3,-1799.3,509.3,-2700,510,-2702 l" + t / 5.298 + " -" + t + "\nc3.3,-7.3,9.3,-11,18,-11 H400000v" + (40 + t) + "H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM" + (1001 + t) + " " + e + "h400000v" + (40 + t) + "H1017.7z" }(e, 80); break; case "sqrtTall": n = function (t, e, r) { return "M702 " + (t + e) + "H400000" + (40 + t) + "\nH742v" + (r - 54 - e - t) + "l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 " + e + "H400000v" + (40 + t) + "H742z" }(e, 80, r) }return n }(t, n, r), o = new st(t, a), s = new ot([o], { width: "400em", height: e + "em", viewBox: "0 0 400000 " + r, preserveAspectRatio: "xMinYMin slice" }); return oe.makeSvgSpan(["hide-tail"], [s], i) }, ar = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\u230a", "\u230b", "\\lceil", "\\rceil", "\u2308", "\u2309", "\\surd"], or = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\u27ee", "\u27ef", "\\lmoustache", "\\rmoustache", "\u23b0", "\u23b1"], sr = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"], lr = [0, 1.2, 1.8, 2.4, 3], cr = [{ type: "small", style: G.SCRIPTSCRIPT }, { type: "small", style: G.SCRIPT }, { type: "small", style: G.TEXT }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }], ur = [{ type: "small", style: G.SCRIPTSCRIPT }, { type: "small", style: G.SCRIPT }, { type: "small", style: G.TEXT }, { type: "stack" }], hr = [{ type: "small", style: G.SCRIPTSCRIPT }, { type: "small", style: G.SCRIPT }, { type: "small", style: G.TEXT }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }, { type: "stack" }], dr = function (t) { if ("small" === t.type) return "Main-Regular"; if ("large" === t.type) return "Size" + t.size + "-Regular"; if ("stack" === t.type) return "Size4-Regular"; throw new Error("Add support for delim type '" + t.type + "' here.") }, mr = function (t, e, r, n) { for (var i = Math.min(2, 3 - n.style.size); i < r.length && "stack" !== r[i].type; i++) { var a = Ze(t, dr(r[i]), "math"), o = a.height + a.depth; if ("small" === r[i].type && (o *= n.havingBaseStyle(r[i].style).sizeMultiplier), o > e) return r[i] } return r[r.length - 1] }, pr = function (t, e, r, n, i, a) { var o; "<" === t || "\\lt" === t || "\u27e8" === t ? t = "\\langle" : ">" !== t && "\\gt" !== t && "\u27e9" !== t || (t = "\\rangle"), o = B.contains(sr, t) ? cr : B.contains(ar, t) ? hr : ur; var s = mr(t, e, o, n); return "small" === s.type ? function (t, e, r, n, i, a) { var o = oe.makeSymbol(t, "Main-Regular", i, n), s = Je(o, e, n, a); return r && Qe(s, n, e), s }(t, s.style, r, n, i, a) : "large" === s.type ? tr(t, s.size, r, n, i, a) : nr(t, e, r, n, i, a) }, fr = function (t, e) { + var r, n, i = e.havingBaseSizing(), a = mr("\\surd", t * i.sizeMultiplier, hr, i), o = i.sizeMultiplier, s = Math.max(0, e.minRuleThickness - e.fontMetrics().sqrtRuleThickness), l = 0, c = 0, u = 0; return "small" === a.type ? (t < 1 ? o = 1 : t < 1.4 && (o = .7), c = (1 + s) / o, (r = ir("sqrtMain", l = (1 + s + .08) / o, u = 1e3 + 1e3 * s + 80, s, e)).style.minWidth = "0.853em", n = .833 / o) : "large" === a.type ? (u = 1080 * lr[a.size], c = (lr[a.size] + s) / o, l = (lr[a.size] + s + .08) / o, (r = ir("sqrtSize" + a.size, l, u, s, e)).style.minWidth = "1.02em", n = 1 / o) : (l = t + s + .08, c = t + s, u = Math.floor(1e3 * t + s) + 80, + (r = ir("sqrtTall", l, u, s, e)).style.minWidth = "0.742em", n = 1.056), r.height = c, r.style.height = l + "em", { span: r, advanceWidth: n, ruleWidth: (e.fontMetrics().sqrtRuleThickness + s) * o } + }, gr = function (t, e, r, n, i) { if ("<" === t || "\\lt" === t || "\u27e8" === t ? t = "\\langle" : ">" !== t && "\\gt" !== t && "\u27e9" !== t || (t = "\\rangle"), B.contains(ar, t) || B.contains(sr, t)) return tr(t, e, !1, r, n, i); if (B.contains(or, t)) return nr(t, lr[e], !1, r, n, i); throw new z("Illegal delimiter: '" + t + "'") }, vr = pr, yr = function (t, e, r, n, i, a) { var o = n.fontMetrics().axisHeight * n.sizeMultiplier, s = 5 / n.fontMetrics().ptPerEm, l = Math.max(e - o, r + o), c = Math.max(l / 500 * 901, 2 * l - s); return pr(t, c, !0, n, i, a) }, br = { "\\bigl": { mclass: "mopen", size: 1 }, "\\Bigl": { mclass: "mopen", size: 2 }, "\\biggl": { mclass: "mopen", size: 3 }, "\\Biggl": { mclass: "mopen", size: 4 }, "\\bigr": { mclass: "mclose", size: 1 }, "\\Bigr": { mclass: "mclose", size: 2 }, "\\biggr": { mclass: "mclose", size: 3 }, "\\Biggr": { mclass: "mclose", size: 4 }, "\\bigm": { mclass: "mrel", size: 1 }, "\\Bigm": { mclass: "mrel", size: 2 }, "\\biggm": { mclass: "mrel", size: 3 }, "\\Biggm": { mclass: "mrel", size: 4 }, "\\big": { mclass: "mord", size: 1 }, "\\Big": { mclass: "mord", size: 2 }, "\\bigg": { mclass: "mord", size: 3 }, "\\Bigg": { mclass: "mord", size: 4 } }, xr = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\u230a", "\u230b", "\\lceil", "\\rceil", "\u2308", "\u2309", "<", ">", "\\langle", "\u27e8", "\\rangle", "\u27e9", "\\lt", "\\gt", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\u27ee", "\u27ef", "\\lmoustache", "\\rmoustache", "\u23b0", "\u23b1", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", "\\downarrow", "\\Downarrow", "\\updownarrow", "\\Updownarrow", "."]; d({ type: "delimsizing", names: ["\\bigl", "\\Bigl", "\\biggl", "\\Biggl", "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", "\\big", "\\Big", "\\bigg", "\\Bigg"], props: { numArgs: 1 }, handler: function (t, e) { var r = y(e[0], t); return { type: "delimsizing", mode: t.parser.mode, size: br[t.funcName].size, mclass: br[t.funcName].mclass, delim: r.text } }, htmlBuilder: function (t, e) { return "." === t.delim ? oe.makeSpan([t.mclass]) : gr(t.delim, t.size, e, t.mode, [t.mclass]) }, mathmlBuilder: function (t) { var e = []; "." !== t.delim && e.push(Le(t.delim, t.mode)); var r = new Ce.MathNode("mo", e); return "mopen" === t.mclass || "mclose" === t.mclass ? r.setAttribute("fence", "true") : r.setAttribute("fence", "false"), r } }), d({ type: "leftright-right", names: ["\\right"], props: { numArgs: 1 }, handler: function (t, e) { var r = t.parser.gullet.macros.get("\\current@color"); if (r && "string" != typeof r) throw new z("\\current@color set to non-string in \\right"); return { type: "leftright-right", mode: t.parser.mode, delim: y(e[0], t).text, color: r } } }), d({ type: "leftright", names: ["\\left"], props: { numArgs: 1 }, handler: function (t, e) { var r = y(e[0], t), n = t.parser; ++n.leftrightDepth; var i = n.parseExpression(!1); --n.leftrightDepth, n.expect("\\right", !1); var a = s(n.parseFunction(), "leftright-right"); return { type: "leftright", mode: n.mode, body: i, left: r.text, right: a.delim, rightColor: a.color } }, htmlBuilder: function (t, e) { b(t); for (var r, n, i = we(t.body, e, !0, ["mopen", "mclose"]), a = 0, o = 0, s = !1, l = 0; l < i.length; l++)i[l].isMiddle ? s = !0 : (a = Math.max(i[l].height, a), o = Math.max(i[l].depth, o)); if (a *= e.sizeMultiplier, o *= e.sizeMultiplier, r = "." === t.left ? Ee(e, ["mopen"]) : yr(t.left, a, o, e, t.mode, ["mopen"]), i.unshift(r), s) for (var c = 1; c < i.length; c++) { var u = i[c].isMiddle; u && (i[c] = yr(u.delim, a, o, u.options, t.mode, [])) } if ("." === t.right) n = Ee(e, ["mclose"]); else { var h = t.rightColor ? e.withColor(t.rightColor) : e; n = yr(t.right, a, o, h, t.mode, ["mclose"]) } return i.push(n), oe.makeSpan(["minner"], i, e) }, mathmlBuilder: function (t, e) { b(t); var r = Pe(t.body, e); if ("." !== t.left) { var n = new Ce.MathNode("mo", [Le(t.left, t.mode)]); n.setAttribute("fence", "true"), r.unshift(n) } if ("." !== t.right) { var i = new Ce.MathNode("mo", [Le(t.right, t.mode)]); i.setAttribute("fence", "true"), t.rightColor && i.setAttribute("mathcolor", t.rightColor), r.push(i) } return ze(r) } }), d({ type: "middle", names: ["\\middle"], props: { numArgs: 1 }, handler: function (t, e) { var r = y(e[0], t); if (!t.parser.leftrightDepth) throw new z("\\middle without preceding \\left", r); return { type: "middle", mode: t.parser.mode, delim: r.text } }, htmlBuilder: function (t, e) { var r; if ("." === t.delim) r = Ee(e, []); else { r = gr(t.delim, 1, e, t.mode, []); var n = { delim: t.delim, options: e }; r.isMiddle = n } return r }, mathmlBuilder: function (t) { var e = "\\vert" === t.delim || "|" === t.delim ? Le("|", "text") : Le(t.delim, t.mode), r = new Ce.MathNode("mo", [e]); return r.setAttribute("fence", "true"), r.setAttribute("lspace", "0.05em"), r.setAttribute("rspace", "0.05em"), r } }); var wr = function (t, e) { var r, n, i = oe.wrapFragment(Me(t.body, e), e), a = t.label.substr(1), o = e.sizeMultiplier, s = 0, l = B.isCharacterBox(t.body); if ("sout" === a) (r = oe.makeSpan(["stretchy", "sout"])).height = e.fontMetrics().defaultRuleThickness / o, s = -.5 * e.fontMetrics().xHeight; else { /cancel/.test(a) ? l || i.classes.push("cancel-pad") : i.classes.push("boxpad"); var c = 0, u = 0; /box/.test(a) ? (u = Math.max(e.fontMetrics().fboxrule, e.minRuleThickness), c = e.fontMetrics().fboxsep + ("colorbox" === a ? 0 : u)) : c = l ? .2 : 0, r = Ue(i, a, c, e), /fbox|boxed|fcolorbox/.test(a) && (r.style.borderStyle = "solid", r.style.borderWidth = u + "em"), s = i.depth + c, t.backgroundColor && (r.style.backgroundColor = t.backgroundColor, t.borderColor && (r.style.borderColor = t.borderColor)) } return n = t.backgroundColor ? oe.makeVList({ positionType: "individualShift", children: [{ type: "elem", elem: r, shift: s }, { type: "elem", elem: i, shift: 0 }] }, e) : oe.makeVList({ positionType: "individualShift", children: [{ type: "elem", elem: i, shift: 0 }, { type: "elem", elem: r, shift: s, wrapperClasses: /cancel/.test(a) ? ["svg-align"] : [] }] }, e), /cancel/.test(a) && (n.height = i.height, n.depth = i.depth), /cancel/.test(a) && !l ? oe.makeSpan(["mord", "cancel-lap"], [n], e) : oe.makeSpan(["mord"], [n], e) }, kr = function (t, e) { var r = 0, n = new Ce.MathNode(t.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [Oe(t.body, e)]); switch (t.label) { case "\\cancel": n.setAttribute("notation", "updiagonalstrike"); break; case "\\bcancel": n.setAttribute("notation", "downdiagonalstrike"); break; case "\\sout": n.setAttribute("notation", "horizontalstrike"); break; case "\\fbox": n.setAttribute("notation", "box"); break; case "\\fcolorbox": case "\\colorbox": if (r = e.fontMetrics().fboxsep * e.fontMetrics().ptPerEm, n.setAttribute("width", "+" + 2 * r + "pt"), n.setAttribute("height", "+" + 2 * r + "pt"), n.setAttribute("lspace", r + "pt"), n.setAttribute("voffset", r + "pt"), "\\fcolorbox" === t.label) { var i = Math.max(e.fontMetrics().fboxrule, e.minRuleThickness); n.setAttribute("style", "border: " + i + "em solid " + String(t.borderColor)) } break; case "\\xcancel": n.setAttribute("notation", "updiagonalstrike downdiagonalstrike") }return t.backgroundColor && n.setAttribute("mathbackground", t.backgroundColor), n }; d({ type: "enclose", names: ["\\colorbox"], props: { numArgs: 2, allowedInText: !0, greediness: 3, argTypes: ["color", "text"] }, handler: function (t, e) { var r = t.parser, n = t.funcName, i = s(e[0], "color-token").color, a = e[1]; return { type: "enclose", mode: r.mode, label: n, backgroundColor: i, body: a } }, htmlBuilder: wr, mathmlBuilder: kr }), d({ type: "enclose", names: ["\\fcolorbox"], props: { numArgs: 3, allowedInText: !0, greediness: 3, argTypes: ["color", "color", "text"] }, handler: function (t, e) { var r = t.parser, n = t.funcName, i = s(e[0], "color-token").color, a = s(e[1], "color-token").color, o = e[2]; return { type: "enclose", mode: r.mode, label: n, backgroundColor: a, borderColor: i, body: o } }, htmlBuilder: wr, mathmlBuilder: kr }), d({ type: "enclose", names: ["\\fbox"], props: { numArgs: 1, argTypes: ["hbox"], allowedInText: !0 }, handler: function (t, e) { return { type: "enclose", mode: t.parser.mode, label: "\\fbox", body: e[0] } } }), d({ type: "enclose", names: ["\\cancel", "\\bcancel", "\\xcancel", "\\sout"], props: { numArgs: 1 }, handler: function (t, e) { var r = t.parser, n = t.funcName, i = e[0]; return { type: "enclose", mode: r.mode, label: n, body: i } }, htmlBuilder: wr, mathmlBuilder: kr }); var Sr = {}, Ar = function (t, e) { function r(t) { for (var e = 0; e < t.length; ++e)e > 0 && (y += .25), c.push({ pos: y, isDashed: t[e] }) } var n, i, a = t.body.length, o = t.hLinesBeforeRow, s = 0, l = new Array(a), c = [], u = Math.max(e.fontMetrics().arrayRuleWidth, e.minRuleThickness), h = 1 / e.fontMetrics().ptPerEm, d = 5 * h; t.colSeparationType && "small" === t.colSeparationType && (d = e.havingStyle(G.SCRIPT).sizeMultiplier / e.sizeMultiplier * .2778); var m = 12 * h, p = 3 * h, f = t.arraystretch * m, g = .7 * f, v = .3 * f, y = 0; for (r(o[0]), n = 0; n < t.body.length; ++n) { var b = t.body[n], x = g, w = v; s < b.length && (s = b.length); var k = new Array(b.length); for (i = 0; i < b.length; ++i) { var S = Me(b[i], e); w < S.depth && (w = S.depth), x < S.height && (x = S.height), k[i] = S } var A = t.rowGaps[n], E = 0; A && (E = Xt(A, e)) > 0 && (w < (E += v) && (w = E), E = 0), t.addJot && (w += p), k.height = x, k.depth = w, y += x, k.pos = y, y += w + E, l[n] = k, r(o[n + 1]) } var M, R, T = y / 2 + e.fontMetrics().axisHeight, C = t.cols || [], L = []; for (i = 0, R = 0; i < s || R < C.length; ++i, ++R) { for (var N = C[R] || {}, P = !0; "separator" === N.type;) { if (P || ((M = oe.makeSpan(["arraycolsep"], [])).style.width = e.fontMetrics().doubleRuleSep + "em", L.push(M)), "|" !== N.separator && ":" !== N.separator) throw new z("Invalid separator type: " + N.separator); var I = "|" === N.separator ? "solid" : "dashed", O = oe.makeSpan(["vertical-separator"], [], e); O.style.height = y + "em", O.style.borderRightWidth = u + "em", O.style.borderRightStyle = I, O.style.margin = "0 -" + u / 2 + "em", O.style.verticalAlign = -(y - T) + "em", L.push(O), N = C[++R] || {}, P = !1 } if (!(i >= s)) { var q = void 0; (i > 0 || t.hskipBeforeAndAfter) && 0 !== (q = B.deflt(N.pregap, d)) && ((M = oe.makeSpan(["arraycolsep"], [])).style.width = q + "em", L.push(M)); var D = []; for (n = 0; n < a; ++n) { var F = l[n], H = F[i]; if (H) { var j = F.pos - T; H.depth = F.depth, H.height = F.height, D.push({ type: "elem", elem: H, shift: j }) } } D = oe.makeVList({ positionType: "individualShift", children: D }, e), D = oe.makeSpan(["col-align-" + (N.align || "c")], [D]), L.push(D), (i < s - 1 || t.hskipBeforeAndAfter) && 0 !== (q = B.deflt(N.postgap, d)) && ((M = oe.makeSpan(["arraycolsep"], [])).style.width = q + "em", L.push(M)) } } if (l = oe.makeSpan(["mtable"], L), c.length > 0) { for (var U = oe.makeLineSpan("hline", e, u), _ = oe.makeLineSpan("hdashline", e, u), V = [{ type: "elem", elem: l, shift: 0 }]; c.length > 0;) { var W = c.pop(), Y = W.pos - T; W.isDashed ? V.push({ type: "elem", elem: _, shift: Y }) : V.push({ type: "elem", elem: U, shift: Y }) } l = oe.makeVList({ positionType: "individualShift", children: V }, e) } return oe.makeSpan(["mord"], [l], e) }, Er = { c: "center ", l: "left ", r: "right " }, Mr = function (t, e) { var r = new Ce.MathNode("mtable", t.body.map(function (t) { return new Ce.MathNode("mtr", t.map(function (t) { return new Ce.MathNode("mtd", [Oe(t, e)]) })) })), n = .5 === t.arraystretch ? .1 : .16 + t.arraystretch - 1 + (t.addJot ? .09 : 0); r.setAttribute("rowspacing", n + "em"); var i = "", a = ""; if (t.cols) { var o = t.cols, s = "", l = !1, c = 0, u = o.length; "separator" === o[0].type && (i += "top ", c = 1), "separator" === o[o.length - 1].type && (i += "bottom ", u -= 1); for (var h = c; h < u; h++)"align" === o[h].type ? (a += Er[o[h].align], l && (s += "none "), l = !0) : "separator" === o[h].type && l && (s += "|" === o[h].separator ? "solid " : "dashed ", l = !1); r.setAttribute("columnalign", a.trim()), /[sd]/.test(s) && r.setAttribute("columnlines", s.trim()) } if ("align" === t.colSeparationType) { for (var d = t.cols || [], m = "", p = 1; p < d.length; p++)m += p % 2 ? "0em " : "1em "; r.setAttribute("columnspacing", m.trim()) } else "alignat" === t.colSeparationType ? r.setAttribute("columnspacing", "0em") : "small" === t.colSeparationType ? r.setAttribute("columnspacing", "0.2778em") : r.setAttribute("columnspacing", "1em"); var f = "", g = t.hLinesBeforeRow; i += g[0].length > 0 ? "left " : "", i += g[g.length - 1].length > 0 ? "right " : ""; for (var v = 1; v < g.length - 1; v++)f += 0 === g[v].length ? "none " : g[v][0] ? "dashed " : "solid "; return /[sd]/.test(f) && r.setAttribute("rowlines", f.trim()), "" !== i && (r = new Ce.MathNode("menclose", [r])).setAttribute("notation", i.trim()), t.arraystretch && t.arraystretch < 1 && (r = new Ce.MathNode("mstyle", [r])).setAttribute("scriptlevel", "1"), r }, Rr = function (t, e) { var r, n = [], i = k(t.parser, { cols: n, addJot: !0 }, "display"), a = 0, o = { type: "ordgroup", mode: t.mode, body: [] }, c = l(e[0], "ordgroup"); if (c) { for (var u = "", h = 0; h < c.body.length; h++)u += s(c.body[h], "textord").text; r = Number(u), a = 2 * r } var d = !a; i.body.forEach(function (t) { for (var e = 1; e < t.length; e += 2) { s(s(t[e], "styling").body[0], "ordgroup").body.unshift(o) } if (d) a < t.length && (a = t.length); else { var n = t.length / 2; if (r < n) throw new z("Too many math in a row: expected " + r + ", but got " + n, t[0]) } }); for (var m = 0; m < a; ++m) { var p = "r", f = 0; m % 2 == 1 ? p = "l" : m > 0 && d && (f = 1), n[m] = { type: "align", align: p, pregap: f, postgap: 0 } } return i.colSeparationType = d ? "align" : "alignat", i }; x({ type: "array", names: ["array", "darray"], props: { numArgs: 1 }, handler: function (t, e) { var r = { cols: (h(e[0]) ? [e[0]] : s(e[0], "ordgroup").body).map(function (t) { var e = u(t).text; if (-1 !== "lcr".indexOf(e)) return { type: "align", align: e }; if ("|" === e) return { type: "separator", separator: "|" }; if (":" === e) return { type: "separator", separator: ":" }; throw new z("Unknown column alignment: " + e, t) }), hskipBeforeAndAfter: !0 }; return k(t.parser, r, S(t.envName)) }, htmlBuilder: Ar, mathmlBuilder: Mr }), x({ type: "array", names: ["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix"], props: { numArgs: 0 }, handler: function (t) { var e = { matrix: null, pmatrix: ["(", ")"], bmatrix: ["[", "]"], Bmatrix: ["\\{", "\\}"], vmatrix: ["|", "|"], Vmatrix: ["\\Vert", "\\Vert"] }[t.envName], r = k(t.parser, { hskipBeforeAndAfter: !1 }, S(t.envName)); return e ? { type: "leftright", mode: t.mode, body: [r], left: e[0], right: e[1], rightColor: void 0 } : r }, htmlBuilder: Ar, mathmlBuilder: Mr }), x({ type: "array", names: ["smallmatrix"], props: { numArgs: 0 }, handler: function (t) { var e = k(t.parser, { arraystretch: .5 }, "script"); return e.colSeparationType = "small", e }, htmlBuilder: Ar, mathmlBuilder: Mr }), x({ type: "array", names: ["subarray"], props: { numArgs: 1 }, handler: function (t, e) { var r = (h(e[0]) ? [e[0]] : s(e[0], "ordgroup").body).map(function (t) { var e = u(t).text; if (-1 !== "lc".indexOf(e)) return { type: "align", align: e }; throw new z("Unknown column alignment: " + e, t) }); if (r.length > 1) throw new z("{subarray} can contain only one column"); var n = { cols: r, hskipBeforeAndAfter: !1, arraystretch: .5 }; if ((n = k(t.parser, n, "script")).body[0].length > 1) throw new z("{subarray} can contain only one column"); return n }, htmlBuilder: Ar, mathmlBuilder: Mr }), x({ type: "array", names: ["cases", "dcases"], props: { numArgs: 0 }, handler: function (t) { var e = k(t.parser, { arraystretch: 1.2, cols: [{ type: "align", align: "l", pregap: 0, postgap: 1 }, { type: "align", align: "l", pregap: 0, postgap: 0 }] }, S(t.envName)); return { type: "leftright", mode: t.mode, body: [e], left: "\\{", right: ".", rightColor: void 0 } }, htmlBuilder: Ar, mathmlBuilder: Mr }), x({ type: "array", names: ["aligned"], props: { numArgs: 0 }, handler: Rr, htmlBuilder: Ar, mathmlBuilder: Mr }), x({ type: "array", names: ["gathered"], props: { numArgs: 0 }, handler: function (t) { return k(t.parser, { cols: [{ type: "align", align: "c" }], addJot: !0 }, "display") }, htmlBuilder: Ar, mathmlBuilder: Mr }), x({ type: "array", names: ["alignedat"], props: { numArgs: 1 }, handler: Rr, htmlBuilder: Ar, mathmlBuilder: Mr }), d({ type: "text", names: ["\\hline", "\\hdashline"], props: { numArgs: 0, allowedInText: !0, allowedInMath: !0 }, handler: function (t) { throw new z(t.funcName + " valid only within array environment") } }); var Tr = Sr; d({ type: "environment", names: ["\\begin", "\\end"], props: { numArgs: 1, argTypes: ["text"] }, handler: function (t, e) { var r = t.parser, n = t.funcName, i = e[0]; if ("ordgroup" !== i.type) throw new z("Invalid environment name", i); for (var a = "", o = 0; o < i.body.length; ++o)a += s(i.body[o], "textord").text; if ("\\begin" === n) { if (!Tr.hasOwnProperty(a)) throw new z("No such environment: " + a, i); var l = Tr[a], c = r.parseArguments("\\begin{" + a + "}", l), u = c.args, h = c.optArgs, d = { mode: r.mode, envName: a, parser: r }, m = l.handler(d, u, h); r.expect("\\end", !1); var p = r.nextToken, f = s(r.parseFunction(), "environment"); if (f.name !== a) throw new z("Mismatch: \\begin{" + a + "} matched by \\end{" + f.name + "}", p); return m } return { type: "environment", mode: r.mode, name: a, nameGroup: i } } }); var Cr = oe.makeSpan; d({ type: "mclass", names: ["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"], props: { numArgs: 1 }, handler: function (t, e) { var r = t.parser, n = t.funcName, i = e[0]; return { type: "mclass", mode: r.mode, mclass: "m" + n.substr(5), body: fe(i), isCharacterBox: B.isCharacterBox(i) } }, htmlBuilder: A, mathmlBuilder: E }); var Lr = function (t) { var e = "ordgroup" === t.type && t.body.length ? t.body[0] : t; return "atom" !== e.type || "bin" !== e.family && "rel" !== e.family ? "mord" : "m" + e.family }; d({ type: "mclass", names: ["\\@binrel"], props: { numArgs: 2 }, handler: function (t, e) { return { type: "mclass", mode: t.parser.mode, mclass: Lr(e[0]), body: [e[1]], isCharacterBox: B.isCharacterBox(e[1]) } } }), d({ type: "mclass", names: ["\\stackrel", "\\overset", "\\underset"], props: { numArgs: 2 }, handler: function (t, e) { var r, n = t.parser, i = t.funcName, a = e[1], o = e[0]; r = "\\stackrel" !== i ? Lr(a) : "mrel"; var s = { type: "op", mode: a.mode, limits: !0, alwaysHandleSupSub: !0, parentIsSupSub: !1, symbol: !1, suppressBaseShift: "\\stackrel" !== i, body: fe(a) }, l = { type: "supsub", mode: o.mode, base: s, sup: "\\underset" === i ? null : o, sub: "\\underset" === i ? o : null }; return { type: "mclass", mode: n.mode, mclass: r, body: [l], isCharacterBox: B.isCharacterBox(l) } }, htmlBuilder: A, mathmlBuilder: E }); var zr = function (t, e) { var r = t.font, n = e.withFont(r); return Me(t.body, n) }, Nr = function (t, e) { var r = t.font, n = e.withFont(r); return Oe(t.body, n) }, Pr = { "\\Bbb": "\\mathbb", "\\bold": "\\mathbf", "\\frak": "\\mathfrak", "\\bm": "\\boldsymbol" }; d({ type: "font", names: ["\\mathrm", "\\mathit", "\\mathbf", "\\mathnormal", "\\mathbb", "\\mathcal", "\\mathfrak", "\\mathscr", "\\mathsf", "\\mathtt", "\\Bbb", "\\bold", "\\frak"], props: { numArgs: 1, greediness: 2 }, handler: function (t, e) { var r = t.parser, n = t.funcName, i = e[0], a = n; return a in Pr && (a = Pr[a]), { type: "font", mode: r.mode, font: a.slice(1), body: i } }, htmlBuilder: zr, mathmlBuilder: Nr }), d({ type: "mclass", names: ["\\boldsymbol", "\\bm"], props: { numArgs: 1, greediness: 2 }, handler: function (t, e) { var r = t.parser, n = e[0], i = B.isCharacterBox(n); return { type: "mclass", mode: r.mode, mclass: Lr(n), body: [{ type: "font", mode: r.mode, font: "boldsymbol", body: n }], isCharacterBox: i } } }), d({ type: "font", names: ["\\rm", "\\sf", "\\tt", "\\bf", "\\it"], props: { numArgs: 0, allowedInText: !0 }, handler: function (t) { var e = t.parser, r = t.funcName, n = t.breakOnTokenText, i = e.mode, a = e.parseExpression(!0, n); return { type: "font", mode: i, font: "math" + r.slice(1), body: { type: "ordgroup", mode: e.mode, body: a } } }, htmlBuilder: zr, mathmlBuilder: Nr }); var Ir = function (t, e) { var r = e; return "display" === t ? r = r.id >= G.SCRIPT.id ? r.text() : G.DISPLAY : "text" === t && r.size === G.DISPLAY.size ? r = G.TEXT : "script" === t ? r = G.SCRIPT : "scriptscript" === t && (r = G.SCRIPTSCRIPT), r }, Or = function (t, e) { var r, n = Ir(t.size, e.style), i = n.fracNum(), a = n.fracDen(); r = e.havingStyle(i); var o = Me(t.numer, r, e); if (t.continued) { var s = 8.5 / e.fontMetrics().ptPerEm, l = 3.5 / e.fontMetrics().ptPerEm; o.height = o.height < s ? s : o.height, o.depth = o.depth < l ? l : o.depth } r = e.havingStyle(a); var c, u, h, d, m, p, f, g, v, y, b = Me(t.denom, r, e); if (t.hasBarLine ? (t.barSize ? (u = Xt(t.barSize, e), c = oe.makeLineSpan("frac-line", e, u)) : c = oe.makeLineSpan("frac-line", e), u = c.height, h = c.height) : (c = null, u = 0, h = e.fontMetrics().defaultRuleThickness), n.size === G.DISPLAY.size || "display" === t.size ? (d = e.fontMetrics().num1, m = u > 0 ? 3 * h : 7 * h, p = e.fontMetrics().denom1) : (u > 0 ? (d = e.fontMetrics().num2, m = h) : (d = e.fontMetrics().num3, m = 3 * h), p = e.fontMetrics().denom2), c) { var x = e.fontMetrics().axisHeight; d - o.depth - (x + .5 * u) < m && (d += m - (d - o.depth - (x + .5 * u))), x - .5 * u - (b.height - p) < m && (p += m - (x - .5 * u - (b.height - p))); var w = -(x - .5 * u); f = oe.makeVList({ positionType: "individualShift", children: [{ type: "elem", elem: b, shift: p }, { type: "elem", elem: c, shift: w }, { type: "elem", elem: o, shift: -d }] }, e) } else { var k = d - o.depth - (b.height - p); k < m && (d += .5 * (m - k), p += .5 * (m - k)), f = oe.makeVList({ positionType: "individualShift", children: [{ type: "elem", elem: b, shift: p }, { type: "elem", elem: o, shift: -d }] }, e) } return r = e.havingStyle(n), f.height *= r.sizeMultiplier / e.sizeMultiplier, f.depth *= r.sizeMultiplier / e.sizeMultiplier, g = n.size === G.DISPLAY.size ? e.fontMetrics().delim1 : e.fontMetrics().delim2, v = null == t.leftDelim ? Ee(e, ["mopen"]) : vr(t.leftDelim, g, !0, e.havingStyle(n), t.mode, ["mopen"]), y = t.continued ? oe.makeSpan([]) : null == t.rightDelim ? Ee(e, ["mclose"]) : vr(t.rightDelim, g, !0, e.havingStyle(n), t.mode, ["mclose"]), oe.makeSpan(["mord"].concat(r.sizingClasses(e)), [v, oe.makeSpan(["mfrac"], [f]), y], e) }, Br = function (t, e) { var r = new Ce.MathNode("mfrac", [Oe(t.numer, e), Oe(t.denom, e)]); if (t.hasBarLine) { if (t.barSize) { var n = Xt(t.barSize, e); r.setAttribute("linethickness", n + "em") } } else r.setAttribute("linethickness", "0px"); var i = Ir(t.size, e.style); if (i.size !== e.style.size) { r = new Ce.MathNode("mstyle", [r]); var a = i.size === G.DISPLAY.size ? "true" : "false"; r.setAttribute("displaystyle", a), r.setAttribute("scriptlevel", "0") } if (null != t.leftDelim || null != t.rightDelim) { var o = []; if (null != t.leftDelim) { var s = new Ce.MathNode("mo", [new Ce.TextNode(t.leftDelim.replace("\\", ""))]); s.setAttribute("fence", "true"), o.push(s) } if (o.push(r), null != t.rightDelim) { var l = new Ce.MathNode("mo", [new Ce.TextNode(t.rightDelim.replace("\\", ""))]); l.setAttribute("fence", "true"), o.push(l) } return ze(o) } return r }; d({ type: "genfrac", names: ["\\cfrac", "\\dfrac", "\\frac", "\\tfrac", "\\dbinom", "\\binom", "\\tbinom", "\\\\atopfrac", "\\\\bracefrac", "\\\\brackfrac"], props: { numArgs: 2, greediness: 2 }, handler: function (t, e) { var r, n = t.parser, i = t.funcName, a = e[0], o = e[1], s = null, l = null, c = "auto"; switch (i) { case "\\cfrac": case "\\dfrac": case "\\frac": case "\\tfrac": r = !0; break; case "\\\\atopfrac": r = !1; break; case "\\dbinom": case "\\binom": case "\\tbinom": r = !1, s = "(", l = ")"; break; case "\\\\bracefrac": r = !1, s = "\\{", l = "\\}"; break; case "\\\\brackfrac": r = !1, s = "[", l = "]"; break; default: throw new Error("Unrecognized genfrac command") }switch (i) { case "\\cfrac": case "\\dfrac": case "\\dbinom": c = "display"; break; case "\\tfrac": case "\\tbinom": c = "text" }return { type: "genfrac", mode: n.mode, continued: "\\cfrac" === i, numer: a, denom: o, hasBarLine: r, leftDelim: s, rightDelim: l, size: c, barSize: null } }, htmlBuilder: Or, mathmlBuilder: Br }), d({ type: "infix", names: ["\\over", "\\choose", "\\atop", "\\brace", "\\brack"], props: { numArgs: 0, infix: !0 }, handler: function (t) { var e, r = t.parser, n = t.funcName, i = t.token; switch (n) { case "\\over": e = "\\frac"; break; case "\\choose": e = "\\binom"; break; case "\\atop": e = "\\\\atopfrac"; break; case "\\brace": e = "\\\\bracefrac"; break; case "\\brack": e = "\\\\brackfrac"; break; default: throw new Error("Unrecognized infix genfrac command") }return { type: "infix", mode: r.mode, replaceWith: e, token: i } } }); var qr = ["display", "text", "script", "scriptscript"], Dr = function (t) { var e = null; return t.length > 0 && (e = "." === (e = t) ? null : e), e }; d({ type: "genfrac", names: ["\\genfrac"], props: { numArgs: 6, greediness: 6, argTypes: ["math", "math", "size", "text", "math", "math"] }, handler: function (t, e) { var r = t.parser, n = e[4], i = e[5], a = l(e[0], "atom"); a && (a = c(e[0], "open")); var o = a ? Dr(a.text) : null, u = l(e[1], "atom"); u && (u = c(e[1], "close")); var h, d = u ? Dr(u.text) : null, m = s(e[2], "size"), p = null; h = !!m.isBlank || (p = m.value).number > 0; var f = "auto", g = l(e[3], "ordgroup"); if (g) { if (g.body.length > 0) { var v = s(g.body[0], "textord"); f = qr[Number(v.text)] } } else g = s(e[3], "textord"), f = qr[Number(g.text)]; return { type: "genfrac", mode: r.mode, numer: n, denom: i, continued: !1, hasBarLine: h, barSize: p, leftDelim: o, rightDelim: d, size: f } }, htmlBuilder: Or, mathmlBuilder: Br }), d({ type: "infix", names: ["\\above"], props: { numArgs: 1, argTypes: ["size"], infix: !0 }, handler: function (t, e) { var r = t.parser, n = (t.funcName, t.token); return { type: "infix", mode: r.mode, replaceWith: "\\\\abovefrac", size: s(e[0], "size").value, token: n } } }), d({ type: "genfrac", names: ["\\\\abovefrac"], props: { numArgs: 3, argTypes: ["math", "size", "math"] }, handler: function (t, e) { var r = t.parser, n = (t.funcName, e[0]), i = function (t) { if (!t) throw new Error("Expected non-null, but got " + String(t)); return t }(s(e[1], "infix").size), a = e[2], o = i.number > 0; return { type: "genfrac", mode: r.mode, numer: n, denom: a, continued: !1, hasBarLine: o, barSize: i, leftDelim: null, rightDelim: null, size: "auto" } }, htmlBuilder: Or, mathmlBuilder: Br }); var Fr = function (t, e) { var r, n, i = e.style, a = l(t, "supsub"); a ? (r = a.sup ? Me(a.sup, e.havingStyle(i.sup()), e) : Me(a.sub, e.havingStyle(i.sub()), e), n = s(a.base, "horizBrace")) : n = s(t, "horizBrace"); var o, c = Me(n.base, e.havingBaseStyle(G.DISPLAY)), u = Ve(n, e); if (n.isOver ? (o = oe.makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: c }, { type: "kern", size: .1 }, { type: "elem", elem: u }] }, e)).children[0].children[0].children[1].classes.push("svg-align") : (o = oe.makeVList({ positionType: "bottom", positionData: c.depth + .1 + u.height, children: [{ type: "elem", elem: u }, { type: "kern", size: .1 }, { type: "elem", elem: c }] }, e)).children[0].children[0].children[0].classes.push("svg-align"), r) { var h = oe.makeSpan(["mord", n.isOver ? "mover" : "munder"], [o], e); o = n.isOver ? oe.makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: h }, { type: "kern", size: .2 }, { type: "elem", elem: r }] }, e) : oe.makeVList({ positionType: "bottom", positionData: h.depth + .2 + r.height + r.depth, children: [{ type: "elem", elem: r }, { type: "kern", size: .2 }, { type: "elem", elem: h }] }, e) } return oe.makeSpan(["mord", n.isOver ? "mover" : "munder"], [o], e) }; d({ type: "horizBrace", names: ["\\overbrace", "\\underbrace"], props: { numArgs: 1 }, handler: function (t, e) { var r = t.parser, n = t.funcName; return { type: "horizBrace", mode: r.mode, label: n, isOver: /^\\over/.test(n), base: e[0] } }, htmlBuilder: Fr, mathmlBuilder: function (t, e) { var r = _e(t.label); return new Ce.MathNode(t.isOver ? "mover" : "munder", [Oe(t.base, e), r]) } }), d({ type: "href", names: ["\\href"], props: { numArgs: 2, argTypes: ["url", "original"], allowedInText: !0 }, handler: function (t, e) { var r = t.parser, n = e[1], i = s(e[0], "url").url; return r.settings.isTrusted({ command: "\\href", url: i }) ? { type: "href", mode: r.mode, href: i, body: fe(n) } : r.formatUnsupportedCmd("\\href") }, htmlBuilder: function (t, e) { var r = we(t.body, e, !1); return oe.makeAnchor(t.href, [], r, e) }, mathmlBuilder: function (t, e) { var r = Ie(t.body, e); return r instanceof Re || (r = new Re("mrow", [r])), r.setAttribute("href", t.href), r } }), d({ type: "href", names: ["\\url"], props: { numArgs: 1, argTypes: ["url"], allowedInText: !0 }, handler: function (t, e) { var r = t.parser, n = s(e[0], "url").url; if (!r.settings.isTrusted({ command: "\\url", url: n })) return r.formatUnsupportedCmd("\\url"); for (var i = [], a = 0; a < n.length; a++) { var o = n[a]; "~" === o && (o = "\\textasciitilde"), i.push({ type: "textord", mode: "text", text: o }) } var l = { type: "text", mode: r.mode, font: "\\texttt", body: i }; return { type: "href", mode: r.mode, href: n, body: fe(l) } } }), d({ type: "htmlmathml", names: ["\\html@mathml"], props: { numArgs: 2, allowedInText: !0 }, handler: function (t, e) { return { type: "htmlmathml", mode: t.parser.mode, html: fe(e[0]), mathml: fe(e[1]) } }, htmlBuilder: function (t, e) { var r = we(t.html, e, !1); return oe.makeFragment(r) }, mathmlBuilder: function (t, e) { return Ie(t.mathml, e) } }); var Hr = function (t) { if (/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t)) return { number: +t, unit: "bp" }; var e = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t); if (!e) throw new z("Invalid size: '" + t + "' in \\includegraphics"); var r = { number: +(e[1] + e[2]), unit: e[3] }; if (!Yt(r)) throw new z("Invalid unit: '" + r.unit + "' in \\includegraphics."); return r }; d({ type: "includegraphics", names: ["\\includegraphics"], props: { numArgs: 1, numOptionalArgs: 1, argTypes: ["raw", "url"], allowedInText: !1 }, handler: function (t, e, r) { var n = t.parser, i = { number: 0, unit: "em" }, a = { number: .9, unit: "em" }, o = { number: 0, unit: "em" }, l = ""; if (r[0]) for (var c = s(r[0], "raw").string.split(","), u = 0; u < c.length; u++) { var h = c[u].split("="); if (2 === h.length) { var d = h[1].trim(); switch (h[0].trim()) { case "alt": l = d; break; case "width": i = Hr(d); break; case "height": a = Hr(d); break; case "totalheight": o = Hr(d); break; default: throw new z("Invalid key: '" + h[0] + "' in \\includegraphics.") } } } var m = s(e[0], "url").url; return "" === l && (l = (l = (l = m).replace(/^.*[\\\/]/, "")).substring(0, l.lastIndexOf("."))), n.settings.isTrusted({ command: "\\includegraphics", url: m }) ? { type: "includegraphics", mode: n.mode, alt: l, width: i, height: a, totalheight: o, src: m } : n.formatUnsupportedCmd("\\includegraphics") }, htmlBuilder: function (t, e) { var r = Xt(t.height, e), n = 0; t.totalheight.number > 0 && (n = Xt(t.totalheight, e) - r, n = Number(n.toFixed(2))); var i = 0; t.width.number > 0 && (i = Xt(t.width, e)); var a = { height: r + n + "em" }; i > 0 && (a.width = i + "em"), n > 0 && (a.verticalAlign = -n + "em"); var o = new nt(t.src, t.alt, a); return o.height = r, o.depth = n, o }, mathmlBuilder: function (t, e) { var r = new Ce.MathNode("mglyph", []); r.setAttribute("alt", t.alt); var n = Xt(t.height, e), i = 0; if (t.totalheight.number > 0 && (i = (i = Xt(t.totalheight, e) - n).toFixed(2), r.setAttribute("valign", "-" + i + "em")), r.setAttribute("height", n + i + "em"), t.width.number > 0) { var a = Xt(t.width, e); r.setAttribute("width", a + "em") } return r.setAttribute("src", t.src), r } }), d({ type: "kern", names: ["\\kern", "\\mkern", "\\hskip", "\\mskip"], props: { numArgs: 1, argTypes: ["size"], allowedInText: !0 }, handler: function (t, e) { var r = t.parser, n = t.funcName, i = s(e[0], "size"); if (r.settings.strict) { var a = "m" === n[1], o = "mu" === i.value.unit; a ? (o || r.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + n + " supports only mu units, not " + i.value.unit + " units"), "math" !== r.mode && r.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + n + " works only in math mode")) : o && r.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + n + " doesn't support mu units") } return { type: "kern", mode: r.mode, dimension: i.value } }, htmlBuilder: function (t, e) { return oe.makeGlue(t.dimension, e) }, mathmlBuilder: function (t, e) { var r = Xt(t.dimension, e); return new Ce.SpaceNode(r) } }), d({ type: "lap", names: ["\\mathllap", "\\mathrlap", "\\mathclap"], props: { numArgs: 1, allowedInText: !0 }, handler: function (t, e) { var r = t.parser, n = t.funcName, i = e[0]; return { type: "lap", mode: r.mode, alignment: n.slice(5), body: i } }, htmlBuilder: function (t, e) { var r; "clap" === t.alignment ? (r = oe.makeSpan([], [Me(t.body, e)]), r = oe.makeSpan(["inner"], [r], e)) : r = oe.makeSpan(["inner"], [Me(t.body, e)]); var n = oe.makeSpan(["fix"], []), i = oe.makeSpan([t.alignment], [r, n], e), a = oe.makeSpan(["strut"]); return a.style.height = i.height + i.depth + "em", a.style.verticalAlign = -i.depth + "em", i.children.unshift(a), i = oe.makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: i }] }, e), oe.makeSpan(["mord"], [i], e) }, mathmlBuilder: function (t, e) { var r = new Ce.MathNode("mpadded", [Oe(t.body, e)]); if ("rlap" !== t.alignment) { var n = "llap" === t.alignment ? "-1" : "-0.5"; r.setAttribute("lspace", n + "width") } return r.setAttribute("width", "0px"), r } }), d({ type: "styling", names: ["\\(", "$"], props: { numArgs: 0, allowedInText: !0, allowedInMath: !1 }, handler: function (t) { var e = t.funcName, r = t.parser, n = r.mode; r.switchMode("math"); var i = "\\(" === e ? "\\)" : "$", a = r.parseExpression(!1, i); return r.expect(i), r.switchMode(n), { type: "styling", mode: r.mode, style: "text", body: a } } }), d({ type: "text", names: ["\\)", "\\]"], props: { numArgs: 0, allowedInText: !0, allowedInMath: !1 }, handler: function (t) { throw new z("Mismatched " + t.funcName) } }); var jr = function (t, e) { switch (e.style.size) { case G.DISPLAY.size: return t.display; case G.TEXT.size: return t.text; case G.SCRIPT.size: return t.script; case G.SCRIPTSCRIPT.size: return t.scriptscript; default: return t.text } }; d({ type: "mathchoice", names: ["\\mathchoice"], props: { numArgs: 4 }, handler: function (t, e) { return { type: "mathchoice", mode: t.parser.mode, display: fe(e[0]), text: fe(e[1]), script: fe(e[2]), scriptscript: fe(e[3]) } }, htmlBuilder: function (t, e) { var r = jr(t, e), n = we(r, e, !1); return oe.makeFragment(n) }, mathmlBuilder: function (t, e) { var r = jr(t, e); return Ie(r, e) } }); var Ur = function (t, e, r, n, i, a, o) { var s, l, c; if (t = oe.makeSpan([], [t]), e) { var u = Me(e, n.havingStyle(i.sup()), n); l = { elem: u, kern: Math.max(n.fontMetrics().bigOpSpacing1, n.fontMetrics().bigOpSpacing3 - u.depth) } } if (r) { var h = Me(r, n.havingStyle(i.sub()), n); s = { elem: h, kern: Math.max(n.fontMetrics().bigOpSpacing2, n.fontMetrics().bigOpSpacing4 - h.height) } } if (l && s) { var d = n.fontMetrics().bigOpSpacing5 + s.elem.height + s.elem.depth + s.kern + t.depth + o; c = oe.makeVList({ positionType: "bottom", positionData: d, children: [{ type: "kern", size: n.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: s.elem, marginLeft: -a + "em" }, { type: "kern", size: s.kern }, { type: "elem", elem: t }, { type: "kern", size: l.kern }, { type: "elem", elem: l.elem, marginLeft: a + "em" }, { type: "kern", size: n.fontMetrics().bigOpSpacing5 }] }, n) } else if (s) { var m = t.height - o; c = oe.makeVList({ positionType: "top", positionData: m, children: [{ type: "kern", size: n.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: s.elem, marginLeft: -a + "em" }, { type: "kern", size: s.kern }, { type: "elem", elem: t }] }, n) } else { if (!l) return t; var p = t.depth + o; c = oe.makeVList({ positionType: "bottom", positionData: p, children: [{ type: "elem", elem: t }, { type: "kern", size: l.kern }, { type: "elem", elem: l.elem, marginLeft: a + "em" }, { type: "kern", size: n.fontMetrics().bigOpSpacing5 }] }, n) } return oe.makeSpan(["mop", "op-limits"], [c], n) }, _r = ["\\smallint"], Vr = function (t, e) { + var r, n, i, a = !1, o = l(t, "supsub"); o ? (r = o.sup, n = o.sub, i = s(o.base, "op"), a = !0) : i = s(t, "op"); var c, u = e.style, h = !1; if (u.size === G.DISPLAY.size && i.symbol && !B.contains(_r, i.name) && (h = !0), i.symbol) { var d = h ? "Size2-Regular" : "Size1-Regular", m = ""; if ("\\oiint" !== i.name && "\\oiiint" !== i.name || (m = i.name.substr(1), i.name = "oiint" === m ? "\\iint" : "\\iiint"), c = oe.makeSymbol(i.name, d, "math", e, ["mop", "op-symbol", h ? "large-op" : "small-op"]), m.length > 0) { var p = c.italic, f = oe.staticSvg(m + "Size" + (h ? "2" : "1"), e); c = oe.makeVList({ positionType: "individualShift", children: [{ type: "elem", elem: c, shift: 0 }, { type: "elem", elem: f, shift: h ? .08 : 0 }] }, e), i.name = "\\" + m, c.classes.unshift("mop"), c.italic = p } } else if (i.body) { var g = we(i.body, e, !0); 1 === g.length && g[0] instanceof at ? (c = g[0]).classes[0] = "mop" : c = oe.makeSpan(["mop"], oe.tryCombineChars(g), e) } else { for (var v = [], y = 1; y < i.name.length; y++)v.push(oe.mathsym(i.name[y], i.mode, e)); c = oe.makeSpan(["mop"], v, e) } var b = 0, x = 0; return (c instanceof at || "\\oiint" === i.name || "\\oiiint" === i.name) && !i.suppressBaseShift && (b = (c.height - c.depth) / 2 - e.fontMetrics().axisHeight, x = c.italic), a ? Ur(c, r, n, e, u, x, b) : (b && (c.style.position = "relative", + c.style.top = b + "em"), c) + }, Wr = function (t, e) { var r; if (t.symbol) r = new Re("mo", [Le(t.name, t.mode)]), B.contains(_r, t.name) && r.setAttribute("largeop", "false"); else if (t.body) r = new Re("mo", Pe(t.body, e)); else { r = new Re("mi", [new Te(t.name.slice(1))]); var n = new Re("mo", [Le("\u2061", "text")]); r = t.parentIsSupSub ? new Re("mo", [r, n]) : g([r, n]) } return r }, Gr = { "\u220f": "\\prod", "\u2210": "\\coprod", "\u2211": "\\sum", "\u22c0": "\\bigwedge", "\u22c1": "\\bigvee", "\u22c2": "\\bigcap", "\u22c3": "\\bigcup", "\u2a00": "\\bigodot", "\u2a01": "\\bigoplus", "\u2a02": "\\bigotimes", "\u2a04": "\\biguplus", "\u2a06": "\\bigsqcup" }; d({ type: "op", names: ["\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap", "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes", "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint", "\u220f", "\u2210", "\u2211", "\u22c0", "\u22c1", "\u22c2", "\u22c3", "\u2a00", "\u2a01", "\u2a02", "\u2a04", "\u2a06"], props: { numArgs: 0 }, handler: function (t) { var e = t.parser, r = t.funcName; return 1 === r.length && (r = Gr[r]), { type: "op", mode: e.mode, limits: !0, parentIsSupSub: !1, symbol: !0, name: r } }, htmlBuilder: Vr, mathmlBuilder: Wr }), d({ type: "op", names: ["\\mathop"], props: { numArgs: 1 }, handler: function (t, e) { var r = t.parser, n = e[0]; return { type: "op", mode: r.mode, limits: !1, parentIsSupSub: !1, symbol: !1, body: fe(n) } }, htmlBuilder: Vr, mathmlBuilder: Wr }); var Yr = { "\u222b": "\\int", "\u222c": "\\iint", "\u222d": "\\iiint", "\u222e": "\\oint", "\u222f": "\\oiint", "\u2230": "\\oiiint" }; d({ type: "op", names: ["\\arcsin", "\\arccos", "\\arctan", "\\arctg", "\\arcctg", "\\arg", "\\ch", "\\cos", "\\cosec", "\\cosh", "\\cot", "\\cotg", "\\coth", "\\csc", "\\ctg", "\\cth", "\\deg", "\\dim", "\\exp", "\\hom", "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh", "\\sh", "\\tan", "\\tanh", "\\tg", "\\th"], props: { numArgs: 0 }, handler: function (t) { var e = t.parser, r = t.funcName; return { type: "op", mode: e.mode, limits: !1, parentIsSupSub: !1, symbol: !1, name: r } }, htmlBuilder: Vr, mathmlBuilder: Wr }), d({ type: "op", names: ["\\det", "\\gcd", "\\inf", "\\lim", "\\max", "\\min", "\\Pr", "\\sup"], props: { numArgs: 0 }, handler: function (t) { var e = t.parser, r = t.funcName; return { type: "op", mode: e.mode, limits: !0, parentIsSupSub: !1, symbol: !1, name: r } }, htmlBuilder: Vr, mathmlBuilder: Wr }), d({ type: "op", names: ["\\int", "\\iint", "\\iiint", "\\oint", "\\oiint", "\\oiiint", "\u222b", "\u222c", "\u222d", "\u222e", "\u222f", "\u2230"], props: { numArgs: 0 }, handler: function (t) { var e = t.parser, r = t.funcName; return 1 === r.length && (r = Yr[r]), { type: "op", mode: e.mode, limits: !1, parentIsSupSub: !1, symbol: !0, name: r } }, htmlBuilder: Vr, mathmlBuilder: Wr }); var Xr = function (t, e) { var r, n, i, a, o = !1, c = l(t, "supsub"); if (c ? (r = c.sup, n = c.sub, i = s(c.base, "operatorname"), o = !0) : i = s(t, "operatorname"), i.body.length > 0) { for (var u = i.body.map(function (t) { var e = t.text; return "string" == typeof e ? { type: "textord", mode: t.mode, text: e } : t }), h = we(u, e.withFont("mathrm"), !0), d = 0; d < h.length; d++) { var m = h[d]; m instanceof at && (m.text = m.text.replace(/\u2212/, "-").replace(/\u2217/, "*")) } a = oe.makeSpan(["mop"], h, e) } else a = oe.makeSpan(["mop"], [], e); return o ? Ur(a, r, n, e, e.style, 0, 0) : a }; d({ type: "operatorname", names: ["\\operatorname", "\\operatorname*"], props: { numArgs: 1 }, handler: function (t, e) { var r = t.parser, n = t.funcName, i = e[0]; return { type: "operatorname", mode: r.mode, body: fe(i), alwaysHandleSupSub: "\\operatorname*" === n, limits: !1, parentIsSupSub: !1 } }, htmlBuilder: Xr, mathmlBuilder: function (t, e) { for (var r = Pe(t.body, e.withFont("mathrm")), n = !0, i = 0; i < r.length; i++) { var a = r[i]; if (a instanceof Ce.SpaceNode); else if (a instanceof Ce.MathNode) switch (a.type) { case "mi": case "mn": case "ms": case "mspace": case "mtext": break; case "mo": var o = a.children[0]; 1 === a.children.length && o instanceof Ce.TextNode ? o.text = o.text.replace(/\u2212/, "-").replace(/\u2217/, "*") : n = !1; break; default: n = !1 } else n = !1 } if (n) { var s = r.map(function (t) { return t.toText() }).join(""); r = [new Ce.TextNode(s)] } var l = new Ce.MathNode("mi", r); l.setAttribute("mathvariant", "normal"); var c = new Ce.MathNode("mo", [Le("\u2061", "text")]); return t.parentIsSupSub ? new Ce.MathNode("mo", [l, c]) : Ce.newDocumentFragment([l, c]) } }), m({ type: "ordgroup", htmlBuilder: function (t, e) { return t.semisimple ? oe.makeFragment(we(t.body, e, !1)) : oe.makeSpan(["mord"], we(t.body, e, !0), e) }, mathmlBuilder: function (t, e) { return Ie(t.body, e, !0) } }), d({ type: "overline", names: ["\\overline"], props: { numArgs: 1 }, handler: function (t, e) { var r = t.parser, n = e[0]; return { type: "overline", mode: r.mode, body: n } }, htmlBuilder: function (t, e) { var r = Me(t.body, e.havingCrampedStyle()), n = oe.makeLineSpan("overline-line", e), i = e.fontMetrics().defaultRuleThickness, a = oe.makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: r }, { type: "kern", size: 3 * i }, { type: "elem", elem: n }, { type: "kern", size: i }] }, e); return oe.makeSpan(["mord", "overline"], [a], e) }, mathmlBuilder: function (t, e) { var r = new Ce.MathNode("mo", [new Ce.TextNode("\u203e")]); r.setAttribute("stretchy", "true"); var n = new Ce.MathNode("mover", [Oe(t.body, e), r]); return n.setAttribute("accent", "true"), n } }), d({ type: "phantom", names: ["\\phantom"], props: { numArgs: 1, allowedInText: !0 }, handler: function (t, e) { var r = t.parser, n = e[0]; return { type: "phantom", mode: r.mode, body: fe(n) } }, htmlBuilder: function (t, e) { var r = we(t.body, e.withPhantom(), !1); return oe.makeFragment(r) }, mathmlBuilder: function (t, e) { var r = Pe(t.body, e); return new Ce.MathNode("mphantom", r) } }), d({ type: "hphantom", names: ["\\hphantom"], props: { numArgs: 1, allowedInText: !0 }, handler: function (t, e) { var r = t.parser, n = e[0]; return { type: "hphantom", mode: r.mode, body: n } }, htmlBuilder: function (t, e) { var r = oe.makeSpan([], [Me(t.body, e.withPhantom())]); if (r.height = 0, r.depth = 0, r.children) for (var n = 0; n < r.children.length; n++)r.children[n].height = 0, r.children[n].depth = 0; return r = oe.makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: r }] }, e), oe.makeSpan(["mord"], [r], e) }, mathmlBuilder: function (t, e) { var r = Pe(fe(t.body), e), n = new Ce.MathNode("mphantom", r), i = new Ce.MathNode("mpadded", [n]); return i.setAttribute("height", "0px"), i.setAttribute("depth", "0px"), i } }), d({ type: "vphantom", names: ["\\vphantom"], props: { numArgs: 1, allowedInText: !0 }, handler: function (t, e) { var r = t.parser, n = e[0]; return { type: "vphantom", mode: r.mode, body: n } }, htmlBuilder: function (t, e) { var r = oe.makeSpan(["inner"], [Me(t.body, e.withPhantom())]), n = oe.makeSpan(["fix"], []); return oe.makeSpan(["mord", "rlap"], [r, n], e) }, mathmlBuilder: function (t, e) { var r = Pe(fe(t.body), e), n = new Ce.MathNode("mphantom", r), i = new Ce.MathNode("mpadded", [n]); return i.setAttribute("width", "0px"), i } }), d({ type: "raisebox", names: ["\\raisebox"], props: { numArgs: 2, argTypes: ["size", "hbox"], allowedInText: !0 }, handler: function (t, e) { var r = t.parser, n = s(e[0], "size").value, i = e[1]; return { type: "raisebox", mode: r.mode, dy: n, body: i } }, htmlBuilder: function (t, e) { var r = Me(t.body, e), n = Xt(t.dy, e); return oe.makeVList({ positionType: "shift", positionData: -n, children: [{ type: "elem", elem: r }] }, e) }, mathmlBuilder: function (t, e) { var r = new Ce.MathNode("mpadded", [Oe(t.body, e)]), n = t.dy.number + t.dy.unit; return r.setAttribute("voffset", n), r } }), d({ type: "rule", names: ["\\rule"], props: { numArgs: 2, numOptionalArgs: 1, argTypes: ["size", "size", "size"] }, handler: function (t, e, r) { var n = t.parser, i = r[0], a = s(e[0], "size"), o = s(e[1], "size"); return { type: "rule", mode: n.mode, shift: i && s(i, "size").value, width: a.value, height: o.value } }, htmlBuilder: function (t, e) { var r = oe.makeSpan(["mord", "rule"], [], e), n = Xt(t.width, e), i = Xt(t.height, e), a = t.shift ? Xt(t.shift, e) : 0; return r.style.borderRightWidth = n + "em", r.style.borderTopWidth = i + "em", r.style.bottom = a + "em", r.width = n, r.height = i + a, r.depth = -a, r.maxFontSize = 1.125 * i * e.sizeMultiplier, r }, mathmlBuilder: function (t, e) { var r = Xt(t.width, e), n = Xt(t.height, e), i = t.shift ? Xt(t.shift, e) : 0, a = e.color && e.getColor() || "black", o = new Ce.MathNode("mspace"); o.setAttribute("mathbackground", a), o.setAttribute("width", r + "em"), o.setAttribute("height", n + "em"); var s = new Ce.MathNode("mpadded", [o]); return i >= 0 ? s.setAttribute("height", "+" + i + "em") : (s.setAttribute("height", i + "em"), s.setAttribute("depth", "+" + -i + "em")), s.setAttribute("voffset", i + "em"), s } }); var Kr = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"]; d({ type: "sizing", names: Kr, props: { numArgs: 0, allowedInText: !0 }, handler: function (t) { var e = t.breakOnTokenText, r = t.funcName, n = t.parser, i = n.parseExpression(!1, e); return { type: "sizing", mode: n.mode, size: Kr.indexOf(r) + 1, body: i } }, htmlBuilder: function (t, e) { var r = e.havingSize(t.size); return M(t.body, r, e) }, mathmlBuilder: function (t, e) { var r = e.havingSize(t.size), n = Pe(t.body, r), i = new Ce.MathNode("mstyle", n); return i.setAttribute("mathsize", r.sizeMultiplier + "em"), i } }), d({ type: "smash", names: ["\\smash"], props: { numArgs: 1, numOptionalArgs: 1, allowedInText: !0 }, handler: function (t, e, r) { var n = t.parser, i = !1, a = !1, o = r[0] && s(r[0], "ordgroup"); if (o) for (var l = "", c = 0; c < o.body.length; ++c)if ("t" === (l = o.body[c].text)) i = !0; else { if ("b" !== l) { i = !1, a = !1; break } a = !0 } else i = !0, a = !0; var u = e[0]; return { type: "smash", mode: n.mode, body: u, smashHeight: i, smashDepth: a } }, htmlBuilder: function (t, e) { var r = oe.makeSpan([], [Me(t.body, e)]); if (!t.smashHeight && !t.smashDepth) return r; if (t.smashHeight && (r.height = 0, r.children)) for (var n = 0; n < r.children.length; n++)r.children[n].height = 0; if (t.smashDepth && (r.depth = 0, r.children)) for (var i = 0; i < r.children.length; i++)r.children[i].depth = 0; var a = oe.makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: r }] }, e); return oe.makeSpan(["mord"], [a], e) }, mathmlBuilder: function (t, e) { var r = new Ce.MathNode("mpadded", [Oe(t.body, e)]); return t.smashHeight && r.setAttribute("height", "0px"), t.smashDepth && r.setAttribute("depth", "0px"), r } }), d({ type: "sqrt", names: ["\\sqrt"], props: { numArgs: 1, numOptionalArgs: 1 }, handler: function (t, e, r) { var n = t.parser, i = r[0], a = e[0]; return { type: "sqrt", mode: n.mode, body: a, index: i } }, htmlBuilder: function (t, e) { var r = Me(t.body, e.havingCrampedStyle()); 0 === r.height && (r.height = e.fontMetrics().xHeight), r = oe.wrapFragment(r, e); var n = e.fontMetrics().defaultRuleThickness, i = n; e.style.id < G.TEXT.id && (i = e.fontMetrics().xHeight); var a = n + i / 4, o = r.height + r.depth + a + n, s = fr(o, e), l = s.span, c = s.ruleWidth, u = s.advanceWidth, h = l.height - c; h > r.height + r.depth + a && (a = (a + h - r.height - r.depth) / 2); var d = l.height - r.height - a - c; r.style.paddingLeft = u + "em"; var m = oe.makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: r, wrapperClasses: ["svg-align"] }, { type: "kern", size: -(r.height + d) }, { type: "elem", elem: l }, { type: "kern", size: c }] }, e); if (t.index) { var p = e.havingStyle(G.SCRIPTSCRIPT), f = Me(t.index, p, e), g = .6 * (m.height - m.depth), v = oe.makeVList({ positionType: "shift", positionData: -g, children: [{ type: "elem", elem: f }] }, e), y = oe.makeSpan(["root"], [v]); return oe.makeSpan(["mord", "sqrt"], [y, m], e) } return oe.makeSpan(["mord", "sqrt"], [m], e) }, mathmlBuilder: function (t, e) { var r = t.body, n = t.index; return n ? new Ce.MathNode("mroot", [Oe(r, e), Oe(n, e)]) : new Ce.MathNode("msqrt", [Oe(r, e)]) } }); var $r = { display: G.DISPLAY, text: G.TEXT, script: G.SCRIPT, scriptscript: G.SCRIPTSCRIPT }; d({ type: "styling", names: ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"], props: { numArgs: 0, allowedInText: !0 }, handler: function (t) { var e = t.breakOnTokenText, r = t.funcName, n = t.parser, i = n.parseExpression(!0, e), a = r.slice(1, r.length - 5); return { type: "styling", mode: n.mode, style: a, body: i } }, htmlBuilder: function (t, e) { var r = $r[t.style], n = e.havingStyle(r).withFont(""); return M(t.body, n, e) }, mathmlBuilder: function (t, e) { var r = $r[t.style], n = e.havingStyle(r), i = Pe(t.body, n), a = new Ce.MathNode("mstyle", i), o = { display: ["0", "true"], text: ["0", "false"], script: ["1", "false"], scriptscript: ["2", "false"] }[t.style]; return a.setAttribute("scriptlevel", o[0]), a.setAttribute("displaystyle", o[1]), a } }), m({ type: "supsub", htmlBuilder: function (t, e) { var r = function (t, e) { var r = t.base; return r ? "op" === r.type ? r.limits && (e.style.size === G.DISPLAY.size || r.alwaysHandleSupSub) ? Vr : null : "operatorname" === r.type ? r.alwaysHandleSupSub && (e.style.size === G.DISPLAY.size || r.limits) ? Xr : null : "accent" === r.type ? B.isCharacterBox(r.base) ? We : null : "horizBrace" === r.type && !t.sub === r.isOver ? Fr : null : null }(t, e); if (r) return r(t, e); var n, i, a, o = t.base, s = t.sup, l = t.sub, c = Me(o, e), u = e.fontMetrics(), h = 0, d = 0, m = o && B.isCharacterBox(o); if (s) { var p = e.havingStyle(e.style.sup()); n = Me(s, p, e), m || (h = c.height - p.fontMetrics().supDrop * p.sizeMultiplier / e.sizeMultiplier) } if (l) { var f = e.havingStyle(e.style.sub()); i = Me(l, f, e), m || (d = c.depth + f.fontMetrics().subDrop * f.sizeMultiplier / e.sizeMultiplier) } a = e.style === G.DISPLAY ? u.sup1 : e.style.cramped ? u.sup3 : u.sup2; var g, v = e.sizeMultiplier, y = .5 / u.ptPerEm / v + "em", b = null; if (i) { var x = t.base && "op" === t.base.type && t.base.name && ("\\oiint" === t.base.name || "\\oiiint" === t.base.name); (c instanceof at || x) && (b = -c.italic + "em") } if (n && i) { h = Math.max(h, a, n.depth + .25 * u.xHeight), d = Math.max(d, u.sub2); var w = 4 * u.defaultRuleThickness; if (h - n.depth - (i.height - d) < w) { d = w - (h - n.depth) + i.height; var k = .8 * u.xHeight - (h - n.depth); k > 0 && (h += k, d -= k) } var S = [{ type: "elem", elem: i, shift: d, marginRight: y, marginLeft: b }, { type: "elem", elem: n, shift: -h, marginRight: y }]; g = oe.makeVList({ positionType: "individualShift", children: S }, e) } else if (i) { d = Math.max(d, u.sub1, i.height - .8 * u.xHeight); var A = [{ type: "elem", elem: i, marginLeft: b, marginRight: y }]; g = oe.makeVList({ positionType: "shift", positionData: d, children: A }, e) } else { if (!n) throw new Error("supsub must have either sup or sub."); h = Math.max(h, a, n.depth + .25 * u.xHeight), g = oe.makeVList({ positionType: "shift", positionData: -h, children: [{ type: "elem", elem: n, marginRight: y }] }, e) } var E = Ae(c, "right") || "mord"; return oe.makeSpan([E], [c, oe.makeSpan(["msupsub"], [g])], e) }, mathmlBuilder: function (t, e) { var r, n = !1, i = l(t.base, "horizBrace"); i && !!t.sup === i.isOver && (n = !0, r = i.isOver), !t.base || "op" !== t.base.type && "operatorname" !== t.base.type || (t.base.parentIsSupSub = !0); var a, o = [Oe(t.base, e)]; if (t.sub && o.push(Oe(t.sub, e)), t.sup && o.push(Oe(t.sup, e)), n) a = r ? "mover" : "munder"; else if (t.sub) if (t.sup) { var s = t.base; a = s && "op" === s.type && s.limits && e.style === G.DISPLAY ? "munderover" : s && "operatorname" === s.type && s.alwaysHandleSupSub && (e.style === G.DISPLAY || s.limits) ? "munderover" : "msubsup" } else { var c = t.base; a = c && "op" === c.type && c.limits && (e.style === G.DISPLAY || c.alwaysHandleSupSub) ? "munder" : c && "operatorname" === c.type && c.alwaysHandleSupSub && (c.limits || e.style === G.DISPLAY) ? "munder" : "msub" } else { var u = t.base; a = u && "op" === u.type && u.limits && (e.style === G.DISPLAY || u.alwaysHandleSupSub) ? "mover" : u && "operatorname" === u.type && u.alwaysHandleSupSub && (u.limits || e.style === G.DISPLAY) ? "mover" : "msup" } return new Ce.MathNode(a, o) } }), m({ type: "atom", htmlBuilder: function (t, e) { return oe.mathsym(t.text, t.mode, e, ["m" + t.family]) }, mathmlBuilder: function (t, e) { var r = new Ce.MathNode("mo", [Le(t.text, t.mode)]); if ("bin" === t.family) { var n = Ne(t, e); "bold-italic" === n && r.setAttribute("mathvariant", n) } else "punct" === t.family ? r.setAttribute("separator", "true") : "open" !== t.family && "close" !== t.family || r.setAttribute("stretchy", "false"); return r } }); var Zr = { mi: "italic", mn: "normal", mtext: "normal" }; m({ type: "mathord", htmlBuilder: function (t, e) { return oe.makeOrd(t, e, "mathord") }, mathmlBuilder: function (t, e) { var r = new Ce.MathNode("mi", [Le(t.text, t.mode, e)]), n = Ne(t, e) || "italic"; return n !== Zr[r.type] && r.setAttribute("mathvariant", n), r } }), m({ type: "textord", htmlBuilder: function (t, e) { return oe.makeOrd(t, e, "textord") }, mathmlBuilder: function (t, e) { var r, n = Le(t.text, t.mode, e), i = Ne(t, e) || "normal"; return r = "text" === t.mode ? new Ce.MathNode("mtext", [n]) : /[0-9]/.test(t.text) ? new Ce.MathNode("mn", [n]) : "\\prime" === t.text ? new Ce.MathNode("mo", [n]) : new Ce.MathNode("mi", [n]), i !== Zr[r.type] && r.setAttribute("mathvariant", i), r } }); var Jr = { "\\nobreak": "nobreak", "\\allowbreak": "allowbreak" }, Qr = { " ": {}, "\\ ": {}, "~": { className: "nobreak" }, "\\space": {}, "\\nobreakspace": { className: "nobreak" } }; m({ type: "spacing", htmlBuilder: function (t, e) { if (Qr.hasOwnProperty(t.text)) { var r = Qr[t.text].className || ""; if ("text" === t.mode) { var n = oe.makeOrd(t, e, "textord"); return n.classes.push(r), n } return oe.makeSpan(["mspace", r], [oe.mathsym(t.text, t.mode, e)], e) } if (Jr.hasOwnProperty(t.text)) return oe.makeSpan(["mspace", Jr[t.text]], [], e); throw new z('Unknown type of space "' + t.text + '"') }, mathmlBuilder: function (t) { if (!Qr.hasOwnProperty(t.text)) { if (Jr.hasOwnProperty(t.text)) return new Ce.MathNode("mspace"); throw new z('Unknown type of space "' + t.text + '"') } return new Ce.MathNode("mtext", [new Ce.TextNode("\xa0")]) } }); var tn = function () { var t = new Ce.MathNode("mtd", []); return t.setAttribute("width", "50%"), t }; m({ type: "tag", mathmlBuilder: function (t, e) { var r = new Ce.MathNode("mtable", [new Ce.MathNode("mtr", [tn(), new Ce.MathNode("mtd", [Ie(t.body, e)]), tn(), new Ce.MathNode("mtd", [Ie(t.tag, e)])])]); return r.setAttribute("width", "100%"), r } }); var en = { "\\text": void 0, "\\textrm": "textrm", "\\textsf": "textsf", "\\texttt": "texttt", "\\textnormal": "textrm" }, rn = { "\\textbf": "textbf", "\\textmd": "textmd" }, nn = { "\\textit": "textit", "\\textup": "textup" }, an = function (t, e) { var r = t.font; return r ? en[r] ? e.withTextFontFamily(en[r]) : rn[r] ? e.withTextFontWeight(rn[r]) : e.withTextFontShape(nn[r]) : e }; d({ type: "text", names: ["\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", "\\textbf", "\\textmd", "\\textit", "\\textup"], props: { numArgs: 1, argTypes: ["text"], greediness: 2, allowedInText: !0 }, handler: function (t, e) { var r = t.parser, n = t.funcName, i = e[0]; return { type: "text", mode: r.mode, body: fe(i), font: n } }, htmlBuilder: function (t, e) { var r = an(t, e), n = we(t.body, r, !0); return oe.makeSpan(["mord", "text"], oe.tryCombineChars(n), r) }, mathmlBuilder: function (t, e) { var r = an(t, e); return Ie(t.body, r) } }), d({ type: "underline", names: ["\\underline"], props: { numArgs: 1, allowedInText: !0 }, handler: function (t, e) { return { type: "underline", mode: t.parser.mode, body: e[0] } }, htmlBuilder: function (t, e) { var r = Me(t.body, e), n = oe.makeLineSpan("underline-line", e), i = e.fontMetrics().defaultRuleThickness, a = oe.makeVList({ positionType: "top", positionData: r.height, children: [{ type: "kern", size: i }, { type: "elem", elem: n }, { type: "kern", size: 3 * i }, { type: "elem", elem: r }] }, e); return oe.makeSpan(["mord", "underline"], [a], e) }, mathmlBuilder: function (t, e) { var r = new Ce.MathNode("mo", [new Ce.TextNode("\u203e")]); r.setAttribute("stretchy", "true"); var n = new Ce.MathNode("munder", [Oe(t.body, e), r]); return n.setAttribute("accentunder", "true"), n } }), d({ type: "verb", names: ["\\verb"], props: { numArgs: 0, allowedInText: !0 }, handler: function () { throw new z("\\verb ended by end of line instead of matching delimiter") }, htmlBuilder: function (t, e) { for (var r = on(t), n = [], i = e.havingStyle(e.style.text()), a = 0; a < r.length; a++) { var o = r[a]; "~" === o && (o = "\\textasciitilde"), n.push(oe.makeSymbol(o, "Typewriter-Regular", t.mode, i, ["mord", "texttt"])) } return oe.makeSpan(["mord", "text"].concat(i.sizingClasses(e)), oe.tryCombineChars(n), i) }, mathmlBuilder: function (t) { var e = new Ce.TextNode(on(t)), r = new Ce.MathNode("mtext", [e]); return r.setAttribute("mathvariant", "monospace"), r } }); var on = function (t) { return t.body.replace(/ /g, t.star ? "\u2423" : "\xa0") }, sn = de, ln = new RegExp("^(\\\\[a-zA-Z@]+)[ \r\n\t]*$"), cn = new RegExp("[\u0300-\u036f]+$"), un = "([ \r\n\t]+)|([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff][\u0300-\u036f]*|[\ud800-\udbff][\udc00-\udfff][\u0300-\u036f]*|\\\\verb\\*([^]).*?\\3|\\\\verb([^*a-zA-Z]).*?\\4|\\\\operatorname\\*|\\\\[a-zA-Z@]+[ \r\n\t]*|\\\\[^\ud800-\udfff])", hn = function () { function t(t, e) { this.input = void 0, this.settings = void 0, this.tokenRegex = void 0, this.catcodes = void 0, this.input = t, this.settings = e, this.tokenRegex = new RegExp(un, "g"), this.catcodes = { "%": 14 } } var e = t.prototype; return e.setCatcode = function (t, e) { this.catcodes[t] = e }, e.lex = function () { var t = this.input, e = this.tokenRegex.lastIndex; if (e === t.length) return new C("EOF", new T(this, e, e)); var r = this.tokenRegex.exec(t); if (null === r || r.index !== e) throw new z("Unexpected character: '" + t[e] + "'", new C(t[e], new T(this, e, e + 1))); var n = r[2] || " "; if (14 === this.catcodes[n]) { var i = t.indexOf("\n", this.tokenRegex.lastIndex); return -1 === i ? (this.tokenRegex.lastIndex = t.length, this.settings.reportNonstrict("commentAtEnd", "% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")) : this.tokenRegex.lastIndex = i + 1, this.lex() } var a = n.match(ln); return a && (n = a[1]), new C(n, new T(this, e, this.tokenRegex.lastIndex)) }, t }(), dn = function () { function t(t, e) { void 0 === t && (t = {}), void 0 === e && (e = {}), this.current = void 0, this.builtins = void 0, this.undefStack = void 0, this.current = e, this.builtins = t, this.undefStack = [] } var e = t.prototype; return e.beginGroup = function () { this.undefStack.push({}) }, e.endGroup = function () { if (0 === this.undefStack.length) throw new z("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug"); var t = this.undefStack.pop(); for (var e in t) t.hasOwnProperty(e) && (void 0 === t[e] ? delete this.current[e] : this.current[e] = t[e]) }, e.has = function (t) { return this.current.hasOwnProperty(t) || this.builtins.hasOwnProperty(t) }, e.get = function (t) { return this.current.hasOwnProperty(t) ? this.current[t] : this.builtins[t] }, e.set = function (t, e, r) { if (void 0 === r && (r = !1), r) { for (var n = 0; n < this.undefStack.length; n++)delete this.undefStack[n][t]; this.undefStack.length > 0 && (this.undefStack[this.undefStack.length - 1][t] = e) } else { var i = this.undefStack[this.undefStack.length - 1]; i && !i.hasOwnProperty(t) && (i[t] = this.current[t]) } this.current[t] = e }, t }(), mn = {}, pn = mn; R("\\@firstoftwo", function (t) { return { tokens: t.consumeArgs(2)[0], numArgs: 0 } }), R("\\@secondoftwo", function (t) { return { tokens: t.consumeArgs(2)[1], numArgs: 0 } }), R("\\@ifnextchar", function (t) { var e = t.consumeArgs(3), r = t.future(); return 1 === e[0].length && e[0][0].text === r.text ? { tokens: e[1], numArgs: 0 } : { tokens: e[2], numArgs: 0 } }), R("\\@ifstar", "\\@ifnextchar *{\\@firstoftwo{#1}}"), R("\\TextOrMath", function (t) { var e = t.consumeArgs(2); return "text" === t.mode ? { tokens: e[0], numArgs: 0 } : { tokens: e[1], numArgs: 0 } }); var fn = { 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, a: 10, A: 10, b: 11, B: 11, c: 12, C: 12, d: 13, D: 13, e: 14, E: 14, f: 15, F: 15 }; R("\\char", function (t) { var e, r = t.popToken(), n = ""; if ("'" === r.text) e = 8, r = t.popToken(); else if ('"' === r.text) e = 16, r = t.popToken(); else if ("`" === r.text) if ("\\" === (r = t.popToken()).text[0]) n = r.text.charCodeAt(1); else { if ("EOF" === r.text) throw new z("\\char` missing argument"); n = r.text.charCodeAt(0) } else e = 10; if (e) { if (null == (n = fn[r.text]) || n >= e) throw new z("Invalid base-" + e + " digit " + r.text); for (var i; null != (i = fn[t.future().text]) && i < e;)n *= e, n += i, t.popToken() } return "\\@char{" + n + "}" }); var gn = function (t, e) { var r = t.consumeArgs(1)[0]; if (1 !== r.length) throw new z("\\gdef's first argument must be a macro name"); var n = r[0].text, i = 0; for (r = t.consumeArgs(1)[0]; 1 === r.length && "#" === r[0].text;) { if (1 !== (r = t.consumeArgs(1)[0]).length) throw new z('Invalid argument number length "' + r.length + '"'); if (!/^[1-9]$/.test(r[0].text)) throw new z('Invalid argument number "' + r[0].text + '"'); if (i++, parseInt(r[0].text) !== i) throw new z('Argument number "' + r[0].text + '" out of order'); r = t.consumeArgs(1)[0] } return t.macros.set(n, { tokens: r, numArgs: i }, e), "" }; R("\\gdef", function (t) { return gn(t, !0) }), R("\\def", function (t) { return gn(t, !1) }), R("\\global", function (t) { var e = t.consumeArgs(1)[0]; if (1 !== e.length) throw new z("Invalid command after \\global"); var r = e[0].text; if ("\\def" === r) return gn(t, !0); throw new z("Invalid command '" + r + "' after \\global") }); var vn = function (t, e, r) { var n = t.consumeArgs(1)[0]; if (1 !== n.length) throw new z("\\newcommand's first argument must be a macro name"); var i = n[0].text, a = t.isDefined(i); if (a && !e) throw new z("\\newcommand{" + i + "} attempting to redefine " + i + "; use \\renewcommand"); if (!a && !r) throw new z("\\renewcommand{" + i + "} when command " + i + " does not yet exist; use \\newcommand"); var o = 0; if (1 === (n = t.consumeArgs(1)[0]).length && "[" === n[0].text) { for (var s = "", l = t.expandNextToken(); "]" !== l.text && "EOF" !== l.text;)s += l.text, l = t.expandNextToken(); if (!s.match(/^\s*[0-9]+\s*$/)) throw new z("Invalid number of arguments: " + s); o = parseInt(s), n = t.consumeArgs(1)[0] } return t.macros.set(i, { tokens: n, numArgs: o }), "" }; R("\\newcommand", function (t) { return vn(t, !1, !0) }), R("\\renewcommand", function (t) { return vn(t, !0, !1) }), R("\\providecommand", function (t) { return vn(t, !0, !0) }), R("\\bgroup", "{"), R("\\egroup", "}"), R("\\lq", "`"), R("\\rq", "'"), R("\\aa", "\\r a"), R("\\AA", "\\r A"), R("\\textcopyright", "\\html@mathml{\\textcircled{c}}{\\char`\xa9}"), R("\\copyright", "\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"), R("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xae}"), R("\u212c", "\\mathscr{B}"), R("\u2130", "\\mathscr{E}"), R("\u2131", "\\mathscr{F}"), R("\u210b", "\\mathscr{H}"), R("\u2110", "\\mathscr{I}"), R("\u2112", "\\mathscr{L}"), R("\u2133", "\\mathscr{M}"), R("\u211b", "\\mathscr{R}"), R("\u212d", "\\mathfrak{C}"), R("\u210c", "\\mathfrak{H}"), R("\u2128", "\\mathfrak{Z}"), R("\\Bbbk", "\\Bbb{k}"), R("\xb7", "\\cdotp"), R("\\llap", "\\mathllap{\\textrm{#1}}"), R("\\rlap", "\\mathrlap{\\textrm{#1}}"), R("\\clap", "\\mathclap{\\textrm{#1}}"), R("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'), R("\\neq", "\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}"), R("\\ne", "\\neq"), R("\u2260", "\\neq"), R("\\notin", "\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}"), R("\u2209", "\\notin"), R("\u2258", "\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}"), R("\u2259", "\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"), R("\u225a", "\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225a}}"), R("\u225b", "\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225b}}"), R("\u225d", "\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225d}}"), R("\u225e", "\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225e}}"), R("\u225f", "\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225f}}"), R("\u27c2", "\\perp"), R("\u203c", "\\mathclose{!\\mkern-0.8mu!}"), R("\u220c", "\\notni"), R("\u231c", "\\ulcorner"), R("\u231d", "\\urcorner"), R("\u231e", "\\llcorner"), R("\u231f", "\\lrcorner"), R("\xa9", "\\copyright"), R("\xae", "\\textregistered"), R("\ufe0f", "\\textregistered"), R("\\vdots", "\\mathord{\\varvdots\\rule{0pt}{15pt}}"), R("\u22ee", "\\vdots"), R("\\varGamma", "\\mathit{\\Gamma}"), R("\\varDelta", "\\mathit{\\Delta}"), R("\\varTheta", "\\mathit{\\Theta}"), R("\\varLambda", "\\mathit{\\Lambda}"), R("\\varXi", "\\mathit{\\Xi}"), R("\\varPi", "\\mathit{\\Pi}"), R("\\varSigma", "\\mathit{\\Sigma}"), R("\\varUpsilon", "\\mathit{\\Upsilon}"), R("\\varPhi", "\\mathit{\\Phi}"), R("\\varPsi", "\\mathit{\\Psi}"), R("\\varOmega", "\\mathit{\\Omega}"), R("\\substack", "\\begin{subarray}{c}#1\\end{subarray}"), R("\\colon", "\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu"), R("\\boxed", "\\fbox{$\\displaystyle{#1}$}"), R("\\iff", "\\DOTSB\\;\\Longleftrightarrow\\;"), R("\\implies", "\\DOTSB\\;\\Longrightarrow\\;"), R("\\impliedby", "\\DOTSB\\;\\Longleftarrow\\;"); var yn = { ",": "\\dotsc", "\\not": "\\dotsb", "+": "\\dotsb", "=": "\\dotsb", "<": "\\dotsb", ">": "\\dotsb", "-": "\\dotsb", "*": "\\dotsb", ":": "\\dotsb", "\\DOTSB": "\\dotsb", "\\coprod": "\\dotsb", "\\bigvee": "\\dotsb", "\\bigwedge": "\\dotsb", "\\biguplus": "\\dotsb", "\\bigcap": "\\dotsb", "\\bigcup": "\\dotsb", "\\prod": "\\dotsb", "\\sum": "\\dotsb", "\\bigotimes": "\\dotsb", "\\bigoplus": "\\dotsb", "\\bigodot": "\\dotsb", "\\bigsqcup": "\\dotsb", "\\And": "\\dotsb", "\\longrightarrow": "\\dotsb", "\\Longrightarrow": "\\dotsb", "\\longleftarrow": "\\dotsb", "\\Longleftarrow": "\\dotsb", "\\longleftrightarrow": "\\dotsb", "\\Longleftrightarrow": "\\dotsb", "\\mapsto": "\\dotsb", "\\longmapsto": "\\dotsb", "\\hookrightarrow": "\\dotsb", "\\doteq": "\\dotsb", "\\mathbin": "\\dotsb", "\\mathrel": "\\dotsb", "\\relbar": "\\dotsb", "\\Relbar": "\\dotsb", "\\xrightarrow": "\\dotsb", "\\xleftarrow": "\\dotsb", "\\DOTSI": "\\dotsi", "\\int": "\\dotsi", "\\oint": "\\dotsi", "\\iint": "\\dotsi", "\\iiint": "\\dotsi", "\\iiiint": "\\dotsi", "\\idotsint": "\\dotsi", "\\DOTSX": "\\dotsx" }; R("\\dots", function (t) { var e = "\\dotso", r = t.expandAfterFuture().text; return r in yn ? e = yn[r] : "\\not" === r.substr(0, 4) ? e = "\\dotsb" : r in gt.math && B.contains(["bin", "rel"], gt.math[r].group) && (e = "\\dotsb"), e }); var bn = { ")": !0, "]": !0, "\\rbrack": !0, "\\}": !0, "\\rbrace": !0, "\\rangle": !0, "\\rceil": !0, "\\rfloor": !0, "\\rgroup": !0, "\\rmoustache": !0, "\\right": !0, "\\bigr": !0, "\\biggr": !0, "\\Bigr": !0, "\\Biggr": !0, $: !0, ";": !0, ".": !0, ",": !0 }; R("\\dotso", function (t) { return t.future().text in bn ? "\\ldots\\," : "\\ldots" }), R("\\dotsc", function (t) { var e = t.future().text; return e in bn && "," !== e ? "\\ldots\\," : "\\ldots" }), R("\\cdots", function (t) { return t.future().text in bn ? "\\@cdots\\," : "\\@cdots" }), R("\\dotsb", "\\cdots"), R("\\dotsm", "\\cdots"), R("\\dotsi", "\\!\\cdots"), R("\\dotsx", "\\ldots\\,"), R("\\DOTSI", "\\relax"), R("\\DOTSB", "\\relax"), R("\\DOTSX", "\\relax"), R("\\tmspace", "\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"), R("\\,", "\\tmspace+{3mu}{.1667em}"), R("\\thinspace", "\\,"), R("\\>", "\\mskip{4mu}"), R("\\:", "\\tmspace+{4mu}{.2222em}"), R("\\medspace", "\\:"), R("\\;", "\\tmspace+{5mu}{.2777em}"), R("\\thickspace", "\\;"), R("\\!", "\\tmspace-{3mu}{.1667em}"), R("\\negthinspace", "\\!"), R("\\negmedspace", "\\tmspace-{4mu}{.2222em}"), R("\\negthickspace", "\\tmspace-{5mu}{.277em}"), R("\\enspace", "\\kern.5em "), R("\\enskip", "\\hskip.5em\\relax"), R("\\quad", "\\hskip1em\\relax"), R("\\qquad", "\\hskip2em\\relax"), R("\\tag", "\\@ifstar\\tag@literal\\tag@paren"), R("\\tag@paren", "\\tag@literal{({#1})}"), R("\\tag@literal", function (t) { if (t.macros.get("\\df@tag")) throw new z("Multiple \\tag"); return "\\gdef\\df@tag{\\text{#1}}" }), R("\\bmod", "\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"), R("\\pod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"), R("\\pmod", "\\pod{{\\rm mod}\\mkern6mu#1}"), R("\\mod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"), R("\\pmb", "\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"), R("\\\\", "\\newline"), R("\\TeX", "\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}"); var xn = ct["Main-Regular"]["T".charCodeAt(0)][1] - .7 * ct["Main-Regular"]["A".charCodeAt(0)][1] + "em"; R("\\LaTeX", "\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{" + xn + "}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"), R("\\KaTeX", "\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{" + xn + "}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"), R("\\hspace", "\\@ifstar\\@hspacer\\@hspace"), R("\\@hspace", "\\hskip #1\\relax"), R("\\@hspacer", "\\rule{0pt}{0pt}\\hskip #1\\relax"), R("\\ordinarycolon", ":"), R("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"), R("\\dblcolon", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'), R("\\coloneqq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'), R("\\Coloneqq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'), R("\\coloneq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'), R("\\Coloneq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'), R("\\eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'), R("\\Eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'), R("\\eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'), R("\\Eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'), R("\\colonapprox", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'), R("\\Colonapprox", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'), R("\\colonsim", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'), R("\\Colonsim", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'), R("\u2237", "\\dblcolon"), R("\u2239", "\\eqcolon"), R("\u2254", "\\coloneqq"), R("\u2255", "\\eqqcolon"), R("\u2a74", "\\Coloneqq"), R("\\ratio", "\\vcentcolon"), R("\\coloncolon", "\\dblcolon"), R("\\colonequals", "\\coloneqq"), R("\\coloncolonequals", "\\Coloneqq"), R("\\equalscolon", "\\eqqcolon"), R("\\equalscoloncolon", "\\Eqqcolon"), R("\\colonminus", "\\coloneq"), R("\\coloncolonminus", "\\Coloneq"), R("\\minuscolon", "\\eqcolon"), R("\\minuscoloncolon", "\\Eqcolon"), R("\\coloncolonapprox", "\\Colonapprox"), R("\\coloncolonsim", "\\Colonsim"), R("\\simcolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"), R("\\simcoloncolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"), R("\\approxcolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"), R("\\approxcoloncolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"), R("\\notni", "\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"), R("\\limsup", "\\DOTSB\\operatorname*{lim\\,sup}"), R("\\liminf", "\\DOTSB\\operatorname*{lim\\,inf}"), R("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{\u2269}"), R("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{\u2268}"), + R("\\ngeqq", "\\html@mathml{\\@ngeqq}{\u2271}"), R("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{\u2271}"), R("\\nleqq", "\\html@mathml{\\@nleqq}{\u2270}"), R("\\nleqslant", "\\html@mathml{\\@nleqslant}{\u2270}"), R("\\nshortmid", "\\html@mathml{\\@nshortmid}{\u2224}"), R("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{\u2226}"), R("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{\u2288}"), R("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{\u2289}"), R("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{\u228a}"), R("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{\u2acb}"), R("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{\u228b}"), R("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{\u2acc}"), R("\\llbracket", "\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"), R("\\rrbracket", "\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"), R("\u27e6", "\\llbracket"), R("\u27e7", "\\rrbracket"), R("\\lBrace", "\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"), R("\\rBrace", "\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"), R("\u2983", "\\lBrace"), R("\u2984", "\\rBrace"), R("\\darr", "\\downarrow"), R("\\dArr", "\\Downarrow"), R("\\Darr", "\\Downarrow"), R("\\lang", "\\langle"), R("\\rang", "\\rangle"), R("\\uarr", "\\uparrow"), R("\\uArr", "\\Uparrow"), R("\\Uarr", "\\Uparrow"), R("\\N", "\\mathbb{N}"), R("\\R", "\\mathbb{R}"), R("\\Z", "\\mathbb{Z}"), R("\\alef", "\\aleph"), R("\\alefsym", "\\aleph"), R("\\Alpha", "\\mathrm{A}"), R("\\Beta", "\\mathrm{B}"), R("\\bull", "\\bullet"), R("\\Chi", "\\mathrm{X}"), R("\\clubs", "\\clubsuit"), R("\\cnums", "\\mathbb{C}"), R("\\Complex", "\\mathbb{C}"), R("\\Dagger", "\\ddagger"), R("\\diamonds", "\\diamondsuit"), R("\\empty", "\\emptyset"), R("\\Epsilon", "\\mathrm{E}"), R("\\Eta", "\\mathrm{H}"), R("\\exist", "\\exists"), R("\\harr", "\\leftrightarrow"), R("\\hArr", "\\Leftrightarrow"), R("\\Harr", "\\Leftrightarrow"), R("\\hearts", "\\heartsuit"), R("\\image", "\\Im"), R("\\infin", "\\infty"), R("\\Iota", "\\mathrm{I}"), R("\\isin", "\\in"), R("\\Kappa", "\\mathrm{K}"), R("\\larr", "\\leftarrow"), R("\\lArr", "\\Leftarrow"), R("\\Larr", "\\Leftarrow"), R("\\lrarr", "\\leftrightarrow"), R("\\lrArr", "\\Leftrightarrow"), R("\\Lrarr", "\\Leftrightarrow"), R("\\Mu", "\\mathrm{M}"), R("\\natnums", "\\mathbb{N}"), R("\\Nu", "\\mathrm{N}"), R("\\Omicron", "\\mathrm{O}"), R("\\plusmn", "\\pm"), R("\\rarr", "\\rightarrow"), R("\\rArr", "\\Rightarrow"), R("\\Rarr", "\\Rightarrow"), R("\\real", "\\Re"), R("\\reals", "\\mathbb{R}"), R("\\Reals", "\\mathbb{R}"), R("\\Rho", "\\mathrm{P}"), R("\\sdot", "\\cdot"), R("\\sect", "\\S"), R("\\spades", "\\spadesuit"), R("\\sub", "\\subset"), R("\\sube", "\\subseteq"), R("\\supe", "\\supseteq"), R("\\Tau", "\\mathrm{T}"), R("\\thetasym", "\\vartheta"), R("\\weierp", "\\wp"), R("\\Zeta", "\\mathrm{Z}"), R("\\argmin", "\\DOTSB\\operatorname*{arg\\,min}"), R("\\argmax", "\\DOTSB\\operatorname*{arg\\,max}"), R("\\plim", "\\DOTSB\\mathop{\\operatorname{plim}}\\limits"), R("\\blue", "\\textcolor{##6495ed}{#1}"), R("\\orange", "\\textcolor{##ffa500}{#1}"), R("\\pink", "\\textcolor{##ff00af}{#1}"), R("\\red", "\\textcolor{##df0030}{#1}"), R("\\green", "\\textcolor{##28ae7b}{#1}"), R("\\gray", "\\textcolor{gray}{#1}"), R("\\purple", "\\textcolor{##9d38bd}{#1}"), R("\\blueA", "\\textcolor{##ccfaff}{#1}"), R("\\blueB", "\\textcolor{##80f6ff}{#1}"), R("\\blueC", "\\textcolor{##63d9ea}{#1}"), R("\\blueD", "\\textcolor{##11accd}{#1}"), R("\\blueE", "\\textcolor{##0c7f99}{#1}"), R("\\tealA", "\\textcolor{##94fff5}{#1}"), R("\\tealB", "\\textcolor{##26edd5}{#1}"), R("\\tealC", "\\textcolor{##01d1c1}{#1}"), R("\\tealD", "\\textcolor{##01a995}{#1}"), R("\\tealE", "\\textcolor{##208170}{#1}"), R("\\greenA", "\\textcolor{##b6ffb0}{#1}"), R("\\greenB", "\\textcolor{##8af281}{#1}"), R("\\greenC", "\\textcolor{##74cf70}{#1}"), R("\\greenD", "\\textcolor{##1fab54}{#1}"), R("\\greenE", "\\textcolor{##0d923f}{#1}"), R("\\goldA", "\\textcolor{##ffd0a9}{#1}"), R("\\goldB", "\\textcolor{##ffbb71}{#1}"), R("\\goldC", "\\textcolor{##ff9c39}{#1}"), R("\\goldD", "\\textcolor{##e07d10}{#1}"), R("\\goldE", "\\textcolor{##a75a05}{#1}"), R("\\redA", "\\textcolor{##fca9a9}{#1}"), R("\\redB", "\\textcolor{##ff8482}{#1}"), R("\\redC", "\\textcolor{##f9685d}{#1}"), R("\\redD", "\\textcolor{##e84d39}{#1}"), R("\\redE", "\\textcolor{##bc2612}{#1}"), R("\\maroonA", "\\textcolor{##ffbde0}{#1}"), R("\\maroonB", "\\textcolor{##ff92c6}{#1}"), R("\\maroonC", "\\textcolor{##ed5fa6}{#1}"), R("\\maroonD", "\\textcolor{##ca337c}{#1}"), R("\\maroonE", "\\textcolor{##9e034e}{#1}"), R("\\purpleA", "\\textcolor{##ddd7ff}{#1}"), R("\\purpleB", "\\textcolor{##c6b9fc}{#1}"), R("\\purpleC", "\\textcolor{##aa87ff}{#1}"), R("\\purpleD", "\\textcolor{##7854ab}{#1}"), R("\\purpleE", "\\textcolor{##543b78}{#1}"), R("\\mintA", "\\textcolor{##f5f9e8}{#1}"), R("\\mintB", "\\textcolor{##edf2df}{#1}"), R("\\mintC", "\\textcolor{##e0e5cc}{#1}"), R("\\grayA", "\\textcolor{##f6f7f7}{#1}"), R("\\grayB", "\\textcolor{##f0f1f2}{#1}"), R("\\grayC", "\\textcolor{##e3e5e6}{#1}"), R("\\grayD", "\\textcolor{##d6d8da}{#1}"), R("\\grayE", "\\textcolor{##babec2}{#1}"), R("\\grayF", "\\textcolor{##888d93}{#1}"), R("\\grayG", "\\textcolor{##626569}{#1}"), R("\\grayH", "\\textcolor{##3b3e40}{#1}"), R("\\grayI", "\\textcolor{##21242c}{#1}"), R("\\kaBlue", "\\textcolor{##314453}{#1}"), R("\\kaGreen", "\\textcolor{##71B307}{#1}"); var wn = { "\\relax": !0, "^": !0, _: !0, "\\limits": !0, "\\nolimits": !0 }, kn = function () { function t(t, e, r) { this.settings = void 0, this.expansionCount = void 0, this.lexer = void 0, this.macros = void 0, this.stack = void 0, this.mode = void 0, this.settings = e, this.expansionCount = 0, this.feed(t), this.macros = new dn(pn, e.macros), this.mode = r, this.stack = [] } var e = t.prototype; return e.feed = function (t) { this.lexer = new hn(t, this.settings) }, e.switchMode = function (t) { this.mode = t }, e.beginGroup = function () { this.macros.beginGroup() }, e.endGroup = function () { this.macros.endGroup() }, e.future = function () { return 0 === this.stack.length && this.pushToken(this.lexer.lex()), this.stack[this.stack.length - 1] }, e.popToken = function () { return this.future(), this.stack.pop() }, e.pushToken = function (t) { this.stack.push(t) }, e.pushTokens = function (t) { var e; (e = this.stack).push.apply(e, t) }, e.consumeSpaces = function () { for (; " " === this.future().text;)this.stack.pop() }, e.consumeArgs = function (t) { for (var e = [], r = 0; r < t; ++r) { this.consumeSpaces(); var n = this.popToken(); if ("{" === n.text) { for (var i = [], a = 1; 0 !== a;) { var o = this.popToken(); if (i.push(o), "{" === o.text) ++a; else if ("}" === o.text) --a; else if ("EOF" === o.text) throw new z("End of input in macro argument", n) } i.pop(), i.reverse(), e[r] = i } else { if ("EOF" === n.text) throw new z("End of input expecting macro argument"); e[r] = [n] } } return e }, e.expandOnce = function () { var t = this.popToken(), e = t.text, r = this._getExpansion(e); if (null == r) return this.pushToken(t), t; if (this.expansionCount++, this.expansionCount > this.settings.maxExpand) throw new z("Too many expansions: infinite loop or need to increase maxExpand setting"); var n = r.tokens; if (r.numArgs) for (var i = this.consumeArgs(r.numArgs), a = (n = n.slice()).length - 1; a >= 0; --a) { var o = n[a]; if ("#" === o.text) { if (0 === a) throw new z("Incomplete placeholder at end of macro body", o); if ("#" === (o = n[--a]).text) n.splice(a + 1, 1); else { if (!/^[1-9]$/.test(o.text)) throw new z("Not a valid argument number", o); var s; (s = n).splice.apply(s, [a, 2].concat(i[+o.text - 1])) } } } return this.pushTokens(n), n }, e.expandAfterFuture = function () { return this.expandOnce(), this.future() }, e.expandNextToken = function () { for (; ;) { var t = this.expandOnce(); if (t instanceof C) { if ("\\relax" !== t.text) return this.stack.pop(); this.stack.pop() } } throw new Error }, e.expandMacro = function (t) { if (this.macros.get(t)) { var e = [], r = this.stack.length; for (this.pushToken(new C(t)); this.stack.length > r;)this.expandOnce() instanceof C && e.push(this.stack.pop()); return e } }, e.expandMacroAsText = function (t) { var e = this.expandMacro(t); return e ? e.map(function (t) { return t.text }).join("") : e }, e._getExpansion = function (t) { var e = this.macros.get(t); if (null == e) return e; var r = "function" == typeof e ? e(this) : e; if ("string" == typeof r) { var n = 0; if (-1 !== r.indexOf("#")) for (var i = r.replace(/##/g, ""); -1 !== i.indexOf("#" + (n + 1));)++n; for (var a = new hn(r, this.settings), o = [], s = a.lex(); "EOF" !== s.text;)o.push(s), s = a.lex(); return o.reverse(), { tokens: o, numArgs: n } } return r }, e.isDefined = function (t) { return this.macros.has(t) || sn.hasOwnProperty(t) || gt.math.hasOwnProperty(t) || gt.text.hasOwnProperty(t) || wn.hasOwnProperty(t) }, t }(), Sn = { "\u0301": { text: "\\'", math: "\\acute" }, "\u0300": { text: "\\`", math: "\\grave" }, "\u0308": { text: '\\"', math: "\\ddot" }, "\u0303": { text: "\\~", math: "\\tilde" }, "\u0304": { text: "\\=", math: "\\bar" }, "\u0306": { text: "\\u", math: "\\breve" }, "\u030c": { text: "\\v", math: "\\check" }, "\u0302": { text: "\\^", math: "\\hat" }, "\u0307": { text: "\\.", math: "\\dot" }, "\u030a": { text: "\\r", math: "\\mathring" }, "\u030b": { text: "\\H" } }, An = { "\xe1": "a\u0301", "\xe0": "a\u0300", "\xe4": "a\u0308", "\u01df": "a\u0308\u0304", "\xe3": "a\u0303", "\u0101": "a\u0304", "\u0103": "a\u0306", "\u1eaf": "a\u0306\u0301", "\u1eb1": "a\u0306\u0300", "\u1eb5": "a\u0306\u0303", "\u01ce": "a\u030c", "\xe2": "a\u0302", "\u1ea5": "a\u0302\u0301", "\u1ea7": "a\u0302\u0300", "\u1eab": "a\u0302\u0303", "\u0227": "a\u0307", "\u01e1": "a\u0307\u0304", "\xe5": "a\u030a", "\u01fb": "a\u030a\u0301", "\u1e03": "b\u0307", "\u0107": "c\u0301", "\u010d": "c\u030c", "\u0109": "c\u0302", "\u010b": "c\u0307", "\u010f": "d\u030c", "\u1e0b": "d\u0307", "\xe9": "e\u0301", "\xe8": "e\u0300", "\xeb": "e\u0308", "\u1ebd": "e\u0303", "\u0113": "e\u0304", "\u1e17": "e\u0304\u0301", "\u1e15": "e\u0304\u0300", "\u0115": "e\u0306", "\u011b": "e\u030c", "\xea": "e\u0302", "\u1ebf": "e\u0302\u0301", "\u1ec1": "e\u0302\u0300", "\u1ec5": "e\u0302\u0303", "\u0117": "e\u0307", "\u1e1f": "f\u0307", "\u01f5": "g\u0301", "\u1e21": "g\u0304", "\u011f": "g\u0306", "\u01e7": "g\u030c", "\u011d": "g\u0302", "\u0121": "g\u0307", "\u1e27": "h\u0308", "\u021f": "h\u030c", "\u0125": "h\u0302", "\u1e23": "h\u0307", "\xed": "i\u0301", "\xec": "i\u0300", "\xef": "i\u0308", "\u1e2f": "i\u0308\u0301", "\u0129": "i\u0303", "\u012b": "i\u0304", "\u012d": "i\u0306", "\u01d0": "i\u030c", "\xee": "i\u0302", "\u01f0": "j\u030c", "\u0135": "j\u0302", "\u1e31": "k\u0301", "\u01e9": "k\u030c", "\u013a": "l\u0301", "\u013e": "l\u030c", "\u1e3f": "m\u0301", "\u1e41": "m\u0307", "\u0144": "n\u0301", "\u01f9": "n\u0300", "\xf1": "n\u0303", "\u0148": "n\u030c", "\u1e45": "n\u0307", "\xf3": "o\u0301", "\xf2": "o\u0300", "\xf6": "o\u0308", "\u022b": "o\u0308\u0304", "\xf5": "o\u0303", "\u1e4d": "o\u0303\u0301", "\u1e4f": "o\u0303\u0308", "\u022d": "o\u0303\u0304", "\u014d": "o\u0304", "\u1e53": "o\u0304\u0301", "\u1e51": "o\u0304\u0300", "\u014f": "o\u0306", "\u01d2": "o\u030c", "\xf4": "o\u0302", "\u1ed1": "o\u0302\u0301", "\u1ed3": "o\u0302\u0300", "\u1ed7": "o\u0302\u0303", "\u022f": "o\u0307", "\u0231": "o\u0307\u0304", "\u0151": "o\u030b", "\u1e55": "p\u0301", "\u1e57": "p\u0307", "\u0155": "r\u0301", "\u0159": "r\u030c", "\u1e59": "r\u0307", "\u015b": "s\u0301", "\u1e65": "s\u0301\u0307", "\u0161": "s\u030c", "\u1e67": "s\u030c\u0307", "\u015d": "s\u0302", "\u1e61": "s\u0307", "\u1e97": "t\u0308", "\u0165": "t\u030c", "\u1e6b": "t\u0307", "\xfa": "u\u0301", "\xf9": "u\u0300", "\xfc": "u\u0308", "\u01d8": "u\u0308\u0301", "\u01dc": "u\u0308\u0300", "\u01d6": "u\u0308\u0304", "\u01da": "u\u0308\u030c", "\u0169": "u\u0303", "\u1e79": "u\u0303\u0301", "\u016b": "u\u0304", "\u1e7b": "u\u0304\u0308", "\u016d": "u\u0306", "\u01d4": "u\u030c", "\xfb": "u\u0302", "\u016f": "u\u030a", "\u0171": "u\u030b", "\u1e7d": "v\u0303", "\u1e83": "w\u0301", "\u1e81": "w\u0300", "\u1e85": "w\u0308", "\u0175": "w\u0302", "\u1e87": "w\u0307", "\u1e98": "w\u030a", "\u1e8d": "x\u0308", "\u1e8b": "x\u0307", "\xfd": "y\u0301", "\u1ef3": "y\u0300", "\xff": "y\u0308", "\u1ef9": "y\u0303", "\u0233": "y\u0304", "\u0177": "y\u0302", "\u1e8f": "y\u0307", "\u1e99": "y\u030a", "\u017a": "z\u0301", "\u017e": "z\u030c", "\u1e91": "z\u0302", "\u017c": "z\u0307", "\xc1": "A\u0301", "\xc0": "A\u0300", "\xc4": "A\u0308", "\u01de": "A\u0308\u0304", "\xc3": "A\u0303", "\u0100": "A\u0304", "\u0102": "A\u0306", "\u1eae": "A\u0306\u0301", "\u1eb0": "A\u0306\u0300", "\u1eb4": "A\u0306\u0303", "\u01cd": "A\u030c", "\xc2": "A\u0302", "\u1ea4": "A\u0302\u0301", "\u1ea6": "A\u0302\u0300", "\u1eaa": "A\u0302\u0303", "\u0226": "A\u0307", "\u01e0": "A\u0307\u0304", "\xc5": "A\u030a", "\u01fa": "A\u030a\u0301", "\u1e02": "B\u0307", "\u0106": "C\u0301", "\u010c": "C\u030c", "\u0108": "C\u0302", "\u010a": "C\u0307", "\u010e": "D\u030c", "\u1e0a": "D\u0307", "\xc9": "E\u0301", "\xc8": "E\u0300", "\xcb": "E\u0308", "\u1ebc": "E\u0303", "\u0112": "E\u0304", "\u1e16": "E\u0304\u0301", "\u1e14": "E\u0304\u0300", "\u0114": "E\u0306", "\u011a": "E\u030c", "\xca": "E\u0302", "\u1ebe": "E\u0302\u0301", "\u1ec0": "E\u0302\u0300", "\u1ec4": "E\u0302\u0303", "\u0116": "E\u0307", "\u1e1e": "F\u0307", "\u01f4": "G\u0301", "\u1e20": "G\u0304", "\u011e": "G\u0306", "\u01e6": "G\u030c", "\u011c": "G\u0302", "\u0120": "G\u0307", "\u1e26": "H\u0308", "\u021e": "H\u030c", "\u0124": "H\u0302", "\u1e22": "H\u0307", "\xcd": "I\u0301", "\xcc": "I\u0300", "\xcf": "I\u0308", "\u1e2e": "I\u0308\u0301", "\u0128": "I\u0303", "\u012a": "I\u0304", "\u012c": "I\u0306", "\u01cf": "I\u030c", "\xce": "I\u0302", "\u0130": "I\u0307", "\u0134": "J\u0302", "\u1e30": "K\u0301", "\u01e8": "K\u030c", "\u0139": "L\u0301", "\u013d": "L\u030c", "\u1e3e": "M\u0301", "\u1e40": "M\u0307", "\u0143": "N\u0301", "\u01f8": "N\u0300", "\xd1": "N\u0303", "\u0147": "N\u030c", "\u1e44": "N\u0307", "\xd3": "O\u0301", "\xd2": "O\u0300", "\xd6": "O\u0308", "\u022a": "O\u0308\u0304", "\xd5": "O\u0303", "\u1e4c": "O\u0303\u0301", "\u1e4e": "O\u0303\u0308", "\u022c": "O\u0303\u0304", "\u014c": "O\u0304", "\u1e52": "O\u0304\u0301", "\u1e50": "O\u0304\u0300", "\u014e": "O\u0306", "\u01d1": "O\u030c", "\xd4": "O\u0302", "\u1ed0": "O\u0302\u0301", "\u1ed2": "O\u0302\u0300", "\u1ed6": "O\u0302\u0303", "\u022e": "O\u0307", "\u0230": "O\u0307\u0304", "\u0150": "O\u030b", "\u1e54": "P\u0301", "\u1e56": "P\u0307", "\u0154": "R\u0301", "\u0158": "R\u030c", "\u1e58": "R\u0307", "\u015a": "S\u0301", "\u1e64": "S\u0301\u0307", "\u0160": "S\u030c", "\u1e66": "S\u030c\u0307", "\u015c": "S\u0302", "\u1e60": "S\u0307", "\u0164": "T\u030c", "\u1e6a": "T\u0307", "\xda": "U\u0301", "\xd9": "U\u0300", "\xdc": "U\u0308", "\u01d7": "U\u0308\u0301", "\u01db": "U\u0308\u0300", "\u01d5": "U\u0308\u0304", "\u01d9": "U\u0308\u030c", "\u0168": "U\u0303", "\u1e78": "U\u0303\u0301", "\u016a": "U\u0304", "\u1e7a": "U\u0304\u0308", "\u016c": "U\u0306", "\u01d3": "U\u030c", "\xdb": "U\u0302", "\u016e": "U\u030a", "\u0170": "U\u030b", "\u1e7c": "V\u0303", "\u1e82": "W\u0301", "\u1e80": "W\u0300", "\u1e84": "W\u0308", "\u0174": "W\u0302", "\u1e86": "W\u0307", "\u1e8c": "X\u0308", "\u1e8a": "X\u0307", "\xdd": "Y\u0301", "\u1ef2": "Y\u0300", "\u0178": "Y\u0308", "\u1ef8": "Y\u0303", "\u0232": "Y\u0304", "\u0176": "Y\u0302", "\u1e8e": "Y\u0307", "\u0179": "Z\u0301", "\u017d": "Z\u030c", "\u1e90": "Z\u0302", "\u017b": "Z\u0307", "\u03ac": "\u03b1\u0301", "\u1f70": "\u03b1\u0300", "\u1fb1": "\u03b1\u0304", "\u1fb0": "\u03b1\u0306", "\u03ad": "\u03b5\u0301", "\u1f72": "\u03b5\u0300", "\u03ae": "\u03b7\u0301", "\u1f74": "\u03b7\u0300", "\u03af": "\u03b9\u0301", "\u1f76": "\u03b9\u0300", "\u03ca": "\u03b9\u0308", "\u0390": "\u03b9\u0308\u0301", "\u1fd2": "\u03b9\u0308\u0300", "\u1fd1": "\u03b9\u0304", "\u1fd0": "\u03b9\u0306", "\u03cc": "\u03bf\u0301", "\u1f78": "\u03bf\u0300", "\u03cd": "\u03c5\u0301", "\u1f7a": "\u03c5\u0300", "\u03cb": "\u03c5\u0308", "\u03b0": "\u03c5\u0308\u0301", "\u1fe2": "\u03c5\u0308\u0300", "\u1fe1": "\u03c5\u0304", "\u1fe0": "\u03c5\u0306", "\u03ce": "\u03c9\u0301", "\u1f7c": "\u03c9\u0300", "\u038e": "\u03a5\u0301", "\u1fea": "\u03a5\u0300", "\u03ab": "\u03a5\u0308", "\u1fe9": "\u03a5\u0304", "\u1fe8": "\u03a5\u0306", "\u038f": "\u03a9\u0301", "\u1ffa": "\u03a9\u0300" }, En = function () { function t(t, e) { this.mode = void 0, this.gullet = void 0, this.settings = void 0, this.leftrightDepth = void 0, this.nextToken = void 0, this.mode = "math", this.gullet = new kn(t, e, this.mode), this.settings = e, this.leftrightDepth = 0 } var e = t.prototype; return e.expect = function (t, e) { if (void 0 === e && (e = !0), this.fetch().text !== t) throw new z("Expected '" + t + "', got '" + this.fetch().text + "'", this.fetch()); e && this.consume() }, e.consume = function () { this.nextToken = null }, e.fetch = function () { return null == this.nextToken && (this.nextToken = this.gullet.expandNextToken()), this.nextToken }, e.switchMode = function (t) { this.mode = t, this.gullet.switchMode(t) }, e.parse = function () { this.gullet.beginGroup(), this.settings.colorIsTextColor && this.gullet.macros.set("\\color", "\\textcolor"); var t = this.parseExpression(!1); return this.expect("EOF"), this.gullet.endGroup(), t }, e.parseExpression = function (e, r) { for (var n = []; ;) { "math" === this.mode && this.consumeSpaces(); var i = this.fetch(); if (-1 !== t.endOfExpression.indexOf(i.text)) break; if (r && i.text === r) break; if (e && sn[i.text] && sn[i.text].infix) break; var a = this.parseAtom(r); if (!a) break; n.push(a) } return "text" === this.mode && this.formLigatures(n), this.handleInfixNodes(n) }, e.handleInfixNodes = function (t) { for (var e, r = -1, n = 0; n < t.length; n++) { var i = l(t[n], "infix"); if (i) { if (-1 !== r) throw new z("only one infix operator per group", i.token); r = n, e = i.replaceWith } } if (-1 !== r && e) { var a, o, s = t.slice(0, r), c = t.slice(r + 1); return a = 1 === s.length && "ordgroup" === s[0].type ? s[0] : { type: "ordgroup", mode: this.mode, body: s }, o = 1 === c.length && "ordgroup" === c[0].type ? c[0] : { type: "ordgroup", mode: this.mode, body: c }, ["\\\\abovefrac" === e ? this.callFunction(e, [a, t[r], o], []) : this.callFunction(e, [a, o], [])] } return t }, e.handleSupSubscript = function (e) { var r = this.fetch(), n = r.text; this.consume(); var i = this.parseGroup(e, !1, t.SUPSUB_GREEDINESS, void 0, void 0, !0); if (!i) throw new z("Expected group after '" + n + "'", r); return i }, e.formatUnsupportedCmd = function (t) { for (var e = [], r = 0; r < t.length; r++)e.push({ type: "textord", mode: "text", text: t[r] }); var n = { type: "text", mode: this.mode, body: e }; return { type: "color", mode: this.mode, color: this.settings.errorColor, body: [n] } }, e.parseAtom = function (t) { var e, r, n = this.parseGroup("atom", !1, null, t); if ("text" === this.mode) return n; for (; ;) { this.consumeSpaces(); var i = this.fetch(); if ("\\limits" === i.text || "\\nolimits" === i.text) { var a = l(n, "op"); if (a) { var o = "\\limits" === i.text; a.limits = o, a.alwaysHandleSupSub = !0 } else { if (!(a = l(n, "operatorname")) || !a.alwaysHandleSupSub) throw new z("Limit controls must follow a math operator", i); var s = "\\limits" === i.text; a.limits = s } this.consume() } else if ("^" === i.text) { if (e) throw new z("Double superscript", i); e = this.handleSupSubscript("superscript") } else if ("_" === i.text) { if (r) throw new z("Double subscript", i); r = this.handleSupSubscript("subscript") } else { if ("'" !== i.text) break; if (e) throw new z("Double superscript", i); var c = { type: "textord", mode: this.mode, text: "\\prime" }, u = [c]; for (this.consume(); "'" === this.fetch().text;)u.push(c), this.consume(); "^" === this.fetch().text && u.push(this.handleSupSubscript("superscript")), e = { type: "ordgroup", mode: this.mode, body: u } } } return e || r ? { type: "supsub", mode: this.mode, base: n, sup: e, sub: r } : n }, e.parseFunction = function (t, e, r) { var n = this.fetch(), i = n.text, a = sn[i]; if (!a) return null; if (this.consume(), null != r && a.greediness <= r) throw new z("Got function '" + i + "' with no arguments" + (e ? " as " + e : ""), n); if ("text" === this.mode && !a.allowedInText) throw new z("Can't use function '" + i + "' in text mode", n); if ("math" === this.mode && !1 === a.allowedInMath) throw new z("Can't use function '" + i + "' in math mode", n); var o = this.parseArguments(i, a), s = o.args, l = o.optArgs; return this.callFunction(i, s, l, n, t) }, e.callFunction = function (t, e, r, n, i) { var a = { funcName: t, parser: this, token: n, breakOnTokenText: i }, o = sn[t]; if (o && o.handler) return o.handler(a, e, r); throw new z("No function handler for " + t) }, e.parseArguments = function (t, e) { var r = e.numArgs + e.numOptionalArgs; if (0 === r) return { args: [], optArgs: [] }; for (var n = e.greediness, i = [], a = [], o = 0; o < r; o++) { var s = e.argTypes && e.argTypes[o], l = o < e.numOptionalArgs, c = o > 0 && !l || 0 === o && !l && "math" === this.mode, u = this.parseGroupOfType("argument to '" + t + "'", s, l, n, c); if (!u) { if (l) { a.push(null); continue } throw new z("Expected group after '" + t + "'", this.fetch()) } (l ? a : i).push(u) } return { args: i, optArgs: a } }, e.parseGroupOfType = function (t, e, r, n, i) { switch (e) { case "color": return i && this.consumeSpaces(), this.parseColorGroup(r); case "size": return i && this.consumeSpaces(), this.parseSizeGroup(r); case "url": return this.parseUrlGroup(r, i); case "math": case "text": return this.parseGroup(t, r, n, void 0, e, i); case "hbox": var a = this.parseGroup(t, r, n, void 0, "text", i); return a ? { type: "styling", mode: a.mode, body: [a], style: "text" } : a; case "raw": if (i && this.consumeSpaces(), r && "{" === this.fetch().text) return null; var o = this.parseStringGroup("raw", r, !0); if (o) return { type: "raw", mode: "text", string: o.text }; throw new z("Expected raw group", this.fetch()); case "original": case null: case void 0: return this.parseGroup(t, r, n, void 0, void 0, i); default: throw new z("Unknown group type as " + t, this.fetch()) } }, e.consumeSpaces = function () { for (; " " === this.fetch().text;)this.consume() }, e.parseStringGroup = function (t, e, r) { var n = e ? "[" : "{", i = e ? "]" : "}", a = this.fetch(); if (a.text !== n) { if (e) return null; if (r && "EOF" !== a.text && /[^{}[\]]/.test(a.text)) return this.consume(), a } var o = this.mode; this.mode = "text", this.expect(n); for (var s, l = "", c = this.fetch(), u = 0, h = c; (s = this.fetch()).text !== i || r && u > 0;) { switch (s.text) { case "EOF": throw new z("Unexpected end of input in " + t, c.range(h, l)); case n: u++; break; case i: u-- }l += (h = s).text, this.consume() } return this.expect(i), this.mode = o, c.range(h, l) }, e.parseRegexGroup = function (t, e) { var r = this.mode; this.mode = "text"; for (var n, i = this.fetch(), a = i, o = ""; "EOF" !== (n = this.fetch()).text && t.test(o + n.text);)o += (a = n).text, this.consume(); if ("" === o) throw new z("Invalid " + e + ": '" + i.text + "'", i); return this.mode = r, i.range(a, o) }, e.parseColorGroup = function (t) { var e = this.parseStringGroup("color", t); if (!e) return null; var r = /^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(e.text); if (!r) throw new z("Invalid color: '" + e.text + "'", e); var n = r[0]; return /^[0-9a-f]{6}$/i.test(n) && (n = "#" + n), { type: "color-token", mode: this.mode, color: n } }, e.parseSizeGroup = function (t) { var e, r = !1; if (!(e = t || "{" === this.fetch().text ? this.parseStringGroup("size", t) : this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size"))) return null; t || 0 !== e.text.length || (e.text = "0pt", r = !0); var n = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e.text); if (!n) throw new z("Invalid size: '" + e.text + "'", e); var i = { number: +(n[1] + n[2]), unit: n[3] }; if (!Yt(i)) throw new z("Invalid unit: '" + i.unit + "'", e); return { type: "size", mode: this.mode, value: i, isBlank: r } }, e.parseUrlGroup = function (t) { this.gullet.lexer.setCatcode("%", 13); var e = this.parseStringGroup("url", t, !0); if (this.gullet.lexer.setCatcode("%", 14), !e) return null; var r = e.text.replace(/\\([#$%&~_^{}])/g, "$1"); return { type: "url", mode: this.mode, url: r } }, e.parseGroup = function (e, r, n, i, a, o) { var s = this.mode; a && this.switchMode(a), o && this.consumeSpaces(); var l, c = this.fetch(), u = c.text; if (r ? "[" === u : "{" === u || "\\begingroup" === u) { this.consume(); var h = t.endOfGroup[u]; this.gullet.beginGroup(); var d = this.parseExpression(!1, h), m = this.fetch(); this.expect(h), this.gullet.endGroup(), l = { type: "ordgroup", mode: this.mode, loc: T.range(c, m), body: d, semisimple: "\\begingroup" === u || void 0 } } else if (r) l = null; else if (null == (l = this.parseFunction(i, e, n) || this.parseSymbol()) && "\\" === u[0] && !wn.hasOwnProperty(u)) { if (this.settings.throwOnError) throw new z("Undefined control sequence: " + u, c); l = this.formatUnsupportedCmd(u), this.consume() } return a && this.switchMode(s), l }, e.formLigatures = function (t) { for (var e = t.length - 1, r = 0; r < e; ++r) { var n = t[r], i = n.text; "-" === i && "-" === t[r + 1].text && (r + 1 < e && "-" === t[r + 2].text ? (t.splice(r, 3, { type: "textord", mode: "text", loc: T.range(n, t[r + 2]), text: "---" }), e -= 2) : (t.splice(r, 2, { type: "textord", mode: "text", loc: T.range(n, t[r + 1]), text: "--" }), e -= 1)), "'" !== i && "`" !== i || t[r + 1].text !== i || (t.splice(r, 2, { type: "textord", mode: "text", loc: T.range(n, t[r + 1]), text: i + i }), e -= 1) } }, e.parseSymbol = function () { var t = this.fetch(), e = t.text; if (/^\\verb[^a-zA-Z]/.test(e)) { this.consume(); var r = e.slice(5), i = "*" === r.charAt(0); if (i && (r = r.slice(1)), r.length < 2 || r.charAt(0) !== r.slice(-1)) throw new z("\\verb assertion failed --\n please report what input caused this bug"); return { type: "verb", mode: "text", body: r = r.slice(1, -1), star: i } } An.hasOwnProperty(e[0]) && !gt[this.mode][e[0]] && (this.settings.strict && "math" === this.mode && this.settings.reportNonstrict("unicodeTextInMathMode", 'Accented Unicode text character "' + e[0] + '" used in math mode', t), e = An[e[0]] + e.substr(1)); var a, o = cn.exec(e); if (o && ("i" === (e = e.substring(0, o.index)) ? e = "\u0131" : "j" === e && (e = "\u0237")), gt[this.mode][e]) { this.settings.strict && "math" === this.mode && "\xc7\xd0\xde\xe7\xfe".indexOf(e) >= 0 && this.settings.reportNonstrict("unicodeTextInMathMode", 'Latin-1/Unicode text character "' + e[0] + '" used in math mode', t); var s, l = gt[this.mode][e].group, c = T.range(t); if (mt.hasOwnProperty(l)) { var u = l; s = { type: "atom", mode: this.mode, family: u, loc: c, text: e } } else s = { type: l, mode: this.mode, loc: c, text: e }; a = s } else { if (!(e.charCodeAt(0) >= 128)) return null; this.settings.strict && (n(e.charCodeAt(0)) ? "math" === this.mode && this.settings.reportNonstrict("unicodeTextInMathMode", 'Unicode text character "' + e[0] + '" used in math mode', t) : this.settings.reportNonstrict("unknownSymbol", 'Unrecognized Unicode character "' + e[0] + '" (' + e.charCodeAt(0) + ")", t)), a = { type: "textord", mode: "text", loc: T.range(t), text: e } } if (this.consume(), o) for (var h = 0; h < o[0].length; h++) { var d = o[0][h]; if (!Sn[d]) throw new z("Unknown accent ' " + d + "'", t); var m = Sn[d][this.mode]; if (!m) throw new z("Accent " + d + " unsupported in " + this.mode + " mode", t); a = { type: "accent", mode: this.mode, loc: T.range(t), label: m, isStretchy: !1, isShifty: !0, base: a } } return a }, t }(); En.endOfExpression = ["}", "\\endgroup", "\\end", "\\right", "&"], En.endOfGroup = { "[": "]", "{": "}", "\\begingroup": "\\endgroup" }, En.SUPSUB_GREEDINESS = 1; var Mn = function (t, e) { if (!("string" == typeof t || t instanceof String)) throw new TypeError("KaTeX can only parse string typed expression"); var r = new En(t, e); delete r.gullet.macros.current["\\df@tag"]; var n = r.parse(); if (r.gullet.macros.get("\\df@tag")) { if (!e.displayMode) throw new z("\\tag works only in display equations"); r.gullet.feed("\\df@tag"), n = [{ type: "tag", mode: "text", body: n, tag: r.parse() }] } return n }, Rn = function (t, e, r) { e.textContent = ""; var n = Cn(t, r).toNode(); e.appendChild(n) }; "undefined" != typeof document && "CSS1Compat" !== document.compatMode && ("undefined" != typeof console && console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."), Rn = function () { throw new z("KaTeX doesn't work in quirks mode.") }); var Tn = function (t, e, r) { if (r.throwOnError || !(t instanceof z)) throw t; var n = oe.makeSpan(["katex-error"], [new at(e)]); return n.setAttribute("title", t.toString()), n.setAttribute("style", "color:" + r.errorColor), n }, Cn = function (t, e) { var r = new q(e); try { var n = Mn(t, r); return De(n, t, r) } catch (e) { return Tn(e, t, r) } }, Ln = { version: "0.11.1", render: Rn, renderToString: function (t, e) { return Cn(t, e).toMarkup() }, ParseError: z, __parse: function (t, e) { var r = new q(e); return Mn(t, r) }, __renderToDomTree: Cn, __renderToHTMLTree: function (t, e) { var r = new q(e); try { return function (t, e, r) { var n = f(t, Be(r)), i = oe.makeSpan(["katex"], [n]); return qe(i, r) }(Mn(t, r), 0, r) } catch (e) { return Tn(e, t, r) } }, __setFontMetrics: function (t, e) { ct[t] = e }, __defineSymbol: o, __defineMacro: R, __domTree: { Span: et, Anchor: rt, SymbolNode: at, SvgNode: ot, PathNode: st, LineNode: lt } }; e["default"] = Ln + }])["default"] +}), function (t, e) { "object" == typeof exports && "object" == typeof module ? module.exports = e(require("katex")) : "function" == typeof define && define.amd ? define(["katex"], e) : "object" == typeof exports ? exports.renderMathInElement = e(require("katex")) : t.renderMathInElement = e(t.katex) }("undefined" != typeof self ? self : this, function (t) { return function (t) { function e(n) { if (r[n]) return r[n].exports; var i = r[n] = { i: n, l: !1, exports: {} }; return t[n].call(i.exports, i, i.exports, e), i.l = !0, i.exports } var r = {}; return e.m = t, e.c = r, e.d = function (t, r, n) { e.o(t, r) || Object.defineProperty(t, r, { enumerable: !0, get: n }) }, e.r = function (t) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(t, "__esModule", { value: !0 }) }, e.t = function (t, r) { if (1 & r && (t = e(t)), 8 & r) return t; if (4 & r && "object" == typeof t && t && t.__esModule) return t; var n = Object.create(null); if (e.r(n), Object.defineProperty(n, "default", { enumerable: !0, value: t }), 2 & r && "string" != typeof t) for (var i in t) e.d(n, i, function (e) { return t[e] }.bind(null, i)); return n }, e.n = function (t) { var r = t && t.__esModule ? function () { return t["default"] } : function () { return t }; return e.d(r, "a", r), r }, e.o = function (t, e) { return Object.prototype.hasOwnProperty.call(t, e) }, e.p = "", e(e.s = 1) }([function (e) { e.exports = t }, function (t, e, r) { "use strict"; r.r(e); var n = r(0), i = r.n(n), a = function (t, e, r) { for (var n = r, i = 0, a = t.length; n < e.length;) { var o = e[n]; if (i <= 0 && e.slice(n, n + a) === t) return n; "\\" === o ? n++ : "{" === o ? i++ : "}" === o && i--, n++ } return -1 }, o = function (t, e, r, n) { for (var i = [], o = 0; o < t.length; o++)if ("text" === t[o].type) { var s = t[o].data, l = !0, c = 0, u = void 0; for (-1 !== (u = s.indexOf(e)) && (c = u, i.push({ type: "text", data: s.slice(0, c) }), l = !1); ;) { if (l) { if (-1 === (u = s.indexOf(e, c))) break; i.push({ type: "text", data: s.slice(c, u) }), c = u } else { if (-1 === (u = a(r, s, c + e.length))) break; i.push({ type: "math", data: s.slice(c + e.length, u), rawData: s.slice(c, u + r.length), display: n }), c = u + r.length } l = !l } i.push({ type: "text", data: s.slice(c) }) } else i.push(t[o]); return i }, s = function (t, e) { for (var r = function (t, e) { for (var r = [{ type: "text", data: t }], n = 0; n < e.length; n++) { var i = e[n]; r = o(r, i.left, i.right, i.display || !1) } return r }(t, e.delimiters), n = document.createDocumentFragment(), a = 0; a < r.length; a++)if ("text" === r[a].type) n.appendChild(document.createTextNode(r[a].data)); else { var s = document.createElement("span"), l = r[a].data; e.displayMode = r[a].display; try { e.preProcess && (l = e.preProcess(l)), i.a.render(l, s, e) } catch (t) { if (!(t instanceof i.a.ParseError)) throw t; e.errorCallback("KaTeX auto-render: Failed to parse `" + r[a].data + "` with ", t), n.appendChild(document.createTextNode(r[a].rawData)); continue } n.appendChild(s) } return n }; e["default"] = function (t, e) { if (!t) throw new Error("No element provided to render"); var r = {}; for (var n in e) e.hasOwnProperty(n) && (r[n] = e[n]); r.delimiters = r.delimiters || [{ left: "$$", right: "$$", display: !0 }, { left: "\\(", right: "\\)", display: !1 }, { left: "\\[", right: "\\]", display: !0 }], r.ignoredTags = r.ignoredTags || ["script", "noscript", "style", "textarea", "pre", "code"], r.ignoredClasses = r.ignoredClasses || [], r.errorCallback = r.errorCallback || console.error, r.macros = r.macros || {}, function i(t, e) { for (var r = 0; r < t.childNodes.length; r++) { var n = t.childNodes[r]; if (3 === n.nodeType) { var a = s(n.textContent, e); r += a.childNodes.length - 1, t.replaceChild(a, n) } else 1 === n.nodeType && function () { var t = " " + n.className + " "; -1 === e.ignoredTags.indexOf(n.nodeName.toLowerCase()) && e.ignoredClasses.every(function (e) { return -1 === t.indexOf(" " + e + " ") }) && i(n, e) }() } }(t, r) } }])["default"] }), function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).Reveal = e() }(this, function () { + "use strict"; function t(t, e) { var r = Object.keys(t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(t); e && (n = n.filter(function (e) { return Object.getOwnPropertyDescriptor(t, e).enumerable })), r.push.apply(r, n) } return r } function e(e) { for (var r = 1; r < arguments.length; r++) { var n = null != arguments[r] ? arguments[r] : {}; r % 2 ? t(Object(n), !0).forEach(function (t) { s(e, t, n[t]) }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : t(Object(n)).forEach(function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) }) } return e } function r(t) { return (r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) { return typeof t } : function (t) { return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t })(t) } function n(t, e, r, n, i, a, o) { try { var s = t[a](o), l = s.value } catch (t) { return void r(t) } s.done ? e(l) : Promise.resolve(l).then(n, i) } function i(t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") } function a(t, e) { for (var r = 0; r < e.length; r++) { var n = e[r]; n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(t, n.key, n) } } function o(t, e, r) { return e && a(t.prototype, e), r && a(t, r), t } function s(t, e, r) { return e in t ? Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : t[e] = r, t } function l(t) { return function (t) { if (Array.isArray(t)) return c(t) }(t) || function (t) { if ("undefined" != typeof Symbol && null != t[Symbol.iterator] || null != t["@@iterator"]) return Array.from(t) }(t) || function (t, e) { if (t) { if ("string" == typeof t) return c(t, e); var r = Object.prototype.toString.call(t).slice(8, -1); return "Object" === r && t.constructor && (r = t.constructor.name), "Map" === r || "Set" === r ? Array.from(t) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? c(t, e) : void 0 } }(t) || function () { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") }() } function c(t, e) { (null == e || e > t.length) && (e = t.length); for (var r = 0, n = new Array(e); r < e; r++)n[r] = t[r]; return n } function u(t, e) { return RegExp(t, e) } function h(t, n) { + function i(r) { + if (!t) throw 'Unable to find presentation root (

).'; if (Yt.wrapper = t, Yt.slides = t.querySelector(".slides"), !Yt.slides) throw 'Unable to find slides container (
).' + ; return jt = e(e(e(e(e({}, Fm), jt), n), r), Rd()), a(), window.addEventListener("load", L, !1), ue.load(jt.plugins, jt.dependencies).then(o), new Promise(function (t) { return Ht.on("ready", t) }) + } function a() { !0 === jt.embedded ? Yt.viewport = Ad(t, ".reveal-viewport") || t : (Yt.viewport = document.body, document.documentElement.classList.add("reveal-full-page")), Yt.viewport.classList.add("reveal-viewport") } function o() { Ut = !0, s(), l(), p(), d(), m(), X(), f(), oe.readURL(), re.update(!0), setTimeout(function () { Yt.slides.classList.remove("no-transition"), Yt.wrapper.classList.add("ready"), k({ type: "ready", data: { indexh: Ot, indexv: Bt, currentSlide: Dt } }) }, 1), he.isPrintingPDF() && (v(), "complete" === document.readyState ? he.setupPDF() : window.addEventListener("load", function () { he.setupPDF() })) } function s() { jt.showHiddenSlides || bd(Yt.wrapper, 'section[data-visibility="hidden"]').forEach(function (t) { t.parentNode.removeChild(t) }) } function l() { Yt.slides.classList.add("no-transition"), Nd ? Yt.wrapper.classList.add("no-hover") : Yt.wrapper.classList.remove("no-hover"), re.render(), te.render(), se.render(), le.render(), pe.render(), Yt.pauseOverlay = Ed(Yt.wrapper, "div", "pause-overlay", jt.controls ? '' : null), Yt.statusElement = c(), Yt.wrapper.setAttribute("role", "application") } function c() { var t = Yt.wrapper.querySelector(".aria-status"); return t || ((t = document.createElement("div")).style.position = "absolute", t.style.height = "1px", t.style.width = "1px", t.style.overflow = "hidden", t.style.clip = "rect( 1px, 1px, 1px, 1px )", t.classList.add("aria-status"), t.setAttribute("aria-live", "polite"), t.setAttribute("aria-atomic", "true"), Yt.wrapper.appendChild(t)), t } function u(t) { Yt.statusElement.textContent = t } function h(t) { var e = ""; if (3 === t.nodeType) e += t.textContent; else if (1 === t.nodeType) { var r = t.getAttribute("aria-hidden"), n = "none" === window.getComputedStyle(t).display; "true" === r || n || Array.from(t.childNodes).forEach(function (t) { e += h(t) }) } return "" === (e = e.trim()) ? "" : e + " " } function d() { setInterval(function () { 0 === Yt.wrapper.scrollTop && 0 === Yt.wrapper.scrollLeft || (Yt.wrapper.scrollTop = 0, Yt.wrapper.scrollLeft = 0) }, 1e3) } function m() { document.addEventListener("fullscreenchange", Nt), document.addEventListener("webkitfullscreenchange", Nt) } function p() { jt.postMessage && window.addEventListener("message", Rt, !1) } function f(t) { var n = e({}, jt); if ("object" === r(t) && yd(jt, t), !1 !== Ht.isReady()) { var i = Yt.wrapper.querySelectorAll(rm).length; Yt.wrapper.classList.remove(n.transition), Yt.wrapper.classList.add(jt.transition), Yt.wrapper.setAttribute("data-transition-speed", jt.transitionSpeed), Yt.wrapper.setAttribute("data-background-transition", jt.backgroundTransition), Yt.viewport.style.setProperty("--slide-width", jt.width + "px"), Yt.viewport.style.setProperty("--slide-height", jt.height + "px"), jt.shuffle && K(), xd(Yt.wrapper, "embedded", jt.embedded), xd(Yt.wrapper, "rtl", jt.rtl), xd(Yt.wrapper, "center", jt.center), !1 === jt.pause && H(), jt.previewLinks ? (A(), E("[data-preview-link=false]")) : (E(), A("[data-preview-link]:not([data-preview-link=false])")), ee.reset(), Ft && (Ft.destroy(), Ft = null), i > 1 && jt.autoSlide && jt.autoSlideStoppable && ((Ft = new Dm(Yt.wrapper, function () { return Math.min(Math.max((Date.now() - Zt) / Kt, 0), 1) })).on("click", It), Jt = !1), "default" !== jt.navigationMode ? Yt.wrapper.setAttribute("data-navigation-mode", jt.navigationMode) : Yt.wrapper.removeAttribute("data-navigation-mode"), pe.configure(jt, n), de.configure(jt, n), ce.configure(jt, n), se.configure(jt, n), le.configure(jt, n), ae.configure(jt, n), ne.configure(jt, n), te.configure(jt, n), G() } } function g() { window.addEventListener("resize", Lt, !1), jt.touch && me.bind(), jt.keyboard && ae.bind(), jt.progress && le.bind(), jt.respondToHashChanges && oe.bind(), se.bind(), de.bind(), Yt.slides.addEventListener("click", Ct, !1), Yt.slides.addEventListener("transitionend", Tt, !1), Yt.pauseOverlay.addEventListener("click", H, !1), jt.focusBodyOnPageVisibilityChange && document.addEventListener("visibilitychange", zt, !1) } function v() { me.unbind(), de.unbind(), ae.unbind(), se.unbind(), le.unbind(), oe.unbind(), window.removeEventListener("resize", Lt, !1), Yt.slides.removeEventListener("click", Ct, !1), Yt.slides.removeEventListener("transitionend", Tt, !1), Yt.pauseOverlay.removeEventListener("click", H, !1) } function y() { v(), vt(), E(), pe.destroy(), de.destroy(), ue.destroy(), ce.destroy(), se.destroy(), le.destroy(), re.destroy(), te.destroy(), document.removeEventListener("fullscreenchange", Nt), document.removeEventListener("webkitfullscreenchange", Nt), document.removeEventListener("visibilitychange", zt, !1), window.removeEventListener("message", Rt, !1), window.removeEventListener("load", L, !1), Yt.pauseOverlay && Yt.pauseOverlay.remove(), Yt.statusElement && Yt.statusElement.remove(), document.documentElement.classList.remove("reveal-full-page"), Yt.wrapper.classList.remove("ready", "center", "has-horizontal-slides", "has-vertical-slides"), Yt.wrapper.removeAttribute("data-transition-speed"), Yt.wrapper.removeAttribute("data-background-transition"), Yt.viewport.classList.remove("reveal-viewport"), Yt.viewport.style.removeProperty("--slide-width"), Yt.viewport.style.removeProperty("--slide-height"), Yt.slides.style.removeProperty("width"), Yt.slides.style.removeProperty("height"), Yt.slides.style.removeProperty("zoom"), Yt.slides.style.removeProperty("left"), Yt.slides.style.removeProperty("top"), Yt.slides.style.removeProperty("bottom"), Yt.slides.style.removeProperty("right"), Yt.slides.style.removeProperty("transform"), Array.from(Yt.wrapper.querySelectorAll(rm)).forEach(function (t) { t.style.removeProperty("display"), t.style.removeProperty("top"), t.removeAttribute("hidden"), t.removeAttribute("aria-hidden") }) } function b(e, r, n) { t.addEventListener(e, r, n) } function x(e, r, n) { t.removeEventListener(e, r, n) } function w(t) { "string" == typeof t.layout && (Gt.layout = t.layout), "string" == typeof t.overview && (Gt.overview = t.overview), Gt.layout ? kd(Yt.slides, Gt.layout + " " + Gt.overview) : kd(Yt.slides, Gt.overview) } function k(t) { var e = t.target, r = void 0 === e ? Yt.wrapper : e, n = t.type, i = t.data, a = t.bubbles, o = void 0 === a || a, s = document.createEvent("HTMLEvents", 1, 2); return s.initEvent(n, o, !0), yd(s, i), r.dispatchEvent(s), r === Yt.wrapper && S(n), s } function S(t, e) { if (jt.postMessageEvents && window.parent !== window.self) { var r = { namespace: "reveal", eventName: t, state: pt() }; yd(r, e), window.parent.postMessage(JSON.stringify(r), "*") } } function A() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "a"; Array.from(Yt.wrapper.querySelectorAll(t)).forEach(function (t) { /^(http|www)/gi.test(t.getAttribute("href")) && t.addEventListener("click", Pt, !1) }) } function E() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "a"; Array.from(Yt.wrapper.querySelectorAll(t)).forEach(function (t) { /^(http|www)/gi.test(t.getAttribute("href")) && t.removeEventListener("click", Pt, !1) }) } function M(t) { C(), Yt.overlay = document.createElement("div"), Yt.overlay.classList.add("overlay"), Yt.overlay.classList.add("overlay-preview"), Yt.wrapper.appendChild(Yt.overlay), Yt.overlay.innerHTML = '
\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tUnable to load iframe. This is likely due to the site\'s policy (x-frame-options).\n\t\t\t\t\n\t\t\t
'), Yt.overlay.querySelector("iframe").addEventListener("load", function () { Yt.overlay.classList.add("loaded") }, !1), Yt.overlay.querySelector(".close").addEventListener("click", function (t) { C(), t.preventDefault() }, !1), Yt.overlay.querySelector(".external").addEventListener("click", function () { C() }, !1) } function R(t) { "boolean" == typeof t ? t ? T() : C() : Yt.overlay ? C() : T() } function T() { if (jt.help) { C(), Yt.overlay = document.createElement("div"), Yt.overlay.classList.add("overlay"), Yt.overlay.classList.add("overlay-help"), Yt.wrapper.appendChild(Yt.overlay); var t = '

Keyboard Shortcuts


', e = ae.getShortcuts(), r = ae.getBindings(); for (var n in t += "", e) t += ""); for (var i in r) r[i].key && r[i].description && (t += "")); t += "
KEYACTION
".concat(n, "").concat(e[n], "
".concat(r[i].key, "").concat(r[i].description, "
", Yt.overlay.innerHTML = '\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
'.concat(t, "
\n\t\t\t\t
\n\t\t\t"), Yt.overlay.querySelector(".close").addEventListener("click", function (t) { C(), t.preventDefault() }, !1) } } function C() { return !!Yt.overlay && (Yt.overlay.parentNode.removeChild(Yt.overlay), Yt.overlay = null, !0) } function L() { if (Yt.wrapper && !he.isPrintingPDF()) { if (!jt.disableLayout) { Nd && !jt.embedded && document.documentElement.style.setProperty("--vh", .01 * window.innerHeight + "px"); var t = N(), e = Wt; z(jt.width, jt.height), Yt.slides.style.width = t.width + "px", Yt.slides.style.height = t.height + "px", Wt = Math.min(t.presentationWidth / t.width, t.presentationHeight / t.height), Wt = Math.max(Wt, jt.minScale), 1 === (Wt = Math.min(Wt, jt.maxScale)) ? (Yt.slides.style.zoom = "", Yt.slides.style.left = "", Yt.slides.style.top = "", Yt.slides.style.bottom = "", Yt.slides.style.right = "", w({ layout: "" })) : (Yt.slides.style.zoom = "", Yt.slides.style.left = "50%", Yt.slides.style.top = "50%", Yt.slides.style.bottom = "auto", Yt.slides.style.right = "auto", w({ layout: "translate(-50%, -50%) scale(" + Wt + ")" })); for (var r = Array.from(Yt.wrapper.querySelectorAll(rm)), n = 0, i = r.length; n < i; n++) { var a = r[n]; "none" !== a.style.display && (jt.center || a.classList.contains("center") ? a.classList.contains("stack") ? a.style.top = 0 : a.style.top = Math.max((t.height - a.scrollHeight) / 2, 0) + "px" : a.style.top = "") } e !== Wt && k({ type: "resize", data: { oldScale: e, scale: Wt, size: t } }) } Yt.viewport.style.setProperty("--slide-scale", Wt), le.update(), re.updateParallax(), ie.isActive() && ie.update() } } function z(t, e) { bd(Yt.slides, "section > .stretch, section > .r-stretch").forEach(function (r) { var n = Td(r, e); if (/(img|video)/gi.test(r.nodeName)) { var i = r.naturalWidth || r.videoWidth, a = r.naturalHeight || r.videoHeight, o = Math.min(t / i, n / a); r.style.width = i * o + "px", r.style.height = a * o + "px" } else r.style.width = t + "px", r.style.height = n + "px" }) } function N(t, e) { var r = { width: jt.width, height: jt.height, presentationWidth: t || Yt.wrapper.offsetWidth, presentationHeight: e || Yt.wrapper.offsetHeight }; return r.presentationWidth -= r.presentationWidth * jt.margin, r.presentationHeight -= r.presentationHeight * jt.margin, "string" == typeof r.width && /%$/.test(r.width) && (r.width = parseInt(r.width, 10) / 100 * r.presentationWidth), "string" == typeof r.height && /%$/.test(r.height) && (r.height = parseInt(r.height, 10) / 100 * r.presentationHeight), r } function P(t, e) { "object" === r(t) && "function" == typeof t.setAttribute && t.setAttribute("data-previous-indexv", e || 0) } function I(t) { if ("object" === r(t) && "function" == typeof t.setAttribute && t.classList.contains("stack")) { var e = t.hasAttribute("data-start-indexv") ? "data-start-indexv" : "data-previous-indexv"; return parseInt(t.getAttribute(e) || 0, 10) } return 0 } function O() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Dt; return t && t.parentNode && !!t.parentNode.nodeName.match(/section/i) } function B() { return !(!Dt || !O(Dt) || Dt.nextElementSibling) } function q() { return 0 === Ot && 0 === Bt } function D() { return !(!Dt || Dt.nextElementSibling || O(Dt) && Dt.parentNode.nextElementSibling) } function F() { if (jt.pause) { var t = Yt.wrapper.classList.contains("paused"); vt(), Yt.wrapper.classList.add("paused"), !1 === t && k({ type: "paused" }) } } function H() { var t = Yt.wrapper.classList.contains("paused"); Yt.wrapper.classList.remove("paused"), gt(), t && k({ type: "resumed" }) } function j(t) { "boolean" == typeof t ? t ? F() : H() : U() ? H() : F() } function U() { return Yt.wrapper.classList.contains("paused") } function _(t) { "boolean" == typeof t ? t ? bt() : yt() : Jt ? bt() : yt() } function V() { return !(!Kt || Jt) } function W(t, e, r, n) { if (!k({ type: "beforeslidechange", data: { indexh: void 0 === t ? Ot : t, indexv: void 0 === e ? Bt : e, origin: n } }).defaultPrevented) { qt = Dt; var i = Yt.wrapper.querySelectorAll(nm); if (0 !== i.length) { void 0 !== e || ie.isActive() || (e = I(i[t])), qt && qt.parentNode && qt.parentNode.classList.contains("stack") && P(qt.parentNode, Bt); var a = Vt.concat(); Vt.length = 0; var o = Ot || 0, s = Bt || 0; Ot = $(nm, void 0 === t ? Ot : t), Bt = $(im, void 0 === e ? Bt : e); var l = Ot !== o || Bt !== s; l || (qt = null); var c = i[Ot], d = c.querySelectorAll("section"); Dt = d[Bt] || c; var m = !1; l && qt && Dt && !ie.isActive() && (qt.hasAttribute("data-auto-animate") && Dt.hasAttribute("data-auto-animate") && qt.getAttribute("data-auto-animate-id") === Dt.getAttribute("data-auto-animate-id") && !(Ot > o || Bt > s ? Dt : qt).hasAttribute("data-auto-animate-restart") && (m = !0, Yt.slides.classList.add("disable-slide-transitions")), Xt = "running"), Q(), L(), ie.isActive() && ie.update(), void 0 !== r && ne.goto(r), qt && qt !== Dt && (qt.classList.remove("present"), qt.setAttribute("aria-hidden", "true"), q() && setTimeout(function () { st().forEach(function (t) { P(t, 0) }) }, 0)); t: for (var p = 0, f = Vt.length; p < f; p++) { for (var g = 0; g < a.length; g++)if (a[g] === Vt[p]) { a.splice(g, 1); continue t } Yt.viewport.classList.add(Vt[p]), k({ type: Vt[p] }) } for (; a.length;)Yt.viewport.classList.remove(a.pop()); l && k({ type: "slidechanged", data: { indexh: Ot, indexv: Bt, previousSlide: qt, currentSlide: Dt, origin: n } }), !l && qt || (Qt.stopEmbeddedContent(qt), Qt.startEmbeddedContent(Dt)), requestAnimationFrame(function () { u(h(Dt)) }), le.update(), se.update(), pe.update(), re.update(), re.updateParallax(), te.update(), ne.update(), oe.writeURL(), gt(), m && (setTimeout(function () { Yt.slides.classList.remove("disable-slide-transitions") }, 0), jt.autoAnimate && ee.run(qt, Dt)) } } } function G() { v(), g(), L(), Kt = jt.autoSlide, gt(), re.create(), oe.writeURL(), ne.sortAll(), se.update(), le.update(), Q(), pe.update(), pe.updateVisibility(), re.update(!0), te.update(), Qt.formatEmbeddedContent(), !1 === jt.autoPlayMedia ? Qt.stopEmbeddedContent(Dt, { unloadIframes: !1 }) : Qt.startEmbeddedContent(Dt), ie.isActive() && ie.layout() } function Y() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Dt; re.sync(t), ne.sync(t), Qt.load(t), re.update(), pe.update() } function X() { at().forEach(function (t) { bd(t, "section").forEach(function (t, e) { e > 0 && (t.classList.remove("present"), t.classList.remove("past"), t.classList.add("future"), t.setAttribute("aria-hidden", "true")) }) }) } function K() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : at(); t.forEach(function (e) { var r = t[Math.floor(Math.random() * t.length)]; r.parentNode === e.parentNode && e.parentNode.insertBefore(e, r); var n = e.querySelectorAll("section"); n.length && K(n) }) } function $(t, e) { var r = bd(Yt.wrapper, t), n = r.length, i = he.isPrintingPDF(), a = !1, o = !1; if (n) { jt.loop && (e >= n && (a = !0), (e %= n) < 0 && (e = n + e, o = !0)), e = Math.max(Math.min(e, n - 1), 0); for (var s = 0; s < n; s++) { var l = r[s], c = jt.rtl && !O(l); l.classList.remove("past"), l.classList.remove("present"), l.classList.remove("future"), l.setAttribute("hidden", ""), l.setAttribute("aria-hidden", "true"), l.querySelector("section") && l.classList.add("stack"), i ? l.classList.add("present") : s < e ? (l.classList.add(c ? "future" : "past"), jt.fragments && Z(l)) : s > e ? (l.classList.add(c ? "past" : "future"), jt.fragments && J(l)) : s === e && jt.fragments && (a ? J(l) : o && Z(l)) } var u = r[e], h = u.classList.contains("present"); u.classList.add("present"), u.removeAttribute("hidden"), u.removeAttribute("aria-hidden"), h || k({ target: u, type: "visible", bubbles: !1 }); var d = u.getAttribute("data-state"); d && (Vt = Vt.concat(d.split(" "))) } else e = 0; return e } function Z(t) { bd(t, ".fragment").forEach(function (t) { t.classList.add("visible"), t.classList.remove("current-fragment") }) } function J(t) { bd(t, ".fragment.visible").forEach(function (t) { t.classList.remove("visible", "current-fragment") }) } function Q() { var t, e = at(), r = e.length; if (r && void 0 !== Ot) { var n = ie.isActive() ? 10 : jt.viewDistance; Nd && (n = ie.isActive() ? 6 : jt.mobileViewDistance), he.isPrintingPDF() && (n = Number.MAX_VALUE); for (var i = 0; i < r; i++) { var a = e[i], o = bd(a, "section"), s = o.length; if (t = Math.abs((Ot || 0) - i) || 0, jt.loop && (t = Math.abs(((Ot || 0) - i) % (r - n)) || 0), t < n ? Qt.load(a) : Qt.unload(a), s) for (var l = I(a), c = 0; c < s; c++) { var u = o[c]; t + (i === (Ot || 0) ? Math.abs((Bt || 0) - c) : Math.abs(c - l)) < n ? Qt.load(u) : Qt.unload(u) } } ct() ? Yt.wrapper.classList.add("has-vertical-slides") : Yt.wrapper.classList.remove("has-vertical-slides"), lt() ? Yt.wrapper.classList.add("has-horizontal-slides") : Yt.wrapper.classList.remove("has-horizontal-slides") } } function tt() { var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).includeFragments, e = void 0 !== t && t, r = Yt.wrapper.querySelectorAll(nm), n = Yt.wrapper.querySelectorAll(im), i = { left: Ot > 0, right: Ot < r.length - 1, up: Bt > 0, down: Bt < n.length - 1 }; if (jt.loop && (r.length > 1 && (i.left = !0, i.right = !0), n.length > 1 && (i.up = !0, i.down = !0)), r.length > 1 && "linear" === jt.navigationMode && (i.right = i.right || i.down, i.left = i.left || i.up), !0 === e) { var a = ne.availableRoutes(); i.left = i.left || a.prev, i.up = i.up || a.prev, i.down = i.down || a.next, i.right = i.right || a.next } if (jt.rtl) { var o = i.left; i.left = i.right, i.right = o } return i } function et() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Dt, e = at(), r = 0; t: for (var n = 0; n < e.length; n++) { for (var i = e[n], a = i.querySelectorAll("section"), o = 0; o < a.length; o++) { if (a[o] === t) break t; "uncounted" !== a[o].dataset.visibility && r++ } if (i === t) break; !1 === i.classList.contains("stack") && "uncounted" !== i.dataset.visibility && r++ } return r } function rt() { var t = ht(), e = et(); if (Dt) { var r = Dt.querySelectorAll(".fragment"); r.length > 0 && (e += Dt.querySelectorAll(".fragment.visible").length / r.length * .9) } return Math.min(e / (t - 1), 1) } function nt(t) { var e, r = Ot, n = Bt; if (t) { var i = O(t), a = i ? t.parentNode : t, o = at(); r = Math.max(o.indexOf(a), 0), n = void 0, i && (n = Math.max(bd(t.parentNode, "section").indexOf(t), 0)) } if (!t && Dt && Dt.querySelectorAll(".fragment").length > 0) { var s = Dt.querySelector(".current-fragment"); e = s && s.hasAttribute("data-fragment-index") ? parseInt(s.getAttribute("data-fragment-index"), 10) : Dt.querySelectorAll(".fragment.visible").length - 1 } return { h: r, v: n, f: e } } function it() { return bd(Yt.wrapper, '.slides section:not(.stack):not([data-visibility="uncounted"])') } function at() { return bd(Yt.wrapper, nm) } function ot() { return bd(Yt.wrapper, ".slides>section>section") } function st() { return bd(Yt.wrapper, ".slides>section.stack") } function lt() { return at().length > 1 } function ct() { return ot().length > 1 } function ut() { return it().map(function (t) { for (var e = {}, r = 0; r < t.attributes.length; r++) { var n = t.attributes[r]; e[n.name] = n.value } return e }) } function ht() { return it().length } function dt(t, e) { var r = at()[t], n = r && r.querySelectorAll("section"); return n && n.length && "number" == typeof e ? n ? n[e] : void 0 : r } function mt(t, e) { var r = "number" == typeof t ? dt(t, e) : t; if (r) return r.slideBackgroundElement } function pt() { var t = nt(); return { indexh: t.h, indexv: t.v, indexf: t.f, paused: U(), overview: ie.isActive() } } function ft(t) { if ("object" === r(t)) { W(wd(t.indexh), wd(t.indexv), wd(t.indexf)); var e = wd(t.paused), n = wd(t.overview); "boolean" == typeof e && e !== U() && j(e), "boolean" == typeof n && n !== ie.isActive() && ie.toggle(n) } } function gt() { if (vt(), Dt && !1 !== jt.autoSlide) { var t = Dt.querySelector(".current-fragment"); t || (t = Dt.querySelector(".fragment")); var e = t ? t.getAttribute("data-autoslide") : null, r = Dt.parentNode ? Dt.parentNode.getAttribute("data-autoslide") : null, n = Dt.getAttribute("data-autoslide"); e ? Kt = parseInt(e, 10) : n ? Kt = parseInt(n, 10) : r ? Kt = parseInt(r, 10) : (Kt = jt.autoSlide, 0 === Dt.querySelectorAll(".fragment").length && bd(Dt, "video, audio").forEach(function (t) { t.hasAttribute("data-autoplay") && Kt && 1e3 * t.duration / t.playbackRate > Kt && (Kt = 1e3 * t.duration / t.playbackRate + 1e3) })), !Kt || Jt || U() || ie.isActive() || D() && !ne.availableRoutes().next && !0 !== jt.loop || ($t = setTimeout(function () { "function" == typeof jt.autoSlideMethod ? jt.autoSlideMethod() : Et(), gt() }, Kt), Zt = Date.now()), Ft && Ft.setPlaying(-1 !== $t) } } function vt() { clearTimeout($t), $t = -1 } function yt() { Kt && !Jt && (Jt = !0, k({ type: "autoslidepaused" }), clearTimeout($t), Ft && Ft.setPlaying(!1)) } function bt() { Kt && Jt && (Jt = !1, k({ type: "autoslideresumed" }), gt()) } function xt() { var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).skipFragments, e = void 0 !== t && t; _t.hasNavigatedHorizontally = !0, jt.rtl ? (ie.isActive() || e || !1 === ne.next()) && tt().left && W(Ot + 1, "grid" === jt.navigationMode ? Bt : void 0) : (ie.isActive() || e || !1 === ne.prev()) && tt().left && W(Ot - 1, "grid" === jt.navigationMode ? Bt : void 0) } function wt() { var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).skipFragments, e = void 0 !== t && t; _t.hasNavigatedHorizontally = !0, jt.rtl ? (ie.isActive() || e || !1 === ne.prev()) && tt().right && W(Ot - 1, "grid" === jt.navigationMode ? Bt : void 0) : (ie.isActive() || e || !1 === ne.next()) && tt().right && W(Ot + 1, "grid" === jt.navigationMode ? Bt : void 0) } function kt() { var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).skipFragments, e = void 0 !== t && t; (ie.isActive() || e || !1 === ne.prev()) && tt().up && W(Ot, Bt - 1) } function St() { var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).skipFragments, e = void 0 !== t && t; _t.hasNavigatedVertically = !0, (ie.isActive() || e || !1 === ne.next()) && tt().down && W(Ot, Bt + 1) } function At() { var t, e = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).skipFragments, r = void 0 !== e && e; if (r || !1 === ne.prev()) if (tt().up) kt({ skipFragments: r }); else if ((t = jt.rtl ? bd(Yt.wrapper, ".slides>section.future").pop() : bd(Yt.wrapper, ".slides>section.past").pop()) && t.classList.contains("stack")) { var n = t.querySelectorAll("section").length - 1 || void 0; W(Ot - 1, n) } else xt({ skipFragments: r }) } function Et() { var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).skipFragments, e = void 0 !== t && t; if (_t.hasNavigatedHorizontally = !0, _t.hasNavigatedVertically = !0, e || !1 === ne.next()) { var r = tt(); r.down && r.right && jt.loop && B() && (r.down = !1), r.down ? St({ skipFragments: e }) : jt.rtl ? xt({ skipFragments: e }) : wt({ skipFragments: e }) } } function Mt() { jt.autoSlideStoppable && yt() } function Rt(t) { var e = t.data; if ("string" == typeof e && "{" === e.charAt(0) && "}" === e.charAt(e.length - 1) && (e = JSON.parse(e)).method && "function" == typeof Ht[e.method]) if (!1 === am.test(e.method)) { var r = Ht[e.method].apply(Ht, e.args); S("callback", { method: e.method, result: r }) } else console.warn('reveal.js: "' + e.method + '" is is blacklisted from the postMessage API') } function Tt(t) { "running" === Xt && /section/gi.test(t.target.nodeName) && (Xt = "idle", k({ type: "slidetransitionend", data: { indexh: Ot, indexv: Bt, previousSlide: qt, currentSlide: Dt } })) } function Ct(t) { var e = Ad(t.target, 'a[href^="#"]'); if (e) { var r = e.getAttribute("href"), n = oe.getIndicesFromHash(r); n && (Ht.slide(n.h, n.v, n.f), t.preventDefault()) } } function Lt() { L() } function zt() { !1 === document.hidden && document.activeElement !== document.body && ("function" == typeof document.activeElement.blur && document.activeElement.blur(), document.body.focus()) } function Nt(t) { (document.fullscreenElement || document.webkitFullscreenElement) === Yt.wrapper && (t.stopImmediatePropagation(), setTimeout(function () { Ht.layout(), Ht.focus.focus() }, 1)) } function Pt(t) { if (t.currentTarget && t.currentTarget.hasAttribute("href")) { var e = t.currentTarget.getAttribute("href"); e && (M(e), t.preventDefault()) } } function It() { D() && !1 === jt.loop ? (W(0, 0), bt()) : Jt ? bt() : yt() } arguments.length < 2 && (n = arguments[0], t = document.querySelector(".reveal")); var Ot, Bt, qt, Dt, Ft, Ht = {}, jt = {}, Ut = !1, _t = { hasNavigatedHorizontally: !1, hasNavigatedVertically: !1 }, Vt = [], Wt = 1, Gt = { layout: "", overview: "" }, Yt = {}, Xt = "idle", Kt = 0, $t = 0, Zt = -1, Jt = !1, Qt = new qd(Ht), te = new Dd(Ht), ee = new lm(Ht), re = new Jd(Ht), ne = new cm(Ht), ie = new um(Ht), ae = new hm(Ht), oe = new dm(Ht), se = new mm(Ht), le = new pm(Ht), ce = new fm(Ht), ue = new Sm(Ht), he = new Am(Ht), de = new Tm(Ht), me = new Em(Ht), pe = new Cm(Ht), fe = { VERSION: Hm, initialize: i, configure: f, destroy: y, sync: G, syncSlide: Y, syncFragments: ne.sync.bind(ne), slide: W, left: xt, right: wt, up: kt, down: St, prev: At, next: Et, navigateLeft: xt, navigateRight: wt, navigateUp: kt, navigateDown: St, navigatePrev: At, navigateNext: Et, navigateFragment: ne.goto.bind(ne), prevFragment: ne.prev.bind(ne), nextFragment: ne.next.bind(ne), on: b, off: x, addEventListener: b, removeEventListener: x, layout: L, shuffle: K, availableRoutes: tt, availableFragments: ne.availableRoutes.bind(ne), toggleHelp: R, toggleOverview: ie.toggle.bind(ie), togglePause: j, toggleAutoSlide: _, isFirstSlide: q, isLastSlide: D, isLastVerticalSlide: B, isVerticalSlide: O, isPaused: U, isAutoSliding: V, isSpeakerNotes: pe.isSpeakerNotesWindow.bind(pe), isOverview: ie.isActive.bind(ie), isFocused: de.isFocused.bind(de), isPrintingPDF: he.isPrintingPDF.bind(he), isReady: function () { return Ut }, loadSlide: Qt.load.bind(Qt), unloadSlide: Qt.unload.bind(Qt), showPreview: M, hidePreview: C, addEventListeners: g, removeEventListeners: v, dispatchEvent: k, getState: pt, setState: ft, getProgress: rt, getIndices: nt, getSlidesAttributes: ut, getSlidePastCount: et, getTotalSlides: ht, getSlide: dt, getPreviousSlide: function () { return qt }, getCurrentSlide: function () { return Dt }, getSlideBackground: mt, getSlideNotes: pe.getSlideNotes.bind(pe), getSlides: it, getHorizontalSlides: at, getVerticalSlides: ot, hasHorizontalSlides: lt, hasVerticalSlides: ct, hasNavigatedHorizontally: function () { return _t.hasNavigatedHorizontally }, hasNavigatedVertically: function () { return _t.hasNavigatedVertically }, addKeyBinding: ae.addKeyBinding.bind(ae), removeKeyBinding: ae.removeKeyBinding.bind(ae), triggerKey: ae.triggerKey.bind(ae), registerKeyboardShortcut: ae.registerKeyboardShortcut.bind(ae), getComputedSlideSize: N, getScale: function () { return Wt }, getConfig: function () { return jt }, getQueryHash: Rd, getSlidePath: oe.getHash.bind(oe), getRevealElement: function () { return t }, getSlidesElement: function () { return Yt.slides }, getViewportElement: function () { return Yt.viewport }, getBackgroundsElement: function () { return re.element }, registerPlugin: ue.registerPlugin.bind(ue), hasPlugin: ue.hasPlugin.bind(ue), getPlugin: ue.getPlugin.bind(ue), getPlugins: ue.getRegisteredPlugins.bind(ue) }; return yd(Ht, e(e({}, fe), {}, { announceStatus: u, getStatusText: h, print: he, focus: de, progress: le, controls: se, location: oe, overview: ie, fragments: ne, slideContent: Qt, slideNumber: te, onUserInput: Mt, closeOverlay: C, updateSlidesVisibility: Q, layoutSlideContents: z, transformSlides: w, cueAutoSlide: gt, cancelAutoSlide: vt })), fe + } var d = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {}, m = function (t) { return t && t.Math == Math && t }, p = m("object" == typeof globalThis && globalThis) || m("object" == typeof window && window) || m("object" == typeof self && self) || m("object" == typeof d && d) || function () { return this }() || Function("return this")(), f = {}, g = function (t) { try { return !!t() } catch (t) { return !0 } }, v = !g(function () { return 7 != Object.defineProperty({}, 1, { get: function () { return 7 } })[1] }), y = {}, b = {}.propertyIsEnumerable, x = Object.getOwnPropertyDescriptor, w = x && !b.call({ 1: 2 }, 1); y.f = w ? function (t) { var e = x(this, t); return !!e && e.enumerable } : b; var k = function (t, e) { return { enumerable: !(1 & t), configurable: !(2 & t), writable: !(4 & t), value: e } }, S = {}.toString, A = function (t) { return S.call(t).slice(8, -1) }, E = A, M = "".split, R = g(function () { return !Object("z").propertyIsEnumerable(0) }) ? function (t) { return "String" == E(t) ? M.call(t, "") : Object(t) } : Object, T = function (t) { if (null == t) throw TypeError("Can't call method on " + t); return t }, C = R, L = T, z = function (t) { return C(L(t)) }, N = function (t) { return "object" == typeof t ? null !== t : "function" == typeof t }, P = N, I = function (t, e) { if (!P(t)) return t; var r, n; if (e && "function" == typeof (r = t.toString) && !P(n = r.call(t))) return n; if ("function" == typeof (r = t.valueOf) && !P(n = r.call(t))) return n; if (!e && "function" == typeof (r = t.toString) && !P(n = r.call(t))) return n; throw TypeError("Can't convert object to primitive value") }, O = T, B = function (t) { return Object(O(t)) }, q = B, D = {}.hasOwnProperty, F = function (t, e) { return D.call(q(t), e) }, H = N, j = p.document, U = H(j) && H(j.createElement), _ = function (t) { return U ? j.createElement(t) : {} }, V = _, W = !v && !g(function () { return 7 != Object.defineProperty(V("div"), "a", { get: function () { return 7 } }).a }), G = v, Y = y, X = k, K = z, $ = I, Z = F, J = W, Q = Object.getOwnPropertyDescriptor; f.f = G ? Q : function (t, e) { if (t = K(t), e = $(e, !0), J) try { return Q(t, e) } catch (t) { } if (Z(t, e)) return X(!Y.f.call(t, e), t[e]) }; var tt = {}, et = N, rt = function (t) { if (!et(t)) throw TypeError(String(t) + " is not an object"); return t }, nt = v, it = W, at = rt, ot = I, st = Object.defineProperty; tt.f = nt ? st : function (t, e, r) { if (at(t), e = ot(e, !0), at(r), it) try { return st(t, e, r) } catch (t) { } if ("get" in r || "set" in r) throw TypeError("Accessors not supported"); return "value" in r && (t[e] = r.value), t }; var lt = tt, ct = k, ut = v ? function (t, e, r) { return lt.f(t, e, ct(1, r)) } : function (t, e, r) { return t[e] = r, t }, ht = { exports: {} }, dt = p, mt = ut, pt = function (t, e) { try { mt(dt, t, e) } catch (p) { dt[t] = e } return e }, ft = pt, gt = "__core-js_shared__", vt = p[gt] || ft(gt, {}), yt = vt, bt = Function.toString; "function" != typeof yt.inspectSource && (yt.inspectSource = function (t) { return bt.call(t) }); var xt = yt.inspectSource, wt = xt, kt = p.WeakMap, St = "function" == typeof kt && /native code/.test(wt(kt)), At = { exports: {} }, Et = vt; (At.exports = function (t, e) { return Et[t] || (Et[t] = void 0 !== e ? e : {}) })("versions", []).push({ version: "3.12.1", mode: "global", copyright: "\xa9 2021 Denis Pushkarev (zloirock.ru)" }); var Mt, Rt, Tt, Ct = 0, Lt = Math.random(), zt = function (t) { return "Symbol(" + String(void 0 === t ? "" : t) + ")_" + (++Ct + Lt).toString(36) }, Nt = At.exports, Pt = zt, It = Nt("keys"), Ot = function (t) { return It[t] || (It[t] = Pt(t)) }, Bt = {}, qt = St, Dt = N, Ft = ut, Ht = F, jt = vt, Ut = Ot, _t = Bt, Vt = "Object already initialized", Wt = p.WeakMap; if (qt || jt.state) { var Gt = jt.state || (jt.state = new Wt), Yt = Gt.get, Xt = Gt.has, Kt = Gt.set; Mt = function (t, e) { if (Xt.call(Gt, t)) throw new TypeError(Vt); return e.facade = t, Kt.call(Gt, t, e), e }, Rt = function (t) { return Yt.call(Gt, t) || {} }, Tt = function (t) { return Xt.call(Gt, t) } } else { var $t = Ut("state"); _t[$t] = !0, Mt = function (t, e) { if (Ht(t, $t)) throw new TypeError(Vt); return e.facade = t, Ft(t, $t, e), e }, Rt = function (t) { return Ht(t, $t) ? t[$t] : {} }, Tt = function (t) { return Ht(t, $t) } } var Zt = { set: Mt, get: Rt, has: Tt, enforce: function (t) { return Tt(t) ? Rt(t) : Mt(t, {}) }, getterFor: function (t) { return function (e) { var r; if (!Dt(e) || (r = Rt(e)).type !== t) throw TypeError("Incompatible receiver, " + t + " required"); return r } } }, Jt = p, Qt = ut, te = F, ee = pt, re = xt, ne = Zt.get, ie = Zt.enforce, ae = String(String).split("String"); (ht.exports = function (t, e, r, n) { var i, a = !!n && !!n.unsafe, o = !!n && !!n.enumerable, s = !!n && !!n.noTargetGet; "function" == typeof r && ("string" != typeof e || te(r, "name") || Qt(r, "name", e), (i = ie(r)).source || (i.source = ae.join("string" == typeof e ? e : ""))), t !== Jt ? (a ? !s && t[e] && (o = !0) : delete t[e], o ? t[e] = r : Qt(t, e, r)) : o ? t[e] = r : ee(e, r) })(Function.prototype, "toString", function () { return "function" == typeof this && ne(this).source || re(this) }); var oe = p, se = oe, le = p, ce = function (t) { return "function" == typeof t ? t : void 0 }, ue = function (t, e) { return arguments.length < 2 ? ce(se[t]) || ce(le[t]) : se[t] && se[t][e] || le[t] && le[t][e] }, he = {}, de = Math.ceil, me = Math.floor, pe = function (t) { return isNaN(t = +t) ? 0 : (t > 0 ? me : de)(t) }, fe = pe, ge = Math.min, ve = function (t) { return t > 0 ? ge(fe(t), 9007199254740991) : 0 }, ye = pe, be = Math.max, xe = Math.min, we = function (t, e) { var r = ye(t); return r < 0 ? be(r + e, 0) : xe(r, e) }, ke = z, Se = ve, Ae = we, Ee = function (t) { return function (e, r, n) { var i, a = ke(e), o = Se(a.length), s = Ae(n, o); if (t && r != r) { for (; o > s;)if ((i = a[s++]) != i) return !0 } else for (; o > s; s++)if ((t || s in a) && a[s] === r) return t || s || 0; return !t && -1 } }, Me = { includes: Ee(!0), indexOf: Ee(!1) }, Re = F, Te = z, Ce = Me.indexOf, Le = Bt, ze = function (t, e) { var r, n = Te(t), i = 0, a = []; for (r in n) !Re(Le, r) && Re(n, r) && a.push(r); for (; e.length > i;)Re(n, r = e[i++]) && (~Ce(a, r) || a.push(r)); return a }, Ne = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"], Pe = ze, Ie = Ne.concat("length", "prototype"); he.f = Object.getOwnPropertyNames || function (t) { return Pe(t, Ie) }; var Oe = {}; Oe.f = Object.getOwnPropertySymbols; var Be = he, qe = Oe, De = rt, Fe = ue("Reflect", "ownKeys") || function (t) { var e = Be.f(De(t)), r = qe.f; return r ? e.concat(r(t)) : e }, He = F, je = Fe, Ue = f, _e = tt, Ve = function (t, e) { for (var r = je(e), n = _e.f, i = Ue.f, a = 0; a < r.length; a++) { var o = r[a]; He(t, o) || n(t, o, i(e, o)) } }, We = g, Ge = /#|\.prototype\./, Ye = function (t, e) { var r = Ke[Xe(t)]; return r == Ze || r != $e && ("function" == typeof e ? We(e) : !!e) }, Xe = Ye.normalize = function (t) { return String(t).replace(Ge, ".").toLowerCase() }, Ke = Ye.data = {}, $e = Ye.NATIVE = "N", Ze = Ye.POLYFILL = "P", Je = Ye, Qe = p, tr = f.f, er = ut, rr = ht.exports, nr = pt, ir = Ve, ar = Je, or = function (t, e) { var r, n, i, a, o, s = t.target, l = t.global, c = t.stat; if (r = l ? Qe : c ? Qe[s] || nr(s, {}) : (Qe[s] || {}).prototype) for (n in e) { if (a = e[n], i = t.noTargetGet ? (o = tr(r, n)) && o.value : r[n], !ar(l ? n : s + (c ? "." : "#") + n, t.forced) && void 0 !== i) { if (typeof a == typeof i) continue; ir(a, i) } (t.sham || i && i.sham) && er(a, "sham", !0), rr(r, n, a, t) } }, sr = ze, lr = Ne, cr = Object.keys || function (t) { return sr(t, lr) }, ur = v, hr = g, dr = cr, mr = Oe, pr = y, fr = B, gr = R, vr = Object.assign, yr = Object.defineProperty, br = !vr || hr(function () { if (ur && 1 !== vr({ b: 1 }, vr(yr({}, "a", { enumerable: !0, get: function () { yr(this, "b", { value: 3, enumerable: !1 }) } }), { b: 2 })).b) return !0; var t = {}, e = {}, r = Symbol(), n = "abcdefghijklmnopqrst"; return t[r] = 7, n.split("").forEach(function (t) { e[t] = t }), 7 != vr({}, t)[r] || dr(vr({}, e)).join("") != n }) ? function (t) { for (var e = fr(t), r = arguments.length, n = 1, i = mr.f, a = pr.f; r > n;)for (var o, s = gr(arguments[n++]), l = i ? dr(s).concat(i(s)) : dr(s), c = l.length, u = 0; c > u;)o = l[u++], ur && !a.call(s, o) || (e[o] = s[o]); return e } : vr; or({ target: "Object", stat: !0, forced: Object.assign !== br }, { assign: br }); var xr, wr, kr = function (t) { + if ("function" != typeof t) throw TypeError(String(t) + " is not a function"); return t + }, Sr = kr, Ar = function (t, e, r) { if (Sr(t), void 0 === e) return t; switch (r) { case 0: return function () { return t.call(e) }; case 1: return function (r) { return t.call(e, r) }; case 2: return function (r, n) { return t.call(e, r, n) }; case 3: return function (r, n, i) { return t.call(e, r, n, i) } }return function () { return t.apply(e, arguments) } }, Er = A, Mr = Array.isArray || function (t) { return "Array" == Er(t) }, Rr = ue("navigator", "userAgent") || "", Tr = Rr, Cr = p.process, Lr = Cr && Cr.versions, zr = Lr && Lr.v8; zr ? wr = (xr = zr.split("."))[0] < 4 ? 1 : xr[0] + xr[1] : Tr && (!(xr = Tr.match(/Edge\/(\d+)/)) || xr[1] >= 74) && (xr = Tr.match(/Chrome\/(\d+)/)) && (wr = xr[1]); var Nr = wr && +wr, Pr = Nr, Ir = g, Or = !!Object.getOwnPropertySymbols && !Ir(function () { return !String(Symbol()) || !Symbol.sham && Pr && Pr < 41 }), Br = Or && !Symbol.sham && "symbol" == typeof Symbol.iterator, qr = p, Dr = At.exports, Fr = F, Hr = zt, jr = Or, Ur = Br, _r = Dr("wks"), Vr = qr.Symbol, Wr = Ur ? Vr : Vr && Vr.withoutSetter || Hr, Gr = function (t) { return Fr(_r, t) && (jr || "string" == typeof _r[t]) || (jr && Fr(Vr, t) ? _r[t] = Vr[t] : _r[t] = Wr("Symbol." + t)), _r[t] }, Yr = N, Xr = Mr, Kr = Gr("species"), $r = function (t, e) { var r; return Xr(t) && ("function" != typeof (r = t.constructor) || r !== Array && !Xr(r.prototype) ? Yr(r) && null === (r = r[Kr]) && (r = void 0) : r = void 0), new (void 0 === r ? Array : r)(0 === e ? 0 : e) }, Zr = Ar, Jr = R, Qr = B, tn = ve, en = $r, rn = [].push, nn = function (t) { var e = 1 == t, r = 2 == t, n = 3 == t, i = 4 == t, a = 6 == t, o = 7 == t, s = 5 == t || a; return function (l, c, u, h) { for (var d, m, p = Qr(l), f = Jr(p), g = Zr(c, u, 3), v = tn(f.length), y = 0, b = h || en, x = e ? b(l, v) : r || o ? b(l, 0) : void 0; v > y; y++)if ((s || y in f) && (m = g(d = f[y], y, p), t)) if (e) x[y] = m; else if (m) switch (t) { case 3: return !0; case 5: return d; case 6: return y; case 2: rn.call(x, d) } else switch (t) { case 4: return !1; case 7: rn.call(x, d) }return a ? -1 : n || i ? i : x } }, an = { forEach: nn(0), map: nn(1), filter: nn(2), some: nn(3), every: nn(4), find: nn(5), findIndex: nn(6), filterOut: nn(7) }, on = g, sn = Nr, ln = Gr("species"), cn = function (t) { return sn >= 51 || !on(function () { var e = []; return (e.constructor = {})[ln] = function () { return { foo: 1 } }, 1 !== e[t](Boolean).foo }) }, un = an.map; or({ target: "Array", proto: !0, forced: !cn("map") }, { map: function (t) { return un(this, t, arguments.length > 1 ? arguments[1] : void 0) } }); var hn = I, dn = tt, mn = k, pn = function (t, e, r) { var n = hn(e); n in t ? dn.f(t, n, mn(0, r)) : t[n] = r }, fn = or, gn = g, vn = Mr, yn = N, bn = B, xn = ve, wn = pn, kn = $r, Sn = cn, An = Nr, En = Gr("isConcatSpreadable"), Mn = 9007199254740991, Rn = "Maximum allowed index exceeded", Tn = An >= 51 || !gn(function () { var t = []; return t[En] = !1, t.concat()[0] !== t }), Cn = Sn("concat"), Ln = function (t) { if (!yn(t)) return !1; var e = t[En]; return void 0 !== e ? !!e : vn(t) }; fn({ target: "Array", proto: !0, forced: !Tn || !Cn }, { concat: function () { var t, e, r, n, i, a = bn(this), o = kn(a, 0), s = 0; for (t = -1, r = arguments.length; t < r; t++)if (Ln(i = -1 === t ? a : arguments[t])) { if (s + (n = xn(i.length)) > Mn) throw TypeError(Rn); for (e = 0; e < n; e++, s++)e in i && wn(o, s, i[e]) } else { if (s >= Mn) throw TypeError(Rn); wn(o, s++, i) } return o.length = s, o } }); var zn = {}; zn[Gr("toStringTag")] = "z"; var Nn = "[object z]" === String(zn), Pn = Nn, In = A, On = Gr("toStringTag"), Bn = "Arguments" == In(function () { return arguments }()), qn = Pn ? In : function (t) { var e, r, n; return void 0 === t ? "Undefined" : null === t ? "Null" : "string" == typeof (r = function (t, e) { try { return t[e] } catch (t) { } }(e = Object(t), On)) ? r : Bn ? In(e) : "Object" == (n = In(e)) && "function" == typeof e.callee ? "Arguments" : n }, Dn = qn, Fn = Nn ? {}.toString : function () { return "[object " + Dn(this) + "]" }, Hn = Nn, jn = ht.exports, Un = Fn; Hn || jn(Object.prototype, "toString", Un, { unsafe: !0 }); var _n = p.Promise, Vn = ht.exports, Wn = N, Gn = rt, Yn = function (t) { if (!Wn(t) && null !== t) throw TypeError("Can't set " + String(t) + " as a prototype"); return t }, Xn = Object.setPrototypeOf || ("__proto__" in {} ? function () { var t, e = !1, r = {}; try { (t = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(r, []), e = r instanceof Array } catch (t) { } return function (r, n) { return Gn(r), Yn(n), e ? t.call(r, n) : r.__proto__ = n, r } }() : void 0), Kn = tt.f, $n = F, Zn = Gr("toStringTag"), Jn = function (t, e, r) { t && !$n(t = r ? t : t.prototype, Zn) && Kn(t, Zn, { configurable: !0, value: e }) }, Qn = ue, ti = tt, ei = v, ri = Gr("species"), ni = {}, ii = ni, ai = Gr("iterator"), oi = Array.prototype, si = function (t) { return void 0 !== t && (ii.Array === t || oi[ai] === t) }, li = qn, ci = ni, ui = Gr("iterator"), hi = function (t) { if (null != t) return t[ui] || t["@@iterator"] || ci[li(t)] }, di = rt, mi = function (t) { var e = t["return"]; if (void 0 !== e) return di(e.call(t)).value }, pi = rt, fi = si, gi = ve, vi = Ar, yi = hi, bi = mi, xi = function (t, e) { this.stopped = t, this.result = e }, wi = Gr("iterator"), ki = !1; try { var Si = 0, Ai = { next: function () { return { done: !!Si++ } }, "return": function () { ki = !0 } }; Ai[wi] = function () { return this }, Array.from(Ai, function () { throw 2 }) } catch (d) { } var Ei, Mi, Ri, Ti = function (t, e) { if (!e && !ki) return !1; var r = !1; try { var n = {}; n[wi] = function () { return { next: function () { return { done: r = !0 } } } }, t(n) } catch (t) { } return r }, Ci = rt, Li = kr, zi = Gr("species"), Ni = function (t, e) { var r, n = Ci(t).constructor; return void 0 === n || null == (r = Ci(n)[zi]) ? e : Li(r) }, Pi = ue("document", "documentElement"), Ii = /(?:iphone|ipod|ipad).*applewebkit/i.test(Rr), Oi = "process" == A(p.process), Bi = p, qi = g, Di = Ar, Fi = Pi, Hi = _, ji = Ii, Ui = Oi, _i = Bi.location, Vi = Bi.setImmediate, Wi = Bi.clearImmediate, Gi = Bi.process, Yi = Bi.MessageChannel, Xi = Bi.Dispatch, Ki = 0, $i = {}, Zi = "onreadystatechange", Ji = function (t) { if ($i.hasOwnProperty(t)) { var e = $i[t]; delete $i[t], e() } }, Qi = function (t) { return function () { Ji(t) } }, ta = function (t) { Ji(t.data) }, ea = function (t) { Bi.postMessage(t + "", _i.protocol + "//" + _i.host) }; Vi && Wi || (Vi = function (t) { for (var e = [], r = 1; arguments.length > r;)e.push(arguments[r++]); return $i[++Ki] = function () { ("function" == typeof t ? t : Function(t)).apply(void 0, e) }, Ei(Ki), Ki }, Wi = function (t) { delete $i[t] }, Ui ? Ei = function (t) { Gi.nextTick(Qi(t)) } : Xi && Xi.now ? Ei = function (t) { Xi.now(Qi(t)) } : Yi && !ji ? (Ri = (Mi = new Yi).port2, Mi.port1.onmessage = ta, Ei = Di(Ri.postMessage, Ri, 1)) : Bi.addEventListener && "function" == typeof postMessage && !Bi.importScripts && _i && "file:" !== _i.protocol && !qi(ea) ? (Ei = ea, Bi.addEventListener("message", ta, !1)) : Ei = Zi in Hi("script") ? function (t) { Fi.appendChild(Hi("script")).onreadystatechange = function () { Fi.removeChild(this), Ji(t) } } : function (t) { setTimeout(Qi(t), 0) }); var ra, na, ia, aa, oa, sa, la, ca, ua = { set: Vi, clear: Wi }, ha = /web0s(?!.*chrome)/i.test(Rr), da = p, ma = f.f, pa = ua.set, fa = Ii, ga = ha, va = Oi, ya = da.MutationObserver || da.WebKitMutationObserver, ba = da.document, xa = da.process, wa = da.Promise, ka = ma(da, "queueMicrotask"), Sa = ka && ka.value; Sa || (ra = function () { var t, e; for (va && (t = xa.domain) && t.exit(); na;) { e = na.fn, na = na.next; try { e() } catch (t) { throw na ? aa() : ia = void 0, t } } ia = void 0, t && t.enter() }, fa || va || ga || !ya || !ba ? wa && wa.resolve ? ((la = wa.resolve(void 0)).constructor = wa, ca = la.then, aa = function () { ca.call(la, ra) }) : aa = va ? function () { xa.nextTick(ra) } : function () { pa.call(da, ra) } : (oa = !0, sa = ba.createTextNode(""), new ya(ra).observe(sa, { characterData: !0 }), aa = function () { sa.data = oa = !oa })); var Aa = Sa || function (t) { var e = { fn: t, next: void 0 }; ia && (ia.next = e), na || (na = e, aa()), ia = e }, Ea = {}, Ma = kr, Ra = function (t) { var e, r; this.promise = new t(function (t, n) { if (void 0 !== e || void 0 !== r) throw TypeError("Bad Promise constructor"); e = t, r = n }), this.resolve = Ma(e), this.reject = Ma(r) }; Ea.f = function (t) { return new Ra(t) }; var Ta, Ca, La, za, Na = rt, Pa = N, Ia = Ea, Oa = p, Ba = "object" == typeof window, qa = or, Da = p, Fa = ue, Ha = _n, ja = ht.exports, Ua = function (t, e, r) { for (var n in e) Vn(t, n, e[n], r); return t }, _a = Xn, Va = Jn, Wa = function (t) { var e = Qn(t), r = ti.f; ei && e && !e[ri] && r(e, ri, { configurable: !0, get: function () { return this } }) }, Ga = N, Ya = kr, Xa = function (t, e, r) { if (!(t instanceof e)) throw TypeError("Incorrect " + (r ? r + " " : "") + "invocation"); return t }, Ka = xt, $a = function (t, e, r) { var n, i, a, o, s, l, c, u = r && r.that, h = !(!r || !r.AS_ENTRIES), d = !(!r || !r.IS_ITERATOR), m = !(!r || !r.INTERRUPTED), p = vi(e, u, 1 + h + m), f = function (t) { return n && bi(n), new xi(!0, t) }, g = function (t) { return h ? (pi(t), m ? p(t[0], t[1], f) : p(t[0], t[1])) : m ? p(t, f) : p(t) }; if (d) n = t; else { if ("function" != typeof (i = yi(t))) throw TypeError("Target is not iterable"); if (fi(i)) { for (a = 0, o = gi(t.length); o > a; a++)if ((s = g(t[a])) && s instanceof xi) return s; return new xi(!1) } n = i.call(t) } for (l = n.next; !(c = l.call(n)).done;) { try { s = g(c.value) } catch (t) { throw bi(n), t } if ("object" == typeof s && s && s instanceof xi) return s } return new xi(!1) }, Za = Ti, Ja = Ni, Qa = ua.set, to = Aa, eo = function (t, e) { if (Na(t), Pa(e) && e.constructor === t) return e; var r = Ia.f(t); return (0, r.resolve)(e), r.promise }, ro = function (t, e) { var r = Oa.console; r && r.error && (1 === arguments.length ? r.error(t) : r.error(t, e)) }, no = Ea, io = function (t) { try { return { error: !1, value: t() } } catch (t) { return { error: !0, value: t } } }, ao = Zt, oo = Je, so = Ba, lo = Oi, co = Nr, uo = Gr("species"), ho = "Promise", mo = ao.get, po = ao.set, fo = ao.getterFor(ho), go = Ha && Ha.prototype, vo = Ha, yo = go, bo = Da.TypeError, xo = Da.document, wo = Da.process, ko = no.f, So = ko, Ao = !!(xo && xo.createEvent && Da.dispatchEvent), Eo = "function" == typeof PromiseRejectionEvent, Mo = "unhandledrejection", Ro = !1, To = oo(ho, function () { var t = Ka(vo) !== String(vo); if (!t && 66 === co) return !0; if (co >= 51 && /native code/.test(vo)) return !1; var e = new vo(function (t) { t(1) }), r = function (t) { t(function () { }, function () { }) }; return (e.constructor = {})[uo] = r, !(Ro = e.then(function () { }) instanceof r) || !t && so && !Eo }), Co = To || !Za(function (t) { vo.all(t)["catch"](function () { }) }), Lo = function (t) { var e; return !(!Ga(t) || "function" != typeof (e = t.then)) && e }, zo = function (t, e) { if (!t.notified) { t.notified = !0; var r = t.reactions; to(function () { for (var n = t.value, i = 1 == t.state, a = 0; r.length > a;) { var o, s, l, c = r[a++], u = i ? c.ok : c.fail, h = c.resolve, d = c.reject, m = c.domain; try { u ? (i || (2 === t.rejection && Oo(t), t.rejection = 1), !0 === u ? o = n : (m && m.enter(), o = u(n), m && (m.exit(), l = !0)), o === c.promise ? d(bo("Promise-chain cycle")) : (s = Lo(o)) ? s.call(o, h, d) : h(o)) : d(n) } catch (t) { m && !l && m.exit(), d(t) } } t.reactions = [], t.notified = !1, e && !t.rejection && Po(t) }) } }, No = function (t, e, r) { var n, i; Ao ? ((n = xo.createEvent("Event")).promise = e, n.reason = r, n.initEvent(t, !1, !0), Da.dispatchEvent(n)) : n = { promise: e, reason: r }, !Eo && (i = Da["on" + t]) ? i(n) : t === Mo && ro("Unhandled promise rejection", r) }, Po = function (t) { Qa.call(Da, function () { var e, r = t.facade, n = t.value; if (Io(t) && (e = io(function () { lo ? wo.emit("unhandledRejection", n, r) : No(Mo, r, n) }), t.rejection = lo || Io(t) ? 2 : 1, e.error)) throw e.value }) }, Io = function (t) { return 1 !== t.rejection && !t.parent }, Oo = function (t) { Qa.call(Da, function () { var e = t.facade; lo ? wo.emit("rejectionHandled", e) : No("rejectionhandled", e, t.value) }) }, Bo = function (t, e, r) { return function (n) { t(e, n, r) } }, qo = function (t, e, r) { t.done || (t.done = !0, r && (t = r), t.value = e, t.state = 2, zo(t, !0)) }, Do = function (t, e, r) { if (!t.done) { t.done = !0, r && (t = r); try { if (t.facade === e) throw bo("Promise can't be resolved itself"); var n = Lo(e); n ? to(function () { var r = { done: !1 }; try { n.call(e, Bo(Do, r, t), Bo(qo, r, t)) } catch (e) { qo(r, e, t) } }) : (t.value = e, t.state = 1, zo(t, !1)) } catch (e) { qo({ done: !1 }, e, t) } } }; if (To && (yo = (vo = function (t) { Xa(this, vo, ho), Ya(t), Ta.call(this); var e = mo(this); try { t(Bo(Do, e), Bo(qo, e)) } catch (t) { qo(e, t) } }).prototype, (Ta = function () { po(this, { type: ho, done: !1, notified: !1, parent: !1, reactions: [], rejection: !1, state: 0, value: void 0 }) }).prototype = Ua(yo, { then: function (t, e) { var r = fo(this), n = ko(Ja(this, vo)); return n.ok = "function" != typeof t || t, n.fail = "function" == typeof e && e, n.domain = lo ? wo.domain : void 0, r.parent = !0, r.reactions.push(n), 0 != r.state && zo(r, !1), n.promise }, "catch": function (t) { return this.then(void 0, t) } }), Ca = function () { var t = new Ta, e = mo(t); this.promise = t, this.resolve = Bo(Do, e), this.reject = Bo(qo, e) }, no.f = ko = function (t) { return t === vo || t === La ? new Ca(t) : So(t) }, "function" == typeof Ha && go !== Object.prototype)) { za = go.then, Ro || (ja(go, "then", function (t, e) { var r = this; return new vo(function (t, e) { za.call(r, t, e) }).then(t, e) }, { unsafe: !0 }), ja(go, "catch", yo["catch"], { unsafe: !0 })); try { delete go.constructor } catch (d) { } _a && _a(go, yo) } qa({ global: !0, wrap: !0, forced: To }, { Promise: vo }), Va(vo, ho, !1), Wa(ho), La = Fa(ho), qa({ target: ho, stat: !0, forced: To }, { reject: function (t) { var e = ko(this); return e.reject.call(void 0, t), e.promise } }), qa({ target: ho, stat: !0, forced: To }, { resolve: function (t) { return eo(this, t) } }), qa({ target: ho, stat: !0, forced: Co }, { all: function (t) { var e = this, r = ko(e), n = r.resolve, i = r.reject, a = io(function () { var r = Ya(e.resolve), a = [], o = 0, s = 1; $a(t, function (t) { var l = o++, c = !1; a.push(void 0), s++, r.call(e, t).then(function (t) { c || (c = !0, a[l] = t, --s || n(a)) }, i) }), --s || n(a) }); return a.error && i(a.value), r.promise }, race: function (t) { var e = this, r = ko(e), n = r.reject, i = io(function () { var i = Ya(e.resolve); $a(t, function (t) { i.call(e, t).then(r.resolve, n) }) }); return i.error && n(i.value), r.promise } }); var Fo = g, Ho = function (t, e) { var r = [][t]; return !!r && Fo(function () { r.call(null, e || function () { throw 1 }, 1) }) }, jo = an.forEach, Uo = p, _o = { CSSRuleList: 0, CSSStyleDeclaration: 0, CSSValueList: 0, ClientRectList: 0, DOMRectList: 0, DOMStringList: 0, DOMTokenList: 1, DataTransferItemList: 0, FileList: 0, HTMLAllCollection: 0, HTMLCollection: 0, HTMLFormElement: 0, HTMLSelectElement: 0, MediaList: 0, MimeTypeArray: 0, NamedNodeMap: 0, NodeList: 1, PaintRequestList: 0, Plugin: 0, PluginArray: 0, SVGLengthList: 0, SVGNumberList: 0, SVGPathSegList: 0, SVGPointList: 0, SVGStringList: 0, SVGTransformList: 0, SourceBufferList: 0, StyleSheetList: 0, TextTrackCueList: 0, TextTrackList: 0, TouchList: 0 }, Vo = Ho("forEach") ? [].forEach : function (t) { return jo(this, t, arguments.length > 1 ? arguments[1] : void 0) }, Wo = ut; for (var Go in _o) { var Yo = Uo[Go], Xo = Yo && Yo.prototype; if (Xo && Xo.forEach !== Vo) try { Wo(Xo, "forEach", Vo) } catch (d) { Xo.forEach = Vo } } var Ko = rt, $o = mi, Zo = Ar, Jo = B, Qo = function (t, e, r, n) { try { return n ? e(Ko(r)[0], r[1]) : e(r) } catch (e) { throw $o(t), e } }, ts = si, es = ve, rs = pn, ns = hi, is = function (t) { var e, r, n, i, a, o, s = Jo(t), l = "function" == typeof this ? this : Array, c = arguments.length, u = c > 1 ? arguments[1] : void 0, h = void 0 !== u, d = ns(s), m = 0; if (h && (u = Zo(u, c > 2 ? arguments[2] : void 0, 2)), null == d || l == Array && ts(d)) for (r = new l(e = es(s.length)); e > m; m++)o = h ? u(s[m], m) : s[m], rs(r, m, o); else for (a = (i = d.call(s)).next, r = new l; !(n = a.call(i)).done; m++)o = h ? Qo(i, u, [n.value, m], !0) : n.value, rs(r, m, o); return r.length = m, r }; or({ target: "Array", stat: !0, forced: !Ti(function (t) { Array.from(t) }) }, { from: is }); var as, os, ss, ls = pe, cs = T, us = function (t) { return function (e, r) { var n, i, a = String(cs(e)), o = ls(r), s = a.length; return o < 0 || o >= s ? t ? "" : void 0 : (n = a.charCodeAt(o)) < 55296 || n > 56319 || o + 1 === s || (i = a.charCodeAt(o + 1)) < 56320 || i > 57343 ? t ? a.charAt(o) : n : t ? a.slice(o, o + 2) : i - 56320 + (n - 55296 << 10) + 65536 } }, hs = { codeAt: us(!1), charAt: us(!0) }, ds = !g(function () { function t() { } return t.prototype.constructor = null, Object.getPrototypeOf(new t) !== t.prototype }), ms = F, ps = B, fs = ds, gs = Ot("IE_PROTO"), vs = Object.prototype, ys = fs ? Object.getPrototypeOf : function (t) { return t = ps(t), ms(t, gs) ? t[gs] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? vs : null }, bs = g, xs = ys, ws = ut, ks = F, Ss = Gr("iterator"), As = !1;[].keys && ("next" in (ss = [].keys()) ? (os = xs(xs(ss))) !== Object.prototype && (as = os) : As = !0), (null == as || bs(function () { var t = {}; return as[Ss].call(t) !== t })) && (as = {}), ks(as, Ss) || ws(as, Ss, function () { return this }); var Es, Ms = { IteratorPrototype: as, BUGGY_SAFARI_ITERATORS: As }, Rs = tt, Ts = rt, Cs = cr, Ls = v ? Object.defineProperties : function (t, e) { Ts(t); for (var r, n = Cs(e), i = n.length, a = 0; i > a;)Rs.f(t, r = n[a++], e[r]); return t }, zs = rt, Ns = Ls, Ps = Ne, Is = Bt, Os = Pi, Bs = _, qs = Ot("IE_PROTO"), Ds = function () { }, Fs = function (t) { return "" + t + "" }, Hs = function () { try { Es = document.domain && new ActiveXObject("htmlfile") } catch (t) { } var t, e; Hs = Es ? function (t) { t.write(Fs("")), t.close(); var e = t.parentWindow.Object; return t = null, e }(Es) : ((e = Bs("iframe")).style.display = "none", Os.appendChild(e), e.src = String("javascript:"), (t = e.contentWindow.document).open(), t.write(Fs("document.F=Object")), t.close(), t.F); for (var r = Ps.length; r--;)delete Hs.prototype[Ps[r]]; return Hs() }; Is[qs] = !0; var js = Object.create || function (t, e) { var r; return null !== t ? (Ds.prototype = zs(t), r = new Ds, Ds.prototype = null, r[qs] = t) : r = Hs(), void 0 === e ? r : Ns(r, e) }, Us = Ms.IteratorPrototype, _s = js, Vs = k, Ws = Jn, Gs = ni, Ys = function () { return this }, Xs = or, Ks = function (t, e, r) { var n = e + " Iterator"; return t.prototype = _s(Us, { next: Vs(1, r) }), Ws(t, n, !1), Gs[n] = Ys, t }, $s = ys, Zs = Xn, Js = Jn, Qs = ut, tl = ht.exports, el = ni, rl = Ms.IteratorPrototype, nl = Ms.BUGGY_SAFARI_ITERATORS, il = Gr("iterator"), al = "keys", ol = "values", sl = "entries", ll = function () { return this }, cl = hs.charAt, ul = Zt, hl = function (t, e, r, n, i, a, o) { Ks(r, e, n); var s, l, c, u = function (t) { if (t === i && f) return f; if (!nl && t in m) return m[t]; switch (t) { case al: case ol: case sl: return function () { return new r(this, t) } }return function () { return new r(this) } }, h = e + " Iterator", d = !1, m = t.prototype, p = m[il] || m["@@iterator"] || i && m[i], f = !nl && p || u(i), g = "Array" == e && m.entries || p; if (g && (s = $s(g.call(new t)), rl !== Object.prototype && s.next && ($s(s) !== rl && (Zs ? Zs(s, rl) : "function" != typeof s[il] && Qs(s, il, ll)), Js(s, h, !0))), i == ol && p && p.name !== ol && (d = !0, f = function () { return p.call(this) }), m[il] !== f && Qs(m, il, f), el[e] = f, i) if (l = { values: u(ol), keys: a ? f : u(al), entries: u(sl) }, o) for (c in l) (nl || d || !(c in m)) && tl(m, c, l[c]); else Xs({ target: e, proto: !0, forced: nl || d }, l); return l }, dl = "String Iterator", ml = ul.set, pl = ul.getterFor(dl); hl(String, "String", function (t) { ml(this, { type: dl, string: String(t), index: 0 }) }, function () { var t, e = pl(this), r = e.string, n = e.index; return n >= r.length ? { value: void 0, done: !0 } : (t = cl(r, n), e.index += t.length, { value: t, done: !1 }) }); var fl = "\t\n\x0B\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff", gl = T, vl = "[\t\n\x0B\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff]", yl = RegExp("^" + vl + vl + "*"), bl = RegExp(vl + vl + "*$"), xl = function (t) { return function (e) { var r = String(gl(e)); return 1 & t && (r = r.replace(yl, "")), 2 & t && (r = r.replace(bl, "")), r } }, wl = { start: xl(1), end: xl(2), trim: xl(3) }, kl = g, Sl = fl, Al = wl.trim; or({ target: "String", proto: !0, forced: function (t) { return kl(function () { return !!Sl[t]() || "\u200b\x85\u180e" != "\u200b\x85\u180e"[t]() || Sl[t].name !== t }) }("trim") }, { trim: function () { return Al(this) } }); var El = {}, Ml = z, Rl = he.f, Tl = {}.toString, Cl = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; El.f = function (t) { return Cl && "[object Window]" == Tl.call(t) ? function (t) { try { return Rl(t) } catch (t) { return Cl.slice() } }(t) : Rl(Ml(t)) }; var Ll = {}, zl = Gr; Ll.f = zl; var Nl = oe, Pl = F, Il = Ll, Ol = tt.f, Bl = or, ql = p, Dl = ue, Fl = v, Hl = Or, jl = Br, Ul = g, _l = F, Vl = Mr, Wl = N, Gl = rt, Yl = B, Xl = z, Kl = I, $l = k, Zl = js, Jl = cr, Ql = he, tc = El, ec = Oe, rc = f, nc = tt, ic = y, ac = ut, oc = ht.exports, sc = At.exports, lc = Bt, cc = zt, uc = Gr, hc = Ll, dc = function (t) { var e = Nl.Symbol || (Nl.Symbol = {}); Pl(e, t) || Ol(e, t, { value: Il.f(t) }) }, mc = Jn, pc = Zt, fc = an.forEach, gc = Ot("hidden"), vc = "Symbol", yc = uc("toPrimitive"), bc = pc.set, xc = pc.getterFor(vc), wc = Object.prototype, kc = ql.Symbol, Sc = Dl("JSON", "stringify"), Ac = rc.f, Ec = nc.f, Mc = tc.f, Rc = ic.f, Tc = sc("symbols"), Cc = sc("op-symbols"), Lc = sc("string-to-symbol-registry"), zc = sc("symbol-to-string-registry"), Nc = sc("wks"), Pc = ql.QObject, Ic = !Pc || !Pc.prototype || !Pc.prototype.findChild, Oc = Fl && Ul(function () { return 7 != Zl(Ec({}, "a", { get: function () { return Ec(this, "a", { value: 7 }).a } })).a }) ? function (t, e, r) { var n = Ac(wc, e); n && delete wc[e], Ec(t, e, r), n && t !== wc && Ec(wc, e, n) } : Ec, Bc = function (t, e) { var r = Tc[t] = Zl(kc.prototype); return bc(r, { type: vc, tag: t, description: e }), Fl || (r.description = e), r }, qc = jl ? function (t) { return "symbol" == typeof t } : function (t) { return Object(t) instanceof kc }, Dc = function (t, e, r) { t === wc && Dc(Cc, e, r), Gl(t); var n = Kl(e, !0); return Gl(r), _l(Tc, n) ? (r.enumerable ? (_l(t, gc) && t[gc][n] && (t[gc][n] = !1), r = Zl(r, { enumerable: $l(0, !1) })) : (_l(t, gc) || Ec(t, gc, $l(1, {})), t[gc][n] = !0), Oc(t, n, r)) : Ec(t, n, r) }, Fc = function (t, e) { Gl(t); var r = Xl(e), n = Jl(r).concat(_c(r)); return fc(n, function (e) { Fl && !Hc.call(r, e) || Dc(t, e, r[e]) }), t }, Hc = function (t) { var e = Kl(t, !0), r = Rc.call(this, e); return !(this === wc && _l(Tc, e) && !_l(Cc, e)) && (!(r || !_l(this, e) || !_l(Tc, e) || _l(this, gc) && this[gc][e]) || r) }, jc = function (t, e) { var r = Xl(t), n = Kl(e, !0); if (r !== wc || !_l(Tc, n) || _l(Cc, n)) { var i = Ac(r, n); return !i || !_l(Tc, n) || _l(r, gc) && r[gc][n] || (i.enumerable = !0), i } }, Uc = function (t) { var e = Mc(Xl(t)), r = []; return fc(e, function (t) { _l(Tc, t) || _l(lc, t) || r.push(t) }), r }, _c = function (t) { var e = t === wc, r = Mc(e ? Cc : Xl(t)), n = []; return fc(r, function (t) { !_l(Tc, t) || e && !_l(wc, t) || n.push(Tc[t]) }), n }; Hl || (oc((kc = function () { if (this instanceof kc) throw TypeError("Symbol is not a constructor"); var t = arguments.length && void 0 !== arguments[0] ? String(arguments[0]) : void 0, e = cc(t), r = function (t) { this === wc && r.call(Cc, t), _l(this, gc) && _l(this[gc], e) && (this[gc][e] = !1), Oc(this, e, $l(1, t)) }; return Fl && Ic && Oc(wc, e, { configurable: !0, set: r }), Bc(e, t) }).prototype, "toString", function () { return xc(this).tag }), oc(kc, "withoutSetter", function (t) { return Bc(cc(t), t) }), ic.f = Hc, nc.f = Dc, rc.f = jc, Ql.f = tc.f = Uc, ec.f = _c, hc.f = function (t) { return Bc(uc(t), t) }, Fl && (Ec(kc.prototype, "description", { configurable: !0, get: function () { return xc(this).description } }), oc(wc, "propertyIsEnumerable", Hc, { unsafe: !0 }))), Bl({ global: !0, wrap: !0, forced: !Hl, sham: !Hl }, { Symbol: kc }), fc(Jl(Nc), function (t) { dc(t) }), Bl({ target: vc, stat: !0, forced: !Hl }, { "for": function (t) { var e = String(t); if (_l(Lc, e)) return Lc[e]; var r = kc(e); return Lc[e] = r, zc[r] = e, r }, keyFor: function (t) { if (!qc(t)) throw TypeError(t + " is not a symbol"); if (_l(zc, t)) return zc[t] }, useSetter: function () { Ic = !0 }, useSimple: function () { Ic = !1 } }), Bl({ target: "Object", stat: !0, forced: !Hl, sham: !Fl }, { create: function (t, e) { return void 0 === e ? Zl(t) : Fc(Zl(t), e) }, defineProperty: Dc, defineProperties: Fc, getOwnPropertyDescriptor: jc }), Bl({ target: "Object", stat: !0, forced: !Hl }, { getOwnPropertyNames: Uc, getOwnPropertySymbols: _c }), Bl({ target: "Object", stat: !0, forced: Ul(function () { ec.f(1) }) }, { getOwnPropertySymbols: function (t) { return ec.f(Yl(t)) } }), Sc && Bl({ target: "JSON", stat: !0, forced: !Hl || Ul(function () { var t = kc(); return "[null]" != Sc([t]) || "{}" != Sc({ a: t }) || "{}" != Sc(Object(t)) }) }, { stringify: function (t, e) { for (var r, n = [t], i = 1; arguments.length > i;)n.push(arguments[i++]); if (r = e, (Wl(e) || void 0 !== t) && !qc(t)) return Vl(e) || (e = function (t, e) { if ("function" == typeof r && (e = r.call(this, t, e)), !qc(e)) return e }), n[1] = e, Sc.apply(null, n) } }), kc.prototype[yc] || ac(kc.prototype, yc, kc.prototype.valueOf), mc(kc, vc), lc[gc] = !0; var Vc = or, Wc = v, Gc = p, Yc = F, Xc = N, Kc = tt.f, $c = Ve, Zc = Gc.Symbol; if (Wc && "function" == typeof Zc && (!("description" in Zc.prototype) || void 0 !== Zc().description)) { var Jc = {}, Qc = function () { var t = arguments.length < 1 || void 0 === arguments[0] ? void 0 : String(arguments[0]), e = this instanceof Qc ? new Zc(t) : void 0 === t ? Zc() : Zc(t); return "" === t && (Jc[e] = !0), e }; $c(Qc, Zc); var tu = Qc.prototype = Zc.prototype; tu.constructor = Qc; var eu = tu.toString, ru = "Symbol(test)" == String(Zc("test")), nu = /^Symbol\((.*)\)[^)]+$/; Kc(tu, "description", { configurable: !0, get: function () { var t = Xc(this) ? this.valueOf() : this, e = eu.call(t); if (Yc(Jc, t)) return ""; var r = ru ? e.slice(7, -1) : e.replace(nu, "$1"); return "" === r ? void 0 : r } }), Vc({ global: !0, forced: !0 }, { Symbol: Qc }) } var iu = rt, au = {}, ou = g; au.UNSUPPORTED_Y = ou(function () { var t = u("a", "y"); return t.lastIndex = 2, null != t.exec("abcd") }), au.BROKEN_CARET = ou(function () { var t = u("^r", "gy"); return t.lastIndex = 2, null != t.exec("str") }); var su, lu, cu = function () { var t = iu(this), e = ""; return t.global && (e += "g"), t.ignoreCase && (e += "i"), t.multiline && (e += "m"), t.dotAll && (e += "s"), t.unicode && (e += "u"), t.sticky && (e += "y"), e }, uu = au, hu = At.exports, du = RegExp.prototype.exec, mu = hu("native-string-replace", String.prototype.replace), pu = du, fu = (su = /a/, lu = /b*/g, du.call(su, "a"), du.call(lu, "a"), 0 !== su.lastIndex || 0 !== lu.lastIndex), gu = uu.UNSUPPORTED_Y || uu.BROKEN_CARET, vu = void 0 !== /()??/.exec("")[1]; (fu || vu || gu) && (pu = function (t) { var e, r, n, i, a = this, o = gu && a.sticky, s = cu.call(a), l = a.source, c = 0, u = t; return o && (-1 === (s = s.replace("y", "")).indexOf("g") && (s += "g"), u = String(t).slice(a.lastIndex), a.lastIndex > 0 && (!a.multiline || a.multiline && "\n" !== t[a.lastIndex - 1]) && (l = "(?: " + l + ")", u = " " + u, c++), r = new RegExp("^(?:" + l + ")", s)), vu && (r = new RegExp("^" + l + "$(?!\\s)", s)), fu && (e = a.lastIndex), n = du.call(o ? r : a, u), o ? n ? (n.input = n.input.slice(c), n[0] = n[0].slice(c), n.index = a.lastIndex, a.lastIndex += n[0].length) : a.lastIndex = 0 : fu && n && (a.lastIndex = a.global ? n.index + n[0].length : e), vu && n && n.length > 1 && mu.call(n[0], r, function () { for (i = 1; i < arguments.length - 2; i++)void 0 === arguments[i] && (n[i] = void 0) }), n }); var yu = pu; or({ target: "RegExp", proto: !0, forced: /./.exec !== yu }, { exec: yu }); var bu = ht.exports, xu = yu, wu = g, ku = Gr, Su = ut, Au = ku("species"), Eu = RegExp.prototype, Mu = !wu(function () { var t = /./; return t.exec = function () { var t = []; return t.groups = { a: "7" }, t }, "7" !== "".replace(t, "$") }), Ru = "$0" === "a".replace(/./, "$0"), Tu = ku("replace"), Cu = !!/./[Tu] && "" === /./[Tu]("a", "$0"), Lu = !wu(function () { var t = /(?:)/, e = t.exec; t.exec = function () { return e.apply(this, arguments) }; var r = "ab".split(t); return 2 !== r.length || "a" !== r[0] || "b" !== r[1] }), zu = function (t, e, r, n) { var i = ku(t), a = !wu(function () { var e = {}; return e[i] = function () { return 7 }, 7 != ""[t](e) }), o = a && !wu(function () { var e = !1, r = /a/; return "split" === t && ((r = {}).constructor = {}, r.constructor[Au] = function () { return r }, r.flags = "", r[i] = /./[i]), r.exec = function () { return e = !0, null }, r[i](""), !e }); if (!a || !o || "replace" === t && (!Mu || !Ru || Cu) || "split" === t && !Lu) { var s = /./[i], l = r(i, ""[t], function (t, e, r, n, i) { var o = e.exec; return o === xu || o === Eu.exec ? a && !i ? { done: !0, value: s.call(e, r, n) } : { done: !0, value: t.call(r, e, n) } : { done: !1 } }, { REPLACE_KEEPS_$0: Ru, REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: Cu }), c = l[0], u = l[1]; bu(String.prototype, t, c), bu(Eu, i, 2 == e ? function (t, e) { return u.call(t, this, e) } : function (t) { return u.call(t, this) }) } n && Su(Eu[i], "sham", !0) }, Nu = hs.charAt, Pu = function (t, e, r) { return e + (r ? Nu(t, e).length : 1) }, Iu = A, Ou = yu, Bu = function (t, e) { var r = t.exec; if ("function" == typeof r) { var n = r.call(t, e); if ("object" != typeof n) throw TypeError("RegExp exec method returned something other than an Object or null"); return n } if ("RegExp" !== Iu(t)) throw TypeError("RegExp#exec called on incompatible receiver"); return Ou.call(t, e) }, qu = rt, Du = ve, Fu = T, Hu = Pu, ju = Bu; zu("match", 1, function (t, e, r) { return [function (e) { var r = Fu(this), n = null == e ? void 0 : e[t]; return void 0 !== n ? n.call(e, r) : new RegExp(e)[t](String(r)) }, function (t) { var n = r(e, t, this); if (n.done) return n.value; var i = qu(t), a = String(this); if (!i.global) return ju(i, a); var o = i.unicode; i.lastIndex = 0; for (var s, l = [], c = 0; null !== (s = ju(i, a));) { var u = String(s[0]); l[c] = u, "" === u && (i.lastIndex = Hu(a, Du(i.lastIndex), o)), c++ } return 0 === c ? null : l }] }); var Uu = or, _u = we, Vu = pe, Wu = ve, Gu = B, Yu = $r, Xu = pn, Ku = cn("splice"), $u = Math.max, Zu = Math.min, Ju = 9007199254740991, Qu = "Maximum allowed length exceeded"; Uu({ target: "Array", proto: !0, forced: !Ku }, { splice: function (t, e) { var r, n, i, a, o, s, l = Gu(this), c = Wu(l.length), u = _u(t, c), h = arguments.length; if (0 === h ? r = n = 0 : 1 === h ? (r = 0, n = c - u) : (r = h - 2, n = Zu($u(Vu(e), 0), c - u)), c + r - n > Ju) throw TypeError(Qu); for (i = Yu(l, n), a = 0; a < n; a++)(o = u + a) in l && Xu(i, a, l[o]); if (i.length = n, r < n) { for (a = u; a < c - n; a++)s = a + r, (o = a + n) in l ? l[s] = l[o] : delete l[s]; for (a = c; a > c - n + r; a--)delete l[a - 1] } else if (r > n) for (a = c - n; a > u; a--)s = a + r - 1, (o = a + n - 1) in l ? l[s] = l[o] : delete l[s]; for (a = 0; a < r; a++)l[a + u] = arguments[a + 2]; return l.length = c - n + r, i } }); var th = N, eh = A, rh = Gr("match"), nh = zu, ih = function (t) { var e; return th(t) && (void 0 !== (e = t[rh]) ? !!e : "RegExp" == eh(t)) }, ah = rt, oh = T, sh = Ni, lh = Pu, ch = ve, uh = Bu, hh = yu, dh = au.UNSUPPORTED_Y, mh = [].push, ph = Math.min, fh = 4294967295; nh("split", 2, function (t, e, r) { var n; return n = "c" == "abbc".split(/(b)*/)[1] || 4 != "test".split(/(?:)/, -1).length || 2 != "ab".split(/(?:ab)*/).length || 4 != ".".split(/(.?)(.?)/).length || ".".split(/()()/).length > 1 || "".split(/.?/).length ? function (t, r) { var n = String(oh(this)), i = void 0 === r ? fh : r >>> 0; if (0 === i) return []; if (void 0 === t) return [n]; if (!ih(t)) return e.call(n, t, i); for (var a, o, s, l = [], c = (t.ignoreCase ? "i" : "") + (t.multiline ? "m" : "") + (t.unicode ? "u" : "") + (t.sticky ? "y" : ""), u = 0, h = new RegExp(t.source, c + "g"); (a = hh.call(h, n)) && !((o = h.lastIndex) > u && (l.push(n.slice(u, a.index)), a.length > 1 && a.index < n.length && mh.apply(l, a.slice(1)), s = a[0].length, u = o, l.length >= i));)h.lastIndex === a.index && h.lastIndex++; return u === n.length ? !s && h.test("") || l.push("") : l.push(n.slice(u)), l.length > i ? l.slice(0, i) : l } : "0".split(void 0, 0).length ? function (t, r) { return void 0 === t && 0 === r ? [] : e.call(this, t, r) } : e, [function (e, r) { var i = oh(this), a = null == e ? void 0 : e[t]; return void 0 !== a ? a.call(e, i, r) : n.call(String(i), e, r) }, function (t, i) { var a = r(n, t, this, i, n !== e); if (a.done) return a.value; var o = ah(t), s = String(this), l = sh(o, RegExp), c = o.unicode, u = (o.ignoreCase ? "i" : "") + (o.multiline ? "m" : "") + (o.unicode ? "u" : "") + (dh ? "g" : "y"), h = new l(dh ? "^(?:" + o.source + ")" : o, u), d = void 0 === i ? fh : i >>> 0; if (0 === d) return []; if (0 === s.length) return null === uh(h, s) ? [s] : []; for (var m = 0, p = 0, f = []; p < s.length;) { h.lastIndex = dh ? 0 : p; var g, v = uh(h, dh ? s.slice(p) : s); if (null === v || (g = ph(ch(h.lastIndex + (dh ? p : 0)), s.length)) === m) p = lh(s, p, c); else { if (f.push(s.slice(m, p)), f.length === d) return f; for (var y = 1; y <= v.length - 1; y++)if (f.push(v[y]), f.length === d) return f; p = m = g } } return f.push(s.slice(m)), f }] }, dh); var gh = N, vh = Xn, yh = v, bh = p, xh = Je, wh = ht.exports, kh = F, Sh = A, Ah = function (t, e, r) { var n, i; return vh && "function" == typeof (n = e.constructor) && n !== r && gh(i = n.prototype) && i !== r.prototype && vh(t, i), t }, Eh = I, Mh = g, Rh = js, Th = he.f, Ch = f.f, Lh = tt.f, zh = wl.trim, Nh = "Number", Ph = bh.Number, Ih = Ph.prototype, Oh = Sh(Rh(Ih)) == Nh, Bh = function (t) { var e, r, n, i, a, o, s, l, c = Eh(t, !1); if ("string" == typeof c && c.length > 2) if (43 === (e = (c = zh(c)).charCodeAt(0)) || 45 === e) { if (88 === (r = c.charCodeAt(2)) || 120 === r) return NaN } else if (48 === e) { switch (c.charCodeAt(1)) { case 66: case 98: n = 2, i = 49; break; case 79: case 111: n = 8, i = 55; break; default: return +c }for (o = (a = c.slice(2)).length, s = 0; s < o; s++)if ((l = a.charCodeAt(s)) < 48 || l > i) return NaN; return parseInt(a, n) } return +c }; if (xh(Nh, !Ph(" 0o1") || !Ph("0b1") || Ph("+0x1"))) { for (var qh, Dh = function (t) { var e = arguments.length < 1 ? 0 : t, r = this; return r instanceof Dh && (Oh ? Mh(function () { Ih.valueOf.call(r) }) : Sh(r) != Nh) ? Ah(new Ph(Bh(e)), r, Dh) : Bh(e) }, Fh = yh ? Th(Ph) : "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","), Hh = 0; Fh.length > Hh; Hh++)kh(Ph, qh = Fh[Hh]) && !kh(Dh, qh) && Lh(Dh, qh, Ch(Ph, qh)); Dh.prototype = Ih, Ih.constructor = Dh, wh(bh, Nh, Dh) } var jh = v, Uh = tt.f, _h = Function.prototype, Vh = _h.toString, Wh = /^\s*function ([^ (]*)/, Gh = "name"; jh && !(Gh in _h) && Uh(_h, Gh, { configurable: !0, get: function () { try { return Vh.call(this).match(Wh)[1] } catch (d) { return "" } } }); var Yh = or, Xh = z, Kh = [].join, $h = R != Object, Zh = Ho("join", ","); Yh({ target: "Array", proto: !0, forced: $h || !Zh }, { join: function (t) { return Kh.call(Xh(this), void 0 === t ? "," : t) } }); var Jh = B, Qh = Math.floor, td = "".replace, ed = /\$([$&'`]|\d{1,2}|<[^>]*>)/g, rd = /\$([$&'`]|\d{1,2})/g, nd = zu, id = rt, ad = ve, od = pe, sd = T, ld = Pu, cd = function (t, e, r, n, i, a) { var o = r + t.length, s = n.length, l = rd; return void 0 !== i && (i = Jh(i), l = ed), td.call(a, l, function (a, l) { var c; switch (l.charAt(0)) { case "$": return "$"; case "&": return t; case "`": return e.slice(0, r); case "'": return e.slice(o); case "<": c = i[l.slice(1, -1)]; break; default: var u = +l; if (0 === u) return a; if (u > s) { var h = Qh(u / 10); return 0 === h ? a : h <= s ? void 0 === n[h - 1] ? l.charAt(1) : n[h - 1] + l.charAt(1) : a } c = n[u - 1] }return void 0 === c ? "" : c }) }, ud = Bu, hd = Math.max, dd = Math.min; nd("replace", 2, function (t, e, r, n) { var i = n.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE, a = n.REPLACE_KEEPS_$0, o = i ? "$" : "$0"; return [function (r, n) { var i = sd(this), a = null == r ? void 0 : r[t]; return void 0 !== a ? a.call(r, i, n) : e.call(String(i), r, n) }, function (t, n) { if (!i && a || "string" == typeof n && -1 === n.indexOf(o)) { var s = r(e, t, this, n); if (s.done) return s.value } var l = id(t), c = String(this), u = "function" == typeof n; u || (n = String(n)); var h = l.global; if (h) { var d = l.unicode; l.lastIndex = 0 } for (var m = []; ;) { var p = ud(l, c); if (null === p) break; if (m.push(p), !h) break; "" === String(p[0]) && (l.lastIndex = ld(c, ad(l.lastIndex), d)) } for (var f, g = "", v = 0, y = 0; y < m.length; y++) { p = m[y]; for (var b = String(p[0]), x = hd(dd(od(p.index), c.length), 0), w = [], k = 1; k < p.length; k++)w.push(void 0 === (f = p[k]) ? f : String(f)); var S = p.groups; if (u) { var A = [b].concat(w, x, c); void 0 !== S && A.push(S); var E = String(n.apply(void 0, A)) } else E = cd(b, c, x, w, S, n); x >= v && (g += c.slice(v, x) + E, v = x + b.length) } return g + c.slice(v) }] }); var md = Object.is || function (t, e) { return t === e ? 0 !== t || 1 / t == 1 / e : t != t && e != e }, pd = rt, fd = T, gd = md, vd = Bu; zu("search", 1, function (t, e, r) { return [function (e) { var r = fd(this), n = null == e ? void 0 : e[t]; return void 0 !== n ? n.call(e, r) : new RegExp(e)[t](String(r)) }, function (t) { var n = r(e, t, this); if (n.done) return n.value; var i = pd(t), a = String(this), o = i.lastIndex; gd(o, 0) || (i.lastIndex = 0); var s = vd(i, a); return gd(i.lastIndex, o) || (i.lastIndex = o), null === s ? -1 : s.index }] }); var yd = function (t, e) { for (var r in e) t[r] = e[r]; return t }, bd = function (t, e) { return Array.from(t.querySelectorAll(e)) }, xd = function (t, e, r) { r ? t.classList.add(e) : t.classList.remove(e) }, wd = function (t) { if ("string" == typeof t) { if ("null" === t) return null; if ("true" === t) return !0; if ("false" === t) return !1; if (t.match(/^-?[\d\.]+$/)) return parseFloat(t) } return t }, kd = function (t, e) { t.style.transform = e }, Sd = function (t, e) { var r = t.matches || t.matchesSelector || t.msMatchesSelector; return !(!r || !r.call(t, e)) }, Ad = function (t, e) { if ("function" == typeof t.closest) return t.closest(e); for (; t;) { if (Sd(t, e)) return t; t = t.parentNode } return null }, Ed = function (t, e, r) { for (var n = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "", i = t.querySelectorAll("." + r), a = 0; a < i.length; a++) { var o = i[a]; if (o.parentNode === t) return o } var s = document.createElement(e); return s.className = r, s.innerHTML = n, t.appendChild(s), s }, Md = function (t) { var e = document.createElement("style"); return e.type = "text/css", t && t.length > 0 && (e.styleSheet ? e.styleSheet.cssText = t : e.appendChild(document.createTextNode(t))), document.head.appendChild(e), e }, Rd = function () { + var t = {} + ; for (var e in location.search.replace(/[A-Z0-9]+?=([\w\.%-]*)/gi, function (e) { t[e.split("=").shift()] = e.split("=").pop() }), t) { var r = t[e]; t[e] = wd(unescape(r)) } return void 0 !== t.dependencies && delete t.dependencies, t + }, Td = function (t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; if (t) { var r, n = t.style.height; return t.style.height = "0px", t.parentNode.style.height = "auto", r = e - t.parentNode.offsetHeight, t.style.height = n + "px", t.parentNode.style.removeProperty("height"), r } return e }, Cd = { mp4: "video/mp4", m4a: "video/mp4", ogv: "video/ogg", mpeg: "video/mpeg", webm: "video/webm" }, Ld = function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ""; return Cd[t.split(".").pop()] }, zd = navigator.userAgent, Nd = /(iphone|ipod|ipad|android)/gi.test(zd) || "MacIntel" === navigator.platform && navigator.maxTouchPoints > 1; /chrome/i.test(zd) && /edge/i.test(zd); var Pd = /android/gi.test(zd), Id = {}; Object.defineProperty(Id, "__esModule", { value: !0 }); var Od = Object.assign || function (t) { for (var e = 1; e < arguments.length; e++) { var r = arguments[e]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (t[n] = r[n]) } return t }, Bd = Id["default"] = function (t) { function e(t, e) { var r = Od({}, E, e), n = t.map(function (t) { var e = Od({}, r, { element: t, active: !0 }); return function (t) { t.originalStyle = { whiteSpace: t.element.style.whiteSpace, display: t.element.style.display, fontSize: t.element.style.fontSize }, A(t), t.newbie = !0, t.dirty = !0, l.push(t) }(e), { element: t, fit: x(e, s), unfreeze: k(e), freeze: S(e), unsubscribe: w(e) } }); return u(), n } function r(t) { var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return "string" == typeof t ? e(n(document.querySelectorAll(t)), r) : e([t], r)[0] } if (t) { var n = function (t) { return [].slice.call(t) }, i = 0, a = 1, o = 2, s = 3, l = [], c = null, u = "requestAnimationFrame" in t ? function () { t.cancelAnimationFrame(c), c = t.requestAnimationFrame(function () { return d(l.filter(function (t) { return t.dirty && t.active })) }) } : function () { }, h = function (t) { return function () { l.forEach(function (e) { return e.dirty = t }), u() } }, d = function (t) { t.filter(function (t) { return !t.styleComputed }).forEach(function (t) { t.styleComputed = g(t) }), t.filter(v).forEach(y); var e = t.filter(f); e.forEach(p), e.forEach(function (t) { y(t), m(t) }), e.forEach(b) }, m = function (t) { return t.dirty = i }, p = function (t) { t.availableWidth = t.element.parentNode.clientWidth, t.currentWidth = t.element.scrollWidth, t.previousFontSize = t.currentFontSize, t.currentFontSize = Math.min(Math.max(t.minSize, t.availableWidth / t.currentWidth * t.previousFontSize), t.maxSize), t.whiteSpace = t.multiLine && t.currentFontSize === t.minSize ? "normal" : "nowrap" }, f = function (t) { return t.dirty !== o || t.dirty === o && t.element.parentNode.clientWidth !== t.availableWidth }, g = function (e) { var r = t.getComputedStyle(e.element, null); e.currentFontSize = parseFloat(r.getPropertyValue("font-size")), e.display = r.getPropertyValue("display"), e.whiteSpace = r.getPropertyValue("white-space") }, v = function (t) { var e = !1; return !t.preStyleTestCompleted && (/inline-/.test(t.display) || (e = !0, t.display = "inline-block"), "nowrap" !== t.whiteSpace && (e = !0, t.whiteSpace = "nowrap"), t.preStyleTestCompleted = !0, e) }, y = function (t) { t.element.style.whiteSpace = t.whiteSpace, t.element.style.display = t.display, t.element.style.fontSize = t.currentFontSize + "px" }, b = function (t) { t.element.dispatchEvent(new CustomEvent("fit", { detail: { oldValue: t.previousFontSize, newValue: t.currentFontSize, scaleFactor: t.currentFontSize / t.previousFontSize } })) }, x = function (t, e) { return function () { t.dirty = e, t.active && u() } }, w = function (t) { return function () { l = l.filter(function (e) { return e.element !== t.element }), t.observeMutations && t.observer.disconnect(), t.element.style.whiteSpace = t.originalStyle.whiteSpace, t.element.style.display = t.originalStyle.display, t.element.style.fontSize = t.originalStyle.fontSize } }, k = function (t) { return function () { t.active || (t.active = !0, u()) } }, S = function (t) { return function () { return t.active = !1 } }, A = function (t) { t.observeMutations && (t.observer = new MutationObserver(x(t, a)), t.observer.observe(t.element, t.observeMutations)) }, E = { minSize: 16, maxSize: 512, multiLine: !0, observeMutations: "MutationObserver" in t && { subtree: !0, childList: !0, characterData: !0 } }, M = null, R = function () { t.clearTimeout(M), M = t.setTimeout(h(o), r.observeWindowDelay) }, T = ["resize", "orientationchange"]; return Object.defineProperty(r, "observeWindow", { set: function (e) { var r = (e ? "add" : "remove") + "EventListener"; T.forEach(function (e) { t[r](e, R) }) } }), r.observeWindow = !0, r.observeWindowDelay = 100, r.fitAll = h(s), r } }("undefined" == typeof window ? null : window), qd = function () { function t(e) { i(this, t), this.Reveal = e, this.startEmbeddedIframe = this.startEmbeddedIframe.bind(this) } return o(t, [{ key: "shouldPreload", value: function (t) { var e = this.Reveal.getConfig().preloadIframes; return "boolean" != typeof e && (e = t.hasAttribute("data-preload")), e } }, { key: "load", value: function (t) { var e = this, r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; t.style.display = this.Reveal.getConfig().display, bd(t, "img[data-src], video[data-src], audio[data-src], iframe[data-src]").forEach(function (t) { ("IFRAME" !== t.tagName || e.shouldPreload(t)) && (t.setAttribute("src", t.getAttribute("data-src")), t.setAttribute("data-lazy-loaded", ""), t.removeAttribute("data-src")) }), bd(t, "video, audio").forEach(function (t) { var e = 0; bd(t, "source[data-src]").forEach(function (t) { t.setAttribute("src", t.getAttribute("data-src")), t.removeAttribute("data-src"), t.setAttribute("data-lazy-loaded", ""), e += 1 }), Nd && "VIDEO" === t.tagName && t.setAttribute("playsinline", ""), e > 0 && t.load() }); var n = t.slideBackgroundElement; if (n) { n.style.display = "block"; var i = t.slideBackgroundContentElement, a = t.getAttribute("data-background-iframe"); if (!1 === n.hasAttribute("data-loaded")) { n.setAttribute("data-loaded", "true"); var o = t.getAttribute("data-background-image"), s = t.getAttribute("data-background-video"), l = t.hasAttribute("data-background-video-loop"), c = t.hasAttribute("data-background-video-muted"); if (o) /^data:/.test(o.trim()) ? i.style.backgroundImage = "url(".concat(o.trim(), ")") : i.style.backgroundImage = o.split(",").map(function (t) { return "url(".concat(encodeURI(t.trim()), ")") }).join(","); else if (s && !this.Reveal.isSpeakerNotes()) { var u = document.createElement("video"); l && u.setAttribute("loop", ""), c && (u.muted = !0), Nd && (u.muted = !0, u.setAttribute("playsinline", "")), s.split(",").forEach(function (t) { var e = Ld(t); u.innerHTML += e ? '') : '') }), i.appendChild(u) } else if (a && !0 !== r.excludeIframes) { var h = document.createElement("iframe"); h.setAttribute("allowfullscreen", ""), h.setAttribute("mozallowfullscreen", ""), h.setAttribute("webkitallowfullscreen", ""), h.setAttribute("allow", "autoplay"), h.setAttribute("data-src", a), h.style.width = "100%", h.style.height = "100%", h.style.maxHeight = "100%", h.style.maxWidth = "100%", i.appendChild(h) } } var d = i.querySelector("iframe[data-src]"); d && this.shouldPreload(n) && !/autoplay=(1|true|yes)/gi.test(a) && d.getAttribute("src") !== a && d.setAttribute("src", a) } this.layout(t) } }, { key: "layout", value: function (t) { var e = this; Array.from(t.querySelectorAll(".r-fit-text")).forEach(function (t) { Bd(t, { minSize: 24, maxSize: .8 * e.Reveal.getConfig().height, observeMutations: !1, observeWindow: !1 }) }) } }, { key: "unload", value: function (t) { t.style.display = "none"; var e = this.Reveal.getSlideBackground(t); e && (e.style.display = "none", bd(e, "iframe[src]").forEach(function (t) { t.removeAttribute("src") })), bd(t, "video[data-lazy-loaded][src], audio[data-lazy-loaded][src], iframe[data-lazy-loaded][src]").forEach(function (t) { t.setAttribute("data-src", t.getAttribute("src")), t.removeAttribute("src") }), bd(t, "video[data-lazy-loaded] source[src], audio source[src]").forEach(function (t) { t.setAttribute("data-src", t.getAttribute("src")), t.removeAttribute("src") }) } }, { key: "formatEmbeddedContent", value: function () { var t = this, e = function (e, r, n) { bd(t.Reveal.getSlidesElement(), "iframe[" + e + '*="' + r + '"]').forEach(function (t) { var r = t.getAttribute(e); r && -1 === r.indexOf(n) && t.setAttribute(e, r + (/\?/.test(r) ? "&" : "?") + n) }) }; e("src", "youtube.com/embed/", "enablejsapi=1"), e("data-src", "youtube.com/embed/", "enablejsapi=1"), e("src", "player.vimeo.com/", "api=1"), e("data-src", "player.vimeo.com/", "api=1") } }, { key: "startEmbeddedContent", value: function (t) { var e = this; t && !this.Reveal.isSpeakerNotes() && (bd(t, 'img[src$=".gif"]').forEach(function (t) { t.setAttribute("src", t.getAttribute("src")) }), bd(t, "video, audio").forEach(function (t) { if (!Ad(t, ".fragment") || Ad(t, ".fragment.visible")) { var r = e.Reveal.getConfig().autoPlayMedia; if ("boolean" != typeof r && (r = t.hasAttribute("data-autoplay") || !!Ad(t, ".slide-background")), r && "function" == typeof t.play) if (t.readyState > 1) e.startEmbeddedMedia({ target: t }); else if (Nd) { var n = t.play(); n && "function" == typeof n["catch"] && !1 === t.controls && n["catch"](function () { t.controls = !0, t.addEventListener("play", function () { t.controls = !1 }) }) } else t.removeEventListener("loadeddata", e.startEmbeddedMedia), t.addEventListener("loadeddata", e.startEmbeddedMedia) } }), bd(t, "iframe[src]").forEach(function (t) { Ad(t, ".fragment") && !Ad(t, ".fragment.visible") || e.startEmbeddedIframe({ target: t }) }), bd(t, "iframe[data-src]").forEach(function (t) { Ad(t, ".fragment") && !Ad(t, ".fragment.visible") || t.getAttribute("src") !== t.getAttribute("data-src") && (t.removeEventListener("load", e.startEmbeddedIframe), t.addEventListener("load", e.startEmbeddedIframe), t.setAttribute("src", t.getAttribute("data-src"))) })) } }, { key: "startEmbeddedMedia", value: function (t) { var e = !!Ad(t.target, "html"), r = !!Ad(t.target, ".present"); e && r && (t.target.currentTime = 0, t.target.play()), t.target.removeEventListener("loadeddata", this.startEmbeddedMedia) } }, { key: "startEmbeddedIframe", value: function (t) { var e = t.target; if (e && e.contentWindow) { var r = !!Ad(t.target, "html"), n = !!Ad(t.target, ".present"); if (r && n) { var i = this.Reveal.getConfig().autoPlayMedia; "boolean" != typeof i && (i = e.hasAttribute("data-autoplay") || !!Ad(e, ".slide-background")), /youtube\.com\/embed\//.test(e.getAttribute("src")) && i ? e.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', "*") : /player\.vimeo\.com\//.test(e.getAttribute("src")) && i ? e.contentWindow.postMessage('{"method":"play"}', "*") : e.contentWindow.postMessage("slide:start", "*") } } } }, { key: "stopEmbeddedContent", value: function (t) { var e = this, r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; r = yd({ unloadIframes: !0 }, r), t && t.parentNode && (bd(t, "video, audio").forEach(function (t) { t.hasAttribute("data-ignore") || "function" != typeof t.pause || (t.setAttribute("data-paused-by-reveal", ""), t.pause()) }), bd(t, "iframe").forEach(function (t) { t.contentWindow && t.contentWindow.postMessage("slide:stop", "*"), t.removeEventListener("load", e.startEmbeddedIframe) }), bd(t, 'iframe[src*="youtube.com/embed/"]').forEach(function (t) { !t.hasAttribute("data-ignore") && t.contentWindow && "function" == typeof t.contentWindow.postMessage && t.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', "*") }), bd(t, 'iframe[src*="player.vimeo.com/"]').forEach(function (t) { !t.hasAttribute("data-ignore") && t.contentWindow && "function" == typeof t.contentWindow.postMessage && t.contentWindow.postMessage('{"method":"pause"}', "*") }), !0 === r.unloadIframes && bd(t, "iframe[data-src]").forEach(function (t) { t.setAttribute("src", "about:blank"), t.removeAttribute("src") })) } }]), t }(), Dd = function () { function t(e) { i(this, t), this.Reveal = e } return o(t, [{ key: "render", value: function () { this.element = document.createElement("div"), this.element.className = "slide-number", this.Reveal.getRevealElement().appendChild(this.element) } }, { key: "configure", value: function (t) { var e = "none"; t.slideNumber && !this.Reveal.isPrintingPDF() && ("all" === t.showSlideNumber || "speaker" === t.showSlideNumber && this.Reveal.isSpeakerNotes()) && (e = "block"), this.element.style.display = e } }, { key: "update", value: function () { this.Reveal.getConfig().slideNumber && this.element && (this.element.innerHTML = this.getSlideNumber()) } }, { key: "getSlideNumber", value: function () { var t, e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.Reveal.getCurrentSlide(), r = this.Reveal.getConfig(), n = "h.v"; if ("function" == typeof r.slideNumber) t = r.slideNumber(e); else { "string" == typeof r.slideNumber && (n = r.slideNumber), /c/.test(n) || 1 !== this.Reveal.getHorizontalSlides().length || (n = "c"); var i = e && "uncounted" === e.dataset.visibility ? 0 : 1; switch (t = [], n) { case "c": t.push(this.Reveal.getSlidePastCount(e) + i); break; case "c/t": t.push(this.Reveal.getSlidePastCount(e) + i, "/", this.Reveal.getTotalSlides()); break; default: var a = this.Reveal.getIndices(e); t.push(a.h + i); var o = "h/v" === n ? "/" : "."; this.Reveal.isVerticalSlide(e) && t.push(o, a.v + 1) } } var s = "#" + this.Reveal.location.getHash(e); return this.formatNumber(t[0], t[1], t[2], s) } }, { key: "formatNumber", value: function (t, e, r) { var n = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "#" + this.Reveal.location.getHash(); return "number" != typeof r || isNaN(r) ? '\n\t\t\t\t\t').concat(t, "\n\t\t\t\t\t") : '\n\t\t\t\t\t').concat(t, '\n\t\t\t\t\t').concat(e, '\n\t\t\t\t\t').concat(r, "\n\t\t\t\t\t") } }, { key: "destroy", value: function () { this.element.remove() } }]), t }(), Fd = or, Hd = N, jd = Mr, Ud = we, _d = ve, Vd = z, Wd = pn, Gd = Gr, Yd = cn("slice"), Xd = Gd("species"), Kd = [].slice, $d = Math.max; Fd({ target: "Array", proto: !0, forced: !Yd }, { slice: function (t, e) { var r, n, i, a = Vd(this), o = _d(a.length), s = Ud(t, o), l = Ud(void 0 === e ? o : e, o); if (jd(a) && ("function" != typeof (r = a.constructor) || r !== Array && !jd(r.prototype) ? Hd(r) && null === (r = r[Xd]) && (r = void 0) : r = void 0, r === Array || void 0 === r)) return Kd.call(a, s, l); for (n = new (void 0 === r ? Array : r)($d(l - s, 0)), i = 0; s < l; s++, i++)s in a && Wd(n, i, a[s]); return n.length = i, n } }); var Zd = function (t) { var e = t.match(/^#([0-9a-f]{3})$/i); if (e && e[1]) return e = e[1], { r: 17 * parseInt(e.charAt(0), 16), g: 17 * parseInt(e.charAt(1), 16), b: 17 * parseInt(e.charAt(2), 16) }; var r = t.match(/^#([0-9a-f]{6})$/i); if (r && r[1]) return r = r[1], { r: parseInt(r.slice(0, 2), 16), g: parseInt(r.slice(2, 4), 16), b: parseInt(r.slice(4, 6), 16) }; var n = t.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i); if (n) return { r: parseInt(n[1], 10), g: parseInt(n[2], 10), b: parseInt(n[3], 10) }; var i = t.match(/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\,\s*([\d]+|[\d]*.[\d]+)\s*\)$/i); return i ? { r: parseInt(i[1], 10), g: parseInt(i[2], 10), b: parseInt(i[3], 10), a: parseFloat(i[4]) } : null }, Jd = function () { function t(e) { i(this, t), this.Reveal = e } return o(t, [{ key: "render", value: function () { this.element = document.createElement("div"), this.element.className = "backgrounds", this.Reveal.getRevealElement().appendChild(this.element) } }, { key: "create", value: function () { var t = this; this.element.innerHTML = "", this.element.classList.add("no-transition"), this.Reveal.getHorizontalSlides().forEach(function (e) { var r = t.createBackground(e, t.element); bd(e, "section").forEach(function (e) { t.createBackground(e, r), r.classList.add("stack") }) }), this.Reveal.getConfig().parallaxBackgroundImage ? (this.element.style.backgroundImage = 'url("' + this.Reveal.getConfig().parallaxBackgroundImage + '")', this.element.style.backgroundSize = this.Reveal.getConfig().parallaxBackgroundSize, this.element.style.backgroundRepeat = this.Reveal.getConfig().parallaxBackgroundRepeat, this.element.style.backgroundPosition = this.Reveal.getConfig().parallaxBackgroundPosition, setTimeout(function () { t.Reveal.getRevealElement().classList.add("has-parallax-background") }, 1)) : (this.element.style.backgroundImage = "", this.Reveal.getRevealElement().classList.remove("has-parallax-background")) } }, { key: "createBackground", value: function (t, e) { var r = document.createElement("div"); r.className = "slide-background " + t.className.replace(/present|past|future/, ""); var n = document.createElement("div"); return n.className = "slide-background-content", r.appendChild(n), e.appendChild(r), t.slideBackgroundElement = r, t.slideBackgroundContentElement = n, this.sync(t), r } }, { key: "sync", value: function (t) { var e = t.slideBackgroundElement, r = t.slideBackgroundContentElement, n = { background: t.getAttribute("data-background"), backgroundSize: t.getAttribute("data-background-size"), backgroundImage: t.getAttribute("data-background-image"), backgroundVideo: t.getAttribute("data-background-video"), backgroundIframe: t.getAttribute("data-background-iframe"), backgroundColor: t.getAttribute("data-background-color"), backgroundRepeat: t.getAttribute("data-background-repeat"), backgroundPosition: t.getAttribute("data-background-position"), backgroundTransition: t.getAttribute("data-background-transition"), backgroundOpacity: t.getAttribute("data-background-opacity") }, i = t.hasAttribute("data-preload"); t.classList.remove("has-dark-background"), t.classList.remove("has-light-background"), e.removeAttribute("data-loaded"), e.removeAttribute("data-background-hash"), e.removeAttribute("data-background-size"), e.removeAttribute("data-background-transition"), e.style.backgroundColor = "", r.style.backgroundSize = "", r.style.backgroundRepeat = "", r.style.backgroundPosition = "", r.style.backgroundImage = "", r.style.opacity = "", r.innerHTML = "", n.background && (/^(http|file|\/\/)/gi.test(n.background) || /\.(svg|png|jpg|jpeg|gif|bmp|webp)([?#\s]|$)/gi.test(n.background) ? t.setAttribute("data-background-image", n.background) : e.style.background = n.background), (n.background || n.backgroundColor || n.backgroundImage || n.backgroundVideo || n.backgroundIframe) && e.setAttribute("data-background-hash", n.background + n.backgroundSize + n.backgroundImage + n.backgroundVideo + n.backgroundIframe + n.backgroundColor + n.backgroundRepeat + n.backgroundPosition + n.backgroundTransition + n.backgroundOpacity), n.backgroundSize && e.setAttribute("data-background-size", n.backgroundSize), n.backgroundColor && (e.style.backgroundColor = n.backgroundColor), n.backgroundTransition && e.setAttribute("data-background-transition", n.backgroundTransition), i && e.setAttribute("data-preload", ""), n.backgroundSize && (r.style.backgroundSize = n.backgroundSize), n.backgroundRepeat && (r.style.backgroundRepeat = n.backgroundRepeat), n.backgroundPosition && (r.style.backgroundPosition = n.backgroundPosition), n.backgroundOpacity && (r.style.opacity = n.backgroundOpacity); var a, o = n.backgroundColor; if (!o || !Zd(o)) { var s = window.getComputedStyle(e); s && s.backgroundColor && (o = s.backgroundColor) } if (o) { var l = Zd(o); l && 0 !== l.a && ("string" == typeof (a = o) && (a = Zd(a)), (a ? (299 * a.r + 587 * a.g + 114 * a.b) / 1e3 : null) < 128 ? t.classList.add("has-dark-background") : t.classList.add("has-light-background")) } } }, { key: "update", value: function () { var t = this, e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0], r = this.Reveal.getCurrentSlide(), n = this.Reveal.getIndices(), i = null, a = this.Reveal.getConfig().rtl ? "future" : "past", o = this.Reveal.getConfig().rtl ? "past" : "future"; if (Array.from(this.element.childNodes).forEach(function (t, r) { t.classList.remove("past", "present", "future"), r < n.h ? t.classList.add(a) : r > n.h ? t.classList.add(o) : (t.classList.add("present"), i = t), (e || r === n.h) && bd(t, ".slide-background").forEach(function (t, e) { t.classList.remove("past", "present", "future"), e < n.v ? t.classList.add("past") : e > n.v ? t.classList.add("future") : (t.classList.add("present"), r === n.h && (i = t)) }) }), this.previousBackground && this.Reveal.slideContent.stopEmbeddedContent(this.previousBackground, { unloadIframes: !this.Reveal.slideContent.shouldPreload(this.previousBackground) }), i) { this.Reveal.slideContent.startEmbeddedContent(i); var s = i.querySelector(".slide-background-content"); if (s) { var l = s.style.backgroundImage || ""; /\.gif/i.test(l) && (s.style.backgroundImage = "", window.getComputedStyle(s).opacity, s.style.backgroundImage = l) } var c = this.previousBackground ? this.previousBackground.getAttribute("data-background-hash") : null, u = i.getAttribute("data-background-hash"); u && u === c && i !== this.previousBackground && this.element.classList.add("no-transition"), this.previousBackground = i } r && ["has-light-background", "has-dark-background"].forEach(function (e) { r.classList.contains(e) ? t.Reveal.getRevealElement().classList.add(e) : t.Reveal.getRevealElement().classList.remove(e) }, this), setTimeout(function () { t.element.classList.remove("no-transition") }, 1) } }, { key: "updateParallax", value: function () { var t = this.Reveal.getIndices(); if (this.Reveal.getConfig().parallaxBackgroundImage) { var e, r, n = this.Reveal.getHorizontalSlides(), i = this.Reveal.getVerticalSlides(), a = this.element.style.backgroundSize.split(" "); 1 === a.length ? e = r = parseInt(a[0], 10) : (e = parseInt(a[0], 10), r = parseInt(a[1], 10)); var o, s = this.element.offsetWidth, l = n.length; o = ("number" == typeof this.Reveal.getConfig().parallaxBackgroundHorizontal ? this.Reveal.getConfig().parallaxBackgroundHorizontal : l > 1 ? (e - s) / (l - 1) : 0) * t.h * -1; var c, u, h = this.element.offsetHeight, d = i.length; c = "number" == typeof this.Reveal.getConfig().parallaxBackgroundVertical ? this.Reveal.getConfig().parallaxBackgroundVertical : (r - h) / (d - 1), u = d > 0 ? c * t.v : 0, this.element.style.backgroundPosition = o + "px " + -u + "px" } } }, { key: "destroy", value: function () { this.element.remove() } }]), t }(), Qd = B, tm = cr; or({ target: "Object", stat: !0, forced: g(function () { tm(1) }) }, { keys: function (t) { return tm(Qd(t)) } }); var em = an.filter; or({ target: "Array", proto: !0, forced: !cn("filter") }, { filter: function (t) { return em(this, t, arguments.length > 1 ? arguments[1] : void 0) } }); var rm = ".slides section", nm = ".slides>section", im = ".slides>section.present>section", am = /registerPlugin|registerKeyboardShortcut|addKeyBinding|addEventListener/, om = /fade-(down|up|right|left|out|in-then-out|in-then-semi-out)|semi-fade-out|current-visible|shrink|grow/, sm = 0, lm = function () { function t(e) { i(this, t), this.Reveal = e } return o(t, [{ key: "run", value: function (t, e) { var r = this; this.reset(); var n = this.Reveal.getSlides(), i = n.indexOf(e), a = n.indexOf(t); if (t.hasAttribute("data-auto-animate") && e.hasAttribute("data-auto-animate") && t.getAttribute("data-auto-animate-id") === e.getAttribute("data-auto-animate-id") && !(i > a ? e : t).hasAttribute("data-auto-animate-restart")) { this.autoAnimateStyleSheet = this.autoAnimateStyleSheet || Md(); var o = this.getAutoAnimateOptions(e); t.dataset.autoAnimate = "pending", e.dataset.autoAnimate = "pending", o.slideDirection = i > a ? "forward" : "backward"; var s = "none" === t.style.display; s && (t.style.display = this.Reveal.getConfig().display); var l = this.getAutoAnimatableElements(t, e).map(function (t) { return r.autoAnimateElements(t.from, t.to, t.options || {}, o, sm++) }); if (s && (t.style.display = "none"), "false" !== e.dataset.autoAnimateUnmatched && !0 === this.Reveal.getConfig().autoAnimateUnmatched) { var c = .8 * o.duration, u = .2 * o.duration; this.getUnmatchedAutoAnimateElements(e).forEach(function (t) { var e = r.getAutoAnimateOptions(t, o), n = "unmatched"; e.duration === o.duration && e.delay === o.delay || (n = "unmatched-" + sm++, l.push('[data-auto-animate="running"] [data-auto-animate-target="'.concat(n, '"] { transition: opacity ').concat(e.duration, "s ease ").concat(e.delay, "s; }"))), t.dataset.autoAnimateTarget = n }, this), l.push('[data-auto-animate="running"] [data-auto-animate-target="unmatched"] { transition: opacity '.concat(c, "s ease ").concat(u, "s; }")) } this.autoAnimateStyleSheet.innerHTML = l.join(""), requestAnimationFrame(function () { r.autoAnimateStyleSheet && (getComputedStyle(r.autoAnimateStyleSheet).fontWeight, e.dataset.autoAnimate = "running") }), this.Reveal.dispatchEvent({ type: "autoanimate", data: { fromSlide: t, toSlide: e, sheet: this.autoAnimateStyleSheet } }) } } }, { key: "reset", value: function () { bd(this.Reveal.getRevealElement(), '[data-auto-animate]:not([data-auto-animate=""])').forEach(function (t) { t.dataset.autoAnimate = "" }), bd(this.Reveal.getRevealElement(), "[data-auto-animate-target]").forEach(function (t) { delete t.dataset.autoAnimateTarget }), this.autoAnimateStyleSheet && this.autoAnimateStyleSheet.parentNode && (this.autoAnimateStyleSheet.parentNode.removeChild(this.autoAnimateStyleSheet), this.autoAnimateStyleSheet = null) } }, { key: "autoAnimateElements", value: function (t, e, r, n, i) { t.dataset.autoAnimateTarget = "", e.dataset.autoAnimateTarget = i; var a = this.getAutoAnimateOptions(e, n); void 0 !== r.delay && (a.delay = r.delay), void 0 !== r.duration && (a.duration = r.duration), void 0 !== r.easing && (a.easing = r.easing); var o = this.getAutoAnimatableProperties("from", t, r), s = this.getAutoAnimatableProperties("to", e, r); if (e.classList.contains("fragment") && (delete s.styles.opacity, t.classList.contains("fragment") && (t.className.match(om) || [""])[0] === (e.className.match(om) || [""])[0] && "forward" === n.slideDirection && e.classList.add("visible", "disabled")), !1 !== r.translate || !1 !== r.scale) { var l = this.Reveal.getScale(), c = { x: (o.x - s.x) / l, y: (o.y - s.y) / l, scaleX: o.width / s.width, scaleY: o.height / s.height }; c.x = Math.round(1e3 * c.x) / 1e3, c.y = Math.round(1e3 * c.y) / 1e3, c.scaleX = Math.round(1e3 * c.scaleX) / 1e3, c.scaleX = Math.round(1e3 * c.scaleX) / 1e3; var u = !1 !== r.translate && (0 !== c.x || 0 !== c.y), h = !1 !== r.scale && (0 !== c.scaleX || 0 !== c.scaleY); if (u || h) { var d = []; u && d.push("translate(".concat(c.x, "px, ").concat(c.y, "px)")), h && d.push("scale(".concat(c.scaleX, ", ").concat(c.scaleY, ")")), o.styles.transform = d.join(" "), o.styles["transform-origin"] = "top left", s.styles.transform = "none" } } for (var m in s.styles) { var p = s.styles[m], f = o.styles[m]; p === f ? delete s.styles[m] : (!0 === p.explicitValue && (s.styles[m] = p.value), !0 === f.explicitValue && (o.styles[m] = f.value)) } var g = "", v = Object.keys(s.styles); return v.length > 0 && (o.styles.transition = "none", s.styles.transition = "all ".concat(a.duration, "s ").concat(a.easing, " ").concat(a.delay, "s"), s.styles["transition-property"] = v.join(", "), s.styles["will-change"] = v.join(", "), g = '[data-auto-animate-target="' + i + '"] {' + Object.keys(o.styles).map(function (t) { return t + ": " + o.styles[t] + " !important;" }).join("") + '}[data-auto-animate="running"] [data-auto-animate-target="' + i + '"] {' + Object.keys(s.styles).map(function (t) { return t + ": " + s.styles[t] + " !important;" }).join("") + "}"), g } }, { key: "getAutoAnimateOptions", value: function (t, e) { var r = { easing: this.Reveal.getConfig().autoAnimateEasing, duration: this.Reveal.getConfig().autoAnimateDuration, delay: 0 }; if (r = yd(r, e), t.parentNode) { var n = Ad(t.parentNode, "[data-auto-animate-target]"); n && (r = this.getAutoAnimateOptions(n, r)) } return t.dataset.autoAnimateEasing && (r.easing = t.dataset.autoAnimateEasing), t.dataset.autoAnimateDuration && (r.duration = parseFloat(t.dataset.autoAnimateDuration)), t.dataset.autoAnimateDelay && (r.delay = parseFloat(t.dataset.autoAnimateDelay)), r } }, { key: "getAutoAnimatableProperties", value: function (t, e, r) { var n = this.Reveal.getConfig(), i = { styles: [] }; if (!1 !== r.translate || !1 !== r.scale) { var a; if ("function" == typeof r.measure) a = r.measure(e); else if (n.center) a = e.getBoundingClientRect(); else { var o = this.Reveal.getScale(); a = { x: e.offsetLeft * o, y: e.offsetTop * o, width: e.offsetWidth * o, height: e.offsetHeight * o } } i.x = a.x, i.y = a.y, i.width = a.width, i.height = a.height } var s = getComputedStyle(e); return (r.styles || n.autoAnimateStyles).forEach(function (e) { var r; "string" == typeof e && (e = { property: e }), "" !== (r = void 0 !== e.from && "from" === t ? { value: e.from, explicitValue: !0 } : void 0 !== e.to && "to" === t ? { value: e.to, explicitValue: !0 } : s[e.property]) && (i.styles[e.property] = r) }), i } }, { key: "getAutoAnimatableElements", value: function (t, e) { var r = ("function" == typeof this.Reveal.getConfig().autoAnimateMatcher ? this.Reveal.getConfig().autoAnimateMatcher : this.getAutoAnimatePairs).call(this, t, e), n = []; return r.filter(function (t) { if (-1 === n.indexOf(t.to)) return n.push(t.to), !0 }) } }, { key: "getAutoAnimatePairs", value: function (t, e) { var r = this, n = [], i = "h1, h2, h3, h4, h5, h6, p, li"; return this.findAutoAnimateMatches(n, t, e, "[data-id]", function (t) { return t.nodeName + ":::" + t.getAttribute("data-id") }), this.findAutoAnimateMatches(n, t, e, i, function (t) { return t.nodeName + ":::" + t.innerText }), this.findAutoAnimateMatches(n, t, e, "img, video, iframe", function (t) { return t.nodeName + ":::" + (t.getAttribute("src") || t.getAttribute("data-src")) }), this.findAutoAnimateMatches(n, t, e, "pre", function (t) { return t.nodeName + ":::" + t.innerText }), n.forEach(function (t) { Sd(t.from, i) ? t.options = { scale: !1 } : Sd(t.from, "pre") && (t.options = { scale: !1, styles: ["width", "height"] }, r.findAutoAnimateMatches(n, t.from, t.to, ".hljs .hljs-ln-code", function (t) { return t.textContent }, { scale: !1, styles: [], measure: r.getLocalBoundingBox.bind(r) }), r.findAutoAnimateMatches(n, t.from, t.to, ".hljs .hljs-ln-line[data-line-number]", function (t) { return t.getAttribute("data-line-number") }, { scale: !1, styles: ["width"], measure: r.getLocalBoundingBox.bind(r) })) }, this), n } }, { key: "getLocalBoundingBox", value: function (t) { var e = this.Reveal.getScale(); return { x: Math.round(t.offsetLeft * e * 100) / 100, y: Math.round(t.offsetTop * e * 100) / 100, width: Math.round(t.offsetWidth * e * 100) / 100, height: Math.round(t.offsetHeight * e * 100) / 100 } } }, { key: "findAutoAnimateMatches", value: function (t, e, r, n, i, a) { var o = {}, s = {};[].slice.call(e.querySelectorAll(n)).forEach(function (t) { var e = i(t); "string" == typeof e && e.length && (o[e] = o[e] || [], o[e].push(t)) }), [].slice.call(r.querySelectorAll(n)).forEach(function (e) { var r, n = i(e); if (s[n] = s[n] || [], s[n].push(e), o[n]) { var l = s[n].length - 1, c = o[n].length - 1; o[n][l] ? (r = o[n][l], o[n][l] = null) : o[n][c] && (r = o[n][c], o[n][c] = null) } r && t.push({ from: r, to: e, options: a }) }) } }, { key: "getUnmatchedAutoAnimateElements", value: function (t) { var e = this; return [].slice.call(t.children).reduce(function (t, r) { var n = r.querySelector("[data-auto-animate-target]"); return r.hasAttribute("data-auto-animate-target") || n || t.push(r), r.querySelector("[data-auto-animate-target]") && (t = t.concat(e.getUnmatchedAutoAnimateElements(r))), t }, []) } }]), t }(), cm = function () { function t(e) { i(this, t), this.Reveal = e } return o(t, [{ key: "configure", value: function (t, e) { !1 === t.fragments ? this.disable() : !1 === e.fragments && this.enable() } }, { key: "disable", value: function () { bd(this.Reveal.getSlidesElement(), ".fragment").forEach(function (t) { t.classList.add("visible"), t.classList.remove("current-fragment") }) } }, { key: "enable", value: function () { bd(this.Reveal.getSlidesElement(), ".fragment").forEach(function (t) { t.classList.remove("visible"), t.classList.remove("current-fragment") }) } }, { key: "availableRoutes", value: function () { var t = this.Reveal.getCurrentSlide(); if (t && this.Reveal.getConfig().fragments) { var e = t.querySelectorAll(".fragment:not(.disabled)"), r = t.querySelectorAll(".fragment:not(.disabled):not(.visible)"); return { prev: e.length - r.length > 0, next: !!r.length } } return { prev: !1, next: !1 } } }, { key: "sort", value: function (t) { var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; t = Array.from(t); var r = [], n = [], i = []; t.forEach(function (t) { if (t.hasAttribute("data-fragment-index")) { var e = parseInt(t.getAttribute("data-fragment-index"), 10); r[e] || (r[e] = []), r[e].push(t) } else n.push([t]) }), r = r.concat(n); var a = 0; return r.forEach(function (t) { t.forEach(function (t) { i.push(t), t.setAttribute("data-fragment-index", a) }), a++ }), !0 === e ? r : i } }, { key: "sortAll", value: function () { var t = this; this.Reveal.getHorizontalSlides().forEach(function (e) { var r = bd(e, "section"); r.forEach(function (e) { t.sort(e.querySelectorAll(".fragment")) }, t), 0 === r.length && t.sort(e.querySelectorAll(".fragment")) }) } }, { key: "update", value: function (t, e) { var r = this, n = { shown: [], hidden: [] }, i = this.Reveal.getCurrentSlide(); if (i && this.Reveal.getConfig().fragments && (e = e || this.sort(i.querySelectorAll(".fragment"))).length) { var a = 0; if ("number" != typeof t) { var o = this.sort(i.querySelectorAll(".fragment.visible")).pop(); o && (t = parseInt(o.getAttribute("data-fragment-index") || 0, 10)) } Array.from(e).forEach(function (e, i) { if (e.hasAttribute("data-fragment-index") && (i = parseInt(e.getAttribute("data-fragment-index"), 10)), a = Math.max(a, i), i <= t) { var o = e.classList.contains("visible"); e.classList.add("visible"), e.classList.remove("current-fragment"), i === t && (r.Reveal.announceStatus(r.Reveal.getStatusText(e)), e.classList.add("current-fragment"), r.Reveal.slideContent.startEmbeddedContent(e)), o || (n.shown.push(e), r.Reveal.dispatchEvent({ target: e, type: "visible", bubbles: !1 })) } else { var s = e.classList.contains("visible"); e.classList.remove("visible"), e.classList.remove("current-fragment"), s && (r.Reveal.slideContent.stopEmbeddedContent(e), n.hidden.push(e), r.Reveal.dispatchEvent({ target: e, type: "hidden", bubbles: !1 })) } }), t = "number" == typeof t ? t : -1, t = Math.max(Math.min(t, a), -1), i.setAttribute("data-fragment", t) } return n } }, { key: "sync", value: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.Reveal.getCurrentSlide(); return this.sort(t.querySelectorAll(".fragment")) } }, { key: "goto", value: function (t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, r = this.Reveal.getCurrentSlide(); if (r && this.Reveal.getConfig().fragments) { var n = this.sort(r.querySelectorAll(".fragment:not(.disabled)")); if (n.length) { if ("number" != typeof t) { var i = this.sort(r.querySelectorAll(".fragment:not(.disabled).visible")).pop(); t = i ? parseInt(i.getAttribute("data-fragment-index") || 0, 10) : -1 } t += e; var a = this.update(t, n); return a.hidden.length && this.Reveal.dispatchEvent({ type: "fragmenthidden", data: { fragment: a.hidden[0], fragments: a.hidden } }), a.shown.length && this.Reveal.dispatchEvent({ type: "fragmentshown", data: { fragment: a.shown[0], fragments: a.shown } }), this.Reveal.controls.update(), this.Reveal.progress.update(), this.Reveal.getConfig().fragmentInURL && this.Reveal.location.writeURL(), !(!a.shown.length && !a.hidden.length) } } return !1 } }, { key: "next", value: function () { return this.goto(null, 1) } }, { key: "prev", value: function () { return this.goto(null, -1) } }]), t }(), um = function () { + function t(e) { + i(this, t), this.Reveal = e, this.active = !1, + this.onSlideClicked = this.onSlideClicked.bind(this) + } return o(t, [{ key: "activate", value: function () { var t = this; if (this.Reveal.getConfig().overview && !this.isActive()) { this.active = !0, this.Reveal.getRevealElement().classList.add("overview"), this.Reveal.cancelAutoSlide(), this.Reveal.getSlidesElement().appendChild(this.Reveal.getBackgroundsElement()), bd(this.Reveal.getRevealElement(), rm).forEach(function (e) { e.classList.contains("stack") || e.addEventListener("click", t.onSlideClicked, !0) }); var e = this.Reveal.getComputedSlideSize(); this.overviewSlideWidth = e.width + 70, this.overviewSlideHeight = e.height + 70, this.Reveal.getConfig().rtl && (this.overviewSlideWidth = -this.overviewSlideWidth), this.Reveal.updateSlidesVisibility(), this.layout(), this.update(), this.Reveal.layout(); var r = this.Reveal.getIndices(); this.Reveal.dispatchEvent({ type: "overviewshown", data: { indexh: r.h, indexv: r.v, currentSlide: this.Reveal.getCurrentSlide() } }) } } }, { key: "layout", value: function () { var t = this; this.Reveal.getHorizontalSlides().forEach(function (e, r) { e.setAttribute("data-index-h", r), kd(e, "translate3d(" + r * t.overviewSlideWidth + "px, 0, 0)"), e.classList.contains("stack") && bd(e, "section").forEach(function (e, n) { e.setAttribute("data-index-h", r), e.setAttribute("data-index-v", n), kd(e, "translate3d(0, " + n * t.overviewSlideHeight + "px, 0)") }) }), Array.from(this.Reveal.getBackgroundsElement().childNodes).forEach(function (e, r) { kd(e, "translate3d(" + r * t.overviewSlideWidth + "px, 0, 0)"), bd(e, ".slide-background").forEach(function (e, r) { kd(e, "translate3d(0, " + r * t.overviewSlideHeight + "px, 0)") }) }) } }, { key: "update", value: function () { var t = Math.min(window.innerWidth, window.innerHeight), e = Math.max(t / 5, 150) / t, r = this.Reveal.getIndices(); this.Reveal.transformSlides({ overview: ["scale(" + e + ")", "translateX(" + -r.h * this.overviewSlideWidth + "px)", "translateY(" + -r.v * this.overviewSlideHeight + "px)"].join(" ") }) } }, { key: "deactivate", value: function () { var t = this; if (this.Reveal.getConfig().overview) { this.active = !1, this.Reveal.getRevealElement().classList.remove("overview"), this.Reveal.getRevealElement().classList.add("overview-deactivating"), setTimeout(function () { t.Reveal.getRevealElement().classList.remove("overview-deactivating") }, 1), this.Reveal.getRevealElement().appendChild(this.Reveal.getBackgroundsElement()), bd(this.Reveal.getRevealElement(), rm).forEach(function (e) { kd(e, ""), e.removeEventListener("click", t.onSlideClicked, !0) }), bd(this.Reveal.getBackgroundsElement(), ".slide-background").forEach(function (t) { kd(t, "") }), this.Reveal.transformSlides({ overview: "" }); var e = this.Reveal.getIndices(); this.Reveal.slide(e.h, e.v), this.Reveal.layout(), this.Reveal.cueAutoSlide(), this.Reveal.dispatchEvent({ type: "overviewhidden", data: { indexh: e.h, indexv: e.v, currentSlide: this.Reveal.getCurrentSlide() } }) } } }, { key: "toggle", value: function (t) { "boolean" == typeof t ? t ? this.activate() : this.deactivate() : this.isActive() ? this.deactivate() : this.activate() } }, { key: "isActive", value: function () { return this.active } }, { key: "onSlideClicked", value: function (t) { if (this.isActive()) { t.preventDefault(); for (var e = t.target; e && !e.nodeName.match(/section/gi);)e = e.parentNode; if (e && !e.classList.contains("disabled") && (this.deactivate(), e.nodeName.match(/section/gi))) { var r = parseInt(e.getAttribute("data-index-h"), 10), n = parseInt(e.getAttribute("data-index-v"), 10); this.Reveal.slide(r, n) } } } }]), t + }(), hm = function () { function t(e) { i(this, t), this.Reveal = e, this.shortcuts = {}, this.bindings = {}, this.onDocumentKeyDown = this.onDocumentKeyDown.bind(this), this.onDocumentKeyPress = this.onDocumentKeyPress.bind(this) } return o(t, [{ key: "configure", value: function (t) { "linear" === t.navigationMode ? (this.shortcuts["→ , ↓ , SPACE , N , L , J"] = "Next slide", this.shortcuts["← , ↑ , P , H , K"] = "Previous slide") : (this.shortcuts["N , SPACE"] = "Next slide", this.shortcuts["P , Shift SPACE"] = "Previous slide", this.shortcuts["← , H"] = "Navigate left", this.shortcuts["→ , L"] = "Navigate right", this.shortcuts["↑ , K"] = "Navigate up", this.shortcuts["↓ , J"] = "Navigate down"), this.shortcuts["Alt + ←/↑/→/↓"] = "Navigate without fragments", this.shortcuts["Shift + ←/↑/→/↓"] = "Jump to first/last slide", this.shortcuts["B , ."] = "Pause", this.shortcuts.F = "Fullscreen", this.shortcuts["ESC, O"] = "Slide overview" } }, { key: "bind", value: function () { document.addEventListener("keydown", this.onDocumentKeyDown, !1), document.addEventListener("keypress", this.onDocumentKeyPress, !1) } }, { key: "unbind", value: function () { document.removeEventListener("keydown", this.onDocumentKeyDown, !1), document.removeEventListener("keypress", this.onDocumentKeyPress, !1) } }, { key: "addKeyBinding", value: function (t, e) { "object" === r(t) && t.keyCode ? this.bindings[t.keyCode] = { callback: e, key: t.key, description: t.description } : this.bindings[t] = { callback: e, key: null, description: null } } }, { key: "removeKeyBinding", value: function (t) { delete this.bindings[t] } }, { key: "triggerKey", value: function (t) { this.onDocumentKeyDown({ keyCode: t }) } }, { key: "registerKeyboardShortcut", value: function (t, e) { this.shortcuts[t] = e } }, { key: "getShortcuts", value: function () { return this.shortcuts } }, { key: "getBindings", value: function () { return this.bindings } }, { key: "onDocumentKeyPress", value: function (t) { t.shiftKey && 63 === t.charCode && this.Reveal.toggleHelp() } }, { key: "onDocumentKeyDown", value: function (t) { var e = this.Reveal.getConfig(); if ("function" == typeof e.keyboardCondition && !1 === e.keyboardCondition(t)) return !0; if ("focused" === e.keyboardCondition && !this.Reveal.isFocused()) return !0; var n = t.keyCode, i = !this.Reveal.isAutoSliding(); this.Reveal.onUserInput(t); var a = document.activeElement && !0 === document.activeElement.isContentEditable, o = document.activeElement && document.activeElement.tagName && /input|textarea/i.test(document.activeElement.tagName), s = document.activeElement && document.activeElement.className && /speaker-notes/i.test(document.activeElement.className), l = !(-1 !== [32, 37, 38, 39, 40, 78, 80].indexOf(t.keyCode) && t.shiftKey || t.altKey) && (t.shiftKey || t.altKey || t.ctrlKey || t.metaKey); if (!(a || o || s || l)) { var c, u = [66, 86, 190, 191]; if ("object" === r(e.keyboard)) for (c in e.keyboard) "togglePause" === e.keyboard[c] && u.push(parseInt(c, 10)); if (this.Reveal.isPaused() && -1 === u.indexOf(n)) return !1; var h, d, m = "linear" === e.navigationMode || !this.Reveal.hasHorizontalSlides() || !this.Reveal.hasVerticalSlides(), p = !1; if ("object" === r(e.keyboard)) for (c in e.keyboard) if (parseInt(c, 10) === n) { var f = e.keyboard[c]; "function" == typeof f ? f.apply(null, [t]) : "string" == typeof f && "function" == typeof this.Reveal[f] && this.Reveal[f].call(), p = !0 } if (!1 === p) for (c in this.bindings) if (parseInt(c, 10) === n) { var g = this.bindings[c].callback; "function" == typeof g ? g.apply(null, [t]) : "string" == typeof g && "function" == typeof this.Reveal[g] && this.Reveal[g].call(), p = !0 } !1 === p && (p = !0, 80 === n || 33 === n ? this.Reveal.prev({ skipFragments: t.altKey }) : 78 === n || 34 === n ? this.Reveal.next({ skipFragments: t.altKey }) : 72 === n || 37 === n ? t.shiftKey ? this.Reveal.slide(0) : !this.Reveal.overview.isActive() && m ? this.Reveal.prev({ skipFragments: t.altKey }) : this.Reveal.left({ skipFragments: t.altKey }) : 76 === n || 39 === n ? t.shiftKey ? this.Reveal.slide(this.Reveal.getHorizontalSlides().length - 1) : !this.Reveal.overview.isActive() && m ? this.Reveal.next({ skipFragments: t.altKey }) : this.Reveal.right({ skipFragments: t.altKey }) : 75 === n || 38 === n ? t.shiftKey ? this.Reveal.slide(void 0, 0) : !this.Reveal.overview.isActive() && m ? this.Reveal.prev({ skipFragments: t.altKey }) : this.Reveal.up({ skipFragments: t.altKey }) : 74 === n || 40 === n ? t.shiftKey ? this.Reveal.slide(void 0, Number.MAX_VALUE) : !this.Reveal.overview.isActive() && m ? this.Reveal.next({ skipFragments: t.altKey }) : this.Reveal.down({ skipFragments: t.altKey }) : 36 === n ? this.Reveal.slide(0) : 35 === n ? this.Reveal.slide(this.Reveal.getHorizontalSlides().length - 1) : 32 === n ? (this.Reveal.overview.isActive() && this.Reveal.overview.deactivate(), t.shiftKey ? this.Reveal.prev({ skipFragments: t.altKey }) : this.Reveal.next({ skipFragments: t.altKey })) : 58 === n || 59 === n || 66 === n || 86 === n || 190 === n || 191 === n ? this.Reveal.togglePause() : 70 === n ? (d = (h = (h = e.embedded ? this.Reveal.getViewportElement() : document.documentElement) || document.documentElement).requestFullscreen || h.webkitRequestFullscreen || h.webkitRequestFullScreen || h.mozRequestFullScreen || h.msRequestFullscreen) && d.apply(h) : 65 === n ? e.autoSlideStoppable && this.Reveal.toggleAutoSlide(i) : p = !1), p ? t.preventDefault && t.preventDefault() : 27 !== n && 79 !== n || (!1 === this.Reveal.closeOverlay() && this.Reveal.overview.toggle(), t.preventDefault && t.preventDefault()), this.Reveal.cueAutoSlide() } } }]), t }(), dm = function () { function t(e) { i(this, t), s(this, "MAX_REPLACE_STATE_FREQUENCY", 1e3), this.Reveal = e, this.writeURLTimeout = 0, this.replaceStateTimestamp = 0, this.onWindowHashChange = this.onWindowHashChange.bind(this) } return o(t, [{ key: "bind", value: function () { window.addEventListener("hashchange", this.onWindowHashChange, !1) } }, { key: "unbind", value: function () { window.removeEventListener("hashchange", this.onWindowHashChange, !1) } }, { key: "getIndicesFromHash", value: function () { var t, r, n = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window.location.hash).replace(/^#\/?/, ""), i = n.split("/"); if (/^[0-9]*$/.test(i[0]) || !n.length) { var a, o = this.Reveal.getConfig(), s = o.hashOneBasedIndex ? 1 : 0, l = parseInt(i[0], 10) - s || 0, c = parseInt(i[1], 10) - s || 0; return o.fragmentInURL && (a = parseInt(i[2], 10), isNaN(a) && (a = void 0)), { h: l, v: c, f: a } } /\/[-\d]+$/g.test(n) && (r = parseInt(n.split("/").pop(), 10), r = isNaN(r) ? void 0 : r, n = n.split("/").shift()); try { t = document.getElementById(decodeURIComponent(n)) } catch (t) { } return t ? e(e({}, this.Reveal.getIndices(t)), {}, { f: r }) : null } }, { key: "readURL", value: function () { var t = this.Reveal.getIndices(), e = this.getIndicesFromHash(); e ? e.h === t.h && e.v === t.v && void 0 === e.f || this.Reveal.slide(e.h, e.v, e.f) : this.Reveal.slide(t.h || 0, t.v || 0) } }, { key: "writeURL", value: function (t) { var e = this.Reveal.getConfig(), r = this.Reveal.getCurrentSlide(); if (clearTimeout(this.writeURLTimeout), "number" == typeof t) this.writeURLTimeout = setTimeout(this.writeURL, t); else if (r) { var n = this.getHash(); e.history ? window.location.hash = n : e.hash && ("/" === n ? this.debouncedReplaceState(window.location.pathname + window.location.search) : this.debouncedReplaceState("#" + n)) } } }, { key: "replaceState", value: function (t) { window.history.replaceState(null, null, t), this.replaceStateTimestamp = Date.now() } }, { key: "debouncedReplaceState", value: function (t) { var e = this; clearTimeout(this.replaceStateTimeout), Date.now() - this.replaceStateTimestamp > this.MAX_REPLACE_STATE_FREQUENCY ? this.replaceState(t) : this.replaceStateTimeout = setTimeout(function () { return e.replaceState(t) }, this.MAX_REPLACE_STATE_FREQUENCY) } }, { key: "getHash", value: function (t) { var e = "/", r = t || this.Reveal.getCurrentSlide(), n = r ? r.getAttribute("id") : null; n && (n = encodeURIComponent(n)); var i = this.Reveal.getIndices(t); if (this.Reveal.getConfig().fragmentInURL || (i.f = void 0), "string" == typeof n && n.length) e = "/" + n, i.f >= 0 && (e += "/" + i.f); else { var a = this.Reveal.getConfig().hashOneBasedIndex ? 1 : 0; (i.h > 0 || i.v > 0 || i.f >= 0) && (e += i.h + a), (i.v > 0 || i.f >= 0) && (e += "/" + (i.v + a)), i.f >= 0 && (e += "/" + i.f) } return e } }, { key: "onWindowHashChange", value: function () { this.readURL() } }]), t }(), mm = function () { function t(e) { i(this, t), this.Reveal = e, this.onNavigateLeftClicked = this.onNavigateLeftClicked.bind(this), this.onNavigateRightClicked = this.onNavigateRightClicked.bind(this), this.onNavigateUpClicked = this.onNavigateUpClicked.bind(this), this.onNavigateDownClicked = this.onNavigateDownClicked.bind(this), this.onNavigatePrevClicked = this.onNavigatePrevClicked.bind(this), this.onNavigateNextClicked = this.onNavigateNextClicked.bind(this) } return o(t, [{ key: "render", value: function () { var t = this.Reveal.getConfig().rtl, e = this.Reveal.getRevealElement(); this.element = document.createElement("aside"), this.element.className = "controls", this.element.innerHTML = '\n\t\t\t\n\t\t\t\n\t\t\t'), this.Reveal.getRevealElement().appendChild(this.element), this.controlsLeft = bd(e, ".navigate-left"), this.controlsRight = bd(e, ".navigate-right"), this.controlsUp = bd(e, ".navigate-up"), this.controlsDown = bd(e, ".navigate-down"), this.controlsPrev = bd(e, ".navigate-prev"), this.controlsNext = bd(e, ".navigate-next"), this.controlsRightArrow = this.element.querySelector(".navigate-right"), this.controlsLeftArrow = this.element.querySelector(".navigate-left"), this.controlsDownArrow = this.element.querySelector(".navigate-down") } }, { key: "configure", value: function (t) { this.element.style.display = t.controls ? "block" : "none", this.element.setAttribute("data-controls-layout", t.controlsLayout), this.element.setAttribute("data-controls-back-arrows", t.controlsBackArrows) } }, { key: "bind", value: function () { var t = this, e = ["touchstart", "click"]; Pd && (e = ["touchstart"]), e.forEach(function (e) { t.controlsLeft.forEach(function (r) { return r.addEventListener(e, t.onNavigateLeftClicked, !1) }), t.controlsRight.forEach(function (r) { return r.addEventListener(e, t.onNavigateRightClicked, !1) }), t.controlsUp.forEach(function (r) { return r.addEventListener(e, t.onNavigateUpClicked, !1) }), t.controlsDown.forEach(function (r) { return r.addEventListener(e, t.onNavigateDownClicked, !1) }), t.controlsPrev.forEach(function (r) { return r.addEventListener(e, t.onNavigatePrevClicked, !1) }), t.controlsNext.forEach(function (r) { return r.addEventListener(e, t.onNavigateNextClicked, !1) }) }) } }, { key: "unbind", value: function () { var t = this;["touchstart", "click"].forEach(function (e) { t.controlsLeft.forEach(function (r) { return r.removeEventListener(e, t.onNavigateLeftClicked, !1) }), t.controlsRight.forEach(function (r) { return r.removeEventListener(e, t.onNavigateRightClicked, !1) }), t.controlsUp.forEach(function (r) { return r.removeEventListener(e, t.onNavigateUpClicked, !1) }), t.controlsDown.forEach(function (r) { return r.removeEventListener(e, t.onNavigateDownClicked, !1) }), t.controlsPrev.forEach(function (r) { return r.removeEventListener(e, t.onNavigatePrevClicked, !1) }), t.controlsNext.forEach(function (r) { return r.removeEventListener(e, t.onNavigateNextClicked, !1) }) }) } }, { key: "update", value: function () { var t = this.Reveal.availableRoutes();[].concat(l(this.controlsLeft), l(this.controlsRight), l(this.controlsUp), l(this.controlsDown), l(this.controlsPrev), l(this.controlsNext)).forEach(function (t) { t.classList.remove("enabled", "fragmented"), t.setAttribute("disabled", "disabled") }), t.left && this.controlsLeft.forEach(function (t) { t.classList.add("enabled"), t.removeAttribute("disabled") }), t.right && this.controlsRight.forEach(function (t) { t.classList.add("enabled"), t.removeAttribute("disabled") }), t.up && this.controlsUp.forEach(function (t) { t.classList.add("enabled"), t.removeAttribute("disabled") }), t.down && this.controlsDown.forEach(function (t) { t.classList.add("enabled"), t.removeAttribute("disabled") }), (t.left || t.up) && this.controlsPrev.forEach(function (t) { t.classList.add("enabled"), t.removeAttribute("disabled") }), (t.right || t.down) && this.controlsNext.forEach(function (t) { t.classList.add("enabled"), t.removeAttribute("disabled") }); var e = this.Reveal.getCurrentSlide(); if (e) { var r = this.Reveal.fragments.availableRoutes(); r.prev && this.controlsPrev.forEach(function (t) { t.classList.add("fragmented", "enabled"), t.removeAttribute("disabled") }), r.next && this.controlsNext.forEach(function (t) { t.classList.add("fragmented", "enabled"), t.removeAttribute("disabled") }), this.Reveal.isVerticalSlide(e) ? (r.prev && this.controlsUp.forEach(function (t) { t.classList.add("fragmented", "enabled"), t.removeAttribute("disabled") }), r.next && this.controlsDown.forEach(function (t) { t.classList.add("fragmented", "enabled"), t.removeAttribute("disabled") })) : (r.prev && this.controlsLeft.forEach(function (t) { t.classList.add("fragmented", "enabled"), t.removeAttribute("disabled") }), r.next && this.controlsRight.forEach(function (t) { t.classList.add("fragmented", "enabled"), t.removeAttribute("disabled") })) } if (this.Reveal.getConfig().controlsTutorial) { var n = this.Reveal.getIndices(); !this.Reveal.hasNavigatedVertically() && t.down ? this.controlsDownArrow.classList.add("highlight") : (this.controlsDownArrow.classList.remove("highlight"), this.Reveal.getConfig().rtl ? !this.Reveal.hasNavigatedHorizontally() && t.left && 0 === n.v ? this.controlsLeftArrow.classList.add("highlight") : this.controlsLeftArrow.classList.remove("highlight") : !this.Reveal.hasNavigatedHorizontally() && t.right && 0 === n.v ? this.controlsRightArrow.classList.add("highlight") : this.controlsRightArrow.classList.remove("highlight")) } } }, { key: "destroy", value: function () { this.unbind(), this.element.remove() } }, { key: "onNavigateLeftClicked", value: function (t) { t.preventDefault(), this.Reveal.onUserInput(), "linear" === this.Reveal.getConfig().navigationMode ? this.Reveal.prev() : this.Reveal.left() } }, { key: "onNavigateRightClicked", value: function (t) { t.preventDefault(), this.Reveal.onUserInput(), "linear" === this.Reveal.getConfig().navigationMode ? this.Reveal.next() : this.Reveal.right() } }, { key: "onNavigateUpClicked", value: function (t) { t.preventDefault(), this.Reveal.onUserInput(), this.Reveal.up() } }, { key: "onNavigateDownClicked", value: function (t) { t.preventDefault(), this.Reveal.onUserInput(), this.Reveal.down() } }, { key: "onNavigatePrevClicked", value: function (t) { t.preventDefault(), this.Reveal.onUserInput(), this.Reveal.prev() } }, { key: "onNavigateNextClicked", value: function (t) { t.preventDefault(), this.Reveal.onUserInput(), this.Reveal.next() } }]), t }(), pm = function () { function t(e) { i(this, t), this.Reveal = e, this.onProgressClicked = this.onProgressClicked.bind(this) } return o(t, [{ key: "render", value: function () { this.element = document.createElement("div"), this.element.className = "progress", this.Reveal.getRevealElement().appendChild(this.element), this.bar = document.createElement("span"), this.element.appendChild(this.bar) } }, { key: "configure", value: function (t) { this.element.style.display = t.progress ? "block" : "none" } }, { key: "bind", value: function () { this.Reveal.getConfig().progress && this.element && this.element.addEventListener("click", this.onProgressClicked, !1) } }, { key: "unbind", value: function () { this.Reveal.getConfig().progress && this.element && this.element.removeEventListener("click", this.onProgressClicked, !1) } }, { key: "update", value: function () { if (this.Reveal.getConfig().progress && this.bar) { var t = this.Reveal.getProgress(); this.Reveal.getTotalSlides() < 2 && (t = 0), this.bar.style.transform = "scaleX(" + t + ")" } } }, { key: "getMaxWidth", value: function () { return this.Reveal.getRevealElement().offsetWidth } }, { key: "onProgressClicked", value: function (t) { this.Reveal.onUserInput(t), t.preventDefault(); var e = this.Reveal.getSlides(), r = e.length, n = Math.floor(t.clientX / this.getMaxWidth() * r); this.Reveal.getConfig().rtl && (n = r - n); var i = this.Reveal.getIndices(e[n]); this.Reveal.slide(i.h, i.v) } }, { key: "destroy", value: function () { this.element.remove() } }]), t }(), fm = function () { function t(e) { i(this, t), this.Reveal = e, this.lastMouseWheelStep = 0, this.cursorHidden = !1, this.cursorInactiveTimeout = 0, this.onDocumentCursorActive = this.onDocumentCursorActive.bind(this), this.onDocumentMouseScroll = this.onDocumentMouseScroll.bind(this) } return o(t, [{ key: "configure", value: function (t) { t.mouseWheel ? (document.addEventListener("DOMMouseScroll", this.onDocumentMouseScroll, !1), document.addEventListener("mousewheel", this.onDocumentMouseScroll, !1)) : (document.removeEventListener("DOMMouseScroll", this.onDocumentMouseScroll, !1), document.removeEventListener("mousewheel", this.onDocumentMouseScroll, !1)), t.hideInactiveCursor ? (document.addEventListener("mousemove", this.onDocumentCursorActive, !1), document.addEventListener("mousedown", this.onDocumentCursorActive, !1)) : (this.showCursor(), document.removeEventListener("mousemove", this.onDocumentCursorActive, !1), document.removeEventListener("mousedown", this.onDocumentCursorActive, !1)) } }, { key: "showCursor", value: function () { this.cursorHidden && (this.cursorHidden = !1, this.Reveal.getRevealElement().style.cursor = "") } }, { key: "hideCursor", value: function () { !1 === this.cursorHidden && (this.cursorHidden = !0, this.Reveal.getRevealElement().style.cursor = "none") } }, { key: "destroy", value: function () { this.showCursor(), document.removeEventListener("DOMMouseScroll", this.onDocumentMouseScroll, !1), document.removeEventListener("mousewheel", this.onDocumentMouseScroll, !1), document.removeEventListener("mousemove", this.onDocumentCursorActive, !1), document.removeEventListener("mousedown", this.onDocumentCursorActive, !1) } }, { key: "onDocumentCursorActive", value: function () { this.showCursor(), clearTimeout(this.cursorInactiveTimeout), this.cursorInactiveTimeout = setTimeout(this.hideCursor.bind(this), this.Reveal.getConfig().hideCursorTime) } }, { key: "onDocumentMouseScroll", value: function (t) { if (Date.now() - this.lastMouseWheelStep > 1e3) { this.lastMouseWheelStep = Date.now(); var e = t.detail || -t.wheelDelta; e > 0 ? this.Reveal.next() : e < 0 && this.Reveal.prev() } } }]), t }(), gm = v, vm = cr, ym = z, bm = y.f, xm = function (t) { return function (e) { for (var r, n = ym(e), i = vm(n), a = i.length, o = 0, s = []; a > o;)r = i[o++], gm && !bm.call(n, r) || s.push(t ? [r, n[r]] : n[r]); return s } }, wm = (xm(!0), xm(!1)); or({ target: "Object", stat: !0 }, { values: function (t) { return wm(t) } }); var km = function (t, e) { var r = document.createElement("script"); r.type = "text/javascript", r.async = !1, r.defer = !1, r.src = t, "function" == typeof e && (r.onload = r.onreadystatechange = function (t) { ("load" === t.type || /loaded|complete/.test(r.readyState)) && (r.onload = r.onreadystatechange = r.onerror = null, e()) }, r.onerror = function (t) { r.onload = r.onreadystatechange = r.onerror = null, e(new Error("Failed loading script: " + r.src + "\n" + t)) }); var n = document.querySelector("head"); n.insertBefore(r, n.lastChild) }, Sm = function () { function t(e) { i(this, t), this.Reveal = e, this.state = "idle", this.registeredPlugins = {}, this.asyncDependencies = [] } return o(t, [{ key: "load", value: function (t, e) { var r = this; return this.state = "loading", t.forEach(this.registerPlugin.bind(this)), new Promise(function (t) { var n = [], i = 0; if (e.forEach(function (t) { t.condition && !t.condition() || (t.async ? r.asyncDependencies.push(t) : n.push(t)) }), n.length) { i = n.length; var a = function (e) { e && "function" == typeof e.callback && e.callback(), 0 == --i && r.initPlugins().then(t) }; n.forEach(function (t) { "string" == typeof t.id ? (r.registerPlugin(t), a(t)) : "string" == typeof t.src ? km(t.src, function () { return a(t) }) : (console.warn("Unrecognized plugin format", t), a()) }) } else r.initPlugins().then(t) }) } }, { key: "initPlugins", value: function () { var t = this; return new Promise(function (e) { var r = Object.values(t.registeredPlugins), n = r.length; if (0 === n) t.loadAsync().then(e); else { var i, a = function () { 0 == --n ? t.loadAsync().then(e) : i() }, o = 0; (i = function () { var e = r[o++]; if ("function" == typeof e.init) { var n = e.init(t.Reveal); n && "function" == typeof n.then ? n.then(a) : a() } else a() })() } }) } }, { key: "loadAsync", value: function () { return this.state = "loaded", this.asyncDependencies.length && this.asyncDependencies.forEach(function (t) { km(t.src, t.callback) }), Promise.resolve() } }, { key: "registerPlugin", value: function (t) { 2 === arguments.length && "string" == typeof arguments[0] ? (t = arguments[1]).id = arguments[0] : "function" == typeof t && (t = t()); var e = t.id; "string" != typeof e ? console.warn("Unrecognized plugin format; can't find plugin.id", t) : void 0 === this.registeredPlugins[e] ? (this.registeredPlugins[e] = t, "loaded" === this.state && "function" == typeof t.init && t.init(this.Reveal)) : console.warn('reveal.js: "' + e + '" plugin has already been registered') } }, { key: "hasPlugin", value: function (t) { return !!this.registeredPlugins[t] } }, { key: "getPlugin", value: function (t) { return this.registeredPlugins[t] } }, { key: "getRegisteredPlugins", value: function () { return this.registeredPlugins } }, { key: "destroy", value: function () { Object.values(this.registeredPlugins).forEach(function (t) { "function" == typeof t.destroy && t.destroy() }), this.registeredPlugins = {}, this.asyncDependencies = [] } }]), t }(); !function (t) { var e = function (t) { function e(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e] } function r(t, e, r, a) { var o = e && e.prototype instanceof i ? e : i, s = Object.create(o.prototype), l = new d(a || []); return s._invoke = function (t, e, r) { var i = k; return function (a, o) { if (i === A) throw new Error("Generator is already running"); if (i === E) { if ("throw" === a) throw o; return p() } for (r.method = a, r.arg = o; ;) { var s = r.delegate; if (s) { var l = c(s, r); if (l) { if (l === M) continue; return l } } if ("next" === r.method) r.sent = r._sent = r.arg; else if ("throw" === r.method) { if (i === k) throw i = E, r.arg; r.dispatchException(r.arg) } else "return" === r.method && r.abrupt("return", r.arg); i = A; var u = n(t, e, r); if ("normal" === u.type) { if (i = r.done ? E : S, u.arg === M) continue; return { value: u.arg, done: r.done } } "throw" === u.type && (i = E, r.method = "throw", r.arg = u.arg) } } }(t, r, l), s } function n(t, e, r) { try { return { type: "normal", arg: t.call(e, r) } } catch (t) { return { type: "throw", arg: t } } } function i() { } function a() { } function o() { } function s(t) { ["next", "throw", "return"].forEach(function (r) { e(t, r, function (t) { return this._invoke(r, t) }) }) } function l(t, e) { function r(i, a, o, s) { var l = n(t[i], t, a); if ("throw" !== l.type) { var c = l.arg, u = c.value; return u && "object" == typeof u && v.call(u, "__await") ? e.resolve(u.__await).then(function (t) { r("next", t, o, s) }, function (t) { r("throw", t, o, s) }) : e.resolve(u).then(function (t) { c.value = t, o(c) }, function (t) { return r("throw", t, o, s) }) } s(l.arg) } var i; this._invoke = function (t, n) { function a() { return new e(function (e, i) { r(t, n, e, i) }) } return i = i ? i.then(a, a) : a() } } function c(t, e) { var r = t.iterator[e.method]; if (r === f) { if (e.delegate = null, "throw" === e.method) { if (t.iterator["return"] && (e.method = "return", e.arg = f, c(t, e), "throw" === e.method)) return M; e.method = "throw", e.arg = new TypeError("The iterator does not provide a 'throw' method") } return M } var i = n(r, t.iterator, e.arg); if ("throw" === i.type) return e.method = "throw", e.arg = i.arg, e.delegate = null, M; var a = i.arg; return a ? a.done ? (e[t.resultName] = a.value, e.next = t.nextLoc, "return" !== e.method && (e.method = "next", e.arg = f), e.delegate = null, M) : a : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, M) } function u(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e) } function h(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e } function d(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(u, this), this.reset(!0) } function m(t) { if (t) { var e = t[b]; if (e) return e.call(t); if ("function" == typeof t.next) return t; if (!isNaN(t.length)) { var r = -1, n = function e() { for (; ++r < t.length;)if (v.call(t, r)) return e.value = t[r], e.done = !1, e; return e.value = f, e.done = !0, e }; return n.next = n } } return { next: p } } function p() { return { value: f, done: !0 } } var f, g = Object.prototype, v = g.hasOwnProperty, y = "function" == typeof Symbol ? Symbol : {}, b = y.iterator || "@@iterator", x = y.asyncIterator || "@@asyncIterator", w = y.toStringTag || "@@toStringTag"; try { e({}, "") } catch (t) { e = function (t, e, r) { return t[e] = r } } t.wrap = r; var k = "suspendedStart", S = "suspendedYield", A = "executing", E = "completed", M = {}, R = {}; R[b] = function () { return this }; var T = Object.getPrototypeOf, C = T && T(T(m([]))); C && C !== g && v.call(C, b) && (R = C); var L = o.prototype = i.prototype = Object.create(R); return a.prototype = L.constructor = o, o.constructor = a, a.displayName = e(o, w, "GeneratorFunction"), t.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === a || "GeneratorFunction" === (e.displayName || e.name)) }, t.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, o) : (t.__proto__ = o, e(t, w, "GeneratorFunction")), t.prototype = Object.create(L), t }, t.awrap = function (t) { return { __await: t } }, s(l.prototype), l.prototype[x] = function () { return this }, t.AsyncIterator = l, t.async = function (e, n, i, a, o) { void 0 === o && (o = Promise); var s = new l(r(e, n, i, a), o); return t.isGeneratorFunction(n) ? s : s.next().then(function (t) { return t.done ? t.value : s.next() }) }, s(L), e(L, w, "Generator"), L[b] = function () { return this }, L.toString = function () { return "[object Generator]" }, t.keys = function (t) { var e = []; for (var r in t) e.push(r); return e.reverse(), function n() { for (; e.length;) { var r = e.pop(); if (r in t) return n.value = r, n.done = !1, n } return n.done = !0, n } }, t.values = m, d.prototype = { constructor: d, reset: function (t) { if (this.prev = 0, this.next = 0, this.sent = this._sent = f, this.done = !1, this.delegate = null, this.method = "next", this.arg = f, this.tryEntries.forEach(h), !t) for (var e in this) "t" === e.charAt(0) && v.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = f) }, stop: function () { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval }, dispatchException: function (t) { function e(e, n) { return a.type = "throw", a.arg = t, r.next = e, n && (r.method = "next", r.arg = f), !!n } if (this.done) throw t; for (var r = this, n = this.tryEntries.length - 1; n >= 0; --n) { var i = this.tryEntries[n], a = i.completion; if ("root" === i.tryLoc) return e("end"); if (i.tryLoc <= this.prev) { var o = v.call(i, "catchLoc"), s = v.call(i, "finallyLoc"); if (o && s) { if (this.prev < i.catchLoc) return e(i.catchLoc, !0); if (this.prev < i.finallyLoc) return e(i.finallyLoc) } else if (o) { if (this.prev < i.catchLoc) return e(i.catchLoc, !0) } else { if (!s) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return e(i.finallyLoc) } } } }, abrupt: function (t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var n = this.tryEntries[r]; if (n.tryLoc <= this.prev && v.call(n, "finallyLoc") && this.prev < n.finallyLoc) { var i = n; break } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, M) : this.complete(a) }, complete: function (t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), M }, finish: function (t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), h(r), M } }, "catch": function (t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var i = n.arg; h(r) } return i } } throw new Error("illegal catch attempt") }, delegateYield: function (t, e, r) { return this.delegate = { iterator: m(t), resultName: e, nextLoc: r }, "next" === this.method && (this.arg = f), M } }, t }(t.exports); try { regeneratorRuntime = e } catch (t) { Function("r", "regeneratorRuntime = r")(e) } }({ exports: {} }); var Am = function () { + function t(e) { i(this, t), this.Reveal = e } var e, r; return o(t, [{ + key: "setupPDF", value: (e = regeneratorRuntime.mark(function a() { + var t, e, r, n, i, o, s, l, c, u, h, d, m, p, f; return regeneratorRuntime.wrap(function (a) { + for (; ;)switch (a.prev = a.next) { + case 0: return t = this.Reveal.getConfig(), e = bd(this.Reveal.getRevealElement(), rm), r = t.slideNumber && /all|print/i.test(t.showSlideNumber), n = this.Reveal.getComputedSlideSize(window.innerWidth, window.innerHeight), i = Math.floor(n.width * (1 + t.margin)), o = Math.floor(n.height * (1 + t.margin)), s = n.width, l = n.height, a.next = 8, new Promise(requestAnimationFrame); case 8: return Md("@page{size:" + i + "px " + o + "px; margin: 0px;}"), Md(".reveal section>img, .reveal section>video, .reveal section>iframe{max-width: " + s + "px; max-height:" + l + "px}"), document.documentElement.classList.add("print-pdf"), document.body.style.width = i + "px", document.body.style.height = o + "px", (c = document.querySelector(".reveal-viewport")) && (h = window.getComputedStyle(c)) && h.background && (u = h.background), a.next = 17, new Promise(requestAnimationFrame); case 17: return this.Reveal.layoutSlideContents(s, l), a.next = 20, new Promise(requestAnimationFrame); case 20: return d = e.map(function (t) { return t.scrollHeight }), m = [], p = e[0].parentNode, f = 1, e.forEach(function (e, n) { + if (!1 === e.classList.contains("stack")) { + var a = (i - s) / 2, c = (o - l) / 2, h = d[n], p = Math.max(Math.ceil(h / o), 1); (1 === (p = Math.min(p, t.pdfMaxPagesPerSlide)) && t.center || e.classList.contains("center")) && (c = Math.max((o - h) / 2, 0)); var g = document.createElement("div"); if (m.push(g), g.className = "pdf-page", g.style.height = (o + t.pdfPageHeightOffset) * p + "px", u && (g.style.background = u), g.appendChild(e), e.style.left = a + "px", e.style.top = c + "px", e.style.width = s + "px", this.Reveal.slideContent.layout(e), e.slideBackgroundElement && g.insertBefore(e.slideBackgroundElement, e), t.showNotes) { var v = this.Reveal.getSlideNotes(e); if (v) { var y = "string" == typeof t.showNotes ? t.showNotes : "inline", b = document.createElement("div"); b.classList.add("speaker-notes"), b.classList.add("speaker-notes-pdf"), b.setAttribute("data-layout", y), b.innerHTML = v, "separate-page" === y ? m.push(b) : (b.style.left = "8px", b.style.bottom = "8px", b.style.width = i - 16 + "px", g.appendChild(b)) } } if (r) { var x = document.createElement("div"); x.classList.add("slide-number"), x.classList.add("slide-number-pdf"), x.innerHTML = f++, g.appendChild(x) } if (t.pdfSeparateFragments) { + var w, k = this.Reveal.fragments.sort(g.querySelectorAll(".fragment"), !0); k.forEach(function (t, e) { w && w.forEach(function (t) { t.classList.remove("current-fragment") }), t.forEach(function (t) { t.classList.add("visible", "current-fragment") }, this); var n = g.cloneNode(!0); if (r) { var i = e + 1; n.querySelector(".slide-number-pdf").innerHTML += "." + i } m.push(n), w = t }, this), k.forEach(function (t) { + t.forEach(function (t) { t.classList.remove("visible", "current-fragment") }) + }) + } else bd(g, ".fragment:not(.fade-out)").forEach(function (t) { t.classList.add("visible") }) + } + }, this), a.next = 27, new Promise(requestAnimationFrame); case 27: m.forEach(function (t) { return p.appendChild(t) }), this.Reveal.dispatchEvent({ type: "pdf-ready" }); case 29: case "end": return a.stop() + } + }, a, this) + }), r = function () { var t = this, r = arguments; return new Promise(function (i, a) { function o(t) { n(l, i, a, o, s, "next", t) } function s(t) { n(l, i, a, o, s, "throw", t) } var l = e.apply(t, r); o(void 0) }) }, function () { return r.apply(this, arguments) }) + }, { key: "isPrintingPDF", value: function () { return /print-pdf/gi.test(window.location.search) } }]), t + }(), Em = function () { function t(e) { i(this, t), this.Reveal = e, this.touchStartX = 0, this.touchStartY = 0, this.touchStartCount = 0, this.touchCaptured = !1, this.onPointerDown = this.onPointerDown.bind(this), this.onPointerMove = this.onPointerMove.bind(this), this.onPointerUp = this.onPointerUp.bind(this), this.onTouchStart = this.onTouchStart.bind(this), this.onTouchMove = this.onTouchMove.bind(this), this.onTouchEnd = this.onTouchEnd.bind(this) } return o(t, [{ key: "bind", value: function () { var t = this.Reveal.getRevealElement(); "onpointerdown" in window ? (t.addEventListener("pointerdown", this.onPointerDown, !1), t.addEventListener("pointermove", this.onPointerMove, !1), t.addEventListener("pointerup", this.onPointerUp, !1)) : window.navigator.msPointerEnabled ? (t.addEventListener("MSPointerDown", this.onPointerDown, !1), t.addEventListener("MSPointerMove", this.onPointerMove, !1), t.addEventListener("MSPointerUp", this.onPointerUp, !1)) : (t.addEventListener("touchstart", this.onTouchStart, !1), t.addEventListener("touchmove", this.onTouchMove, !1), t.addEventListener("touchend", this.onTouchEnd, !1)) } }, { key: "unbind", value: function () { var t = this.Reveal.getRevealElement(); t.removeEventListener("pointerdown", this.onPointerDown, !1), t.removeEventListener("pointermove", this.onPointerMove, !1), t.removeEventListener("pointerup", this.onPointerUp, !1), t.removeEventListener("MSPointerDown", this.onPointerDown, !1), t.removeEventListener("MSPointerMove", this.onPointerMove, !1), t.removeEventListener("MSPointerUp", this.onPointerUp, !1), t.removeEventListener("touchstart", this.onTouchStart, !1), t.removeEventListener("touchmove", this.onTouchMove, !1), t.removeEventListener("touchend", this.onTouchEnd, !1) } }, { key: "isSwipePrevented", value: function (t) { if (Sd(t, "video, audio")) return !0; for (; t && "function" == typeof t.hasAttribute;) { if (t.hasAttribute("data-prevent-swipe")) return !0; t = t.parentNode } return !1 } }, { key: "onTouchStart", value: function (t) { if (this.isSwipePrevented(t.target)) return !0; this.touchStartX = t.touches[0].clientX, this.touchStartY = t.touches[0].clientY, this.touchStartCount = t.touches.length } }, { key: "onTouchMove", value: function (t) { if (this.isSwipePrevented(t.target)) return !0; var e = this.Reveal.getConfig(); if (this.touchCaptured) Pd && t.preventDefault(); else { this.Reveal.onUserInput(t); var r = t.touches[0].clientX, n = t.touches[0].clientY; if (1 === t.touches.length && 2 !== this.touchStartCount) { var i = this.Reveal.availableRoutes({ includeFragments: !0 }), a = r - this.touchStartX, o = n - this.touchStartY; a > 40 && Math.abs(a) > Math.abs(o) ? (this.touchCaptured = !0, "linear" === e.navigationMode ? e.rtl ? this.Reveal.next() : this.Reveal.prev() : this.Reveal.left()) : a < -40 && Math.abs(a) > Math.abs(o) ? (this.touchCaptured = !0, "linear" === e.navigationMode ? e.rtl ? this.Reveal.prev() : this.Reveal.next() : this.Reveal.right()) : o > 40 && i.up ? (this.touchCaptured = !0, "linear" === e.navigationMode ? this.Reveal.prev() : this.Reveal.up()) : o < -40 && i.down && (this.touchCaptured = !0, "linear" === e.navigationMode ? this.Reveal.next() : this.Reveal.down()), e.embedded ? (this.touchCaptured || this.Reveal.isVerticalSlide()) && t.preventDefault() : t.preventDefault() } } } }, { key: "onTouchEnd", value: function () { this.touchCaptured = !1 } }, { key: "onPointerDown", value: function (t) { t.pointerType !== t.MSPOINTER_TYPE_TOUCH && "touch" !== t.pointerType || (t.touches = [{ clientX: t.clientX, clientY: t.clientY }], this.onTouchStart(t)) } }, { key: "onPointerMove", value: function (t) { t.pointerType !== t.MSPOINTER_TYPE_TOUCH && "touch" !== t.pointerType || (t.touches = [{ clientX: t.clientX, clientY: t.clientY }], this.onTouchMove(t)) } }, { key: "onPointerUp", value: function (t) { t.pointerType !== t.MSPOINTER_TYPE_TOUCH && "touch" !== t.pointerType || (t.touches = [{ clientX: t.clientX, clientY: t.clientY }], this.onTouchEnd(t)) } }]), t }(), Mm = "focus", Rm = "blur", Tm = function () { function t(e) { i(this, t), this.Reveal = e, this.onRevealPointerDown = this.onRevealPointerDown.bind(this), this.onDocumentPointerDown = this.onDocumentPointerDown.bind(this) } return o(t, [{ key: "configure", value: function (t) { t.embedded ? this.blur() : (this.focus(), this.unbind()) } }, { key: "bind", value: function () { this.Reveal.getConfig().embedded && this.Reveal.getRevealElement().addEventListener("pointerdown", this.onRevealPointerDown, !1) } }, { key: "unbind", value: function () { this.Reveal.getRevealElement().removeEventListener("pointerdown", this.onRevealPointerDown, !1), document.removeEventListener("pointerdown", this.onDocumentPointerDown, !1) } }, { key: "focus", value: function () { this.state !== Mm && (this.Reveal.getRevealElement().classList.add("focused"), document.addEventListener("pointerdown", this.onDocumentPointerDown, !1)), this.state = Mm } }, { key: "blur", value: function () { this.state !== Rm && (this.Reveal.getRevealElement().classList.remove("focused"), document.removeEventListener("pointerdown", this.onDocumentPointerDown, !1)), this.state = Rm } }, { key: "isFocused", value: function () { return this.state === Mm } }, { key: "destroy", value: function () { this.Reveal.getRevealElement().classList.remove("focused") } }, { key: "onRevealPointerDown", value: function () { this.focus() } }, { key: "onDocumentPointerDown", value: function (t) { var e = Ad(t.target, ".reveal"); e && e === this.Reveal.getRevealElement() || this.blur() } }]), t }(), Cm = function () { function t(e) { i(this, t), this.Reveal = e } return o(t, [{ key: "render", value: function () { this.element = document.createElement("div"), this.element.className = "speaker-notes", this.element.setAttribute("data-prevent-swipe", ""), this.element.setAttribute("tabindex", "0"), this.Reveal.getRevealElement().appendChild(this.element) } }, { key: "configure", value: function (t) { t.showNotes && this.element.setAttribute("data-layout", "string" == typeof t.showNotes ? t.showNotes : "inline") } }, { key: "update", value: function () { this.Reveal.getConfig().showNotes && this.element && this.Reveal.getCurrentSlide() && !this.Reveal.print.isPrintingPDF() && (this.element.innerHTML = this.getSlideNotes() || 'No notes on this slide.') } }, { key: "updateVisibility", value: function () { this.Reveal.getConfig().showNotes && this.hasNotes() && !this.Reveal.print.isPrintingPDF() ? this.Reveal.getRevealElement().classList.add("show-notes") : this.Reveal.getRevealElement().classList.remove("show-notes") } }, { key: "hasNotes", value: function () { return this.Reveal.getSlidesElement().querySelectorAll("[data-notes], aside.notes").length > 0 } }, { key: "isSpeakerNotesWindow", value: function () { return !!window.location.search.match(/receiver/gi) } }, { key: "getSlideNotes", value: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.Reveal.getCurrentSlide(); if (t.hasAttribute("data-notes")) return t.getAttribute("data-notes"); var e = t.querySelector("aside.notes"); return e ? e.innerHTML : null } }, { key: "destroy", value: function () { this.element.remove() } }]), t }(), Lm = B, zm = we, Nm = ve, Pm = js, Im = tt, Om = Gr("unscopables"), Bm = Array.prototype; null == Bm[Om] && Im.f(Bm, Om, { configurable: !0, value: Pm(null) }); var qm = function (t) { Bm[Om][t] = !0 }; or({ target: "Array", proto: !0 }, { fill: function (t) { for (var e = Lm(this), r = Nm(e.length), n = arguments.length, i = zm(n > 1 ? arguments[1] : void 0, r), a = n > 2 ? arguments[2] : void 0, o = void 0 === a ? r : zm(a, r); o > i;)e[i++] = t; return e } }), qm("fill"); var Dm = function () { function t(e, r) { i(this, t), this.diameter = 100, this.diameter2 = this.diameter / 2, this.thickness = 6, this.playing = !1, this.progress = 0, this.progressOffset = 1, this.container = e, this.progressCheck = r, this.canvas = document.createElement("canvas"), this.canvas.className = "playback", this.canvas.width = this.diameter, this.canvas.height = this.diameter, this.canvas.style.width = this.diameter2 + "px", this.canvas.style.height = this.diameter2 + "px", this.context = this.canvas.getContext("2d"), this.container.appendChild(this.canvas), this.render() } return o(t, [{ key: "setPlaying", value: function (t) { var e = this.playing; this.playing = t, !e && this.playing ? this.animate() : this.render() } }, { key: "animate", value: function () { var t = this.progress; this.progress = this.progressCheck(), t > .8 && this.progress < .2 && (this.progressOffset = this.progress), this.render(), this.playing && requestAnimationFrame(this.animate.bind(this)) } }, { key: "render", value: function () { var t = this.playing ? this.progress : 0, e = this.diameter2 - this.thickness, r = this.diameter2, n = this.diameter2, i = 28; this.progressOffset += .1 * (1 - this.progressOffset); var a = -Math.PI / 2 + t * (2 * Math.PI), o = -Math.PI / 2 + this.progressOffset * (2 * Math.PI); this.context.save(), this.context.clearRect(0, 0, this.diameter, this.diameter), this.context.beginPath(), this.context.arc(r, n, e + 4, 0, 2 * Math.PI, !1), this.context.fillStyle = "rgba( 0, 0, 0, 0.4 )", this.context.fill(), this.context.beginPath(), this.context.arc(r, n, e, 0, 2 * Math.PI, !1), this.context.lineWidth = this.thickness, this.context.strokeStyle = "rgba( 255, 255, 255, 0.2 )", this.context.stroke(), this.playing && (this.context.beginPath(), this.context.arc(r, n, e, o, a, !1), this.context.lineWidth = this.thickness, this.context.strokeStyle = "#fff", this.context.stroke()), this.context.translate(r - 14, n - 14), this.playing ? (this.context.fillStyle = "#fff", this.context.fillRect(0, 0, 10, i), this.context.fillRect(18, 0, 10, i)) : (this.context.beginPath(), this.context.translate(4, 0), this.context.moveTo(0, 0), this.context.lineTo(24, 14), this.context.lineTo(0, i), this.context.fillStyle = "#fff", this.context.fill()), this.context.restore() } }, { key: "on", value: function (t, e) { this.canvas.addEventListener(t, e, !1) } }, { key: "off", value: function (t, e) { this.canvas.removeEventListener(t, e, !1) } }, { key: "destroy", value: function () { this.playing = !1, this.canvas.parentNode && this.container.removeChild(this.canvas) } }]), t }(), Fm = { width: 960, height: 700, margin: .04, minScale: .2, maxScale: 2, controls: !0, controlsTutorial: !0, controlsLayout: "bottom-right", controlsBackArrows: "faded", progress: !0, slideNumber: !1, showSlideNumber: "all", hashOneBasedIndex: !1, hash: !1, respondToHashChanges: !0, history: !1, keyboard: !0, keyboardCondition: null, disableLayout: !1, overview: !0, center: !0, touch: !0, loop: !1, rtl: !1, navigationMode: "default", shuffle: !1, fragments: !0, fragmentInURL: !0, embedded: !1, help: !0, pause: !0, showNotes: !1, showHiddenSlides: !1, autoPlayMedia: null, preloadIframes: null, autoAnimate: !0, autoAnimateMatcher: null, autoAnimateEasing: "ease", autoAnimateDuration: 1, autoAnimateUnmatched: !0, autoAnimateStyles: ["opacity", "color", "background-color", "padding", "font-size", "line-height", "letter-spacing", "border-width", "border-color", "border-radius", "outline", "outline-offset"], autoSlide: 0, autoSlideStoppable: !0, autoSlideMethod: null, defaultTiming: null, mouseWheel: !1, previewLinks: !1, postMessage: !0, postMessageEvents: !1, focusBodyOnPageVisibilityChange: !0, transition: "slide", transitionSpeed: "default", backgroundTransition: "fade", parallaxBackgroundImage: "", parallaxBackgroundSize: "", parallaxBackgroundRepeat: "", parallaxBackgroundPosition: "", parallaxBackgroundHorizontal: null, parallaxBackgroundVertical: null, pdfMaxPagesPerSlide: Number.POSITIVE_INFINITY, pdfSeparateFragments: !0, pdfPageHeightOffset: -1, viewDistance: 3, mobileViewDistance: 2, display: "block", hideInactiveCursor: !0, hideCursorTime: 5e3, dependencies: [], plugins: [] }, Hm = "4.3.1", jm = h, Um = []; return jm.initialize = function (t) { return Object.assign(jm, new h(document.querySelector(".reveal"), t)), Um.map(function (t) { return t(jm) }), jm.initialize() }, ["configure", "on", "off", "addEventListener", "removeEventListener", "registerPlugin"].forEach(function (t) { jm[t] = function () { for (var e = arguments.length, r = new Array(e), n = 0; n < e; n++)r[n] = arguments[n]; Um.push(function (e) { var n; return (n = e[t]).call.apply(n, [null].concat(r)) }) } }), jm.isReady = function () { return !1 }, jm.VERSION = Hm, jm +}), SL("deck").Animation = { init: function () { this.animationListeners = [], this.animationsEnabled = !0, this.run = this.run.bind(this), this.reset = this.reset.bind(this), this.toggle = this.toggle.bind(this), this.onSlideChanged = this.onSlideChanged.bind(this), Reveal.addEventListener("slidechanged", this.onSlideChanged), this.revealElement = document.querySelector(".reveal"), this.interactiveAnimationChanged = new signals.Signal }, sync: function () { this.animationsEnabled ? this.enableAnimations() : this.disableAnimations() }, enableAnimations: function () { this.animationsEnabled = !0, this.revealElement.classList.remove("block-animations-disabled"), this.reset(this.revealElement); var t = Reveal.getCurrentSlide(); t && this.fastForwardAnimation(t, function () { this.run(t), this.bind(t) }.bind(this)) }, disableAnimations: function () { this.animationsEnabled = !1, this.revealElement.classList.add("block-animations-disabled"), this.unbind(), this.fastForwardAnimation(this.revealElement) }, getAnimationTargets: function (t) { return t instanceof Array ? t : t.hasAttribute("data-animation-type") ? [t] : [].slice.call(t.querySelectorAll("[data-animation-type]")) }, getInteractiveAnimationTargets: function (t, e) { var r = e ? ".animate" : ""; return [].slice.call(t.querySelectorAll(['[data-animation-trigger="click"]', '[data-animation-trigger="hover"]'].join(r + ",") + r)) }, run: function (t, e) { this.getAnimationTargets(t).forEach(function (t) { !e && this.hasInteractiveAnimationTrigger(t) || t.classList.add("animate") }.bind(this)) }, toggle: function (t, e) { this.getAnimationTargets(t).forEach(function (t) { !e && this.hasInteractiveAnimationTrigger(t) || t.classList.toggle("animate") }.bind(this)) }, reset: function (t) { this.getAnimationTargets(t).forEach(function (t) { t.classList.remove("animate") }.bind(this)) }, preview: function (t) { !1 === this.animationsEnabled && this.revealElement.classList.remove("block-animations-disabled"), this.getAnimationTargets(t).forEach(function (t) { t.classList.remove("animate"), this.fastForwardAnimation(t, function () { t.classList.add("animate"), !1 === this.animationsEnabled && this.revealElement.classList.add("block-animations-disabled") }.bind(this)) }.bind(this)) }, bind: function (t) { this.unbind(), this.getAnimationTargets(t).forEach(function (e) { if (this.hasInteractiveAnimationTrigger(e)) { var r = e.getAttribute("data-animation-trigger-id"), n = "self" === r ? e : t.querySelector('.sl-block[data-block-id="' + r + '"] .sl-block-content'); if (n) { var i = e.getAttribute("data-animation-trigger"); "click" === i ? (this.addAnimationEventListener(n, "touchstart", this.onTriggerTouchStart.bind(this, e)), this.addAnimationEventListener(n, "click", this.onTriggerClick.bind(this, e))) : "hover" === i && (this.addAnimationEventListener(n, "mouseover", this.onTriggerMouseOver.bind(this, e)), this.addAnimationEventListener(n, "mouseout", this.onTriggerMouseOut.bind(this, e))) } } }.bind(this)) }, addAnimationEventListener: function (t, e, r) { t.addEventListener(e, r), /click|touchstart/gi.test(e) && t.classList.add("animation-trigger"), this.animationListeners.push([t, e, r]) }, unbind: function () { this.animationListeners.forEach(function (t) { var e = t[0], r = t[1], n = t[2]; /click|touchstart/gi.test(r) && e.classList.remove("animation-trigger"), e.removeEventListener(r, n) }), this.animationListeners.length = 0 }, hasInteractiveAnimationTrigger: function (t) { return /click|hover/gi.test(t.getAttribute("data-animation-trigger")) }, fastForwardAnimation: function (t, e) { t.classList.add("no-transition"), setTimeout(function () { t.classList.remove("no-transition"), "function" == typeof e && e() }, 1) }, getSerializedInteractiveState: function () { return this.getInteractiveAnimationTargets(Reveal.getCurrentSlide(), !0).map(function (t) { var e = this.getParentBlock(t); return e ? e.getAttribute("data-block-id") : null }, this).filter(function (t) { return "string" == typeof t }).join(",") }, setSerializedInteractiveState: function (t) { var e = this.getInteractiveAnimationTargets(Reveal.getCurrentSlide()); if (e.length && "string" == typeof t) { t = t.split(","); var r = [], n = []; e.forEach(function (e) { var i = this.getParentBlock(e), a = i ? i.getAttribute("data-block-id") : null; "string" == typeof a && -1 !== t.indexOf(a) ? n.push(e) : r.push(e) }, this), this.reset(r), this.run(n, !0) } }, getParentBlock: function (t) { for (var e = t.parentNode; e && !e.hasAttribute("data-block-id");)e = e.parentNode; return e }, onSlideChanged: function (t) { this.animationsEnabled && (t.previousSlide && (this.reset(t.previousSlide), this.unbind()), t.currentSlide && (this.run(t.currentSlide), this.bind(t.currentSlide))) }, onTriggerTouchStart: function (t, e) { e.preventDefault(), this.toggle(t, !0), this.interactiveAnimationChanged.dispatch() }, onTriggerClick: function (t) { Reveal.isAutoSliding() && Reveal.getConfig().autoSlideStoppable && Reveal.toggleAutoSlide(!1), this.toggle(t, !0), this.interactiveAnimationChanged.dispatch() }, onTriggerMouseOver: function (t) { this.run(t, !0), this.interactiveAnimationChanged.dispatch() }, onTriggerMouseOut: function (t) { this.reset(t), this.interactiveAnimationChanged.dispatch() } }, SL("deck").AutoAnimate = { ANIMATABLE_BLOCK_CONTENT_STYLES: ["color", "background-color", "padding", "font-size", "line-height", "letter-spacing", "border-width", "border-color", "border-radius"], init: function () { this.onAutoAnimate = this.onAutoAnimate.bind(this), Reveal.addEventListener("autoanimate", this.onAutoAnimate) }, matcher: function (t, e) { var r = []; return SL.deck.AutoAnimate.findMatchingElements(r, t, e, ".sl-block[data-name]", function (t) { return t.nodeName + ":::" + t.getAttribute("data-name") }), SL.deck.AutoAnimate.findMatchingElements(r, t, e, '.sl-block[data-block-type="text"], .sl-block[data-block-type="snippet"], .sl-block[data-block-type="table"]', function (t) { return t.getAttribute("data-block-type") + ":::" + t.innerText }), SL.deck.AutoAnimate.findMatchingElements(r, t, e, '.sl-block[data-block-type="image"], .sl-block[data-block-type="video"]', function (t) { var e = t.querySelector("img[src], video[src]"); return e ? e.getAttribute("src") : null }), SL.deck.AutoAnimate.findMatchingElements(r, t, e, '.sl-block[data-block-type="iframe"]', function (t) { var e = t.querySelector("iframe[src], iframe[data-src]"); return e ? e.getAttribute("src") || e.getAttribute("data-src") : null }), SL.deck.AutoAnimate.findMatchingElements(r, t, e, '.sl-block[data-block-type="code"]', function (t) { return t.querySelector(":not(.editing-ui) pre code").textContent }), SL.deck.AutoAnimate.findMatchingElements(r, t, e, '.sl-block[data-block-type="math"]', function (t) { return t.querySelector(".math-input").textContent }), SL.deck.AutoAnimate.expandBlockPairs(r) }, findMatchingElements: function (t, e, r, n, i, a) { var o = {}, s = {};[].slice.call(e.querySelectorAll(n)).forEach(function (t) { var e = i(t); "string" == typeof e && e.length && (o[e] = o[e] || [], o[e].push(t)) }), [].slice.call(r.querySelectorAll(n)).forEach(function (e) { var r, n = i(e); if (s[n] = s[n] || [], s[n].push(e), o[n]) { var l = s[n].length - 1, c = o[n].length - 1; o[n][l] ? (r = o[n][l], o[n][l] = null) : o[n][c] && (r = o[n][c], o[n][c] = null) } r && t.push({ from: r, to: e, options: a || { styles: [] } }) }) }, expandBlockPairs: function (t) { return t.forEach(function (e) { var r = e.from, n = e.to, i = r.querySelector(".sl-block-content"), a = n.querySelector(".sl-block-content"); i && a && SL.deck.AutoAnimate.expandBlockPair(t, e, r, n, i, a) }), t }, expandBlockPair: function (t, e, r, n, i, a) { var o = r.querySelector(".sl-block-style"), s = n.querySelector(".sl-block-style"); o && o.closest(".sl-block") !== r && (o = null), s && s.closest(".sl-block") !== n && (s = null); var l = r.getAttribute("data-block-type"), c = {}, u = {}; return n.dataset.autoAnimateDelay && (e.options.delay = parseFloat(n.dataset.autoAnimateDelay)), n.dataset.autoAnimateDuration && (e.options.duration = parseFloat(n.dataset.autoAnimateDuration)), n.dataset.autoAnimateEasing && (e.options.easing = n.dataset.autoAnimateEasing), c["z-index"] = { property: "z-index", from: a.style.zIndex, to: a.style.zIndex }, /text|snippet|table/i.test(l) ? c.width = { property: "width" } : /code|math/i.test(l) && (c.width = { property: "width" }, c.height = { property: "height" }), o && s ? (c.opacity = { property: "opacity", from: o.style.opacity || "1", to: s.style.opacity || "1" }, (o.style.transform || s.style.transform) && (c.width = { property: "width" }, c.height = { property: "height" }, t.push({ from: o, to: s, options: { translate: !1, scale: !1, styles: [{ property: "transform" }] } }))) : o ? (c.opacity = { property: "opacity", from: o.style.opacity || "1", to: "1" }, o.style.transform && (c.width = { property: "width" }, c.height = { property: "height" }, u.transform = { property: "transform", from: o.style.transform, to: "none" })) : s && (c.opacity = { property: "opacity", from: "1", to: s.style.opacity || "1" }, s.style.transform && (c.width = { property: "width" }, c.height = { property: "height" }, t.push({ from: document.createElement("div"), to: s, options: { translate: !1, scale: !1, styles: [{ property: "transform", from: "none" }] } }))), t.push({ from: i, to: a, options: { translate: !1, scale: !1, styles: SL.deck.AutoAnimate.ANIMATABLE_BLOCK_CONTENT_STYLES.concat(Object.keys(u).map(function (t) { return u[t] })) } }), /text/i.test(l) && this.expandTextBlock(t, e, r, n), /code/i.test(l) && this.expandCodeBlock(t, e, r, n), /shape/i.test(l) && this.expandShapeBlock(t, e, r, n), /line/i.test(l) && this.expandLineBlock(t, e, r, n), e.options.styles = e.options.styles.concat(Object.keys(c).map(function (t) { return c[t] })), (c.width || c.height) && (e.options.scale = !1), t }, expandTextBlock: function (t, e, r, n) { SL.deck.AutoAnimate.findMatchingElements(t, r, n, "li>p", function (t) { return t.innerText.trim() }, { scale: !1, translate: !1, measure: SL.deck.AutoAnimate.getLocalBlockMeasurements }), SL.deck.AutoAnimate.findMatchingElements(t, r, n, "ul li, ol li", function (t) { return Array.prototype.map.call(t.childNodes, function (t) { return /li|ul|ol/i.test(t.nodeName) ? "" : t.textContent.trim() }).join("") }, { scale: !1, measure: SL.deck.AutoAnimate.getLocalBlockMeasurements }), SL.deck.AutoAnimate.findMatchingElements(t, r, n, 'span[style*="font-size"]', function (t) { return t.textContent.trim() }, { scale: !1, translate: !1, styles: [{ property: "font-size" }] }) }, expandCodeBlock: function (t, e, r, n) { var i = n.querySelector("code.current-fragment"); i && (n = i), SL.deck.AutoAnimate.findMatchingElements(t, r, n, ".hljs-ln-code", function (t) { return t.textContent }, { scale: !1, styles: [], measure: SL.deck.AutoAnimate.getLocalBlockMeasurements }), SL.deck.AutoAnimate.findMatchingElements(t, r, n, ".hljs-ln-line[data-line-number]", function (t) { return t.getAttribute("data-line-number") }, { scale: !1, styles: ["width"], measure: SL.deck.AutoAnimate.getLocalBlockMeasurements }) }, expandShapeBlock: function (t, e, r, n) { var i = r.querySelector(".shape-element"), a = n.querySelector(".shape-element"), o = [{ property: "fill" }, { property: "stroke" }]; /rect/i.test(a.nodeName) && o.push({ property: "rx" }, { property: "ry" }), i && a && t.push({ from: i, to: a, options: { translate: !1, scale: !1, styles: o } }) }, expandLineBlock: function (t, e, r, n) { var i = r.querySelector(".line-element"), a = n.querySelector(".line-element"); i && a && t.push({ from: i, to: a, options: { translate: !1, scale: !1, styles: [{ property: "stroke" }, { property: "stroke-width" }] } }) }, getLocalBlockMeasurements: function (t) { var e = Reveal.getScale(); return { x: Math.round(t.offsetLeft * e * 100) / 100, y: Math.round(t.offsetTop * e * 100) / 100, width: Math.round(t.offsetWidth * e * 100) / 100, height: Math.round(t.offsetHeight * e * 100) / 100 } }, onAutoAnimate: function (t) { var e = []; Array.prototype.forEach.call(t.toSlide.querySelectorAll('.sl-block[data-auto-animate-target^="unmatched"]'), function (t) { var r = t.getAttribute("data-block-id"), n = t.querySelector(".sl-block-content"); n && e.push('.reveal [data-auto-animate-target="unmatched"][data-block-id="' + r + '"] { z-index: ' + n.style.zIndex + "; }") }), e.length && (t.sheet.innerHTML += e.join("")) } }, SL("deck").Controller = { MODE_VIEWING: "viewing", MODE_EDITING: "editing", MODE_PRINTING: "printing", init: function (t) { this.options = t || {}, this.options.mode = "string" == typeof this.options.mode ? this.options.mode : SL.deck.Controller.MODE_VIEWING, this.mode = null, SL.deck.Media.init(this.options), this.options.mode === SL.deck.Controller.MODE_VIEWING && SL.deck.util.formatIframes(), Reveal.isReady() ? this.setup() : Reveal.addEventListener("ready", this.setup.bind(this)) }, setup: function () { SL.deck.Animation.init(), SL.deck.AutoAnimate.init(), this.setMode(this.options.mode) }, setMode: function (t) { this.mode = t, this.mode === SL.deck.Controller.MODE_EDITING || this.mode === SL.deck.Controller.MODE_PRINTING ? SL.deck.Animation.disableAnimations() : SL.deck.Animation.enableAnimations() } }, SL("deck").Media = { init: function (t) { this.options = t, this.supportsCDN() && (this.switchToCDN(".reveal img[src], .reveal video[src]", "src"), this.switchToCDN(".reveal img[data-src], .reveal video[data-src]", "data-src"), this.switchToCDN(".reveal video[poster]", "poster"), this.switchToCDN(".reveal [data-background-video]", "data-background-video"), this.switchToCDN(".reveal [data-background-image]", "data-background-image")) }, supportsCDN: function () { return SL.config && this.options.mode === SL.deck.Controller.MODE_VIEWING && !document.documentElement.classList.contains("sl-editor") }, switchToCDN: function (t, e) { document.querySelectorAll(t).forEach(function (t) { var r = t.getAttribute(e); 0 === r.lastIndexOf(SL.config.S3_HOST, 0) && t.setAttribute(e, r.replace(SL.config.S3_HOST, SL.config.CDN_HOST)) }, this) } }, SL("deck").util = { extend: function (t) { return Array.prototype.forEach.call(arguments, function (e) { for (var r in e) t[r] = e[r] }, t), t }, renderMath: function (t) { SL.deck.util.renderMathBlocks(t), SL.deck.util.renderInlineMath(t) }, renderMathBlocks: function (t) { t || (t = document.querySelector(".reveal .slides")), window.katex && "function" == typeof window.katex.render && [].slice.call(t.querySelectorAll('.sl-block[data-block-type="math"]')).forEach(function (t) { var e = t.querySelector(".math-input"), r = t.querySelector(".math-output"); e && !r && ((r = document.createElement("div")).className = "math-output", e.parentNode.insertBefore(r, e)), e && r && katex.render(e.innerText, r) }) }, renderInlineMath: function (t) { t || (t = document.querySelector(".reveal .slides")), "function" == typeof window.renderMathInElement && SL.deck.util.containsInlineMath(t) && renderMathInElement(t, { delimiters: [{ left: "$$", right: "$$", display: !0 }, { left: "\\[", right: "\\]", display: !0 }, { left: "\\(", right: "\\)", display: !1 }] }) }, containsInlineMath: function (t) { return !!t && /\$\$.+\$\$|\\\[.+\\\]|\\\(.+\\\)/g.test(t.innerHTML) }, injectCodeCopyButtons: function () { var t = [].slice.call(document.querySelectorAll('.sl-block[data-block-type="code"] .sl-block-content:not(.has-copy-button)')); t.length && (this.copyButton = document.createElement("button"), this.copyButton.className = "copy-code-to-clipboard", this.copyButton.textContent = "Copy", this.copyButton.addEventListener("click", function () { this.copyButton.hasAttribute("data-code-to-copy") && (this.copyButton.textContent = "Copied!", this.copyButton.classList.add("bounce"), SL.deck.util.copyToClipboard(this.copyButton.getAttribute("data-code-to-copy")), setTimeout(function () { this.copyButton.textContent = "Copy", this.copyButton.classList.remove("bounce") }.bind(this), 1500)) }.bind(this)), t.forEach(function (t) { var e, r = t.querySelector("pre code"); r && (e = r.hasAttribute("data-plaintext") ? r.getAttribute("data-plaintext") : r.textContent), e && t.addEventListener("mouseenter", function (t) { this.copyButton.setAttribute("data-code-to-copy", e), t.currentTarget.classList.add("has-copy-button"), t.currentTarget.appendChild(this.copyButton) }.bind(this)) }, this)) }, hasNotes: function () { if (SLConfig.deck && SLConfig.deck.notes) for (var t in SLConfig.deck.notes) return !0; return document.querySelectorAll(".reveal .slides section[data-notes]").length > 0 }, injectNotes: function () { SLConfig.deck && SLConfig.deck.notes && [].forEach.call(document.querySelectorAll(".reveal .slides section"), function (t) { var e = SLConfig.deck.notes[t.getAttribute("data-id")]; e && "string" == typeof e && t.setAttribute("data-notes", e) }) }, injectTranslationRules: function () { [].slice.call(document.querySelectorAll(".sl-block .katex")).forEach(function (t) { t.classList.add("notranslate") }) }, formatIframes: function () { [].slice.call(document.querySelectorAll(".sl-block iframe[data-src]")).forEach(this.formatIframe.bind(this)) }, formatIframe: function (t) { t.setAttribute("allowfullscreen", ""), t.setAttribute("allow", "fullscreen"); var e = t.getAttribute("src") || t.getAttribute("data-src"); "string" != typeof e || /\.pdf$/i.test(e) ? t.removeAttribute("sandbox") : t.setAttribute("sandbox", "allow-forms allow-scripts allow-popups allow-same-origin allow-pointer-lock allow-presentation") }, copyToClipboard: function (t) { var e = document.createElement("textarea"); e.value = t, document.body.appendChild(e), e.select(); var r = document.execCommand("copy"); return document.body.removeChild(e), r } }; diff --git a/frontend/modern.config.ts b/frontend/modern.config.ts new file mode 100644 index 0000000..73dfd80 --- /dev/null +++ b/frontend/modern.config.ts @@ -0,0 +1,25 @@ +import { URL } from 'url'; +import { appTools, defineConfig } from '@modern-js/app-tools'; + +const apiBase = new URL(process.env.API_BASE || 'http://localhost:8000'); + +// https://modernjs.dev/en/configure/app/usage +export default defineConfig({ + bff: { + proxy: { + '/api': { + target: apiBase.origin, + changeOrigin: true, + pathRewrite: { '^/api': apiBase.pathname }, + }, + }, + }, + runtime: { + router: true, + }, + plugins: [ + appTools({ + bundler: 'experimental-rspack', + }), + ], +}); diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..592c83a --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,66 @@ +{ + "name": "agent-coord-frontend", + "version": "0.0.1", + "scripts": { + "reset": "npx rimraf ./**/node_modules", + "dev": "modern dev", + "build": "modern build", + "start": "modern start", + "serve": "modern serve", + "new": "modern new", + "lint": "modern lint", + "prepare": "husky install", + "upgrade": "modern upgrade" + }, + "engines": { + "node": ">=16.18.1" + }, + "lint-staged": { + "*.{js,jsx,ts,tsx,mjs,cjs}": [ + "node --max_old_space_size=8192 ./node_modules/eslint/bin/eslint.js --fix --color --cache --quiet" + ] + }, + "eslintIgnore": [ + "node_modules/", + "dist/" + ], + "dependencies": { + "@emotion/react": "^11.11.3", + "@emotion/styled": "^11.11.0", + "@modern-js/runtime": "2.46.1", + "@mui/icons-material": "^5.15.6", + "@mui/material": "^5.15.6", + "@sttot/api-hooks": "^1.2.5", + "d3": "^7.8.5", + "localforage": "^1.10.0", + "lodash": "^4.17.21", + "mobx": "^6.12.0", + "mobx-react-lite": "^4.0.6", + "re-resizable": "^6.9.11", + "react": "~18.2.0", + "react-dom": "~18.2.0", + "react-markdown": "^9.0.1", + "react-rnd": "^10.4.1", + "rehype-highlight": "^7.0.0", + "rehype-katex": "^7.0.0", + "remark-gfm": "^4.0.0", + "remark-math": "^6.0.0" + }, + "devDependencies": { + "@modern-js-app/eslint-config": "2.46.1", + "@modern-js/app-tools": "2.46.1", + "@modern-js/eslint-config": "2.46.1", + "@modern-js/tsconfig": "2.46.1", + "@types/d3": "^7.4.3", + "@types/jest": "~29.2.4", + "@types/lodash": "^4.14.202", + "@types/node": "~16.11.7", + "@types/react": "~18.0.26", + "@types/react-dom": "~18.0.10", + "husky": "~8.0.1", + "lint-staged": "~13.1.0", + "prettier": "~2.8.1", + "rimraf": "~3.0.2", + "typescript": "~5.0.4" + } +} diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml new file mode 100644 index 0000000..67e77d8 --- /dev/null +++ b/frontend/pnpm-lock.yaml @@ -0,0 +1,11592 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@emotion/react': + specifier: ^11.11.3 + version: 11.11.3(@types/react@18.0.38)(react@18.2.0) + '@emotion/styled': + specifier: ^11.11.0 + version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.0.38)(react@18.2.0) + '@modern-js/runtime': + specifier: 2.46.1 + version: 2.46.1(@types/react-dom@18.0.11)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0)(webpack@5.90.0) + '@mui/icons-material': + specifier: ^5.15.6 + version: 5.15.6(@mui/material@5.15.6)(@types/react@18.0.38)(react@18.2.0) + '@mui/material': + specifier: ^5.15.6 + version: 5.15.6(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + '@sttot/api-hooks': + specifier: ^1.2.5 + version: 1.2.5(axios@1.6.5)(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0) + d3: + specifier: ^7.8.5 + version: 7.8.5 + localforage: + specifier: ^1.10.0 + version: 1.10.0 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + mobx: + specifier: ^6.12.0 + version: 6.12.0 + mobx-react-lite: + specifier: ^4.0.6 + version: 4.0.6(mobx@6.12.0)(react-dom@18.2.0)(react@18.2.0) + re-resizable: + specifier: ^6.9.11 + version: 6.9.11(react-dom@18.2.0)(react@18.2.0) + react: + specifier: ~18.2.0 + version: 18.2.0 + react-dom: + specifier: ~18.2.0 + version: 18.2.0(react@18.2.0) + react-markdown: + specifier: ^9.0.1 + version: 9.0.1(@types/react@18.0.38)(react@18.2.0) + react-rnd: + specifier: ^10.4.1 + version: 10.4.1(react-dom@18.2.0)(react@18.2.0) + rehype-highlight: + specifier: ^7.0.0 + version: 7.0.0 + rehype-katex: + specifier: ^7.0.0 + version: 7.0.0 + remark-gfm: + specifier: ^4.0.0 + version: 4.0.0 + remark-math: + specifier: ^6.0.0 + version: 6.0.0 + +devDependencies: + '@modern-js-app/eslint-config': + specifier: 2.46.1 + version: 2.46.1(@rsbuild/core@0.3.7)(typescript@5.0.4) + '@modern-js/app-tools': + specifier: 2.46.1 + version: 2.46.1(@rsbuild/core@0.3.7)(postcss@8.4.33)(react-dom@18.2.0)(react@18.2.0)(styled-components@6.1.8)(typescript@5.0.4) + '@modern-js/eslint-config': + specifier: 2.46.1 + version: 2.46.1(@rsbuild/core@0.3.7)(typescript@5.0.4) + '@modern-js/tsconfig': + specifier: 2.46.1 + version: 2.46.1 + '@types/d3': + specifier: ^7.4.3 + version: 7.4.3 + '@types/jest': + specifier: ~29.2.4 + version: 29.2.6 + '@types/lodash': + specifier: ^4.14.202 + version: 4.14.202 + '@types/node': + specifier: ~16.11.7 + version: 16.11.68 + '@types/react': + specifier: ~18.0.26 + version: 18.0.38 + '@types/react-dom': + specifier: ~18.0.10 + version: 18.0.11 + husky: + specifier: ~8.0.1 + version: 8.0.3 + lint-staged: + specifier: ~13.1.0 + version: 13.1.4 + prettier: + specifier: ~2.8.1 + version: 2.8.8 + rimraf: + specifier: ~3.0.2 + version: 3.0.2 + typescript: + specifier: ~5.0.4 + version: 5.0.4 + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + + /@babel/core@7.23.7: + resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helpers': 7.23.8 + '@babel/parser': 7.23.6 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.7(supports-color@5.5.0) + '@babel/types': 7.23.6 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /@babel/eslint-parser@7.23.3(@babel/core@7.23.7)(eslint@8.56.0): + resolution: {integrity: sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.23.7 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.56.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + dev: true + + /@babel/eslint-plugin@7.23.5(@babel/eslint-parser@7.23.3)(eslint@8.56.0): + resolution: {integrity: sha512-03+E/58Hoo/ui69gR+beFdGpplpoVK0BSIdke2iw4/Bz7eGN0ssRenNlnU4nmbkowNQOPCStKSwFr8H6DiY49g==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/eslint-parser': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/eslint-parser': 7.23.3(@babel/core@7.23.7)(eslint@8.56.0) + eslint: 8.56.0 + eslint-rule-composer: 0.3.0 + dev: true + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + jsesc: 2.5.2 + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + /@babel/helper-create-class-features-plugin@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.7): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: true + + /@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.7): + resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4(supports-color@5.5.0) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.7): + resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4(supports-color@5.5.0) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.7): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + dev: true + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.7): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + dev: true + + /@babel/helpers@7.23.8: + resolution: {integrity: sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.7(supports-color@5.5.0) + '@babel/types': 7.23.6 + transitivePeerDependencies: + - supports-color + + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.6 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7) + dev: true + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-proposal-decorators@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-b1s5JyeMvqj7d9m9KhJNHKc18gEJiSyVzVX3bwbiPalQBQpuvfPh6lA9F7Kk/dWH0TIiXRpB9yicwijY6buPng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.7) + dev: true + + /@babel/plugin-proposal-export-default-from@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.7) + dev: true + + /@babel/plugin-proposal-partial-application@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-+MdvZnaDNsMZ3pl8rxlr1az5XndJwaS4jXQGCg82qq2SzLlTS29gp21Uw8JobXAe4h9lTx9PJX6GpOsFuMn0mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-partial-application': 7.23.3(@babel/core@7.23.7) + dev: true + + /@babel/plugin-proposal-pipeline-operator@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-8TDc1vEx+YRaGiF8J8w/XcADaBuqc0RnokaMRrHdX7Vx74WhmxPU8wtM/OHSXvgw45P9tlHS/l0YDpNXwLghmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-pipeline-operator': 7.23.3(@babel/core@7.23.7) + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.7): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.7): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.7): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-export-default-from@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.7): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.7): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.7): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.7): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.7): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.7): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.7): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.7): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.7): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-partial-application@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-KVHN7dEaQIXkIoHUQtMUIVtlaavL+fygQWxB6i10YuboMdCpEAlcufiXUgjQ1JRSniVD49AiaxqHnKMcq53JEQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-pipeline-operator@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-xypNE8ptJ5buVtgAAOZzN3gIV6McZfMA27GMhy70a8auQIxbLW9g/uKsaoWqUHdPJgpsXYjVD+5oDyS6pRvraA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.7): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.7): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.7): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-async-generator-functions@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.7): + resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.7): + resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.7): + resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: true + + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.15 + dev: true + + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.7): + resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.7): + resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.7): + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.7): + resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.7): + resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.7): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.7): + resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.7): + resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.7): + resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.7 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.7): + resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.7): + resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.7): + resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.7): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.7): + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) + '@babel/types': 7.23.6 + dev: true + + /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + dev: true + + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-runtime@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.7) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.7) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.7): + resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.7) + dev: true + + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/preset-env@7.23.8(@babel/core@7.23.7): + resolution: {integrity: sha512-lFlpmkApLkEP6woIKprO6DO60RImpatTQKtz4sUcDjVcK8M8mQ4sZsuxaTMNOZf0sqAq/ReYW1ZBHnOQwKpLWA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.7 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.7) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.7) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-async-generator-functions': 7.23.7(@babel/core@7.23.7) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.7) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.7) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.7) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.7) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.7) + babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.7) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.7) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.7) + core-js-compat: 3.35.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.7): + 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 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/types': 7.23.6 + esutils: 2.0.3 + dev: true + + /@babel/preset-react@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.7) + '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.7) + dev: true + + /@babel/preset-typescript@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.7) + dev: true + + /@babel/register@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.21 + dev: true + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true + + /@babel/runtime@7.23.8: + resolution: {integrity: sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + + /@babel/traverse@7.23.7(supports-color@5.5.0): + resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + debug: 4.3.4(supports-color@5.5.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/types@7.23.6: + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + /@csstools/cascade-layer-name-parser@1.0.7(@csstools/css-parser-algorithms@2.5.0)(@csstools/css-tokenizer@2.2.3): + resolution: {integrity: sha512-9J4aMRJ7A2WRjaRLvsMeWrL69FmEuijtiW1XlK/sG+V0UJiHVYUyvj9mY4WAXfU/hGIiGOgL8e0jJcRyaZTjDQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.5.0 + '@csstools/css-tokenizer': ^2.2.3 + dependencies: + '@csstools/css-parser-algorithms': 2.5.0(@csstools/css-tokenizer@2.2.3) + '@csstools/css-tokenizer': 2.2.3 + dev: true + + /@csstools/css-parser-algorithms@2.5.0(@csstools/css-tokenizer@2.2.3): + resolution: {integrity: sha512-abypo6m9re3clXA00eu5syw+oaPHbJTPapu9C4pzNsJ4hdZDzushT50Zhu+iIYXgEe1CxnRMn7ngsbV+MLrlpQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-tokenizer': ^2.2.3 + dependencies: + '@csstools/css-tokenizer': 2.2.3 + dev: true + + /@csstools/css-tokenizer@2.2.3: + resolution: {integrity: sha512-pp//EvZ9dUmGuGtG1p+n17gTHEOqu9jO+FiCUjNN3BDmyhdA2Jq9QsVeR7K8/2QCK17HSsioPlTW9ZkzoWb3Lg==} + engines: {node: ^14 || ^16 || >=18} + dev: true + + /@csstools/selector-specificity@3.0.1(postcss-selector-parser@6.0.15): + resolution: {integrity: sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.13 + dependencies: + postcss-selector-parser: 6.0.15 + dev: true + + /@emotion/babel-plugin@11.11.0: + resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + dependencies: + '@babel/helper-module-imports': 7.22.15 + '@babel/runtime': 7.23.8 + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/serialize': 1.1.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + dev: false + + /@emotion/cache@11.11.0: + resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + dependencies: + '@emotion/memoize': 0.8.1 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + stylis: 4.2.0 + dev: false + + /@emotion/hash@0.9.1: + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + dev: false + + /@emotion/is-prop-valid@1.2.1: + resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} + dependencies: + '@emotion/memoize': 0.8.1 + + /@emotion/memoize@0.8.1: + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + + /@emotion/react@11.11.3(@types/react@18.0.38)(react@18.2.0): + resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@emotion/babel-plugin': 11.11.0 + '@emotion/cache': 11.11.0 + '@emotion/serialize': 1.1.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + '@types/react': 18.0.38 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + dev: false + + /@emotion/serialize@1.1.3: + resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==} + dependencies: + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/unitless': 0.8.1 + '@emotion/utils': 1.2.1 + csstype: 3.1.3 + dev: false + + /@emotion/sheet@1.2.2: + resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} + dev: false + + /@emotion/styled@11.11.0(@emotion/react@11.11.3)(@types/react@18.0.38)(react@18.2.0): + resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@emotion/babel-plugin': 11.11.0 + '@emotion/is-prop-valid': 1.2.1 + '@emotion/react': 11.11.3(@types/react@18.0.38)(react@18.2.0) + '@emotion/serialize': 1.1.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + '@types/react': 18.0.38 + react: 18.2.0 + dev: false + + /@emotion/stylis@0.8.5: + resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + dev: false + + /@emotion/unitless@0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + dev: false + + /@emotion/unitless@0.8.0: + resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} + dev: true + + /@emotion/unitless@0.8.1: + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + dev: false + + /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0): + resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 18.2.0 + dev: false + + /@emotion/utils@1.2.1: + resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + dev: false + + /@emotion/weak-memoize@0.3.1: + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + dev: false + + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.56.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@5.5.0) + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@floating-ui/core@1.5.3: + resolution: {integrity: sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==} + dependencies: + '@floating-ui/utils': 0.2.1 + dev: false + + /@floating-ui/dom@1.5.4: + resolution: {integrity: sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==} + dependencies: + '@floating-ui/core': 1.5.3 + '@floating-ui/utils': 0.2.1 + dev: false + + /@floating-ui/react-dom@2.0.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-IB8aCRFxr8nFkdYZgH+Otd9EVQPJoynxeFRGTB8voPoZMRWo8XjYuCRgpI1btvuKY69XMiLnW+ym7zoBHM90Rw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.5.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@floating-ui/utils@0.2.1: + resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + dev: false + + /@formily/core@2.3.1: + resolution: {integrity: sha512-dCBPnmzDpQKdN4ddxi98VbdurpbH6SHb12S9y9SnzW/QTslZnkvrvBhTlucWB5XqXJfwcyCzpZIn/GdMAbPpZg==} + engines: {npm: '>=3.0.0'} + dependencies: + '@formily/reactive': 2.3.1 + '@formily/shared': 2.3.1 + '@formily/validator': 2.3.1 + dev: true + + /@formily/json-schema@2.3.1(typescript@5.0.4): + resolution: {integrity: sha512-LcJmU1BOYGdoip+Q9YAxHdrpjdl781WFSg0fDTD9/0A7c3xUXWwxdCYZIN0cvoXi2qq8Khyzba0pizl3YSkf0A==} + engines: {npm: '>=3.0.0'} + peerDependencies: + typescript: '>4.1.5' + dependencies: + '@formily/core': 2.3.1 + '@formily/reactive': 2.3.1 + '@formily/shared': 2.3.1 + typescript: 5.0.4 + dev: true + + /@formily/path@2.3.1: + resolution: {integrity: sha512-BVo89K5nAFntx02+EV696If1b1bVIm5I1tRPtVyCVIjBIfAgga5hK4k80GZ01Dlk3tpReHpiIbZVg2DNVfw7jA==} + engines: {npm: '>=3.0.0'} + dev: true + + /@formily/reactive@2.3.1: + resolution: {integrity: sha512-IVHOZW7VBc+Gq9eB/gPldi7pEC3wDonDb99KvHlS8SmzsY6+a/iAdrw2mDagXXUficsC2gT4y4EcJ2f1ALMKtQ==} + engines: {npm: '>=3.0.0'} + dev: true + + /@formily/shared@2.3.1: + resolution: {integrity: sha512-qnlh6jnnIbUjcK0rWF9bm6AxgyxuBgURrzU5vMSxTNAN86P7K9+mSc/28qPsdNP9flEA2/clSexP5WEJAGYVgw==} + engines: {npm: '>=3.0.0'} + dependencies: + '@formily/path': 2.3.1 + camel-case: 4.1.2 + lower-case: 2.0.2 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + upper-case: 2.0.2 + dev: true + + /@formily/validator@2.3.1: + resolution: {integrity: sha512-hM/IDvU/bachpS3fOUe02C9f5EytlNu6OJzDy+AyhWBmZYIVd6QVvPtjV8nyLOXIBJM9N4sxnGSliYQNAPjR1w==} + engines: {npm: '>=3.0.0'} + dependencies: + '@formily/shared': 2.3.1 + dev: true + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.3.4(supports-color@5.5.0) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 16.11.68 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.22 + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.22: + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@loadable/babel-plugin@5.15.3(@babel/core@7.23.7): + resolution: {integrity: sha512-kwEsPxCk8vnwbTfbA4lHqT5t0u0czCQTnCcmOaTjxT5lCn7yZCBTBa9D7lHs+MLM2WyPsZlee3Qh0TTkMMi5jg==} + engines: {node: '>=8'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) + dev: false + + /@loadable/component@5.15.3(react@18.2.0): + resolution: {integrity: sha512-VOgYgCABn6+/7aGIpg7m0Ruj34tGetaJzt4bQ345FwEovDQZ+dua+NWLmuJKv8rWZyxOUSfoJkmGnzyDXH2BAQ==} + engines: {node: '>=8'} + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.23.8 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + react-is: 16.13.1 + dev: false + + /@loadable/server@5.15.3(@loadable/component@5.15.3)(react@18.2.0): + resolution: {integrity: sha512-Bm/BGe+RlChuHDKNNXpQOi4AJ0cKVuSLI+J8U0Q06zTIfT0S1RLoy85qs5RXm3cLIfefygL8+9bcYFgeWcoM8A==} + engines: {node: '>=8'} + peerDependencies: + '@loadable/component': ^5.0.1 + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@loadable/component': 5.15.3(react@18.2.0) + lodash: 4.17.21 + react: 18.2.0 + dev: false + + /@loadable/webpack-plugin@5.15.2(webpack@5.90.0): + resolution: {integrity: sha512-+o87jPHn3E8sqW0aBA+qwKuG8JyIfMGdz3zECv0t/JF0KHhxXtzIlTiqzlIYc5ZpFs/vKSQfjzGIR5tPJjoXDw==} + engines: {node: '>=8'} + peerDependencies: + webpack: '>=4.6.0' + dependencies: + make-dir: 3.1.0 + webpack: 5.90.0 + dev: false + + /@modern-js-app/eslint-config@2.46.1(@rsbuild/core@0.3.7)(typescript@5.0.4): + resolution: {integrity: sha512-TxU47cr1IGC/jCW85tlkIgwRdmogQtIZKm0CzY2gtjg9GHbpSZ/UZsQV4UKeaoYXH5dILLgMRGs8BFtQq8LUvw==} + peerDependencies: + typescript: ^4 || ^5 + dependencies: + '@babel/core': 7.23.7 + '@babel/eslint-parser': 7.23.3(@babel/core@7.23.7)(eslint@8.56.0) + '@babel/eslint-plugin': 7.23.5(@babel/eslint-parser@7.23.3)(eslint@8.56.0) + '@rsbuild/babel-preset': 0.3.4(@rsbuild/core@0.3.7) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.0.4) + eslint: 8.56.0 + eslint-config-prettier: 8.10.0(eslint@8.56.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.56.0) + eslint-plugin-filenames: 1.3.2(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint@8.56.0) + eslint-plugin-node: 11.1.0(eslint@8.56.0) + eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.56.0)(prettier@2.8.8) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + eslint-plugin-react: 7.33.2(eslint@8.56.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) + prettier: 2.8.8 + typescript: 5.0.4 + transitivePeerDependencies: + - '@rsbuild/core' + - '@swc/helpers' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /@modern-js-reduck/plugin-auto-actions@1.1.11(@modern-js-reduck/store@1.1.11): + resolution: {integrity: sha512-Xn13uPuFh+UnV3BC6tO4N1sC5+aITX2zj5QDwU0wJgc/5zBz9fcElfQ8B+kvQe0/0VlY0ENArmFIl2h1N5TIkQ==} + peerDependencies: + '@modern-js-reduck/store': ^1.1.11 + dependencies: + '@modern-js-reduck/store': 1.1.11 + '@swc/helpers': 0.5.1 + dev: false + + /@modern-js-reduck/plugin-devtools@1.1.11(@modern-js-reduck/store@1.1.11): + resolution: {integrity: sha512-PEyJ1/K2wKtXV/JtaFGBC2fUGeY6hjnK/ZXt6p9O2HG3WOub3l76uYpR6B8QCu00+cIWph4MspgO9lHMAuQA8Q==} + peerDependencies: + '@modern-js-reduck/store': ^1.1.11 + dependencies: + '@modern-js-reduck/store': 1.1.11 + '@redux-devtools/extension': 3.3.0(redux@4.2.1) + '@swc/helpers': 0.5.1 + redux: 4.2.1 + dev: false + + /@modern-js-reduck/plugin-effects@1.1.11(@modern-js-reduck/store@1.1.11): + resolution: {integrity: sha512-koc8ObEWakI9um6qARbMtMOwith/lc+D2uKKhOAvMfWjKC0gER/SpTScWstweAzcvQCtwftynEOpeQyJC2FARA==} + peerDependencies: + '@modern-js-reduck/store': ^1.1.11 + dependencies: + '@modern-js-reduck/store': 1.1.11 + '@swc/helpers': 0.5.1 + redux: 4.2.1 + redux-promise-middleware: 6.2.0(redux@4.2.1) + dev: false + + /@modern-js-reduck/plugin-immutable@1.1.11(@modern-js-reduck/store@1.1.11): + resolution: {integrity: sha512-52gdosxffpmq+FhSKjJqNtnW/wtX6iy/Zq2pn28eyvGCARREVT3E28qZX0kCUH4L5ij2N7QJoQOSovYuXwOlRw==} + peerDependencies: + '@modern-js-reduck/store': ^1.1.11 + dependencies: + '@modern-js-reduck/store': 1.1.11 + '@swc/helpers': 0.5.1 + immer: 9.0.21 + dev: false + + /@modern-js-reduck/react@1.1.11(@types/react-dom@18.0.11)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6ViI1wyrkSIAkwpKfK6bC8dnzmyfp2FTWL2AAI2PrIYNAhd+jMuTM4ik6xDHncQmTny3+rAH2B8FfsUIVm7fxQ==} + peerDependencies: + '@types/react': ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@modern-js-reduck/plugin-auto-actions': 1.1.11(@modern-js-reduck/store@1.1.11) + '@modern-js-reduck/plugin-devtools': 1.1.11(@modern-js-reduck/store@1.1.11) + '@modern-js-reduck/plugin-effects': 1.1.11(@modern-js-reduck/store@1.1.11) + '@modern-js-reduck/plugin-immutable': 1.1.11(@modern-js-reduck/store@1.1.11) + '@modern-js-reduck/store': 1.1.11 + '@swc/helpers': 0.5.1 + '@types/react': 18.0.38 + '@types/react-dom': 18.0.11 + hoist-non-react-statics: 3.3.2 + invariant: 2.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@modern-js-reduck/store@1.1.11: + resolution: {integrity: sha512-fvUeswe1pvF9IjC39/KgtQGV4FbwjOmVs2Fk4uxrxXEa7209qRJlDfqIGr5KsnXVporXg0oiDqwcg1xsEljw/A==} + dependencies: + '@swc/helpers': 0.5.1 + redux: 4.2.1 + dev: false + + /@modern-js/app-tools@2.46.1(@rsbuild/core@0.3.7)(postcss@8.4.33)(react-dom@18.2.0)(react@18.2.0)(styled-components@6.1.8)(typescript@5.0.4): + resolution: {integrity: sha512-s3+5bqWrEV4AM8G3K/TPdGRxjVEqYLhZEJdBEQPFtGKVSRuSpyYqM8bjp1GXM7Doyqjc96tBsU7SUTAyMSOoXw==} + engines: {node: '>=14.17.6'} + hasBin: true + dependencies: + '@babel/parser': 7.23.6 + '@babel/traverse': 7.23.7(supports-color@5.5.0) + '@babel/types': 7.23.6 + '@modern-js/core': 2.46.1 + '@modern-js/new-action': 2.46.1(typescript@5.0.4) + '@modern-js/node-bundle-require': 2.46.1 + '@modern-js/plugin': 2.46.1 + '@modern-js/plugin-data-loader': 2.46.1(react-dom@18.2.0)(react@18.2.0) + '@modern-js/plugin-i18n': 2.46.1 + '@modern-js/plugin-lint': 2.46.1 + '@modern-js/prod-server': 2.46.1(react-dom@18.2.0)(react@18.2.0) + '@modern-js/server': 2.46.1(@babel/traverse@7.23.7)(@rsbuild/core@0.3.7)(react-dom@18.2.0)(react@18.2.0) + '@modern-js/server-core': 2.46.1 + '@modern-js/server-utils': 2.46.1(@babel/traverse@7.23.7)(@rsbuild/core@0.3.7) + '@modern-js/types': 2.46.1 + '@modern-js/uni-builder': 2.46.1(@babel/traverse@7.23.7)(esbuild@0.17.19)(postcss@8.4.33)(react-dom@18.2.0)(react@18.2.0)(styled-components@6.1.8)(typescript@5.0.4) + '@modern-js/upgrade': 2.46.1 + '@modern-js/utils': 2.46.1 + '@rsbuild/plugin-esbuild': 0.3.4(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + '@rsbuild/plugin-node-polyfill': 0.3.4(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + '@swc/helpers': 0.5.3 + es-module-lexer: 1.4.1 + esbuild: 0.17.19 + transitivePeerDependencies: + - '@parcel/css' + - '@rsbuild/core' + - '@swc/core' + - '@swc/css' + - '@types/express' + - '@types/webpack' + - bufferutil + - clean-css + - csso + - debug + - devcert + - lightningcss + - postcss + - react + - react-dom + - sockjs-client + - styled-components + - supports-color + - ts-node + - tsconfig-paths + - type-fest + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /@modern-js/babel-compiler@2.46.1: + resolution: {integrity: sha512-JaEmVDOGFjn7wzDFRnKC8YWsmQtf5lxTWjkPHF1pZMVfnwbEo0wXeq1/ZqPtGzSO+vw6afhI0LZbB+2tF1paMw==} + dependencies: + '@babel/core': 7.23.7 + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@modern-js/babel-plugin-module-resolver@2.46.1: + resolution: {integrity: sha512-YyxgrHAodXN6KQP13SpqbTg2Sv8LSTv3LujttUBhm829e4jU/8uK+dIQYFh/cQMCiUyEL2vlHWJW1xPsEdkfqg==} + dependencies: + '@swc/helpers': 0.5.3 + glob: 8.1.0 + pkg-up: 3.1.0 + reselect: 4.1.8 + resolve: 1.22.8 + dev: true + + /@modern-js/codesmith-formily@2.3.3(@modern-js/codesmith@2.3.3)(typescript@5.0.4): + resolution: {integrity: sha512-SIJRGYgr0i5PXSK7ZaoAZmAmoKrF+LYB3vV4ijKaESnl8pJRUqwPuxLOvQGIiFb/s6E7VTCrGpiQ7TUlUljS1g==} + peerDependencies: + '@modern-js/codesmith': ^2.3.3 + dependencies: + '@formily/json-schema': 2.3.1(typescript@5.0.4) + '@formily/validator': 2.3.1 + '@modern-js/codesmith': 2.3.3 + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.1 + inquirer: 8.2.6 + transitivePeerDependencies: + - typescript + dev: true + + /@modern-js/codesmith@2.3.3: + resolution: {integrity: sha512-KBmkO05++5UB73DvNsoR9EhGMH1Z9jO9bq4nlDREwonc4XE3dJv6ojQlw9B9JRauG+FzNfp+i2cdqn4AWNPBbA==} + dependencies: + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.1 + axios: 1.6.5 + tar: 6.2.0 + transitivePeerDependencies: + - debug + dev: true + + /@modern-js/core@2.46.1: + resolution: {integrity: sha512-Seg5vQGiKUB3GwnqUx9Nc6HeXNR8rs/jtnzhx9AL+ZVNjw2zz9Sfc8jFP3vHIRXuXbvd4E12Rtl+5nlGVnZx2Q==} + dependencies: + '@modern-js/node-bundle-require': 2.46.1 + '@modern-js/plugin': 2.46.1 + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.3 + dev: true + + /@modern-js/eslint-config@2.46.1(@rsbuild/core@0.3.7)(typescript@5.0.4): + resolution: {integrity: sha512-cVudBdjvZVNSfrKMbVtEKQrmRVjQp4A3hmE7EIRKnBAFBByI6tXGmNKOubtUN5Zj6XPOnYUXqyT2JE/jhT2G2g==} + dependencies: + '@modern-js-app/eslint-config': 2.46.1(@rsbuild/core@0.3.7)(typescript@5.0.4) + transitivePeerDependencies: + - '@rsbuild/core' + - '@swc/helpers' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + - typescript + dev: true + + /@modern-js/generator-common@3.3.8(@modern-js/codesmith@2.3.3)(typescript@5.0.4): + resolution: {integrity: sha512-8Ol5ZqsahwigJKIUKVxr1RCBBJWyJ2gOkpxKOzf5d5J4U8WiKqgezflVq5u21TFtM4DSOCohQUQ4zFWSRaEpow==} + dependencies: + '@modern-js/codesmith-formily': 2.3.3(@modern-js/codesmith@2.3.3)(typescript@5.0.4) + '@modern-js/plugin-i18n': 2.46.1 + '@swc/helpers': 0.5.3 + transitivePeerDependencies: + - '@modern-js/codesmith' + - typescript + dev: true + + /@modern-js/generator-utils@3.3.8(@modern-js/codesmith@2.3.3)(typescript@5.0.4): + resolution: {integrity: sha512-COG3AncB9XdU1Cq3fNZgOo2UfvrN4etTnuKFFKpTL1L0jydEMwN/yTUXEzsVQxDRikMmq2CldkTHpmHkcEn/HA==} + dependencies: + '@modern-js/generator-common': 3.3.8(@modern-js/codesmith@2.3.3)(typescript@5.0.4) + '@modern-js/plugin-i18n': 2.46.1 + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.3 + transitivePeerDependencies: + - '@modern-js/codesmith' + - typescript + dev: true + + /@modern-js/new-action@2.46.1(typescript@5.0.4): + resolution: {integrity: sha512-/kTFVvfIDs4FOa4nQtlLNANpOOvMEyDk4qAqYD2gd8kWO88rMsaDG4tKxr51O4RjrqgR4ZpmQFeaanbdajZjlQ==} + dependencies: + '@modern-js/codesmith': 2.3.3 + '@modern-js/codesmith-formily': 2.3.3(@modern-js/codesmith@2.3.3)(typescript@5.0.4) + '@modern-js/generator-common': 3.3.8(@modern-js/codesmith@2.3.3)(typescript@5.0.4) + '@modern-js/generator-utils': 3.3.8(@modern-js/codesmith@2.3.3)(typescript@5.0.4) + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.3 + transitivePeerDependencies: + - debug + - typescript + dev: true + + /@modern-js/node-bundle-require@2.46.1: + resolution: {integrity: sha512-tRPmMn0GWvlYTWDCs1tgji66nLZc20g/8fNumVD27+YnaUCd65xR13U3WOsXr6+zmIUnAw2yBF6TR2yx6i7y8g==} + dependencies: + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.3 + esbuild: 0.17.19 + dev: true + + /@modern-js/plugin-data-loader@2.46.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-YUpj7kQnf8vfXtTBhKQc9LoI7TGZCEmO1Q2S9YTre/vsd8tn25C71AupEhCMrZh5RzyugHPe2RQ+Ad7FbyOftQ==} + engines: {node: '>=14.17.6'} + peerDependencies: + react: '>=17.0.0' + dependencies: + '@babel/core': 7.23.7 + '@modern-js/runtime-utils': 2.46.1(react-dom@18.2.0)(react@18.2.0) + '@modern-js/utils': 2.46.1 + '@remix-run/node': 1.19.3 + '@swc/helpers': 0.5.3 + path-to-regexp: 6.2.1 + react: 18.2.0 + transitivePeerDependencies: + - react-dom + - supports-color + dev: true + + /@modern-js/plugin-i18n@2.46.1: + resolution: {integrity: sha512-A8Gouaf8IHMb5lIZ7imHq5mj7Qosuf9r0Q+66AI7oaIFpKxHRkX4eoc2dMw0YcGGDPmebZxG0rFUA9yqV3CC/Q==} + dependencies: + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.3 + dev: true + + /@modern-js/plugin-lint@2.46.1: + resolution: {integrity: sha512-fSqux9RbFxVhHAMH1+IK3d/A3WS0o/sKOGzrMbdRoy0mMDwaEqX0Iw95uvuva7Z5fb5t20E3WHHkBswoxvzl9g==} + dependencies: + '@modern-js/tsconfig': 2.46.1 + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.3 + cross-spawn: 7.0.3 + eslint: 8.56.0 + husky: 8.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@modern-js/plugin@2.46.1: + resolution: {integrity: sha512-9Jwn0x/MLH/tuhWUQ0Yfq/TvHqPF4PLivb+j+repXbBgh6LYaiZj+pDxZSsN7Za1jp1vhzPhajSaQCy0HjuutA==} + dependencies: + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.3 + + /@modern-js/prod-server@2.46.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-O2q0G5QbPd80FMkqi7Mf/kD3sznOUCfhfV7BSzJLHM6djFAdxz8l3wytGL2jUADImTwKv30rWgp6f9dcg2+WPA==} + dependencies: + '@modern-js/plugin': 2.46.1 + '@modern-js/runtime-utils': 2.46.1(react-dom@18.2.0)(react@18.2.0) + '@modern-js/server-core': 2.46.1 + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.3 + cookie: 0.5.0 + etag: 1.8.1 + fresh: 0.5.2 + http-proxy-middleware: 2.0.6 + ignore-styles: 5.0.1 + isbot: 3.8.0 + merge-deep: 3.0.3 + node-html-parser: 6.1.12 + path-to-regexp: 6.2.1 + serve-static: 1.15.0 + transitivePeerDependencies: + - '@types/express' + - debug + - react + - react-dom + - supports-color + dev: true + + /@modern-js/runtime-utils@2.46.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/dfd2VOxFlG5zLjpLILaWTJpGpoVufQmIe/zyxUmfmc25hTNvCaYpHgcBJdTuJstqkvo0EsenHWMZ+ESx7WIfw==} + peerDependencies: + react: '>=17.0.0' + react-dom: '>=17.0.0' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@modern-js/utils': 2.46.1 + '@remix-run/router': 1.10.0 + '@swc/helpers': 0.5.3 + lru-cache: 6.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router-dom: 6.17.0(react-dom@18.2.0)(react@18.2.0) + serialize-javascript: 6.0.2 + + /@modern-js/runtime@2.46.1(@types/react-dom@18.0.11)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0)(webpack@5.90.0): + resolution: {integrity: sha512-tt85zPh2dFPRYjg+xe3Jm2TKOXzZswF1WTcs430NgmmTtOlBZG1qKT1FxSQ6g8LZs7h6TtYULm1U1PaiIiWTSw==} + engines: {node: '>=14.17.6'} + peerDependencies: + react: '>=17' + react-dom: '>=17' + dependencies: + '@babel/core': 7.23.7 + '@babel/types': 7.23.6 + '@loadable/babel-plugin': 5.15.3(@babel/core@7.23.7) + '@loadable/component': 5.15.3(react@18.2.0) + '@loadable/server': 5.15.3(@loadable/component@5.15.3)(react@18.2.0) + '@loadable/webpack-plugin': 5.15.2(webpack@5.90.0) + '@modern-js-reduck/plugin-auto-actions': 1.1.11(@modern-js-reduck/store@1.1.11) + '@modern-js-reduck/plugin-devtools': 1.1.11(@modern-js-reduck/store@1.1.11) + '@modern-js-reduck/plugin-effects': 1.1.11(@modern-js-reduck/store@1.1.11) + '@modern-js-reduck/plugin-immutable': 1.1.11(@modern-js-reduck/store@1.1.11) + '@modern-js-reduck/react': 1.1.11(@types/react-dom@18.0.11)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + '@modern-js-reduck/store': 1.1.11 + '@modern-js/plugin': 2.46.1 + '@modern-js/runtime-utils': 2.46.1(react-dom@18.2.0)(react@18.2.0) + '@modern-js/types': 2.46.1 + '@modern-js/utils': 2.46.1 + '@remix-run/node': 1.19.3 + '@swc/helpers': 0.5.3 + '@types/loadable__component': 5.13.8 + '@types/react-helmet': 6.1.11 + '@types/styled-components': 5.1.34 + cookie: 0.5.0 + esbuild: 0.17.19 + hoist-non-react-statics: 3.3.2 + invariant: 2.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-helmet: 6.1.0(react@18.2.0) + react-is: 18.2.0 + react-side-effect: 2.1.2(react@18.2.0) + styled-components: 5.3.11(@babel/core@7.23.7)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - supports-color + - webpack + dev: false + + /@modern-js/server-core@2.46.1: + resolution: {integrity: sha512-/gmeoEJQ/JQ7V5ol27QbrqtZk7+96reUR3k+Qs9mOjMYtUGmPoeUOzEy4n1BlMkXJcPtE/Qo6tZVLOZ1zuIEkA==} + dependencies: + '@modern-js/plugin': 2.46.1 + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.3 + dev: true + + /@modern-js/server-utils@2.46.1(@babel/traverse@7.23.7)(@rsbuild/core@0.3.4): + resolution: {integrity: sha512-Wo+g6q55A2UUTMwbbYUWkGey/H/1yE8mI4awdZ7GKMxemYKXlrvbGax0adiRrbB0R8NPjCSiB3Pq3t9aY2Ejuw==} + dependencies: + '@babel/core': 7.23.7 + '@babel/plugin-proposal-decorators': 7.23.7(@babel/core@7.23.7) + '@babel/preset-env': 7.23.8(@babel/core@7.23.7) + '@babel/preset-react': 7.23.3(@babel/core@7.23.7) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + '@modern-js/babel-compiler': 2.46.1 + '@modern-js/babel-plugin-module-resolver': 2.46.1 + '@modern-js/utils': 2.46.1 + '@rsbuild/babel-preset': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@swc/helpers': 0.5.3 + babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.23.7)(@babel/traverse@7.23.7) + transitivePeerDependencies: + - '@babel/traverse' + - '@rsbuild/core' + - supports-color + dev: true + + /@modern-js/server-utils@2.46.1(@babel/traverse@7.23.7)(@rsbuild/core@0.3.7): + resolution: {integrity: sha512-Wo+g6q55A2UUTMwbbYUWkGey/H/1yE8mI4awdZ7GKMxemYKXlrvbGax0adiRrbB0R8NPjCSiB3Pq3t9aY2Ejuw==} + dependencies: + '@babel/core': 7.23.7 + '@babel/plugin-proposal-decorators': 7.23.7(@babel/core@7.23.7) + '@babel/preset-env': 7.23.8(@babel/core@7.23.7) + '@babel/preset-react': 7.23.3(@babel/core@7.23.7) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + '@modern-js/babel-compiler': 2.46.1 + '@modern-js/babel-plugin-module-resolver': 2.46.1 + '@modern-js/utils': 2.46.1 + '@rsbuild/babel-preset': 0.3.4(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + '@swc/helpers': 0.5.3 + babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.23.7)(@babel/traverse@7.23.7) + transitivePeerDependencies: + - '@babel/traverse' + - '@rsbuild/core' + - supports-color + dev: true + + /@modern-js/server@2.46.1(@babel/traverse@7.23.7)(@rsbuild/core@0.3.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7n9LuQ7gJ9PdS1/YC7IjApZBNiqvQ+bsHKgeB7yvUYk0/FSL5GU/oqyOqMddMx05tQXuTdQRAabB26yGbV+jBg==} + peerDependencies: + devcert: ^1.2.2 + ts-node: ^10.1.0 + tsconfig-paths: '>= 3.0.0 || >= 4.0.0' + peerDependenciesMeta: + devcert: + optional: true + ts-node: + optional: true + tsconfig-paths: + optional: true + dependencies: + '@babel/core': 7.23.7 + '@babel/register': 7.23.7(@babel/core@7.23.7) + '@modern-js/prod-server': 2.46.1(react-dom@18.2.0)(react@18.2.0) + '@modern-js/runtime-utils': 2.46.1(react-dom@18.2.0)(react@18.2.0) + '@modern-js/server-utils': 2.46.1(@babel/traverse@7.23.7)(@rsbuild/core@0.3.4) + '@modern-js/types': 2.46.1 + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.3 + axios: 1.6.5 + connect-history-api-fallback: 2.0.0 + http-compression: 1.0.6 + minimatch: 3.1.2 + path-to-regexp: 6.2.1 + ws: 8.16.0 + transitivePeerDependencies: + - '@babel/traverse' + - '@rsbuild/core' + - '@types/express' + - bufferutil + - debug + - react + - react-dom + - supports-color + - utf-8-validate + dev: true + + /@modern-js/server@2.46.1(@babel/traverse@7.23.7)(@rsbuild/core@0.3.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7n9LuQ7gJ9PdS1/YC7IjApZBNiqvQ+bsHKgeB7yvUYk0/FSL5GU/oqyOqMddMx05tQXuTdQRAabB26yGbV+jBg==} + peerDependencies: + devcert: ^1.2.2 + ts-node: ^10.1.0 + tsconfig-paths: '>= 3.0.0 || >= 4.0.0' + peerDependenciesMeta: + devcert: + optional: true + ts-node: + optional: true + tsconfig-paths: + optional: true + dependencies: + '@babel/core': 7.23.7 + '@babel/register': 7.23.7(@babel/core@7.23.7) + '@modern-js/prod-server': 2.46.1(react-dom@18.2.0)(react@18.2.0) + '@modern-js/runtime-utils': 2.46.1(react-dom@18.2.0)(react@18.2.0) + '@modern-js/server-utils': 2.46.1(@babel/traverse@7.23.7)(@rsbuild/core@0.3.7) + '@modern-js/types': 2.46.1 + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.3 + axios: 1.6.5 + connect-history-api-fallback: 2.0.0 + http-compression: 1.0.6 + minimatch: 3.1.2 + path-to-regexp: 6.2.1 + ws: 8.16.0 + transitivePeerDependencies: + - '@babel/traverse' + - '@rsbuild/core' + - '@types/express' + - bufferutil + - debug + - react + - react-dom + - supports-color + - utf-8-validate + dev: true + + /@modern-js/tsconfig@2.46.1: + resolution: {integrity: sha512-LaDAQwzy59X3QP5YR4iH3ZGlI3nUFhzQ7LLFMbbI6yx3CtP5/RCOPpk9aPG4RMQwcf1FR4bEJQAJvUNhfKclHQ==} + dev: true + + /@modern-js/types@2.46.1: + resolution: {integrity: sha512-Z6eA3kc+raiTP+FgxItzxnQ7JV1gOEC63floqguL2PJrVJMz1BqfQqKeen0i7uDinjGI+G0A/2eIpJbkL6Wc1A==} + + /@modern-js/uni-builder@2.46.1(@babel/traverse@7.23.7)(esbuild@0.17.19)(postcss@8.4.33)(react-dom@18.2.0)(react@18.2.0)(styled-components@6.1.8)(typescript@5.0.4): + resolution: {integrity: sha512-AK4G9ha1Vs9J65YNy0lI82/JlgkGo0HVXTcImMjGuMwZ/03qM1QvBonjm1VxowSe+r+NXMBt4WwpIHOjtGdQOw==} + dependencies: + '@babel/core': 7.23.7 + '@babel/preset-react': 7.23.3(@babel/core@7.23.7) + '@babel/types': 7.23.6 + '@modern-js/prod-server': 2.46.1(react-dom@18.2.0)(react@18.2.0) + '@modern-js/server': 2.46.1(@babel/traverse@7.23.7)(@rsbuild/core@0.3.4)(react-dom@18.2.0)(react@18.2.0) + '@modern-js/utils': 2.46.1 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.14.0)(webpack@5.90.0) + '@rsbuild/babel-preset': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@rsbuild/core': 0.3.4 + '@rsbuild/plugin-assets-retry': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@rsbuild/plugin-babel': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@rsbuild/plugin-check-syntax': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@rsbuild/plugin-css-minimizer': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3)(esbuild@0.17.19)(webpack@5.90.0) + '@rsbuild/plugin-pug': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@rsbuild/plugin-react': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@rsbuild/plugin-rem': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@rsbuild/plugin-source-build': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@rsbuild/plugin-styled-components': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@rsbuild/plugin-svgr': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3)(typescript@5.0.4) + '@rsbuild/plugin-toml': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@rsbuild/plugin-type-check': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3)(typescript@5.0.4)(webpack@5.90.0) + '@rsbuild/plugin-yaml': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + '@rsbuild/webpack': 0.3.4(@swc/helpers@0.5.3)(esbuild@0.17.19) + '@swc/helpers': 0.5.3 + babel-loader: 9.1.3(@babel/core@7.23.7)(webpack@5.90.0) + babel-plugin-import: 1.13.5 + babel-plugin-styled-components: 1.13.3(styled-components@6.1.8) + babel-plugin-transform-react-remove-prop-types: 0.4.24 + cssnano: 6.0.1(postcss@8.4.33) + glob: 9.3.5 + html-webpack-plugin: 5.5.3(webpack@5.90.0) + lodash: 4.17.21 + postcss-custom-properties: 13.1.5(postcss@8.4.33) + postcss-font-variant: 5.0.0(postcss@8.4.33) + postcss-initial: 4.0.1(postcss@8.4.33) + postcss-media-minmax: 5.0.0(postcss@8.4.33) + postcss-nesting: 12.0.1(postcss@8.4.33) + postcss-page-break: 3.0.4(postcss@8.4.33) + react-refresh: 0.14.0 + rspack-manifest-plugin: 5.0.0-alpha0(webpack@5.90.0) + ts-loader: 9.4.4(typescript@5.0.4)(webpack@5.90.0) + webpack: 5.90.0(esbuild@0.17.19) + webpack-manifest-plugin: 5.0.0(webpack@5.90.0) + webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.5.3)(webpack@5.90.0) + transitivePeerDependencies: + - '@babel/traverse' + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - '@types/express' + - '@types/webpack' + - bufferutil + - clean-css + - csso + - debug + - devcert + - esbuild + - lightningcss + - postcss + - react + - react-dom + - sockjs-client + - styled-components + - supports-color + - ts-node + - tsconfig-paths + - type-fest + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /@modern-js/upgrade@2.46.1: + resolution: {integrity: sha512-2AKTIs6ceM8p4ON73idYfgnlOmf2COGVjN41FlST3MnbcfNpFIB1O2Ys6Zf0QHxqRB+FVkoqFzUfbeKaxb8yUg==} + hasBin: true + dependencies: + '@modern-js/codesmith': 2.3.3 + '@modern-js/plugin-i18n': 2.46.1 + '@modern-js/utils': 2.46.1 + '@swc/helpers': 0.5.3 + transitivePeerDependencies: + - debug + dev: true + + /@modern-js/utils@2.46.1: + resolution: {integrity: sha512-kV4N3JMfyl4pYJIPhtMTby7EOxid9Adq298Z9b2TbAb1EgzyiuDviOakzcks8jRAiesuI9sh7TFjLPniHdSQUA==} + dependencies: + '@swc/helpers': 0.5.3 + caniuse-lite: 1.0.30001579 + lodash: 4.17.21 + rslog: 1.2.0 + + /@module-federation/runtime-tools@0.0.8: + resolution: {integrity: sha512-tqx3wlVHnpWLk+vn22c0x9Nv1BqdZnoS6vdMb53IsVpbQIFP70nhhvymHUyFuPkoLzMFidS7GpG58DYT/4lvCw==} + dependencies: + '@module-federation/runtime': 0.0.8 + '@module-federation/webpack-bundler-runtime': 0.0.8 + dev: true + + /@module-federation/runtime@0.0.8: + resolution: {integrity: sha512-Hi9g10aHxHdQ7CbchSvke07YegYwkf162XPOmixNmJr5Oy4wVa2d9yIVSrsWFhBRbbvM5iJP6GrSuEq6HFO3ug==} + dependencies: + '@module-federation/sdk': 0.0.8 + dev: true + + /@module-federation/sdk@0.0.8: + resolution: {integrity: sha512-lkasywBItjUTNT0T0IskonDE2E/2tXE9UhUCPVoDL3NteDUSFGg4tpkF+cey1pD8mHh0XJcGrCuOW7s96peeAg==} + dev: true + + /@module-federation/webpack-bundler-runtime@0.0.8: + resolution: {integrity: sha512-ULwrTVzF47+6XnWybt6SIq97viEYJRv4P/DByw5h7PSX9PxSGyMm5pHfXdhcb7tno7VknL0t2V8F48fetVL9kA==} + dependencies: + '@module-federation/runtime': 0.0.8 + '@module-federation/sdk': 0.0.8 + dev: true + + /@mui/base@5.0.0-beta.33(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-WcSpoJUw/UYHXpvgtl4HyMar2Ar97illUpqiS/X1gtSBp6sdDW6kB2BJ9OlVQ+Kk/RL2GDp/WHA9sbjAYV35ow==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@floating-ui/react-dom': 2.0.6(react-dom@18.2.0)(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.0.38) + '@mui/utils': 5.15.6(@types/react@18.0.38)(react@18.2.0) + '@popperjs/core': 2.11.8 + '@types/react': 18.0.38 + clsx: 2.1.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@mui/core-downloads-tracker@5.15.6: + resolution: {integrity: sha512-0aoWS4qvk1uzm9JBs83oQmIMIQeTBUeqqu8u+3uo2tMznrB5fIKqQVCbCgq+4Tm4jG+5F7dIvnjvQ2aV7UKtdw==} + dev: false + + /@mui/icons-material@5.15.6(@mui/material@5.15.6)(@types/react@18.0.38)(react@18.2.0): + resolution: {integrity: sha512-GnkxMtlhs+8ieHLmCytg00ew0vMOiXGFCw8Ra9nxMsBjBqnrOI5gmXqUm+sGggeEU/HG8HyeqC1MX/IxOBJHzA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@mui/material': ^5.0.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@mui/material': 5.15.6(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.0.38 + react: 18.2.0 + dev: false + + /@mui/material@5.15.6(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-rw7bDdpi2kzfmcDN78lHp8swArJ5sBCKsn+4G3IpGfu44ycyWAWX0VdlvkjcR9Yrws2KIm7c+8niXpWHUDbWoA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@emotion/react': 11.11.3(@types/react@18.0.38)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.0.38)(react@18.2.0) + '@mui/base': 5.0.0-beta.33(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.15.6 + '@mui/system': 5.15.6(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.0.38)(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.0.38) + '@mui/utils': 5.15.6(@types/react@18.0.38)(react@18.2.0) + '@types/react': 18.0.38 + '@types/react-transition-group': 4.4.10 + clsx: 2.1.0 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) + dev: false + + /@mui/private-theming@5.15.6(@types/react@18.0.38)(react@18.2.0): + resolution: {integrity: sha512-ZBX9E6VNUSscUOtU8uU462VvpvBS7eFl5VfxAzTRVQBHflzL+5KtnGrebgf6Nd6cdvxa1o0OomiaxSKoN2XDmg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@mui/utils': 5.15.6(@types/react@18.0.38)(react@18.2.0) + '@types/react': 18.0.38 + prop-types: 15.8.1 + react: 18.2.0 + dev: false + + /@mui/styled-engine@5.15.6(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-KAn8P8xP/WigFKMlEYUpU9z2o7jJnv0BG28Qu1dhNQVutsLVIFdRf5Nb+0ijp2qgtcmygQ0FtfRuXv5LYetZTg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@emotion/cache': 11.11.0 + '@emotion/react': 11.11.3(@types/react@18.0.38)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.0.38)(react@18.2.0) + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.2.0 + dev: false + + /@mui/system@5.15.6(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.0.38)(react@18.2.0): + resolution: {integrity: sha512-J01D//u8IfXvaEHMBQX5aO2l7Q+P15nt96c4NskX7yp5/+UuZP8XCQJhtBtLuj+M2LLyXHYGmCPeblsmmscP2Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@emotion/react': 11.11.3(@types/react@18.0.38)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.0.38)(react@18.2.0) + '@mui/private-theming': 5.15.6(@types/react@18.0.38)(react@18.2.0) + '@mui/styled-engine': 5.15.6(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.0.38) + '@mui/utils': 5.15.6(@types/react@18.0.38)(react@18.2.0) + '@types/react': 18.0.38 + clsx: 2.1.0 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.2.0 + dev: false + + /@mui/types@7.2.13(@types/react@18.0.38): + resolution: {integrity: sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.0.38 + dev: false + + /@mui/utils@5.15.6(@types/react@18.0.38)(react@18.2.0): + resolution: {integrity: sha512-qfEhf+zfU9aQdbzo1qrSWlbPQhH1nCgeYgwhOVnj9Bn39shJQitEnXpSQpSNag8+uty5Od6PxmlNKPTnPySRKA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@types/prop-types': 15.7.11 + '@types/react': 18.0.38 + prop-types: 15.8.1 + react: 18.2.0 + react-is: 18.2.0 + dev: false + + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + dependencies: + eslint-scope: 5.1.1 + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.16.0 + dev: true + + /@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.14.0)(webpack@5.90.0): + resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <4.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + dependencies: + ansi-html-community: 0.0.8 + common-path-prefix: 3.0.0 + core-js-pure: 3.35.1 + error-stack-parser: 2.1.4 + find-up: 5.0.0 + html-entities: 2.4.0 + loader-utils: 2.0.4 + react-refresh: 0.14.0 + schema-utils: 3.3.0 + source-map: 0.7.4 + webpack: 5.90.0(esbuild@0.17.19) + dev: true + + /@popperjs/core@2.11.8: + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + dev: false + + /@redux-devtools/extension@3.3.0(redux@4.2.1): + resolution: {integrity: sha512-X34S/rC8S/M1BIrkYD1mJ5f8vlH0BDqxXrs96cvxSBo4FhMdbhU+GUGsmNYov1xjSyLMHgo8NYrUG8bNX7525g==} + peerDependencies: + redux: ^3.1.0 || ^4.0.0 || ^5.0.0 + dependencies: + '@babel/runtime': 7.23.8 + immutable: 4.3.4 + redux: 4.2.1 + dev: false + + /@remix-run/node@1.19.3: + resolution: {integrity: sha512-z5qrVL65xLXIUpU4mkR4MKlMeKARLepgHAk4W5YY3IBXOreRqOGUC70POViYmY7x38c2Ia1NwqL80H+0h7jbMw==} + engines: {node: '>=14.0.0'} + dependencies: + '@remix-run/server-runtime': 1.19.3 + '@remix-run/web-fetch': 4.4.2 + '@remix-run/web-file': 3.1.0 + '@remix-run/web-stream': 1.1.0 + '@web3-storage/multipart-parser': 1.0.0 + abort-controller: 3.0.0 + cookie-signature: 1.2.1 + source-map-support: 0.5.21 + stream-slice: 0.1.2 + + /@remix-run/router@1.10.0: + resolution: {integrity: sha512-Lm+fYpMfZoEucJ7cMxgt4dYt8jLfbpwRCzAjm9UgSLOkmlqo9gupxt6YX3DY0Fk155NT9l17d/ydi+964uS9Lw==} + engines: {node: '>=14.0.0'} + + /@remix-run/router@1.7.2: + resolution: {integrity: sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==} + engines: {node: '>=14'} + + /@remix-run/server-runtime@1.19.3: + resolution: {integrity: sha512-KzQ+htUsKqpBgKE2tWo7kIIGy3MyHP58Io/itUPvV+weDjApwr9tQr9PZDPA3yAY6rAzLax7BU0NMSYCXWFY5A==} + engines: {node: '>=14.0.0'} + dependencies: + '@remix-run/router': 1.7.2 + '@types/cookie': 0.4.1 + '@web3-storage/multipart-parser': 1.0.0 + cookie: 0.4.2 + set-cookie-parser: 2.6.0 + source-map: 0.7.4 + + /@remix-run/web-blob@3.1.0: + resolution: {integrity: sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==} + dependencies: + '@remix-run/web-stream': 1.1.0 + web-encoding: 1.1.5 + + /@remix-run/web-fetch@4.4.2: + resolution: {integrity: sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==} + engines: {node: ^10.17 || >=12.3} + dependencies: + '@remix-run/web-blob': 3.1.0 + '@remix-run/web-file': 3.1.0 + '@remix-run/web-form-data': 3.1.0 + '@remix-run/web-stream': 1.1.0 + '@web3-storage/multipart-parser': 1.0.0 + abort-controller: 3.0.0 + data-uri-to-buffer: 3.0.1 + mrmime: 1.0.1 + + /@remix-run/web-file@3.1.0: + resolution: {integrity: sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==} + dependencies: + '@remix-run/web-blob': 3.1.0 + + /@remix-run/web-form-data@3.1.0: + resolution: {integrity: sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==} + dependencies: + web-encoding: 1.1.5 + + /@remix-run/web-stream@1.1.0: + resolution: {integrity: sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==} + dependencies: + web-streams-polyfill: 3.3.2 + + /@rsbuild/babel-preset@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-lGYVxjuf5SmWt10cBu/agYxpXNfFrvgcl7r9pnObWF9bRwsuaI1S+EuigjFeBUVPdNs4OMQy46sQaTpMfp4p0A==} + dependencies: + '@babel/core': 7.23.7 + '@babel/plugin-proposal-decorators': 7.23.7(@babel/core@7.23.7) + '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-proposal-partial-application': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-proposal-pipeline-operator': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-runtime': 7.23.7(@babel/core@7.23.7) + '@babel/preset-env': 7.23.8(@babel/core@7.23.7) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + '@babel/runtime': 7.23.8 + '@babel/types': 7.23.6 + '@rsbuild/plugin-babel': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + '@types/babel__core': 7.20.5 + babel-plugin-dynamic-import-node: 2.3.3 + core-js: 3.32.2 + transitivePeerDependencies: + - '@rsbuild/core' + - '@swc/helpers' + - supports-color + dev: true + + /@rsbuild/babel-preset@0.3.4(@rsbuild/core@0.3.7): + resolution: {integrity: sha512-lGYVxjuf5SmWt10cBu/agYxpXNfFrvgcl7r9pnObWF9bRwsuaI1S+EuigjFeBUVPdNs4OMQy46sQaTpMfp4p0A==} + dependencies: + '@babel/core': 7.23.7 + '@babel/plugin-proposal-decorators': 7.23.7(@babel/core@7.23.7) + '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-proposal-partial-application': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-proposal-pipeline-operator': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-runtime': 7.23.7(@babel/core@7.23.7) + '@babel/preset-env': 7.23.8(@babel/core@7.23.7) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + '@babel/runtime': 7.23.8 + '@babel/types': 7.23.6 + '@rsbuild/plugin-babel': 0.3.4(@rsbuild/core@0.3.7) + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + '@types/babel__core': 7.20.5 + babel-plugin-dynamic-import-node: 2.3.3 + core-js: 3.32.2 + transitivePeerDependencies: + - '@rsbuild/core' + - '@swc/helpers' + - supports-color + dev: true + + /@rsbuild/babel-preset@0.3.4(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-lGYVxjuf5SmWt10cBu/agYxpXNfFrvgcl7r9pnObWF9bRwsuaI1S+EuigjFeBUVPdNs4OMQy46sQaTpMfp4p0A==} + dependencies: + '@babel/core': 7.23.7 + '@babel/plugin-proposal-decorators': 7.23.7(@babel/core@7.23.7) + '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-proposal-partial-application': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-proposal-pipeline-operator': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-runtime': 7.23.7(@babel/core@7.23.7) + '@babel/preset-env': 7.23.8(@babel/core@7.23.7) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + '@babel/runtime': 7.23.8 + '@babel/types': 7.23.6 + '@rsbuild/plugin-babel': 0.3.4(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + '@types/babel__core': 7.20.5 + babel-plugin-dynamic-import-node: 2.3.3 + core-js: 3.32.2 + transitivePeerDependencies: + - '@rsbuild/core' + - '@swc/helpers' + - supports-color + dev: true + + /@rsbuild/core@0.3.4: + resolution: {integrity: sha512-FrAFuu0q9l1/lTqSNU8/qYPVDXYFOBz4abOjd61ycLjVtFaMhOWDjKxqI+c6k3XG3pZQ+CmjSfT4m50gA20+nA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + '@rspack/core': 0.5.0(@swc/helpers@0.5.3) + '@swc/helpers': 0.5.3 + core-js: 3.32.2 + html-webpack-plugin: /html-rspack-plugin@5.5.7 + postcss: 8.4.33 + dev: true + + /@rsbuild/core@0.3.7: + resolution: {integrity: sha512-3CECaT33x0m+tnnvdSMmNkRUn5D0hrd2lSBklmyBKwTASKT8xlhHNWOTFbrOlG4PByjPRCO4PoykZa5OOVvXMA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rspack/core': 0.5.0(@swc/helpers@0.5.3) + '@swc/helpers': 0.5.3 + core-js: 3.32.2 + html-webpack-plugin: /html-rspack-plugin@5.5.7 + postcss: 8.4.33 + dev: true + + /@rsbuild/monorepo-utils@0.3.4(@swc/helpers@0.5.3): + resolution: {integrity: sha512-tjC/65mq+M5TGIhkgT//m8yxmlmq2KXhkG15TJS5f17BsY2UPjftJQ9/R4kyDmqnZ40kBgtK6rsTa23V6b+uXQ==} + dependencies: + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + fast-glob: 3.3.2 + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rsbuild/plugin-assets-retry@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-tJt1w2u17ovIMriU1m7+3xRHEsznjB5YWkG7m0NQgKYwUdfLT9hyU+PdcFiY2KdC36t2M2Ntz2XRYhV+KKzqXg==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.4 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + serialize-javascript: 6.0.2 + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rsbuild/plugin-babel@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-N6frB1R9mK1K/leaA73eNF2Vo9hy4B1i4+CGFUCbP4msS0DGasAlZ1fUlNWvCi7a07Q9R2QbWc38RG1yRyKYBw==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@babel/core': 7.23.7 + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + '@rsbuild/core': 0.3.4 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + '@types/babel__core': 7.20.5 + upath: 2.0.1 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + dev: true + + /@rsbuild/plugin-babel@0.3.4(@rsbuild/core@0.3.7): + resolution: {integrity: sha512-N6frB1R9mK1K/leaA73eNF2Vo9hy4B1i4+CGFUCbP4msS0DGasAlZ1fUlNWvCi7a07Q9R2QbWc38RG1yRyKYBw==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@babel/core': 7.23.7 + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + '@rsbuild/core': 0.3.7 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + '@types/babel__core': 7.20.5 + upath: 2.0.1 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + dev: true + + /@rsbuild/plugin-babel@0.3.4(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-N6frB1R9mK1K/leaA73eNF2Vo9hy4B1i4+CGFUCbP4msS0DGasAlZ1fUlNWvCi7a07Q9R2QbWc38RG1yRyKYBw==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@babel/core': 7.23.7 + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + '@rsbuild/core': 0.3.7 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + '@types/babel__core': 7.20.5 + upath: 2.0.1 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + dev: true + + /@rsbuild/plugin-check-syntax@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-8K13olafanPrrN6SubefdW+FzXKA480wWzd8NHgDDO+KBJGQKStRI84yVt3xSBtp1PfJbMXzZmAOQoQRLOW7WA==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.4 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + acorn: 8.11.3 + caniuse-lite: 1.0.30001579 + htmlparser2: 9.0.0 + source-map: 0.7.4 + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rsbuild/plugin-css-minimizer@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3)(esbuild@0.17.19)(webpack@5.90.0): + resolution: {integrity: sha512-gJLj3f8W4TSjDzo8bvW9VVeai2g5QqXT0WDyKjqWp/0XRbseOqWJu5lJPOnyaGcul3qAFSuKgUUon2z1HoEBhA==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.4 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + css-minimizer-webpack-plugin: 5.0.1(esbuild@0.17.19)(webpack@5.90.0) + transitivePeerDependencies: + - '@parcel/css' + - '@swc/css' + - '@swc/helpers' + - clean-css + - csso + - esbuild + - lightningcss + - webpack + dev: true + + /@rsbuild/plugin-esbuild@0.3.4(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-+fNDEtLRlY5hZ9Iv63WFk5KIMFGhZsGLuI7fqcmQRSClebifQ267YQFvwtGNMOraOIqxiFElmhxHdjIDHJYEUA==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.7 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + esbuild: 0.17.19 + webpack: 5.90.0(esbuild@0.17.19) + transitivePeerDependencies: + - '@swc/core' + - '@swc/helpers' + - uglify-js + - webpack-cli + dev: true + + /@rsbuild/plugin-node-polyfill@0.3.4(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-PcVKW8o8qyeg+rLMO3xzfVOPkyZVNQrBJDz5w2WlB46YVFgIx4B9NjipSfGhgXF0aGx7fYAp0lOGtFT57DJVCg==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.7 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + node-libs-browser: 2.2.1 + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rsbuild/plugin-pug@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-sUyF3b3K9ZLvoMQuYeN3NI+zz2IlNqaPRWLNFr8LHzTKx52DnM8OxKpQsmTs2oNq4YxCIp1o/wSvCMmE5ftzDA==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.4 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + '@types/pug': 2.0.10 + pug: 3.0.2 + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rsbuild/plugin-react@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-vbdZUj1KApKWklTuUAkY+bevucbejsnn+v6BBhYGk37j5SvhTY/uNBpZBcuBl7EX/1xnOaHLy91wqFOKhSxgkw==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.4 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + '@rspack/plugin-react-refresh': 0.5.0(react-refresh@0.14.0) + react-refresh: 0.14.0 + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rsbuild/plugin-rem@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-AEsJHOtLcGr3OslrQ7FdJkTt/ZFTtLgFf3Ix73yY6pNyez/x4o8Kl0/Kk75hZsGm8N/j01XOzFgHRDKs4a7R7A==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.4 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + terser: 5.19.2 + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rsbuild/plugin-source-build@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-ARazIJpqYU/gQlfsUzchI9PvnDlhUK0+vz0ub/7aURvqPwBe0LpmWf5+9PHofg6oxWmMcZgl66gwnospMmjGnQ==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.4 + '@rsbuild/monorepo-utils': 0.3.4(@swc/helpers@0.5.3) + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rsbuild/plugin-styled-components@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-PIyRMHl/N+yYQOvio1Kyh76y1YKzFzI4T2m4+qXJz6oKYKOq4WaRKP6whyXDdSKtIBmo73r06wOGJy3YyrcjNg==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.4 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rsbuild/plugin-svgr@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3)(typescript@5.0.4): + resolution: {integrity: sha512-sOxLBux+zZ4oZBMAL/CTdGkfobXTsONEmFXWmE/aPIj3jDuoZri+HPgVK5sOT+iqU7o+LMfp+bjxO103TB2dZw==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.4 + '@rsbuild/plugin-react': 0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3) + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + '@svgr/core': 8.1.0(typescript@5.0.4) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.0.4) + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + - typescript + dev: true + + /@rsbuild/plugin-toml@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-TB1QqiFMxvBZuX6bk3ZSycjnBt043yyAaOp0oIw4RtPirsQKZvsCy+i1lL7QvRKeZVddJKiqT9n/+KvkBotpeA==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.4 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rsbuild/plugin-type-check@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3)(typescript@5.0.4)(webpack@5.90.0): + resolution: {integrity: sha512-ww5LLmKNlIQO5o4BIvJazZnO3/LLWN1XS/NRTkUDK5Zzo47uAAaqwdYPZvWw6PDtVL4wH0NWKUJBrtBP+i++Dw==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.4 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.0.4)(webpack@5.90.0) + transitivePeerDependencies: + - '@swc/helpers' + - typescript + - webpack + dev: true + + /@rsbuild/plugin-yaml@0.3.4(@rsbuild/core@0.3.4)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-KV7Kc9USPlvUqAG4uyYU+yI25XoDnp+rJPL478P7nOSamiNV1vHKmMQqIelzCVULec1L4cxxkWEf4Lnu8Atovw==} + peerDependencies: + '@rsbuild/core': ^0.3.4 + dependencies: + '@rsbuild/core': 0.3.4 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rsbuild/shared@0.3.4(@swc/helpers@0.5.3): + resolution: {integrity: sha512-rvm+B2pGHsRSW3LiqPzOnyg/PQMNZsrX2QvuZLUovuF3DpvzKJoBsrj0ih1c0ymlIEitEcoBqiJbQUVQI3iDUQ==} + dependencies: + '@rspack/core': 0.5.0(@swc/helpers@0.5.3) + caniuse-lite: 1.0.30001579 + lodash: 4.17.21 + postcss: 8.4.33 + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rsbuild/shared@0.3.7(@swc/helpers@0.5.3): + resolution: {integrity: sha512-XY82H5CzymyuUC3zGxTWDgKEXWXiQnt1kmPQS1T1mS6jwo8SSwTcEub+E5vtpAOn6r1tNGGHZre+7EVJtF51nQ==} + dependencies: + '@rspack/core': 0.5.0(@swc/helpers@0.5.3) + caniuse-lite: 1.0.30001579 + lodash: 4.17.21 + postcss: 8.4.33 + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@rsbuild/webpack@0.3.4(@swc/helpers@0.5.3)(esbuild@0.17.19): + resolution: {integrity: sha512-xcgbcdmu9mPwTRG08hKdwuo+pXMZpbALxLXzuLpIUnO5J9atwMWDoIPGFNwqpuQxznCWKn8lQffX6lpr42hKwQ==} + dependencies: + '@rsbuild/core': 0.3.4 + '@rsbuild/shared': 0.3.4(@swc/helpers@0.5.3) + fast-glob: 3.3.2 + globby: 11.1.0 + html-webpack-plugin: /html-rspack-plugin@5.5.7 + mini-css-extract-plugin: 2.7.7(webpack@5.90.0) + postcss: 8.4.33 + terser-webpack-plugin: 5.3.9(esbuild@0.17.19)(webpack@5.90.0) + tsconfig-paths-webpack-plugin: 4.1.0 + webpack: 5.90.0(esbuild@0.17.19) + transitivePeerDependencies: + - '@swc/core' + - '@swc/helpers' + - esbuild + - uglify-js + - webpack-cli + dev: true + + /@rspack/binding-darwin-arm64@0.5.0: + resolution: {integrity: sha512-zRx4efhn2eCjdhHt6avhdkKur6FZvYy1TgPhNKpWbTg7fnrvtNGzcVQCAOnPUUPkJjnss3veOhZlWJ3paX0EDQ==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rspack/binding-darwin-x64@0.5.0: + resolution: {integrity: sha512-d6SvBURfKow3WcKxTrjJPBkp+NLsuCPoIMaS8/bM4gHwgjVs2zuOsTQ9+l36dypOkjnu6QLkOIykTdiUKJ0eQg==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rspack/binding-linux-arm64-gnu@0.5.0: + resolution: {integrity: sha512-97xFbF7RjJc2VvX+0Hvb7Jzsk+eEE8oEUcc5Dnb7OIwGZulWKk6cLNcRkNfmL/F9kk1QEKlUTNC/VQI7ljf2tA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rspack/binding-linux-arm64-musl@0.5.0: + resolution: {integrity: sha512-lk0IomCy276EoynmksoBwg0IcHvvVXuZPMeq7OgRPTvs33mdTExSzSTPtrGzx/D00bX1ybUqLQwJhcgGt6erPQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rspack/binding-linux-x64-gnu@0.5.0: + resolution: {integrity: sha512-r15ddpse0S/8wHtfL85uJrVotvPVIMnQX06KlXyGUSw1jWrjxV+NXFDJ4xXnHCvk/YV6lCFTotAssk4wJEE0Fw==} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rspack/binding-linux-x64-musl@0.5.0: + resolution: {integrity: sha512-lB9Dn1bi4xyzEe6Bf/GQ7Ktlrq4Kmt1LHwN+t0m6iVYH3Vb/3g8uQGDSkwnjP8NmlAtldK1cmvRMhR7flUrgZA==} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rspack/binding-win32-arm64-msvc@0.5.0: + resolution: {integrity: sha512-aDoF13puU8LxST/qKZndtXzlJbnbnxY2Bxyj0fu7UDh8nHJD4A2HQfWRN6BZFHaVSqM6Bnli410dJrIWeTNhZQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rspack/binding-win32-ia32-msvc@0.5.0: + resolution: {integrity: sha512-EYGeH4YKX5v4gtTL8mBAWnsKSkF+clsKu0z1hgWgSV/vnntNlqJQZUCb5CMdg5VqadNm+lUNDYYHeHNa3+Jp3w==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rspack/binding-win32-x64-msvc@0.5.0: + resolution: {integrity: sha512-RCECFW6otUrFiPbWQyOvLZOMNV/OL6AyAKMDbX9ejjk0TjLMrHjnhmI5X8EoA/SUc1/vEbgsJzDVLKTfn138cg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rspack/binding@0.5.0: + resolution: {integrity: sha512-+v1elZMn6lKBqbXQzhcfeCaPzztFNGEkNDEcQ7weako6yQPsBihGCRzveMMzZkja4RyB9GRHjWRE+THm8V8+3w==} + optionalDependencies: + '@rspack/binding-darwin-arm64': 0.5.0 + '@rspack/binding-darwin-x64': 0.5.0 + '@rspack/binding-linux-arm64-gnu': 0.5.0 + '@rspack/binding-linux-arm64-musl': 0.5.0 + '@rspack/binding-linux-x64-gnu': 0.5.0 + '@rspack/binding-linux-x64-musl': 0.5.0 + '@rspack/binding-win32-arm64-msvc': 0.5.0 + '@rspack/binding-win32-ia32-msvc': 0.5.0 + '@rspack/binding-win32-x64-msvc': 0.5.0 + dev: true + + /@rspack/core@0.5.0(@swc/helpers@0.5.3): + resolution: {integrity: sha512-/Bpujdtx28qYir7AK9VVSbY35GBFEcZ1NTJZBx/WIzZGZWLCxhlVYfjH8cj44y4RvXa0Y26tnj/q7VJ4U3sHug==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true + dependencies: + '@module-federation/runtime-tools': 0.0.8 + '@rspack/binding': 0.5.0 + '@swc/helpers': 0.5.3 + browserslist: 4.22.2 + enhanced-resolve: 5.12.0 + graceful-fs: 4.2.10 + json-parse-even-better-errors: 3.0.1 + neo-async: 2.6.2 + tapable: 2.2.1 + terminal-link: 2.1.1 + watchpack: 2.4.0 + webpack-sources: 3.2.3 + zod: 3.22.4 + zod-validation-error: 1.3.1(zod@3.22.4) + dev: true + + /@rspack/plugin-react-refresh@0.5.0(react-refresh@0.14.0): + resolution: {integrity: sha512-Tas91XaFgRmgdLFzgeei/LybMFvnYBicMf4Y7Yt9lZHRHfgONrGbmqSVeS+nWWTW9U8Q31K9uiM2Z2a02hq2Vw==} + peerDependencies: + react-refresh: '>=0.10.0 <1.0.0' + peerDependenciesMeta: + react-refresh: + optional: true + dependencies: + react-refresh: 0.14.0 + dev: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sttot/api-hooks@1.2.5(axios@1.6.5)(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Uw2MZJe4xQCPY+cwnj1HREsj44qdDbNe5/Z17TKkaJWjNQn+yFeZYeOt8aHp/g6vv6wLj0ALwUY9F/PnmoSdcQ==} + engines: {node: '>=14.17.6'} + peerDependencies: + react: ^17 + react-dom: ^17 + dependencies: + '@babel/runtime': 7.23.8 + '@sttot/axios-api': 0.2.4(axios@1.6.5)(lodash@4.17.21) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - axios + - lodash + dev: false + + /@sttot/axios-api@0.2.4(axios@1.6.5)(lodash@4.17.21): + resolution: {integrity: sha512-I09pUX0aC08ucvjJaEqZlc1xP78l/qpf0rT13ysq6fB9AJjNtbyDOhGQYeVhkHRjjSTXSQRHL/vsHEX0J4ypOQ==} + engines: {node: '>=14.17.6'} + peerDependencies: + axios: ^1.1.3 + lodash: ^4.17.21 + dependencies: + '@babel/runtime': 7.23.8 + axios: 1.6.5 + lodash: 4.17.21 + dev: false + + /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: true + + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: true + + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: true + + /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: true + + /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: true + + /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: true + + /@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.23.7): + resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: true + + /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: true + + /@svgr/babel-preset@8.1.0(@babel/core@7.23.7): + resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.23.7) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.23.7) + dev: true + + /@svgr/core@8.1.0(typescript@5.0.4): + resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} + engines: {node: '>=14'} + dependencies: + '@babel/core': 7.23.7 + '@svgr/babel-preset': 8.1.0(@babel/core@7.23.7) + camelcase: 6.3.0 + cosmiconfig: 8.3.6(typescript@5.0.4) + snake-case: 3.0.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@svgr/hast-util-to-babel-ast@8.0.0: + resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} + engines: {node: '>=14'} + dependencies: + '@babel/types': 7.23.6 + entities: 4.5.0 + dev: true + + /@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0): + resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + dependencies: + '@babel/core': 7.23.7 + '@svgr/babel-preset': 8.1.0(@babel/core@7.23.7) + '@svgr/core': 8.1.0(typescript@5.0.4) + '@svgr/hast-util-to-babel-ast': 8.0.0 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0)(typescript@5.0.4): + resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + dependencies: + '@svgr/core': 8.1.0(typescript@5.0.4) + cosmiconfig: 8.3.6(typescript@5.0.4) + deepmerge: 4.3.1 + svgo: 3.2.0 + transitivePeerDependencies: + - typescript + dev: true + + /@swc/helpers@0.5.1: + resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} + dependencies: + tslib: 2.6.2 + + /@swc/helpers@0.5.3: + resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==} + dependencies: + tslib: 2.6.2 + + /@trysound/sax@0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: true + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 + dev: true + + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + dev: true + + /@types/babel__traverse@7.20.5: + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@types/cookie@0.4.1: + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + + /@types/d3-array@3.2.1: + resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} + dev: true + + /@types/d3-axis@3.0.6: + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + dependencies: + '@types/d3-selection': 3.0.10 + dev: true + + /@types/d3-brush@3.0.6: + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + dependencies: + '@types/d3-selection': 3.0.10 + dev: true + + /@types/d3-chord@3.0.6: + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + dev: true + + /@types/d3-color@3.1.3: + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + dev: true + + /@types/d3-contour@3.0.6: + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + dependencies: + '@types/d3-array': 3.2.1 + '@types/geojson': 7946.0.14 + dev: true + + /@types/d3-delaunay@6.0.4: + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + dev: true + + /@types/d3-dispatch@3.0.6: + resolution: {integrity: sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==} + dev: true + + /@types/d3-drag@3.0.7: + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + dependencies: + '@types/d3-selection': 3.0.10 + dev: true + + /@types/d3-dsv@3.0.7: + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + dev: true + + /@types/d3-ease@3.0.2: + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + dev: true + + /@types/d3-fetch@3.0.7: + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + dependencies: + '@types/d3-dsv': 3.0.7 + dev: true + + /@types/d3-force@3.0.9: + resolution: {integrity: sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==} + dev: true + + /@types/d3-format@3.0.4: + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + dev: true + + /@types/d3-geo@3.1.0: + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + dependencies: + '@types/geojson': 7946.0.14 + dev: true + + /@types/d3-hierarchy@3.1.6: + resolution: {integrity: sha512-qlmD/8aMk5xGorUvTUWHCiumvgaUXYldYjNVOWtYoTYY/L+WwIEAmJxUmTgr9LoGNG0PPAOmqMDJVDPc7DOpPw==} + dev: true + + /@types/d3-interpolate@3.0.4: + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + dependencies: + '@types/d3-color': 3.1.3 + dev: true + + /@types/d3-path@3.0.2: + resolution: {integrity: sha512-WAIEVlOCdd/NKRYTsqCpOMHQHemKBEINf8YXMYOtXH0GA7SY0dqMB78P3Uhgfy+4X+/Mlw2wDtlETkN6kQUCMA==} + dev: true + + /@types/d3-polygon@3.0.2: + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + dev: true + + /@types/d3-quadtree@3.0.6: + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + dev: true + + /@types/d3-random@3.0.3: + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + dev: true + + /@types/d3-scale-chromatic@3.0.3: + resolution: {integrity: sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==} + dev: true + + /@types/d3-scale@4.0.8: + resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==} + dependencies: + '@types/d3-time': 3.0.3 + dev: true + + /@types/d3-selection@3.0.10: + resolution: {integrity: sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==} + dev: true + + /@types/d3-shape@3.1.6: + resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==} + dependencies: + '@types/d3-path': 3.0.2 + dev: true + + /@types/d3-time-format@4.0.3: + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + dev: true + + /@types/d3-time@3.0.3: + resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} + dev: true + + /@types/d3-timer@3.0.2: + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + dev: true + + /@types/d3-transition@3.0.8: + resolution: {integrity: sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==} + dependencies: + '@types/d3-selection': 3.0.10 + dev: true + + /@types/d3-zoom@3.0.8: + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.10 + dev: true + + /@types/d3@7.4.3: + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + dependencies: + '@types/d3-array': 3.2.1 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.6 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.9 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.6 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.0.2 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.8 + '@types/d3-scale-chromatic': 3.0.3 + '@types/d3-selection': 3.0.10 + '@types/d3-shape': 3.1.6 + '@types/d3-time': 3.0.3 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.8 + '@types/d3-zoom': 3.0.8 + dev: true + + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + dependencies: + '@types/ms': 0.7.34 + dev: false + + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 8.56.2 + '@types/estree': 1.0.5 + + /@types/eslint@8.56.2: + resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + + /@types/estree-jsx@1.0.5: + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + dependencies: + '@types/estree': 1.0.5 + dev: false + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + /@types/geojson@7946.0.14: + resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==} + dev: true + + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /@types/hoist-non-react-statics@3.3.5: + resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} + dependencies: + '@types/react': 18.0.38 + hoist-non-react-statics: 3.3.2 + dev: false + + /@types/html-minifier-terser@6.1.0: + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + dev: true + + /@types/http-proxy@1.17.14: + resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} + dependencies: + '@types/node': 16.11.68 + dev: true + + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: true + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + dev: true + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 + dev: true + + /@types/jest@29.2.6: + resolution: {integrity: sha512-XEUC/Tgw3uMh6Ho8GkUtQ2lPhY5Fmgyp3TdlkTJs1W9VgNxs+Ow/x3Elh8lHQKqCbZL0AubQuqWjHVT033Hhrw==} + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/katex@0.16.7: + resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} + dev: false + + /@types/loadable__component@5.13.8: + resolution: {integrity: sha512-0FF/WihuPkR5IFOHiBzC95bSACvgQNUQCuNy1WF8F/lCBBHgS2SxarIk4CTjWM10A72ovpmXZDRcuAXZNS+/kQ==} + dependencies: + '@types/react': 18.0.38 + dev: false + + /@types/lodash@4.14.202: + resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} + dev: true + + /@types/mdast@4.0.3: + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + dev: false + + /@types/node@16.11.68: + resolution: {integrity: sha512-JkRpuVz3xCNCWaeQ5EHLR/6woMbHZz/jZ7Kmc63AkU+1HxnoUugzSWMck7dsR4DvNYX8jp9wTi9K7WvnxOIQZQ==} + + /@types/parse-json@4.0.2: + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + dev: false + + /@types/prop-types@15.7.11: + resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + + /@types/pug@2.0.10: + resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + dev: true + + /@types/react-dom@18.0.11: + resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} + dependencies: + '@types/react': 18.0.38 + + /@types/react-helmet@6.1.11: + resolution: {integrity: sha512-0QcdGLddTERotCXo3VFlUSWO3ztraw8nZ6e3zJSgG7apwV5xt+pJUS8ewPBqT4NYB1optGLprNQzFleIY84u/g==} + dependencies: + '@types/react': 18.0.38 + dev: false + + /@types/react-transition-group@4.4.10: + resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} + dependencies: + '@types/react': 18.0.38 + dev: false + + /@types/react@18.0.38: + resolution: {integrity: sha512-ExsidLLSzYj4cvaQjGnQCk4HFfVT9+EZ9XZsQ8Hsrcn8QNgXtpZ3m9vSIC2MWtx7jHictK6wYhQgGh6ic58oOw==} + dependencies: + '@types/prop-types': 15.7.11 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 + + /@types/scheduler@0.16.8: + resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + + /@types/semver@7.5.6: + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + dev: true + + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: true + + /@types/styled-components@5.1.34: + resolution: {integrity: sha512-mmiVvwpYklFIv9E8qfxuPyIt/OuyIrn6gMOAMOFUO3WJfSrSE+sGUoa4PiZj77Ut7bKZpaa6o1fBKS/4TOEvnA==} + dependencies: + '@types/hoist-non-react-statics': 3.3.5 + '@types/react': 18.0.38 + csstype: 3.1.3 + dev: false + + /@types/stylis@4.2.0: + resolution: {integrity: sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw==} + dev: true + + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + dev: false + + /@types/unist@3.0.2: + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + dev: false + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: true + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.0.4): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.56.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.0.4) + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.56.0 + graphemer: 1.4.0 + ignore: 5.3.0 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.0.4): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.4) + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.56.0 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/type-utils@5.62.0(eslint@8.56.0)(typescript@5.0.4): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.0.4) + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.56.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.0.4): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.0.4): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.4) + eslint: 8.56.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + /@web3-storage/multipart-parser@1.0.0: + resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} + + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + /@zxing/text-encoding@0.9.0: + resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} + requiresBuild: true + optional: true + + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + + /acorn-import-assertions@1.9.0(acorn@8.11.3): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.3 + + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv-formats@2.1.1(ajv@8.12.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.12.0 + dev: true + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + + /ajv-keywords@5.1.0(ajv@8.12.0): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + dependencies: + ajv: 8.12.0 + fast-deep-equal: 3.1.3 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + 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 + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.2 + dev: true + + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-string: 1.0.7 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: true + + /asn1.js@5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + dev: true + + /assert-never@1.2.1: + resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==} + dev: true + + /assert@1.5.1: + resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} + dependencies: + object.assign: 4.1.5 + util: 0.10.4 + dev: true + + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + + /axios@1.6.5: + resolution: {integrity: sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==} + dependencies: + follow-redirects: 1.15.5 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + /babel-loader@9.1.3(@babel/core@7.23.7)(webpack@5.90.0): + resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + dependencies: + '@babel/core': 7.23.7 + find-cache-dir: 4.0.0 + schema-utils: 4.2.0 + webpack: 5.90.0(esbuild@0.17.19) + dev: true + + /babel-plugin-dynamic-import-node@2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + dependencies: + object.assign: 4.1.5 + dev: true + + /babel-plugin-import@1.13.5: + resolution: {integrity: sha512-IkqnoV+ov1hdJVofly9pXRJmeDm9EtROfrc5i6eII0Hix2xMs5FEm8FG3ExMvazbnZBbgHIt6qdO8And6lCloQ==} + dependencies: + '@babel/helper-module-imports': 7.22.15 + dev: true + + /babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.23.8 + cosmiconfig: 7.1.0 + resolve: 1.22.8 + dev: false + + /babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.23.7): + resolution: {integrity: sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.7 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.7): + resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7) + core-js-compat: 3.35.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.23.7): + resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.7) + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-styled-components@1.13.3(styled-components@6.1.8): + resolution: {integrity: sha512-meGStRGv+VuKA/q0/jXxrPNWEm4LPfYIqxooDTdmh8kFsP/Ph7jJG5rUPwUPX3QHUvggwdbgdGpo88P/rRYsVw==} + peerDependencies: + styled-components: '>= 2' + dependencies: + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + babel-plugin-syntax-jsx: 6.18.0 + lodash: 4.17.21 + styled-components: 6.1.8(react-dom@18.2.0)(react@18.2.0) + dev: true + + /babel-plugin-styled-components@2.1.4(@babel/core@7.23.7)(styled-components@5.3.11): + resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} + peerDependencies: + styled-components: '>= 2' + dependencies: + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 5.3.11(@babel/core@7.23.7)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - '@babel/core' + dev: false + + /babel-plugin-syntax-jsx@6.18.0: + resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} + dev: true + + /babel-plugin-transform-react-remove-prop-types@0.4.24: + resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} + dev: true + + /babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.23.7)(@babel/traverse@7.23.7): + resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==} + peerDependencies: + '@babel/core': ^7 + '@babel/traverse': ^7 + peerDependenciesMeta: + '@babel/traverse': + optional: true + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/traverse': 7.23.7(supports-color@5.5.0) + dev: true + + /babel-walk@3.0.0-canary-5: + resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} + engines: {node: '>= 10.0.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: true + + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: true + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: true + + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + dev: true + + /browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + dependencies: + cipher-base: 1.0.4 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-rsa@4.1.0: + resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} + dependencies: + bn.js: 5.2.1 + randombytes: 2.1.0 + dev: true + + /browserify-sign@4.2.2: + resolution: {integrity: sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==} + engines: {node: '>= 4'} + dependencies: + bn.js: 5.2.1 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.4 + inherits: 2.0.4 + parse-asn1: 5.1.6 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: true + + /browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + dependencies: + pako: 1.0.11 + dev: true + + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001579 + electron-to-chromium: 1.4.643 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: true + + /buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + dev: true + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + dev: true + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.2.0 + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.6.2 + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + + /caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + dependencies: + browserslist: 4.22.2 + caniuse-lite: 1.0.30001579 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: true + + /caniuse-lite@1.0.30001579: + resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==} + + /ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + dev: false + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.2.0: + resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + dev: false + + /character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + dev: false + + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: false + + /character-parser@2.2.0: + resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} + dependencies: + is-regex: 1.1.4 + dev: true + + /character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + dev: false + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: true + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + dependencies: + source-map: 0.6.1 + dev: true + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + dev: true + + /cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + + /cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + dev: true + + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /clone-deep@0.2.4: + resolution: {integrity: sha512-we+NuQo2DHhSl+DP6jlUiAhyAjBQrYnpOk15rN6c6JSPScjiCLh8IbSU+VTcph6YS3o7mASE8a0+gbZ7ChLpgg==} + engines: {node: '>=0.10.0'} + dependencies: + for-own: 0.1.5 + is-plain-object: 2.0.4 + kind-of: 3.2.2 + lazy-cache: 1.0.4 + shallow-clone: 0.1.2 + dev: true + + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + dev: false + + /clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + engines: {node: '>=6'} + dev: false + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + + /comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + dev: false + + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: true + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + /commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + /common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: true + + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + dev: true + + /console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + dev: true + + /constantinople@4.0.1: + resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + dev: true + + /constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + dev: true + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: false + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + /cookie-signature@1.2.1: + resolution: {integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==} + engines: {node: '>=6.6.0'} + + /cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + /core-js-compat@3.35.1: + resolution: {integrity: sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==} + dependencies: + browserslist: 4.22.2 + dev: true + + /core-js-pure@3.35.1: + resolution: {integrity: sha512-zcIdi/CL3MWbBJYo5YCeVAAx+Sy9yJE9I3/u9LkFABwbeaPhTMRWraM8mYFp9jW5Z50hOy7FVzCc8dCrpZqtIQ==} + requiresBuild: true + dev: true + + /core-js@3.32.2: + resolution: {integrity: sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==} + requiresBuild: true + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + + /cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: false + + /cosmiconfig@8.3.6(typescript@5.0.4): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 5.0.4 + dev: true + + /create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.4 + dev: true + + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: true + + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypto-browserify@3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.2 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + dev: true + + /css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + + /css-declaration-sorter@7.1.1(postcss@8.4.33): + resolution: {integrity: sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.33 + dev: true + + /css-minimizer-webpack-plugin@5.0.1(esbuild@0.17.19)(webpack@5.90.0): + resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@parcel/css': '*' + '@swc/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + lightningcss: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + '@swc/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + lightningcss: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + cssnano: 6.0.1(postcss@8.4.33) + esbuild: 0.17.19 + jest-worker: 29.7.0 + postcss: 8.4.33 + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 + webpack: 5.90.0(esbuild@0.17.19) + dev: true + + /css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: true + + /css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + + /css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.0.2 + dev: true + + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + dev: true + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /cssnano-preset-default@6.0.3(postcss@8.4.33): + resolution: {integrity: sha512-4y3H370aZCkT9Ev8P4SO4bZbt+AExeKhh8wTbms/X7OLDo5E7AYUUy6YPxa/uF5Grf+AJwNcCnxKhZynJ6luBA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + css-declaration-sorter: 7.1.1(postcss@8.4.33) + cssnano-utils: 4.0.1(postcss@8.4.33) + postcss: 8.4.33 + postcss-calc: 9.0.1(postcss@8.4.33) + postcss-colormin: 6.0.2(postcss@8.4.33) + postcss-convert-values: 6.0.2(postcss@8.4.33) + postcss-discard-comments: 6.0.1(postcss@8.4.33) + postcss-discard-duplicates: 6.0.1(postcss@8.4.33) + postcss-discard-empty: 6.0.1(postcss@8.4.33) + postcss-discard-overridden: 6.0.1(postcss@8.4.33) + postcss-merge-longhand: 6.0.2(postcss@8.4.33) + postcss-merge-rules: 6.0.3(postcss@8.4.33) + postcss-minify-font-values: 6.0.1(postcss@8.4.33) + postcss-minify-gradients: 6.0.1(postcss@8.4.33) + postcss-minify-params: 6.0.2(postcss@8.4.33) + postcss-minify-selectors: 6.0.2(postcss@8.4.33) + postcss-normalize-charset: 6.0.1(postcss@8.4.33) + postcss-normalize-display-values: 6.0.1(postcss@8.4.33) + postcss-normalize-positions: 6.0.1(postcss@8.4.33) + postcss-normalize-repeat-style: 6.0.1(postcss@8.4.33) + postcss-normalize-string: 6.0.1(postcss@8.4.33) + postcss-normalize-timing-functions: 6.0.1(postcss@8.4.33) + postcss-normalize-unicode: 6.0.2(postcss@8.4.33) + postcss-normalize-url: 6.0.1(postcss@8.4.33) + postcss-normalize-whitespace: 6.0.1(postcss@8.4.33) + postcss-ordered-values: 6.0.1(postcss@8.4.33) + postcss-reduce-initial: 6.0.2(postcss@8.4.33) + postcss-reduce-transforms: 6.0.1(postcss@8.4.33) + postcss-svgo: 6.0.2(postcss@8.4.33) + postcss-unique-selectors: 6.0.2(postcss@8.4.33) + dev: true + + /cssnano-utils@4.0.1(postcss@8.4.33): + resolution: {integrity: sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + dev: true + + /cssnano@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 6.0.3(postcss@8.4.33) + lilconfig: 2.1.0 + postcss: 8.4.33 + dev: true + + /csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + dependencies: + css-tree: 2.2.1 + dev: true + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: true + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + dependencies: + internmap: 2.0.3 + dev: false + + /d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + dev: false + + /d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + dev: false + + /d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + dependencies: + d3-path: 3.1.0 + dev: false + + /d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + dev: false + + /d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: false + + /d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + dependencies: + delaunator: 5.0.1 + dev: false + + /d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + dev: false + + /d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + dev: false + + /d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + dev: false + + /d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + dev: false + + /d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + dependencies: + d3-dsv: 3.0.1 + dev: false + + /d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + dev: false + + /d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + dev: false + + /d3-geo@3.1.0: + resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: false + + /d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + dev: false + + /d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + dev: false + + /d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + dev: false + + /d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + dev: false + + /d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + dev: false + + /d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + dev: false + + /d3-scale-chromatic@3.0.0: + resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + dev: false + + /d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + dev: false + + /d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + dev: false + + /d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + dependencies: + d3-path: 3.1.0 + dev: false + + /d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + dependencies: + d3-time: 3.1.0 + dev: false + + /d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: false + + /d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + dev: false + + /d3-transition@3.0.1(d3-selection@3.0.0): + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + dev: false + + /d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + dev: false + + /d3@7.8.5: + resolution: {integrity: sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.0 + d3-geo: 3.1.0 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.0.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + dev: false + + /data-uri-to-buffer@3.0.1: + resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} + engines: {node: '>= 6'} + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug@4.3.4(supports-color@5.5.0): + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 5.5.0 + + /debug@4.3.4(supports-color@9.3.1): + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 9.3.1 + dev: true + + /decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + dependencies: + character-entities: 2.0.2 + dev: false + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: true + + /delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + dependencies: + robust-predicates: 3.0.2 + dev: false + + /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'} + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: false + + /des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: true + + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dependencies: + dequal: 2.0.3 + dev: false + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dependencies: + bn.js: 4.12.0 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctypes@1.1.0: + resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} + dev: true + + /dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + dependencies: + utila: 0.4.0 + dev: true + + /dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dependencies: + '@babel/runtime': 7.23.8 + csstype: 3.1.3 + dev: false + + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: true + + /domain-browser@1.2.0: + resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} + engines: {node: '>=0.4', npm: '>=1.2'} + dev: true + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + + /dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /electron-to-chromium@1.4.643: + resolution: {integrity: sha512-QHscvvS7gt155PtoRC0dR2ilhL8E9LHhfTQEq1uD5AL0524rBLAwpAREFH06f87/e45B9XkR6Ki5dbhbCsVEIg==} + + /elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: true + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + + /enhanced-resolve@5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + dev: true + + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + + /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==} + dependencies: + is-arrayish: 0.2.1 + + /error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + dependencies: + stackframe: 1.3.4 + dev: true + + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.6 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.1.0 + safe-regex-test: 1.0.2 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.13 + dev: true + + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-set-tostringtag: 2.0.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.0 + dev: true + + /es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + has-tostringtag: 1.0.0 + hasown: 2.0.0 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.0 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: false + + /eslint-config-prettier@8.10.0(eslint@8.56.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.0.4) + debug: 3.2.7 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-es@3.0.1(eslint@8.56.0): + resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint: 8.56.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 + dev: true + + /eslint-plugin-eslint-comments@3.2.0(eslint@8.56.0): + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + escape-string-regexp: 1.0.5 + eslint: 8.56.0 + ignore: 5.3.0 + dev: true + + /eslint-plugin-filenames@1.3.2(eslint@8.56.0): + resolution: {integrity: sha512-tqxJTiEM5a0JmRCUYQmxw23vtTxrb2+a3Q2mMOPhFxvt7ZQQJmdiuMby9B/vUAuVMghyP7oET+nIf6EO6CBd/w==} + peerDependencies: + eslint: '*' + dependencies: + eslint: 8.56.0 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.upperfirst: 4.3.1 + dev: true + + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0)(eslint@8.56.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.0.4) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-node@11.1.0(eslint@8.56.0): + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=5.16.0' + dependencies: + eslint: 8.56.0 + eslint-plugin-es: 3.0.1(eslint@8.56.0) + eslint-utils: 2.1.0 + ignore: 5.3.0 + minimatch: 3.1.2 + resolve: 1.22.8 + semver: 6.3.1 + dev: true + + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.56.0)(prettier@2.8.8): + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.56.0 + eslint-config-prettier: 8.10.0(eslint@8.56.0) + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-plugin-promise@6.1.1(eslint@8.56.0): + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-plugin-react@7.33.2(eslint@8.56.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 + eslint: 8.56.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 + dev: true + + /eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true + + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /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} + dev: true + + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.56.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@5.5.0) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.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-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + dev: false + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: true + + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: true + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: true + + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.2.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false + + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + 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.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-memoize@2.5.2: + resolution: {integrity: sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==} + dev: false + + /fastq@1.16.0: + resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} + dependencies: + reusify: 1.0.4 + dev: true + + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + dev: true + + /find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 7.0.0 + dev: true + + /find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + dev: false + + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true + + /follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + + /for-in@0.1.8: + resolution: {integrity: sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==} + engines: {node: '>=0.10.0'} + dev: true + + /for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + dev: true + + /for-own@0.1.5: + resolution: {integrity: sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 1.0.2 + dev: true + + /fork-ts-checker-webpack-plugin@9.0.2(typescript@5.0.4)(webpack@5.90.0): + resolution: {integrity: sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + dependencies: + '@babel/code-frame': 7.23.5 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 8.3.6(typescript@5.0.4) + deepmerge: 4.3.1 + fs-extra: 10.1.0 + memfs: 3.5.3 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.5.4 + tapable: 2.2.1 + typescript: 5.0.4 + webpack: 5.90.0(esbuild@0.17.19) + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: true + + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /fs-monkey@1.0.5: + resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + 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 + dev: true + + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + + /glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.10.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + + /graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + + /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==} + dev: true + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: true + + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + + /hast-util-from-dom@5.0.0: + resolution: {integrity: sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==} + dependencies: + '@types/hast': 3.0.4 + hastscript: 8.0.0 + web-namespaces: 2.0.1 + dev: false + + /hast-util-from-html-isomorphic@2.0.0: + resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} + dependencies: + '@types/hast': 3.0.4 + hast-util-from-dom: 5.0.0 + hast-util-from-html: 2.0.1 + unist-util-remove-position: 5.0.0 + dev: false + + /hast-util-from-html@2.0.1: + resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.1 + parse5: 7.1.2 + vfile: 6.0.1 + vfile-message: 4.0.2 + dev: false + + /hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + devlop: 1.1.0 + hastscript: 8.0.0 + property-information: 6.4.1 + vfile: 6.0.1 + vfile-location: 5.0.2 + web-namespaces: 2.0.1 + dev: false + + /hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + dependencies: + '@types/hast': 3.0.4 + dev: false + + /hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + dependencies: + '@types/hast': 3.0.4 + dev: false + + /hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + dependencies: + '@types/estree': 1.0.5 + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + style-to-object: 1.0.5 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /hast-util-to-text@4.0.0: + resolution: {integrity: sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==} + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + dev: false + + /hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + dependencies: + '@types/hast': 3.0.4 + dev: false + + /hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + dev: false + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /highlight.js@11.9.0: + resolution: {integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==} + engines: {node: '>=12.0.0'} + dev: false + + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: false + + /html-entities@2.4.0: + resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} + dev: true + + /html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.27.0 + dev: true + + /html-rspack-plugin@5.5.7: + resolution: {integrity: sha512-7dNAURj9XBHWoYg59F8VU6hT7J7w+od4Lr5hc/rrgN6sy6QfqVpoPqW9Qw4IGFOgit8Pul7iQp1yysBSIhOlsg==} + engines: {node: '>=10.13.0'} + dependencies: + lodash: 4.17.21 + tapable: 2.2.1 + dev: true + + /html-url-attributes@3.0.0: + resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} + dev: false + + /html-webpack-plugin@5.5.3(webpack@5.90.0): + resolution: {integrity: sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==} + engines: {node: '>=10.13.0'} + peerDependencies: + webpack: ^5.20.0 + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + webpack: 5.90.0(esbuild@0.17.19) + dev: true + + /htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + dev: true + + /htmlparser2@9.0.0: + resolution: {integrity: sha512-uxbSI98wmFT/G4P2zXx4OVx04qWUmyFPrD2/CNepa2Zo3GPNaCaaxElDgwUrwYWkK1nr9fft0Ya8dws8coDLLQ==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: true + + /http-compression@1.0.6: + resolution: {integrity: sha512-Yy9VFT/0fJhbpSHmqA34CJKZDXLnHoQUP2wbFXY7duOx3nc9Qf8MVJezaXTP7IirvJ9DmUv/vm7qFNu/RntdWw==} + engines: {node: '>= 4'} + dev: true + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: true + + /http-proxy-middleware@2.0.6: + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + dependencies: + '@types/http-proxy': 1.17.14 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 + transitivePeerDependencies: + - debug + dev: true + + /http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.5 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: true + + /https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + dev: true + + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + + /husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: false + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore-styles@5.0.1: + resolution: {integrity: sha512-gQQmIznCETPLEzfg1UH4Cs2oRq+HBPl8quroEUNXT8oybEG7/0lqI3dGgDSRry6B9HcCXw3PVkFFS0FF3CMddg==} + dev: true + + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} + dev: true + + /immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + dev: false + + /immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + dev: false + + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + dev: false + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /inline-style-parser@0.2.2: + resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} + dev: false + + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + dev: true + + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + hasown: 2.0.0 + side-channel: 1.0.4 + dev: true + + /internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + dev: false + + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + dev: false + + /is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + dev: false + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + dev: false + + /is-expression@4.0.0: + resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} + dependencies: + acorn: 7.4.1 + object-assign: 4.1.1 + dev: true + + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + dev: false + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: true + + /is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: false + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + dev: true + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.13 + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isbot@3.8.0: + resolution: {integrity: sha512-vne1mzQUTR+qsMLeCBL9+/tgnDXRyc2pygLGl/WsgA+EZKIiB5Ehu0CiVTHIIk30zhJ24uGz4M5Ppse37aR0Hg==} + engines: {node: '>=12'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 + dev: true + + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.23.5 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 16.11.68 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 16.11.68 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 16.11.68 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /js-stringify@1.0.2: + resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + /json-parse-even-better-errors@3.0.1: + resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jstransformer@1.0.0: + resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} + dependencies: + is-promise: 2.2.2 + promise: 7.3.1 + dev: true + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.1.7 + dev: true + + /katex@0.16.9: + resolution: {integrity: sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==} + hasBin: true + dependencies: + commander: 8.3.0 + dev: false + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /kind-of@2.0.1: + resolution: {integrity: sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /lazy-cache@0.2.7: + resolution: {integrity: sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==} + engines: {node: '>=0.10.0'} + dev: true + + /lazy-cache@1.0.4: + resolution: {integrity: sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==} + engines: {node: '>=0.10.0'} + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + dependencies: + immediate: 3.0.6 + dev: false + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /lint-staged@13.1.4: + resolution: {integrity: sha512-pJRmnRA4I4Rcc1k9GZIh9LQJlolCVDHqtJpIgPY7t99XY3uXXmUeDfhRLELYLgUFJPmEsWevTqarex9acSfx2A==} + engines: {node: ^14.13.1 || >=16.0.0} + hasBin: true + dependencies: + chalk: 5.2.0 + cli-truncate: 3.1.0 + commander: 10.0.1 + debug: 4.3.4(supports-color@9.3.1) + execa: 7.2.0 + lilconfig: 2.1.0 + listr2: 5.0.8 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-inspect: 1.13.1 + pidtree: 0.6.0 + string-argv: 0.3.2 + supports-color: 9.3.1 + yaml: 2.3.4 + transitivePeerDependencies: + - enquirer + dev: true + + /listr2@5.0.8: + resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==} + engines: {node: ^14.13.1 || >=16.0.0} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.20 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.1 + rxjs: 7.8.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + dev: true + + /localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + dependencies: + lie: 3.1.1 + dev: false + + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true + + /lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + dev: true + + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: true + + /lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + + /lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: true + + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + dev: false + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.6.2 + dev: true + + /lowlight@3.1.0: + resolution: {integrity: sha512-CEbNVoSikAxwDMDPjXlqlFYiZLkDJHwyGu/MfOsJnF3d7f3tds5J3z8s/l9TMXhzfsJCCJEAsD78842mwmg0PQ==} + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + highlight.js: 11.9.0 + dev: false + + /lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.2 + dev: true + + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.1 + dev: false + + /markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + dev: false + + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + dependencies: + '@types/mdast': 4.0.3 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + + /mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + dependencies: + '@types/mdast': 4.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.1.0 + dev: false + + /mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-math@3.0.0: + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + longest-streak: 3.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + unist-util-remove-position: 5.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx-jsx@3.1.0: + resolution: {integrity: sha512-A8AJHlR7/wPQ3+Jre1+1rq040fX9A4Q1jG8JxmSNp/PLPHg80A6475wxTp3KzHpApFH6yWxFotHrJQA3dXP6/w==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-remove-position: 5.0.0 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + dependencies: + '@types/mdast': 4.0.3 + unist-util-is: 6.0.0 + dev: false + + /mdast-util-to-hast@13.1.0: + resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + dev: false + + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + dev: false + + /mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + dependencies: + '@types/mdast': 4.0.3 + dev: false + + /mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + dev: true + + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: true + + /memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.5 + dev: true + + /merge-deep@3.0.3: + resolution: {integrity: sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + clone-deep: 0.2.4 + kind-of: 3.2.2 + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + dependencies: + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + dependencies: + micromark-extension-gfm-autolink-literal: 2.0.0 + micromark-extension-gfm-footnote: 2.0.0 + micromark-extension-gfm-strikethrough: 2.0.0 + micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.0.1 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-math@3.0.0: + resolution: {integrity: sha512-iJ2Q28vBoEovLN5o3GO12CpqorQRYDPT+p4zW50tGwTfJB+iv/VnB6Ini+gqa24K97DwptMBBIvVX6Bjk49oyQ==} + dependencies: + '@types/katex': 0.16.7 + devlop: 1.1.0 + katex: 0.16.9 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + dev: false + + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + dev: false + + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + dependencies: + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + dev: false + + /micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + dev: false + + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4(supports-color@5.5.0) + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + dev: true + + /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'} + dependencies: + mime-db: 1.52.0 + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /mini-css-extract-plugin@2.7.7(webpack@5.90.0): + resolution: {integrity: sha512-+0n11YGyRavUR3IlaOzJ0/4Il1avMvJ1VJfhWfCn24ITQXhRr1gghbhhrda6tgtNcpZaWKdSuwKq20Jb7fnlyw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + schema-utils: 4.2.0 + webpack: 5.90.0(esbuild@0.17.19) + dev: true + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: true + + /minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: true + + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: true + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + dev: true + + /mixin-object@2.0.1: + resolution: {integrity: sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 0.1.8 + is-extendable: 0.1.1 + dev: true + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /mobx-react-lite@4.0.6(mobx@6.12.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0rOE0KDMwV9CzsstYC86ZxxrUpKLGBN0/T3WpKZibLnJcukdb9HVL8VKHoDxaBPbInLZ5azPKUod4mXTsi+u+A==} + peerDependencies: + mobx: ^6.9.0 + react: ^16.8.0 || ^17 || ^18 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + mobx: 6.12.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + /mobx@6.12.0: + resolution: {integrity: sha512-Mn6CN6meXEnMa0a5u6a5+RKrqRedHBhZGd15AWLk9O6uFY4KYHzImdt8JI8WODo1bjTSRnwXhJox+FCUZhCKCQ==} + dev: false + + /mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.6.2 + dev: true + + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + dev: true + + /node-html-parser@6.1.12: + resolution: {integrity: sha512-/bT/Ncmv+fbMGX96XG9g05vFt43m/+SYKIs9oAemQVYyVcZmDAI2Xq/SbNcpOA35eF0Zk2av3Ksf+Xk8Vt8abA==} + dependencies: + css-select: 5.1.0 + he: 1.2.0 + dev: true + + /node-libs-browser@2.2.1: + resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} + dependencies: + assert: 1.5.1 + browserify-zlib: 0.2.0 + buffer: 4.9.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.0 + domain-browser: 1.2.0 + events: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 0.0.1 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 2.3.8 + stream-browserify: 2.0.2 + stream-http: 2.8.3 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.0 + url: 0.11.3 + util: 0.11.1 + vm-browserify: 1.1.2 + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-run-path@5.2.0: + resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + dev: true + + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + dev: true + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: true + + /param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /parse-asn1@5.1.6: + resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} + dependencies: + asn1.js: 5.4.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + dev: true + + /parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + dependencies: + '@types/unist': 2.0.10 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + dev: false + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: false + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /path-browserify@0.0.1: + resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} + dev: true + + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.1.0 + minipass: 7.0.4 + dev: true + + /path-to-regexp@6.2.1: + resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + dev: true + + /pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + dependencies: + find-up: 6.3.0 + dev: true + + /pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + dependencies: + find-up: 3.0.0 + dev: true + + /postcss-calc@9.0.1(postcss@8.4.33): + resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-colormin@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-TXKOxs9LWcdYo5cgmcSHPkyrLAh86hX1ijmyy6J8SbOhyv6ua053M3ZAM/0j44UsnQNIWdl8gb5L7xX2htKeLw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + browserslist: 4.22.2 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-convert-values@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-aeBmaTnGQ+NUSVQT8aY0sKyAD/BaLJenEKZ03YK0JnDE1w1Rr8XShoxdal2V2H26xTJKr3v5haByOhJuyT4UYw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + browserslist: 4.22.2 + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-properties@13.1.5(postcss@8.4.33): + resolution: {integrity: sha512-98DXk81zTGqMVkGANysMHbGIg3voH383DYo3/+c+Abzay3nao+vM/f4Jgzsakk9S7BDsEw5DiW7sFy5G4W2wLA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/cascade-layer-name-parser': 1.0.7(@csstools/css-parser-algorithms@2.5.0)(@csstools/css-tokenizer@2.2.3) + '@csstools/css-parser-algorithms': 2.5.0(@csstools/css-tokenizer@2.2.3) + '@csstools/css-tokenizer': 2.2.3 + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-discard-comments@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-f1KYNPtqYLUeZGCHQPKzzFtsHaRuECe6jLakf/RjSRqvF5XHLZnM2+fXLhb8Qh/HBFHs3M4cSLb1k3B899RYIg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + dev: true + + /postcss-discard-duplicates@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-1hvUs76HLYR8zkScbwyJ8oJEugfPV+WchpnA+26fpJ7Smzs51CzGBHC32RS03psuX/2l0l0UKh2StzNxOrKCYg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + dev: true + + /postcss-discard-empty@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-yitcmKwmVWtNsrrRqGJ7/C0YRy53i0mjexBDQ9zYxDwTWVBgbU4+C9jIZLmQlTDT9zhml+u0OMFJh8+31krmOg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + dev: true + + /postcss-discard-overridden@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-qs0ehZMMZpSESbRkw1+inkf51kak6OOzNRaoLd/U7Fatp0aN2HQ1rxGOrJvYcRAN9VpX8kUF13R2ofn8OlvFVA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + dev: true + + /postcss-font-variant@5.0.0(postcss@8.4.33): + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.33 + dev: true + + /postcss-initial@4.0.1(postcss@8.4.33): + resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.33 + dev: true + + /postcss-media-minmax@5.0.0(postcss@8.4.33): + resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.33 + dev: true + + /postcss-merge-longhand@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-+yfVB7gEM8SrCo9w2lCApKIEzrTKl5yS1F4yGhV3kSim6JzbfLGJyhR1B6X+6vOT0U33Mgx7iv4X9MVWuaSAfw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + stylehacks: 6.0.2(postcss@8.4.33) + dev: true + + /postcss-merge-rules@6.0.3(postcss@8.4.33): + resolution: {integrity: sha512-yfkDqSHGohy8sGYIJwBmIGDv4K4/WrJPX355XrxQb/CSsT4Kc/RxDi6akqn5s9bap85AWgv21ArcUWwWdGNSHA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + browserslist: 4.22.2 + caniuse-api: 3.0.0 + cssnano-utils: 4.0.1(postcss@8.4.33) + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 + dev: true + + /postcss-minify-font-values@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-tIwmF1zUPoN6xOtA/2FgVk1ZKrLcCvE0dpZLtzyyte0j9zUeB8RTbCqrHZGjJlxOvNWKMYtunLrrl7HPOiR46w==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-gradients@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-M1RJWVjd6IOLPl1hYiOd5HQHgpp6cvJVLrieQYS9y07Yo8itAr6jaekzJphaJFR0tcg4kRewCk3kna9uHBxn/w==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + colord: 2.9.3 + cssnano-utils: 4.0.1(postcss@8.4.33) + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-params@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-zwQtbrPEBDj+ApELZ6QylLf2/c5zmASoOuA4DzolyVGdV38iR2I5QRMsZcHkcdkZzxpN8RS4cN7LPskOkTwTZw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + browserslist: 4.22.2 + cssnano-utils: 4.0.1(postcss@8.4.33) + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-selectors@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-0b+m+w7OAvZejPQdN2GjsXLv5o0jqYHX3aoV0e7RBKPCsB7TYG5KKWBFhGnB/iP3213Ts8c5H4wLPLMm7z28Sg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 + dev: true + + /postcss-nesting@12.0.1(postcss@8.4.33): + resolution: {integrity: sha512-6LCqCWP9pqwXw/njMvNK0hGY44Fxc4B2EsGbn6xDcxbNRzP8GYoxT7yabVVMLrX3quqOJ9hg2jYMsnkedOf8pA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': 3.0.1(postcss-selector-parser@6.0.15) + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 + dev: true + + /postcss-normalize-charset@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-aW5LbMNRZ+oDV57PF9K+WI1Z8MPnF+A8qbajg/T8PP126YrGX1f9IQx21GI2OlGz7XFJi/fNi0GTbY948XJtXg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + dev: true + + /postcss-normalize-display-values@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-mc3vxp2bEuCb4LgCcmG1y6lKJu1Co8T+rKHrcbShJwUmKJiEl761qb/QQCfFwlrvSeET3jksolCR/RZuMURudw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-positions@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-HRsq8u/0unKNvm0cvwxcOUEcakFXqZ41fv3FOdPn916XFUrympjr+03oaLkuZENz3HE9RrQE9yU0Xv43ThWjQg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-repeat-style@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-Gbb2nmCy6tTiA7Sh2MBs3fj9W8swonk6lw+dFFeQT68B0Pzwp1kvisJQkdV6rbbMSd9brMlS8I8ts52tAGWmGQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-string@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-5Fhx/+xzALJD9EI26Aq23hXwmv97Zfy2VFrt5PLT8lAhnBIZvmaT5pQk+NuJ/GWj/QWaKSKbnoKDGLbV6qnhXg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-timing-functions@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-4zcczzHqmCU7L5dqTB9rzeqPWRMc0K2HoR+Bfl+FSMbqGBUcP5LRfgcH4BdRtLuzVQK1/FHdFoGT3F7rkEnY+g==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-unicode@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-Ff2VdAYCTGyMUwpevTZPZ4w0+mPjbZzLLyoLh/RMpqUqeQKZ+xMm31hkxBavDcGKcxm6ACzGk0nBfZ8LZkStKA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + browserslist: 4.22.2 + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-url@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-jEXL15tXSvbjm0yzUV7FBiEXwhIa9H88JOXDGQzmcWoB4mSjZIsmtto066s2iW9FYuIrIF4k04HA2BKAOpbsaQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-whitespace@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-ordered-values@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-XXbb1O/MW9HdEhnBxitZpPFbIvDgbo9NK4c/5bOfiKpnIGZDoL2xd7/e6jW5DYLsWxBbs+1nZEnVgnjnlFViaA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + cssnano-utils: 4.0.1(postcss@8.4.33) + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-page-break@3.0.4(postcss@8.4.33): + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + dependencies: + postcss: 8.4.33 + dev: true + + /postcss-reduce-initial@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-YGKalhNlCLcjcLvjU5nF8FyeCTkCO5UtvJEt0hrPZVCTtRLSOH4z00T1UntQPj4dUmIYZgMj8qK77JbSX95hSw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + browserslist: 4.22.2 + caniuse-api: 3.0.0 + postcss: 8.4.33 + dev: true + + /postcss-reduce-transforms@6.0.1(postcss@8.4.33): + resolution: {integrity: sha512-fUbV81OkUe75JM+VYO1gr/IoA2b/dRiH6HvMwhrIBSUrxq3jNZQZitSnugcTLDi1KkQh1eR/zi+iyxviUNBkcQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-svgo@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-IH5R9SjkTkh0kfFOQDImyy1+mTCb+E830+9SV1O+AaDcoHTvfsvt6WwJeo7KwcHbFnevZVCsXhDmjFiGVuwqFQ==} + engines: {node: ^14 || ^16 || >= 18} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + svgo: 3.2.0 + dev: true + + /postcss-unique-selectors@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-8IZGQ94nechdG7Y9Sh9FlIY2b4uS8/k8kdKRX040XHsS3B6d1HrJAkXrBSsSu4SuARruSsUjW3nlSw8BHkaAYQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 + dev: true + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /postcss@8.4.33: + resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: true + + /promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + dependencies: + asap: 2.0.6 + dev: true + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /property-information@6.4.1: + resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==} + dev: false + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + /public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + dependencies: + bn.js: 4.12.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + parse-asn1: 5.1.6 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /pug-attrs@3.0.0: + resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} + dependencies: + constantinople: 4.0.1 + js-stringify: 1.0.2 + pug-runtime: 3.0.1 + dev: true + + /pug-code-gen@3.0.2: + resolution: {integrity: sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==} + dependencies: + constantinople: 4.0.1 + doctypes: 1.1.0 + js-stringify: 1.0.2 + pug-attrs: 3.0.0 + pug-error: 2.0.0 + pug-runtime: 3.0.1 + void-elements: 3.1.0 + with: 7.0.2 + dev: true + + /pug-error@2.0.0: + resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==} + dev: true + + /pug-filters@4.0.0: + resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} + dependencies: + constantinople: 4.0.1 + jstransformer: 1.0.0 + pug-error: 2.0.0 + pug-walk: 2.0.0 + resolve: 1.22.8 + dev: true + + /pug-lexer@5.0.1: + resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} + dependencies: + character-parser: 2.2.0 + is-expression: 4.0.0 + pug-error: 2.0.0 + dev: true + + /pug-linker@4.0.0: + resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} + dependencies: + pug-error: 2.0.0 + pug-walk: 2.0.0 + dev: true + + /pug-load@3.0.0: + resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} + dependencies: + object-assign: 4.1.1 + pug-walk: 2.0.0 + dev: true + + /pug-parser@6.0.0: + resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} + dependencies: + pug-error: 2.0.0 + token-stream: 1.0.0 + dev: true + + /pug-runtime@3.0.1: + resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} + dev: true + + /pug-strip-comments@2.0.0: + resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} + dependencies: + pug-error: 2.0.0 + dev: true + + /pug-walk@2.0.0: + resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} + dev: true + + /pug@3.0.2: + resolution: {integrity: sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==} + dependencies: + pug-code-gen: 3.0.2 + pug-filters: 4.0.0 + pug-lexer: 5.0.1 + pug-linker: 4.0.0 + pug-load: 3.0.0 + pug-parser: 6.0.0 + pug-runtime: 3.0.1 + pug-strip-comments: 2.0.0 + dev: true + + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + + /randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: true + + /re-resizable@6.9.11(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-a3hiLWck/NkmyLvGWUuvkAmN1VhwAz4yOhS6FdMTaxCUVN9joIWkT11wsO68coG/iEYuwn+p/7qAmfQzRhiPLQ==} + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /re-resizable@6.9.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0xYKS5+Z0zk+vICQlcZW+g54CcJTTmHluA7JUUgvERDxnKAnytylcyPsA+BSFi759s5hPlHmBRegFrwXs2FuBQ==} + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + dependencies: + fast-memoize: 2.5.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + + /react-draggable@4.4.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==} + peerDependencies: + react: '>= 16.3.0' + react-dom: '>= 16.3.0' + dependencies: + clsx: 1.2.1 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + dev: false + + /react-helmet@6.1.0(react@18.2.0): + resolution: {integrity: sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==} + peerDependencies: + react: '>=16.3.0' + dependencies: + object-assign: 4.1.1 + prop-types: 15.8.1 + react: 18.2.0 + react-fast-compare: 3.2.2 + react-side-effect: 2.1.2(react@18.2.0) + dev: false + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + /react-markdown@9.0.1(@types/react@18.0.38)(react@18.2.0): + resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + dependencies: + '@types/hast': 3.0.4 + '@types/react': 18.0.38 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.0 + html-url-attributes: 3.0.0 + mdast-util-to-hast: 13.1.0 + react: 18.2.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.0 + unified: 11.0.4 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + dev: true + + /react-rnd@10.4.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0m887AjQZr6p2ADLNnipquqsDq4XJu/uqVqI3zuoGD19tRm6uB83HmZWydtkilNp5EWsOHbLGF4IjWMdd5du8Q==} + peerDependencies: + react: '>=16.3.0' + react-dom: '>=16.3.0' + dependencies: + re-resizable: 6.9.6(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-draggable: 4.4.5(react-dom@18.2.0)(react@18.2.0) + tslib: 2.3.1 + dev: false + + /react-router-dom@6.17.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qWHkkbXQX+6li0COUUPKAUkxjNNqPJuiBd27dVwQGDNsuFBdMbrS6UZ0CLYc4CsbdLYTckn4oB4tGDuPZpPhaQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@remix-run/router': 1.10.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router: 6.17.0(react@18.2.0) + + /react-router@6.17.0(react@18.2.0): + resolution: {integrity: sha512-YJR3OTJzi3zhqeJYADHANCGPUu9J+6fT5GLv82UWRGSxu6oJYCKVmxUcaBQuGm9udpWmPsvpme/CdHumqgsoaA==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + dependencies: + '@remix-run/router': 1.10.0 + react: 18.2.0 + + /react-side-effect@2.1.2(react@18.2.0): + resolution: {integrity: sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==} + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + dependencies: + '@babel/runtime': 7.23.8 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /redux-promise-middleware@6.2.0(redux@4.2.1): + resolution: {integrity: sha512-TEzfMeLX63gju2WqkdFQlQMvUGYzFvJNePIJJsBlbPHs3Txsbc/5Rjhmtha1XdMU6lkeiIlp1Qx7AR3Zo9he9g==} + peerDependencies: + redux: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + redux: 4.2.1 + dev: false + + /redux@4.2.1: + resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} + dependencies: + '@babel/runtime': 7.23.8 + dev: false + + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.23.8 + dev: true + + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: true + + /regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: true + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /rehype-highlight@7.0.0: + resolution: {integrity: sha512-QtobgRgYoQaK6p1eSr2SD1i61f7bjF2kZHAQHxeCHAuJf7ZUDMvQ7owDq9YTkmar5m5TSUol+2D3bp3KfJf/oA==} + dependencies: + '@types/hast': 3.0.4 + hast-util-to-text: 4.0.0 + lowlight: 3.1.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + dev: false + + /rehype-katex@7.0.0: + resolution: {integrity: sha512-h8FPkGE00r2XKU+/acgqwWUlyzve1IiOKwsEkg4pDL3k48PiE0Pt+/uLtVHDVkN1yA4iurZN6UES8ivHVEQV6Q==} + dependencies: + '@types/hast': 3.0.4 + '@types/katex': 0.16.7 + hast-util-from-html-isomorphic: 2.0.0 + hast-util-to-text: 4.0.0 + katex: 0.16.9 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.1 + dev: false + + /relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + dev: true + + /remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-math@6.0.0: + resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-math: 3.0.0 + micromark-extension-math: 3.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + micromark-util-types: 2.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-rehype@11.1.0: + resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + mdast-util-to-hast: 13.1.0 + unified: 11.0.4 + vfile: 6.0.1 + dev: false + + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.4 + dev: false + + /renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /reselect@4.1.8: + resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: true + + /robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + dev: false + + /rslog@1.2.0: + resolution: {integrity: sha512-2ZFW7Jtkzt4VkwCFRTE+0lKbzSLSH7U5OM9qZ5YuKk4xVrlIJJZx9Qh/fCyfsk8H+qXbermMc7+18qKJxLQ/bw==} + engines: {node: '>=14.17.6'} + + /rspack-manifest-plugin@5.0.0-alpha0(webpack@5.90.0): + resolution: {integrity: sha512-a84H6P/lK0x3kb0I8Qdiwxrnjt1oNW0j+7kwPMWcODJu8eYFBrTXa1t+14n18Jvg9RKIR6llCH16mYxf2d0s8A==} + engines: {node: '>=14'} + peerDependencies: + webpack: ^5.75.0 + dependencies: + tapable: 2.2.1 + webpack: 5.90.0(esbuild@0.17.19) + webpack-sources: 2.3.1 + dev: true + + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + dev: false + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + dev: true + + /safe-array-concat@1.1.0: + resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /safe-regex-test@1.0.2: + resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-regex: 1.1.4 + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + /schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + ajv-keywords: 5.1.0(ajv@8.12.0) + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + dev: true + + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + + /set-function-length@1.2.0: + resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + dev: true + + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: true + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: true + + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /shallow-clone@0.1.2: + resolution: {integrity: sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + kind-of: 2.0.1 + lazy-cache: 0.2.7 + mixin-object: 2.0.1 + dev: true + + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: true + + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + dev: true + + /snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /source-list-map@2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: false + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + /space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + dev: false + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + dev: true + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + + /stream-browserify@2.0.2: + resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + dev: true + + /stream-http@2.8.3: + resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.8 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + dev: true + + /stream-slice@0.1.2: + resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} + + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 + side-channel: 1.0.4 + dev: true + + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /stringify-entities@4.0.3: + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /style-to-object@1.0.5: + resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} + dependencies: + inline-style-parser: 0.2.2 + dev: false + + /styled-components@5.3.11(@babel/core@7.23.7)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} + engines: {node: '>=10'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + react-is: '>= 16.8.0' + dependencies: + '@babel/helper-module-imports': 7.22.15 + '@babel/traverse': 7.23.7(supports-color@5.5.0) + '@emotion/is-prop-valid': 1.2.1 + '@emotion/stylis': 0.8.5 + '@emotion/unitless': 0.7.5 + babel-plugin-styled-components: 2.1.4(@babel/core@7.23.7)(styled-components@5.3.11) + css-to-react-native: 3.2.0 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + shallowequal: 1.1.0 + supports-color: 5.5.0 + transitivePeerDependencies: + - '@babel/core' + dev: false + + /styled-components@6.1.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw==} + engines: {node: '>= 16'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + dependencies: + '@emotion/is-prop-valid': 1.2.1 + '@emotion/unitless': 0.8.0 + '@types/stylis': 4.2.0 + css-to-react-native: 3.2.0 + csstype: 3.1.2 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 + stylis: 4.3.1 + tslib: 2.5.0 + dev: true + + /stylehacks@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-00zvJGnCu64EpMjX8b5iCZ3us2Ptyw8+toEkb92VdmkEaRaSGBNKAoK6aWZckhXxmQP8zWiTaFaiMGIU8Ve8sg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + dependencies: + browserslist: 4.22.2 + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 + dev: true + + /stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + dev: false + + /stylis@4.3.1: + resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + + /supports-color@9.3.1: + resolution: {integrity: sha512-knBY82pjmnIzK3NifMo3RxEIRD9E0kIzV4BKcyTZ9+9kWgLMxd4PrsTSMoFQUabgRBbF8KOLRDCyKgNV+iK44Q==} + engines: {node: '>=12'} + dev: true + + /supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: true + + /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==} + dev: true + + /svgo@3.2.0: + resolution: {integrity: sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.0.0 + dev: true + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + /tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: true + + /terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + dev: true + + /terser-webpack-plugin@5.3.10(esbuild@0.17.19)(webpack@5.90.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + esbuild: 0.17.19 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.27.0 + webpack: 5.90.0(esbuild@0.17.19) + dev: true + + /terser-webpack-plugin@5.3.10(webpack@5.90.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.27.0 + webpack: 5.90.0 + dev: false + + /terser-webpack-plugin@5.3.9(esbuild@0.17.19)(webpack@5.90.0): + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + esbuild: 0.17.19 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.27.0 + webpack: 5.90.0(esbuild@0.17.19) + dev: true + + /terser@5.19.2: + resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /terser@5.27.0: + resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + dependencies: + setimmediate: 1.0.5 + dev: true + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /to-arraybuffer@1.0.1: + resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: true + + /token-stream@1.0.0: + resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} + dev: true + + /trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + dev: false + + /trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + dev: false + + /ts-loader@9.4.4(typescript@5.0.4)(webpack@5.90.0): + resolution: {integrity: sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==} + engines: {node: '>=12.0.0'} + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.15.0 + micromatch: 4.0.5 + semver: 7.5.4 + typescript: 5.0.4 + webpack: 5.90.0(esbuild@0.17.19) + dev: true + + /tsconfig-paths-webpack-plugin@4.1.0: + resolution: {integrity: sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==} + engines: {node: '>=10.13.0'} + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.15.0 + tsconfig-paths: 4.2.0 + dev: true + + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.3.1: + resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} + dev: false + + /tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /tsutils@3.21.0(typescript@5.0.4): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.0.4 + dev: true + + /tty-browserify@0.0.0: + resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + + /typed-assert@1.0.9: + resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} + dev: true + + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} + hasBin: true + dev: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.5 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: true + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: true + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: true + + /unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + dependencies: + '@types/unist': 3.0.2 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.1 + dev: false + + /unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + dev: false + + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + dependencies: + '@types/unist': 3.0.2 + unist-util-visit: 5.0.0 + dev: false + + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + dev: false + + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + + /upath@2.0.1: + resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} + engines: {node: '>=4'} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + + /upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + dependencies: + tslib: 2.6.2 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + + /url@0.11.3: + resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} + dependencies: + punycode: 1.4.1 + qs: 6.11.2 + dev: true + + /use-sync-external-store@1.2.0(react@18.2.0): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + dependencies: + inherits: 2.0.3 + dev: true + + /util@0.11.1: + resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} + dependencies: + inherits: 2.0.3 + dev: true + + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.12 + which-typed-array: 1.1.13 + + /utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + dev: true + + /vfile-location@5.0.2: + resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + dependencies: + '@types/unist': 3.0.2 + vfile: 6.0.1 + dev: false + + /vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + dev: false + + /vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + dev: false + + /vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + dev: true + + /void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + dev: true + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /web-encoding@1.1.5: + resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} + dependencies: + util: 0.12.5 + optionalDependencies: + '@zxing/text-encoding': 0.9.0 + + /web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + dev: false + + /web-streams-polyfill@3.3.2: + resolution: {integrity: sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==} + engines: {node: '>= 8'} + + /webpack-manifest-plugin@5.0.0(webpack@5.90.0): + resolution: {integrity: sha512-8RQfMAdc5Uw3QbCQ/CBV/AXqOR8mt03B6GJmRbhWopE8GzRfEpn+k0ZuWywxW+5QZsffhmFDY1J6ohqJo+eMuw==} + engines: {node: '>=12.22.0'} + peerDependencies: + webpack: ^5.47.0 + dependencies: + tapable: 2.2.1 + webpack: 5.90.0(esbuild@0.17.19) + webpack-sources: 2.3.1 + dev: true + + /webpack-sources@2.3.1: + resolution: {integrity: sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==} + engines: {node: '>=10.13.0'} + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + /webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.5.3)(webpack@5.90.0): + resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} + engines: {node: '>= 12'} + peerDependencies: + html-webpack-plugin: '>= 5.0.0-beta.1 < 6' + webpack: ^5.12.0 + peerDependenciesMeta: + html-webpack-plugin: + optional: true + dependencies: + html-webpack-plugin: 5.5.3(webpack@5.90.0) + typed-assert: 1.0.9 + webpack: 5.90.0(esbuild@0.17.19) + dev: true + + /webpack@5.90.0: + resolution: {integrity: sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.22.2 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.4.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.90.0) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: false + + /webpack@5.90.0(esbuild@0.17.19): + resolution: {integrity: sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.22.2 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.4.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(esbuild@0.17.19)(webpack@5.90.0) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.13 + dev: true + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /with@7.0.2: + resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} + engines: {node: '>= 10.0.0'} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + assert-never: 1.2.1 + babel-walk: 3.0.0-canary-5 + dev: true + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + 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 + dev: true + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: false + + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + + /zod-validation-error@1.3.1(zod@3.22.4): + resolution: {integrity: sha512-cNEXpla+tREtNdAnNKY4xKY1SGOn2yzyuZMu4O0RQylX9apRpUjNcPkEc3uHIAr5Ct7LenjZt6RzjEH6+JsqVQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + zod: ^3.18.0 + dependencies: + zod: 3.22.4 + dev: true + + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: true + + /zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + dev: false diff --git a/frontend/src/.eslintrc.js b/frontend/src/.eslintrc.js new file mode 100644 index 0000000..fafc003 --- /dev/null +++ b/frontend/src/.eslintrc.js @@ -0,0 +1,9 @@ +// eslint-disable-next-line import/no-commonjs +module.exports = { + root: true, + extends: ['@modern-js-app'], + parserOptions: { + tsconfigRootDir: __dirname, + project: ['../tsconfig.json'], + }, +}; diff --git a/frontend/src/apis/agent-select-modify.ts b/frontend/src/apis/agent-select-modify.ts new file mode 100644 index 0000000..927d34c --- /dev/null +++ b/frontend/src/apis/agent-select-modify.ts @@ -0,0 +1,86 @@ +import { api } from '@sttot/api-hooks'; +import { IApiStepTask } from './generate-base-plan'; + +export interface IAgentSelectModifyInitRequest { + goal: string; + stepTask: IApiStepTask; +} + +export interface IAgentSelectModifyAddRequest { + aspects: string[]; +} + +export interface IScoreItem { + reason: string; + score: number; +} + +type IRawAgentSelectModifyInitResponse = Record< + string, + Record +>; + +export const agentSelectModifyInitApi = api< + IAgentSelectModifyInitRequest, + Record> +>( + ({ goal, stepTask }) => ({ + baseURL: 'api', + url: '/agentSelectModify_init', + method: 'POST', + data: { + 'General Goal': goal, + stepTask: { + StepName: stepTask.name, + TaskContent: stepTask.content, + // eslint-disable-next-line @typescript-eslint/naming-convention + InputObject_List: stepTask.inputs, + OutputObject: stepTask.output, + }, + }, + }), + ({ data }: { data: IRawAgentSelectModifyInitResponse }) => + Object.fromEntries( + Object.entries(data).map(([agent, reasons]) => [ + agent, + Object.fromEntries( + Object.entries(reasons).map(([reason, score]) => [ + reason, + { + reason: score.Reason, + score: score.Score, + }, + ]), + ), + ]), + ), +); + +export const agentSelectModifyAddApi = api< + IAgentSelectModifyAddRequest, + Record> +>( + data => ({ + baseURL: 'api', + url: '/agentSelectModify_addAspect', + method: 'POST', + data: { + aspectList: data.aspects, + }, + }), + ({ data }: { data: IRawAgentSelectModifyInitResponse }) => + Object.fromEntries( + Object.entries(data).map(([agent, reasons]) => [ + agent, + Object.fromEntries( + Object.entries(reasons).map(([reason, score]) => [ + reason, + { + reason: score.Reason, + score: score.Score, + }, + ]), + ), + ]), + ), +); diff --git a/frontend/src/apis/execute-plan.ts b/frontend/src/apis/execute-plan.ts new file mode 100644 index 0000000..a5d8105 --- /dev/null +++ b/frontend/src/apis/execute-plan.ts @@ -0,0 +1,144 @@ +import { api } from '@sttot/api-hooks'; +import type { IGeneratedPlan } from './generate-base-plan'; +import { ActionType } from '@/storage/plan'; + +export interface IExecutePlanRequest { + plan: IGeneratedPlan; + stepsToRun: number; + rehearsalLog: IExecuteNode[]; +} + +export enum ExecuteNodeType { + Step = 'step', + Object = 'object', +} + +type IExecuteRawResponse = { + LogNodeType: string; + NodeId: string; + // eslint-disable-next-line @typescript-eslint/naming-convention + InputName_List?: string[] | null; + OutputName?: string; + content?: string; + ActionHistory?: { + ID: string; + ActionType: string; + AgentName: string; + Description: string; + ImportantInput: string[]; + // eslint-disable-next-line @typescript-eslint/naming-convention + Action_Result: string; + }[]; +}; + +export interface IExecuteStepHistoryItem { + id: string; + type: ActionType; + agent: string; + description: string; + inputs: string[]; + result: string; +} + +export interface IExecuteStep { + type: ExecuteNodeType.Step; + id: string; + inputs: string[]; + output: string; + history: IExecuteStepHistoryItem[]; +} + +export interface IExecuteObject { + type: ExecuteNodeType.Object; + id: string; + content: string; +} + +export type IExecuteNode = IExecuteStep | IExecuteObject; + +export const executePlanApi = api( + ({ plan, stepsToRun, rehearsalLog }) => ({ + baseURL: '/api', + url: '/executePlan', + method: 'POST', + timeout: Infinity, + data: { + // eslint-disable-next-line @typescript-eslint/naming-convention + num_StepToRun: Number.isFinite(stepsToRun) + ? Math.max(stepsToRun, 1) + : null, + plan: { + 'Initial Input Object': plan.inputs, + 'General Goal': plan.goal, + 'Collaboration Process': plan.process.map(step => ({ + StepName: step.name, + TaskContent: step.content, + // eslint-disable-next-line @typescript-eslint/naming-convention + InputObject_List: step.inputs, + OutputObject: step.output, + AgentSelection: step.agents, + // eslint-disable-next-line @typescript-eslint/naming-convention + Collaboration_Brief_frontEnd: step.brief, + TaskProcess: step.process.map(action => ({ + ActionType: action.type, + AgentName: action.agent, + Description: action.description, + ID: action.id, + ImportantInput: action.inputs, + })), + })), + }, + RehearsalLog: rehearsalLog.map(h => + h.type === ExecuteNodeType.Object + ? { + LogNodeType: 'object', + NodeId: h.id, + content: h.content, + } + : { + LogNodeType: 'step', + NodeId: h.id, + // eslint-disable-next-line @typescript-eslint/naming-convention + InputName_List: h.inputs, + OutputName: h.output, + chatLog: [], + // eslint-disable-next-line @typescript-eslint/naming-convention + inputObject_Record: [], + ActionHistory: h.history.map(item => ({ + ID: item.id, + ActionType: item.type, + AgentName: item.agent, + Description: item.description, + ImportantInput: item.inputs, + // eslint-disable-next-line @typescript-eslint/naming-convention + Action_Result: item.result, + })), + }, + ), + }, + }), + ({ data }) => + data.map((raw: IExecuteRawResponse) => + raw.LogNodeType === 'step' + ? { + type: ExecuteNodeType.Step, + id: raw.NodeId, + inputs: raw.InputName_List || [], + output: raw.OutputName ?? '', + history: + raw.ActionHistory?.map(item => ({ + id: item.ID, + type: item.ActionType, + agent: item.AgentName, + description: item.Description, + inputs: item.ImportantInput, + result: item.Action_Result, + })) || [], + } + : { + type: ExecuteNodeType.Object, + id: raw.NodeId, + content: raw.content || '', + }, + ), +); diff --git a/frontend/src/apis/fill-agent-selection.ts b/frontend/src/apis/fill-agent-selection.ts new file mode 100644 index 0000000..479f09b --- /dev/null +++ b/frontend/src/apis/fill-agent-selection.ts @@ -0,0 +1,61 @@ +import { api } from '@sttot/api-hooks'; +import { IApiStepTask, vec2Hsl, IRawStepTask } from './generate-base-plan'; + +export interface IFillAgentSelectionRequest { + goal: string; + stepTask: IApiStepTask; + agents: string[]; +} + +export const fillAgentSelectionApi = api< + IFillAgentSelectionRequest, + IApiStepTask +>( + ({ goal, stepTask, agents }) => ({ + baseURL: 'api', + url: '/fill_stepTask_TaskProcess', + method: 'POST', + data: { + 'General Goal': goal, + // eslint-disable-next-line @typescript-eslint/naming-convention + stepTask_lackTaskProcess: { + StepName: stepTask.name, + TaskContent: stepTask.content, + // eslint-disable-next-line @typescript-eslint/naming-convention + InputObject_List: stepTask.inputs, + OutputObject: stepTask.output, + AgentSelection: agents, + }, + }, + }), + ({ data }: { data: IRawStepTask }) => ({ + name: data.StepName ?? '', + content: data.TaskContent ?? '', + inputs: data.InputObject_List ?? [], + output: data.OutputObject ?? '', + agents: data.AgentSelection ?? [], + brief: { + template: data.Collaboration_Brief_FrontEnd?.template ?? '', + data: Object.fromEntries( + Object.entries(data.Collaboration_Brief_FrontEnd?.data ?? {}).map( + ([key, value]) => [ + key, + { + text: value.text, + style: { + background: vec2Hsl(value.color), + }, + }, + ], + ), + ), + }, + process: data.TaskProcess.map(process => ({ + id: process.ID, + type: process.ActionType, + agent: process.AgentName, + description: process.Description, + inputs: process.ImportantInput, + })), + }), +); diff --git a/frontend/src/apis/fill-step-task.ts b/frontend/src/apis/fill-step-task.ts new file mode 100644 index 0000000..413fbe4 --- /dev/null +++ b/frontend/src/apis/fill-step-task.ts @@ -0,0 +1,55 @@ +import { api } from '@sttot/api-hooks'; +import { IApiStepTask, IRawStepTask, vec2Hsl } from './generate-base-plan'; + +export interface IFillStepTaskRequest { + goal: string; + stepTask: IApiStepTask; +} + +export const fillStepTaskApi = api( + ({ goal, stepTask }) => ({ + baseURL: 'api', + url: '/fill_stepTask', + method: 'POST', + data: { + 'General Goal': goal, + stepTask: { + StepName: stepTask.name, + TaskContent: stepTask.content, + // eslint-disable-next-line @typescript-eslint/naming-convention + InputObject_List: stepTask.inputs, + OutputObject: stepTask.output, + }, + }, + }), + ({ data }: { data: IRawStepTask }) => ({ + name: data.StepName ?? '', + content: data.TaskContent ?? '', + inputs: data.InputObject_List ?? [], + output: data.OutputObject ?? '', + agents: data.AgentSelection ?? [], + brief: { + template: data.Collaboration_Brief_FrontEnd?.template ?? '', + data: Object.fromEntries( + Object.entries(data.Collaboration_Brief_FrontEnd?.data ?? {}).map( + ([key, value]) => [ + key, + { + text: value.text, + style: { + background: vec2Hsl(value.color), + }, + }, + ], + ), + ), + }, + process: data.TaskProcess.map(process => ({ + id: process.ID, + type: process.ActionType, + agent: process.AgentName, + description: process.Description, + inputs: process.ImportantInput, + })), + }), +); diff --git a/frontend/src/apis/generate-base-plan.ts b/frontend/src/apis/generate-base-plan.ts new file mode 100644 index 0000000..b5326d7 --- /dev/null +++ b/frontend/src/apis/generate-base-plan.ts @@ -0,0 +1,119 @@ +import { api } from '@sttot/api-hooks'; +import { SxProps } from '@mui/material'; + +export const vec2Hsl = (vec: HslColorVector): string => + `hsl(${vec[0]},${vec[1]}%,${vec[2]}%)`; + +export interface IPlanGeneratingRequest { + goal: string; + inputs: string[]; +} + +export interface IRichText { + template: string; + data: Record; +} + +export interface IApiAgentAction { + id: string; + type: string; + agent: string; + description: string; + inputs: string[]; +} + +export interface IApiStepTask { + name: string; + content: string; + inputs: string[]; + output: string; + agents: string[]; + brief: IRichText; + process: IApiAgentAction[]; +} + +export interface IGeneratedPlan { + inputs: string[]; + goal: string; + process: IApiStepTask[]; +} + +type HslColorVector = [number, number, number]; + +export interface IRawStepTask { + StepName?: string; + TaskContent?: string; + // eslint-disable-next-line @typescript-eslint/naming-convention + InputObject_List?: string[]; + OutputObject?: string; + AgentSelection?: string[]; + // eslint-disable-next-line @typescript-eslint/naming-convention + Collaboration_Brief_FrontEnd: { + template: string; + data: Record; + }; + TaskProcess: { + ActionType: string; + AgentName: string; + Description: string; + ID: string; + ImportantInput: string[]; + }[]; +} + +export interface IRawPlanResponse { + 'Initial Input Object'?: string[] | string; + 'General Goal'?: string; + 'Collaboration Process'?: IRawStepTask[]; +} + +export const genBasePlanApi = api( + data => ({ + baseURL: '/api', + url: '/generate_basePlan', + method: 'POST', + data: { + 'General Goal': data.goal, + 'Initial Input Object': data.inputs, + }, + timeout: Infinity, + }), + ({ data }: { data: IRawPlanResponse }) => ({ + inputs: + (typeof data['Initial Input Object'] === 'string' + ? [data['Initial Input Object']] + : data['Initial Input Object']) || [], + goal: data['General Goal'] || '', + process: + data['Collaboration Process']?.map(step => ({ + name: step.StepName || '', + content: step.TaskContent || '', + inputs: step.InputObject_List || [], + output: step.OutputObject || '', + agents: step.AgentSelection || [], + brief: { + template: step.Collaboration_Brief_FrontEnd.template, + data: Object.fromEntries( + Object.entries(step.Collaboration_Brief_FrontEnd.data).map( + ([key, value]) => [ + key, + { + text: value.text, + style: { + background: vec2Hsl(value.color), + }, + }, + ], + ), + ), + }, + process: step.TaskProcess.map(process => ({ + id: process.ID, + type: process.ActionType, + agent: process.AgentName, + description: process.Description, + inputs: process.ImportantInput, + })), + })) ?? [], + }), +); diff --git a/frontend/src/apis/get-agents.ts b/frontend/src/apis/get-agents.ts new file mode 100644 index 0000000..8cdfc16 --- /dev/null +++ b/frontend/src/apis/get-agents.ts @@ -0,0 +1,33 @@ +import { api } from '@sttot/api-hooks'; +import { IconName, IconMap } from '@/components/AgentIcon'; + +interface IRawAgent { + Name: string; + Profile: string; + Icon: string; +} + +export interface IAgent { + name: string; + profile: string; + icon: IconName; +} + +export const getAgentsApi = api( + () => ({ + baseURL: '/api', + url: '/getAgent', + method: 'POST', + timeout: Infinity, + }), + ({ data }) => { + const data_ = data as IRawAgent[]; + return data_.map(agent => ({ + name: agent.Name, + profile: agent.Profile, + icon: IconMap[agent.Icon.replace(/\.png$/, '')], + })); + }, +); + +export const useAgents = getAgentsApi.createMemoHook(); diff --git a/frontend/src/apis/new-action-branch.ts b/frontend/src/apis/new-action-branch.ts new file mode 100644 index 0000000..a74feee --- /dev/null +++ b/frontend/src/apis/new-action-branch.ts @@ -0,0 +1,66 @@ +import { api } from '@sttot/api-hooks'; +import { IApiStepTask, IApiAgentAction } from './generate-base-plan'; + +export interface INewActionBranchRequest { + goal: string; + batch?: number; + requirement: string; + stepTask: IApiStepTask; + base: IApiAgentAction[]; + existing: IApiAgentAction[]; +} + +export type INewActionBranchResponse = IApiAgentAction[][]; + +export const newActionBranchApi = api< + INewActionBranchRequest, + INewActionBranchResponse +>( + data => ({ + baseURL: '/api', + url: '/branch_TaskProcess', + method: 'POST', + timeout: Infinity, + data: { + // eslint-disable-next-line @typescript-eslint/naming-convention + branch_Number: data.batch ?? 1, + // eslint-disable-next-line @typescript-eslint/naming-convention + Modification_Requirement: data.requirement, + // eslint-disable-next-line @typescript-eslint/naming-convention + Baseline_Completion: data.base.map(s => ({ + ID: s.id, + ActionType: s.type, + AgentName: s.agent, + Description: s.description, + ImportantInput: s.inputs, + })), + // eslint-disable-next-line @typescript-eslint/naming-convention + Existing_Steps: data.existing.map(s => ({ + ID: s.id, + ActionType: s.type, + AgentName: s.agent, + Description: s.description, + ImportantInput: s.inputs, + })), + 'General Goal': data.goal, + stepTaskExisting: { + StepName: data.stepTask.name, + TaskContent: data.stepTask.content, + // eslint-disable-next-line @typescript-eslint/naming-convention + InputObject_List: data.stepTask.inputs, + OutputObject: data.stepTask.output, + AgentSelection: data.stepTask.agents, + }, + }, + }), + ({ data }) => + data.map((s: any) => + s.map((s: any) => ({ + id: s.ID, + type: s.ActionType, + agent: s.AgentName, + description: s.Description, + inputs: s.ImportantInput, + })), + ), +); diff --git a/frontend/src/apis/new-plan-branch.ts b/frontend/src/apis/new-plan-branch.ts new file mode 100644 index 0000000..79919c1 --- /dev/null +++ b/frontend/src/apis/new-plan-branch.ts @@ -0,0 +1,57 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import { api } from '@sttot/api-hooks'; +import { IApiStepTask } from './generate-base-plan'; + +export interface INewPlanBranchRequest { + goal: string; + inputs: string[]; + batch?: number; + requirement: string; + base: IApiStepTask[]; + existing: IApiStepTask[]; +} + +export type INewPlanBranchResponse = IApiStepTask[][]; + +export const newPlanBranchApi = api< + INewPlanBranchRequest, + INewPlanBranchResponse +>( + data => ({ + baseURL: '/api', + url: '/branch_PlanOutline', + method: 'POST', + timeout: Infinity, + data: { + branch_Number: data.batch ?? 1, + Modification_Requirement: data.requirement, + Baseline_Completion: data.base.map(s => ({ + StepName: s.name, + TaskContent: s.content, + InputObject_List: s.inputs, + OutputObject: s.output, + })), + Existing_Steps: data.existing.map(s => ({ + StepName: s.name, + TaskContent: s.content, + InputObject_List: s.inputs, + OutputObject: s.output, + })), + 'General Goal': data.goal, + 'Initial Input Object': data.inputs, + }, + }), + ({ data }) => + data.map((s: any) => + s.map((s: any) => ({ + name: s.StepName, + content: s.TaskContent, + inputs: s.InputObject_List, + output: s.OutputObject, + agents: [], + brief: { template: '', data: {} }, + process: [], + })), + ), +); +/* eslint-enable @typescript-eslint/naming-convention */ diff --git a/frontend/src/apis/set-agents.ts b/frontend/src/apis/set-agents.ts new file mode 100644 index 0000000..1e98ae3 --- /dev/null +++ b/frontend/src/apis/set-agents.ts @@ -0,0 +1,32 @@ +import { api } from '@sttot/api-hooks'; +import { IconName } from '@/components/AgentIcon'; + +export interface IAgent { + name: string; + profile: string; + icon: IconName; +} + +export const setAgentsApi = api( + agents => ({ + baseURL: '/api', + url: '/setAgents', + method: 'POST', + data: agents.map(agent => ({ + Name: agent.name, + Profile: agent.profile, + })), + timeout: Infinity, + }), + ({ data }) => { + // const data_ = data as IRawAgent[]; + // return data_.map(agent => ({ + // name: agent.Name, + // profile: agent.Profile, + // icon: IconMap[agent.Icon.replace(/\.png$/, '')], + // })); + return data; + }, +); + +export const setagents = setAgentsApi.createMemoHook(); diff --git a/frontend/src/components/AgentAssignment/fakeAgentAssignment.ts b/frontend/src/components/AgentAssignment/fakeAgentAssignment.ts new file mode 100644 index 0000000..90b924b --- /dev/null +++ b/frontend/src/components/AgentAssignment/fakeAgentAssignment.ts @@ -0,0 +1,54 @@ +const agentList = [ + 'Alice', + 'Morgan', + 'Riley', + 'Charlie', + 'Bob', + 'Jordan', + 'Sam', + 'Quinn', + 'Parker', + 'Skyler', + 'Reagan', + 'Pat', + 'Leslie', + 'Dana', + 'Casey', + 'Terry', + 'Shawn', + 'Kim', + 'Alexis', + 'Taylor', + 'Bailey', + 'Drew', + 'Cameron', + 'Sage', + 'Peyton', +]; +const aspectList = [ + 'Creative Thinking', + 'Emotional Intelligence', + 'Philosophical Reasoning', +]; +export const fakeAgentScoreMap = new Map( + aspectList.map(aspect => [ + aspect, + new Map( + agentList.map(agent => [ + agent, + { + Reason: `reason for ${agent} in ${aspect}`, + Score: Math.floor(Math.random() * 5) + 1, + }, + ]), + ), + ]), +); + +export const fakeAgentSelections = new Map([ + ['1', { agents: ['Alice', 'Morgan'] }], + ['2', { agents: ['Alice', 'Morgan', 'Riley'] }], + ['3', { agents: ['Alice', 'Bob', 'Riley'] }], +]); + +export const fakeCurrentAgentSelection = '1'; diff --git a/frontend/src/components/AgentAssignment/index.tsx b/frontend/src/components/AgentAssignment/index.tsx new file mode 100644 index 0000000..f71c8d1 --- /dev/null +++ b/frontend/src/components/AgentAssignment/index.tsx @@ -0,0 +1,561 @@ +/* eslint-disable max-lines */ + +import React, { useState, useEffect } from 'react'; +import { observer } from 'mobx-react-lite'; +import { CircularProgress, SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import Tooltip, { TooltipProps, tooltipClasses } from '@mui/material/Tooltip'; +import { styled } from '@mui/material/styles'; +import Paper from '@mui/material/Paper'; +import InputBase from '@mui/material/InputBase'; +import IconButton from '@mui/material/IconButton'; +// import SendIcon from '@mui/icons-material/Send'; +import _ from 'lodash'; +// import { autorun } from 'mobx'; +// import { +// fakeAgentScoreMap, +// fakeAgentSelections, +// fakeCurrentAgentSelection, +// } from './data/fakeAgentAssignment'; +import CheckIcon from '@/icons/checkIcon'; +import AgentIcon from '@/components/AgentIcon'; +import { globalStorage } from '@/storage'; +import SendIcon from '@/icons/sendIcon'; + +const HtmlTooltip = styled(({ className, ...props }: TooltipProps) => ( + +))(({ theme }) => ({ + [`& .${tooltipClasses.tooltip}`]: { + backgroundColor: '#e7e7e7', + color: 'rgba(0, 0, 0, 0.87)', + width: 'fit-content', + fontSize: theme.typography.pxToRem(12), + border: '1px solid #dadde9', + }, +})); +const getHeatColor = (value: number) => { + return `rgba(74, 156, 158,${value / 5})`; +}; +const AgentScoreCell: React.FC<{ + data: { score: number; reason: string }; +}> = ({ data }) => { + return ( + + Score Reason: + {data.reason} + + } + followCursor + placement="right-start" + > + + {data.score} + + + ); +}; + +const AspectCell: React.FC<{ + key?: string; + aspect?: string; + style?: SxProps; + isSelected?: boolean; + handleSelected?: (aspect: string) => void; +}> = ({ key, aspect, style, isSelected, handleSelected }) => { + const mystyle: SxProps = { + width: '150px', + height: '35px', + position: 'sticky', // 使得这个Box成为sticky元素 + right: -1, // 0距离左侧,这将确保它卡在左侧 + backgroundColor: '#ffffff', // 防止滚动时格子被内容覆盖 + zIndex: 1, // 确保它在其他内容上方 + display: 'flex', + alignItems: 'center', + paddingLeft: '8px', + fontSize: '14px', + lineHeight: '1', + borderBottom: '2px solid #ffffff', + ...style, + }; + if (!aspect) { + return ; + } + return ( + { + if (handleSelected) { + handleSelected(aspect); + } + }} + > + {aspect || ''} + + ); +}; + +const EmotionInput: React.FC<{ + inputCallback: (arg0: string) => void; +}> = ({ inputCallback }) => { + const [inputValue, setInputValue] = useState(''); + const inputRef = React.useRef(); + + const handleInputChange = (event: any) => { + setInputValue(event.target.value); + }; + + const handleButtonClick = () => { + inputCallback(inputValue); + setInputValue(''); + }; + return ( + + + + + + + ); +}; +const findSameSelectionId = ( + a: Record< + string, + { + id: string; + agents: string[]; + } + >, + b: Set, +) => { + const sortedB = Array.from(b).slice().sort(); // 对 b 进行排序 + const bString = sortedB.join(','); + + const akeys = Object.keys(a); + for (const akey of akeys) { + const sortedA = a[akey].agents.slice().sort(); // 对 a 中的每个数组进行排序 + if (sortedA.join(',') === bString) { + return akey; // 找到相同数组则返回索引 + } + } + return undefined; // 未找到相同数组 +}; +interface IPlanModification { + style?: SxProps; +} +export default observer(({ style = {} }: IPlanModification) => { + // console.log(prop); + const { + agentMap, + renderingAgentSelections, + api: { agentsReady }, + } = globalStorage; + + // autorun(() => { + // console.log(renderingAgentSelections); + // }); + + const [agentSelections, setAgentSelections] = React.useState< + Record< + string, + { + id: string; + agents: string[]; + } + > + >({}); + const [currentAgentSelection, setCurrentSelection] = React.useState< + string | undefined + >(); + const [heatdata, setHeatdata] = React.useState< + Record< + string, + Record< + string, + { + score: number; + reason: string; + } + > + > + >({}); + + const [aspectSelectedSet, setAspectSelectedSet] = React.useState( + new Set(), + ); + + useEffect(() => { + if (renderingAgentSelections.current) { + setAgentSelections(renderingAgentSelections.selections); + setHeatdata(renderingAgentSelections.heatdata); + setCurrentSelection(renderingAgentSelections.current); + setAgentSelectedSet( + new Set( + renderingAgentSelections.selections[ + renderingAgentSelections.current + ].agents, + ), + ); + } + }, [renderingAgentSelections]); + + const handleAspectSelected = (aspect: string) => { + const newSet = new Set(aspectSelectedSet); + if (newSet.has(aspect)) { + newSet.delete(aspect); + } else { + newSet.add(aspect); + } + setAspectSelectedSet(newSet); + }; + const [agentSelectedSet, setAgentSelectedSet] = React.useState( + new Set(), + ); + const handleAgentSelected = (agent: string) => { + const newSet = new Set(agentSelectedSet); + if (newSet.has(agent)) { + newSet.delete(agent); + } else { + newSet.add(agent); + } + setAgentSelectedSet(newSet); + }; + + const [agentKeyList, setAgentKeyList] = useState([]); + + useEffect(() => { + // 计算平均分的函数 + function calculateAverageScore(agent: string) { + const aspects = aspectSelectedSet.size + ? Array.from(aspectSelectedSet) + : Object.keys(heatdata); + const meanScore = _.mean( + aspects.map(aspect => heatdata[aspect]?.[agent]?.score ?? 0), + ); + + return meanScore; + } + + // 对agentMap.keys()进行排序 + const newAgentKeyList = Array.from(agentMap.keys()).sort((a, b) => { + const isSelectedA = agentSelectedSet.has(a); + const isSelectedB = agentSelectedSet.has(b); + + if (isSelectedA && !isSelectedB) { + return -1; + } else if (!isSelectedA && isSelectedB) { + return 1; + } else { + const averageScoreA = calculateAverageScore(a); + const averageScoreB = calculateAverageScore(b); + + // 降序排序(平均分高的在前) + return averageScoreB - averageScoreA; + } + }); + + setAgentKeyList(newAgentKeyList); + }, [agentMap, heatdata, aspectSelectedSet, agentSelectedSet]); + + if (!agentsReady) { + return <>; + } + + return ( + + {globalStorage.api.agentAspectScoresGenerating && ( + + + + )} + + {/* assignments */} + + Assignment + + {Object.keys(agentSelections).map(selectionId => ( + { + if (selectionId === currentAgentSelection) { + return '2px solid #508a87'; + } + return '2px solid #afafaf'; + })(), + borderRadius: '10px', + margin: '4px 0px', + padding: '4px 0px 4px 0px', + backgroundColor: '#f6f6f6', + cursor: 'pointer', + display: 'flex', + justifyContent: 'center', // 添加这一行 + alignItems: 'center', // 添加这一行 + flexWrap: 'wrap', + }} + onClick={() => { + globalStorage.setCurrentAgentSelection(selectionId); + }} + > + {agentSelections[selectionId].agents.map(agentName => ( + + ))} + + ))} + + + {/* comparison */} + + Comparison + + + + {agentSelectedSet.size > 0 && ( + +
{ + const findSelectionId = findSameSelectionId( + agentSelections, + agentSelectedSet, + ); + if (findSelectionId) { + globalStorage.setCurrentAgentSelection(findSelectionId); + } else { + globalStorage.addAgentSelection( + Array.from(agentSelectedSet), + ); + } + }} + > + +
+
+ )} + + {agentKeyList.map((agentKey, agentIndex) => ( + + { + handleAgentSelected(agentKey); + }} + style={{ + display: 'grid', + placeItems: 'center', + gridColumn: `${agentIndex + 1} / ${agentIndex + 2}`, + gridRow: '1 / 2', + height: '100%', + width: '100%', + padding: '0px 0px', + cursor: 'pointer', + }} + > + + + {Object.keys(heatdata).map(aspect => { + return ( + + ); + })} + + ))} + + + {Object.keys(heatdata).map(aspect => ( + + ))} +
+
+ + { + globalStorage.addAgentSelectionAspects(arg0); + }} + /> + +
+
+
+ ); + // return hhh; +}); +/* eslint-enable max-lines */ diff --git a/frontend/src/components/AgentBoard/AgentCard.tsx b/frontend/src/components/AgentBoard/AgentCard.tsx new file mode 100644 index 0000000..913afe0 --- /dev/null +++ b/frontend/src/components/AgentBoard/AgentCard.tsx @@ -0,0 +1,165 @@ +import { observer } from 'mobx-react-lite'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import DutyItem from './DutyItem'; +import AgentIcon from '@/components/AgentIcon'; +import { IAgentCard, globalStorage } from '@/storage'; +import ChangeAgentIcon from '@/icons/ChangeAgentIcon'; + +export interface IAgentCardProps { + agent: IAgentCard; + style?: SxProps; +} + +export default observer(({ agent, style = {} }: IAgentCardProps) => ( + + + 0 ? '4px' : undefined, + }} + > + + + {agent.name} + + + {agent.profile} + + + + + + + {agent.actions.length > 0 ? ( + + + Current Duty: + + + {agent.actions.map((action, index) => ( + + ))} + + + ) : ( + <> + )} + + {agent.lastOfUsed ? ( + (globalStorage.agentAssigmentWindow = true)} + > + + + {globalStorage.focusingStepTask?.agentSelectionIds?.length ?? 0} + + + ) : ( + <> + )} + +)); diff --git a/frontend/src/components/AgentBoard/DutyItem.tsx b/frontend/src/components/AgentBoard/DutyItem.tsx new file mode 100644 index 0000000..8117920 --- /dev/null +++ b/frontend/src/components/AgentBoard/DutyItem.tsx @@ -0,0 +1,123 @@ +import React from 'react'; +import { Divider, SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import MoreHorizIcon from '@mui/icons-material/MoreHoriz'; +import UnfoldLessIcon from '@mui/icons-material/UnfoldLess'; +import { IAgentAction, globalStorage } from '@/storage'; + +export interface IDutyItem { + action: IAgentAction; + style?: SxProps; +} + +export default React.memo(({ action, style = {} }) => { + const [expand, setExpand] = React.useState(false); + const _style = { + ...action.style, + ...style, + }; + React.useEffect(() => { + globalStorage.renderLines({ + repeat: 3, + delay: 0, + interval: 20, + }); + }, [expand]); + if (!expand) { + return ( + + {action.type} + setExpand(true)} + sx={{ + cursor: 'pointer', + userSelect: 'none', + height: '14px', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + background: '#0002', + borderRadius: '8px', + marginLeft: '8px', + padding: '0 4px', + '&:hover': { + background: '#0003', + }, + }} + > + + + + ); + } + return ( + + + {action.type} + + + + {action.description} + + setExpand(false)} + sx={{ + position: 'absolute', + right: '6px', + bottom: '6px', + cursor: 'pointer', + userSelect: 'none', + height: '14px', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + background: '#0002', + borderRadius: '12px', + marginLeft: '4px', + padding: '0 4px', + '&:hover': { + background: '#0003', + }, + }} + > + + + + ); +}); diff --git a/frontend/src/components/AgentBoard/index.tsx b/frontend/src/components/AgentBoard/index.tsx new file mode 100644 index 0000000..7da6db3 --- /dev/null +++ b/frontend/src/components/AgentBoard/index.tsx @@ -0,0 +1,163 @@ +import React from 'react'; +import { observer } from 'mobx-react-lite'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import IconButton from '@mui/material/IconButton'; +import PersonAddAlt1Icon from '@mui/icons-material/PersonAddAlt1'; +import AgentCard from './AgentCard'; +import { globalStorage } from '@/storage'; +import { IconMap } from '@/components/AgentIcon'; +import LoadingMask from '@/components/LoadingMask'; +import Title from '@/components/Title'; + +export interface IAgentBoardProps { + style?: SxProps; + onAddAgent?: () => void; +} + +export default observer(({ style = {} }: IAgentBoardProps) => { + const { + agentCards, + api: { fetchingAgents }, + } = globalStorage; + const onFileChange = React.useCallback( + (event: React.ChangeEvent) => { + const file = event.target.files?.[0]; + if (file) { + const reader = new FileReader(); + reader.onload = e => { + if (!e.target?.result) { + return; + } + try { + const json = JSON.parse(e.target.result?.toString?.() ?? '{}'); + // 检查json是否满足{Name:string,Icon:string,Profile:string}[] + if (Array.isArray(json)) { + const isValid = json.every( + item => + typeof item.Name === 'string' && + typeof item.Icon === 'string' && + typeof item.Profile === 'string', + ); + if (isValid) { + globalStorage.setAgents( + json.map(agent => ({ + name: agent.Name, + icon: IconMap[agent.Icon.replace(/\.png$/, '')], + profile: agent.Profile, + })), + ); + } else { + console.error('Invalid JSON format'); + } + } else { + console.error('JSON is not an array'); + } + } catch (e) { + console.error(e); + } + }; + reader.readAsText(file); + event.target.value = ''; + event.target.files = null; + } + }, + [], + ); + + return ( + + input': { display: 'none' }, + }} + > + + <Box + sx={{ + flexGrow: 1, + display: 'flex', + alignItems: 'center', + justifyContent: 'end', + }} + > + <IconButton + size="small" + component="label" + disabled={fetchingAgents} + sx={{ + color: 'primary.main', + '&:hover': { + color: 'primary.dark', + }, + }} + > + <PersonAddAlt1Icon /> + <input + type="file" + accept=".json" + onChange={onFileChange} + style={{ + clip: 'rect(0 0 0 0)', + clipPath: 'inset(50%)', + height: 1, + overflow: 'hidden', + position: 'absolute', + bottom: 0, + left: 0, + whiteSpace: 'nowrap', + width: 1, + }} + /> + </IconButton> + </Box> + </Box> + <Stack + spacing={1} + sx={{ + position: 'relative', + padding: '6px 12px', + // paddingBottom: '44px', + borderRadius: '10px', + height: 0, + flexGrow: 1, + overflowY: 'auto', + }} + onScroll={() => globalStorage.renderLines({ delay: 0, repeat: 2 })} + > + {agentCards.map(agent => { + return <AgentCard key={agent.name} agent={agent} />; + })} + {fetchingAgents ? ( + <LoadingMask + style={{ + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + }} + /> + ) : ( + <></> + )} + </Stack> + </Box> + ); +}); diff --git a/frontend/src/components/AgentHiring/AgentCart/HiringCard.tsx b/frontend/src/components/AgentHiring/AgentCart/HiringCard.tsx new file mode 100644 index 0000000..95a6638 --- /dev/null +++ b/frontend/src/components/AgentHiring/AgentCart/HiringCard.tsx @@ -0,0 +1,38 @@ +import React from 'react'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import AgentIcon, { IAgentIconProps } from '@/components/AgentIcon'; + +export interface IHiringCardProps { + icon: IAgentIconProps['name']; + name: string; + profile: string; + style?: SxProps; +} + +export default React.memo<IHiringCardProps>( + ({ icon, name, profile, style = {} }) => ( + <Box + sx={{ + borderRadius: '6px', + display: 'flex', + backgroundColor: '#BBB', + padding: '8px 4px', + ...style, + }} + > + <AgentIcon + name={icon} + style={{ + flexGrow: 0, + width: '40px', + height: 'auto', + marginRight: '6px', + }} + /> + <Box sx={{ flexGrow: 1, width: 0, height: '100%', fontSize: '14px' }}> + <strong>{name}</strong>: {profile} + </Box> + </Box> + ), +); diff --git a/frontend/src/components/AgentHiring/AgentCart/index.tsx b/frontend/src/components/AgentHiring/AgentCart/index.tsx new file mode 100644 index 0000000..e0c02dd --- /dev/null +++ b/frontend/src/components/AgentHiring/AgentCart/index.tsx @@ -0,0 +1,82 @@ +import React from 'react'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import IconButton from '@mui/material/IconButton'; +import RefreshIcon from '@mui/icons-material/Refresh'; +import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline'; +import HiringCard from './HiringCard'; +import { globalStorage } from '@/storage'; +import LoadingMask from '@/components/LoadingMask'; + +export interface IAgentCartProps { + style?: SxProps; +} + +export default React.memo<IAgentCartProps>(() => { + // const { agents, refreshAgents, refresingAgents } = + // React.useContext(GlobalContext); + // return ( + // <> + // <Box + // sx={{ + // width: '100%', + // opacity: 0.5, + // fontWeight: 600, + // fontSize: '18px', + // userSelect: 'none', + // padding: '2px 6px', + // }} + // > + // Agent Cart + // </Box> + // {refresingAgents ? ( + // <LoadingMask + // style={{ + // position: 'absolute', + // top: 0, + // left: 0, + // right: 0, + // bottom: 0, + // }} + // /> + // ) : ( + // <Stack + // spacing={1} + // sx={{ + // position: 'relative', + // padding: '6px', + // paddingBottom: '44px', + // background: '#CCC', + // borderRadius: '10px', + // }} + // > + // {agents.map(agent => ( + // <HiringCard + // key={agent.name} + // icon={agent.icon} + // name={agent.name} + // profile={agent.profile} + // /> + // ))} + // <IconButton + // aria-label="刷新" + // onClick={refreshAgents} + // disabled={refresingAgents} + // sx={{ position: 'absolute', right: '36px', bottom: '2px' }} + // > + // <RefreshIcon /> + // </IconButton> + // <IconButton + // aria-label="提交" + // disabled={refresingAgents} + // sx={{ position: 'absolute', right: '6px', bottom: '2px' }} + // > + // <CheckCircleOutlineIcon /> + // </IconButton> + // </Stack> + // )} + // </> + // ); + return <></>; +}); diff --git a/frontend/src/components/AgentHiring/AgentRepo/index.tsx b/frontend/src/components/AgentHiring/AgentRepo/index.tsx new file mode 100644 index 0000000..2c4e6dd --- /dev/null +++ b/frontend/src/components/AgentHiring/AgentRepo/index.tsx @@ -0,0 +1,89 @@ +import React from 'react'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import IconButton from '@mui/material/IconButton'; +import SwapVertIcon from '@mui/icons-material/SwapVert'; + +export interface IAgentRepoProps { + style?: SxProps; +} + +const REPO_COLORS: string[] = [ + 'rgb(172,172,172)', + 'rgb(165,184,182)', + 'rgb(159,195,192)', + 'rgb(153,206,202)', + 'rgb(107,204,198)', +]; + +export default React.memo<IAgentRepoProps>(() => { + const repos = React.useMemo( + () => + Array(30) + .fill(0) + .map((_, index) => ( + <Box + key={index} + sx={{ + width: '100%', + height: '100%', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + }} + > + <Box + sx={{ + width: '36px', + height: '36px', + borderRadius: '50%', + background: + REPO_COLORS[Math.floor(Math.random() * REPO_COLORS.length)], + cursor: 'pointer', + transition: 'all 0.3s', + filter: 'contrast(1.0)', + '&:hover': { + filter: 'contrast(1.3)', + }, + }} + /> + </Box> + )), + [], + ); + return ( + <> + <Box + sx={{ + width: '100%', + opacity: 0.5, + fontWeight: 600, + fontSize: '18px', + userSelect: 'none', + padding: '2px 6px', + }} + > + Agent Repo + </Box> + <Box + sx={{ + position: 'relative', + display: 'grid', + gridTemplateColumns: 'repeat(auto-fill, minmax(40px, 1fr))', + gap: '6px', + padding: '16px 10px', + background: '#CCC', + borderRadius: '10px', + }} + > + {repos} + <IconButton + aria-label="提交" + sx={{ position: 'absolute', right: '6px', bottom: '2px' }} + > + <SwapVertIcon /> + </IconButton> + </Box> + </> + ); +}); diff --git a/frontend/src/components/AgentHiring/HireRequirement/index.tsx b/frontend/src/components/AgentHiring/HireRequirement/index.tsx new file mode 100644 index 0000000..f67915d --- /dev/null +++ b/frontend/src/components/AgentHiring/HireRequirement/index.tsx @@ -0,0 +1,84 @@ +import React from 'react'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import IconButton from '@mui/material/IconButton'; +import FormControl from '@mui/material/FormControl'; +import FilledInput from '@mui/material/FilledInput'; +import CampaignIcon from '@mui/icons-material/Campaign'; + +export interface IHireRequirementProps { + style?: SxProps; + valueRef?: React.MutableRefObject<string>; + onSubmit?: (value: string) => void; + onChange?: (value: string) => void; +} + +export default React.memo<IHireRequirementProps>( + ({ style = {}, valueRef, onSubmit, onChange }) => { + const [value, setValue] = React.useState(''); + const handleChange = React.useCallback( + (event: React.ChangeEvent<HTMLInputElement>) => { + setValue(event.target.value); + onChange?.(event.target.value); + }, + [onChange], + ); + const handleSubmit = React.useCallback(() => { + onSubmit?.(value); + }, [onSubmit, value]); + React.useEffect(() => { + if (valueRef) { + valueRef.current = value; + } + }, [valueRef, value]); + return ( + <FormControl + sx={{ + width: '100%', + position: 'relative', + ...style, + }} + > + <Box + sx={{ + width: '100%', + opacity: 0.5, + fontWeight: 600, + fontSize: '18px', + userSelect: 'none', + padding: '2px 6px', + }} + > + Hire Requirement + </Box> + <FilledInput + placeholder="请输入……" + fullWidth + multiline + rows={4} + value={value} + onChange={handleChange} + size="small" + sx={{ + fontSize: '14px', + paddingTop: '10px', + paddingBottom: '10px', + borderRadius: '10px', + borderBottom: 'none !important', + '&::before': { + borderBottom: 'none !important', + }, + }} + /> + <IconButton + disabled={!value} + aria-label="提交" + sx={{ position: 'absolute', right: '6px', bottom: '2px' }} + onClick={handleSubmit} + > + <CampaignIcon /> + </IconButton> + </FormControl> + ); + }, +); diff --git a/frontend/src/components/AgentHiring/index.tsx b/frontend/src/components/AgentHiring/index.tsx new file mode 100644 index 0000000..0d7a351 --- /dev/null +++ b/frontend/src/components/AgentHiring/index.tsx @@ -0,0 +1,28 @@ +import React from 'react'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import HireRequirement from './HireRequirement'; +import AgentRepo from './AgentRepo'; +import AgentCart from './AgentCart'; + +export default React.memo<{ style?: SxProps }>(({ style = {} }) => { + return ( + <Box + sx={{ + background: '#F3F3F3', + // borderRadius: '10px', + padding: '10px', + display: 'flex', + overflow: 'hidden', + flexDirection: 'column', + overflowY: 'auto', + overflowX: 'hidden', + ...style, + }} + > + <HireRequirement /> + <AgentRepo /> + <AgentCart /> + </Box> + ); +}); diff --git a/frontend/src/components/AgentIcon/agents.ts b/frontend/src/components/AgentIcon/agents.ts new file mode 100644 index 0000000..b2668fc --- /dev/null +++ b/frontend/src/components/AgentIcon/agents.ts @@ -0,0 +1,119 @@ +import AbigailChen from '@/static/AgentIcons/Abigail_Chen.png'; +import AdamSmith from '@/static/AgentIcons/Adam_Smith.png'; +import ArthurBurton from '@/static/AgentIcons/Arthur_Burton.png'; +import AyeshaKhan from '@/static/AgentIcons/Ayesha_Khan.png'; +import CarlosGomez from '@/static/AgentIcons/Carlos_Gomez.png'; +import CarmenOrtiz from '@/static/AgentIcons/Carmen_Ortiz.png'; +import EddyLin from '@/static/AgentIcons/Eddy_Lin.png'; +import FranciscoLopez from '@/static/AgentIcons/Francisco_Lopez.png'; +import GiorgioRossi from '@/static/AgentIcons/Giorgio_Rossi.png'; +import HaileyJohnson from '@/static/AgentIcons/Hailey_Johnson.png'; +import IsabellaRodriguez from '@/static/AgentIcons/Isabella_Rodriguez.png'; +import JaneMoreno from '@/static/AgentIcons/Jane_Moreno.png'; +import JenniferMoore from '@/static/AgentIcons/Jennifer_Moore.png'; +import JohnLin from '@/static/AgentIcons/John_Lin.png'; +import KlausMueller from '@/static/AgentIcons/Klaus_Mueller.png'; +import LatoyaWilliams from '@/static/AgentIcons/Latoya_Williams.png'; +import MariaLopez from '@/static/AgentIcons/Maria_Lopez.png'; +import MeiLin from '@/static/AgentIcons/Mei_Lin.png'; +import RajivPatel from '@/static/AgentIcons/Rajiv_Patel.png'; +import RyanPark from '@/static/AgentIcons/Ryan_Park.png'; +import SamMoore from '@/static/AgentIcons/Sam_Moore.png'; +import TamaraTaylor from '@/static/AgentIcons/Tamara_Taylor.png'; +import TomMoreno from '@/static/AgentIcons/Tom_Moreno.png'; +import WolfgangSchulz from '@/static/AgentIcons/Wolfgang_Schulz.png'; +import YurikoYamamoto from '@/static/AgentIcons/Yuriko_Yamamoto.png'; +import Unknown from '@/static/AgentIcons/Unknow.png'; + +export enum IconName { + AbigailChen = 'Abigail_Chen', + AdamSmith = 'Adam_Smith', + ArthurBurton = 'Arthur_Burton', + AyeshaKhan = 'Ayesha_Khan', + CarlosGomez = 'Carlos_Gomez', + CarmenOrtiz = 'Carmen_Ortiz', + EddyLin = 'Eddy_Lin', + FranciscoLopez = 'Francisco_Lopez', + CassandraSmith = 'Cassandra_Smith', + ChristopherCarter = 'Christopher_Carter', + DaveJones = 'Dave_Jones', + DerekSmith = 'Derek_Smith', + ElisaSmith = 'Elisa_Smith', + EricJones = 'Eric_Jones', + FayeSmith = 'Faye_Smith', + FrankSmith = 'Frank_Smith', + GabeSmith = 'Gabe_Smith', + GiorgioRossi = 'Giorgio_Rossi', + HaileyJohnson = 'Hailey_Johnson', + IsabellaRodriguez = 'Isabella_Rodriguez', + JaneMoreno = 'Jane_Moreno', + JenniferMoore = 'Jennifer_Moore', + JohnLin = 'John_Lin', + KlausMueller = 'Klaus_Mueller', + LatoyaWilliams = 'Latoya_Williams', + MariaLopez = 'Maria_Lopez', + MeiLin = 'Mei_Lin', + RajivPatel = 'Rajiv_Patel', + RyanPark = 'Ryan_Park', + SamMoore = 'Sam_Moore', + TamaraTaylor = 'Tamara_Taylor', + TomMoreno = 'Tom_Moreno', + WolfgangSchulz = 'Wolfgang_Schulz', + YurikoYamamoto = 'Yuriko_Yamamoto', + Unknown = 'Unknown', +} + +const LowercaseNameMap: { [key: string]: IconName } = Object.fromEntries( + Object.entries(IconName).map(([name, value]) => [name.toLowerCase(), value]), +); + +export const IconMap = new Proxy<{ [key: string]: IconName }>( + {}, + { + get: (target, name) => { + const lowerCaseName = name + .toString() + .toLowerCase() + .replace(/[\s_]+/g, ''); + return LowercaseNameMap[lowerCaseName] || IconName.Unknown; + }, + }, +); + +export const IconUrl: { [key in IconName]: string } = { + [IconName.Unknown]: Unknown, + [IconName.AbigailChen]: AbigailChen, + [IconName.AdamSmith]: AdamSmith, + [IconName.ArthurBurton]: ArthurBurton, + [IconName.AyeshaKhan]: AyeshaKhan, + [IconName.CarlosGomez]: CarlosGomez, + [IconName.CarmenOrtiz]: CarmenOrtiz, + [IconName.EddyLin]: EddyLin, + [IconName.FranciscoLopez]: FranciscoLopez, + [IconName.CassandraSmith]: AbigailChen, + [IconName.ChristopherCarter]: AbigailChen, + [IconName.DaveJones]: AbigailChen, + [IconName.DerekSmith]: AbigailChen, + [IconName.ElisaSmith]: AbigailChen, + [IconName.EricJones]: AbigailChen, + [IconName.FayeSmith]: AbigailChen, + [IconName.FrankSmith]: AbigailChen, + [IconName.GabeSmith]: AbigailChen, + [IconName.GiorgioRossi]: GiorgioRossi, + [IconName.HaileyJohnson]: HaileyJohnson, + [IconName.IsabellaRodriguez]: IsabellaRodriguez, + [IconName.JaneMoreno]: JaneMoreno, + [IconName.JenniferMoore]: JenniferMoore, + [IconName.JohnLin]: JohnLin, + [IconName.KlausMueller]: KlausMueller, + [IconName.LatoyaWilliams]: LatoyaWilliams, + [IconName.MariaLopez]: MariaLopez, + [IconName.MeiLin]: MeiLin, + [IconName.RajivPatel]: RajivPatel, + [IconName.RyanPark]: RyanPark, + [IconName.SamMoore]: SamMoore, + [IconName.TamaraTaylor]: TamaraTaylor, + [IconName.TomMoreno]: TomMoreno, + [IconName.WolfgangSchulz]: WolfgangSchulz, + [IconName.YurikoYamamoto]: YurikoYamamoto, +}; diff --git a/frontend/src/components/AgentIcon/index.tsx b/frontend/src/components/AgentIcon/index.tsx new file mode 100644 index 0000000..721c77e --- /dev/null +++ b/frontend/src/components/AgentIcon/index.tsx @@ -0,0 +1,119 @@ +import React from 'react'; +import Tooltip, { TooltipProps, tooltipClasses } from '@mui/material/Tooltip'; +import { styled, SxProps } from '@mui/material/styles'; +// import Box from '@mui/material/Box'; +import { Divider, Box } from '@mui/material'; +import { IconName, IconUrl, IconMap } from './agents'; +import { IAgent } from '@/apis/get-agents'; +import { ActionType } from '@/storage/plan'; + +interface ITooltipInfo extends IAgent { + action?: { type: ActionType; description: string; style: SxProps }; +} +export interface IAgentIconProps { + name?: IconName | string; + style?: React.CSSProperties; + tooltipInfo?: ITooltipInfo; +} + +const HtmlTooltip = styled(({ className, ...props }: TooltipProps) => ( + <Tooltip {...props} classes={{ popper: className }} /> +))(({ theme }) => ({ + [`& .${tooltipClasses.tooltip}`]: { + backgroundColor: '#f2f2f2', + color: 'rgba(0, 0, 0, 0.87)', + width: 'fit-content', + fontSize: theme.typography.pxToRem(12), + border: '1px solid #0003', + boxShadow: '1px 1px 4px #0003', + }, +})); + +const generateTooltip = (info: ITooltipInfo) => { + return ( + <Box sx={{ maxWidth: '20vh', padding: '4px 0px' }}> + <Box + sx={{ + fontSize: '16px', + fontWeight: 600, + userSelect: 'none', + padding: '0 4px', + }} + > + {info.name} + </Box> + <Box + sx={{ + margin: '4px 0', + fontSize: '14px', + padding: '0 4px', + borderRadius: '6px', + fontWeight: 400, + userSelect: 'none', + }} + > + {info.profile} + </Box> + {info.action && ( + <Box + sx={{ + borderRadius: '6px', + padding: '4px 4px', + border: '1px solid #333', + ...info.action.style, + }} + > + <Box sx={{ fontWeight: 600 }}>{info.action.type}</Box> + <Divider + sx={{ + margin: '1px 0px', + borderBottom: '1px dashed', // 设置为虚线 + borderColor: '#888888', + }} + /> + <Box>{info.action.description}</Box> + </Box> + )} + </Box> + ); +}; + +export default React.memo<IAgentIconProps>( + ({ style = {}, name = 'Unknown', tooltipInfo }) => { + const _name = React.useMemo(() => IconMap[name], [name]); + + return tooltipInfo ? ( + <HtmlTooltip + title={generateTooltip(tooltipInfo)} + followCursor + placement="right-start" + > + <img + // title={_name} + alt={_name} + src={IconUrl[_name]} + style={{ + width: '100%', + height: '100%', + imageRendering: 'pixelated', + ...style, + }} + /> + </HtmlTooltip> + ) : ( + <img + // title={_name} + alt={_name} + src={IconUrl[_name]} + style={{ + width: '100%', + height: '100%', + imageRendering: 'pixelated', + ...style, + }} + /> + ); + }, +); + +export { IconName, IconMap, IconUrl } from './agents'; diff --git a/frontend/src/components/FloatWindow/index.tsx b/frontend/src/components/FloatWindow/index.tsx new file mode 100644 index 0000000..f8b9d01 --- /dev/null +++ b/frontend/src/components/FloatWindow/index.tsx @@ -0,0 +1,120 @@ +import React from 'react'; +import { Rnd } from 'react-rnd'; +import Box from '@mui/material/Box'; +import IconButton from '@mui/material/IconButton'; +import CloseIcon from '@mui/icons-material/Close'; +import { debounce } from 'lodash'; + +export interface IFloatingWindowProps { + title: React.ReactNode; + children: React.ReactNode; + onClose?: () => void; + onResize?: () => void; +} + +let windowsArrange: HTMLElement[] = []; +const focusWindow = (element: HTMLElement) => { + windowsArrange = windowsArrange.filter( + ele => ele.ownerDocument.contains(ele) && element !== ele, + ); + windowsArrange.push(element); + windowsArrange.forEach( + (ele, index) => (ele.style.zIndex = `${index + 1000}`), + ); +}; + +export default React.memo<IFloatingWindowProps>( + ({ title, children, onClose, onResize }) => { + const [resizeable, setResizeable] = React.useState(true); + const containerRef = React.useRef<HTMLElement>(null); + React.useEffect(() => { + if (containerRef.current) { + focusWindow(containerRef.current.parentElement!); + } + }, []); + const defaultSize = React.useMemo(() => { + const width = Math.min(800, window.innerWidth - 20); + const height = Math.min(600, window.innerHeight - 20); + const x = (window.innerWidth - width) / 2; + const y = (window.innerHeight - height) / 2; + return { x, y, width, height }; + }, []); + return ( + <Rnd + /* optional props */ + style={{ + borderColor: '#43A8AA', + borderWidth: '3px', + borderStyle: 'solid', + boxShadow: '3px 3px 20px #0005', + display: 'flex', + flexDirection: 'column', + }} + minHeight={60} + minWidth={150} + default={defaultSize} + onMouseDown={() => { + if (containerRef.current) { + focusWindow(containerRef.current.parentElement!); + } + }} + bounds={document.body} + disableDragging={!resizeable} + onResize={debounce(() => { + onResize?.(); + }, 50)} + > + <Box + sx={{ + bgcolor: 'primary.main', + color: 'white', + height: '36px', + display: 'flex', + alignItems: 'center', + padding: '0 5px', + userSelect: 'none', + cursor: 'move', + }} + > + {typeof title === 'string' ? ( + <Box + sx={{ + fontSize: '18px', + fontWeight: 800, + flexGrow: 1, + whiteSpace: 'nowrap', + overflow: 'hidden', + textOverflow: 'ellipsis', + }} + > + {title} + </Box> + ) : ( + title + )} + <Box sx={{ display: 'flex' }}> + <IconButton + disabled={onClose === undefined} + onClick={onClose} + sx={{ color: 'white' }} + > + <CloseIcon /> + </IconButton> + </Box> + </Box> + <Box + ref={containerRef} + sx={{ + flexGrow: 1, + background: '#F3F3F3', + overflow: 'auto', + }} + onPointerEnter={() => setResizeable(false)} + onPointerLeave={() => setResizeable(true)} + > + {children} + </Box> + </Rnd> + ); + }, +); diff --git a/frontend/src/components/HeadBar/index.tsx b/frontend/src/components/HeadBar/index.tsx new file mode 100644 index 0000000..c0648e6 --- /dev/null +++ b/frontend/src/components/HeadBar/index.tsx @@ -0,0 +1,231 @@ +import React from 'react'; +import { observer } from 'mobx-react-lite'; +import { IconButton, SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import AddIcon from '@mui/icons-material/Add'; +import CloseIcon from '@mui/icons-material/Close'; +import UploadIcon from '@mui/icons-material/Upload'; +import DownloadIcon from '@mui/icons-material/Download'; +import HelpOutlineIcon from '@mui/icons-material/HelpOutline'; +import LogoIcon from '@/icons/LogoIcon'; +import { globalStorage } from '@/storage'; + +export default observer(({ style = {} }: { style?: SxProps }) => { + const pageTags = React.useMemo( + () => ( + <Tabs + value={globalStorage.currentPlanId ?? ''} + onChange={(_event, newId) => + globalStorage.focusPlan(newId || undefined) + } + aria-label="plan tabs" + variant="scrollable" + scrollButtons="auto" + TabIndicatorProps={{ + children: <span className="MuiTabs-indicatorSpan" />, + }} + sx={{ + minHeight: '40px', + height: '40px', + '& .MuiTabs-indicator': { + display: 'flex', + justifyContent: 'center', + backgroundColor: 'transparent', + }, + '& .MuiTabs-indicatorSpan': { + maxWidth: 60, + width: '100%', + backgroundColor: 'rgb(168, 247, 227)', + }, + }} + > + <Tab + label={ + <Box sx={{ display: 'flex', alignItems: 'center' }}> + <AddIcon /> + </Box> + } + value="" + sx={{ + color: '#fffb', + minHeight: '40px', + height: '40px', + background: '#fff1', + width: '40px', + minWidth: '0', + '&.Mui-selected': { + color: '#fff', + fontWeight: 900, + }, + }} + /> + {globalStorage.planTabArrange.map(id => ( + <Tab + value={id} + key={id} + label={ + <Box sx={{ display: 'flex', alignItems: 'center' }}> + <IconButton + size="small" + onClick={() => globalStorage.removePlan(id)} + sx={{ + opacity: 0.6, + '&:hover': { opacity: 1 }, + }} + > + <CloseIcon + sx={{ + color: '#fff', + fontSize: '16px', + }} + /> + </IconButton> + Plan + <IconButton + size="small" + sx={{ + opacity: 0.6, + '&:hover': { opacity: 1 }, + }} + onClick={() => { + const jsonString = JSON.stringify( + globalStorage.dumpPlan(id), + ); + // download file + const blob = new Blob([jsonString], { + type: 'application/json', + }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = `plan-${id}.json`; + a.click(); + a.remove(); + }} + > + <DownloadIcon + sx={{ + color: '#fff', + fontSize: '16px', + }} + /> + </IconButton> + </Box> + } + sx={{ + color: '#fffb', + minHeight: '40px', + height: '40px', + borderLeft: '1px solid #3333', + background: '#fff1', + '&.Mui-selected': { + color: '#fff', + fontWeight: 900, + }, + padding: '0 4px', + }} + /> + ))} + </Tabs> + ), + [globalStorage.planTabArrange, globalStorage.currentPlanId], + ); + + return ( + <Box + sx={{ + bgcolor: 'primary.main', + color: '#fff', + width: '100%', + display: 'flex', + userSelect: 'none', + ...style, + }} + > + <Box sx={{ flexGrow: 1, display: 'flex' }}> + {globalStorage.devMode ? ( + <Box + sx={{ display: 'flex', alignItems: 'center', marginLeft: '10px' }} + > + <LogoIcon /> + <Box sx={{ marginLeft: '6px', fontWeight: 800, fontSize: '20px' }}> + AGENTCOORD + </Box> + </Box> + ) : ( + pageTags + )} + </Box> + <IconButton component="label"> + <input + type="file" + accept=".json" + style={{ + clip: 'rect(0 0 0 0)', + clipPath: 'inset(50%)', + height: 1, + overflow: 'hidden', + position: 'absolute', + bottom: 0, + left: 0, + whiteSpace: 'nowrap', + width: 1, + }} + onChange={e => { + const file = e.target.files?.[0]; + if (file) { + const reader = new FileReader(); + reader.onload = event => { + const content = event.target?.result as string; + globalStorage.loadPlan(JSON.parse(content)); + }; + reader.readAsText(file); + } + }} + /> + <UploadIcon sx={{ color: '#fff' }} /> + </IconButton> + {globalStorage.devMode && globalStorage.currentPlanId && ( + <IconButton + disabled={globalStorage.currentPlanId === undefined} + onClick={() => { + const jsonString = JSON.stringify( + globalStorage.dumpPlan(globalStorage.currentPlanId!), + ); + // download file + const blob = new Blob([jsonString], { + type: 'application/json', + }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = `plan-${globalStorage.currentPlanId!}.json`; + a.click(); + a.remove(); + }} + > + <DownloadIcon sx={{ color: '#fff' }} /> + </IconButton> + )} + {!globalStorage.devMode && ( + <Box + sx={{ + display: 'flex', + height: '100%', + marginRight: '10px', + alignItems: 'center', + fontSize: '13px', + textShadow: '0 0 2px #000', + }} + > + AgentCoord + </Box> + )} + <IconButton> + <HelpOutlineIcon sx={{ color: '#fff' }} /> + </IconButton> + </Box> + ); +}); diff --git a/frontend/src/components/LoadingMask/index.tsx b/frontend/src/components/LoadingMask/index.tsx new file mode 100644 index 0000000..cc791ea --- /dev/null +++ b/frontend/src/components/LoadingMask/index.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import CircularProgress from '@mui/material/CircularProgress'; + +export default React.memo<{ style?: SxProps }>(({ style = {} }) => ( + <Box + sx={{ + position: 'absolute', + height: '100%', + width: '100%', + backdropFilter: 'blur(5px)', + backgroundColor: '#FFF3', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + ...style, + }} + > + <CircularProgress /> + </Box> +)); diff --git a/frontend/src/components/MarkdownBlock/github-mardown.css b/frontend/src/components/MarkdownBlock/github-mardown.css new file mode 100644 index 0000000..0450f81 --- /dev/null +++ b/frontend/src/components/MarkdownBlock/github-mardown.css @@ -0,0 +1,1210 @@ +@media (prefers-color-scheme: dark) { + .markdown-body, + [data-theme='dark'] { + /*dark*/ + color-scheme: dark; + --color-prettylights-syntax-comment: #8b949e; + --color-prettylights-syntax-constant: #79c0ff; + --color-prettylights-syntax-entity: #d2a8ff; + --color-prettylights-syntax-storage-modifier-import: #c9d1d9; + --color-prettylights-syntax-entity-tag: #7ee787; + --color-prettylights-syntax-keyword: #ff7b72; + --color-prettylights-syntax-string: #a5d6ff; + --color-prettylights-syntax-variable: #ffa657; + --color-prettylights-syntax-brackethighlighter-unmatched: #f85149; + --color-prettylights-syntax-invalid-illegal-text: #f0f6fc; + --color-prettylights-syntax-invalid-illegal-bg: #8e1519; + --color-prettylights-syntax-carriage-return-text: #f0f6fc; + --color-prettylights-syntax-carriage-return-bg: #b62324; + --color-prettylights-syntax-string-regexp: #7ee787; + --color-prettylights-syntax-markup-list: #f2cc60; + --color-prettylights-syntax-markup-heading: #1f6feb; + --color-prettylights-syntax-markup-italic: #c9d1d9; + --color-prettylights-syntax-markup-bold: #c9d1d9; + --color-prettylights-syntax-markup-deleted-text: #ffdcd7; + --color-prettylights-syntax-markup-deleted-bg: #67060c; + --color-prettylights-syntax-markup-inserted-text: #aff5b4; + --color-prettylights-syntax-markup-inserted-bg: #033a16; + --color-prettylights-syntax-markup-changed-text: #ffdfb6; + --color-prettylights-syntax-markup-changed-bg: #5a1e02; + --color-prettylights-syntax-markup-ignored-text: #c9d1d9; + --color-prettylights-syntax-markup-ignored-bg: #1158c7; + --color-prettylights-syntax-meta-diff-range: #d2a8ff; + --color-prettylights-syntax-brackethighlighter-angle: #8b949e; + --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58; + --color-prettylights-syntax-constant-other-reference-link: #a5d6ff; + --color-fg-default: #e6edf3; + --color-fg-muted: #848d97; + --color-fg-subtle: #6e7681; + --color-canvas-default: #0d1117; + --color-canvas-subtle: #161b22; + --color-border-default: #30363d; + --color-border-muted: #21262d; + --color-neutral-muted: rgba(110, 118, 129, 0.4); + --color-accent-fg: #2f81f7; + --color-accent-emphasis: #1f6feb; + --color-success-fg: #3fb950; + --color-success-emphasis: #238636; + --color-attention-fg: #d29922; + --color-attention-emphasis: #9e6a03; + --color-attention-subtle: rgba(187, 128, 9, 0.15); + --color-danger-fg: #f85149; + --color-danger-emphasis: #da3633; + --color-done-fg: #a371f7; + --color-done-emphasis: #8957e5; + } +} + +@media (prefers-color-scheme: light) { + .markdown-body, + [data-theme='light'] { + /*light*/ + color-scheme: light; + --color-prettylights-syntax-comment: #57606a; + --color-prettylights-syntax-constant: #0550ae; + --color-prettylights-syntax-entity: #6639ba; + --color-prettylights-syntax-storage-modifier-import: #24292f; + --color-prettylights-syntax-entity-tag: #116329; + --color-prettylights-syntax-keyword: #cf222e; + --color-prettylights-syntax-string: #0a3069; + --color-prettylights-syntax-variable: #953800; + --color-prettylights-syntax-brackethighlighter-unmatched: #82071e; + --color-prettylights-syntax-invalid-illegal-text: #f6f8fa; + --color-prettylights-syntax-invalid-illegal-bg: #82071e; + --color-prettylights-syntax-carriage-return-text: #f6f8fa; + --color-prettylights-syntax-carriage-return-bg: #cf222e; + --color-prettylights-syntax-string-regexp: #116329; + --color-prettylights-syntax-markup-list: #3b2300; + --color-prettylights-syntax-markup-heading: #0550ae; + --color-prettylights-syntax-markup-italic: #24292f; + --color-prettylights-syntax-markup-bold: #24292f; + --color-prettylights-syntax-markup-deleted-text: #82071e; + --color-prettylights-syntax-markup-deleted-bg: #ffebe9; + --color-prettylights-syntax-markup-inserted-text: #116329; + --color-prettylights-syntax-markup-inserted-bg: #dafbe1; + --color-prettylights-syntax-markup-changed-text: #953800; + --color-prettylights-syntax-markup-changed-bg: #ffd8b5; + --color-prettylights-syntax-markup-ignored-text: #eaeef2; + --color-prettylights-syntax-markup-ignored-bg: #0550ae; + --color-prettylights-syntax-meta-diff-range: #8250df; + --color-prettylights-syntax-brackethighlighter-angle: #57606a; + --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f; + --color-prettylights-syntax-constant-other-reference-link: #0a3069; + --color-fg-default: #1f2328; + --color-fg-muted: #656d76; + --color-fg-subtle: #6e7781; + --color-canvas-default: #ffffff; + --color-canvas-subtle: #f6f8fa; + --color-border-default: #d0d7de; + --color-border-muted: hsla(210, 18%, 87%, 1); + --color-neutral-muted: rgba(175, 184, 193, 0.2); + --color-accent-fg: #0969da; + --color-accent-emphasis: #0969da; + --color-success-fg: #1a7f37; + --color-success-emphasis: #1f883d; + --color-attention-fg: #9a6700; + --color-attention-emphasis: #9a6700; + --color-attention-subtle: #fff8c5; + --color-danger-fg: #d1242f; + --color-danger-emphasis: #cf222e; + --color-done-fg: #8250df; + --color-done-emphasis: #8250df; + } +} + +.markdown-body { + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + margin: 0; + color: var(--color-fg-default); + background-color: var(--color-canvas-default); + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', + Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} +.markdown-body * { + margin-top: 0px !important; + margin-bottom: 0px !important; + padding-top: 0px !important; + padding-bottom: 0px !important; + margin-block-start: 0px !important; + margin-block-end: 0px !important; + white-space: normal !important; +} + +.markdown-body .octicon { + display: inline-block; + fill: currentColor; + vertical-align: text-bottom; +} + +.markdown-body h1:hover .anchor .octicon-link:before, +.markdown-body h2:hover .anchor .octicon-link:before, +.markdown-body h3:hover .anchor .octicon-link:before, +.markdown-body h4:hover .anchor .octicon-link:before, +.markdown-body h5:hover .anchor .octicon-link:before, +.markdown-body h6:hover .anchor .octicon-link:before { + width: 16px; + height: 16px; + content: ' '; + display: inline-block; + background-color: currentColor; + -webkit-mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); + mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); +} + +.markdown-body details, +.markdown-body figcaption, +.markdown-body figure { + display: block; +} + +.markdown-body summary { + display: list-item; +} + +.markdown-body [hidden] { + display: none !important; +} + +.markdown-body a { + background-color: transparent; + color: var(--color-accent-fg); + text-decoration: none; +} + +.markdown-body abbr[title] { + border-bottom: none; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +.markdown-body b, +.markdown-body strong { + font-weight: var(--base-text-weight-semibold, 600); +} + +.markdown-body dfn { + font-style: italic; +} + +.markdown-body h1 { + margin: 0.67em 0; + font-weight: var(--base-text-weight-semibold, 600); + padding-bottom: 0.3em; + font-size: 2em; + border-bottom: 1px solid var(--color-border-muted); +} + +.markdown-body mark { + background-color: var(--color-attention-subtle); + color: var(--color-fg-default); +} + +.markdown-body small { + font-size: 90%; +} + +.markdown-body sub, +.markdown-body sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +.markdown-body sub { + bottom: -0.25em; +} + +.markdown-body sup { + top: -0.5em; +} + +.markdown-body img { + border-style: none; + max-width: 100%; + box-sizing: content-box; + background-color: var(--color-canvas-default); +} + +.markdown-body code, +.markdown-body kbd, +.markdown-body pre, +.markdown-body samp { + font-family: monospace; + font-size: 1em; +} + +.markdown-body figure { + margin: 1em 40px; +} + +.markdown-body hr { + box-sizing: content-box; + overflow: hidden; + background: transparent; + border-bottom: 1px solid var(--color-border-muted); + height: 0.25em; + padding: 0; + margin: 24px 0; + background-color: var(--color-border-default); + border: 0; +} + +.markdown-body input { + font: inherit; + margin: 0; + overflow: visible; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +.markdown-body [type='button'], +.markdown-body [type='reset'], +.markdown-body [type='submit'] { + -webkit-appearance: button; + appearance: button; +} + +.markdown-body [type='checkbox'], +.markdown-body [type='radio'] { + box-sizing: border-box; + padding: 0; +} + +.markdown-body [type='number']::-webkit-inner-spin-button, +.markdown-body [type='number']::-webkit-outer-spin-button { + height: auto; +} + +.markdown-body [type='search']::-webkit-search-cancel-button, +.markdown-body [type='search']::-webkit-search-decoration { + -webkit-appearance: none; + appearance: none; +} + +.markdown-body ::-webkit-input-placeholder { + color: inherit; + opacity: 0.54; +} + +.markdown-body ::-webkit-file-upload-button { + -webkit-appearance: button; + appearance: button; + font: inherit; +} + +.markdown-body a:hover { + text-decoration: underline; +} + +.markdown-body ::placeholder { + color: var(--color-fg-subtle); + opacity: 1; +} + +.markdown-body hr::before { + display: table; + content: ''; +} + +.markdown-body hr::after { + display: table; + clear: both; + content: ''; +} + +.markdown-body table { + border-spacing: 0; + border-collapse: collapse; + display: block; + width: max-content; + max-width: 100%; + overflow: auto; +} + +.markdown-body td, +.markdown-body th { + padding: 0; +} + +.markdown-body details summary { + cursor: pointer; +} + +.markdown-body details:not([open]) > *:not(summary) { + display: none !important; +} + +.markdown-body a:focus, +.markdown-body [role='button']:focus, +.markdown-body input[type='radio']:focus, +.markdown-body input[type='checkbox']:focus { + outline: 2px solid var(--color-accent-fg); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:focus:not(:focus-visible), +.markdown-body [role='button']:focus:not(:focus-visible), +.markdown-body input[type='radio']:focus:not(:focus-visible), +.markdown-body input[type='checkbox']:focus:not(:focus-visible) { + outline: solid 1px transparent; +} + +.markdown-body a:focus-visible, +.markdown-body [role='button']:focus-visible, +.markdown-body input[type='radio']:focus-visible, +.markdown-body input[type='checkbox']:focus-visible { + outline: 2px solid var(--color-accent-fg); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:not([class]):focus, +.markdown-body a:not([class]):focus-visible, +.markdown-body input[type='radio']:focus, +.markdown-body input[type='radio']:focus-visible, +.markdown-body input[type='checkbox']:focus, +.markdown-body input[type='checkbox']:focus-visible { + outline-offset: 0; +} + +.markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font: 11px ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, + Liberation Mono, monospace; + line-height: 10px; + color: var(--color-fg-default); + vertical-align: middle; + background-color: var(--color-canvas-subtle); + border: solid 1px var(--color-neutral-muted); + border-bottom-color: var(--color-neutral-muted); + border-radius: 6px; + box-shadow: inset 0 -1px 0 var(--color-neutral-muted); +} + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: 24px; + margin-bottom: 16px; + font-weight: var(--base-text-weight-semibold, 600); + line-height: 1.25; +} + +.markdown-body h2 { + font-weight: var(--base-text-weight-semibold, 600); + padding-bottom: 0.3em; + font-size: 1.5em; + border-bottom: 1px solid var(--color-border-muted); +} + +.markdown-body h3 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: 1.25em; +} + +.markdown-body h4 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: 1em; +} + +.markdown-body h5 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: 0.875em; +} + +.markdown-body h6 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: 0.85em; + color: var(--color-fg-muted); +} + +.markdown-body p { + margin-top: 0; + margin-bottom: 10px; +} + +.markdown-body blockquote { + margin: 0; + padding: 0 1em; + color: var(--color-fg-muted); + border-left: 0.25em solid var(--color-border-default); +} + +.markdown-body ul, +.markdown-body ol { + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; +} + +.markdown-body ol ol, +.markdown-body ul ol { + list-style-type: lower-roman; +} + +.markdown-body ul ul ol, +.markdown-body ul ol ol, +.markdown-body ol ul ol, +.markdown-body ol ol ol { + list-style-type: lower-alpha; +} + +.markdown-body dd { + margin-left: 0; +} + +.markdown-body tt, +.markdown-body code, +.markdown-body samp { + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, + Liberation Mono, monospace; + font-size: 12px; +} + +.markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, + Liberation Mono, monospace; + font-size: 12px; + word-wrap: normal; +} + +.markdown-body .octicon { + display: inline-block; + overflow: visible !important; + vertical-align: text-bottom; + fill: currentColor; +} + +.markdown-body input::-webkit-outer-spin-button, +.markdown-body input::-webkit-inner-spin-button { + margin: 0; + -webkit-appearance: none; + appearance: none; +} + +.markdown-body .mr-2 { + margin-right: var(--base-size-8, 8px) !important; +} + +.markdown-body::before { + display: table; + content: ''; +} + +.markdown-body::after { + display: table; + clear: both; + content: ''; +} + +.markdown-body > *:first-child { + margin-top: 0 !important; +} + +.markdown-body > *:last-child { + margin-bottom: 0 !important; +} + +.markdown-body a:not([href]) { + color: inherit; + text-decoration: none; +} + +.markdown-body .absent { + color: var(--color-danger-fg); +} + +.markdown-body .anchor { + float: left; + padding-right: 4px; + margin-left: -20px; + line-height: 1; +} + +.markdown-body .anchor:focus { + outline: none; +} + +.markdown-body p, +.markdown-body blockquote, +.markdown-body ul, +.markdown-body ol, +.markdown-body dl, +.markdown-body table, +.markdown-body pre, +.markdown-body details { + margin-top: 0; + margin-bottom: 16px; +} + +.markdown-body blockquote > :first-child { + margin-top: 0; +} + +.markdown-body blockquote > :last-child { + margin-bottom: 0; +} + +.markdown-body h1 .octicon-link, +.markdown-body h2 .octicon-link, +.markdown-body h3 .octicon-link, +.markdown-body h4 .octicon-link, +.markdown-body h5 .octicon-link, +.markdown-body h6 .octicon-link { + color: var(--color-fg-default); + vertical-align: middle; + visibility: hidden; +} + +.markdown-body h1:hover .anchor, +.markdown-body h2:hover .anchor, +.markdown-body h3:hover .anchor, +.markdown-body h4:hover .anchor, +.markdown-body h5:hover .anchor, +.markdown-body h6:hover .anchor { + text-decoration: none; +} + +.markdown-body h1:hover .anchor .octicon-link, +.markdown-body h2:hover .anchor .octicon-link, +.markdown-body h3:hover .anchor .octicon-link, +.markdown-body h4:hover .anchor .octicon-link, +.markdown-body h5:hover .anchor .octicon-link, +.markdown-body h6:hover .anchor .octicon-link { + visibility: visible; +} + +.markdown-body h1 tt, +.markdown-body h1 code, +.markdown-body h2 tt, +.markdown-body h2 code, +.markdown-body h3 tt, +.markdown-body h3 code, +.markdown-body h4 tt, +.markdown-body h4 code, +.markdown-body h5 tt, +.markdown-body h5 code, +.markdown-body h6 tt, +.markdown-body h6 code { + padding: 0 0.2em; + font-size: inherit; +} + +.markdown-body summary h1, +.markdown-body summary h2, +.markdown-body summary h3, +.markdown-body summary h4, +.markdown-body summary h5, +.markdown-body summary h6 { + display: inline-block; +} + +.markdown-body summary h1 .anchor, +.markdown-body summary h2 .anchor, +.markdown-body summary h3 .anchor, +.markdown-body summary h4 .anchor, +.markdown-body summary h5 .anchor, +.markdown-body summary h6 .anchor { + margin-left: -40px; +} + +.markdown-body summary h1, +.markdown-body summary h2 { + padding-bottom: 0; + border-bottom: 0; +} + +.markdown-body ul.no-list, +.markdown-body ol.no-list { + padding: 0; + list-style-type: none; +} + +.markdown-body ol[type='a s'] { + list-style-type: lower-alpha; +} + +.markdown-body ol[type='A s'] { + list-style-type: upper-alpha; +} + +.markdown-body ol[type='i s'] { + list-style-type: lower-roman; +} + +.markdown-body ol[type='I s'] { + list-style-type: upper-roman; +} + +.markdown-body ol[type='1'] { + list-style-type: decimal; +} + +.markdown-body div > ol:not([type]) { + list-style-type: decimal; +} + +.markdown-body ul ul, +.markdown-body ul ol, +.markdown-body ol ol, +.markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body li > p { + margin-top: 16px; +} + +.markdown-body li + li { + margin-top: 0.25em; +} + +.markdown-body dl { + padding: 0; +} + +.markdown-body dl dt { + padding: 0; + margin-top: 16px; + font-size: 1em; + font-style: italic; + font-weight: var(--base-text-weight-semibold, 600); +} + +.markdown-body dl dd { + padding: 0 16px; + margin-bottom: 16px; +} + +.markdown-body table th { + font-weight: var(--base-text-weight-semibold, 600); +} + +.markdown-body table th, +.markdown-body table td { + padding: 6px 13px; + border: 1px solid var(--color-border-default); +} + +.markdown-body table td > :last-child { + margin-bottom: 0; +} + +.markdown-body table tr { + background-color: var(--color-canvas-default); + border-top: 1px solid var(--color-border-muted); +} + +.markdown-body table tr:nth-child(2n) { + background-color: var(--color-canvas-subtle); +} + +.markdown-body table img { + background-color: transparent; +} + +.markdown-body img[align='right'] { + padding-left: 20px; +} + +.markdown-body img[align='left'] { + padding-right: 20px; +} + +.markdown-body .emoji { + max-width: none; + vertical-align: text-top; + background-color: transparent; +} + +.markdown-body span.frame { + display: block; + overflow: hidden; +} + +.markdown-body span.frame > span { + display: block; + float: left; + width: auto; + padding: 7px; + margin: 13px 0 0; + overflow: hidden; + border: 1px solid var(--color-border-default); +} + +.markdown-body span.frame span img { + display: block; + float: left; +} + +.markdown-body span.frame span span { + display: block; + padding: 5px 0 0; + clear: both; + color: var(--color-fg-default); +} + +.markdown-body span.align-center { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-center > span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: center; +} + +.markdown-body span.align-center span img { + margin: 0 auto; + text-align: center; +} + +.markdown-body span.align-right { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-right > span { + display: block; + margin: 13px 0 0; + overflow: hidden; + text-align: right; +} + +.markdown-body span.align-right span img { + margin: 0; + text-align: right; +} + +.markdown-body span.float-left { + display: block; + float: left; + margin-right: 13px; + overflow: hidden; +} + +.markdown-body span.float-left span { + margin: 13px 0 0; +} + +.markdown-body span.float-right { + display: block; + float: right; + margin-left: 13px; + overflow: hidden; +} + +.markdown-body span.float-right > span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: right; +} + +.markdown-body code, +.markdown-body tt { + padding: 0.2em 0.4em; + margin: 0; + font-size: 85%; + white-space: break-spaces; + background-color: var(--color-neutral-muted); + border-radius: 6px; +} + +.markdown-body code br, +.markdown-body tt br { + display: none; +} + +.markdown-body del code { + text-decoration: inherit; +} + +.markdown-body samp { + font-size: 85%; +} + +.markdown-body pre code { + font-size: 100%; +} + +.markdown-body pre > code { + padding: 0; + margin: 0; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; +} + +.markdown-body .highlight { + margin-bottom: 16px; +} + +.markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +.markdown-body .highlight pre, +.markdown-body pre { + padding: 16px; + overflow: auto; + font-size: 85%; + line-height: 1.45; + color: var(--color-fg-default); + background-color: var(--color-canvas-subtle); + border-radius: 6px; +} + +.markdown-body pre code, +.markdown-body pre tt { + display: inline; + max-width: auto; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: transparent; + border: 0; +} + +.markdown-body .csv-data td, +.markdown-body .csv-data th { + padding: 5px; + overflow: hidden; + font-size: 12px; + line-height: 1; + text-align: left; + white-space: nowrap; +} + +.markdown-body .csv-data .blob-num { + padding: 10px 8px 9px; + text-align: right; + background: var(--color-canvas-default); + border: 0; +} + +.markdown-body .csv-data tr { + border-top: 0; +} + +.markdown-body .csv-data th { + font-weight: var(--base-text-weight-semibold, 600); + background: var(--color-canvas-subtle); + border-top: 0; +} + +.markdown-body [data-footnote-ref]::before { + content: '['; +} + +.markdown-body [data-footnote-ref]::after { + content: ']'; +} + +.markdown-body .footnotes { + font-size: 12px; + color: var(--color-fg-muted); + border-top: 1px solid var(--color-border-default); +} + +.markdown-body .footnotes ol { + padding-left: 16px; +} + +.markdown-body .footnotes ol ul { + display: inline-block; + padding-left: 16px; + margin-top: 16px; +} + +.markdown-body .footnotes li { + position: relative; +} + +.markdown-body .footnotes li:target::before { + position: absolute; + top: -8px; + right: -8px; + bottom: -8px; + left: -24px; + pointer-events: none; + content: ''; + border: 2px solid var(--color-accent-emphasis); + border-radius: 6px; +} + +.markdown-body .footnotes li:target { + color: var(--color-fg-default); +} + +.markdown-body .footnotes .data-footnote-backref g-emoji { + font-family: monospace; +} + +.markdown-body .pl-c { + color: var(--color-prettylights-syntax-comment); +} + +.markdown-body .pl-c1, +.markdown-body .pl-s .pl-v { + color: var(--color-prettylights-syntax-constant); +} + +.markdown-body .pl-e, +.markdown-body .pl-en { + color: var(--color-prettylights-syntax-entity); +} + +.markdown-body .pl-smi, +.markdown-body .pl-s .pl-s1 { + color: var(--color-prettylights-syntax-storage-modifier-import); +} + +.markdown-body .pl-ent { + color: var(--color-prettylights-syntax-entity-tag); +} + +.markdown-body .pl-k { + color: var(--color-prettylights-syntax-keyword); +} + +.markdown-body .pl-s, +.markdown-body .pl-pds, +.markdown-body .pl-s .pl-pse .pl-s1, +.markdown-body .pl-sr, +.markdown-body .pl-sr .pl-cce, +.markdown-body .pl-sr .pl-sre, +.markdown-body .pl-sr .pl-sra { + color: var(--color-prettylights-syntax-string); +} + +.markdown-body .pl-v, +.markdown-body .pl-smw { + color: var(--color-prettylights-syntax-variable); +} + +.markdown-body .pl-bu { + color: var(--color-prettylights-syntax-brackethighlighter-unmatched); +} + +.markdown-body .pl-ii { + color: var(--color-prettylights-syntax-invalid-illegal-text); + background-color: var(--color-prettylights-syntax-invalid-illegal-bg); +} + +.markdown-body .pl-c2 { + color: var(--color-prettylights-syntax-carriage-return-text); + background-color: var(--color-prettylights-syntax-carriage-return-bg); +} + +.markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: var(--color-prettylights-syntax-string-regexp); +} + +.markdown-body .pl-ml { + color: var(--color-prettylights-syntax-markup-list); +} + +.markdown-body .pl-mh, +.markdown-body .pl-mh .pl-en, +.markdown-body .pl-ms { + font-weight: bold; + color: var(--color-prettylights-syntax-markup-heading); +} + +.markdown-body .pl-mi { + font-style: italic; + color: var(--color-prettylights-syntax-markup-italic); +} + +.markdown-body .pl-mb { + font-weight: bold; + color: var(--color-prettylights-syntax-markup-bold); +} + +.markdown-body .pl-md { + color: var(--color-prettylights-syntax-markup-deleted-text); + background-color: var(--color-prettylights-syntax-markup-deleted-bg); +} + +.markdown-body .pl-mi1 { + color: var(--color-prettylights-syntax-markup-inserted-text); + background-color: var(--color-prettylights-syntax-markup-inserted-bg); +} + +.markdown-body .pl-mc { + color: var(--color-prettylights-syntax-markup-changed-text); + background-color: var(--color-prettylights-syntax-markup-changed-bg); +} + +.markdown-body .pl-mi2 { + color: var(--color-prettylights-syntax-markup-ignored-text); + background-color: var(--color-prettylights-syntax-markup-ignored-bg); +} + +.markdown-body .pl-mdr { + font-weight: bold; + color: var(--color-prettylights-syntax-meta-diff-range); +} + +.markdown-body .pl-ba { + color: var(--color-prettylights-syntax-brackethighlighter-angle); +} + +.markdown-body .pl-sg { + color: var(--color-prettylights-syntax-sublimelinter-gutter-mark); +} + +.markdown-body .pl-corl { + text-decoration: underline; + color: var(--color-prettylights-syntax-constant-other-reference-link); +} + +.markdown-body g-emoji { + display: inline-block; + min-width: 1ch; + font-family: 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; + font-size: 1em; + font-style: normal !important; + font-weight: var(--base-text-weight-normal, 400); + line-height: 1; + vertical-align: -0.075em; +} + +.markdown-body g-emoji img { + width: 1em; + height: 1em; +} + +.markdown-body .task-list-item { + list-style-type: none; +} + +.markdown-body .task-list-item label { + font-weight: var(--base-text-weight-normal, 400); +} + +.markdown-body .task-list-item.enabled label { + cursor: pointer; +} + +.markdown-body .task-list-item + .task-list-item { + margin-top: 4px; +} + +.markdown-body .task-list-item .handle { + display: none; +} + +.markdown-body .task-list-item-checkbox { + margin: 0 0.2em 0.25em -1.4em; + vertical-align: middle; +} + +.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em 0.25em 0.2em; +} + +.markdown-body .contains-task-list { + position: relative; +} + +.markdown-body .contains-task-list:hover .task-list-item-convert-container, +.markdown-body + .contains-task-list:focus-within + .task-list-item-convert-container { + display: block; + width: auto; + height: 24px; + overflow: visible; + clip: auto; +} + +.markdown-body ::-webkit-calendar-picker-indicator { + filter: invert(50%); +} + +.markdown-body .markdown-alert { + padding: var(--base-size-8) var(--base-size-16); + margin-bottom: 16px; + color: inherit; + border-left: 0.25em solid var(--color-border-default); +} + +.markdown-body .markdown-alert > :first-child { + margin-top: 0; +} + +.markdown-body .markdown-alert > :last-child { + margin-bottom: 0; +} + +.markdown-body .markdown-alert .markdown-alert-title { + display: flex; + font-weight: var(--base-text-weight-medium, 500); + align-items: center; + line-height: 1; +} + +.markdown-body .markdown-alert.markdown-alert-note { + border-left-color: var(--color-accent-emphasis); +} + +.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title { + color: var(--color-accent-fg); +} + +.markdown-body .markdown-alert.markdown-alert-important { + border-left-color: var(--color-done-emphasis); +} + +.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title { + color: var(--color-done-fg); +} + +.markdown-body .markdown-alert.markdown-alert-warning { + border-left-color: var(--color-attention-emphasis); +} + +.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title { + color: var(--color-attention-fg); +} + +.markdown-body .markdown-alert.markdown-alert-tip { + border-left-color: var(--color-success-emphasis); +} + +.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title { + color: var(--color-success-fg); +} + +.markdown-body .markdown-alert.markdown-alert-caution { + border-left-color: var(--color-danger-emphasis); +} + +.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title { + color: var(--color-danger-fg); +} diff --git a/frontend/src/components/MarkdownBlock/index.tsx b/frontend/src/components/MarkdownBlock/index.tsx new file mode 100644 index 0000000..8126046 --- /dev/null +++ b/frontend/src/components/MarkdownBlock/index.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import remarkGfm from 'remark-gfm'; +import Box from '@mui/material/Box'; +import remarkMath from 'remark-math'; +import rehypeKatex from 'rehype-katex'; +import { SxProps } from '@mui/material'; +import ReactMarkdown from 'react-markdown'; +import rehypeHighlight from 'rehype-highlight'; + +// import './markdown-style.css'; +import './github-mardown.css'; +// import './hljs-atom-one-dark.min.css'; +// import './prism-one-dark.css'; + +export interface IMarkdownViewArguments { + text?: string; + style?: SxProps; +} + +export default React.memo<IMarkdownViewArguments>( + ({ text = '', style = {} }) => { + return ( + <Box className="markdown-body" sx={{ minHeight: '20px', ...style }}> + <ReactMarkdown + remarkPlugins={[remarkMath, remarkGfm]} + rehypePlugins={[rehypeHighlight, rehypeKatex]} + > + {text} + </ReactMarkdown> + </Box> + ); + }, +); diff --git a/frontend/src/components/MarkdownBlock/markdown-style.css b/frontend/src/components/MarkdownBlock/markdown-style.css new file mode 100644 index 0000000..8649738 --- /dev/null +++ b/frontend/src/components/MarkdownBlock/markdown-style.css @@ -0,0 +1,702 @@ +.markdown-body { + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + line-height: 1.5; + font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Segoe UI', + Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', + 'Segoe UI Symbol'; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} +.markdown-body * { + margin-top: 0px !important; + margin-bottom: 0px !important; + padding-top: 0px !important; + padding-bottom: 0px !important; + margin-block-start: 0px !important; + margin-block-end: 0px !important; + white-space: normal !important; +} +.markdown-body .pl-c { + color: #6a737d; +} + +.markdown-body .pl-c1, +.markdown-body .pl-s .pl-v { + color: #005cc5; +} + +.markdown-body .pl-e, +.markdown-body .pl-en { + color: #6f42c1; +} + +.markdown-body .pl-smi, +.markdown-body .pl-s .pl-s1 { + color: #24292e; +} + +.markdown-body .pl-ent { + color: #22863a; +} + +.markdown-body .pl-k { + color: #d73a49; +} + +.markdown-body .pl-s, +.markdown-body .pl-pds, +.markdown-body .pl-s .pl-pse .pl-s1, +.markdown-body .pl-sr, +.markdown-body .pl-sr .pl-cce, +.markdown-body .pl-sr .pl-sre, +.markdown-body .pl-sr .pl-sra { + color: #032f62; +} + +.markdown-body .pl-v, +.markdown-body .pl-smw { + color: #e36209; +} + +.markdown-body .pl-bu { + color: #b31d28; +} + +.markdown-body .pl-ii { + color: #fafbfc; + background-color: #b31d28; +} + +.markdown-body .pl-c2 { + color: #fafbfc; + background-color: #d73a49; +} + +.markdown-body .pl-c2::before { + content: '^M'; +} + +.markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: #22863a; +} + +.markdown-body .pl-ml { + color: #735c0f; +} + +.markdown-body .pl-mh, +.markdown-body .pl-mh .pl-en, +.markdown-body .pl-ms { + font-weight: bold; + color: #005cc5; +} + +.markdown-body .pl-mi { + font-style: italic; + color: #24292e; +} + +.markdown-body .pl-mb { + font-weight: bold; + color: #24292e; +} + +.markdown-body .pl-md { + color: #b31d28; + background-color: #ffeef0; +} + +.markdown-body .pl-mi1 { + color: #22863a; + background-color: #f0fff4; +} + +.markdown-body .pl-mc { + color: #e36209; + background-color: #ffebda; +} + +.markdown-body .pl-mi2 { + color: #f6f8fa; + background-color: #005cc5; +} + +.markdown-body .pl-mdr { + font-weight: bold; + color: #6f42c1; +} + +.markdown-body .pl-ba { + color: #586069; +} + +.markdown-body .pl-sg { + color: #959da5; +} + +.markdown-body .pl-corl { + text-decoration: underline; + color: #032f62; +} + +.markdown-body .octicon { + display: inline-block; + vertical-align: text-top; + fill: currentColor; +} + +.markdown-body a { + background-color: transparent; +} + +.markdown-body a:active, +.markdown-body a:hover { + outline-width: 0; +} + +.markdown-body strong { + font-weight: inherit; +} + +.markdown-body strong { + font-weight: bolder; +} + +.markdown-body h1 { + font-size: 2em; + margin: 0.67em 0; +} + +.markdown-body img { + border-style: none; +} + +.markdown-body code, +.markdown-body kbd, +.markdown-body pre { + font-family: monospace, monospace; + font-size: 1em; +} + +.markdown-body hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +.markdown-body input { + font: inherit; + margin: 0; +} + +.markdown-body input { + overflow: visible; +} + +.markdown-body [type='checkbox'] { + box-sizing: border-box; + padding: 0; +} + +.markdown-body * { + box-sizing: border-box; +} + +.markdown-body input { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +.markdown-body a { + color: #0366d6; + text-decoration: none; +} + +.markdown-body a:hover { + text-decoration: underline; +} + +.markdown-body strong { + font-weight: 600; +} + +.markdown-body hr { + height: 0; + margin: 15px 0; + overflow: hidden; + background: transparent; + border: 0; + border-bottom: 0.05em solid #dfe2e5; +} + +.markdown-body hr::before { + display: table; + content: ''; +} + +.markdown-body hr::after { + display: table; + clear: both; + content: ''; +} + +.markdown-body table { + border-spacing: 0; + border-collapse: collapse; +} + +.markdown-body td, +.markdown-body th { + padding: 0; +} + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body h1 { + font-size: 32px; + font-weight: 600; +} + +.markdown-body h2 { + font-size: 24px; + font-weight: 600; +} + +.markdown-body h3 { + font-size: 20px; + font-weight: 600; +} + +.markdown-body h4 { + font-size: 16px; + font-weight: 600; +} + +.markdown-body h5 { + font-size: 14px; + font-weight: 600; +} + +.markdown-body h6 { + font-size: 12px; + font-weight: 600; +} + +.markdown-body p { + margin-top: 0; + margin-bottom: 10px; +} + +.markdown-body blockquote { + margin: 0; +} + +.markdown-body ul, +.markdown-body ol { + padding-left: 0; + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body ol ol, +.markdown-body ul ol { + list-style-type: lower-roman; +} + +.markdown-body ul ul ol, +.markdown-body ul ol ol, +.markdown-body ol ul ol, +.markdown-body ol ol ol { + list-style-type: lower-alpha; +} + +.markdown-body dd { + margin-left: 0; +} + +.markdown-body code { + font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, + monospace; + font-size: 12px; +} + +.markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, + monospace; + font-size: 12px; +} + +.markdown-body .octicon { + vertical-align: text-bottom; +} + +.markdown-body .pl-0 { + padding-left: 0 !important; +} + +.markdown-body .pl-1 { + padding-left: 4px !important; +} + +.markdown-body .pl-2 { + padding-left: 8px !important; +} + +.markdown-body .pl-3 { + padding-left: 16px !important; +} + +.markdown-body .pl-4 { + padding-left: 24px !important; +} + +.markdown-body .pl-5 { + padding-left: 32px !important; +} + +.markdown-body .pl-6 { + padding-left: 40px !important; +} + +.markdown-body::before { + display: table; + content: ''; +} + +.markdown-body::after { + display: table; + clear: both; + content: ''; +} + +.markdown-body > *:first-child { + margin-top: 0 !important; +} + +.markdown-body > *:last-child { + margin-bottom: 0 !important; +} + +.markdown-body a:not([href]) { + color: inherit; + text-decoration: none; +} + +.markdown-body .anchor { + float: left; + padding-right: 4px; + margin-left: -20px; + line-height: 1; +} + +.markdown-body .anchor:focus { + outline: none; +} + +.markdown-body p, +.markdown-body blockquote, +.markdown-body ul, +.markdown-body ol, +.markdown-body dl, +.markdown-body table, +.markdown-body pre { + margin-top: 0; + margin-bottom: 16px; +} + +.markdown-body blockquote > :first-child { + margin-top: 0; +} + +.markdown-body blockquote > :last-child { + margin-bottom: 0; +} + +.markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font-size: 11px; + line-height: 10px; + color: #444d56; + vertical-align: middle; + background-color: #fafbfc; + border: solid 1px #c6cbd1; + border-bottom-color: #959da5; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #959da5; +} + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: 24px; + margin-bottom: 16px; + font-weight: 600; + line-height: 1.25; +} + +.markdown-body h1 .octicon-link, +.markdown-body h2 .octicon-link, +.markdown-body h3 .octicon-link, +.markdown-body h4 .octicon-link, +.markdown-body h5 .octicon-link, +.markdown-body h6 .octicon-link { + color: #1b1f23; + vertical-align: middle; + visibility: hidden; +} + +.markdown-body h1:hover .anchor, +.markdown-body h2:hover .anchor, +.markdown-body h3:hover .anchor, +.markdown-body h4:hover .anchor, +.markdown-body h5:hover .anchor, +.markdown-body h6:hover .anchor { + text-decoration: none; +} + +.markdown-body h1:hover .anchor .octicon-link, +.markdown-body h2:hover .anchor .octicon-link, +.markdown-body h3:hover .anchor .octicon-link, +.markdown-body h4:hover .anchor .octicon-link, +.markdown-body h5:hover .anchor .octicon-link, +.markdown-body h6:hover .anchor .octicon-link { + visibility: visible; +} + +.markdown-body h1 { + padding-bottom: 0.3em; + font-size: 2em; + border-bottom: 1px solid #888a; +} + +.markdown-body h2 { + padding-bottom: 0.3em; + font-size: 1.5em; + border-bottom: 1px solid #888a; +} + +.markdown-body h3 { + font-size: 1.25em; +} + +.markdown-body h4 { + font-size: 1em; +} + +.markdown-body h5 { + font-size: 0.875em; +} + +.markdown-body h6 { + font-size: 0.85em; + color: #6a737d; +} + +.markdown-body ul, +.markdown-body ol { + padding-left: 2em; +} + +.markdown-body ul ul, +.markdown-body ul ol, +.markdown-body ol ol, +.markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body li { + word-wrap: break-all; +} + +.markdown-body li > p { + margin-top: 16px; +} + +.markdown-body li + li { + margin-top: 0.25em; +} + +.markdown-body dl { + padding: 0; +} + +.markdown-body dl dt { + padding: 0; + margin-top: 16px; + font-size: 1em; + font-style: italic; + font-weight: 600; +} + +.markdown-body dl dd { + padding: 0 16px; + margin-bottom: 16px; +} + +.markdown-body table { + display: block; + width: 100%; + overflow: auto; +} + +.markdown-body table th { + font-weight: 600; +} + +.markdown-body table th, +.markdown-body table td { + padding: 6px 13px; + border: 1px solid #dfe2e5; +} + +.markdown-body table tr { + background-color: #fff; + border-top: 1px solid #c6cbd1; +} + +.markdown-body table tr:nth-child(2n) { + background-color: #f6f8fa; +} + +.markdown-body img { + max-width: 100%; + box-sizing: content-box; + background-color: #fff; +} + +.markdown-body hr { + height: 0.05em; + padding: 0; + margin: 24px 0; + background-color: #e1e4e8; + border: 0; +} + +.markdown-body blockquote { + padding: 0 1em; + color: #6a737d; + border-left: 0.25em solid #dfe2e5; +} + +.markdown-body img[align='right'] { + padding-left: 20px; +} + +.markdown-body img[align='left'] { + padding-right: 20px; +} + +.markdown-body code { + padding: 0.2em 0.4em; + margin: 0; + font-size: 85%; + background-color: rgba(197, 212, 228, 0.115); + border-radius: 3px; +} + +.markdown-body pre { + word-wrap: normal; +} + +.markdown-body pre > code { + padding: 0; + margin: 0; + font-size: 100%; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; +} + +.markdown-body .highlight { + margin-bottom: 16px; +} + +.markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +.markdown-body .highlight pre, +.markdown-body pre { + padding: 16px; + overflow: auto; + font-size: 85%; + line-height: 1.45; + border-radius: 3px; + background: #0003; +} + +.markdown-body pre code { + display: inline; + max-width: auto; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: transparent; + border: 0; +} + +.markdown-body :checked + .radio-label { + position: relative; + z-index: 1; + border-color: #0366d6; +} + +.markdown-body .task-list-item { + list-style-type: none; +} + +.markdown-body .task-list-item + .task-list-item { + margin-top: 3px; +} + +.markdown-body .task-list-item input { + margin: 0 0.2em 0.25em -1.6em; + vertical-align: middle; +} + +.markdown-body hr { + border-bottom-color: #555; +} + +.markdown-body .full-commit .btn-outline:not(:disabled):hover { + color: #005cc5; + border-color: #005cc5; +} + +.markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font: 11px 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, + monospace; + line-height: 10px; + color: #444d56; + vertical-align: middle; + background-color: #fafbfc; + border: solid 1px #d1d5da; + border-bottom-color: #c6cbd1; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #c6cbd1; +} diff --git a/frontend/src/components/Outline/Cards.tsx b/frontend/src/components/Outline/Cards.tsx new file mode 100644 index 0000000..dfb4d12 --- /dev/null +++ b/frontend/src/components/Outline/Cards.tsx @@ -0,0 +1,344 @@ +import React, { useState } from 'react'; +import Box from '@mui/material/Box'; +import TextField from '@mui/material/TextField'; +import { IconButton, SxProps } from '@mui/material'; +import AddIcon from '@mui/icons-material/Add'; +import Divider from '@mui/material/Divider'; +import RemoveIcon from '@mui/icons-material/Remove'; +import AdjustIcon from '@mui/icons-material/Adjust'; +import { ObjectProps, ProcessProps } from './interface'; +import AgentIcon from '@/components/AgentIcon'; +import { globalStorage } from '@/storage'; + +export interface IEditObjectProps { + finishEdit: (objectName: string) => void; +} + +export const EditObjectCard: React.FC<IEditObjectProps> = React.memo( + ({ finishEdit }) => { + const handleKeyPress = (event: any) => { + if (event.key === 'Enter') { + finishEdit(event.target.value); + } + }; + return ( + <TextField + onKeyPress={handleKeyPress} + sx={{ + backgroundColor: '#D9D9D9', + borderRadius: '6px', + padding: '8px', + userSelect: 'none', + margin: '6px 0px', + }} + /> + ); + }, +); + +interface IHoverIconButtonProps { + onAddClick: () => void; + isActive: boolean; + style: SxProps; + responseToHover?: boolean; + addOrRemove: boolean | undefined; // true for add, false for remove,undefined for adjust +} + +const HoverIconButton: React.FC<IHoverIconButtonProps> = ({ + onAddClick, + isActive, + style, + addOrRemove, + responseToHover = true, +}) => { + const [addIconHover, setAddIconHover] = useState(false); + + return ( + <Box + onMouseOver={() => { + setAddIconHover(true); + }} + onMouseOut={() => { + setAddIconHover(false); + }} + onClick={() => { + onAddClick(); + }} + sx={{ ...style, justifySelf: 'start' }} + > + <IconButton + sx={{ + color: 'primary', + '&:hover': { + color: 'primary.dark', + }, + padding: '0px', + borderRadius: 10, + border: '1px dotted #333', + visibility: + (responseToHover && addIconHover) || isActive + ? 'visible' + : 'hidden', + '& .MuiSvgIcon-root': { + fontSize: '1.25rem', + }, + }} + > + {addOrRemove === undefined ? <AdjustIcon /> : <></>} + {addOrRemove === true ? <AddIcon /> : <></>} + {addOrRemove === false ? <RemoveIcon /> : <></>} + </IconButton> + </Box> + ); +}; + +interface IEditableBoxProps { + text: string; + inputCallback: (text: string) => void; +} + +const EditableBox: React.FC<IEditableBoxProps> = ({ text, inputCallback }) => { + const [isEditable, setIsEditable] = useState(false); + const handleDoubleClick = () => { + setIsEditable(true); + }; + + const handleKeyPress = (event: any) => { + if (event.key === 'Enter') { + inputCallback(event.target.value); + setIsEditable(false); + } + }; + + return ( + <Box> + {isEditable ? ( + <TextField + defaultValue={text} + multiline + onKeyPress={handleKeyPress} + onBlur={() => setIsEditable(false)} // 失去焦点时也关闭编辑状态 + autoFocus + sx={{ + '& .MuiInputBase-root': { + // 目标 MUI 的输入基础根元素 + padding: '0px 0px', // 你可以设置为你希望的内边距值 + }, + width: '100%', + }} + /> + ) : ( + <span + onDoubleClick={handleDoubleClick} + style={{ + color: '#707070', + // textDecoration: 'underline', + // textDecorationColor: '#C1C1C1', + borderBottom: '1.5px solid #C1C1C1', + fontSize: '15px', + }} + > + {text} + </span> + )} + </Box> + ); +}; + +export interface IObjectCardProps { + object: ObjectProps; + isAddActive?: boolean; + handleAddActive?: (objectName: string) => void; + addOrRemove?: boolean; +} + +export const ObjectCard = React.memo<IObjectCardProps>( + ({ + object, + isAddActive = false, + handleAddActive = (objectName: string) => { + console.log(objectName); + }, + addOrRemove = true, + }) => { + const onAddClick = () => { + handleAddActive(object.name); + }; + return ( + <Box + sx={{ + position: 'relative', + // maxWidth: '100%', + }} + > + <HoverIconButton + style={{ + position: 'absolute', + left: '100%', + top: '50%', + transform: 'translateY(-50%)translateX(-50%)', + }} + onAddClick={onAddClick} + isActive={isAddActive} + responseToHover={false} + addOrRemove={addOrRemove} + /> + <Box + ref={object.cardRef} + sx={{ + backgroundColor: '#F6F6F6', + borderRadius: '15px', + border: '2px solid #E5E5E5', + padding: '10px 4px', + userSelect: 'none', + margin: '12px 0px', + maxWidth: '100%', + wordWrap: 'break-word', + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + fontSize: '16px', + fontWeight: 800, + textAlign: 'center', + color: '#222', + }} + > + {object.name} + </Box> + </Box> + ); + }, +); + +export interface IProcessCardProps { + process: ProcessProps; + handleProcessClick: (stepId: string) => void; + isFocusing: boolean; + isAddActive?: boolean; + handleAddActive?: (objectName: string) => void; + + handleEditContent: (stepTaskId: string, newContent: string) => void; + // handleSizeChange: () => void; +} + +export const ProcessCard: React.FC<IProcessCardProps> = React.memo( + ({ + process, + handleProcessClick, + isFocusing, + isAddActive = false, + handleAddActive = (objectName: string) => { + console.log(objectName); + }, + // handleSizeChange, + handleEditContent, + }) => { + const onAddClick = () => { + handleAddActive(process.id); + }; + return ( + <Box + sx={{ + position: 'relative', + // width: '100%', + }} + > + <HoverIconButton + style={{ + position: 'absolute', + left: '0', + top: '50%', + transform: 'translateY(-50%)translateX(-50%)', + }} + onAddClick={onAddClick} + isActive={isAddActive} + addOrRemove={undefined} + /> + <Box + ref={process.cardRef} + sx={{ + backgroundColor: '#F6F6F6', + borderRadius: '15px', + padding: '8px', + margin: '18px 0px', + userSelect: 'none', + cursor: 'pointer', + border: isFocusing ? '2px solid #43b2aa' : '2px solid #E5E5E5', + transition: 'all 80ms ease-in-out', + '&:hover': { + border: isFocusing ? '2px solid #03a89d' : '2px solid #b3b3b3', + backgroundImage: 'linear-gradient(0, #0001, #0001)', + }, + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + }} + onClick={() => handleProcessClick(process.id)} + > + <Box + sx={{ + fontSize: '16px', + fontWeight: 800, + textAlign: 'center', + color: '#222', + marginTop: '4px', + marginBottom: '4px', + }} + > + {process.name} + </Box> + {/* Assuming AgentIcon is another component */} + <Box + sx={{ + display: 'flex', + alignItems: 'center', + width: '100%', + justifyContent: 'center', + flexWrap: 'wrap', + margin: '8px 0', + }} + > + {process.agents.map(agentName => ( + <AgentIcon + key={`outline.${process.name}.${agentName}`} + name={globalStorage.agentMap.get(agentName)?.icon ?? 'unknown'} + style={{ + width: '40px', + height: 'auto', + marginRight: '3px', + userSelect: 'none', + }} + tooltipInfo={globalStorage.agentMap.get(agentName)} + /> + ))} + </Box> + + {isFocusing && ( + <Box onClick={e => e.stopPropagation()}> + <Divider + sx={{ + margin: '5px 0px', + borderBottom: '2px dashed', // 设置为虚线 + borderColor: '#d4d4d4', + }} + /> + <EditableBox + text={process.content} + inputCallback={(text: string) => { + handleEditContent(process.id, text); + // handleEditStep(step.name, { ...step, task: text }); + }} + /> + </Box> + )} + </Box> + </Box> + ); + }, +); + +const Card: React.FC = React.memo(() => { + return <></>; // Replace with your component JSX +}); + +export default Card; diff --git a/frontend/src/components/Outline/D3Graph.tsx b/frontend/src/components/Outline/D3Graph.tsx new file mode 100644 index 0000000..61d7e74 --- /dev/null +++ b/frontend/src/components/Outline/D3Graph.tsx @@ -0,0 +1,241 @@ +// D3Graph.tsx +import React, { useState } from 'react'; + +export interface SvgLineProp { + x1: number; + y1: number; + x2: number; + y2: number; + type: string; + key: string; + stepTaskId: string; + stepName: string; + objectName: string; +} + +const getRefOffset = ( + child: React.RefObject<HTMLElement>, + grandParent: React.RefObject<HTMLElement>, +) => { + const offset = { top: 0, left: 0, width: 0, height: 0 }; + if (!child.current || !grandParent.current) { + return offset; + } + let node = child.current; + // Traverse up the DOM tree until we reach the grandparent or run out of elements + while (node && node !== grandParent.current) { + offset.top += node.offsetTop; + offset.left += node.offsetLeft; + // Move to the offset parent (the nearest positioned ancestor) + node = node.offsetParent as HTMLElement; + } + // If we didn't reach the grandparent, return null + if (node !== grandParent.current) { + return offset; + } + offset.width = child.current.offsetWidth; + offset.height = child.current.offsetHeight; + return offset; +}; +// 辅助函数来计算均值和最大值 +const calculateLineMetrics = ( + cardRect: Map< + string, + { + top: number; + left: number; + width: number; + height: number; + } + >, + prefix: string, +) => { + const filteredRects = Array.from(cardRect.entries()) + .filter(([key]) => key.startsWith(prefix)) + .map(([, rect]) => rect); + + return { + x: + filteredRects.reduce( + (acc, rect) => acc + (rect.left + 0.5 * rect.width), + 0, + ) / filteredRects.length, + y2: Math.max(...filteredRects.map(rect => rect.top + rect.height), 0), + }; +}; +interface D3GraphProps { + // objProCards_: ObjectProcessCardProps[]; + cardRefMap: Map<string, React.RefObject<HTMLElement>>; + relations: { + type: string; + stepTaskId: string; + stepCardName: string; + objectCardName: string; + }[]; + focusingStepId: string; + forceRender: number; +} + +const D3Graph: React.FC<D3GraphProps> = ({ + cardRefMap, + relations, + forceRender, + focusingStepId, +}) => { + const [svgLineProps, setSvgLineProps] = useState<SvgLineProp[]>([]); + const [objectLine, setObjectLine] = useState({ + x: 0, + y2: 0, + }); + const [processLine, setProcessLine] = useState({ + x: 0, + y2: 0, + }); + const cardRect = new Map< + string, + { top: number; left: number; width: number; height: number } + >(); + React.useEffect(() => { + const svgLines_ = relations + .filter(({ stepCardName, objectCardName }) => { + return cardRefMap.has(stepCardName) && cardRefMap.has(objectCardName); + }) + .map(({ type, stepTaskId, stepCardName, objectCardName }) => { + const stepRect = getRefOffset( + cardRefMap.get(stepCardName)!, + cardRefMap.get('root')!, + ); + cardRect.set(stepCardName, stepRect); + const objectRect = getRefOffset( + cardRefMap.get(objectCardName)!, + cardRefMap.get('root')!, + ); + cardRect.set(objectCardName, objectRect); + + return { + key: `${type}.${stepCardName}.${objectCardName}`, + stepTaskId, + stepName: stepCardName, + objectName: objectCardName, + type, + x1: objectRect.left + objectRect.width, + y1: objectRect.top + 0.5 * objectRect.height, + x2: stepRect.left, + y2: stepRect.top + 0.5 * stepRect.height, + }; + }); + const objectMetrics = calculateLineMetrics(cardRect, 'object'); + const processMetrics = calculateLineMetrics(cardRect, 'process'); + const maxY2 = Math.max(objectMetrics.y2, processMetrics.y2); + + setObjectLine({ ...objectMetrics, y2: maxY2 }); + setProcessLine({ ...processMetrics, y2: maxY2 }); + + setSvgLineProps(svgLines_); + }, [forceRender, focusingStepId, relations]); + + return ( + // <Box + // sx={{ + // width: '100%', + // height: '100%', + // position: 'absolute', + // zIndex: 1, + // }} + // > + <svg + style={{ + position: 'absolute', + width: '100%', + height: objectLine.y2 + 50, + zIndex: 1, + userSelect: 'none', + }} + > + <marker + id="arrowhead" + markerWidth="4" + markerHeight="4" + refX="2" + refY="2" + orient="auto" + markerUnits="strokeWidth" + > + <path d="M0,0 L4,2 L0,4 z" fill="#E5E5E5" /> + </marker> + <marker + id="starter" + markerWidth="4" + markerHeight="4" + refX="0" + refY="2" + orient="auto" + markerUnits="strokeWidth" + > + <path d="M0,0 L1,0 L1,4 L0,4 z" fill="#E5E5E5" /> + </marker> + + <g> + <text + x={objectLine.x} + y="15" + textAnchor="middle" + dominantBaseline="middle" + fill="#898989" + fontWeight="800" + > + Key Object + </text> + <line + x1={objectLine.x} + y1={30} + x2={objectLine.x} + y2={objectLine.y2 + 30} + stroke="#E5E5E5" + strokeWidth="8" + markerEnd="url(#arrowhead)" + markerStart="url(#starter)" + ></line> + <text + x={processLine.x} + y="15" + textAnchor="middle" + dominantBaseline="middle" + fill="#898989" + fontWeight="800" + > + Process + </text> + <line + x1={processLine.x} + y1={30} + x2={processLine.x} + y2={processLine.y2 + 30} + stroke="#E5E5E5" + strokeWidth="8" + markerEnd="url(#arrowhead)" + markerStart="url(#starter)" + ></line> + </g> + <g> + {svgLineProps.map(edgeValue => ( + <line + key={edgeValue.key} + x1={edgeValue.x1} + y1={edgeValue.y1} + x2={edgeValue.x2} + y2={edgeValue.y2} + strokeWidth="5" + stroke={edgeValue.type === 'output' ? '#FFCA8C' : '#B9DCB0'} + strokeOpacity={ + focusingStepId === edgeValue.stepTaskId ? '100%' : '20%' + } + ></line> + ))} + </g> + </svg> + // </Box> + ); +}; + +export default D3Graph; diff --git a/frontend/src/components/Outline/OutlineView.tsx b/frontend/src/components/Outline/OutlineView.tsx new file mode 100644 index 0000000..2c2cbc2 --- /dev/null +++ b/frontend/src/components/Outline/OutlineView.tsx @@ -0,0 +1,281 @@ +// 已移除对d3的引用 +import React, { useState } from 'react'; +import { observer } from 'mobx-react-lite'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import IconButton from '@mui/material/IconButton'; +import AddIcon from '@mui/icons-material/Add'; +import D3Graph from './D3Graph'; +import { ObjectCard, ProcessCard, EditObjectCard } from './Cards'; +import { RectWatcher } from './RectWatcher'; +import { globalStorage } from '@/storage'; + +export default observer(() => { + const { outlineRenderingStepTaskCards, focusingStepTaskId } = globalStorage; + const [renderCount, setRenderCount] = useState(0); + const [addObjectHover, setAddObjectHover] = useState(false); + const [isAddingObject, setIsAddingObject] = useState(false); + const [activeObjectAdd, setActiveObjectAdd] = useState(''); + const [activeProcessIdAdd, setactiveProcessIdAdd] = useState(''); + + const handleProcessClick = (processName: string) => { + if (processName === focusingStepTaskId) { + globalStorage.setFocusingStepTaskId(undefined); + } else { + globalStorage.setFocusingStepTaskId(processName); + } + }; + + const finishAddInitialObject = (objectName: string) => { + setIsAddingObject(false); + globalStorage.addUserInput(objectName); + }; + + const addInitialObject = () => setIsAddingObject(true); + + const handleObjectAdd = (objectName: string) => + setActiveObjectAdd(activeObjectAdd === objectName ? '' : objectName); + const handleProcessAdd = (processName: string) => + setactiveProcessIdAdd( + activeProcessIdAdd === processName ? '' : processName, + ); + + const cardRefMap = new Map<string, React.RefObject<HTMLElement>>(); + const getCardRef = (cardId: string) => { + if (cardRefMap.has(cardId)) { + return cardRefMap.get(cardId); + } else { + cardRefMap.set(cardId, React.createRef<HTMLElement>()); + return cardRefMap.get(cardId); + } + }; + + const handleEditContent = (stepTaskId: string, newContent: string) => { + globalStorage.setStepTaskContent(stepTaskId, newContent); + }; + const WidthRatio = ['30%', '15%', '52.5%']; + + const [cardRefMapReady, setCardRefMapReady] = React.useState(false); + + React.useEffect(() => { + setCardRefMapReady(true); + setRenderCount(old => (old + 1) % 10); + }, []); + + React.useEffect(() => { + if (activeObjectAdd !== '' && activeProcessIdAdd !== '') { + if ( + outlineRenderingStepTaskCards + .filter(({ id }) => id === activeProcessIdAdd)[0] + .inputs.includes(activeObjectAdd) + ) { + globalStorage.removeStepTaskInput(activeProcessIdAdd, activeObjectAdd); + } else { + globalStorage.addStepTaskInput(activeProcessIdAdd, activeObjectAdd); + } + // globalStorage.addStepTaskInput(activeProcessIdAdd, activeObjectAdd); + setActiveObjectAdd(''); + setactiveProcessIdAdd(''); + } + }, [activeObjectAdd, activeProcessIdAdd]); + + return ( + <Box + sx={{ + position: 'relative', + height: '100%', + overflow: 'auto', + }} + ref={getCardRef('root')} + onScroll={() => { + globalStorage.renderLines({ delay: 0, repeat: 2 }); + }} + > + <RectWatcher onRectChange={() => setRenderCount(old => (old + 1) % 10)}> + <Stack + sx={{ + position: 'absolute', + zIndex: 2, + paddingTop: '30px', + width: '100%', + }} + > + <Box + sx={{ + display: 'flex', + alignItems: 'center', + width: WidthRatio[0], + flexDirection: 'column', + justifyContent: 'center', + }} + > + {isAddingObject ? ( + <EditObjectCard finishEdit={finishAddInitialObject} /> + ) : ( + <Box + onMouseOver={() => setAddObjectHover(true)} + onMouseOut={() => setAddObjectHover(false)} + onClick={() => addInitialObject()} + sx={{ display: 'inline-flex', paddingTop: '6px' }} + > + <IconButton + sx={{ + color: 'primary', + '&:hover': { + color: 'primary.dark', + }, + padding: '0px', + borderRadius: 0, + border: '1px dotted #333', + + visibility: addObjectHover ? 'visible' : 'hidden', + }} + > + <AddIcon /> + </IconButton> + </Box> + )} + </Box> + + {globalStorage.userInputs.map(initialInput => ( + <Box key={initialInput} sx={{ display: 'flex' }}> + <Box + sx={{ + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flex: `0 0 ${WidthRatio[0]}`, + }} + > + <ObjectCard + key={initialInput} + object={{ + name: initialInput, + cardRef: getCardRef(`object.${initialInput}`), + }} + // isAddActive={initialInput === activeObjectAdd} + isAddActive={activeProcessIdAdd !== ''} + {...(activeProcessIdAdd !== '' + ? { + addOrRemove: !outlineRenderingStepTaskCards + .filter(({ id }) => id === activeProcessIdAdd)[0] + .inputs.includes(initialInput), + } + : {})} + handleAddActive={handleObjectAdd} + /> + </Box> + </Box> + ))} + + {outlineRenderingStepTaskCards.map( + ({ id, name, output, agentIcons, agents, content, ref }, index) => ( + <Box + key={`stepTaskCard.${id}`} + sx={{ display: 'flex' }} + ref={ref} + > + <Box + sx={{ + display: 'flex', + alignItems: 'center', + width: WidthRatio[0], + justifyContent: 'center', + flex: `0 0 ${WidthRatio[0]}`, + }} + > + {output && ( + <ObjectCard + key={`objectCard.${output}`} + object={{ + name: output, + cardRef: getCardRef(`object.${output}`), + }} + // isAddActive={output === activeObjectAdd} + isAddActive={ + activeProcessIdAdd !== '' && + outlineRenderingStepTaskCards + .map(({ id }) => id) + .indexOf(activeProcessIdAdd) > index + } + {...(activeProcessIdAdd !== '' + ? { + addOrRemove: !outlineRenderingStepTaskCards + .filter(({ id }) => id === activeProcessIdAdd)[0] + .inputs.includes(output), + } + : {})} + handleAddActive={handleObjectAdd} + /> + )} + </Box> + <Box sx={{ flex: `0 0 ${WidthRatio[1]}` }} /> + <Box + sx={{ + // display: 'flex', + alignItems: 'center', + // width: WidthRatio[2], + justifyContent: 'center', + flex: `0 0 ${WidthRatio[2]}`, + }} + > + {name && ( + <ProcessCard + process={{ + id, + name, + icons: agentIcons, + agents, + content, + cardRef: getCardRef(`process.${name}`), + }} + handleProcessClick={handleProcessClick} + isFocusing={focusingStepTaskId === id} + isAddActive={id === activeProcessIdAdd} + handleAddActive={handleProcessAdd} + handleEditContent={handleEditContent} + /> + )} + </Box> + </Box> + ), + )} + </Stack> + </RectWatcher> + {cardRefMapReady && ( + <D3Graph + cardRefMap={cardRefMap} + focusingStepId={focusingStepTaskId || ''} + relations={outlineRenderingStepTaskCards + .map(({ id, name, inputs, output }) => { + const relations: { + type: string; + stepTaskId: string; + stepCardName: string; + objectCardName: string; + }[] = []; + inputs.forEach(input => { + relations.push({ + type: 'input', + stepTaskId: id, + stepCardName: `process.${name}`, + objectCardName: `object.${input}`, + }); + }); + if (output) { + relations.push({ + type: 'output', + stepTaskId: id, + stepCardName: `process.${name}`, + objectCardName: `object.${output}`, + }); + } + return relations; + }) + .flat()} + forceRender={renderCount} + /> + )} + </Box> + ); +}); diff --git a/frontend/src/components/Outline/RectWatcher.tsx b/frontend/src/components/Outline/RectWatcher.tsx new file mode 100644 index 0000000..a2fb978 --- /dev/null +++ b/frontend/src/components/Outline/RectWatcher.tsx @@ -0,0 +1,73 @@ +import React from 'react'; +import debounce from 'lodash/debounce'; + +// Define the props for the RectWatcher component +interface RectWatcherProps { + children: React.ReactNode; + onRectChange: (size: { height: number; width: number }) => void; + debounceDelay?: number; // Optional debounce delay with a default value +} + +// Rewrite the RectWatcher component with TypeScript +export const RectWatcher = React.memo<RectWatcherProps>( + ({ + children, + onRectChange, + debounceDelay = 10, // Assuming the delay is meant to be in milliseconds + }) => { + const [lastSize, setLastSize] = React.useState<{ + height: number; + width: number; + }>({ + height: -1, + width: -1, + }); + const ref = React.createRef<HTMLElement>(); // Assuming the ref is attached to a div element + + const debouncedHeightChange = React.useMemo( + () => + debounce((newSize: { height: number; width: number }) => { + if ( + newSize.height !== lastSize.height || + newSize.width !== lastSize.width + ) { + onRectChange(newSize); + setLastSize(newSize); + } + }, debounceDelay), + [onRectChange, debounceDelay, lastSize], + ); + + React.useEffect(() => { + if (ref.current) { + const resizeObserver = new ResizeObserver( + (entries: ResizeObserverEntry[]) => { + if (!entries.length) { + return; + } + const entry = entries[0]; + debouncedHeightChange({ + height: entry.contentRect.height, + width: entry.contentRect.width, + }); + }, + ); + resizeObserver.observe(ref.current); + return () => resizeObserver.disconnect(); + } + return () => undefined; + }, [debouncedHeightChange]); + + // Ensure children is a single React element + if ( + React.Children.count(children) !== 1 || + !React.isValidElement(children) + ) { + console.error('RectWatcher expects a single React element as children.'); + return <></>; + } + + // Clone the child element with the ref attached + return React.cloneElement(children, { ref } as any); + }, +); diff --git a/frontend/src/components/Outline/index.tsx b/frontend/src/components/Outline/index.tsx new file mode 100644 index 0000000..79f95df --- /dev/null +++ b/frontend/src/components/Outline/index.tsx @@ -0,0 +1,97 @@ +import { observer } from 'mobx-react-lite'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import OutlineView from './OutlineView'; + +import Title from '@/components/Title'; +import LoadingMask from '@/components/LoadingMask'; +import { globalStorage } from '@/storage'; +import BranchIcon from '@/icons/BranchIcon'; + +export default observer(({ style = {} }: { style?: SxProps }) => { + const { + api: { planReady }, + } = globalStorage; + + return ( + <Box + sx={{ + position: 'relative', + background: '#FFF', + border: '3px solid #E1E1E1', + display: 'flex', + overflow: 'hidden', + flexDirection: 'column', + ...style, + }} + > + <Title title="Plan Outline" /> + <Box + sx={{ + position: 'relative', + height: 0, + flexGrow: 1, + overflowY: 'auto', + overflowX: 'hidden', + padding: '6px 12px', + }} + > + {planReady ? <OutlineView /> : <></>} + {globalStorage.api.planGenerating ? ( + <LoadingMask + style={{ + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + }} + /> + ) : ( + <></> + )} + </Box> + {planReady ? ( + <Box + sx={{ + cursor: 'pointer', + userSelect: 'none', + position: 'absolute', + right: 0, + bottom: 0, + width: '36px', + height: '32px', + bgcolor: 'primary.main', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + borderRadius: '10px 0 0 0', + zIndex: 100, + '&:hover': { + filter: 'brightness(0.9)', + }, + }} + onClick={() => (globalStorage.planModificationWindow = true)} + > + <BranchIcon /> + <Box + component="span" + sx={{ + fontSize: '12px', + position: 'absolute', + right: '4px', + bottom: '2px', + color: 'white', + fontWeight: 800, + textAlign: 'right', + }} + > + {globalStorage.planManager.leaves.length} + </Box> + </Box> + ) : ( + <></> + )} + </Box> + ); +}); diff --git a/frontend/src/components/Outline/interface.tsx b/frontend/src/components/Outline/interface.tsx new file mode 100644 index 0000000..88fd462 --- /dev/null +++ b/frontend/src/components/Outline/interface.tsx @@ -0,0 +1,20 @@ +export interface ObjectProps { + name: string; + cardRef: any; +} +export interface ProcessProps { + id: string; + name: string; + icons: string[]; + agents: string[]; + cardRef: any; + content: string; +} +export interface ObjectProcessCardProps { + process: ProcessProps; + inputs: ObjectProps[]; + outputs: ObjectProps[]; + cardRef: any; + focusStep?: (stepId: string) => void; + focusing: boolean; +} diff --git a/frontend/src/components/PlanModification/PlanModificationSvg.tsx b/frontend/src/components/PlanModification/PlanModificationSvg.tsx new file mode 100644 index 0000000..7048a3b --- /dev/null +++ b/frontend/src/components/PlanModification/PlanModificationSvg.tsx @@ -0,0 +1,134 @@ +import React from 'react'; +import _ from 'lodash'; +import { observer } from 'mobx-react-lite'; +import { usePlanModificationContext } from './context'; +import { globalStorage } from '@/storage'; + +const getRefOffset = ( + child: React.RefObject<HTMLElement>, + grandParent: React.RefObject<HTMLElement>, +) => { + const offset = { top: 0, left: 0, width: 0, height: 0 }; + if (!child.current || !grandParent.current) { + return offset; + } + let node = child.current; + // Traverse up the DOM tree until we reach the grandparent or run out of elements + while (node && node !== grandParent.current) { + offset.top += node.offsetTop; + offset.left += node.offsetLeft; + // Move to the offset parent (the nearest positioned ancestor) + node = node.offsetParent as HTMLElement; + } + // If we didn't reach the grandparent, return null + if (node !== grandParent.current) { + return offset; + } + offset.width = child.current.offsetWidth; + offset.height = child.current.offsetHeight; + return offset; +}; + +const PlanModificationSvg = observer(() => { + const { + forestPaths, + whoIsAddingBranch, + nodeRefMap, + svgForceRenderCounter, + containerRef, + } = usePlanModificationContext(); + const { currentStepTaskNodeSet } = globalStorage; + const [nodeRectMap, setNodeRectMap] = React.useState( + new Map< + string, + { + top: number; + left: number; + width: number; + height: number; + } + >(), + ); + React.useEffect(() => { + if (containerRef) { + const nodeRectMap_ = new Map( + [...nodeRefMap].map(kv => { + return [kv[0], getRefOffset(kv[1], containerRef)]; + }), + ); + setNodeRectMap(nodeRectMap_); + } + }, [svgForceRenderCounter, whoIsAddingBranch]); + + const renderLine = (startid: string, endid: string) => { + const startRect = nodeRectMap.get(startid); + const endRect = nodeRectMap.get(endid); + if (!startRect || !endRect) { + return <></>; + } + let isCurrent = false; + if ( + currentStepTaskNodeSet.has(startid) && + currentStepTaskNodeSet.has(endid) + ) { + isCurrent = true; + } + if (startid === 'root' && currentStepTaskNodeSet.has(endid)) { + isCurrent = true; + } + // console.log(`line.${startid}${startRect.left}.${endid}${endRect.left}`); + return ( + <path + key={`line.${startid}${startRect.left}.${endid}${endRect.left}`} + d={`M ${startRect.left + 0.5 * startRect.width} ${ + startRect.top + 0.5 * startRect.height + } + C ${startRect.left + startRect.width * 0.5} ${ + endRect.top + 0.5 * endRect.height + }, + ${endRect.left} ${endRect.top + 0.5 * endRect.height}, + ${endRect.left} ${endRect.top + 0.5 * endRect.height}`} + fill="none" + stroke={isCurrent ? '#4a9c9e' : '#D9D9D9'} + strokeWidth="6" + ></path> + ); + }; + const renderRoot = () => { + const rootRect = nodeRectMap.get('root'); + if (rootRect && forestPaths.length > 0) { + return ( + <circle + key={`root${rootRect.left}`} + cx={rootRect.left + 0.5 * rootRect.width} + cy={rootRect.top + 0.5 * rootRect.height} + r="10" + fill="#4a9c9e" + /> + ); + } + return <></>; + }; + return ( + <svg + style={{ + position: 'absolute', + top: 0, + left: 0, + // backgroundColor: 'red', + width: _.max( + [...nodeRectMap.values()].map(rect => rect.left + rect.width), + ), + height: _.max( + [...nodeRectMap.values()].map(rect => rect.top + rect.height), + ), + }} + > + {forestPaths.map(pair => renderLine(pair[0], pair[1]))} + {renderRoot()} + {whoIsAddingBranch && renderLine(whoIsAddingBranch, 'requirement')} + </svg> + ); +}); + +export default PlanModificationSvg; diff --git a/frontend/src/components/PlanModification/context.tsx b/frontend/src/components/PlanModification/context.tsx new file mode 100644 index 0000000..513c4e6 --- /dev/null +++ b/frontend/src/components/PlanModification/context.tsx @@ -0,0 +1,195 @@ +// PlanModificationContext.tsx +import React, { + ReactNode, + RefObject, + createContext, + useContext, + useState, + useEffect, +} from 'react'; +import { IPlanTreeNode, globalStorage } from '@/storage'; + +interface PlanModificationContextProps { + forest: IPlanTreeNode | undefined; + setForest: (forest: IPlanTreeNode) => void; + forestPaths: [string, string][]; + setForestPaths: (paths: [string, string][]) => void; + + whoIsAddingBranch: string | undefined; + setWhoIsAddingBranch: (whoIsAddingBranch: string | undefined) => void; + updateWhoIsAddingBranch: (whoIsAddingBranch: string | undefined) => void; + + containerRef: React.RefObject<HTMLElement> | undefined; + setContainerRef: (containerRef: React.RefObject<HTMLElement>) => void; + nodeRefMap: Map<string, RefObject<HTMLElement>>; + updateNodeRefMap: (key: string, value: RefObject<HTMLElement>) => void; + + baseNodeSet: Set<string>; + setBaseNodeSet: (baseNodeSet: Set<string>) => void; + baseLeafNodeId: string | undefined; + setBaseLeafNodeId: (baseLeafNodeId: string | undefined) => void; + + handleRequirementSubmit: (requirement: string, number: number) => void; + handleNodeClick: (nodeId: string) => void; + + handleNodeHover: (nodeId: string | undefined) => void; + + svgForceRenderCounter: number; + setSVGForceRenderCounter: (n: number) => void; + svgForceRender: () => void; +} + +const PlanModificationContext = createContext<PlanModificationContextProps>( + {} as PlanModificationContextProps, +); + +export const usePlanModificationContext = () => + useContext(PlanModificationContext); + +export const PlanModificationProvider: React.FC<{ children: ReactNode }> = ({ + children, +}) => { + const [forest, setForest] = useState<IPlanTreeNode>(); + const [forestPaths, setForestPaths] = useState<[string, string][]>([]); + + useEffect(() => { + if (forest) { + setForestPaths(_getFatherChildrenIdPairs(forest)); + } + }, [forest]); + + const [whoIsAddingBranch, setWhoIsAddingBranch] = useState< + string | undefined + >(undefined); + const updateWhoIsAddingBranch = (whoId: string | undefined) => { + if (whoId === whoIsAddingBranch) { + setWhoIsAddingBranch(undefined); + } else { + setWhoIsAddingBranch(whoId); + } + }; + const [containerRef, setContainerRef] = React.useState< + React.RefObject<HTMLElement> | undefined + >(undefined); + const [baseNodeSet, setBaseNodeSet] = React.useState<Set<string>>( + new Set<string>(), + ); + const [baseLeafNodeId, setBaseLeafNodeId] = React.useState< + string | undefined + >(undefined); + const [nodeRefMap] = React.useState( + new Map<string, RefObject<HTMLElement>>(), + ); + const updateNodeRefMap = (key: string, value: RefObject<HTMLElement>) => { + nodeRefMap.set(key, value); + }; + + const handleRequirementSubmit = (requirement: string, number: number) => { + if (whoIsAddingBranch) { + const start = + whoIsAddingBranch === 'root' ? undefined : whoIsAddingBranch; + globalStorage.newPlanBranch(start, requirement, number, baseLeafNodeId); + setWhoIsAddingBranch(undefined); + setBaseNodeSet(new Set()); + setBaseLeafNodeId(undefined); + } + }; + const handleNodeClick = (nodeId: string) => { + const leafId = globalStorage.getFirstLeafStepTask(nodeId).id; + if (whoIsAddingBranch) { + if (baseLeafNodeId === leafId) { + setBaseNodeSet(new Set()); + setBaseLeafNodeId(undefined); + } else { + const pathNodeSet = new Set(globalStorage.getStepTaskLeafPath(leafId)); + if ( + pathNodeSet.has(whoIsAddingBranch) || + whoIsAddingBranch === 'root' + ) { + setBaseLeafNodeId(leafId); + setBaseNodeSet(pathNodeSet); + } + } + } else { + globalStorage.setCurrentPlanBranch(leafId); + globalStorage.setFocusingStepTaskId(nodeId); + } + }; + + const [svgForceRenderCounter, setSVGForceRenderCounter] = useState(0); + const svgForceRender = () => { + setSVGForceRenderCounter((svgForceRenderCounter + 1) % 100); + }; + + const handleNodeHover = (nodeId: string | undefined) => { + if (!whoIsAddingBranch) { + if (nodeId) { + const leafNode = globalStorage.getFirstLeafStepTask(nodeId); + const branchInfo = globalStorage.planManager.branches[leafNode.id]; + if (branchInfo.base) { + const pathNodeSet = new Set( + globalStorage.getStepTaskLeafPath(branchInfo.base), + ); + setBaseNodeSet(pathNodeSet); + } + } else { + setBaseNodeSet(new Set()); + } + } + }; + + useEffect(() => { + setBaseNodeSet(new Set()); + setBaseLeafNodeId(undefined); + }, [whoIsAddingBranch]); + + useEffect(() => { + svgForceRender(); + }, [forest, whoIsAddingBranch]); + + return ( + <PlanModificationContext.Provider + value={{ + forest, + setForest, + forestPaths, + setForestPaths, + + whoIsAddingBranch, + setWhoIsAddingBranch, + updateWhoIsAddingBranch, + + containerRef, + setContainerRef, + nodeRefMap, + updateNodeRefMap, + + baseNodeSet, + setBaseNodeSet, + baseLeafNodeId, + setBaseLeafNodeId, + + handleRequirementSubmit, + handleNodeClick, + handleNodeHover, + + svgForceRenderCounter, + setSVGForceRenderCounter, + svgForceRender, + }} + > + {children} + </PlanModificationContext.Provider> + ); +}; + +// ---------------------------------------------------------------- +const _getFatherChildrenIdPairs = (node: IPlanTreeNode): [string, string][] => { + let pairs: [string, string][] = []; + // 对于每个子节点,添加 (父ID, 子ID) 对,并递归调用函数 + node.children.forEach(child => { + pairs.push([node.id, child.id]); + pairs = pairs.concat(_getFatherChildrenIdPairs(child)); + }); + return pairs; +}; diff --git a/frontend/src/components/PlanModification/index.tsx b/frontend/src/components/PlanModification/index.tsx new file mode 100644 index 0000000..c6f87a1 --- /dev/null +++ b/frontend/src/components/PlanModification/index.tsx @@ -0,0 +1,445 @@ +/* eslint-disable max-lines */ + +import React from 'react'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import AddIcon from '@mui/icons-material/Add'; +import RemoveIcon from '@mui/icons-material/Remove'; +import IconButton from '@mui/material/IconButton'; +import Paper from '@mui/material/Paper'; +import InputBase from '@mui/material/InputBase'; +// import SendIcon from '@mui/icons-material/Send'; +import { observer } from 'mobx-react-lite'; +import CircularProgress from '@mui/material/CircularProgress'; +import AgentIcon from '../AgentIcon'; +import PlanModificationSvg from './PlanModificationSvg'; +import { + PlanModificationProvider, + usePlanModificationContext, +} from './context'; +import { IPlanTreeNode, globalStorage } from '@/storage'; +import SendIcon from '@/icons/sendIcon'; + +const RequirementNoteNode: React.FC<{ + data: { + text: string; + }; + style?: SxProps; +}> = ({ data, style }) => { + return ( + <Box sx={{ ...style, flexShrink: 0 }}> + <Box + sx={{ + color: '#ACACAC', + userSelect: 'none', + // width: 'max-content', + minWidth: '250px', + }} + > + {data.text} + </Box> + </Box> + ); +}; + +const RequirementInputNode: React.FC<{ + style?: SxProps; +}> = ({ style }) => { + const { handleRequirementSubmit, updateNodeRefMap } = + usePlanModificationContext(); + const [number, setNumber] = React.useState(1); + const myRef = React.useRef<HTMLElement>(null); + React.useEffect(() => { + updateNodeRefMap('requirement', myRef); + }, []); + // const handleWheel = (event: any) => { + // // 向上滚动时减少数字,向下滚动时增加数字 + // if (event.deltaY < 0) { + // setNumber(prevNumber => prevNumber + 1); + // } else { + // setNumber(prevNumber => Math.max(1, prevNumber - 1)); + // } + // }; + + const handleSubmit = () => { + handleRequirementSubmit(textValue, number); + }; + const [textValue, setTextValue] = React.useState(''); + return ( + <Box + sx={{ + ...style, + }} + ref={myRef} + > + <Paper + sx={{ + p: '0px', + display: 'flex', + alignItems: 'center', + width: 250, + backgroundColor: 'white', + boxShadow: 'none', + border: '2px solid #b0b0b0', + borderRadius: '8px', + }} + > + <InputBase + sx={{ marginLeft: 1, flex: 1, backgroundColor: 'white' }} + placeholder="Add Branch" + onChange={e => { + setTextValue(e.target.value); + }} + onKeyDown={e => { + if (e.key === 'ArrowUp') { + setNumber(prevNumber => prevNumber + 1); + } else if (e.key === 'ArrowDown') { + setNumber(prevNumber => Math.max(1, prevNumber - 1)); + } + }} + /> + <Box + sx={{ + display: 'flex', + flexDirection: 'row', + alignItems: 'flex-end', + height: '100%', + }} + > + <IconButton + type="submit" + sx={{ + color: 'primary', + '&:hover': { + color: 'primary.dark', + }, + padding: '0px', + }} + onClick={handleSubmit} + > + <SendIcon color="#b6b6b6" /> + </IconButton> + <Box + sx={{ + height: 'min-content', + paddingLeft: '4px', + paddingRight: '4px', + cursor: 'pointer', // 提示用户可以与之互动 + }} + > + <Box component="span" sx={{ fontSize: '0.5em' }}> + X + </Box> + <Box component="span" sx={{ fontSize: '1em' }}> + {number} + </Box> + </Box> + </Box> + </Paper> + </Box> + ); +}; +const RootNode: React.FC<{ + style?: SxProps; +}> = ({ style }) => { + const { updateNodeRefMap, updateWhoIsAddingBranch, whoIsAddingBranch } = + usePlanModificationContext(); + const [onHover, setOnHover] = React.useState(false); + const myRef = React.useRef<HTMLElement>(null); + React.useEffect(() => { + updateNodeRefMap('root', myRef); + }, []); + return ( + <Box + onMouseOver={() => setOnHover(true)} + onMouseOut={() => setOnHover(false)} + sx={{ ...style, flexDirection: 'column', position: 'relative' }} + ref={myRef} + > + <IconButton + sx={{ + position: 'absolute', + left: '50%', + top: '50%', + transform: 'translateX(-50%) ', + color: 'primary', + '&:hover': { + color: 'primary.dark', + }, + visibility: + onHover || whoIsAddingBranch === 'root' ? 'visible' : 'hidden', + padding: '0px', + borderRadius: '50%', + border: '1px dotted #333', + height: '16px', + width: '16px', + marginTop: '-6px', + '& .MuiSvgIcon-root': { + fontSize: '14px', + }, + }} + onClick={() => updateWhoIsAddingBranch('root')} + > + {whoIsAddingBranch !== 'root' ? <AddIcon /> : <RemoveIcon />} + </IconButton> + </Box> + ); +}; + +const Node: React.FC<{ + node: IPlanTreeNode; + style?: SxProps; +}> = ({ node, style = {} }) => { + const { + updateNodeRefMap, + whoIsAddingBranch, + updateWhoIsAddingBranch, + handleNodeClick, + handleNodeHover, + baseNodeSet, + } = usePlanModificationContext(); + const [onHover, setOnHover] = React.useState(false); + const myRef = React.useRef<HTMLElement>(null); + React.useEffect(() => { + updateNodeRefMap(node.id, myRef); + }, []); + return ( + // <RectWatcher onRectChange={onRectChange}> + <Box sx={{ ...style }}> + <Box + onMouseOver={() => { + setOnHover(true); + handleNodeHover(node.id); + }} + onMouseOut={() => { + setOnHover(false); + handleNodeHover(undefined); + }} + sx={{ + flexDirection: 'column', + backgroundColor: '#F6F6F6', + border: node.focusing ? '2px solid #4A9C9E' : '2px solid #E5E5E5', + borderRadius: '12px', + maxWidth: '140px', + minWidth: '100px', + position: 'relative', + padding: '8px 6px', + boxShadow: baseNodeSet.has(node.id) ? '0 0 10px 5px #43b2aa' : '', + }} + ref={myRef} + onClick={() => handleNodeClick(node.id)} + > + <Box sx={{ textAlign: 'center', fontWeight: 600, marginBottom: '4px' }}> + {node.name} + </Box> + <Box + sx={{ + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + }} + > + {node.focusing && + node.agents.map(agentName => ( + <AgentIcon + key={`planModification.${node.id}.${agentName}`} + name={globalStorage.agentMap.get(agentName)?.icon ?? 'unknown'} + style={{ + width: '36px', + height: 'auto', + margin: '0px', + userSelect: 'none', + }} + tooltipInfo={globalStorage.agentMap.get(agentName)} + /> + ))} + </Box> + <Box + sx={{ + position: 'absolute', + left: '50%', + top: '100%', + transform: 'translateX(-50%) translateY(-50%)', + }} + > + <IconButton + sx={{ + color: 'primary', + '&:hover': { + color: 'primary.dark', + }, + visibility: + onHover || whoIsAddingBranch === node.id ? 'visible' : 'hidden', + padding: '0px', + borderRadius: '50%', + border: '1px dotted #333', + height: '16px', + width: '16px', + marginTop: '-6px', + '& .MuiSvgIcon-root': { + fontSize: '14px', + }, + }} + onClick={() => { + updateWhoIsAddingBranch(node.id); + }} + > + {whoIsAddingBranch !== node.id ? <AddIcon /> : <RemoveIcon />} + </IconButton> + </Box> + </Box> + </Box> + ); +}; + +const Tree: React.FC<{ + tree: IPlanTreeNode; +}> = ({ tree }) => { + const { whoIsAddingBranch } = usePlanModificationContext(); + + const generalNodeStyle = { + height: '60px', + padding: '8px', + display: 'flex', + alignItems: 'center', + margin: '8px 32px 8px 0px', + }; + const focusedNodeStyle = { + height: '80px', + padding: '8px', + display: 'flex', + alignItems: 'center', + margin: '8px 32px 8px 0px', + }; + + return ( + <Box sx={{ display: 'flex', flexDirection: 'row', zIndex: 999 }}> + <> + {tree.id !== 'root' && ( + <Node + node={tree} + style={{ + justifyContent: 'center', + alignSelf: 'flex-start', + cursor: 'pointer', + ...(tree.focusing ? focusedNodeStyle : generalNodeStyle), + }} + /> + )} + {tree.id === 'root' && ( + <RootNode + style={{ + justifyContent: 'center', + ...(tree.children[0] && tree.children[0].focusing + ? focusedNodeStyle + : generalNodeStyle), + }} + /> + )} + </> + <> + <Box + sx={{ + display: 'flex', + flexDirection: 'column', + alignItems: 'flex-start', + }} + > + {tree.id !== 'root' && tree.leaf && ( + <RequirementNoteNode + data={{ text: tree.requirement || '' }} + style={{ ...generalNodeStyle }} + /> + )} + + {tree.children.map(childTree => ( + <Tree key={`taskTree-${childTree.id}`} tree={childTree} /> + ))} + {tree.id === whoIsAddingBranch && ( + <RequirementInputNode + style={{ height: '80px', display: 'flex', alignItems: 'center' }} + /> + )} + </Box> + </> + </Box> + ); +}; + +interface IPlanModificationProps { + style?: SxProps; + resizeSignal?: number; +} + +const TheViewContent = observer( + ({ style, resizeSignal }: IPlanModificationProps) => { + const { renderingPlanForest } = globalStorage; + const { forest, setForest, setContainerRef, svgForceRender } = + usePlanModificationContext(); + const myRef = React.useRef<HTMLElement>(null); + + React.useEffect(() => { + setForest({ + agentIcons: [], + agents: [], + children: renderingPlanForest, + id: 'root', + leaf: false, + name: 'root', + focusing: true, + }); + }, [renderingPlanForest]); + + React.useEffect(() => { + setContainerRef(myRef); + }, []); + + React.useEffect(() => { + svgForceRender(); + }, [resizeSignal]); + + return ( + <Box + sx={{ + backgroundColor: 'white', + position: 'relative', + overflowY: 'auto', + overflowX: 'auto', + padding: '4px 6px', + userSelect: 'none', + ...style, + }} + ref={myRef} + > + {myRef.current && <PlanModificationSvg />} + {forest && <Tree tree={forest} />} + </Box> + ); + }, +); +/* eslint-enable max-lines */ + +const PlanModification: React.FC<IPlanModificationProps> = observer( + ({ style, resizeSignal }) => { + return ( + <PlanModificationProvider> + <TheViewContent style={style} resizeSignal={resizeSignal} /> + {globalStorage.api.stepTaskTreeGenerating && ( + <Box + sx={{ + position: 'absolute', + bottom: '10px', + right: '20px', + zIndex: 999, + }} + > + <CircularProgress size={40} /> + </Box> + )} + </PlanModificationProvider> + ); + }, +); + +export default PlanModification; diff --git a/frontend/src/components/ProcessDiscription/AgentDetailCard.tsx b/frontend/src/components/ProcessDiscription/AgentDetailCard.tsx new file mode 100644 index 0000000..5213490 --- /dev/null +++ b/frontend/src/components/ProcessDiscription/AgentDetailCard.tsx @@ -0,0 +1,178 @@ +import React from 'react'; +import { observer } from 'mobx-react-lite'; +import Box from '@mui/material/Box'; +// import EditIcon from '@mui/icons-material/Edit'; +import TextField from '@mui/material/TextField'; +import CheckIcon from '@mui/icons-material/Check'; +import CloseIcon from '@mui/icons-material/Close'; +import { IRichSentence } from '@/storage/plan'; +import { globalStorage } from '@/storage'; + +interface IAgentDetailCardProps { + id: string; + node: IRichSentence; + render: () => void; +} + +export default observer(({ id, node, render }: IAgentDetailCardProps) => { + const editContentRef = React.useRef(''); + const [edit, setEdit] = React.useState(false); + React.useEffect(() => { + render(); + }, [edit]); + + return ( + <Box + component="span" + sx={{ + cursor: 'pointer', + marginRight: '4px', + userSelect: 'none', + transition: 'all 200ms ease-out', + borderRadius: '0', + display: edit ? 'flex' : 'inline', + flexDirection: 'column', + border: edit ? '2px solid' : undefined, + '& .edit-button': { + display: 'none', + }, + '&:hover': { + filter: edit ? undefined : 'brightness(1.1)', + backgroundColor: edit + ? undefined + : ((node?.style ?? { borderColor: '#0003' }) as any)!.borderColor, + '& .edit-button': { + display: edit ? 'none' : 'inline-flex', + }, + }, + '&:active': { + filter: edit ? undefined : 'brightness(1)', + backgroundColor: edit + ? undefined + : ((node?.style ?? { borderColor: '#0003' }) as any)!.borderColor, + }, + lineHeight: '1.4rem', + padding: edit ? '6px' : undefined, + marginBottom: edit ? '6px' : undefined, + marginTop: edit ? '6px' : undefined, + borderBottom: `2px solid ${(node.style as any).borderColor}`, + backgroundImage: edit + ? 'linear-gradient(0deg, #FFF7, #FFF7)' + : undefined, + ...(edit ? node.whoStyle ?? {} : node.style), + }} + onDoubleClick={() => { + editContentRef.current = node.content; + setEdit(true); + }} + title="Double click to edit" + > + <Box + component="span" + sx={{ + userSelect: 'none', + padding: edit ? '0 6px' : '0 2px', + borderRadius: '14px', + border: '2px solid #0005', + transition: 'filter 100ms', + fontWeight: edit ? 800 : undefined, + ...node.whoStyle, + }} + > + {node.who} + </Box> + {edit ? ( + <> + <TextField + variant="outlined" + multiline + inputRef={ref => { + if (ref) { + ref.value = editContentRef.current; + } + }} + sx={{ + '& > .MuiInputBase-root': { + padding: '6px', + '& > fieldset': { + border: 'none', + }, + background: '#FFF8', + borderRadius: '12px', + }, + borderRadius: '12px', + border: '2px solid #0002', + marginTop: '4px', + '*': { + fontSize: '14px', + }, + }} + onChange={event => (editContentRef.current = event.target.value)} + /> + <Box + sx={{ + display: 'flex', + alignItems: 'center', + justifyContent: 'end', + paddingTop: '4px', + }} + > + <Box + onClick={() => { + if (!editContentRef.current) { + return; + } + setEdit(false); + const t = editContentRef.current; + globalStorage.updateAgentActionNodeContent( + id, + t[0].toUpperCase() + t.slice(1), + ); + }} + title="Save change" + sx={{ + cursor: 'pointer', + userSelect: 'none', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + background: '#3ec807', + borderRadius: '6px', + marginLeft: '4px', + padding: '0 4px', + '&:hover': { + filter: 'contrast(1.3)', + }, + }} + > + <CheckIcon sx={{ fontSize: '18px', color: 'white' }} /> + </Box> + <Box + onClick={() => setEdit(false)} + title="Cancel change" + sx={{ + cursor: 'pointer', + userSelect: 'none', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + background: '#d56464', + borderRadius: '6px', + marginLeft: '4px', + padding: '0 4px', + '&:hover': { + filter: 'contrast(1.3)', + }, + }} + > + <CloseIcon sx={{ fontSize: '18px', color: 'white' }} /> + </Box> + </Box> + </> + ) : ( + // <> {node.content}</> + <span> {node.content}</span> + )} + </Box> + ); +}); diff --git a/frontend/src/components/ProcessDiscription/DescriptionCard.tsx b/frontend/src/components/ProcessDiscription/DescriptionCard.tsx new file mode 100644 index 0000000..4328c61 --- /dev/null +++ b/frontend/src/components/ProcessDiscription/DescriptionCard.tsx @@ -0,0 +1,184 @@ +import React from 'react'; +import throttle from 'lodash/throttle'; +import { observer } from 'mobx-react-lite'; +import Box from '@mui/material/Box'; +import AgentDetailCard from './AgentDetailCard'; +import { globalStorage } from '@/storage'; +import { StepTaskNode } from '@/storage/plan'; +import { useResize } from '@/utils/resize-hook'; +import BranchIcon from '@/icons/BranchIcon'; + +export default observer(({ step }: { step: StepTaskNode }) => { + const card = step.descriptionCard; + const [expand, setExpand] = React.useState(false); + const expandRef = React.useRef(expand); + React.useEffect(() => { + globalStorage.renderLines({ delay: 1, repeat: 20 }); + }, [expand]); + const render = React.useMemo( + () => + throttle( + () => + requestAnimationFrame(() => { + if (refDetail.current) { + refDetail.current.style.height = expandRef.current + ? `${ + refDetail.current.querySelector('.description-detail')! + .scrollHeight + 12 + }px` + : '0px'; + } + }), + 5, + { + leading: false, + trailing: true, + }, + ), + [], + ); + React.useEffect(() => { + expandRef.current = expand; + render(); + }, [expand]); + React.useEffect(() => { + setExpand(globalStorage.focusingStepTaskId === step.id); + }, [globalStorage.focusingStepTaskId]); + const refDetail = useResize<HTMLDivElement>(render); + return ( + <Box sx={{ position: 'relative' }}> + <Box + sx={{ + position: 'relative', + fontSize: '14px', + flexDirection: 'column', + background: '#F6F6F6', + borderRadius: '8px', + padding: '8px 4px', + margin: '2px 0', + cursor: 'pointer', + border: '2px solid #E5E5E5', + transition: 'all 80ms ease-in-out', + '&:hover': { + border: '2px solid #cdcdcd', + backgroundImage: 'linear-gradient(0, #00000008, #00000008)', + }, + display: step.brief.template ? 'flex' : 'none', + }} + ref={card.ref} + onClick={() => globalStorage.setFocusingStepTaskId(step.id)} + > + <Box sx={{ marginLeft: '4px' }}> + {card.brief.map(({ text, style }, index) => + style ? ( + <Box + component="span" + // eslint-disable-next-line react/no-array-index-key + key={index} + sx={{ + userSelect: 'none', + padding: '0 4px', + fontWeight: 600, + transition: 'filter 100ms', + ...style, + }} + > + {text} + </Box> + ) : ( + <Box + component="span" + key={index} + sx={{ userSelect: 'none', lineHeight: '1.43rem' }} + > + {text} + </Box> + ), + )} + </Box> + <Box + ref={refDetail} + sx={{ + overflow: 'hidden', + transition: 'height 200ms ease-out', // 添加过渡效果 + }} + > + {expand ? ( + <Box + sx={{ + marginTop: '5px', + borderRadius: '12px', + padding: '4px 8px', + background: '#E4F0F0', + border: '3px solid #A9C6C5', + cursor: 'auto', + }} + className="description-detail" + > + <Box + sx={{ + color: '#4F8A87', + fontWeight: 800, + fontSize: '16px', + marginBottom: '4px', + }} + > + Specification: + </Box> + {card.detail.map((node, index) => ( + <AgentDetailCard + key={index} + node={node[0] as any} + id={node[1] as any} + render={render} + /> + ))} + </Box> + ) : ( + <></> + )} + </Box> + </Box> + {globalStorage.focusingStepTaskId === step.id ? ( + <Box + sx={{ + cursor: 'pointer', + userSelect: 'none', + position: 'absolute', + right: '-4px', + bottom: '2px', + width: '32px', + height: '32px', + bgcolor: 'primary.main', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + borderRadius: '10px 0 0 0', + '&:hover': { + filter: 'brightness(0.9)', + }, + }} + onClick={() => (globalStorage.taskProcessModificationWindow = true)} + > + <BranchIcon /> + <Box + component="span" + sx={{ + fontSize: '12px', + position: 'absolute', + right: '3px', + bottom: 0, + color: 'white', + fontWeight: 800, + textAlign: 'right', + }} + > + {step.agentSelection?.leaves?.length ?? 0} + </Box> + </Box> + ) : ( + <></> + )} + </Box> + ); +}); diff --git a/frontend/src/components/ProcessDiscription/index.tsx b/frontend/src/components/ProcessDiscription/index.tsx new file mode 100644 index 0000000..3757932 --- /dev/null +++ b/frontend/src/components/ProcessDiscription/index.tsx @@ -0,0 +1,57 @@ +import { observer } from 'mobx-react-lite'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import DescriptionCard from './DescriptionCard'; +import { globalStorage } from '@/storage'; +import LoadingMask from '@/components/LoadingMask'; +import Title from '@/components/Title'; + +export default observer(({ style = {} }: { style?: SxProps }) => { + return ( + <Box + sx={{ + background: '#FFF', + border: '3px solid #E1E1E1', + display: 'flex', + overflow: 'hidden', + flexDirection: 'column', + ...style, + }} + > + <Title title="Task Process" /> + <Stack + spacing={1} + sx={{ + position: 'relative', + padding: '6px 12px', + paddingBottom: '44px', + borderRadius: '10px', + height: 0, + flexGrow: 1, + overflowY: 'auto', + }} + onScroll={() => { + globalStorage.renderLines({ delay: 0, repeat: 2 }); + }} + > + {globalStorage.planManager.currentPlan.map(step => ( + <DescriptionCard key={step.name} step={step} /> + ))} + {globalStorage.api.planGenerating ? ( + <LoadingMask + style={{ + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + }} + /> + ) : ( + <></> + )} + </Stack> + </Box> + ); +}); diff --git a/frontend/src/components/ProcessRehearsal/ObjectNode.tsx b/frontend/src/components/ProcessRehearsal/ObjectNode.tsx new file mode 100644 index 0000000..c90e7ce --- /dev/null +++ b/frontend/src/components/ProcessRehearsal/ObjectNode.tsx @@ -0,0 +1,286 @@ +import React from 'react'; +import { observer } from 'mobx-react-lite'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import EditIcon from '@mui/icons-material/Edit'; +import TextField from '@mui/material/TextField'; +import CheckIcon from '@mui/icons-material/Check'; +import CloseIcon from '@mui/icons-material/Close'; +import MoreHorizIcon from '@mui/icons-material/MoreHoriz'; +import UnfoldLessIcon from '@mui/icons-material/UnfoldLess'; +import MarkdownBlock from '@/components/MarkdownBlock'; +import { globalStorage } from '@/storage'; + +export interface IObjectNodeProps { + name: string; + content: string; + _ref?: React.RefObject<HTMLDivElement | HTMLElement>; + style?: SxProps; + editObjectName?: string; + stepId: string; + handleExpand?: () => void; +} + +export default observer( + ({ + style = {}, + name, + content, + _ref, + editObjectName, + stepId, + handleExpand, + }: IObjectNodeProps) => { + const inputStringRef = React.useRef<string>(''); + const [edit, setEdit] = React.useState(false); + const [expand, setExpand] = React.useState(false); + const refDetail = React.useRef<HTMLDivElement>(null); + // 使用useEffect来更新detail容器的高度 + React.useEffect(() => { + if (refDetail.current) { + refDetail.current.style.height = expand + ? `${refDetail.current.scrollHeight}px` + : '0px'; + } + if (handleExpand) { + let count = 0; + const intervalId = setInterval(() => { + handleExpand(); + count++; + if (count >= 20) { + clearInterval(intervalId); + } + }, 10); + } + }, [expand]); + return ( + <Box + sx={{ + userSelect: 'none', + borderRadius: '8px', + background: '#F6F6F6', + padding: '10px', + border: '2px solid #E5E5E5', + fontSize: '14px', + position: 'relative', + ...(stepId + ? { + cursor: 'pointer', + transition: 'all 200ms ease-in-out', + '&:hover': { + border: '2px solid #0002', + backgroundImage: 'linear-gradient(0, #0000000A, #0000000A)', + }, + } + : {}), + ...style, + }} + ref={_ref} + onClick={() => { + if (stepId) { + globalStorage.setFocusingStepTaskId(stepId); + } + }} + > + <Box component="span" sx={{ fontWeight: 800 }}> + {name} + </Box> + {content && !editObjectName ? ( + <Box + ref={refDetail} + sx={{ + overflow: 'hidden', + transition: 'height 200ms ease-out', // 添加过渡效果 + }} + > + {expand ? ( + <MarkdownBlock + text={content} + style={{ + marginTop: '5px', + borderRadius: '6px', + padding: '4px', + background: '#E6E6E6', + fontSize: '12px', + maxHeight: '240px', + overflowY: 'auto', + border: '1px solid #0003', + whiteSpace: 'pre-wrap', + wordWrap: 'break-word', + marginBottom: '0', + }} + /> + ) : ( + <></> + )} + <Box + onClick={e => { + setExpand(v => !v); + e.stopPropagation(); + }} + sx={{ + position: 'absolute', + right: '18px', + bottom: '14px', + cursor: 'pointer', + userSelect: 'none', + height: '14px', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + background: '#0002', + borderRadius: '8px', + marginLeft: '4px', + padding: '0 4px', + '&:hover': { + background: '#0003', + }, + }} + > + {expand ? ( + <UnfoldLessIcon + sx={{ fontSize: '16px', transform: 'rotate(90deg)' }} + /> + ) : ( + <MoreHorizIcon sx={{ fontSize: '16px' }} /> + )} + </Box> + </Box> + ) : ( + <></> + )} + {editObjectName ? ( + <Box sx={{ position: 'relative' }}> + {edit ? ( + <> + <TextField + fullWidth + multiline + rows={1} + inputRef={ele => { + if (ele) { + ele.value = inputStringRef.current; + } + }} + onChange={event => + (inputStringRef.current = event.target.value) + } + size="small" + sx={{ + fontSize: '12px', + paddingTop: '10px', + paddingBottom: '10px', + borderRadius: '10px', + border: 'none !important', + borderBottom: 'none !important', + '&::before': { + borderBottom: 'none !important', + border: 'none !important', + }, + '& > .MuiInputBase-root': { + border: 'none', + background: '#0001', + '& > .MuiOutlinedInput-notchedOutline': { + border: 'none !important', + }, + }, + }} + /> + <Box + onClick={() => { + setEdit(false); + globalStorage.form.inputs[editObjectName] = + inputStringRef.current; + }} + sx={{ + position: 'absolute', + right: '8px', + bottom: '2px', + cursor: 'pointer', + userSelect: 'none', + height: '18px', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + backdropFilter: 'contrast(0.6)', + borderRadius: '3px', + marginLeft: '4px', + }} + > + <CheckIcon sx={{ fontSize: '18px', color: '#1d7d09' }} /> + </Box> + <Box + onClick={() => setEdit(false)} + sx={{ + position: 'absolute', + right: '34px', + bottom: '2px', + cursor: 'pointer', + userSelect: 'none', + height: '18px', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + backdropFilter: 'contrast(0.6)', + borderRadius: '3px', + marginLeft: '4px', + }} + > + <CloseIcon sx={{ fontSize: '18px', color: '#8e0707' }} /> + </Box> + </> + ) : ( + <> + <MarkdownBlock + text={globalStorage.form.inputs[editObjectName]} + style={{ + marginTop: '5px', + borderRadius: '6px', + padding: '4px', + background: '#E6E6E6', + fontSize: '12px', + maxHeight: '240px', + overflowY: 'auto', + border: '1px solid #0003', + whiteSpace: 'pre-wrap', + wordWrap: 'break-word', + marginBottom: '0', + }} + /> + <Box + onClick={() => { + inputStringRef.current = + globalStorage.form.inputs[editObjectName]; + setEdit(true); + }} + sx={{ + position: 'absolute', + right: '6px', + bottom: '8px', + cursor: 'pointer', + userSelect: 'none', + height: '14px', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + borderRadius: '3px', + marginLeft: '4px', + opacity: 0.5, + transition: 'opacity 200ms ease-out', + '&:hover': { + opacity: 1, + }, + }} + > + <EditIcon sx={{ fontSize: '14px' }} /> + </Box> + </> + )} + </Box> + ) : ( + <></> + )} + </Box> + ); + }, +); diff --git a/frontend/src/components/ProcessRehearsal/RehearsalSvg.tsx b/frontend/src/components/ProcessRehearsal/RehearsalSvg.tsx new file mode 100644 index 0000000..9da3fb6 --- /dev/null +++ b/frontend/src/components/ProcessRehearsal/RehearsalSvg.tsx @@ -0,0 +1,284 @@ +import React from 'react'; +import Box from '@mui/material/Box'; +import { observer } from 'mobx-react-lite'; +import { globalStorage } from '@/storage'; +import { ActionType, getAgentActionStyle } from '@/storage/plan'; + +interface ILine<T = string> { + type: T; + from: string; + to: string; +} + +interface RehearsalSvgProps { + cardRefMap: Map<string, React.RefObject<HTMLElement | HTMLDivElement>>; + renderCount: number; + objectStepOrder: string[]; + importantLines: ILine<ActionType>[]; + actionIsHovered: string | undefined; +} + +const getIOLineHeight = (nodeOrder: string[], lines: ILine[]) => { + const edgeHeightIndexMap_ = new Map<number, number[][]>(); + const compareFunction = (a: ILine, b: ILine): number => { + const [afrom, ato] = [a.from, a.to]; + const [bfrom, bto] = [b.from, b.to]; + + const afromPos = nodeOrder.indexOf(afrom); + const bfromPos = nodeOrder.indexOf(bfrom); + const atoPos = nodeOrder.indexOf(ato); + const btoPos = nodeOrder.indexOf(bto); + + // 如果最小位置相同,则比较位置之间的距离 + const aDistance = atoPos - afromPos; + const bDistance = btoPos - bfromPos; + + if (aDistance !== bDistance) { + return aDistance - bDistance; + } else { + return afromPos - bfromPos; + } + }; + lines.sort(compareFunction); + const isCrossOver = (ptPair: number[], ptList: number[][]) => { + for (const pt of ptList) { + if (pt[1] <= ptPair[0] || pt[0] >= ptPair[1]) { + continue; + } + return true; + } + return false; + }; + lines.forEach(line => { + const fromIndex = nodeOrder.indexOf(line.from); + const toIndex = nodeOrder.indexOf(line.to); + let h = 1; + while ( + isCrossOver([fromIndex, toIndex], edgeHeightIndexMap_.get(h) || []) + ) { + h += 1; + } + edgeHeightIndexMap_.set(h, [ + ...(edgeHeightIndexMap_.get(h) || []), + [fromIndex, toIndex], + ]); + }); + const edgeHeightMap_ = new Map<string, number>(); + edgeHeightIndexMap_.forEach((pairList, height) => { + // 遍历当前条目的数组,将数字替换为数组b中对应的名称 + pairList.forEach(pair => { + edgeHeightMap_.set(pair.map(index => nodeOrder[index]).join('.'), height); + }); + }); + return edgeHeightMap_; +}; + +const getOffset = (child: HTMLElement, parent: HTMLElement) => { + const parentRect = parent.getBoundingClientRect(); + const childRect = child.getBoundingClientRect(); + // 计算相对位置 + return new DOMRect( + childRect.left - parentRect.left, + childRect.top - parentRect.top, + childRect.width, + childRect.height, + ); +}; + +const calcCurve = (fromCard: DOMRect, toCard: DOMRect, height: number) => { + // calc bezier curve + // from [fromCard.left, fromCard.top+0.5*fromCard.height] + // to [toCard.left, toCard.top+0.5*toCard.height + const h = fromCard.left * height; + return `M ${fromCard.left + fromCard.width},${ + fromCard.top + 0.5 * fromCard.height + } + C ${fromCard.left + fromCard.width + 1.5 * h},${ + fromCard.top + 0.5 * fromCard.height + }, + ${toCard.left + toCard.width + 1.5 * h},${toCard.top + 0.5 * toCard.height}, + ${toCard.left + toCard.width},${toCard.top + 0.5 * toCard.height}`; +}; +const calcPath = (objectCard: DOMRect, stepCard: DOMRect, height: number) => { + // console.log('calcPath', fromCard, toCard, height); + const fromCard = objectCard.top < stepCard.top ? objectCard : stepCard; + const toCard = objectCard.top < stepCard.top ? stepCard : objectCard; + const h = fromCard.left * height; + + const ptList = [ + { x: fromCard.left, y: fromCard.top + fromCard.height - 10 }, + { x: fromCard.left - h, y: fromCard.top + fromCard.height + 10 - 10 }, + { x: toCard.left - h, y: toCard.top + 0 * toCard.height - 10 + 10 }, + { x: toCard.left, y: toCard.top + 0 * toCard.height + 10 }, + ]; + const path = [ + `M ${ptList[0].x},${ptList[0].y}`, + `L ${ptList[1].x},${ptList[1].y}`, + `L ${ptList[2].x},${ptList[2].y}`, + `L ${ptList[3].x},${ptList[3].y}`, + ].join(' '); + return path; +}; + +export default observer( + ({ + cardRefMap, + renderCount, + objectStepOrder, + importantLines, + actionIsHovered, + }: RehearsalSvgProps) => { + const IOLines = globalStorage.renderingIOLines; + const edgeHeightMap = React.useMemo( + () => getIOLineHeight(objectStepOrder, IOLines), + [objectStepOrder, IOLines], + ); + const [ioLineRects, setIOLineRects] = React.useState< + [ILine, DOMRect, DOMRect][] + >([]); + const [importantLineRects, setImportantLineRects] = React.useState< + [ILine, DOMRect, DOMRect][] + >([]); + const refreshCurrentIdRef = React.useRef(-1); + + React.useEffect(() => { + refreshCurrentIdRef.current = (refreshCurrentIdRef.current + 1) % 100000; + const currentId = refreshCurrentIdRef.current; + const sleep = (time: number) => + new Promise(resolve => setTimeout(resolve, time)); + (async () => { + let ioAllReady = false; + let importantAllReady = false; + const ioLineRects: [ILine, DOMRect, DOMRect][] = []; + const importantLineRects: [ILine, DOMRect, DOMRect][] = []; + while (true) { + if (refreshCurrentIdRef.current !== currentId) { + return; + } + const rootElement = cardRefMap.get('root')?.current; + if (!rootElement) { + await sleep(5); + continue; + } + if (!ioAllReady) { + ioAllReady = true; + for (const line of IOLines) { + const fromElement = cardRefMap.get(line.from)?.current; + const toElement = cardRefMap.get(line.to)?.current; + if (fromElement && toElement) { + ioLineRects.push([ + line, + getOffset(fromElement, rootElement), + getOffset(toElement, rootElement), + ]); + } else { + ioAllReady = false; + continue; + } + } + if (!ioAllReady) { + ioLineRects.length = 0; + await sleep(5); + continue; + } + } + if (!importantAllReady) { + importantAllReady = true; + for (const line of importantLines) { + const fromElement = cardRefMap.get(line.from)?.current; + const toElement = cardRefMap.get(line.to)?.current; + if (fromElement && toElement) { + importantLineRects.push([ + line, + getOffset(fromElement, rootElement), + getOffset(toElement, rootElement), + ]); + } else { + importantAllReady = false; + break; + } + } + if (!importantAllReady) { + importantLineRects.length = 0; + await sleep(5); + continue; + } + } + break; + } + setIOLineRects(ioLineRects); + setImportantLineRects(importantLineRects); + })(); + }, [edgeHeightMap, renderCount, cardRefMap]); + const ioLinesEle = React.useMemo( + () => + ioLineRects.map(([line, from, to]) => { + const key = `${line.from}.${line.to}`; + const height = edgeHeightMap.get(key) || 0; + return ( + <path + key={`Rehearsal.IOLine.${key}`} + fill="none" + strokeWidth="3" + stroke={line.type === 'output' ? '#FFCA8C' : '#B9DCB0'} + d={calcPath( + from, + to, + height / (Math.max(...edgeHeightMap.values()) + 1), + )} + /> + ); + }), + [ioLineRects], + ); + const importantLinesEle = React.useMemo( + () => + importantLineRects + .sort((a, b) => { + return a.to === b.to ? 0 : a.to === actionIsHovered ? 1 : -1; + }) + .map(([line, from, to]) => { + const key = `${line.from}.${line.to}`; + return ( + <path + key={`Rehearsal.ImportantLine.${key}`} + fill="none" + strokeWidth="3" + stroke={ + (getAgentActionStyle(line.type as any) as any).borderColor + } + d={calcCurve(from, to, 0.5)} + strokeOpacity={actionIsHovered === line.to ? 1 : 0.2} + // style={{ + // ...(actionIsHovered === line.to + // ? { filter: 'brightness(110%) saturate(100%)' } + // : { filter: 'brightness(100%) saturate(20%)' }), + // }} + /> + ); + }), + [importantLineRects, actionIsHovered], + ); + const height = cardRefMap + .get('root') + ?.current?.querySelector?.('.contents-stack')?.scrollHeight; + + return ( + <Box + component="svg" + sx={{ + position: 'absolute', + left: 0, + top: 0, + width: '100%', + height: height ? `${height}px` : '100%', + zIndex: 999, + pointerEvents: 'none', + }} + > + <g>{ioLinesEle}</g> + <g>{importantLinesEle}</g> + </Box> + ); + }, +); diff --git a/frontend/src/components/ProcessRehearsal/StepHistoryItem.tsx b/frontend/src/components/ProcessRehearsal/StepHistoryItem.tsx new file mode 100644 index 0000000..1e1f9e4 --- /dev/null +++ b/frontend/src/components/ProcessRehearsal/StepHistoryItem.tsx @@ -0,0 +1,170 @@ +import React from 'react'; +import { observer } from 'mobx-react-lite'; +import { Divider, SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import UnfoldLessIcon from '@mui/icons-material/UnfoldLess'; +import MoreHorizIcon from '@mui/icons-material/MoreHoriz'; +import MarkdownBlock from '@/components/MarkdownBlock'; +import { globalStorage } from '@/storage'; +import type { IExecuteStepHistoryItem } from '@/apis/execute-plan'; +import AgentIcon from '@/components/AgentIcon'; +import { getAgentActionStyle } from '@/storage/plan'; + +export interface IStepHistoryItemProps { + item: IExecuteStepHistoryItem; + actionRef: React.RefObject<HTMLDivElement | HTMLElement>; + style?: SxProps; + hoverCallback: (isHovered: boolean) => void; + handleExpand?: () => void; +} + +export default observer( + ({ + item, + actionRef, + hoverCallback, + handleExpand, + style = {}, + }: IStepHistoryItemProps) => { + const [expand, setExpand] = React.useState(false); + const refDetail = React.useRef<HTMLDivElement>(null); + // 使用useEffect来更新detail容器的高度 + React.useEffect(() => { + if (refDetail.current) { + refDetail.current.style.height = expand + ? `${refDetail.current.scrollHeight}px` + : '0px'; + } + if (handleExpand) { + let count = 0; + const intervalId = setInterval(() => { + handleExpand(); + count++; + if (count >= 20) { + clearInterval(intervalId); + } + }, 10); + } + }, [expand]); + const s = { ...getAgentActionStyle(item.type), ...style } as SxProps; + React.useEffect(() => { + console.log(item); + }, [item]); + return ( + <Box + ref={actionRef} + className="step-history-item" + sx={{ + userSelect: 'none', + borderRadius: '10px', + padding: '4px', + fontSize: '14px', + position: 'relative', + marginTop: '4px', + backgroundColor: (s as any).backgroundColor, + border: `2px solid ${(s as any).borderColor}`, + }} + onMouseOver={() => hoverCallback(true)} + onMouseOut={() => hoverCallback(false)} + > + <Box sx={{ display: 'flex', alignItems: 'center' }}> + <AgentIcon + name={globalStorage.agentIconMap.get(item.agent)} + style={{ height: '36px', width: 'auto', margin: '0px' }} + tooltipInfo={globalStorage.agentMap.get(item.agent)} + /> + <Box component="span" sx={{ fontWeight: 500, marginLeft: '4px' }}> + {item.agent} + </Box> + <Box component="span" sx={{ fontWeight: 400 }}> + : {item.type} + </Box> + </Box> + {item.result ? ( + <Box + ref={refDetail} + sx={{ + overflow: 'hidden', + transition: 'height 200ms ease-out', // 添加过渡效果 + }} + > + {expand ? ( + <> + <Divider + sx={{ + margin: '4px 0px', + borderBottom: '2px dashed', // 设置为虚线 + borderColor: '#0003', + }} + /> + <Box + sx={{ + marginLeft: '6px', + marginBottom: '4px', + color: '#0009', + fontWeight: 400, + }} + > + {item.description} + </Box> + <MarkdownBlock + text={item.result} + style={{ + marginTop: '5px', + borderRadius: '10px', + padding: '6px', + background: '#FFF9', + fontSize: '12px', + maxHeight: '240px', + overflowY: 'auto', + border: '1px solid #0003', + whiteSpace: 'pre-wrap', + wordWrap: 'break-word', + marginBottom: '5px', + }} + /> + </> + ) : ( + <></> + )} + <Box + onClick={e => { + setExpand(v => !v); + e.stopPropagation(); + }} + sx={{ + position: 'absolute', + right: '8px', + // bottom: '12px', + top: '24px', + cursor: 'pointer', + userSelect: 'none', + height: '14px', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + background: '#0002', + borderRadius: '8px', + marginLeft: '4px', + padding: '0 4px', + '&:hover': { + background: '#0003', + }, + }} + > + {expand ? ( + <UnfoldLessIcon + sx={{ fontSize: '16px', transform: 'rotate(90deg)' }} + /> + ) : ( + <MoreHorizIcon sx={{ fontSize: '16px' }} /> + )} + </Box> + </Box> + ) : ( + <></> + )} + </Box> + ); + }, +); diff --git a/frontend/src/components/ProcessRehearsal/StepNode.tsx b/frontend/src/components/ProcessRehearsal/StepNode.tsx new file mode 100644 index 0000000..1c7ed79 --- /dev/null +++ b/frontend/src/components/ProcessRehearsal/StepNode.tsx @@ -0,0 +1,86 @@ +import { observer } from 'mobx-react-lite'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import React from 'react'; +import StepHistoryItem from './StepHistoryItem'; +import type { IExecuteStepHistoryItem } from '@/apis/execute-plan'; +import { globalStorage } from '@/storage'; + +export interface IStepNodeProps { + name: string; + history: IExecuteStepHistoryItem[]; + touchRef: ( + id: string, + existingRef?: React.RefObject<HTMLElement>, + ) => React.RefObject<HTMLElement>; + _ref?: React.RefObject<HTMLDivElement | HTMLElement>; + + style?: SxProps; + id: string; + actionHoverCallback: (actionName: string | undefined) => void; + handleExpand?: () => void; +} + +export default observer( + ({ + style = {}, + name, + history, + _ref, + touchRef, + id, + actionHoverCallback, + handleExpand, + }: IStepNodeProps) => { + return ( + <Box + sx={{ + userSelect: 'none', + borderRadius: '12px', + background: '#F6F6F6', + padding: '10px', + border: '2px solid #E5E5E5', + fontSize: '14px', + position: 'relative', + display: 'flex', + flexDirection: 'column', + cursor: 'pointer', + transition: 'all 200ms ease-in-out', + '&:hover': { + border: '2px solid #0002', + backgroundImage: 'linear-gradient(0, #0000000A, #0000000A)', + }, + '& > .step-history-item:first-of-type': { + marginTop: '10px', + }, + ...style, + }} + ref={_ref} + onClick={() => { + if (id) { + globalStorage.setFocusingStepTaskId(id); + } + }} + > + <Box component="span" sx={{ fontWeight: 800 }}> + {name} + </Box> + {history.map((item, index) => ( + <StepHistoryItem + // eslint-disable-next-line react/no-array-index-key + key={`${item.id}.${item.agent}.${index}`} + item={item} + actionRef={touchRef(`Action.${name}.${item.id}`)!} + hoverCallback={(isHovered: boolean) => { + // console.log(isHovered, 'hover', `action.${name}.${item.id}`); + actionHoverCallback( + isHovered ? `Action.${name}.${item.id}` : undefined, + ); + }} + handleExpand={handleExpand} + /> + ))} + </Box> + ); + }, +); diff --git a/frontend/src/components/ProcessRehearsal/index.tsx b/frontend/src/components/ProcessRehearsal/index.tsx new file mode 100644 index 0000000..970e4be --- /dev/null +++ b/frontend/src/components/ProcessRehearsal/index.tsx @@ -0,0 +1,219 @@ +import React from 'react'; +import throttle from 'lodash/throttle'; +import { SxProps } from '@mui/material'; +import { observer } from 'mobx-react-lite'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import IconButton from '@mui/material/IconButton'; +import RefreshIcon from '@mui/icons-material/Refresh'; +import PlayArrowIcon from '@mui/icons-material/PlayArrow'; +import CircularProgress from '@mui/material/CircularProgress'; +import ObjectNode from './ObjectNode'; +import StepNode from './StepNode'; +import RehearsalSvg from './RehearsalSvg'; +import { globalStorage } from '@/storage'; +import Title from '@/components/Title'; +import { ExecuteNodeType } from '@/apis/execute-plan'; +import { useResize } from '@/utils/resize-hook'; + +export default observer(({ style = {} }: { style?: SxProps }) => { + const [renderCount, setRenderCount] = React.useState(0); + const cardRefMap = React.useMemo( + () => new Map<string, React.RefObject<HTMLElement>>(), + [], + ); + const touchRef = React.useCallback( + (id: string, existingRef?: React.RefObject<HTMLElement>) => { + if (existingRef) { + cardRefMap.set(id, existingRef); + return existingRef; + } + if (cardRefMap.has(id)) { + return cardRefMap.get(id)!; + } else { + cardRefMap.set(id, React.createRef<HTMLElement>()); + return cardRefMap.get(id)!; + } + }, + [cardRefMap], + ); + const render = React.useMemo( + () => + throttle( + () => + // eslint-disable-next-line max-nested-callbacks + requestAnimationFrame(() => setRenderCount(old => (old + 1) % 100)), + 5, + { + leading: false, + trailing: true, + }, + ), + [], + ); + const stackRef = useResize(render); + const [actionIsHovered, setActionIsHovered] = React.useState< + string | undefined + >(); + + return ( + <Box + sx={{ + background: '#FFF', + border: '3px solid #E1E1E1', + display: 'flex', + overflow: 'hidden', + flexDirection: 'column', + width: '100%', + ...style, + }} + > + <Box + sx={{ + fontWeight: 600, + fontSize: '18px', + userSelect: 'none', + padding: '0 6px 0 0', + position: 'relative', + display: 'flex', + alignItems: 'center', + }} + > + <Title title="Execution Result" /> + <Box + sx={{ + flexGrow: 1, + display: 'flex', + alignItems: 'center', + justifyContent: 'end', + }} + > + {globalStorage.api.planExecuting ? ( + <CircularProgress + sx={{ + width: '12px !important', + height: '12px !important', + marginLeft: '6px', + }} + /> + ) : ( + <></> + )} + {globalStorage.api.planExecuting ? ( + <></> + ) : ( + <> + <IconButton + disabled={!globalStorage.logManager.outdate} + size="small" + onClick={() => globalStorage.logManager.clearLog()} + sx={{ + color: 'error.main', + '&:hover': { + color: 'error.dark', + }, + }} + > + <RefreshIcon /> + </IconButton> + <IconButton + disabled={!globalStorage.api.ready} + size="small" + onClick={() => globalStorage.executePlan(Infinity)} + sx={{ + color: 'primary.main', + '&:hover': { + color: 'primary.dark', + }, + }} + > + <PlayArrowIcon /> + </IconButton> + </> + )} + </Box> + </Box> + <Box + sx={{ + position: 'relative', + height: 0, + flexGrow: 1, + overflowY: 'auto', + overflowX: 'hidden', + padding: '6px 6px', + }} + onScroll={() => { + globalStorage.renderLines({ delay: 0, repeat: 2 }); + }} + > + <Box sx={{ height: '100%', width: '100%' }}> + <Box sx={{ position: 'relative' }} ref={touchRef('root', stackRef)}> + <Stack + spacing="12px" + sx={{ + position: 'absolute', + zIndex: 1, + marginLeft: '12px', + marginRight: '12px', + width: 'calc(100% - 24px)', + paddingBottom: '24px', + }} + className="contents-stack" + > + {Object.keys(globalStorage.form.inputs).map(name => ( + <ObjectNode + key={`rehearsal.object.${name}`} + name={name} + content="" + stepId="" + editObjectName={name} + _ref={touchRef(`Object.${name}`)} + handleExpand={() => { + // render(); + setRenderCount(old => (old + 1) % 100); + }} + /> + ))} + {globalStorage.logManager.renderingLog.map(node => + node.type === ExecuteNodeType.Step ? ( + <StepNode + key={`rehearsal.step.${node.id}`} + id={node.stepId} + _ref={touchRef(`Step.${node.id}`, node.ref)} + name={node.id} + history={node.history} + touchRef={touchRef} + actionHoverCallback={setActionIsHovered} + handleExpand={() => { + // render(); + setRenderCount(old => (old + 1) % 100); + }} + /> + ) : ( + <ObjectNode + key={`rehearsal.object.${node.id}`} + _ref={touchRef(`Object.${node.id}`, node.ref)} + name={node.id} + content={node.content} + stepId={node.stepId} + handleExpand={() => { + // render(); + setRenderCount(old => (old + 1) % 100); + }} + /> + ), + )} + </Stack> + <RehearsalSvg + renderCount={renderCount} + cardRefMap={cardRefMap} + actionIsHovered={actionIsHovered} + objectStepOrder={globalStorage.rehearsalSvgObjectOrder} + importantLines={globalStorage.rehearsalSvgLines} + /> + </Box> + </Box> + </Box> + </Box> + ); +}); diff --git a/frontend/src/components/ResizeableColumn/index.tsx b/frontend/src/components/ResizeableColumn/index.tsx new file mode 100644 index 0000000..a0c9c61 --- /dev/null +++ b/frontend/src/components/ResizeableColumn/index.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { Resizable } from 're-resizable'; +import { globalStorage } from '@/storage'; + +export default React.memo<{ + children: React.ReactNode; + columnWidth: string; +}>(({ children, columnWidth }) => { + return ( + <Resizable + defaultSize={{ height: '100%', width: columnWidth }} + enable={{ + top: false, + right: true, + bottom: false, + left: false, + topRight: false, + bottomRight: false, + bottomLeft: false, + topLeft: false, + }} + minWidth="50px" + maxWidth="75%" + style={{ + flexShrink: 0, + display: 'flex', + flexWrap: 'nowrap', + position: 'relative', + flexGrow: 0, + }} + handleClasses={{ + right: 'side-resize-bar', + }} + handleStyles={{ + right: { + width: '4px', + right: '1px', + }, + }} + onResize={() => globalStorage.renderLines({ delay: 0, repeat: 3 })} + > + {children} + </Resizable> + ); +}); diff --git a/frontend/src/components/TaskModification/TaskModificationSvg.tsx b/frontend/src/components/TaskModification/TaskModificationSvg.tsx new file mode 100644 index 0000000..1c1987e --- /dev/null +++ b/frontend/src/components/TaskModification/TaskModificationSvg.tsx @@ -0,0 +1,132 @@ +import React from 'react'; +import _ from 'lodash'; +import { observer } from 'mobx-react-lite'; +import { useTaskModificationContext } from './context'; +import { globalStorage } from '@/storage'; + +const getRefOffset = ( + child: React.RefObject<HTMLElement>, + grandParent: React.RefObject<HTMLElement>, +) => { + const offset = { top: 0, left: 0, width: 0, height: 0 }; + if (!child.current || !grandParent.current) { + return offset; + } + let node = child.current; + // Traverse up the DOM tree until we reach the grandparent or run out of elements + while (node && node !== grandParent.current) { + offset.top += node.offsetTop; + offset.left += node.offsetLeft; + // Move to the offset parent (the nearest positioned ancestor) + node = node.offsetParent as HTMLElement; + } + // If we didn't reach the grandparent, return null + if (node !== grandParent.current) { + return offset; + } + offset.width = child.current.offsetWidth; + offset.height = child.current.offsetHeight; + return offset; +}; + +const TaskModificationSvg = observer(() => { + const { + forestPaths, + whoIsAddingBranch, + nodeRefMap, + svgForceRenderCounter, + containerRef, + } = useTaskModificationContext(); + const { currentActionNodeSet } = globalStorage; + + const [nodeRectMap, setNodeRectMap] = React.useState( + new Map< + string, + { + top: number; + left: number; + width: number; + height: number; + } + >(), + ); + React.useEffect(() => { + if (containerRef) { + const nodeRectMap_ = new Map( + [...nodeRefMap].map(kv => { + return [kv[0], getRefOffset(kv[1], containerRef)]; + }), + ); + setNodeRectMap(nodeRectMap_); + } + }, [svgForceRenderCounter, whoIsAddingBranch]); + + const renderLine = (startid: string, endid: string) => { + const startRect = nodeRectMap.get(startid); + const endRect = nodeRectMap.get(endid); + if (!startRect || !endRect) { + return <></>; + } + let isCurrent = false; + if (currentActionNodeSet.has(startid) && currentActionNodeSet.has(endid)) { + isCurrent = true; + } + if (startid === 'root' && currentActionNodeSet.has(endid)) { + isCurrent = true; + } + // console.log(`line.${startid}${startRect.left}.${endid}${endRect.left}`); + return ( + <path + key={`line.${startid}${startRect.left}.${endid}${endRect.left}`} + d={`M ${startRect.left + 0.5 * startRect.width} ${ + startRect.top + 0.5 * startRect.height + } + C ${startRect.left + startRect.width * 0.5} ${ + endRect.top + 0.5 * endRect.height + }, + ${endRect.left} ${endRect.top + 0.5 * endRect.height}, + ${endRect.left} ${endRect.top + 0.5 * endRect.height}`} + fill="none" + stroke={isCurrent ? '#4a9c9e' : '#D9D9D9'} + strokeWidth="6" + ></path> + ); + }; + const renderRoot = () => { + const rootRect = nodeRectMap.get('root'); + if (rootRect && forestPaths.length > 0) { + return ( + <circle + key={`root${rootRect.left}`} + cx={rootRect.left + 0.5 * rootRect.width} + cy={rootRect.top + 0.5 * rootRect.height} + r="10" + fill="#4a9c9e" + /> + ); + } + return <></>; + }; + return ( + <svg + style={{ + position: 'absolute', + top: 0, + left: 0, + // backgroundColor: 'red', + width: _.max( + [...nodeRectMap.values()].map(rect => rect.left + rect.width), + ), + height: _.max( + [...nodeRectMap.values()].map(rect => rect.top + rect.height), + ), + }} + > + {forestPaths.map(pair => renderLine(pair[0], pair[1]))} + {whoIsAddingBranch && renderLine(whoIsAddingBranch, 'requirement')} + {renderRoot()} + </svg> + ); +}); + +export default TaskModificationSvg; diff --git a/frontend/src/components/TaskModification/context.tsx b/frontend/src/components/TaskModification/context.tsx new file mode 100644 index 0000000..d182cb2 --- /dev/null +++ b/frontend/src/components/TaskModification/context.tsx @@ -0,0 +1,210 @@ +// TaskModificationContext.tsx +import React, { + ReactNode, + RefObject, + createContext, + useContext, + useState, + useEffect, +} from 'react'; +import { IAgentActionTreeNode, globalStorage } from '@/storage'; + +interface TaskModificationContextProps { + forest: IAgentActionTreeNode | undefined; + setForest: (forest: IAgentActionTreeNode) => void; + forestPaths: [string, string][]; + setForestPaths: (paths: [string, string][]) => void; + + whoIsAddingBranch: string | undefined; + setWhoIsAddingBranch: (whoIsAddingBranch: string | undefined) => void; + updateWhoIsAddingBranch: (whoIsAddingBranch: string | undefined) => void; + + containerRef: React.RefObject<HTMLElement> | undefined; + setContainerRef: (containerRef: React.RefObject<HTMLElement>) => void; + nodeRefMap: Map<string, RefObject<HTMLElement>>; + updateNodeRefMap: (key: string, value: RefObject<HTMLElement>) => void; + + baseNodeSet: Set<string>; + setBaseNodeSet: (baseNodeSet: Set<string>) => void; + baseLeafNodeId: string | undefined; + setBaseLeafNodeId: (baseLeafNodeId: string | undefined) => void; + + handleRequirementSubmit: (requirement: string, number: number) => void; + handleNodeClick: (nodeId: string) => void; + + handleNodeHover: (nodeId: string | undefined) => void; + + svgForceRenderCounter: number; + setSVGForceRenderCounter: (n: number) => void; + svgForceRender: () => void; +} + +const TaskModificationContext = createContext<TaskModificationContextProps>( + {} as TaskModificationContextProps, +); + +export const useTaskModificationContext = () => + useContext(TaskModificationContext); + +export const TaskModificationProvider: React.FC<{ children: ReactNode }> = ({ + children, +}) => { + const [forest, setForest] = useState<IAgentActionTreeNode>(); + const [forestPaths, setForestPaths] = useState<[string, string][]>([]); + + useEffect(() => { + if (forest) { + setForestPaths(_getFatherChildrenIdPairs(forest)); + } + }, [forest]); + + const [whoIsAddingBranch, setWhoIsAddingBranch] = useState< + string | undefined + >(undefined); + const updateWhoIsAddingBranch = (whoId: string | undefined) => { + if (whoId === whoIsAddingBranch) { + setWhoIsAddingBranch(undefined); + } else { + setWhoIsAddingBranch(whoId); + } + }; + const [containerRef, setContainerRef] = React.useState< + React.RefObject<HTMLElement> | undefined + >(undefined); + const [baseNodeSet, setBaseNodeSet] = React.useState<Set<string>>( + new Set<string>(), + ); + const [baseLeafNodeId, setBaseLeafNodeId] = React.useState< + string | undefined + >(undefined); + const [nodeRefMap] = React.useState( + new Map<string, RefObject<HTMLElement>>(), + ); + const updateNodeRefMap = (key: string, value: RefObject<HTMLElement>) => { + nodeRefMap.set(key, value); + }; + + const handleRequirementSubmit = (requirement: string, number: number) => { + if (whoIsAddingBranch) { + const start = + whoIsAddingBranch === 'root' ? undefined : whoIsAddingBranch; + // globalStorage.newPlanBranch(start, requirement, number, baseLeafNodeId); + globalStorage.newActionBranch( + globalStorage.currentFocusingAgentSelection?.id, + start, + requirement, + number, + baseLeafNodeId, + ); + setWhoIsAddingBranch(undefined); + setBaseNodeSet(new Set()); + setBaseLeafNodeId(undefined); + } + }; + const handleNodeClick = (nodeId: string) => { + const leafId = globalStorage.getFirstLeafAction(nodeId)?.node.id; + console.log(leafId); + if (leafId) { + if (whoIsAddingBranch) { + if (baseLeafNodeId === leafId) { + setBaseNodeSet(new Set()); + setBaseLeafNodeId(undefined); + } else { + const pathNodeSet = new Set(globalStorage.getActionLeafPath(leafId)); + if ( + pathNodeSet.has(whoIsAddingBranch) || + whoIsAddingBranch === 'root' + ) { + setBaseLeafNodeId(leafId); + setBaseNodeSet(pathNodeSet); + } + } + } else { + globalStorage.setCurrentAgentActionBranch(leafId, undefined); + } + } + }; + + const [svgForceRenderCounter, setSVGForceRenderCounter] = useState(0); + const svgForceRender = () => { + setSVGForceRenderCounter((svgForceRenderCounter + 1) % 100); + }; + + const handleNodeHover = (nodeId: string | undefined) => { + if (!whoIsAddingBranch) { + if (nodeId) { + const leafNode = globalStorage.getFirstLeafAction(nodeId); + if (leafNode?.branchInfo) { + // const branchInfo = + // globalStorage.focusingStepTask.agentSelection.branches[leafNode.id]; + // console.log(leafNode); + if (leafNode.branchInfo.base) { + const pathNodeSet = new Set( + globalStorage.getActionLeafPath(leafNode.branchInfo.base), + ); + setBaseNodeSet(pathNodeSet); + } + } + } else { + setBaseNodeSet(new Set()); + } + } + }; + + useEffect(() => { + setBaseNodeSet(new Set()); + setBaseLeafNodeId(undefined); + }, [whoIsAddingBranch]); + + useEffect(() => { + svgForceRender(); + }, [forest, whoIsAddingBranch]); + + return ( + <TaskModificationContext.Provider + value={{ + forest, + setForest, + forestPaths, + setForestPaths, + + whoIsAddingBranch, + setWhoIsAddingBranch, + updateWhoIsAddingBranch, + + containerRef, + setContainerRef, + nodeRefMap, + updateNodeRefMap, + + baseNodeSet, + setBaseNodeSet, + baseLeafNodeId, + setBaseLeafNodeId, + + handleRequirementSubmit, + handleNodeClick, + handleNodeHover, + + svgForceRenderCounter, + setSVGForceRenderCounter, + svgForceRender, + }} + > + {children} + </TaskModificationContext.Provider> + ); +}; + +// ---------------------------------------------------------------- +const _getFatherChildrenIdPairs = ( + node: IAgentActionTreeNode, +): [string, string][] => { + let pairs: [string, string][] = []; + // 对于每个子节点,添加 (父ID, 子ID) 对,并递归调用函数 + node.children.forEach(child => { + pairs.push([node.id, child.id]); + pairs = pairs.concat(_getFatherChildrenIdPairs(child)); + }); + return pairs; +}; diff --git a/frontend/src/components/TaskModification/fakeTaskModification.ts b/frontend/src/components/TaskModification/fakeTaskModification.ts new file mode 100644 index 0000000..3f10e5e --- /dev/null +++ b/frontend/src/components/TaskModification/fakeTaskModification.ts @@ -0,0 +1,75 @@ +export const fakeTaskTree = { + id: 'root', // 根节点 + children: [ + { + id: 'child1', // 子节点 + children: [ + // 子节点的子节点数组 + { + id: 'child1_1', // 子节点的子节点 + children: [], // 叶节点,没有子节点 + }, + { + id: 'child1_2', // 另一个子节点的子节点 + children: [], // 叶节点,没有子节点 + }, + ], + }, + { + id: 'child2', // 另一个子节点 + children: [ + { + id: 'child2_1', + children: [], + }, + ], + }, + ], +}; + +export const fakeNodeData = new Map([ + [ + 'child1', + { + agentIcon: 'John_Lin', + style: { backgroundColor: '#b4d0d9', borderColor: '#b4d099' }, + isLeaf: true, + requirement: 'hhhh', + }, + ], + [ + 'child2', + { + agentIcon: 'Mei_Lin', + style: { backgroundColor: '#b4d0d9', borderColor: '#b4d099' }, + isLeaf: false, + }, + ], + [ + 'child1_1', + { + agentIcon: 'Tamara_Taylor', + style: { backgroundColor: '#b4d0d9', borderColor: '#b4d099' }, + isLeaf: true, + requirement: 'requirement', + }, + ], + [ + 'child1_2', + { + agentIcon: 'Sam_Moore', + style: { backgroundColor: '#b4d0d9', borderColor: '#b4d099' }, + isLeaf: true, + requirement: 'requirement', + }, + ], + [ + 'child2_1', + { + agentIcon: 'Sam_Moore', + style: { backgroundColor: '#b4d0d9', borderColor: '#b4d099' }, + isLeaf: true, + requirement: 'requirement', + }, + ], +]); diff --git a/frontend/src/components/TaskModification/index.tsx b/frontend/src/components/TaskModification/index.tsx new file mode 100644 index 0000000..2f08fbb --- /dev/null +++ b/frontend/src/components/TaskModification/index.tsx @@ -0,0 +1,457 @@ +/* eslint-disable max-lines */ + +import React from 'react'; +import { SxProps, CircularProgress } from '@mui/material'; +import Box from '@mui/material/Box'; +import AddIcon from '@mui/icons-material/Add'; +import RemoveIcon from '@mui/icons-material/Remove'; +import IconButton from '@mui/material/IconButton'; +import Paper from '@mui/material/Paper'; +import InputBase from '@mui/material/InputBase'; +// import SendIcon from '@mui/icons-material/Send'; +import { observer } from 'mobx-react-lite'; +import AgentIcon from '../AgentIcon'; +import TaskModificationSvg from './TaskModificationSvg'; +import { + TaskModificationProvider, + useTaskModificationContext, +} from './context'; +import { IAgentActionTreeNode, globalStorage } from '@/storage'; +import SendIcon from '@/icons/sendIcon'; +import { ActionType } from '@/storage/plan'; + +const RequirementNoteNode: React.FC<{ + data: { + text: string; + }; + style?: SxProps; +}> = ({ data, style }) => { + return ( + <Box sx={{ ...style }}> + <Box sx={{ color: '#ACACAC', userSelect: 'none', minWidth: '250px' }}> + {data.text} + </Box> + </Box> + ); +}; + +const RequirementInputNode: React.FC<{ + style?: SxProps; +}> = ({ style }) => { + const { handleRequirementSubmit, updateNodeRefMap } = + useTaskModificationContext(); + const [number, setNumber] = React.useState(1); + const myRef = React.useRef<HTMLElement>(null); + React.useEffect(() => { + updateNodeRefMap('requirement', myRef); + }, []); + // const handleWheel = (event: any) => { + // // 向上滚动时减少数字,向下滚动时增加数字 + // if (event.deltaY < 0) { + // setNumber(prevNumber => prevNumber + 1); + // } else { + // setNumber(prevNumber => Math.max(1, prevNumber - 1)); + // } + // }; + + const handleSubmit = () => { + handleRequirementSubmit(textValue, number); + }; + const [textValue, setTextValue] = React.useState(''); + return ( + <Box + sx={{ + ...style, + }} + ref={myRef} + > + <Paper + sx={{ + p: '0px', + display: 'flex', + alignItems: 'center', + width: 250, + backgroundColor: 'white', + boxShadow: 'none', + border: '2px solid #b0b0b0', + borderRadius: '8px', + }} + > + <InputBase + sx={{ marginLeft: 1, flex: 1, backgroundColor: 'white' }} + placeholder="Add Branch" + onChange={e => { + setTextValue(e.target.value); + }} + onKeyDown={e => { + if (e.key === 'ArrowUp') { + setNumber(prevNumber => prevNumber + 1); + } else if (e.key === 'ArrowDown') { + setNumber(prevNumber => Math.max(1, prevNumber - 1)); + } + }} + /> + <Box + sx={{ + display: 'flex', + flexDirection: 'row', + alignItems: 'flex-end', + height: '100%', + }} + // onWheel={handleWheel} + > + <IconButton + type="submit" + sx={{ + color: 'primary', + '&:hover': { + color: 'primary.dark', + }, + padding: '0px', + }} + onClick={handleSubmit} + > + <SendIcon color="#b6b6b6" /> + </IconButton> + <Box + sx={{ + height: 'min-content', + paddingLeft: '4px', + paddingRight: '4px', + cursor: 'pointer', // 提示用户可以与之互动 + }} + > + <Box component="span" sx={{ fontSize: '0.5em' }}> + X + </Box> + <Box component="span" sx={{ fontSize: '1em' }}> + {number} + </Box> + </Box> + </Box> + </Paper> + </Box> + ); +}; +const RootNode: React.FC<{ + style?: SxProps; +}> = ({ style }) => { + const { updateNodeRefMap, updateWhoIsAddingBranch, whoIsAddingBranch } = + useTaskModificationContext(); + const [onHover, setOnHover] = React.useState(false); + const myRef = React.useRef<HTMLElement>(null); + React.useEffect(() => { + updateNodeRefMap('root', myRef); + }, []); + // React.useEffect(() => { + // console.log(onHover, whoIsAddingBranch); + // }, [onHover, whoIsAddingBranch]); + return ( + <Box + onMouseOver={() => setOnHover(true)} + onMouseOut={() => setOnHover(false)} + sx={{ + ...style, + flexDirection: 'column', + position: 'relative', + backgroundColor: 'red', + }} + ref={myRef} + > + <IconButton + sx={{ + position: 'absolute', + left: '50%', + top: '50%', + transform: 'translateX(-50%) ', + color: 'primary', + '&:hover': { + color: 'primary.dark', + }, + opacity: onHover || whoIsAddingBranch === 'root' ? '1' : '0', + // visibility: 'visible', + // visibility: + // onHover || whoIsAddingBranch === 'root' ? 'visible' : 'hidden', + padding: '0px', + borderRadius: '50%', + border: '1px dotted #333', + height: '16px', + width: '16px', + marginTop: '-6px', + '& .MuiSvgIcon-root': { + fontSize: '14px', + }, + }} + onClick={() => updateWhoIsAddingBranch('root')} + > + {whoIsAddingBranch !== 'root' ? <AddIcon /> : <RemoveIcon />} + </IconButton> + </Box> + ); +}; + +const Node: React.FC<{ + data: { + id: string; + agentIcon: string; + agent: string; + action: { type: ActionType; description: string; style: SxProps }; + focusing: boolean; + }; + style?: SxProps; +}> = ({ data, style }) => { + const { + updateNodeRefMap, + whoIsAddingBranch, + updateWhoIsAddingBranch, + handleNodeClick, + handleNodeHover, + baseNodeSet, + } = useTaskModificationContext(); + const myRef = React.useRef<HTMLElement>(null); + const [onHover, setOnHover] = React.useState(false); + React.useEffect(() => { + updateNodeRefMap(data.id, myRef); + }, []); + return ( + // <RectWatcher onRectChange={onRectChange}> + <Box + onMouseOver={() => { + setOnHover(true); + handleNodeHover(data.id); + }} + onMouseOut={() => { + setOnHover(false); + handleNodeHover(undefined); + }} + sx={{ + ...style, + flexDirection: 'column', + // backgroundColor: '#d9d9d9', + borderStyle: 'solid', + borderRadius: '50%', + height: data.focusing ? '45px' : '30px', + width: data.focusing ? '45px' : '30px', + position: 'relative', + borderWidth: data.focusing ? '3px' : '2px', + boxShadow: baseNodeSet.has(data.id) ? '0 0 10px 5px #43b2aa' : '', + }} + ref={myRef} + onClick={() => handleNodeClick(data.id)} + > + <Box sx={{ display: 'flex', flexDirection: 'row' }}> + <AgentIcon + name={data.agentIcon} + style={{ + width: data.focusing ? '36px' : '28px', + height: 'auto', + margin: '0px', + userSelect: 'none', + }} + tooltipInfo={{ + ...globalStorage.agentMap.get(data.agent)!, + action: data.action, + }} + /> + </Box> + <Box + sx={{ + position: 'absolute', + left: '50%', + top: '100%', + transform: 'translateX(-50%) translateY(-50%)', + }} + > + <IconButton + sx={{ + color: 'primary', + '&:hover': { + color: 'primary.dark', + }, + visibility: + onHover || whoIsAddingBranch === data.id ? 'visible' : 'hidden', + padding: '0px', + borderRadius: '50%', + border: '1px dotted #333', + height: '16px', + width: '16px', + marginTop: '-6px', + '& .MuiSvgIcon-root': { + fontSize: '14px', + }, + }} + onClick={() => { + updateWhoIsAddingBranch(data.id); + }} + > + {whoIsAddingBranch !== data.id ? <AddIcon /> : <RemoveIcon />} + </IconButton> + </Box> + </Box> + // </RectWatcher> + ); +}; + +const Tree: React.FC<{ + tree: IAgentActionTreeNode; +}> = ({ tree }) => { + const { whoIsAddingBranch } = useTaskModificationContext(); + + const generalNodeStyle = { + height: '30px', + // padding: '4px 8px', + display: 'flex', + alignItems: 'center', + margin: '8px 20px 8px 8px', + }; + const focusNodeStyle = { + height: '45px', + // padding: '4px 8px', + display: 'flex', + alignItems: 'center', + margin: '8px 20px 8px 8px', + }; + + return ( + <Box sx={{ display: 'flex', flexDirection: 'row' }}> + <> + {tree.id !== 'root' && ( + <Node + data={{ + id: tree.id, + agentIcon: tree.icon, + agent: tree.agent, + action: { ...tree.action, style: tree.style }, + focusing: tree.focusing, + }} + style={{ + justifyContent: 'center', + alignSelf: 'flex-start', + cursor: 'pointer', + aspectRatio: '1 / 1', + ...(tree.focusing ? focusNodeStyle : generalNodeStyle), + ...tree.style, + }} + /> + )} + {tree.id === 'root' && ( + <RootNode + style={{ + justifyContent: 'center', + ...(tree.children[0] && tree.children[0].focusing + ? focusNodeStyle + : generalNodeStyle), + }} + /> + )} + </> + <> + <Box + sx={{ + display: 'flex', + flexDirection: 'column', + alignItems: 'flex-start', + }} + > + {tree.id !== 'root' && tree.leaf && ( + <RequirementNoteNode + data={{ text: tree.requirement || '' }} + style={{ + ...(tree.focusing ? focusNodeStyle : generalNodeStyle), + }} + /> + )} + + {tree.children.map(childTree => ( + <Tree key={`taskTree-${childTree.id}`} tree={childTree} /> + ))} + {tree.id === whoIsAddingBranch && ( + <RequirementInputNode + style={{ height: '50px', display: 'flex', alignItems: 'center' }} + /> + )} + </Box> + </> + </Box> + ); +}; + +interface ITaskModificationProps { + style?: SxProps; + resizeSignal?: number; +} + +const TheViewContent = observer( + ({ style, resizeSignal }: ITaskModificationProps) => { + const { renderingActionForest } = globalStorage; + + const { forest, setForest, setContainerRef, svgForceRender } = + useTaskModificationContext(); + + const myRef = React.useRef<HTMLElement>(null); + + React.useEffect(() => { + setForest({ + agent: '', + icon: '', + children: renderingActionForest, + id: 'root', + leaf: false, + style: {}, + action: { type: ActionType.Propose, description: '' }, + focusing: true, + }); + }, [renderingActionForest]); + + React.useEffect(() => { + setContainerRef(myRef); + }, []); + + React.useEffect(() => { + svgForceRender(); + }, [resizeSignal]); + + return ( + <Box + sx={{ + backgroundColor: 'white', + position: 'relative', + overflowY: 'auto', + overflowX: 'auto', + padding: '4px 6px', + userSelect: 'none', + ...style, + }} + ref={myRef} + > + {myRef.current && <TaskModificationSvg />} + {forest && <Tree tree={forest} />} + </Box> + ); + }, +); +/* eslint-enable max-lines */ + +const TaskModification: React.FC<ITaskModificationProps> = observer( + ({ style, resizeSignal }) => { + return ( + <TaskModificationProvider> + <TheViewContent style={style} resizeSignal={resizeSignal} /> + {globalStorage.api.agentActionTreeGenerating && ( + <Box + sx={{ + position: 'absolute', + bottom: '10px', + right: '20px', + zIndex: 999, + }} + > + <CircularProgress size={40} /> + </Box> + )} + </TaskModificationProvider> + ); + }, +); + +export default TaskModification; diff --git a/frontend/src/components/Title/index.tsx b/frontend/src/components/Title/index.tsx new file mode 100644 index 0000000..f610bd8 --- /dev/null +++ b/frontend/src/components/Title/index.tsx @@ -0,0 +1,51 @@ +import React from 'react'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; + +export default React.memo<{ title: string; style?: SxProps }>( + ({ title, style = {} }) => { + return ( + <Box + component="span" + sx={{ + position: 'relative', + height: '35px', // 容器的高度 + userSelect: 'none', + display: 'flex', + marginTop: '-4px', + ...style, + }} + > + <Box + component="span" + sx={{ + display: 'inline-flex', + height: '100%', + backgroundColor: '#E1E1E1', + alignItems: 'center', + justifyContent: 'center', + color: 'primary.main', + fontWeight: 800, + whiteSpace: 'nowrap', + overflow: 'hidden', + textOverflow: 'ellipsis', + paddingLeft: '10px', + paddingRight: '10px', + fontSize: '20px', + }} + > + {title} + </Box> + <Box + component="span" + sx={{ + height: 0, + width: 0, + borderRight: '26px solid transparent', + borderTop: '35px solid #E1E1E1', // 与矩形相同的颜色 + }} + /> + </Box> + ); + }, +); diff --git a/frontend/src/components/UserGoalInput/index.tsx b/frontend/src/components/UserGoalInput/index.tsx new file mode 100644 index 0000000..5f92664 --- /dev/null +++ b/frontend/src/components/UserGoalInput/index.tsx @@ -0,0 +1,101 @@ +import React from 'react'; +import { observer } from 'mobx-react-lite'; +import { SxProps } from '@mui/material'; +import Box from '@mui/material/Box'; +import IconButton from '@mui/material/IconButton'; +import FormControl from '@mui/material/FormControl'; +import FilledInput from '@mui/material/FilledInput'; +import TelegramIcon from '@mui/icons-material/Telegram'; +import CircularProgress from '@mui/material/CircularProgress'; +import { globalStorage } from '@/storage'; + +export interface UserGoalInputProps { + style?: SxProps; +} + +export default observer(({ style = {} }: UserGoalInputProps) => { + const inputRef = React.useRef<string>(''); + const inputElementRef = React.useRef<HTMLInputElement>(null); + React.useEffect(() => { + if (inputElementRef.current) { + if (globalStorage.planManager) { + inputElementRef.current.value = globalStorage.planManager.goal; + } else { + inputElementRef.current.value = globalStorage.briefGoal; + } + } + }, [globalStorage.planManager]); + return ( + <FormControl + sx={{ + position: 'relative', + ...style, + }} + > + <FilledInput + disabled={ + globalStorage.api.busy || + !globalStorage.api.agentsReady || + globalStorage.api.planReady + } + placeholder="Yout Goal" + fullWidth + inputRef={inputElementRef} + onChange={event => (inputRef.current = event.target.value)} + size="small" + sx={{ + borderRadius: '10px', + background: '#E1E1E1', + borderBottom: 'none !important', + '&::before': { + borderBottom: 'none !important', + }, + '& > input': { + padding: '10px', + }, + }} + startAdornment={ + <Box + sx={{ + color: '#4A9C9E', + fontWeight: 800, + fontSize: '18px', + textWrap: 'nowrap', + userSelect: 'none', + }} + > + \General Goal: + </Box> + } + /> + {globalStorage.api.planGenerating ? ( + <CircularProgress + sx={{ + position: 'absolute', + right: '12px', + top: '20px', + width: '24px !important', + height: '24px !important', + }} + /> + ) : ( + <IconButton + disabled={ + globalStorage.api.busy || + !globalStorage.api.agentsReady || + globalStorage.api.planReady + } + color="primary" + aria-label="提交" + sx={{ position: 'absolute', right: '6px', top: '12px' }} + onClick={() => { + globalStorage.form.goal = inputRef.current; + globalStorage.generatePlanBase(); + }} + > + <TelegramIcon /> + </IconButton> + )} + </FormControl> + ); +}); diff --git a/frontend/src/components/ViewConnector/index.tsx b/frontend/src/components/ViewConnector/index.tsx new file mode 100644 index 0000000..54011bf --- /dev/null +++ b/frontend/src/components/ViewConnector/index.tsx @@ -0,0 +1,153 @@ +import React from 'react'; +import Box from '@mui/material/Box'; +import { observer } from 'mobx-react-lite'; +import { min, max } from 'lodash'; +import { globalStorage } from '@/storage'; + +const mergeRects = (...rects: DOMRect[]) => { + const minX = min(rects.map(rect => rect.left)) ?? 0; + const minY = min(rects.map(rect => rect.top)) ?? 0; + const maxX = max(rects.map(rect => rect.left + rect.width)) ?? 0; + const maxY = max(rects.map(rect => rect.top + rect.height)) ?? 0; + return new DOMRect(minX, minY, maxX - minX, maxY - minY); +}; + +const drawConnectors = (() => { + let lastRectString = ''; + let lastRenderCache = <></>; + return (...rects: DOMRect[]) => { + const rectString = rects + .map(rect => `${rect.left},${rect.top},${rect.width},${rect.height}`) + .join(''); + if (rectString === lastRectString) { + return lastRenderCache; + } + lastRectString = rectString; + const margin = 5; + const connectors: React.ReactNode[] = []; + for (const rect of rects) { + connectors.push( + <g> + <line + x1={rect.left - margin} + y1={rect.top} + x2={rect.left - margin} + y2={rect.top + rect.height} + stroke="#43A8AA" + strokeWidth="4" + ></line> + <line + x1={rect.left + rect.width + margin} + y1={rect.top} + x2={rect.left + rect.width + margin} + y2={rect.top + rect.height} + stroke="#43A8AA" + strokeWidth="4" + ></line> + </g>, + ); + } + for (let i = 0; i <= rects.length - 2; i++) { + const rect1 = rects[i]; + const rect2 = rects[i + 1]; + connectors.push( + <g> + <path + d={`M ${rect1.left + rect1.width + margin},${rect1.top} + L ${rect2.left - margin},${rect2.top} + ${rect2.left - margin},${rect2.top + rect2.height} + ${rect1.left + rect1.width + margin},${ + rect1.top + rect1.height + }`} + fill="#86D2CE" + fillOpacity={0.5} + // strokeWidth="2" + ></path> + </g>, + ); + } + lastRenderCache = <>{connectors}</>; + return lastRenderCache; + }; +})(); + +export default observer(() => { + const [drawCallId, setDrawCallId] = React.useState(0); + React.useEffect(() => { + globalStorage.setRenderLinesMethod(() => + setDrawCallId(old => (old + 1) % 100), + ); + return () => globalStorage.setRenderLinesMethod(undefined); + }, []); + const [connectors, setConnectors] = React.useState(<></>); + + React.useEffect(() => { + try { + const { ElementToLink } = globalStorage; + if (!globalStorage.focusingStepTask) { + setConnectors(<></>); + } + const outlinePosition = + ElementToLink[0]?.current?.getBoundingClientRect?.(); + if (!outlinePosition) { + return; + } + const agentRects = ElementToLink[1] + .map(ele => ele.current?.getBoundingClientRect?.() as DOMRect) + .filter(rect => rect); + if (agentRects.length === 0) { + return; + } + const agentsPosition = mergeRects(...agentRects); + const descriptionPosition = + ElementToLink[2]?.current?.getBoundingClientRect?.(); + if (!descriptionPosition) { + return; + } + + const LogRects = ElementToLink[3] + .map(ele => ele?.current?.getBoundingClientRect?.() as DOMRect) + .filter(rect => rect); + if (LogRects.length > 0) { + const logPosition = mergeRects(...LogRects); + logPosition.x -= 5; + logPosition.width += 10; + + setConnectors( + drawConnectors( + outlinePosition, + agentsPosition, + descriptionPosition, + logPosition, + ), + ); + } else { + setConnectors( + drawConnectors(outlinePosition, agentsPosition, descriptionPosition), + ); + } + } catch (e) { + console.error(e); + } + }, [drawCallId, globalStorage.ElementToLink]); + + return ( + <Box + component="svg" + sx={{ + position: 'fixed', + left: 0, + top: 0, + bottom: 0, + right: 0, + height: '100%', + width: '100%', + pointerEvents: 'none', + zIndex: 1, + clipPath: 'inset(136px 0px 5px 0px)', + }} + > + {connectors} + </Box> + ); +}); diff --git a/frontend/src/icons/BranchIcon.tsx b/frontend/src/icons/BranchIcon.tsx new file mode 100644 index 0000000..f62d720 --- /dev/null +++ b/frontend/src/icons/BranchIcon.tsx @@ -0,0 +1,20 @@ +import SvgIcon from '@mui/material/SvgIcon'; + +export default () => ( + <SvgIcon> + <svg + width="30" + height="41" + viewBox="0 0 30 41" + fill="none" + xmlns="http://www.w3.org/2000/svg" + > + <g> + <path + d="M24.7241 11.135C24.4807 11.3619 24.37 11.6718 24.418 11.9785C24.4733 12.3268 24.5065 12.675 24.5176 13.0105C24.5692 14.6559 24.1081 16.0809 23.149 17.2503C21.4854 19.2695 18.8184 19.9181 16.8744 20.391C15.5538 20.7105 14.6021 20.7936 13.8348 20.8575C12.9938 20.931 12.5696 20.9661 11.9683 21.2664C11.8502 21.3271 11.7322 21.391 11.6178 21.4613C10.5297 22.1387 9.90625 23.241 9.90625 24.4008V25.3145C9.90625 25.6564 10.1091 25.9727 10.4374 26.1644C11.5551 26.8162 12.2892 27.9281 12.2671 29.1869C12.2376 31.1135 10.4227 32.6886 8.19465 32.7142C5.88177 32.7461 4.00049 31.1327 4.00049 29.139C4.00049 27.8961 4.73087 26.8002 5.8412 26.1612C6.16581 25.9727 6.36132 25.6532 6.36132 25.3145V7.40005C6.36132 7.05818 6.15843 6.74187 5.83013 6.55017C4.71242 5.89839 3.97835 4.78652 4.00049 3.52768C4.03 1.60108 5.84488 0.0291336 8.07292 0.000378473C10.3821 -0.0283767 12.2634 1.58511 12.2634 3.5788C12.2634 4.82166 11.533 5.91756 10.4227 6.55656C10.0981 6.74507 9.90256 7.06457 9.90256 7.40324V18.4612C9.90256 18.5922 10.0649 18.6721 10.1977 18.6082H10.2014C11.4666 17.9788 12.4921 17.8925 13.4844 17.8062C14.1779 17.7487 14.8972 17.6848 15.9153 17.4388C17.5125 17.0522 19.3237 16.6113 20.2644 15.4707C20.8915 14.7103 21.0243 13.7645 20.9689 12.9274C20.9431 12.5249 20.648 12.1766 20.2164 12.0296C18.6634 11.5088 17.5642 10.1989 17.5753 8.66527C17.59 6.69395 19.4676 5.09644 21.7436 5.11241C24.0085 5.12839 25.8382 6.7259 25.8382 8.69083C25.8382 9.63656 25.4139 10.496 24.7241 11.135Z" + fill="white" + /> + </g> + </svg> + </SvgIcon> +); diff --git a/frontend/src/icons/ChangeAgentIcon.tsx b/frontend/src/icons/ChangeAgentIcon.tsx new file mode 100644 index 0000000..8458e7c --- /dev/null +++ b/frontend/src/icons/ChangeAgentIcon.tsx @@ -0,0 +1,17 @@ +import SvgIcon from '@mui/material/SvgIcon'; + +export default () => ( + <SvgIcon> + <svg + width="40" + height="42" + viewBox="0 0 40 42" + fill="white" + xmlns="http://www.w3.org/2000/svg" + > + <g> + <path d="M30.6096 18.3175L30.7811 18.5169L31.1242 18.9159C32.6296 20.6674 34.1437 22.4117 35.6663 24.1485H32.4663C32.4663 27.5995 31.1315 30.243 28.1968 32.368C27.1002 33.1439 25.8125 33.6515 24.4552 33.8788C24.27 33.9319 24.0781 33.9584 23.8853 33.9575C22.7741 33.9529 21.8738 33.0565 21.8738 31.9515C21.8738 30.8436 22.7778 29.9455 23.893 29.9455C23.9529 29.9455 24.0125 29.948 24.0712 29.9531C25.6074 29.6517 26.8862 28.6136 27.6663 27.3275C28.2053 26.2735 28.4706 25.211 28.7358 24.1485H25.5358C27.1444 22.2955 28.7444 20.1705 30.6096 18.3175ZM9.21925 15.6485C11.0845 13.7955 12.6845 11.6705 14.293 9.8175H11.093C11.3583 8.755 11.6235 7.6925 12.1626 6.6385C12.9668 5.3125 14.3016 4.25 15.9016 3.9865H15.9444V0C14.3786 0.17 12.8813 0.7055 11.6321 1.5895C8.69733 3.7145 7.36257 6.358 7.36257 9.809H4.15401C6.01925 11.934 7.61925 13.787 9.21925 15.6485ZM36 14.2062C36 16.5211 31.8041 17.34 28.2139 17.34C26.2778 17.34 24.4639 17.1061 23.1045 16.684C20.8907 15.9946 20.4278 14.9542 20.4278 14.2062C20.4278 11.7871 22.6711 9.60602 25.7434 8.84544C24.7543 8.11852 24.0051 6.95266 24.0051 5.64077V3.96933C24.0051 1.7799 25.7982 0 28.0034 0C30.2089 0 32.0017 1.7799 32.0017 3.9695V5.6406C32.0017 6.95266 31.463 8.11852 30.4739 8.84544C33.5463 9.60602 36 11.787 36 14.2062ZM19.5722 30.8662C19.5722 33.1811 15.3763 34 11.7861 34C9.85001 34 8.03611 33.7661 6.67671 33.344C4.46289 32.6546 4 31.6142 4 30.8662C4 28.4471 6.24325 26.266 9.31559 25.5054C8.3265 24.7785 7.57733 23.6127 7.57733 22.3008V20.6293C7.57733 18.4399 9.37035 16.66 11.5756 16.66C13.781 16.66 15.5739 18.4399 15.5739 20.6295V22.3006C15.5739 23.6127 15.0352 24.7785 14.0461 25.5054C17.1185 26.266 19.5722 28.447 19.5722 30.8662Z" /> + </g> + </svg> + </SvgIcon> +); diff --git a/frontend/src/icons/LogoIcon.tsx b/frontend/src/icons/LogoIcon.tsx new file mode 100644 index 0000000..0226396 --- /dev/null +++ b/frontend/src/icons/LogoIcon.tsx @@ -0,0 +1,18 @@ +import SvgIcon from '@mui/material/SvgIcon'; + +export default () => ( + <SvgIcon> + <svg + width="33" + height="35" + viewBox="0 0 33 35" + fill="none" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M12.4176 22.7961C12.6 23.5654 12.9833 24.222 13.4979 24.6464C14.0125 25.0709 14.6243 25.235 15.222 25.109C15.8197 24.9831 16.3636 24.5753 16.755 23.9599C17.1463 23.3445 17.359 22.5623 17.3545 21.7555C17.35 20.9487 17.1285 20.1709 16.7303 19.5634C16.3321 18.9559 15.7836 18.559 15.1846 18.445C14.5855 18.331 13.9757 18.5073 13.4659 18.942C12.9561 19.3766 12.5802 20.0408 12.4065 20.8136L12.4023 20.8377H4.95426C4.79861 20.1398 4.47853 19.5271 4.0414 19.0906C3.60427 18.6541 3.07334 18.4168 2.5272 18.4139H2.52303C1.85388 18.4139 1.21214 18.7684 0.738978 19.3992C0.265818 20.0301 0 20.8858 0 21.778V21.8021C0.00106744 22.6049 0.217216 23.3809 0.609477 23.99C1.00174 24.5991 1.5443 25.0014 2.13936 25.1242C2.73441 25.247 3.3428 25.0824 3.85485 24.6599C4.36689 24.2375 4.7489 23.585 4.93201 22.8202L4.93618 22.7961H12.4176ZM25.3416 4.82241H27.3986V6.77704H25.3416V4.82241ZM28.0023 4.82241H30.0594V6.77704H28.0023V4.82241ZM12.4023 32.6805H14.458V34.6333H12.4023V32.6805ZM15.0464 32.6805H17.1021V34.6333H15.0464V32.6805ZM17.6918 32.6805H19.7489V34.6333H17.6918V32.6805ZM5.40907 17.8502H7.46338V19.8067H5.40907V17.8502ZM8.0545 17.8502H10.1088V19.8067H8.0545V17.8502ZM10.6985 17.8502H12.7556V19.8067H10.6985V17.8502ZM19.6126 18.4584H21.6697V20.4131H19.6126V18.4584ZM22.258 18.4584H24.3137V20.4131H22.258V18.4584ZM24.902 18.4584H26.9591V20.4131H24.902V18.4584ZM7.22832 0.666504H9.28402V2.62113H7.22832V0.666504ZM9.87375 0.666504H11.9294V2.62113H9.87375V0.666504ZM12.5192 0.666504H14.5763V2.62113H12.5192V0.666504ZM2.63013 7.90271C3.72335 7.90271 4.65105 6.95692 5.00572 5.67733H10.8001C11.1047 5.67733 11.6262 5.96848 11.7959 6.28374L15.2328 13.4958C15.7237 14.4824 16.785 15.0239 17.5249 15.0239H20.9784C21.1747 15.6185 21.4964 16.1242 21.9043 16.4795C22.3123 16.8348 22.7889 17.0243 23.2761 17.0249H23.29C23.6217 17.0249 23.9502 16.9378 24.2566 16.7686C24.5631 16.5993 24.8415 16.3513 25.076 16.0385C25.3106 15.7258 25.4966 15.3546 25.6236 14.946C25.7505 14.5374 25.8158 14.0994 25.8158 13.6572V13.6516C25.8795 13.1903 25.8702 12.7163 25.7888 12.26C25.7074 11.8037 25.5555 11.375 25.3428 11.0013C25.1302 10.6276 24.8615 10.3171 24.5538 10.0896C24.2461 9.86214 23.9063 9.72266 23.5559 9.68009C23.2056 9.63752 22.8524 9.69278 22.519 9.84236C22.1855 9.99194 21.8792 10.2325 21.6194 10.5488C21.3596 10.8651 21.1521 11.2501 21.0101 11.6793C20.8681 12.1085 20.7948 12.5724 20.7948 13.0415V13.0452H17.5263C17.1549 13.0452 16.632 12.754 16.4831 12.4388L13.0616 5.25079C12.5887 4.2401 11.6123 3.76535 10.8529 3.76535H5.09057C4.96291 3.02543 4.65098 2.36501 4.20566 1.89182C3.76034 1.41863 3.20791 1.1606 2.63847 1.1598H2.62595C1.9568 1.1598 1.31506 1.51422 0.841902 2.1451C0.368742 2.77598 0.102924 3.63164 0.102924 4.52384V4.53867C0.102924 6.39687 1.23231 7.90271 2.62595 7.90271H2.63013ZM17.6918 8.86704C18.19 8.86518 18.6768 8.66845 19.0919 8.30122C19.507 7.93399 19.8322 7.41242 20.0271 6.80114L20.034 6.77889H24.7699V4.82241H20.187C20.0665 4.06426 19.7554 3.38376 19.3051 2.89369C18.8548 2.40363 18.2925 2.13342 17.7113 2.12784H17.7099C16.3107 2.12784 15.1827 3.62997 15.1827 5.49559V5.52155C15.1827 7.36862 16.3065 8.86704 17.6918 8.86704ZM12.0296 12.7967V12.7911C12.0296 11.8989 11.7638 11.0433 11.2906 10.4124C10.8175 9.78152 10.1757 9.4271 9.50656 9.4271H9.49822C8.82907 9.4271 8.18732 9.78152 7.71417 10.4124C7.24101 11.0433 6.97519 11.8989 6.97519 12.7911V12.7967C6.97519 14.6623 8.10318 16.1682 9.50239 16.1682C10.1723 16.1657 10.8143 15.8097 11.2879 15.1779C11.7614 14.5461 12.0281 13.6899 12.0296 12.7967ZM29.841 19.178H29.8285C29.2837 19.1778 28.7537 19.4145 28.319 19.8523C27.8842 20.29 27.5684 20.9049 27.4195 21.6037L27.4153 21.6278H22.6975C21.9395 21.6278 21.0118 21.7631 20.4902 22.7738L17.052 29.6002C16.9004 29.9173 16.3941 30.2103 16.0075 30.2103H11.7612C11.6011 29.5242 11.2816 28.9236 10.8489 28.4952C10.4161 28.0669 9.8925 27.833 9.35357 27.8273H9.34939C8.68024 27.8273 8.0385 28.1817 7.56534 28.8126C7.09218 29.4435 6.82636 30.2991 6.82636 31.1913V31.1969C6.82636 33.0607 7.95436 34.5665 9.35217 34.5665C10.4982 34.5665 11.4593 33.554 11.7792 32.1631H15.9755C16.7488 32.1631 17.7961 31.6661 18.2662 30.6999L21.7044 23.8513C21.7211 23.8068 21.856 23.625 22.6989 23.625H27.4682C27.8034 24.951 28.7478 25.8968 29.8591 25.8968H29.8619C30.5313 25.8963 31.1732 25.5415 31.6465 24.9104C32.1198 24.2793 32.3859 23.4234 32.3863 22.5309V22.5253C32.3736 21.6352 32.1005 20.7869 31.6252 20.1615C31.1499 19.5361 30.5101 19.1831 29.8424 19.178H29.841ZM22.9326 27.2877H22.9312C22.2613 27.2877 21.6189 27.6425 21.1452 28.274C20.6715 28.9056 20.4054 29.7622 20.4054 30.6554V30.661C20.4054 32.5247 21.5334 34.0269 22.9326 34.0269C24.3318 34.0269 25.4584 32.5229 25.4584 30.661C25.4584 28.7954 24.3318 27.2877 22.9326 27.2877Z" + fill="white" + /> + </svg> + </SvgIcon> +); diff --git a/frontend/src/icons/SendIcon.tsx b/frontend/src/icons/SendIcon.tsx new file mode 100644 index 0000000..252256f --- /dev/null +++ b/frontend/src/icons/SendIcon.tsx @@ -0,0 +1,33 @@ +import { Box } from '@mui/material'; +import React from 'react'; + +// 定义你的图标属性类型,这里可以扩展成任何你需要的属性 +interface CustomIconProps { + size?: number; + color?: string; + // ...其他你需要的props +} + +// 创建你的自定义SVG图标组件 +const SendIcon: React.FC<CustomIconProps> = ({ + size = 24, + color = 'currentColor', +}) => { + return ( + <Box + component="svg" + width={size} + height={size} + viewBox="0 0 37 37" + fill="none" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M33.6537 0.409255L1.63031 19.3122C0.591998 19.9271 0.0578123 20.7469 0 21.5412V21.837C0.0739997 22.7872 0.832497 23.656 2.22693 24.0356L8.44059 25.7312C8.59912 25.7689 8.76347 25.7748 8.92425 25.7485C9.08503 25.7222 9.23909 25.6642 9.37761 25.5779C9.51614 25.4916 9.63642 25.3787 9.73157 25.2455C9.82672 25.1124 9.89488 24.9616 9.93215 24.8019C10.0176 24.479 9.97573 24.1354 9.81541 23.8428C9.65509 23.5502 9.38869 23.3314 9.0719 23.2321L2.87905 21.5435L34.4376 2.91537L30.9966 28.5168C30.9458 28.8965 30.6659 29.0874 30.3191 28.9896L17.1078 25.3399L27.8146 14.2092C28.0478 13.9627 28.1778 13.6354 28.1778 13.295C28.1778 12.9546 28.0478 12.6273 27.8146 12.3808C27.7009 12.2613 27.5643 12.1661 27.4131 12.1011C27.2619 12.0361 27.0991 12.0026 26.9347 12.0026C26.7703 12.0026 26.6076 12.0361 26.4564 12.1011C26.3052 12.1661 26.1686 12.2613 26.0548 12.3808L14.3189 24.5853C14.2183 24.6903 14.1233 24.8007 14.0345 24.916C13.8502 25.0368 13.6999 25.2033 13.5978 25.3995C13.4958 25.5957 13.4455 25.815 13.4518 26.0363C13.3261 26.4196 13.2621 26.8206 13.2621 27.2242V34.7355C13.2621 36.5429 15.1977 37.6166 16.643 36.6174L22.6508 32.4553C23.0208 32.2015 23.229 31.7589 23.2012 31.2954C23.1875 31.0714 23.1164 30.8547 22.9948 30.6665C22.8732 30.4783 22.7053 30.3251 22.5075 30.2217C22.3131 30.1212 22.0953 30.0759 21.8773 30.0906C21.6594 30.1054 21.4495 30.1797 21.2703 30.3056L15.7481 34.1299V27.6364L29.6762 31.4794C31.4684 31.9755 33.1981 30.7854 33.4548 28.8662L36.9652 2.75233C37.2704 0.55133 35.5199 -0.694738 33.6537 0.409255Z" + fill={color} + /> + </Box> + ); +}; + +export default SendIcon; diff --git a/frontend/src/icons/checkIcon.tsx b/frontend/src/icons/checkIcon.tsx new file mode 100644 index 0000000..698ec8a --- /dev/null +++ b/frontend/src/icons/checkIcon.tsx @@ -0,0 +1,33 @@ +import { Box } from '@mui/material'; +import React from 'react'; + +// 定义你的图标属性类型,这里可以扩展成任何你需要的属性 +interface CustomIconProps { + size?: number | string; + color?: string; + // ...其他你需要的props +} + +// 创建你的自定义SVG图标组件 +const checkIcon: React.FC<CustomIconProps> = ({ + size = '100%', + color = 'currentColor', +}) => { + return ( + <Box + component="svg" + width={size} + height="auto" + viewBox="0 0 11 9" + fill="none" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M10.7204 0C7.37522 1.94391 4.95071 4.40066 3.85635 5.63171L1.18331 3.64484L0 4.54699L4.61463 9C5.4068 7.07085 7.92593 3.30116 11 0.620227L10.7204 0Z" + fill={color} + /> + </Box> + ); +}; + +export default checkIcon; diff --git a/frontend/src/modern-app-env.d.ts b/frontend/src/modern-app-env.d.ts new file mode 100644 index 0000000..3f45350 --- /dev/null +++ b/frontend/src/modern-app-env.d.ts @@ -0,0 +1,3 @@ +/// <reference types='@modern-js/app-tools/types' /> +/// <reference types='@modern-js/runtime/types' /> +/// <reference types='@modern-js/runtime/types/router' /> diff --git a/frontend/src/routes/index.scss b/frontend/src/routes/index.scss new file mode 100644 index 0000000..b9bdead --- /dev/null +++ b/frontend/src/routes/index.scss @@ -0,0 +1,28 @@ +html, +body, +body > div#root { + margin: 0; + height: 100%; + width: 100%; + overflow: hidden; + font-family: PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; +} + +div#root { + position: relative; +} + +.side-resize-bar { + transition: all 300ms; + z-index: 1000; + &:hover, + &:active, + &:focus { + background-color: #0093ffcc; + } +} + +/*webkit内核*/ +::-webkit-scrollbar { + display: none; +} diff --git a/frontend/src/routes/layout.tsx b/frontend/src/routes/layout.tsx new file mode 100644 index 0000000..4b30e1a --- /dev/null +++ b/frontend/src/routes/layout.tsx @@ -0,0 +1,81 @@ +import { observer } from 'mobx-react-lite'; +import { ThemeProvider, createTheme } from '@mui/material/styles'; +import { Outlet } from '@modern-js/runtime/router'; +import React from 'react'; +import FloatWindow from '@/components/FloatWindow'; +import { globalStorage } from '@/storage'; +import AgentAssignment from '@/components/AgentAssignment'; +import TaskModification from '@/components/TaskModification'; +import PlanModification from '@/components/PlanModification'; + +const theme = createTheme({ + palette: { + primary: { + main: '#43A8AA', + }, + }, +}); + +export default observer(() => { + const [resizePlanOutline, setResizePlanOutline] = React.useState(0); + const [resizeProcessModification, setResizeProcessModification] = + React.useState(0); + return ( + <ThemeProvider theme={theme}> + <Outlet /> + {globalStorage.planModificationWindow ? ( + <FloatWindow + title="Plan Outline Exploration" + onClose={() => (globalStorage.planModificationWindow = false)} + onResize={() => { + setResizePlanOutline(old => (old + 1) % 100); + }} + > + <PlanModification + style={{ + height: '100%', + width: '100%', + }} + resizeSignal={resizePlanOutline} + /> + </FloatWindow> + ) : ( + <></> + )} + {globalStorage.agentAssigmentWindow ? ( + <FloatWindow + title="Assignment Exploration" + onClose={() => (globalStorage.agentAssigmentWindow = false)} + > + <AgentAssignment + style={{ + height: '100%', + width: '100%', + }} + /> + </FloatWindow> + ) : ( + <></> + )} + {globalStorage.taskProcessModificationWindow ? ( + <FloatWindow + title="Task Process Exploration" + onClose={() => (globalStorage.taskProcessModificationWindow = false)} + onResize={() => { + setResizeProcessModification(old => (old + 1) % 100); + }} + > + <TaskModification + style={{ + height: '100%', + width: '100%', + }} + resizeSignal={resizeProcessModification} + /> + </FloatWindow> + ) : ( + <></> + )} + </ThemeProvider> + ); +}); diff --git a/frontend/src/routes/page.tsx b/frontend/src/routes/page.tsx new file mode 100644 index 0000000..c49549a --- /dev/null +++ b/frontend/src/routes/page.tsx @@ -0,0 +1,156 @@ +import React from 'react'; +import Box from '@mui/material/Box'; +import localForage from 'localforage'; +import Drawer from '@mui/material/Drawer'; +import { Helmet } from '@modern-js/runtime/head'; +import ViewConnector from '@/components/ViewConnector'; + +import './index.scss'; + +import ResizeableColumn from '@/components/ResizeableColumn'; +import HeadBar from '@/components/HeadBar'; +import Outline from '@/components/Outline'; +import AgentHiring from '@/components/AgentHiring'; +import AgentBoard from '@/components/AgentBoard'; +import ProcessRehearsal from '@/components/ProcessRehearsal'; +import UserGoalInput from '@/components/UserGoalInput'; +import ProcessDiscrption from '@/components/ProcessDiscription'; + +import { globalStorage } from '@/storage'; + +// 持久化 +localForage.config({ + name: 'AgentCoord', + storeName: 'app', +}); + +export default React.memo(() => { + React.useEffect(() => { + let id: NodeJS.Timer | undefined; + if (!globalStorage.devMode) { + localForage.getItem('globalStorage').then(v => { + if (v) { + globalStorage.load(v); + } + }); + id = setInterval(() => { + localForage.setItem('globalStorage', globalStorage.dump()); + }, 1000); + } + + // globalStorage.getAgents(); + + const refreshLines = () => + globalStorage.renderLines({ delay: 0, repeat: 1, interval: 15 }); + window.addEventListener('resize', refreshLines); + // window.addEventListener('pointermove', refreshLines); + return () => { + if (id) { + clearInterval(id); + } + // window.removeEventListener('pointermove', refreshLines); + window.removeEventListener('resize', refreshLines); + }; + }, []); + const [showAgentHiring, setShowAgentHiring] = React.useState(false); + return ( + <> + <Helmet> + <link + rel="stylesheet" + href="/assets/katex.min.css" + type="text/css" + media="all" + /> + <title>AgentCoord + + {/* Columns */} + + + + + + + + + + setShowAgentHiring(true)} + /> + + + + + + + + + + {/* Drawers */} + setShowAgentHiring(false)} + > + + + + ); +}); diff --git a/frontend/src/static/AgentIcons/Abigail_Chen.png b/frontend/src/static/AgentIcons/Abigail_Chen.png new file mode 100644 index 0000000000000000000000000000000000000000..6bbfe427914594d3e8aaecfff80d9a4450d0c48a GIT binary patch literal 1391 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 MboFyt=akR{02Qj~q5uE@ literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Arthur_Burton.png b/frontend/src/static/AgentIcons/Arthur_Burton.png new file mode 100644 index 0000000000000000000000000000000000000000..f6fcf35f7354f1eacea76775f451bab2d57dbfb6 GIT binary patch literal 1600 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=M1)zT~C#+C^; zMQ2F-RoHpKH=yl`lkrN26H^ltR4+?x(d;tYW#Ghhc1qWxgJNoCEh{smUQX!PEYPxG z#=G+Lb8q+lzBku=+sgx=?^VCEy#M`f@%d`yi}l-j>L1!muIMPf=TOnJyhxa>YG<*)ml_j+;A}_Iwk1sLAle!qAUf zsVA&R?a{>V5mUldw-qe9ed39}{JqV&pHJrcZDg>NZh6#L@nA!|d@s`s83lzW!iEj| z*nUnl7MHm`sgL7WNODkNjLK>EoD~zF-#8o-;%@uq^5+}#R|&0qqL3iO7Fm6DagD-p zJK;|mUk%xwzgCh7Z&)Ylxax^gU~Hqp@->TOnIqsz^h)QV4U{B=j_l467Kf@!=g7Jt*uM6o`J{J6$~kFkbznO4E3ty~`}LlrBl zj*A-1OFk0n!#X>4a-z%UxvOq1l~Yvcb5}Xl{`}FCRhpIjKMxd7;AmgWB-7#*BVDC7 z{b6gRWm#L?g*PE=rEPAOJpr8h%zPj2JnCUu@Z;o%aG~X4l}C>rEwZyoP)`+HxGwsY zR)H#iRNu*(2RW;lIG)Kle0p#t{ny9LX-VtfU;6o}@>ETIWalQo68ldR_`Sb1JeG<% z-Ndr`(XM4;uj;S3U0>aQ`CD!EmF*0LyN*8F7yRv^+RJxu-!9%aZ~y)&dDjy}4jf=o zi3{5{|5{l1%X7V#OSY8gvvQStE6N;JUe!{U$zivAd;Yz^GCw|7rO6@j@##+t^BAU_ zg)X2AH*U&>sWVg|H?b{4te@|b>5nXG!FF2s5dQ?QfN^4@nx$i+vgA^Bf$r0 zJ3jLU=2?{o=jppnSDCq0DkdpLu=}7LN9vy>rw{GF!&8)Zf0T%KX1P9R#iBn`1DP7G zIvi4Evs@o3b6g1+hK4g&Gt_*%kn`iCWAek&S1&nF20bnbbDsRNP216C|Goo^as^)_ z9*fS|dqpAnr}mCn^ZoB0ynShVK&71OaKTm2fOsrTwS$=ZQqp13tbMKe0-MMqh%<1kEXGuv%xU6AdE8HI*)}f~U zQP64f@oW~p|5I*Hnq;}lU+tRNwo^r_jyZ<=7hPoOJnJ1a=b2a63$rB2cxPFT*PHtK zEW#O-%-q~UZfrZ{6)7nuo|*5@eS0gX=qj_Hnx|IX_Nm|Bd_vdn{NvJ7at{>bilM&F^S$S5&y3lBj4nJrzl??9^@BY>?mO6QjOY;x65?@v{CLXLsjA|g<;oAg|9Y)4 pKio+{AmDwGg-qB_wf*AvNSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=a|NeeYe#6{nu|XcP57d@Fzb$k z*su}t6hezvjkZpMG<-GABtIZ0-pI;Oij zU}DxIeY^ZCe>z=FU9F0eBW112_k|a!e)Jam;lV1zotb-AXi2*~cc-Lk9%tv14xd|3 zR2H;O{JoXqT0qBrUiE(Chs=JrER#2RD+(p`iKta}P8Tu^<%(UrCH9lbL@{rlV;gqt zjmt`%qvUsDMfv$1ygmWe$9DRvnf^PuWzDo%@hwd%`{&r?tTxU&08m7aXh?1z>$s99>`iJoWCsm|4)D=^Zo07^V>S_=$@(gCvf$ZYnX2S z25-aC9Ea!ss!V&P^UquG{-DL86PyWU5iMdIXL8*VuX@PnYTF-~)4%GhG4~XS>Gv5` z!jHFCue6CPaW9@C;_zw5|I7ai^JO$k<-=6OG8EgcmV2BjmJfXXFFQHT{d1&CSBHqg zlhav^ZK)2+cij*PJms;^fA672#RLsrm(Bt%g`cx}_71PdYARWjoc=aCiE=%r2gcL_uMtsJJ*RH z;of}VedD%m&aHQMe^;97rDSQ;b?!^jUS=k)A1{~pO1xq=ddsSEJ1MSQ%a-d};qfcA zIbSt`=4;4YHB4>&_HFUxU3Qs|blJCEJI=i)M>c%(j>^ww@9ynwHr_8g)#ORgCyyf) z*Gz=E3$JHiUw3?&uk?joTixRQen(od*8F~~*L(T$PvLX>W?x>SBBHdD-|1Maw_lRT z=co5MP2S#K=iI)3cfgmu0#z(b2h7i^e@zm|$jmz=`ejDT_1tisu?VH=OPhb>NqVRg~H6g6!+OkF6g~e3Gy2aAJ!NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=68~<(l-{ULdq3*oy$CADq8rpWsuFDKx z@fIEY{5)&L-p!1HYRzxg=>AB|wmZ_ZX`x;yYi+tuK*XNuV$UW|S@+&vLhump)jp<| zyHkup^jB*v|8Yh~n04*N8P_-p7TPRioSI^}xTG`CQ(Z*bYK5W+Q{gPmCtM{()BYBy zHv~4zD5aPk`OR}EL-^yz)auKB#g;J?adfmE==Z5y;@B(UC||kavgT2Dg(rReQ|ovx zO)yb^($t@I=!X=SW!D3BCZQWvmN|1{KCDQrGCeHypj@h@N->kcE=EVd%XkATw@gQ3 z`8Ix!s0ZH_U&PqFx7qZyTH(ou$A^`_eYoqkYInu?cGh!Wyx4phe0TP;PHg5`H2H8_ z{QMRf#Vm_Q*LX`k95TdT2B)++Z)=}=b{tI#*=gz++#h9AcjJTdy6(yErS~TI#5;L5ZCf@eennorV6XlA zCC*1D&Aar-S%ztka+U1Iol#Be4sY0Ca7}hqXT-sG0XJSf5~}_GW9FhVJ=RSrf=i>L z*OzT6v0suK`Fcz0Q}xv6DHngeTJ?Op$T-S@Iyi~7Sl`TSW`jwKVCLtT28zuoG5$n1{*&_Ll6;X+oO zE7)H69M;_Tv(u%iPBl4RnNlk*h<7+0F4;9K2@+X~Oo6s{mHadH9Liyy&Wu9vs z)h0K_Upt_z@8xvf&3np6#_YR0FZt}zk`?QXihEJQrWF=g_`)5#3MT zo_W0V-Q*db`P&+M<}ExP=6Fu(`Ws29vh4d|b~QD!@lVdF7H;M(xHoT6%*l4PnNy!# oe*8a0H{NM)#RUI;_I3Xm4&S`|Z<2dU1E~1(boFyt=akR{0MzwdFaQ7m literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Carmen_Ortiz.png b/frontend/src/static/AgentIcons/Carmen_Ortiz.png new file mode 100644 index 0000000000000000000000000000000000000000..37bea30fdd959bc68e67c11fa41ff6086be7033c GIT binary patch literal 1606 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=o`Z*lGCXLrqmb*&y)KcBn*{qE=Yto;}L*V(uKfO*gg&z?w#|DkG!jJe9|}nSqY^^3}+V1{`2&U?YB9OQ_}V~cc{0eU*P0p=#btq)%%-_ zz{X_@k6vV3(^jb6-XDI_frp1TNhZDCNa(d?;PT2hGVC1vGiuk|{gbxWN_ftyFIK6l zQbk`2tfd#Pyxd-{9(isf-@4atKi*ZZT#0Y;w00`2pmjVvrKGgzv2$a<{T4M_gBd}g`5 zXaPg9-1U!N1d6-V8C9x9t!MAttG@dC9@YrQH_vZzuCuT7OZ;NDXLXL*n~&Az>o?7w zQybzSv5WIZj{S0@|8I_Jm%M$(aMt&Ci`>TV0cL;FY8ocwi*NtyekYsBuKufPWvSZX z+bQe!?6FzN{(FAFik%_1zOnxiIQLs>?y^m4J^_9gzaDt4rXbzfu64-c@})}|`ED(7 zUt^wC%xRM^d~$R9fqUxf9QIWBHWb%Z&pPCmv%+J~_kc>q-NL5F!_uoWRCoC-;`7WB z>=gBEikVQ^)RW(Tq*r2>G`dTtZCN|D>S0`S$*L3V{Zb{wg4LJ={ z9Sm4G92nRF{v{V2vFv}HCoie?rC9iS^o3iu(o9TD0yRXIJa}VMdiKqPWEbbWy63^7 zzBZ~|B@!YzUuRxEX{I=#U9|c8*XGY6TEewQjLvtMxdaAM)B zv&IJ;YUCt%RzH*Y?eHveYQ%|;!Iz$%UeVBZxTpG|(?VW>19R_1RJ6Uy;>yUb()`L^ zb=A@3T~PX7t&_PgrdtMx z{wilZ=LxBe?fZ5~ZItCs>kgTfti7Qs`_HYbix;O~Xfc`pNaw^_iwWK97isEGTXs{$ x-2TLBmfndaOfk!6B}z@xkiS=2=XdSJec6CnhaRj=0T$p444$rjF6*2UngHdajmZE2 literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Eddy_Lin.png b/frontend/src/static/AgentIcons/Eddy_Lin.png new file mode 100644 index 0000000000000000000000000000000000000000..72033bb8e6a0184757a1c8fb0c70b873c8f4d89d GIT binary patch literal 1507 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 literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Hailey_Johnson.png b/frontend/src/static/AgentIcons/Hailey_Johnson.png new file mode 100644 index 0000000000000000000000000000000000000000..b88b1f6da325a5c8cf98bd6b74804b054b634f5e GIT binary patch literal 1590 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=+`?wecm_o!6D|E)$c9uTi!2!ccPs}af`%{f& zN%^{OM}O?UYnS#*YSmqV6Kl1OsO0`n6Wy2d{^09V@oF>AT#f%(&eb-@&Yx@zWyt3;ZKewyxaGjMbyr6IfiZSaR#lbN)wLGTJw{4$ya^a^kANl11>CV;%R=a-^UhZyaIJtC5MK)yNlfp^%?w<4Ehb&EbJ??|vT|IH$Dd*4&{530Ve=6QZ)5qP}e!jCUz zId^Y$S3m!zborvHlY~j{k*l9ruD!Kwe|ud4_G_+BSjF9XR3* z+qlCRebT0zlqHvKwBx@Md#U^Vx#cYl%GbZF7Cdh=>)OQ`mbX|enpdxSku!Iq(wk=& ze~9+jn*{HzOjD@q>r|dsDRR(i&GV=?I!89|-PQMbna1Yd`{RyX2yx>QyL`EbZ^uy+ zpT}6B&so^IU=P3G0qeg%Upac-x;MQv zY{~9I!NW>T=N^0eS7m(vd}8zbRKHJmUmSmY%YKKI+1X#`>iOHByq(d{Aa?n!m!{=h z*~s^m**{mY&h#;kO}hF@dr!r=>p~j-=TBsG3Ait*{*{y7V7Q9^?S$Sr30(^{W<5%I zSbHQZQ^&I*DMkBcZ+t=} z!oU7r*Y4b8^CX@hXZKe{9$mZpeZ6>qMDl_3134zA_syHmV0$&{TzvIuyYCl% f9Z}rhr2E*~Na$R4ML5?VP_gRi>gTe~DWM4fZ7Gut literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Isabella_Rodriguez.png b/frontend/src/static/AgentIcons/Isabella_Rodriguez.png new file mode 100644 index 0000000000000000000000000000000000000000..b044d5b2ec16b6191828d92c085112001d214b2a GIT binary patch literal 1649 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 literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Jennifer_Moore.png b/frontend/src/static/AgentIcons/Jennifer_Moore.png new file mode 100644 index 0000000000000000000000000000000000000000..234a84d9ad907c8a042876f645df962acbe8abf7 GIT binary patch literal 1525 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=k=mqAMHBVj%m))AtxOh65ZoYsAluE zi0pcJ;<1DVgI=^{%_c8Jp`-|o$vb{{cSdM;`i0%nE1clbeN_G0x%Jn)*WEDvl$2cg z^~34|4576%R;Nq~w%D<4yZd(5V>eFd22XF0y|<-rmDBB;_3w`^k+iQhIPiYv5%;QJ zf5rDlvu>5KV2>A!pV+MZIs9DJD@VR09!32pH>ElbGzbVX^6X|_d7EkT*~XGC#=8@g z13xYC+jU&wl(RO&&Rt2Yr^}*N#Z_}}X!4wYpT+K~p+n=Y+-G}M7x(|Xcl-OXn)!47 z`CPwMKD$`-IM0*#Ip-LPdcvPaM;^F3kMWi$Pk@>E(XINA?K2EZ=T}wBeU|B8_f9$F zoxS7l!&BdUt}455`-w{IOFK`24eRSA>SX1w>sDV0pV%0mo7!5qX6a3ddfTikVIj}n z?wBZkVBfR0s%x_X2%h+;va(Ua&1>Q`K+h5ub!45THd$)Qtx;B*!hjzzOP@td0_DJ#KNOf8TyYW z=iHm2-0{J*{Y>^Uownsa*p?g@_OUa5zA#2_`O^z*jU1m|y~>(3cdlwjhe_T-=Q?}t zK-PvIky@@BJM&qJR$lJBz$H+${`%>dlPQy2R~&gI^Wjz8Zo(M1+Ud)(sU3Jl#ZkOMNa|#4DzilY}x~bjc*nxvW4o4Ky zGBQ?VZ1ukR{}ZdbE%!Fr1DW%yie?^rH*ev#Hv6WnJu!0>+BGBv(&sLgvpB%K&T31& z+m6dSf_BPGU8udI>qlgJjOo>WnKfqd`CFbBKGDAw)m?sD*MTA4KH}%3$nC7v?@bB} zu9mHixE6Jsk7J{0<<|FBI>-5LOiWbW@m%6s?X;MiY;U&qg?tLn*~lBurYF@c|LbNF zpMd&)=_b)q2A48<@gEljch394vGV#^&of;tC$d=2cq!d=IP+?HjQVf!+nGP#FJ6{C Q8&oQKy85}Sb4q9e04Jepq5uE@ literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/John_Lin.png b/frontend/src/static/AgentIcons/John_Lin.png new file mode 100644 index 0000000000000000000000000000000000000000..0051c3ff663dd78455001869aab97f764f77e868 GIT binary patch literal 1336 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=79r8C$w?#90(IMU?e8v{|+YOqt-eIYVEpNr;7;yS_nzv%@V_dSa~j#X~0NEzPTs zTW>age>R$1|IN8GbBoVg8s|TIEA;pI3Z8}YRj;UgR%7m6p_4pC!5bOVvgGT*Nz<>Lv0hedbF7uG)n%g5`HI{*X4lMj^y}C6$doOY51hM5wjhje z;uL{7MzVK1m6-eF!gQW&s)}6N<81wK!W4-ErDWy{!#7*2cpD+LN*Ln8mYIVKaw-Xy1{U$M9$t>(q6yuuF%=tim z&mW;Ci=Bsz6;?Zoo(Oh&TvEHj?D~N>PZ|S!U&hG!Ut#FVn>#OUi>{=1spXAH6@Lva;=hl8U~?N?|#+%J_@rTaG1)R`m79<-au1 zy*qcy(AH6p0i&ds+$Lm@DVgj_k z3oH_Fx%%q9xxxv4dF%7qF+2XvaI4D`ikd5Kyh2!clJ@0KrbaB1cFQjOG?D7fdB>8f zz4?glF*~&Y>jm?7Gb?^~>+qa)R;|}3=ljJZnQnppgyj8g5xu-N)v~u(ehEyMDM(@~ zoo7)oceB79#yMqw?yS3Ks^fB6=3ZTubf1#&hInAgiYGBX{Tdu*yvV(j+Yx9crf z9zr~X}6UR)D;t@7)bu031vF4o63V)F8m#kmcq54GM= zr^>rK?g0sI%Oa9NZjTx?-nb6`uD7JKlqC) Vn!7h%{sbNSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=+(7pwWX`h;Y91yEm;?xQWV7XSe&yiEA>n`(Hiz_SyPXK`Oo&`#jQ(Mo^@kd zdHwIZGnMy#KfAm9@iON3cgz3ndq1c6`95=(|B*GbpKQ1JBy`9}BVvNrqvLOvy8Yum zD}Q6V;u~Jpl}C1We-ECuf6lb$_Y5cQ-SqeM^TJyhiqe_~oQ^BB8FZd~RT1#lOVLek zv2vTV`?;EBoECpyi#`l(a65P4MS*Rh*z?dMVfqGg)(k&xa=x2-zVc$s@8c_%s$|}p zrL?>KltT8p6}_cDBCn+1a5%H=#>r0Weao0smU*3X@M#m>HhKBG8!CSCC0jYJoy764Nb{H?RmELn-9u;N3U4^wvBh$sBnLx_xCj`4=OGE7FgL3{5brZuK%}- zpWg5bRdN))wXwT>_|l~!X?=k}m+f0kKHmBD`Sse5P4a~u{ZA_ugx6X#HiU$P1bv@w zb|{X|eutyvPS+{h)YbVUVw3M*tgK=d{1o6}aAVs}&4!wqno~_Ic@s;wMgLQrc$e`; zi6Y-efhX0zhb$Q1?OC9}9~;p5!#W^LN$;cY&il?+D*vcXefocz-JN^>Zx&7kD?#+M=q|6miYJZ|?pl4bU$g9}KEk9T z!WF2ZvrDGakFm^W@y6v{O8lKcMV`v;GLI&*f1K5n&G^XO`D^RyCL8}I9$sEAh3CAt zm3BP&W>I_L>YkpRbzE#uH(qh-jV{=+ZQ8e|HOn)Sq(fbpili^dvS=Uc@!M$iw!>Zd z1Uuh{J4Z@v3eIuHZ~M}8`NZd|q3mmt+s_3azh5T3Tyy2ky0TmMYhEo~&V2d6@!igK zj@y^Wx$Zgkau+Ly&_Rnd0o{e49mIQk`+_T~+76ir_X>PB4)NdFxHlwXOZ>0g_7md1 zJCYQS?O;8`p42O|WWt&^Iy=v~*$Kt3n)^5<;EP!MQM>g_7H-kv;?pw{>ke)^dQ7ME z#zTJ>pJ;)0#znibHkI|R38+eA%k_`Cn6%)1OzeW46AcZg2HvaJJ?86K!KBchl6U!G xMEd@BrrEdTW*@$0W5K&-<@Wt~$(699`me)RwV literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Latoya_Williams.png b/frontend/src/static/AgentIcons/Latoya_Williams.png new file mode 100644 index 0000000000000000000000000000000000000000..7454c3f544a104dd5425cec3d8d8aca529d3a804 GIT binary patch literal 1405 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=Mg_ zKC4*%k?F>(o36JmMf5P$HH9Xsm(;yJwX>^mliI}wsnk*?VYy9feNF9G?D!X#@G8rG z;m1RlvU@-K%5M2rtbSg2ci^+>HcX-uA4GjO~D)@%kOl@E7KPjbS5j!sNoSC^@e@~0!z0AH_XO?uh=l|6z*eDhKP36*&W8Y3} zTN%G>`GF4~eCsPKuiD$o{nKONGk)^R9HR?Yt7BI7>A>q@3yl1>?C>dB zUp=j8=bTg1yi|ADU3Z?_-nq-F^XCfgHhZh8+dD6xb6Ijm`$O&gurRNZvOf!?baaG# zMeFoG9CGgOZCrftu%xN&K|dewhb@0YD zay3_$7V3n3G!`*B@~qka)sr;stLL6e*6og468<%tq#S!Wc3uJYYb6WA`3 x@q~S&#L~nQ|ECsy^jY11ylZ))+54_~#{4Pab=yDfxdAGjJYD@<);T3K0RVSKI_3ZX literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Maria_Lopez.png b/frontend/src/static/AgentIcons/Maria_Lopez.png new file mode 100644 index 0000000000000000000000000000000000000000..f6d43bb61daeedd41f3bc789eaf7a48ef51c2277 GIT binary patch literal 1456 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=r_`)q7nKkwwae7?o0s^Q14Um-3r6(#F> zV%e0|Gjy_N)fafqx7l%g$IIoyP5obl+~s_jmq$mgSI`iD|0MFA?bmHN3pckLU%9)* zVXD4f#=U|bi)$0xYaXP0KP0Zk&U~Feu+{U~{XEUTKfWyToWI1;%1d^ydB){)J!cPp zp7)UR*T0Pp@%PRK|NrdClvn?G{^>WnnDv++3Ni>x>8<)L7xaH>@Re;>9N4$NUvSHI zcaoaIpQ6mh^1eSGUpm)_%u>G*Q}Od~Z~QM&3JJ zGvUj{vWx~MW&8Wq)+wU9FY}6S zkp47*AEAwvg~{n4~rx}++(yjJo}j5 znd)Ot6TiE)7|rD2<>66Ky|%&5$mmev!L8DA_w(B?Gc-KwZ)Ihk)Df^SfW!3*(~-B^ z`s6gTe~DWM4fi90lA literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Mei_Lin.png b/frontend/src/static/AgentIcons/Mei_Lin.png new file mode 100644 index 0000000000000000000000000000000000000000..359ee938e97d7c00e01f5a6dfca72a779f9896c4 GIT binary patch literal 1386 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=ku$eSR-VzfSt2xlFP?g4-^+XQ~Gf*c|wPZ!oLK4#~AU0 z%{zPko?7X5*5~_|oDGSWu7<9EwfEi1c{!ce?3CQIPCh(cYC2aSJo!`fVdrf>o?bNE zID6Gik%-CMv(xorwi{d!Q0WS6eB?UWHc|A95$aq|;}W{*nNN$Xuy z&MaVXydHl?bn}H65qXgX)_VntxkOII&p%W>z1cipJ?ZlI$=NKw&&Bv8e0%rOdrfTj z0*0OU->!`{`SO76y2kX=HvHe`EsfXSpPB5f-FxoN;+N0WSH!I^&dK?}b$-%$?&I?x zXkW1Gb!(pP#PsRo$H_WOj32rEp8tAtW~&F|Ppw6hci;YZVR5*2=Z6<_^>)kcGf2;s zSkAxg!kbTQ)zUquPm0#C27P_CIdWIslG(S)wqIU0SG4eUoq_&wbXyV)yaj!bema^$dQRK@?kbir0h<_f{HeOL5X-EgmD`XRx(B3z zc&mw-8uO9`5B&a9xz*xXE$hBB-u=&gGwd$+JU#r}$oxpS^Y5hxx9F!78y{1c`~LIu aYrnbEeA=2SK1S7miXu-}KbLh*2~7ab#V6eW literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Rajiv_Patel.png b/frontend/src/static/AgentIcons/Rajiv_Patel.png new file mode 100644 index 0000000000000000000000000000000000000000..8fa1b0c369669418b7545edd4c6c49101cb5b4a5 GIT binary patch literal 1385 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=WSf=PiDH{pxD~}W-UYvZjltU@YanZL6ac>r0=zb~Ib1Xpg zc9+tZ7rXACK4-N1?w-3`^GXzERvLe<{k(U({%xVZ+w1?bDAgA*q;dFU+`G_wE#Uft ze>uOkWN-cx%-5S>zu{n7Nn3J((N!O}!gJPVPFA;Mq-S&&S@64^%ePqFXz@4#`SVvqF1%gRuQ17OL-V`x`5_$N+7bg!pHnmHDc4h5 zv%2!|ReqTYozHteSTUYsnC-Ck@y8vX^yk@>z2c}iTlz$WFWdeym&Tb8rNzOn;(AiO zL8p%i`P%Pzaw@sk=GCPJ_Wm;`BeWTMdFJWWhwWII9%;2__7!)bLcUUo@5XW8PVHD` zbhG7#mEY$-6Gd|G-S)WHmV0m0=6^dsbWXchw_w3sV}&oPEB<#DoBaBusJeEt#SZOt zEe4#`Jjc%Uo+@{$PgFa;be7$ehI{u;r>R|btnHMMtbDzGp=pCnxwGGm3!w|oT;yAF zrm=C(w<*l5A3nG&>dctL@nl2f>+93(!xnUQhF`f>HfLAd@|C75y1mJZv^uY#B)90=iNgwfe-AM7&&x{vx;>2H*7(5j1IPhf9k+SBmqcmI_+tK!O!ov|T+*sKDd)w5*r*EBOwTog~7us+rH^0YFPVTUezu&e0UT6NV@hI9qXU*?p a`x$3H$a^9A;n_-1N#yD3=d#Wzp$Pyg|1dTH literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Ryan_Park.png b/frontend/src/static/AgentIcons/Ryan_Park.png new file mode 100644 index 0000000000000000000000000000000000000000..7748ff86a03e1ad10976082d06aedf077dbab84c GIT binary patch literal 1397 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=0}n4(lS)U^ zG(lF@i7ltarafEbWTcoOoaPuPrWdp#bgRZMK`+Iu(A*f-r%p!A8ovUgUDxJ4x4!q@ z>ieFZ*T2Vgv%Q;rKR@l9W$`)TpXWnXZ29+XZS-P+-&Hkx-qfTrN8AwQe%<}KGFr7) zM3tLYLq`1gsm0pjzir!PUTK;61kaQcrmyzsx3kmO6j>O#JD`SB*8y%%Pd@;npR^yA>&*B#SuKELjz#m6wq z#fGzTQ`^Oyh6Bab-va-r&zrt{iDbgpYm3!2PwkbSEDQ-!8{*k&5}H5 za5Xn?Qt0c~wMDPf-~CmOm%06~a#`Eud@**ra*oG+i`!z?7JavwcUSPH^O|%GUdB zo(L>$2x04g^ZjhVbs2N^iYJbC*$rpeX0Vh?g`b)@KSAY>>F?gW^OkQ-4%yeI?p?}Y z^J$9jy4xJ{nU=L(xH)+t_tSzGJu#lQ&M20YTkhF@!SLq4sHCM8;vTo;=GQiv7YU~Q z7gxFG5D>lE)>Bc+_|Xf$k7r~(Ts2!K`}&EO7Tpqm?0Q$9>4NdWfO?Y<5q-^aPe(0H km%A;;(r+?XME&KiJ#zF?R?{kAdC9=w>FVdQ&MBb@0PFc60{{R3 literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Sam_Moore.png b/frontend/src/static/AgentIcons/Sam_Moore.png new file mode 100644 index 0000000000000000000000000000000000000000..726732a5b5eefe16f17b7e86632f5d32c49f7277 GIT binary patch literal 1501 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=ieHKoOJ?^wGpe5rWxaa-#S?o`E!=-J}FSG#Y>zibk&xS7U3O>EzSMcdf) zrW_78YsvZ3s{VLKMr&%cpR!8X4{5!N-gH!>fvYT`&T4H=n9=dTck-d%R!$F; zv9V3=d}?I$#Bk5vNY#@ZI&a18;?w5*@b3Flv#9(IW8oTy=^I{|+>hf4;z<3a|7hKe z9RJ&VGn8*QExhu@w5D7=q^Ovk!_D@s(=&^UPv=i7K53PCvhnkbnfp2OOScDYT)VaO zxPkRohr1VQlFM3LJLXzDPpYVYuG+QwgN(a@iAl5Y@r7a^JlH4OBq`bKy+3tx%ayI= z7rq@o=Q^e0*4m6v*Gj)*r^R#ZJNdN}TV~Jx_{*2)>(a%?jEvf3EB>!$t^Up;C@X!~ zFI;5f!Rk*67mo^^&SWoYa#|=Lym0?}H$IC}8TPL#AA_BqDXaH;uHP@t7ZSG9@ov-G zIn~wDw!RK8AHSX!c;&L6{jblKX*G(Q*7i77Z3q*Lar_X#x$fPnz|$wL2gph4%@Gg} zmeanqvnKt~e8K8`$F zjf|2$=uF!3j`f6)k)`_tesXVVQF{({5+`yq-@M}VZ%f<&^%Kw-y5zh2pD!wmO z{?%nhpRdfFE==!*9!oC%x6@j{NkPD2?>T+l*Z;Y-f<1JX@a&ciE@505()D{$XlUrl zn7r-LqON<-KfkQ8{PN8I9lQ7<>#bv)<4YKYF5bAY;znmDXW+`qk3Tx(e5|lJ9_FF( oDmuaM!0oP_eM{%Y)x14-f2sBAhNlu&ctNF~r>mdKI;Vst0N^c7d;kCd literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Tamara_Taylor.png b/frontend/src/static/AgentIcons/Tamara_Taylor.png new file mode 100644 index 0000000000000000000000000000000000000000..fc34ea9d4e24f958826561a82925856a75ecdde3 GIT binary patch literal 1639 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=pE;g%Rf9J$@jpb??qm@OZQQTvZ{)CKm6OEYI<2PopW*?iBoMiZ`V8;ZZPX9&b#pl;@ zyndL>ZhVqUd{W_;w8wFr5>D+M4>VNj4nAyIl5jjDJ6BP^-fY$MlSeM5PQ51^Q?pk~ z;b5cSZa=4*uYo_p7!+hu+7eD>A|H(b8?SG1(^g*CfX`2J?GHJqB)?>u@^&=qAp z-K>bX#J|6c90O^5ZR&fArroo~!I<#pfRoI5*a zW7bGf&#?LYs5FYTwo0xK(QZGZ3V@LjqzbxZd3yjOR(P48;{ zxy9g?XYAeBD_hk2_4sO*?@})P@;JbDuV4S=gVX<-Sp1ms>(`?7}QWeL}m0te@$I*Gu{HF9%)od#JD|{KAITsnt7X zZ97#osbGT3zV8mPmjl^O=C=9O{r{({-stk-fku~jTZNcx+JlDU0`(7*msY*x()c>1 zBR|ScGs7V&I{Nf650yhj*TuWniR&&t(e}Ya+Tn+kfmW{EetDzdGPhOYeT?3rMyF+M zL{9y&S{9@^X~_fjn{sE~A7qv0zt6(*V3selqU3rOk$?U>r>^ern5&{U*Fk6>|C>$8 z^0VrLqE9|t(yBPU@9?qg7m4LUb3zx`>t5bsSD@6;-0$|iW9@9w?`s^^tt~JRjX6_S dwXyo#en!@VPRvKv@>+t*VNX{-mvv4FO#o%inS=lU literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Tom_Moreno.png b/frontend/src/static/AgentIcons/Tom_Moreno.png new file mode 100644 index 0000000000000000000000000000000000000000..65416fa1fa3dd509214d32515171a142610eac2d GIT binary patch literal 1564 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 literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Wolfgang_Schulz.png b/frontend/src/static/AgentIcons/Wolfgang_Schulz.png new file mode 100644 index 0000000000000000000000000000000000000000..a7ca2a81312d66dd3ca053dffec53f55b769827b GIT binary patch literal 1364 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=RQOMZR;w)<@5k&fQ?vyQ$)~r`Etje>r! zjPDy%uQRR4f2#ELOZknigrWxx<$}+dZn6Kq)D;kYR!Tek$${M-v$;JILjaUQuA_>GwQg@4WgFp35>+WR`bj9q!L4(K-I)!h{zxbq``v^Esb&?A<38^Pp}~ zRP2Rozx1uFquUQkWMnrU2rG_P{rT{7_C}+68)>fRFZc1?)N;H&@67`Hm97!d1+QHC z?(NCHw7lP!X`z79pRfKQnPm%m7c4G&(BLlfXtT=JRSFH;VG-ucD z;w>frIqvrqFFkjLDJQ+*voa^&)jz#Txlh!c&uKr_KU8S(!^y<{`h&IdvZtfw%O~10 zE3_?`A68_qzA)i|qLy8O>XgfT3Z7rf8<%;X6n)IF&R$j zv*fp}k!`p?dA)?XrSTT$>FRxl#7><#BO4X_)9peaBVWY?<+!eoRuZxoTZ+zvGtR#q zo?W@Cq|%H^`MB8m)u2Mh)78&qol`;+004Fm AFaQ7m literal 0 HcmV?d00001 diff --git a/frontend/src/static/AgentIcons/Yuriko_Yamamoto.png b/frontend/src/static/AgentIcons/Yuriko_Yamamoto.png new file mode 100644 index 0000000000000000000000000000000000000000..a7b963c288edc9650ac41bb253f9bc23e125091e GIT binary patch literal 1392 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg5s(_;nda-upao=eFfcI+ zF)#yJj6lfHp2@%hW-~AVO#%Yu1&j#U1x#>Rg$2wAHb~*VXrH%0Ln1RnB1$5BeXNr6 zbM+Ea@{>~aDsl@z3K(oEtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74+Zoz`RicPN?Xl4ZS&rlw zh)=ag@Ep;sV;(=BHK8aR=Pe=T5;TUp5|7~SGM7j zJ9eBczh`@W=l64Ws^?4czBp6!e9n98;%7bKi~idf)h~Q6m6ZK#wdnzstP{-(L++Gr zdm+G=7{BL#Rs4yVyKNsFdJGj*HC$}8Cmx6^WcenxJ5+0>kHYu%xwg?Z0*knVzv(vP*w`MtU{lvI8?DY}~A`g=G|b8^4XZ z>BIc~*vg1mqVqc}c-#V%_RKu3=6mzfHL2S@Q!j=8`j$9JZy%4z+)(vUVKKcg7e9p7 z)VRGo@TKh5UPX5g6&r;=WmR2qBKAec^^dgLihsLy#ztIRg?IJr%HIo~TO8e+x$x** z`MqV+x9?A{uQ)k-_1p-?j`b(jEsTHq-lt2&kH0sd@|E!1*EgJdZ|a1eO5J7ot8LTH z+>+-m%k}$qED;QEJn^znYl4$ZlEfH)dW-a5|mVTns`{m)~4HlCejQa0e z=S*8t5k}U4K z`X(3m?JQ*ZbU`}E;Lc9>a{@vazjv_n|M20Jx!qE6xgscQLHM0l!6~x;#gF*xcs?QU z<2%Kp$-gH=&JIXD{WQqmtLD$Lp4WLX&OcsC?)bwTp}m0f_qp!aBZZN|1|6x-)Y { + autorun(() => { + const { availiableAgents } = store; + console.groupCollapsed('[LOG] GetAgent:', availiableAgents.length); + for (const agent of availiableAgents) { + // console 输出,name 粗体,profile 正常 + console.info('%c%s', 'font-weight: bold', agent.name, agent.profile); + } + console.groupEnd(); + }); + + autorun(() => { + const { agentCards } = store; + console.groupCollapsed('[LOG] AgentCards:', agentCards.length); + for (const agentCard of agentCards) { + console.groupCollapsed( + `agent: ${agentCard.name}`, + 'inuse:', + agentCard.inuse, + 'action:', + agentCard.actions.length, + ); + for (const action of agentCard.actions) { + console.groupCollapsed( + '%c%s', + `font-weight: bold`, + action.type, + action.description, + 'input:', + action.inputs.length, + ); + for (const input of action.inputs) { + console.info(input); + } + console.groupEnd(); + } + console.groupEnd(); + } + console.groupEnd(); + }); + + autorun(() => { + const { refMap } = store; + console.groupCollapsed('[LOG] RefMap'); + for (const [key, map] of Object.entries(refMap)) { + console.groupCollapsed(key); + for (const [k, v] of map) { + console.info(k, v); + } + console.groupEnd(); + } + console.groupEnd(); + }); + + autorun(() => { + const { planManager } = store; + console.groupCollapsed('[LOG] planManager'); + console.info(planManager); + const currentLeafId = planManager.currentStepTaskLeaf; + if (currentLeafId) { + const currentPath = planManager.stepTaskMap.get(currentLeafId)?.path; + const outline = { + initialInputs: planManager.inputs, + processes: currentPath + ?.map(nodeId => planManager.stepTaskMap.get(nodeId)) + .filter(node => node) + .map(node => ({ + inputs: node?.inputs, + output: node?.output, + StepName: node?.name, + AgentSelection: node?.agentSelection, + })), + }; + console.log(outline); + } + + console.groupEnd(); + }); +}; diff --git a/frontend/src/storage/index.ts b/frontend/src/storage/index.ts new file mode 100644 index 0000000..a9fadc4 --- /dev/null +++ b/frontend/src/storage/index.ts @@ -0,0 +1,1141 @@ +/* eslint-disable max-lines */ +import React from 'react'; +import { SxProps } from '@mui/material'; +import throttle from 'lodash/throttle'; +import { makeAutoObservable } from 'mobx'; +import { + PlanManager, + ActionType, + RehearsalLog, + StepTaskNode, + AgentSelection, +} from './plan'; +import { debug } from './debug'; +import { getAgentActionStyle } from '@/storage/plan'; +import { IAgent, getAgentsApi } from '@/apis/get-agents'; +import { + IApiStepTask, + IApiAgentAction, + genBasePlanApi, +} from '@/apis/generate-base-plan'; +import { ExecuteNodeType, executePlanApi } from '@/apis/execute-plan'; +import { newPlanBranchApi } from '@/apis/new-plan-branch'; +import { fillStepTaskApi } from '@/apis/fill-step-task'; +import { newActionBranchApi } from '@/apis/new-action-branch'; +import { + agentSelectModifyInitApi, + agentSelectModifyAddApi, +} from '@/apis/agent-select-modify'; +import { fillAgentSelectionApi } from '@/apis/fill-agent-selection'; +import { IconName } from '@/components/AgentIcon'; +import { setAgentsApi } from '@/apis/set-agents'; + +export interface IAgentAction { + type: ActionType; + inputs: string[]; + description: string; + style: SxProps; +} + +export interface IAgentCard extends IAgent { + actions: IAgentAction[]; + inuse: boolean; + lastOfUsed: boolean; + ref: React.RefObject; +} + +export interface IPlanTreeNode { + id: string; + name: string; + agents: string[]; + agentIcons: string[]; + leaf: boolean; + children: IPlanTreeNode[]; + requirement?: string; + baseBranchLeafId?: string; + focusing: boolean; +} + +export interface IAgentActionTreeNode { + id: string; + agent: string; + icon: string; + leaf: boolean; + children: IAgentActionTreeNode[]; + requirement?: string; + baseBranchLeafId?: string; + style: SxProps; + action: { type: ActionType; description: string }; + focusing: boolean; +} + +export interface IRenderingAgentSelections { + heatdata: Record>; + selections: Record; + current?: string; +} + +export class ApiState { + public planReady: boolean = false; + + public agentsReady: boolean = false; + + public fetchingAgents: boolean = false; + + public planGenerating: boolean = false; + + public stepTaskTreeGenerating: boolean = false; + + public agentActionTreeGenerating: boolean = false; + + public agentAspectScoresGenerating: boolean = false; + + public planExecuting: boolean = false; + + public get busy() { + return ( + this.fetchingAgents || + this.planGenerating || + this.stepTaskTreeGenerating || + this.agentActionTreeGenerating || + this.planExecuting || + this.agentAspectScoresGenerating + ); + } + + public get ready() { + return this.planReady && this.agentsReady && !this.busy; + } + + constructor() { + makeAutoObservable(this); + } +} + +export class FormState { + public goal: string = ''; + + public inputs: Record = {}; + + constructor() { + makeAutoObservable(this); + } +} + +const blankPlan = new PlanManager(); +const blankLog = new RehearsalLog(blankPlan); + +export class GlobalStorage { + // 开发模式没有持久化 + public devMode: boolean = true; + + public planModificationWindow: boolean = false; + + public taskProcessModificationWindow: boolean = false; + + public agentAssigmentWindow: boolean = false; + + public briefGoal: string = ''; + + public briefUserInputs: Record = {}; + + public planTabArrange: string[] = []; + + public plans: Record = {}; + + public currentPlanId?: string; + + public api: ApiState = new ApiState(); + + public form: FormState = new FormState(); + + public agentMap: Map = new Map(); + + public focusingStepTaskIds: Record = {}; + + public get focusingStepTaskId() { + return this.focusingStepTaskIds[this.currentPlanId ?? '']; + } + + public get planManager() { + return this.plans[this.currentPlanId ?? '']?.[0] ?? blankPlan; + } + + public get logManager() { + return this.plans[this.currentPlanId ?? '']?.[1] ?? blankLog; + } + + public get availiableAgents(): IAgent[] { + return Array.from(this.agentMap.values()); + } + + public get focusingStepTask() { + if (this.focusingStepTaskId) { + return this.planManager.stepTaskMap.get(this.focusingStepTaskId); + } + return undefined; + } + + public get currentFocusingAgentSelection() { + return this.focusingStepTask?.agentSelection; + } + + public get agentCardsInUse(): IAgentCard[] { + const map = new Map(); + for (const action of this.currentFocusingAgentSelection + ?.currentTaskProcess ?? []) { + const agent = map.get(action.agent) ?? { + ...(this.agentMap.get(action.agent) ?? { + name: action.agent, + profile: '', + icon: IconName.Unknown, + }), + actions: [], + inuse: true, + lastOfUsed: false, + ref: React.createRef(), + }; + agent.actions.push({ + type: action.type, + inputs: action.inputs, + description: action.description, + style: getAgentActionStyle(action.type), + }); + map.set(action.agent, agent); + } + for (const agent of this.currentFocusingAgentSelection?.agents ?? []) { + if (!map.has(agent)) { + map.set(agent, { + ...(this.agentMap.get(agent) ?? { + name: agent, + profile: '', + icon: IconName.Unknown, + }), + actions: [], + inuse: false, + lastOfUsed: false, + ref: React.createRef(), + }); + } + } + const t = Array.from(map.values()); + for (let i = t.length - 1; i >= 0; i--) { + if (t[i].inuse) { + t[i].lastOfUsed = true; + break; + } + } + return t; + } + + public get agentCards(): IAgentCard[] { + const { agentCardsInUse } = this; + const agentCards: IAgentCard[] = [...agentCardsInUse]; + const agentInUse = new Map( + agentCardsInUse.map(card => [card.name, card]), + ); + for (const agent of this.availiableAgents) { + if (!agentInUse.has(agent.name)) { + agentCards.push({ + ...agent, + actions: [], + inuse: false, + lastOfUsed: false, + ref: React.createRef(), + }); + } + } + return agentCards; + } + + get outlineCardRefMap() { + return new Map( + this.outlineRenderingStepTaskCards.map(card => [card.id, card.ref]), + ); + } + + get agentCardRefMap() { + return new Map(this.agentCards.map(card => [card.name, card.ref])); + } + + get descriptionCardRefMap() { + return new Map( + this.planManager.currentPlan + .map(node => node.descriptionCard) + .map(card => [card.id, card.ref]), + ); + } + + get logCardRefMap() { + return new Map( + this.logManager.renderingLog.map(card => [card.id, card.ref]), + ); + } + + public get refMap(): Record< + 'OutlineCard' | 'AgentCard' | 'DiscriptionCard' | 'RehearsalLogCard', + Map> + > { + return { + OutlineCard: this.outlineCardRefMap, + AgentCard: this.agentCardRefMap, + DiscriptionCard: this.descriptionCardRefMap, + RehearsalLogCard: this.logCardRefMap, + }; + } + + public get ElementToLink(): [ + React.RefObject | undefined, + React.RefObject[], + React.RefObject | undefined, + (React.RefObject | undefined)[], + ] { + return [ + this.refMap.OutlineCard.get(this.focusingStepTaskId ?? ''), + this.focusingStepTask?.agentSelection?.agents?.map( + agent => this.refMap.AgentCard.get(agent) ?? [], + ) ?? ([] as any), + this.refMap.DiscriptionCard.get(this.focusingStepTaskId ?? ''), + this.logManager.outdate + ? [] + : [ + this.refMap.RehearsalLogCard.get(this.focusingStepTask?.name ?? ''), + this.refMap.RehearsalLogCard.get( + this.focusingStepTask?.output ?? '', + ), + ], + ]; + } + + public get agentIconMap() { + return new Map( + this.availiableAgents.map(agent => [agent.name, agent.icon]), + ); + } + + public get userInputs() { + return Object.keys(this.form.inputs); + } + + public get outlineRenderingStepTaskCards() { + const { agentIconMap } = this; + return this.planManager.currentPlan + .map(node => node.outlineCard) + .map(card => ({ + ...card, + agentIcons: card.agents.map(agent => agentIconMap.get(agent)!) ?? [ + 'Unknown', + ], + })); + } + + public get currentStepTaskNodeSet() { + let leaf = this.planManager.currentStepTaskLeaf; + const set = new Set(); + while (leaf) { + set.add(leaf); + leaf = this.planManager.stepTaskMap.get(leaf)?.last?.id; + } + return set; + } + + public get previewStepTaskNodeSet() { + let leaf = this.planManager.previewStepTaskLeaf; + const set = new Set(); + while (leaf) { + set.add(leaf); + leaf = this.planManager.stepTaskMap.get(leaf)?.last?.id; + } + return set; + } + + public get renderingPlanForest(): IPlanTreeNode[] { + // 递归地构建 + const buildSubtree = (stepTaskId: string): IPlanTreeNode => { + const stepTask = this.planManager.stepTaskMap.get(stepTaskId); + if (!stepTask) { + throw new Error(`StepTask ${stepTaskId} not found`); + } + const agents = stepTask.agentSelection?.agents ?? []; + const agentIcons = agents.map(agent => this.agentIconMap.get(agent)!) ?? [ + 'Unknown', + ]; + const branchInfo = this.planManager.branches[stepTaskId]; + return { + id: stepTaskId, + name: stepTask.name, + agents, + agentIcons, + leaf: branchInfo !== undefined, + children: stepTask.children.map(buildSubtree), + focusing: this.planManager.activeStepNodeIds.has(stepTaskId), + ...(branchInfo && { + requirement: branchInfo.requirement, + baseBranchLeafId: branchInfo.base, + }), + }; + }; + return this.planManager.stepTaskRoots.map(root => buildSubtree(root)); + } + + public get renderingActionForest(): IAgentActionTreeNode[] { + const selection = this.focusingStepTask?.agentSelection; + if (!selection) { + return []; + } + const buildSubtree = (actionId: string): IAgentActionTreeNode => { + const action = this.planManager.agentActionMap.get(actionId); + if (!action) { + throw new Error(`AgentAction ${actionId} not found`); + } + const branchInfo = selection.branches[actionId]; + return { + id: actionId, + agent: action.agent, + icon: this.agentIconMap.get(action.agent)!, + leaf: branchInfo !== undefined, + children: action.children.map(buildSubtree), + style: getAgentActionStyle(action.type), + ...(branchInfo && { + requirement: branchInfo.requirement, + baseBranchLeafId: branchInfo.base, + }), + action: { type: action.type, description: action.description }, + focusing: selection.activeTaskIds.has(actionId), + }; + }; + return selection.actionRoot.map(root => buildSubtree(root)); + } + + public get renderingAgentSelections(): IRenderingAgentSelections { + const stepTask = this.focusingStepTask; + if (!stepTask) { + return { + heatdata: {}, + selections: {}, + }; + } + if (Object.keys(stepTask.heatmap).length === 0) { + this.touchAgentSelectionAspects(); + } + const selections = Object.fromEntries( + stepTask.allSelections.map(selection => [ + selection.id, + { + id: selection.id, + agents: selection.agents, + }, + ]), + ); + return { + selections, + heatdata: stepTask.heatmap, + current: stepTask.currentAgentSelection, + }; + } + + public get currentActionNodeSet() { + const selection = this.planManager.agentSelectionMap.get( + this.currentFocusingAgentSelection?.id ?? '', + ); + const set = new Set(); + if (selection) { + const currentLeafId = selection.currentActionLeaf!; + let leaf = this.planManager.agentActionMap.get(currentLeafId); + while (leaf) { + set.add(leaf.id); + leaf = leaf.last; + } + } + + return set; + } + + public get rehearsalSvgObjectOrder() { + return [ + ...Object.keys(this.form.inputs).map(name => `Object.${name}`), + ...this.logManager.renderingLog.map(step => + step.type === ExecuteNodeType.Step + ? `Step.${step.id}` + : `Object.${step.id}`, + ), + ]; + } + + public get rehearsalSvgLines() { + return this.logManager.renderingLog + .map(step => + step.type === ExecuteNodeType.Step + ? step.history.map(item => + item.inputs.map(input => { + const inputStr = input.split(':', 2); + let inputName = ''; + if (inputStr[0] === 'ActionResult') { + inputName = `Action.${step.id}.${inputStr[1]}`; + } else if (inputStr[0] === 'InputObject') { + inputName = `Object.${inputStr[1]}`; + } else if ( + this.logManager.renderingLog + .filter(item => item.type === 'object') + .find(r => r.id === input) + ) { + inputName = `Object.${input}`; + } else if (step.history.find(r => r.id === input)) { + inputName = `Action.${step.id}.${input}`; + } + return { + from: inputName, + to: `Action.${step.id}.${item.id}`, + type: item.type, + }; + }), + ) + : [], + ) + .flat(2) + .flat() + .filter(line => line.from && line.to); + } + + public get renderingIOLines() { + return this.logManager.renderingLog + .filter(r => r.type === 'step') + .map((step: any) => { + return [ + { + type: 'output', + from: `Step.${step.id}`, + to: `Object.${step.output}`, + }, + ...step.inputs.map((input: string) => ({ + type: 'input', + from: `Object.${input}`, + to: `Step.${step.id}`, + })), + ]; + }) + .flat(); + } + + constructor() { + makeAutoObservable(this); + } + + public async setAgents(agents: IAgent[]) { + this.api.fetchingAgents = true; + await setAgentsApi(agents); + this.agentMap = new Map(agents.map(agent => [agent.name, agent])); + this.api.agentsReady = true; + this.api.fetchingAgents = false; + } + + public async getAgents() { + this.api.fetchingAgents = true; + const agents = await getAgentsApi(); + this.api.fetchingAgents = false; + this.agentMap = new Map(agents.map(agent => [agent.name, agent])); + this.api.agentsReady = true; + } + + public async generatePlanBase() { + this.api.planGenerating = true; + try { + const { goal, inputs } = this.form; + const plan = await genBasePlanApi({ + goal, + inputs: Object.keys(inputs), + }); + const planManager = new PlanManager(); + planManager.parseApiPlan(plan); + const logManager = new RehearsalLog(planManager); + // 随机字符串 + let planId = Math.random().toString(36).slice(2); + while (this.plans[planId]) { + planId = Math.random().toString(36).slice(2); + } + this.plans[planId] = [planManager, logManager]; + this.planTabArrange.push(planId); + this.focusPlan(planId); + // 清空 + this.briefGoal = ''; + this.briefUserInputs = {}; + } catch (e) { + console.error(e); + } + this.api.planGenerating = false; + } + + public async executePlan(count = 1) { + this.api.planExecuting = true; + try { + const log = []; + // 前面添加 this.form.inputs 的记录 + for (const [key, value] of Object.entries(this.form.inputs)) { + log.push({ + type: ExecuteNodeType.Object, + id: key, + content: value, + }); + } + // log.push(...this.logManager.logWithoutUserInput); + const plan = this.planManager.apiPlan; + const logs = await executePlanApi({ + plan, + stepsToRun: count, + rehearsalLog: log as any, + }); + this.logManager.updateLog(logs); + } catch (e) { + console.error(e); + } + this.api.planExecuting = false; + } + + public async newPlanBranch( + start: string | undefined, + requirement: string, + batch = 1, + base?: string, + ) { + this.api.stepTaskTreeGenerating = true; + try { + const existingSteps: IApiStepTask[] = []; + const baseSteps: IApiStepTask[] = []; + + // 构建前后序列 + if (start) { + let node = this.planManager.stepTaskMap.get(start); + while (node) { + existingSteps.push(node.apiStepTask); + node = node.last; + } + existingSteps.reverse(); + } + if (base) { + let node = this.planManager.stepTaskMap.get(base); + while (node) { + baseSteps.push(node.apiStepTask); + node = node.last; + } + baseSteps.reverse(); + } + + const branches = await newPlanBranchApi({ + goal: this.planManager.goal, + inputs: this.planManager.inputs, + batch, + requirement, + base: baseSteps, + existing: existingSteps, + }); + const branchLeaves = branches.map(branch => + this.planManager.insertProcess(branch, start, requirement, base), + ); + + // 延迟加载 + const stepTaskToFill: [StepTaskNode, AgentSelection][] = []; + for (const branch of branchLeaves) { + let node = this.planManager.stepTaskMap.get(branch); + while (node && node.id !== start) { + stepTaskToFill.push([node, node.agentSelection!]); + node = node.last; + } + } + const fillTask = async ( + node: StepTaskNode, + selection: AgentSelection, + ) => { + const filled = await fillStepTaskApi({ + goal: this.planManager.goal, + stepTask: node.apiStepTask, + }); + const leaf = selection.insertActions(filled.process); + selection.currentActionLeaf = leaf; + selection.agents.push(...filled.agents); + }; + (async () => { + try { + for (const [node, selection] of stepTaskToFill) { + await fillTask(node, selection); + } + } catch (e) { + console.error(e); + } + this.api.stepTaskTreeGenerating = false; + })(); + return branchLeaves; + } catch (e) { + console.error(e); + } + this.api.stepTaskTreeGenerating = false; + return []; + } + + public setCurrentAgentActionBranch( + actionBranchLeafId: string, + selectionId?: string, + ) { + const selection = this.planManager.agentSelectionMap.get( + selectionId ?? this.focusingStepTask?.agentSelection?.id ?? '', + ); + if (selection?.leaves.includes(actionBranchLeafId)) { + selection.currentActionLeaf = actionBranchLeafId; + this.logManager.setOutdate(); + } + } + + public updateAgentActionNodeContent(id: string, content: string) { + const actionNode = this.planManager.agentActionMap.get(id); + if (actionNode) { + actionNode.description = content; + this.logManager.setOutdate(); + } + } + + public async newActionBranch( + agentSelectionId: string | undefined, + start: string | undefined, + requirement: string, + batch = 1, + base?: string, + ) { + const agentSelection = agentSelectionId + ? this.planManager.agentSelectionMap.get(agentSelectionId) + : this.focusingStepTask?.agentSelection; + if (!agentSelection) { + throw new Error(`AgentSelection ${agentSelectionId} not found`); + } + const taskNode = agentSelection.belongingStepTask; + if (!taskNode) { + throw new Error(`Beloning StepTask node not found`); + } + this.api.agentActionTreeGenerating = true; + try { + const existingSteps: IApiAgentAction[] = []; + const baseSteps: IApiAgentAction[] = []; + + // 构建前后序列 + if (start) { + let node = this.planManager.agentActionMap.get(start); + while (node) { + existingSteps.push(node.apiAgentAction); + node = node.last; + } + existingSteps.reverse(); + } + if (base) { + let node = this.planManager.agentActionMap.get(base); + while (node) { + baseSteps.push(node.apiAgentAction); + node = node.last; + } + baseSteps.reverse(); + } + + const branches = await newActionBranchApi({ + goal: this.planManager.goal, + stepTask: taskNode.apiStepTask, + requirement, + base: baseSteps, + existing: existingSteps, + batch, + }); + const branchLeaves = branches.map(branch => { + return agentSelection.insertActions(branch, start, requirement, base); + }); + this.api.agentActionTreeGenerating = false; + return branchLeaves; + } catch (e) { + console.error(e); + } + this.api.agentActionTreeGenerating = false; + return []; + } + + public async touchAgentSelectionAspects(stepTaskId?: string) { + const stepTask = this.planManager.stepTaskMap.get( + stepTaskId ?? this.focusingStepTaskId ?? '', + ); + if (stepTask && Object.keys(stepTask.agentAspectScores).length === 0) { + this.api.agentAspectScoresGenerating = true; + try { + const aspects = await agentSelectModifyInitApi({ + stepTask: stepTask.apiStepTask, + goal: this.planManager.goal, + }); + + for (const [aspect, agentScores] of Object.entries(aspects)) { + stepTask.appendAspectScore(aspect, agentScores); + } + } catch (e) { + console.error(e); + } + this.api.agentAspectScoresGenerating = false; + } + } + + public async addAgentSelectionAspects( + aspects: string[] | string, + stepTaskId?: string, + ) { + const stepTask = this.planManager.stepTaskMap.get( + stepTaskId ?? this.focusingStepTaskId ?? '', + ); + if (stepTask) { + this.api.agentAspectScoresGenerating = true; + try { + const aspects_ = await agentSelectModifyAddApi({ + aspects: Array.isArray(aspects) ? aspects : [aspects], + }); + for (const [aspect, agentScores] of Object.entries(aspects_)) { + stepTask.appendAspectScore(aspect, agentScores); + } + } catch (e) { + console.error(e); + } + this.api.agentAspectScoresGenerating = false; + } + } + + public async addAgentSelection(agents: string[]) { + if (!this.focusingStepTask) { + return; + } + this.api.agentActionTreeGenerating = true; + try { + const { apiStepTask } = this.focusingStepTask; + const selectionId = (this.planManager.nextAgentSelectionId++).toString(); + const agentSelection = new AgentSelection(this.planManager, { + id: selectionId, + agents, + }); + this.planManager.selectionStepMap.set( + selectionId, + this.focusingStepTaskId ?? '', + ); + this.planManager.agentSelectionMap.set(agentSelection.id, agentSelection); + this.focusingStepTask.agentSelectionIds.push(agentSelection.id); + const filled = await fillAgentSelectionApi({ + stepTask: apiStepTask, + goal: this.planManager.goal, + agents, + }); + const leaf = agentSelection.insertActions(filled.process); + agentSelection.currentActionLeaf = leaf; + this.setCurrentAgentSelection(agentSelection.id); + } catch (e) { + console.error(e); + } + this.api.agentActionTreeGenerating = false; + } + + renderLines_?: () => void = () => undefined; + + public setRenderLinesMethod(method?: () => void) { + if (method) { + this.renderLines_ = throttle(() => requestAnimationFrame(method), 5, { + leading: false, + trailing: true, + }); + } else { + this.renderLines_ = undefined; + } + } + + public renderLines({ + delay = 0, + repeat = 1, + interval = 30, + }: { + delay?: number; + repeat?: number; + interval?: number; + }) { + setTimeout(() => { + let count = 0; + const id = setInterval(() => { + if (count >= repeat) { + clearInterval(id); + return; + } + this.renderLines_?.(); + count++; + }, interval); + }, delay); + } + + public setFocusingStepTaskId(id?: string) { + this.focusingStepTaskIds[this.currentPlanId ?? ''] = id; + } + + public addUserInput(name: string) { + this.form.inputs[name] ??= ''; + if (this.currentPlanId && !this.planManager.inputs.includes(name)) { + this.planManager.inputs.push(name); + this.logManager.userInputs[name] ??= ''; + this.logManager.setOutdate(); + } + } + + public removeUserInput(name: string) { + delete this.form.inputs[name]; + if (this.currentPlanId) { + this.planManager.inputs = this.planManager.inputs.filter(i => i !== name); + delete this.logManager.userInputs[name]; + this.logManager.setOutdate(); + } + } + + public setUserInput(name: string, content: string) { + if (this.form.inputs[name] !== undefined) { + this.form.inputs[name] = content; + if (this.currentPlanId) { + this.logManager.userInputs[name] = content; + this.logManager.setOutdate(); + } + } + } + + public setCurrentPlanBranch(leafId: string) { + if (leafId in this.planManager.branches) { + this.planManager.currentStepTaskLeaf = leafId; + this.logManager.setOutdate(); + } + } + + public setCurrentAgentSelection(selectionId: string, stepTaskId?: string) { + const stepTask = this.planManager.stepTaskMap.get( + stepTaskId ?? this.focusingStepTaskId ?? '', + ); + if (!stepTask) { + throw new Error(`StepTask node ${stepTaskId} does not exist!`); + } + if ( + !this.planManager.agentSelectionMap.has(selectionId) || + !stepTask.agentSelectionIds.includes(selectionId) + ) { + throw new Error(`AgentSelection node ${selectionId} does not exist!`); + } + stepTask.currentAgentSelection = selectionId; + this.logManager.setOutdate(); + } + + public addStepTaskInput(id: string, input: string) { + const stepTask = this.planManager.stepTaskMap.get(id); + if (stepTask) { + const t = Array.from(new Set([...stepTask.inputs, input])); + stepTask.inputs.length = 0; + stepTask.inputs.push(...t); + this.logManager.setOutdate(); + } + } + + public removeStepTaskInput(id: string, input: string) { + const stepTask = this.planManager.stepTaskMap.get(id); + if (stepTask) { + stepTask.inputs = stepTask.inputs.filter(i => i !== input); + this.logManager.setOutdate(); + } + } + + public setStepTaskContent(id: string, content: string) { + const stepTask = this.planManager.stepTaskMap.get(id); + if (stepTask) { + stepTask.content = content; + this.logManager.setOutdate(); + } + } + + public getStepTaskLeafPath(leafId: string) { + const stepTask = this.planManager.stepTaskMap.get(leafId); + if (stepTask) { + return stepTask.path; + } else { + return []; + } + } + + public getFirstLeafStepTask(nodeId: string) { + let stepTask = this.planManager.stepTaskMap.get(nodeId)!; + while (!this.planManager.branches[stepTask.id]) { + const firstChildId = stepTask.children[0]; + stepTask = this.planManager.stepTaskMap.get(firstChildId)!; + } + return stepTask; + } + + public getFirstLeafAction(nodeId: string) { + const selection = this.focusingStepTask?.agentSelection; + let actionNode = this.planManager.agentActionMap.get(nodeId); + if (actionNode && selection) { + while (!selection.branches[actionNode.id]) { + const firstChildId: string = actionNode.children[0]; + actionNode = this.planManager.agentActionMap.get(firstChildId)!; + } + return { + node: actionNode, + branchInfo: selection.branches[actionNode.id], + }; + } + return undefined; + } + + public getActionLeafPath(leafId: string) { + const actionNode = this.planManager.agentActionMap.get(leafId); + return actionNode?.path ?? []; + } + + public removePlan(id: string) { + if (id === this.currentPlanId) { + // 寻找 planTabArrange 中邻近的替代 + const index = this.planTabArrange.indexOf(id); + if (index !== -1) { + const next = this.planTabArrange[index + 1]; + const prev = this.planTabArrange[index - 1]; + this.currentPlanId = next ?? prev ?? undefined; + } else { + this.currentPlanId = this.planTabArrange[0] ?? undefined; + } + this.focusPlan(this.currentPlanId); + } + this.planTabArrange = this.planTabArrange.filter(tabId => tabId !== id); + delete this.plans[id]; + delete this.focusingStepTaskIds[id]; + } + + public dumpPlan(id: string) { + const [plan, log] = this.plans[id]; + return { + id, + plan: plan.dump(), + log: log.dump(), + }; + } + + public loadPlan(json: any, focus = false) { + const { id, plan, log } = json; + const planManager = new PlanManager(); + planManager.load(plan); + const logManager = new RehearsalLog(planManager, log); + this.plans[id] = [planManager, logManager]; + this.planTabArrange.push(id); + if (focus) { + this.focusPlan(id); + } + } + + public dump() { + const plans: any[] = []; + for (const planId in this.plans) { + plans.push(this.dumpPlan(planId)); + } + return { + plans, + planTabArrange: [...this.planTabArrange], + currentPlanId: this.currentPlanId, + briefGoal: this.briefGoal, + briefUserInputs: JSON.parse(JSON.stringify(this.briefUserInputs)), + }; + } + + public load(json: any) { + for (const plan of json.plans ?? []) { + this.loadPlan(plan); + } + this.briefGoal = json.briefGoal ?? ''; + this.briefUserInputs = JSON.parse( + JSON.stringify(json.briefUserInputs ?? {}), + ); + this.planTabArrange = json.planTabArrange ?? Object.keys(this.plans); + this.focusPlan(json.currentPlanId); + } + + public newPlanTab() { + this.focusPlan(undefined); + } + + public focusPlan(id?: string) { + if (this.currentPlanId === undefined) { + this.briefGoal = this.form.goal; + // clear all ele of briefUserInputs + for (const key in this.briefUserInputs) { + delete this.briefUserInputs[key]; + } + const newInputs = JSON.parse(JSON.stringify(this.form.inputs)); + for (const key in newInputs) { + this.briefUserInputs[key] = newInputs[key]; + } + } + if (id && this.plans[id]) { + this.currentPlanId = id; + this.api.planReady = true; + this.form.goal = this.planManager.goal; + for (const key in this.form.inputs) { + delete this.form.inputs[key]; + } + for (const key in this.logManager.userInputs) { + this.form.inputs[key] = this.logManager.userInputs[key]; + } + } else { + this.currentPlanId = undefined; + this.api.planReady = false; + this.form.goal = this.briefGoal; + for (const key in this.form.inputs) { + delete this.form.inputs[key]; + } + const newInputs = JSON.parse(JSON.stringify(this.briefUserInputs)); + for (const key in newInputs) { + this.form.inputs[key] = newInputs[key]; + } + } + } +} + +export const globalStorage = new GlobalStorage(); +(globalThis as any).globalStorage = globalStorage; + +// const sleep = (time: number) => +// new Promise(resolve => setTimeout(resolve, time)); +// let renderLock = false; +// autorun(async () => { +// if (renderLock) { +// return; +// } +// renderLock = true; +// let partialReadyCountdown = -1; +// try { +// while (true) { +// if (!globalStorage.renderLines_ || !globalStorage.focusingStepTaskId) { +// return; +// } +// const { ElementToLink } = globalStorage; +// if ( +// ElementToLink[0]?.current === undefined || +// ElementToLink[2]?.current === undefined || +// ElementToLink[1].filter(ref => ref.current !== undefined).length === 0 +// ) { +// await sleep(5); +// continue; +// } else if ( +// ElementToLink[3].filter(ref => ref?.current !== undefined).length === 0 +// ) { +// if (partialReadyCountdown < 0) { +// partialReadyCountdown = 10; +// globalStorage.renderLines({ delay: 0, repeat: 10, interval: 15 }); +// await sleep(5); +// continue; +// } else if (--partialReadyCountdown === 0) { +// break; +// } +// } +// break; +// } +// globalStorage.renderLines({ delay: 0, repeat: 40, interval: 15 }); +// } catch (e) { +// console.error(e); +// } +// renderLock = false; +// }); + +debug(globalStorage); +/* eslint-enable max-lines */ diff --git a/frontend/src/storage/plan/action.ts b/frontend/src/storage/plan/action.ts new file mode 100644 index 0000000..bcf0d25 --- /dev/null +++ b/frontend/src/storage/plan/action.ts @@ -0,0 +1,114 @@ +import { makeAutoObservable } from 'mobx'; +import { SxProps } from '@mui/material'; +import { INodeBase } from './base'; +import { PlanManager } from './manager'; +import { IApiAgentAction } from '@/apis/generate-base-plan'; + +export enum ActionType { + Propose = 'Propose', + Critique = 'Critique', + Improve = 'Improve', + Finalize = 'Finalize', +} + +const AgentActionStyles = new Map([ + [ActionType.Propose, { backgroundColor: '#B9EBF9', borderColor: '#94c2dc' }], + [ActionType.Critique, { backgroundColor: '#EFF9B9', borderColor: '#c0dc94' }], + [ActionType.Improve, { backgroundColor: '#E0DEFC', borderColor: '#bbb8e5' }], + [ActionType.Finalize, { backgroundColor: '#F9C7B9', borderColor: '#dc9e94' }], + ['', { backgroundColor: '#000000', borderColor: '#000000' }], +]); + +export const getAgentActionStyle = (action: ActionType): SxProps => { + return AgentActionStyles.get(action) ?? AgentActionStyles.get('')!; +}; + +export interface IRichSentence { + who: string; + whoStyle: SxProps; + content: string; + style: SxProps; +} + +export class AgentActionNode implements INodeBase { + public name: string = ''; + + public plan: PlanManager; + + public type: ActionType = ActionType.Propose; + + public agent: string = ''; + + public description: string = ''; + + public inputs: string[] = []; + + public path: string[] = []; // ['A', 'B'] + + public children: string[] = []; // ['D', 'E'] + + public get id() { + return this.path[this.path.length - 1]; + } + + public get parent() { + return this.path[this.path.length - 2]; + } + + public get last() { + return this.plan.agentActionMap.get(this.parent); + } + + public get renderCard(): IRichSentence { + const style = getAgentActionStyle(this.type); + return { + who: this.agent, + whoStyle: style, + // this.description 首字母小写 + content: this.description[0].toLowerCase() + this.description.slice(1), + style: { ...style, backgroundColor: 'transparent' }, + }; + } + + public get apiAgentAction(): IApiAgentAction { + return { + id: this.name, + type: this.type, + agent: this.agent, + description: this.description, + inputs: this.inputs, + }; + } + + public get belongingSelection() { + return this.plan.agentSelectionMap.get( + this.plan.actionSelectionMap.get(this.id) ?? '', + ); + } + + constructor(plan: PlanManager, json?: any) { + this.plan = plan; + if (json) { + this.name = json.name ?? ''; + this.agent = json.agent ?? ''; + this.description = json.description ?? ''; + this.inputs = [...(json.inputs ?? [])]; + this.type = json.type ?? ActionType.Propose; + this.path = [...(json.path ?? [])]; + this.children = [...(json.children ?? [])]; + } + makeAutoObservable(this); + } + + public dump() { + return { + name: this.name, + agent: this.agent, + description: this.description, + inputs: [...this.inputs], + type: this.type, + path: [...this.path], + children: [...this.children], + }; + } +} diff --git a/frontend/src/storage/plan/base.ts b/frontend/src/storage/plan/base.ts new file mode 100644 index 0000000..f99a56b --- /dev/null +++ b/frontend/src/storage/plan/base.ts @@ -0,0 +1,13 @@ +/* A + / \ + B C + / \ + D E */ +export interface INodeBase { + id: string; // B + parent?: string; // A + path: string[]; // ['A', 'B'] + children: string[]; // ['D', 'E'] +} + +export type NodeMap = Map; diff --git a/frontend/src/storage/plan/index.ts b/frontend/src/storage/plan/index.ts new file mode 100644 index 0000000..15c977b --- /dev/null +++ b/frontend/src/storage/plan/index.ts @@ -0,0 +1,5 @@ +export * from './action'; +export * from './manager'; +export * from './selection'; +export * from './stepTask'; +export * from './log'; diff --git a/frontend/src/storage/plan/log.ts b/frontend/src/storage/plan/log.ts new file mode 100644 index 0000000..87a749d --- /dev/null +++ b/frontend/src/storage/plan/log.ts @@ -0,0 +1,115 @@ +import React from 'react'; +import { makeAutoObservable } from 'mobx'; +import { PlanManager } from './manager'; +import { + IExecuteNode, + ExecuteNodeType, + IExecuteObject, +} from '@/apis/execute-plan'; + +export class RehearsalLog { + public planManager: PlanManager; + + public outdate: boolean = false; + + oldLog: IExecuteNode[] = []; + + userInputs: Record = {}; + + public get logWithoutUserInput(): IExecuteNode[] { + if (this.oldLog.length > 0) { + return this.oldLog; + } else { + const log: IExecuteNode[] = []; + // build skeleton logs + for (const step of this.planManager.currentPlan) { + log.push({ + type: ExecuteNodeType.Step, + id: step.name, + inputs: Array.from(step.inputs), + output: step.output, + history: (step.agentSelection?.currentTaskProcess ?? []).map( + action => ({ + id: action.name, + type: action.type, + agent: action.agent, + description: action.description, + inputs: action.inputs, + result: '', + }), + ), + }); + // push output of the step + log.push({ + type: ExecuteNodeType.Object, + id: step.output, + content: '', + }); + } + return log; + } + } + + public get renderingLog(): (IExecuteNode & { + ref: React.RefObject; + stepId: string; + })[] { + const outputTaskIdMap = new Map(); + const taskNameTaskIdMap = new Map(); + this.planManager.currentPlan.forEach(step => { + taskNameTaskIdMap.set(step.name, step.id); + outputTaskIdMap.set(step.output, step.id); + }); + return this.logWithoutUserInput.map(node => { + let stepId = ''; + if (node.type === ExecuteNodeType.Step) { + stepId = taskNameTaskIdMap.get(node.id) ?? ''; + } else { + stepId = outputTaskIdMap.get(node.id) ?? ''; + } + return { + ...node, + ref: React.createRef(), + stepId, + }; + }); + } + + constructor(plan: PlanManager, json?: any) { + this.planManager = plan; + if (json) { + this.oldLog = JSON.parse(JSON.stringify(json.oldLog)); + this.userInputs = JSON.parse(JSON.stringify(json.userInputs)); + } + makeAutoObservable(this); + } + + public dump() { + return { + oldLog: JSON.parse(JSON.stringify(this.oldLog)), + userInputs: JSON.parse(JSON.stringify(this.userInputs)), + }; + } + + public updateLog(newLog: IExecuteNode[]) { + const log = [...newLog]; + const userInputs: Record = {}; + while (log.length > 0 && log[0].type === ExecuteNodeType.Object) { + const userInputObject = log.shift()! as IExecuteObject; + userInputs[userInputObject.id] = userInputObject.content; + } + this.oldLog = log; + this.userInputs = userInputs; + } + + public clearLog() { + this.oldLog.length = 0; + this.outdate = false; + } + + public setOutdate() { + if (this.oldLog.length > 0) { + this.outdate = true; + } + } +} diff --git a/frontend/src/storage/plan/manager.ts b/frontend/src/storage/plan/manager.ts new file mode 100644 index 0000000..82f9dfa --- /dev/null +++ b/frontend/src/storage/plan/manager.ts @@ -0,0 +1,196 @@ +import { makeAutoObservable } from 'mobx'; +import { NodeMap } from './base'; +import { StepTaskNode } from './stepTask'; +import { AgentActionNode } from './action'; +import { AgentSelection } from './selection'; +import { IApiStepTask, IGeneratedPlan } from '@/apis/generate-base-plan'; + +export class PlanManager { + public goal: string = ''; + + public nextStepTaskId: number = 0; + + public nextAgentSelectionId: number = 0; + + public nextAgentActionId: number = 0; + + public stepTaskMap: NodeMap = new Map(); + + public agentActionMap: NodeMap = new Map(); + + public agentSelectionMap: Map = new Map(); + + public actionSelectionMap: Map = new Map(); + + public selectionStepMap: Map = new Map(); + + public stepTaskRoots: string[] = []; + + public currentStepTaskLeaf?: string; + + public previewStepTaskLeaf?: string; + + public inputs: string[] = []; + + public branches: Record< + string, + { start?: string; requirement?: string; base?: string } + > = {}; + + public get leaves() { + return Object.keys(this.branches); + } + + public get currentPlan() { + const path: StepTaskNode[] = []; + let node = this.stepTaskMap.get( + this.previewStepTaskLeaf ?? this.currentStepTaskLeaf ?? '', + ); + while (node) { + path.push(node); + node = node.last; + } + return path.reverse(); + } + + public get currentPath() { + return this.currentPlan.map(node => node.id); + } + + public get activeStepNodeIds() { + return new Set(this.currentPath); + } + + public get apiPlan() { + return { + goal: this.goal, + inputs: this.inputs, + process: this.currentPlan.map(node => node.apiStepTask), + }; + } + + constructor() { + makeAutoObservable(this); + } + + public parseApiPlan(plan: IGeneratedPlan) { + this.goal = plan.goal; + this.inputs = [...plan.inputs]; + const leaf = this.insertProcess(plan.process); + this.currentStepTaskLeaf = leaf; + } + + public insertProcess( + process: IApiStepTask[], + start?: string, + requirement?: string, + base?: string, + ): string { + if (start && !this.stepTaskMap.has(start)) { + throw new Error(`StekTask node ${start} does not exist!`); + } + let lastChidrenList = + this.stepTaskMap.get(start ?? '')?.children ?? this.stepTaskRoots; + const path = [...(this.stepTaskMap.get(start ?? '')?.path ?? [])]; + for (const task of process) { + // create agentSelection + const agentSelection = new AgentSelection(this, { + id: (this.nextAgentSelectionId++).toString(), + agents: task.agents, + }); + const leaf = agentSelection.insertActions(task.process); + this.agentSelectionMap.set(agentSelection.id, agentSelection); + agentSelection.currentActionLeaf = leaf; + // create stepTask + path.push((this.nextStepTaskId++).toString()); + const node = new StepTaskNode(this, { + name: task.name, + content: task.content, + inputs: task.inputs, + output: task.output, + brief: task.brief, + path, + agentSelectionIds: [agentSelection.id], + currentAgentSelection: agentSelection.id, + }); + lastChidrenList.push(node.id); + lastChidrenList = node.children; + this.selectionStepMap.set(agentSelection.id, node.id); + this.stepTaskMap.set(node.id, node); + } + const leaf = path[path.length - 1]; + this.branches[leaf] = { start, requirement, base }; + return leaf; + } + + public reset() { + this.goal = ''; + this.stepTaskMap.clear(); + this.agentActionMap.clear(); + this.agentSelectionMap.clear(); + this.stepTaskRoots = []; + this.inputs = []; + this.currentStepTaskLeaf = undefined; + this.previewStepTaskLeaf = undefined; + this.nextAgentActionId = 0; + this.nextAgentSelectionId = 0; + this.nextStepTaskId = 0; + } + + public dump() { + return { + goal: this.goal, + nextStepTaskId: this.nextStepTaskId, + nextAgentSelectionId: this.nextAgentSelectionId, + nextAgentActionId: this.nextAgentActionId, + stepTaskMap: Array.from(this.stepTaskMap).map(([k, v]) => [k, v.dump()]), + agentActionMap: Array.from(this.agentActionMap).map(([k, v]) => [ + k, + v.dump(), + ]), + agentSelectionMap: Array.from(this.agentSelectionMap).map(([k, v]) => [ + k, + v.dump(), + ]), + stepTaskRoots: [...this.stepTaskRoots], + inputs: [...this.inputs], + currentStepTaskLeaf: this.currentStepTaskLeaf, + previewStepTaskLeaf: this.previewStepTaskLeaf, + branch: JSON.parse(JSON.stringify(this.branches)), + }; + } + + public load(json: any) { + this.reset(); + this.goal = json.goal; + this.nextStepTaskId = json.nextStepTaskId; + this.nextAgentSelectionId = json.nextAgentSelectionId; + this.nextAgentActionId = json.nextAgentActionId; + for (const [k, v] of json.agentActionMap) { + this.agentActionMap.set(k, new AgentActionNode(this, v)); + } + for (const [k, v] of json.agentSelectionMap) { + const selection = new AgentSelection(this, v); + for (const leaf of selection.leaves) { + let node = this.agentActionMap.get(leaf); + while (node) { + this.actionSelectionMap.set(node.id, selection.id); + node = node.last; + } + } + this.agentSelectionMap.set(k, selection); + } + for (const [k, v] of json.stepTaskMap) { + const stepTask = new StepTaskNode(this, v); + for (const id of stepTask.agentSelectionIds) { + this.selectionStepMap.set(id, stepTask.id); + } + this.stepTaskMap.set(k, stepTask); + } + this.stepTaskRoots = [...json.stepTaskRoots]; + this.inputs = [...json.inputs]; + this.currentStepTaskLeaf = json.currentStepTaskLeaf; + this.previewStepTaskLeaf = json.previewStepTaskLeaf; + this.branches = JSON.parse(JSON.stringify(json.branch)); + } +} diff --git a/frontend/src/storage/plan/selection.ts b/frontend/src/storage/plan/selection.ts new file mode 100644 index 0000000..2fd9876 --- /dev/null +++ b/frontend/src/storage/plan/selection.ts @@ -0,0 +1,112 @@ +import { makeAutoObservable } from 'mobx'; +import { PlanManager } from './manager'; +import { AgentActionNode } from './action'; +import { IApiAgentAction } from '@/apis/generate-base-plan'; + +export class AgentSelection { + public id: string = ''; + + public plan: PlanManager; + + public agents: string[] = []; + + public actionRoot: string[] = []; + + public currentActionLeaf?: string; + + public previewActionLeaf?: string; + + public branches: Record< + string, + { start?: string; requirement?: string; base?: string } + > = {}; + + public get leaves() { + return Object.keys(this.branches); + } + + public get currentTaskProcess() { + const path: AgentActionNode[] = []; + let node = this.plan.agentActionMap.get( + this.previewActionLeaf ?? this.currentActionLeaf ?? '', + ); + while (node) { + path.push(node); + node = node.last; + } + return path.reverse(); + } + + public get currentTaskProcessIds() { + return this.currentTaskProcess.map(node => node.id); + } + + public get activeTaskIds() { + return new Set(this.currentTaskProcessIds); + } + + public get belongingStepTask() { + return this.plan.stepTaskMap.get( + this.plan.selectionStepMap.get(this.id) ?? '', + ); + } + + constructor(plan: PlanManager, json?: any) { + this.plan = plan; + if (json) { + this.id = json.id ?? ''; + this.agents = [...(json.agents ?? [])]; + this.branches = JSON.parse(JSON.stringify(json.branches ?? {})); + this.actionRoot = [...(json.actionRoot ?? [])]; + this.currentActionLeaf = json.currentActionLeaf; + this.previewActionLeaf = json.previewActionLeaf; + } + makeAutoObservable(this); + } + + public dump() { + return { + id: this.id, + agents: [...this.agents], + branches: JSON.parse(JSON.stringify(this.branches)), + actionRoot: [...this.actionRoot], + currentActionLeaf: this.currentActionLeaf, + previewActionLeaf: this.previewActionLeaf, + }; + } + + public insertActions( + actions: IApiAgentAction[], + start?: string, + requirement?: string, + base?: string, + ) { + if (actions.length === 0) { + return undefined; + } + if (start && !this.plan.agentActionMap.has(start)) { + throw new Error(`AgentAction node ${start} does not exist!`); + } + let lastChidrenList = + this.plan.agentActionMap.get(start ?? '')?.children ?? this.actionRoot; + const path = [...(this.plan.agentActionMap.get(start ?? '')?.path ?? [])]; + for (const action of actions) { + path.push((this.plan.nextAgentActionId++).toString()); + const node = new AgentActionNode(this.plan, { + name: action.id, + path, + type: action.type, + agent: action.agent, + description: action.description, + inputs: action.inputs, + }); + this.plan.agentActionMap.set(node.id, node); + this.plan.actionSelectionMap.set(node.id, this.id); + lastChidrenList.push(node.id); + lastChidrenList = node.children; + } + const leaf = path[path.length - 1]; + this.branches[leaf] = { start, requirement, base }; + return leaf; + } +} diff --git a/frontend/src/storage/plan/stepTask.ts b/frontend/src/storage/plan/stepTask.ts new file mode 100644 index 0000000..a832086 --- /dev/null +++ b/frontend/src/storage/plan/stepTask.ts @@ -0,0 +1,280 @@ +import React from 'react'; +import { SxProps } from '@mui/material'; +import { makeAutoObservable } from 'mobx'; +import { INodeBase } from './base'; +import { PlanManager } from './manager'; +import { + IRichText, + IApiStepTask, + IApiAgentAction, +} from '@/apis/generate-base-plan'; + +export interface IRichSpan { + text: string; + style?: SxProps; +} + +const nameJoin = (names: string[]) => { + // join names with comma, and 'and' for the last one + const tmp = [...names]; + const last = tmp.pop()!; + let t = tmp.join(', '); + if (t.length > 0) { + t = `${t} and ${last}`; + } else { + t = last; + } + return t; +}; + +export class StepTaskNode implements INodeBase { + public name: string = ''; + + public content: string = ''; + + public inputs: string[] = []; + + public output: string = ''; + + public _brief: IRichText = { + template: '', + data: {}, + }; + + public path: string[] = []; + + public children: string[] = []; + + public plan: PlanManager; + + public agentSelectionIds: string[] = []; + + public currentAgentSelection?: string; + + public previewAgentSelection?: string; + + public agentAspectScores: Record< + string, + Record + > = {}; + + public get brief(): IRichText { + if (!this.agentSelection) { + return this._brief; + } + const agents = [...this.agentSelection.agents]; + if (agents.length === 0) { + return this._brief; + } + const data: IRichText['data'] = {}; + let indexOffset = 0; + const inputPlaceHolders = this.inputs.map((text, index) => { + data[(index + indexOffset).toString()] = { + text, + style: { background: '#ACDBA0' }, + }; + return `!<${index + indexOffset}>!`; + }); + const inputSentence = nameJoin(inputPlaceHolders); + indexOffset += this.inputs.length; + const namePlaceholders = agents.map((text, index) => { + data[(index + indexOffset).toString()] = { + text, + style: { background: '#E5E5E5', boxShadow: '1px 1px 4px 1px #0003' }, + }; + return `!<${index + indexOffset}>!`; + }); + const nameSentence = nameJoin(namePlaceholders); + indexOffset += agents.length; + let actionSentence = this.content; + // delete the last '.' of actionSentence + if (actionSentence[actionSentence.length - 1] === '.') { + actionSentence = actionSentence.slice(0, -1); + } + const actionIndex = indexOffset++; + data[actionIndex.toString()] = { + text: actionSentence, + style: { background: '#DDD', border: '1.5px solid #ddd' }, + }; + let outputSentence = ''; + if (this.output) { + data[indexOffset.toString()] = { + text: this.output, + style: { background: '#FFCA8C' }, + }; + outputSentence = `to obtain !<${indexOffset}>!`; + } + // Join them togeter + let content = inputSentence; + if (content) { + content = `Based on ${content}, ${nameSentence} perform the task of !<${actionIndex}>!`; + } else { + content = `${nameSentence} perform the task of !<${actionIndex}>!`; + } + if (outputSentence) { + content = `${content}, ${outputSentence}.`; + } else { + content = `${content}.`; + } + content = content.trim(); + return { + template: content, + data, + }; + } + + public get id() { + return this.path[this.path.length - 1]; + } + + public get last() { + return this.plan.stepTaskMap.get(this.path[this.path.length - 2]); + } + + public get next() { + return this.children + .map(id => this.plan.stepTaskMap.get(id)!) + .filter(node => node); + } + + public get agentSelection() { + const id = this.previewAgentSelection ?? this.currentAgentSelection ?? ''; + return this.plan.agentSelectionMap.get(id); + } + + public get allSelections() { + return this.agentSelectionIds + .map(id => this.plan.agentSelectionMap.get(id)!) + .filter(node => node); + } + + public get apiStepTask(): IApiStepTask { + const actionsProcess: IApiAgentAction[] = []; + const actions = this.agentSelection?.currentTaskProcess ?? []; + for (const action of actions) { + actionsProcess.push({ + id: action.name, + type: action.type, + agent: action.agent, + description: action.description, + inputs: [...action.inputs], + }); + } + return { + name: this.name, + content: this.content, + inputs: [...this.inputs], + output: this.output, + agents: this.agentSelection?.agents ?? [], + brief: JSON.parse(JSON.stringify(this.brief)) as IRichText, + process: actionsProcess, + }; + } + + public get descriptionCard() { + const briefSpan: IRichSpan[] = []; + for (const substring of this.brief.template.split(/(!<[^>]+>!)/)) { + if (substring[0] === '!') { + const key = substring.slice(2, -2); + const { text, style } = this.brief.data[key]; + briefSpan.push({ text, style }); + } else { + briefSpan.push({ text: substring }); + } + } + + const actions = this.agentSelection?.currentTaskProcess ?? []; + const detailParagraph = actions.map(action => [ + action.renderCard, + action.id, + ]); + + return { + id: this.id, + name: this.name, + content: this.content, + ref: React.createRef(), + brief: briefSpan, + detail: detailParagraph, + }; + } + + public get outlineCard() { + return { + id: this.id, + name: this.name, + inputs: this.inputs, + output: this.output, + agents: this.agentSelection?.agents ?? [], + content: this.content, + ref: React.createRef(), + }; + } + + public get heatmap() { + return Object.fromEntries( + Object.entries(this.agentAspectScores).map(([aspect, scores]) => [ + aspect, + Object.fromEntries( + Object.entries(scores).map(([agent, score]) => [agent, score]), + ), + ]), + ); + } + + constructor(plan: PlanManager, json?: any) { + this.plan = plan; + if (json) { + this.name = json.name ?? ''; + this.content = json.content ?? ''; + this.inputs = [...(json.inputs ?? [])]; + this.output = json.output; + this._brief = JSON.parse( + JSON.stringify(json.brief ?? '{ template: "", data: {} }'), + ) as IRichText; + this.path = [...(json.path ?? [])]; + this.children = [...(json.children ?? [])]; + this.agentAspectScores = JSON.parse( + JSON.stringify(json.agentAspectScores ?? {}), + ); + this.agentSelectionIds = [...(json.agentSelectionIds ?? [])]; + this.currentAgentSelection = json.currentAgentSelection; + this.previewAgentSelection = json.previewAgentSelection; + } + makeAutoObservable(this); + } + + public dump() { + return { + name: this.name, + content: this.content, + inputs: [...this.inputs], + output: this.output, + brief: JSON.parse(JSON.stringify(this.brief)), + path: [...this.path], + children: [...this.children], + agentSelectionIds: [...this.agentSelectionIds], + agentAspectScores: JSON.parse(JSON.stringify(this.agentAspectScores)), + currentAgentSelection: this.currentAgentSelection, + previewAgentSelection: this.previewAgentSelection, + }; + } + + public appendAspectScore( + aspect: string, + agentScores: Record, + ) { + if (this.agentAspectScores[aspect]) { + for (const [agent, score] of Object.entries(agentScores)) { + if (this.agentAspectScores[aspect][agent]) { + this.agentAspectScores[aspect][agent].score = score.score; + this.agentAspectScores[aspect][agent].reason = score.reason; + } else { + this.agentAspectScores[aspect][agent] = score; + } + } + } else { + this.agentAspectScores[aspect] = agentScores; + } + } +} diff --git a/frontend/src/utils/resize-hook.ts b/frontend/src/utils/resize-hook.ts new file mode 100644 index 0000000..7547c82 --- /dev/null +++ b/frontend/src/utils/resize-hook.ts @@ -0,0 +1,16 @@ +import React from 'react'; + +export const useResize = ( + onResize: () => void, +) => { + const ref = React.useRef(null); + React.useEffect(() => { + if (ref.current) { + const observer = new ResizeObserver(onResize); + observer.observe(ref.current); + return () => observer.disconnect(); + } + return () => undefined; + }, [ref.current]); + return ref; +}; diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 0000000..ce7f951 --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "@modern-js/tsconfig/base", + "compilerOptions": { + "declaration": false, + "jsx": "preserve", + "baseUrl": "./", + "paths": { + "@/*": ["./src/*"], + "@shared/*": ["./shared/*"] + } + }, + "include": ["src", "shared", "config", "modern.config.ts"], + "exclude": ["**/node_modules"] +}

C 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§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 G_x*oZGDWHY literal 0 HcmV?d00001 diff --git a/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Italic.ttf b/frontend/config/public/assets/fonts-katex/KaTeX_SansSerif-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b3a2f38f22466e837cc0a1e8bfe166ab86787496 GIT binary patch literal 31072 zcmd7533yz`btYO>x9{zJUxCKb3wl9!W9x1-Kmr7s009sLNP^%7a0dx+k+_MZL@AMM zd5z3ivb=k|O0wmV@g?xKk#WYDlReB7c6xk#+s4ITZ22?B9$1Ikrp;Ts@?+1=cQD59 z$M*w=PAr_BxbK&5WK4M;b-zD!-?@l*-1#hH?w{lS>cgjxocOlyzx@x!)UPmRefyDx zv!_w-LVts}nvNWQ;PCNRJb|LOjj=rs9$i{kRNp(;ii#KTDIGcWXJb!yC z8NYJ+)Y)^N^0$0|vGYgK<{PKaES-MS>tFaP#(MzmFEE-rJ`Ml!s+aF~4*r(4DnCUH z`^G09e1H8~{qi-BqfAEa>#WjuXQhtj2>kLKNQ|+d_JS1x#V)rvueitmp z^6Wgyce8)gYxvvw<8)VC5PyoA*XvjQJ=VkP?~x53X6%P!)LDc$>Z9O&k#OT-iOZ{@YyIo)E>{Gk2$Q^ zN5#9?{rEKDvrD|3Jt+Q~&57-7hggNryVyhGOKb<)??l^9jC)SBu${`?Y!B+^#P`^J zct*dz7S|jri4S4S74|AT`=nA~PvYvp=k4MU>*G<@&ZF19k8ykspFICQTO(99#s8E| z;W~-y1kcOy+UPs`CELKQ*Ph`2H=Cxi(#R%dyWg-eTx0mG=R45mAo*85|u`YXn+jo=DAt9}!oFXQt=)J^01OI(|A{XRZFlJi~5 zGJw~4%z@yPA(#M8eW?2=t`Fk+VO(=GCtznD@cNwm{Dyl__Zq?-p2PbW@d07hK25*? z`uPoNsMN#^3^W9sh@j+Q18fc3&GxfDU@v1&@E*~p7!;FYQ{JMyLwT3-UgZhp{mKWG z4@G>DhDh@-uU)%_XCruKnC)c?%g-=HQ!L7xS3L8y@=U}V2}PQIc@+=+!?hn=`~J1> zUHk9X{{Gr$uVt&rtNX6*y}IXxzj@)CFMQ*LufOoM7oLCNFJJiT_ZGgl?|XY(I?dok z|9d}N0|aW1NXof^dT;|b6@#i7O=gSLW_LJUZjaaJ4+KLEjp3%|7S_rl(OA4KkxZrA zGud26XIFPmzEJEf_4Th>Jut}D3=OmL+L6(9W8)L+CpSz@Z``zbX3Ol>ZQFP3oSVlB zcKz=S_~zDUS61wnU(Vfo{{#0Cw|KFiJu7ckST0gw+vmpSBax|3F~^pvinevvT%{PU zq~{MDj$GJ2R}qPYPn*ET4jqag3`e6CHeX?*@pYd7ghmgHbX0h*5;<_Vqat#V#YpA3 znTjE~>l0~i867(`HoJQ+8jprA%tb0QGjq{Oc|IJe^i!#Sem-(hZ?v#jNu#RvEmG;G z``y&?xtX~L2615_QnAd;9Y9Tl?pdf*qEhKV_`v-9e7M51^Yifvo0(ghpYNzBxyV?g zVn{4tK(a43! z1@wKfTTNhETjmbTgcoM#=i>9YTi!Z{TVa}1?adt(HCHi?WYkVXQ5XVOr zD&pYb3O|JYD{7{rV$4Nokk-*dpE9t6Xo6vu56n}O1MB1M8X(keUud?5nouRzruQl$181k3J)(&ZRJBY z!kPHUC#)7_Y%Us(N9Qxqj*2~ZQHZh1;=;O)iX(>!L?RX2=mwe>3h|Noik-gA;+q}c zIx0?du@z%%LEjOKk*-mUk*+a}k*;x!k*;kRBV7|1BVCgiBVAJ%BVE%N zBVBX3$e<*FjvPSaIuIEpFwuH0;9AKMzIEm*9ob3;D5(obJOOOGEh)tp`s2jLUbF>J zsiV@pygWQm>B?MGxqoa9Y={=2XC-8Ay`9fRdgXWvXvfEHrD!mU+YXQFSpcdqe%1}e z`!D9XA2TXq{uuCWA2|TTUg+Kp^-hn^erB*`*7e@knIw0{U8Y{dS~N@1tTspJ)}S z93XlxZ<)I!B1$BDNhFoV`4QrQCU8@{4{wZ*gZi+VHn3atI6k)X!~ zJe-h&z+Xrj;&RvD1&mltFo@voYO)4{_#i+tAge1T5O^dq9-p9>(P|A!kkJHc5M|ru zIwOOSjWps~B|5tfaxH;xleo1kef5R96}b+?Yb%2>c2w5XMlf1mngb-BZ=Pa(DTi|L zNGCyU9E^EzzVl)y_kjS1m#eXw*Q?9R)v|T{(Hq*V%~krd^*c9oI+Clb%3c5t5wctW zS>EzuEK6sl6Yn3D;35R9Lzj>%4yxz`k?3Pw2c`iYzKp5$`MxwNPTUSL{yo@7a3lUQ z81D~9SFCq*zBa}&0!AIE<23&$L7s+Ko5%8$CopBdPMnbTphItGr3hMFe~0=>@LcZm zR(jE9L$1 z;npm*p~6;bLxpYBh6>xM%~}+8P#Y@jq&8HTqc&8Sr#7P~?4mYQ*iCJyu!q`EVK22A zM`0hep~8M@Lxls>h6)SRW(0+U)P@R&s0|essSOpDa+TG~U_MM=DnqC~B1^+49hLZm z>N36@%T)%JTi-=rWb3Aks2W`n3JPb1liX{n;L&D>uXIdGjo8UM;G6czp$IJ2&PpT5Ynkxzs; z%TVEx)x=GD$*;+hapW^(%QG`-O(UOSWxcGhbr;+CBU_+dJ~DSvSzLE9N#8zWdYExT z`H@3VvCsrc^!z2eiQ6)t;@4hNF+2)svF@U}xQ-;#EkAo<&uwHI#U=P5uJFHrby^gD zl%K!$kNE!lwcqOB<#Pe1|L$QQ;g5)t_<`~_2F*}1+-3N=T2}8<->E*Q{z`kqXfVFT zG-vvh`Jkm}xzD=6`a9dW?HSt-?2C@HazF1#cg%Hss?*fj z)Y;uR1S2312z&*QQJ9gLE^7wPM0d8}F1S+#cRc^L#e81)ul_90p>na4Si3{;XIPn! zt(&UEX6DKvte{|AkUPvd#e`7inW8w9>F^zHxs~bpE3sl*)S!j3-o8TKuQ_=<)>~3a zeZ{=r=#PJ+yQilyx;m8#toQMQ{)7C}SNWOO<5T@Fd$|z%1YRZBYxv*tZ(}TemSwHw zCKU#udA5wdQOh;P)BhM$M?jW2t2C5SNo*{$3j9aa0%k z3VrgHY*g$k6^1!hrBnzQHR0s)Td9!8HzyC~gVZNM(#cZ};Tzz!XO#w*>vvOAifXYN z6u!PKzIX5Pw~6&TcG{iKB}{%*J$;X2vuF=II6Wn71|Ju%=X~$pi78>Un{8YfTfbwQ zW>F2Etp`%c|G<;Uy?fr)iXxiJ?Px4w>ed}Af*-LY}QM7GVO2xSAqpRU1j6VbB8Ez9G?@Omza| zN&w+%P9P=B1Jr!MKr67%$&;yMJmutp8W5d=Dt(}XAv_kx-P9283kHJTK3XIn+Vz%# z#bnBuNBt20p$G>RL%zIsGHe36D8i6v1MLahK$n$URYyD>vZ|qAsA)tvj<2^EFngY8 z<7Ty(iib3xX3dX3C@kF}YuKxbeNBNbZm}uR{|1E!|epq8WT$4f(W52=O<~UB>UK zM&VxvkMPsizM^yiwq6!ztJoHHfDM%g(ts`B02m5|0haLUsR}=Y)<%0DXa|8k4wRBrGrW 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